Skip to content

Instantly share code, notes, and snippets.

@RichardBray
Last active February 12, 2026 21:39
Show Gist options
  • Select an option

  • Save RichardBray/5e69155d7593d3db232ced4a2ac41baf to your computer and use it in GitHub Desktop.

Select an option

Save RichardBray/5e69155d7593d3db232ced4a2ac41baf to your computer and use it in GitHub Desktop.
Docker file for headscale, headscale-ui and caddy
services:
headscale:
image: docker.io/headscale/headscale:stable
restart: unless-stopped
container_name: headscale
read_only: true
tmpfs:
- /var/run/headscale
ports:
- "27896:8080"
- "3478:3478/udp"
volumes:
# Please set <HEADSCALE_PATH> to the absolute path
# of the previously created headscale directory.
- /home/twoface/headscale/config:/etc/headscale:ro
- /home/twoface/headscale/lib:/var/lib/headscale
command: serve
healthcheck:
test: ["CMD", "headscale", "health"]
headscale-ui:
image: ghcr.io/gurucomputing/headscale-ui:latest
restart: unless-stopped
container_name: headscale-ui
ports:
- "8443:8443"
- "8080:8080"
caddy:
image: caddy:latest
restart: unless-stopped
container_name: caddy
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
depends_on:
- headscale
- headscale-ui
volumes:
caddy_data:
caddy_config:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment