https://github.com/mostlygeek/ts-plug
one line to plug any server into your tailnet!
https://github.com/mostlygeek/ts-plug
Last synced: 3 months ago
JSON representation
one line to plug any server into your tailnet!
- Host: GitHub
- URL: https://github.com/mostlygeek/ts-plug
- Owner: mostlygeek
- License: bsd-3-clause
- Created: 2025-10-24T01:03:22.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2026-01-15T19:31:44.000Z (6 months ago)
- Last Synced: 2026-01-25T11:37:16.842Z (5 months ago)
- Language: Go
- Homepage:
- Size: 98.6 KB
- Stars: 3
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
> [!WARNING]
> Lots of Work in Progress stuff here!
# What's in this repo?
One-liner tools to expose things to/from your tailnet!
| Binary | Purpose | Use Case |
|--------|---------|----------|
| **ts-plug** | Expose localhost to your tailnet | Share your dev server to your tailnet, deploy without sidecars |
| **ts-unplug** | Bring tailnet services to localhost | Access tailnet-based databases/APIs as if they were local |
## Quick Start
**Build:**
```sh
make # Build both binaries
make install # Install to $GOPATH/bin
```
**ts-plug** - Share a local service:
```sh
./build/ts-plug -hostname myapp -- python -m http.server 8080
# Access at https://myapp.tailnet-name.ts.net
```
**ts-unplug** - Access a remote service:
```sh
./build/ts-unplug -dir ./state -port 8080 api.tailnet-name.ts.net
# Access at http://localhost:8080
```
## Key Features
**ts-plug** automatically:
- Starts your upstream server
- Joins your tailnet with TLS and DNS
- Reverse proxies to localhost:8080
- Optional public access with `-public`
- Supports HTTP, HTTPS, and DNS protocols
**ts-unplug** provides:
- Reverse proxy from tailnet to localhost
- Access to services requiring localhost URLs
- Simple port mapping
## Examples
Run servers in any language:
```sh
make examples
# Try different languages with ts-plug
./build/ts-plug -hn hello -- ./build/hello # Go
./build/ts-plug -hn hello -- cmd/examples/hello/hello.js # Node
./build/ts-plug -hn hello -- cmd/examples/hello/hello.py # Python
```
See [cmd/examples/](./cmd/examples/) for more.
## Docker Integration
Use ts-plug as an entrypoint to eliminate sidecar containers:
```dockerfile
COPY ts-plug /usr/local/bin/
ENTRYPOINT ["ts-plug", "-hostname", "myapp", "--"]
CMD ["npm", "start"]
```
See [docker/](./docker/) for Pi-hole, Open WebUI, and Audiobookshelf examples.
## Documentation
- **[Complete Documentation](./docs/)** - Guides, use cases, and detailed examples
- **[ts-plug Guide](./docs/ts-plug.md)** - Full ts-plug documentation
- **[ts-unplug Guide](./docs/ts-unplug.md)** - Full ts-unplug documentation
- **[Use Cases](./docs/use-cases.md)** - Real-world scenarios
- **[Docker Guide](./docs/docker.md)** - Container integration
**Quick help:**
```sh
./build/ts-plug -h
./build/ts-unplug -h
```
## License
BSD-3-Clause - See [LICENSE](./LICENSE)