# Headscale Docker Compose Template services: headscale: image: ${HEADSCALE_IMAGE:-headscale/headscale:latest} restart: ${HEADSCALE_RESTART:-unless-stopped} volumes: - ${CONFIG_PATH:-./config}/headscale/config:/etc/headscale - ${DATA_PATH:-./data}/headscale:/var/lib/headscale - ${LOG_PATH:-./logs}/headscale:/var/log/headscale - /etc/localtime:/etc/localtime:ro environment: - TZ=${TZ:-UTC} - HEADSCALE_LOG_LEVEL=${HEADSCALE_LOG_LEVEL:-info} expose: - "8080" networks: - internal command: - headscale - serve user: "1000:1000" headscale-ui: image: ${HEADSCALE_UI_IMAGE:-goodieshq/headscale-admin:latest} restart: ${HEADSCALE_UI_RESTART:-unless-stopped} environment: - TZ=${TZ:-UTC} - HEADSCALE_URL=http://headscale:8080 expose: - "80" depends_on: - headscale networks: - internal networks: proxy: external: true internal: driver: bridge