Installation
Labyrinth ships as a single static binary — pick whichever install method fits
your environment. All of them end with the same result: a labyrinth
executable and a dashboard at http://127.0.0.1:9153.
One-line install (Linux/macOS, as root)
curl -sSL https://labyrinthdns.com/install.sh | bash
labyrinthdns.com/install.sh is a thin launcher: it fetches the current
installer from the labyrinthdns/labyrinth repository and executes it,
forwarding every flag. The installer downloads the latest release, installs
the binary, creates a default config, sets up a systemd service and starts
Labyrinth. Open the dashboard from the installed host to complete the
setup wizard:
http://127.0.0.1:9153
Installer flags
# Install without the systemd service
curl -sSL https://labyrinthdns.com/install.sh | \
bash -s -- --no-service
# Install a specific version
curl -sSL https://labyrinthdns.com/install.sh | \
bash -s -- --version v0.8.36
# Uninstall
curl -sSL https://labyrinthdns.com/uninstall.sh | bash
Docker (GHCR)
docker pull ghcr.io/labyrinthdns/labyrinth:latest
docker run -p 53:53/udp -p 53:53/tcp \
-v "$PWD/labyrinth.yaml:/etc/labyrinth/labyrinth.yaml:ro" \
ghcr.io/labyrinthdns/labyrinth:latest \
-config /etc/labyrinth/labyrinth.yaml
A docker compose up -d stack works the same way. The admin port 9153 is
intentionally not published in these examples: configure non-empty
web.auth credentials — and TLS, or an authenticated reverse proxy — before
you expose it.
Build from source
Prerequisites: Go 1.26.5 or later, Node.js 22+ with npm.
git clone https://github.com/labyrinthdns/labyrinth.git
cd labyrinth
# Build the embedded dashboard first
cd web/ui && npm ci && npm run build && cd ../..
# Static binary, no cgo
CGO_ENABLED=0 go build -ldflags="-s -w" -o labyrinth .
Manual binary download
Pre-built binaries for Linux, macOS and Windows (amd64 / arm64) plus checksums are attached to every release on the releases page.
Verify the installation
labyrinth -version
dig @127.0.0.1 example.com A
dig should return an answer with the AD (authenticated data) bit set — the
response was validated against the root trust chain. Then open
http://127.0.0.1:9153 and finish the setup wizard.
Next: Quick start. Source: the project README.