Installation¶
You have three ways to install tunlx. Pick the one that matches how you already deploy software.
One-line installer Fastest path on a fresh Linux host. Installs Docker, deploys tunlx, writes a starter config, optionally locks down to Tailscale.
Docker Compose For operators who want to own the stack. Start from the repo's compose file and adjust.
Native binary Build from source with Go 1.26+. Drop the binary anywhere and point it at a config file.
Prerequisites¶
- Linux host (Debian / Ubuntu recommended for the installer; any modern distro works for Docker / native)
- Root or sudo access
- Outbound internet access for image / package downloads
Choose your path¶
The installer brings up everything you need on a clean host.
What it does:
- Installs missing dependencies (
docker,docker compose,htpasswd, iptables persistence helpers). - Pulls
ghcr.io/eyupio/tunlx:latest. - Prompts for admin credentials and dashboard bind settings.
- Optionally enables Tailscale-only access.
- Optionally configures WireGuard helper scripts.
After it finishes, open http://<host-ip>:6060 and sign in with the
credentials it printed.
Silent install for CI / automation¶
TUNLX_ADMIN_PASSWORD='change-me-now' \
TUNLX_TAILSCALE_ONLY=1 \
TUNLX_TAILSCALE_AUTHKEY='tskey-auth-XXXXXXXX' \
TUNLX_TAILSCALE_HOSTNAME='tunlx' \
bash install.sh --silent
Run with -n (dry-run) to see what it would do without changing
anything. See CLI & Environment
for every flag.
Use this when you manage your own stack and want to keep tunlx as one service among others.
Minimal example:
services:
tunlx:
container_name: tunlx
image: ghcr.io/eyupio/tunlx:latest
restart: unless-stopped
environment:
- commandLine=-configFile=/app/data/config.json
volumes:
- ./data:/app/data
network_mode: host
Start it:
Notes:
network_mode: hostkeeps proxy listeners reachable without per-port mapping.- Keep
config.jsonunder./data/config.jsonfor the default path. - Add
NET_ADMIN,NET_RAW, and/dev/net/tunonly if you need in-container WireGuard routing.
A gluetun-sidecar compose variant lives under deployments/docker/ in
the repo.
Post-install validation¶
- Sign in. Open the dashboard and confirm your credentials work.
- Check metrics.
curl http://localhost:6060/metricsshould return JSON. - Create your first proxy. Follow the Quick Start.
- If using WireGuard, verify
wg showreports an interface before relying onroute: vpn.
Restrict to Tailscale (any time)¶
You can switch any installation to Tailnet-only access. Either follow Tailscale Access for the embedded-node path, or use the sidecar pattern documented there for older deployments.