version: '3.8' services: headscale: image: git.nixc.us/colin/headscale:production volumes: - /mnt/tank/persist/nixc.us/headscale/production/config:/etc/headscale/:rw - /mnt/tank/persist/nixc.us/headscale/production/data:/var/lib/headscale/:rw command: ["headscale", "serve"] networks: - default - traefik deploy: placement: constraints: - node.hostname == macmini3 labels: us.nixc.autodeploy: "true" traefik.enable: "true" traefik.http.routers.production-headscale_headscale.rule: "Host(`headscale.nixc.us`)" traefik.http.routers.production-headscale_headscale.entrypoints: "websecure" traefik.http.routers.production-headscale_headscale.tls: "true" traefik.http.routers.production-headscale_headscale.tls.certresolver: "letsencryptresolver" traefik.http.routers.production-headscale_headscale.service: "production-headscale_headscale" traefik.http.services.production-headscale_headscale.loadbalancer.server.port: "8080" traefik.docker.network: "traefik" replicas: 1 restart_policy: condition: on-failure headscale-webui: image: ghcr.io/ifargle/headscale-webui:latest environment: - TZ=America/Toronto - COLOR=red # Use the base colors (ie, no darken-3, etc) - - HS_SERVER=http://headscale_headscale:8080 # Reachable endpoint for your Headscale server - DOMAIN_NAME=https://headadmin.nixc.us # The base domain name for this container. - KEY="lzaAI5nenkxAeR1OZdKSYCqHsBnRtFCg2+anEeEkIhw=" # Generate with "openssl rand -base64 32" - used to encrypt your key on disk. - AUTH_TYPE="" # AUTH_TYPE is either Basic or OIDC. Empty for no authentication - LOG_LEVEL=info # Log level. "DEBUG", "ERROR", "WARNING", or "INFO". Default "INFO" dns: - 1.1.1.1 volumes: - /mnt/tank/persist/nixc.us/headscale/production/data:/data # Headscale-WebUI's storage. Make sure ./volume is readable by UID 1000 (chown 1000:1000 ./volume) - /mnt/tank/persist/nixc.us/headscale/production/config:/etc/headscale/:ro # Headscale's config storage location. Used to read your Headscale config. deploy: replicas: 1 placement: constraints: - node.hostname == macmini3 labels: us.nixc.autodeploy: "true" traefik.enable: "true" traefik.http.routers.production-headscale_webui.tls: "true" traefik.http.services.production-headscale_webui.loadbalancer.server.port: "5000" traefik.http.routers.production-headscale_webui.rule: "Host(`headadmin.nixc.us`)" traefik.http.routers.production-headscale_webui.entrypoints: "websecure" traefik.http.routers.production-headscale_webui.tls.certresolver: "letsencryptresolver" traefik.http.routers.production-headscale_webui.service: "production-headscale_webui" traefik.http.routers.production-headscale_webui.middlewares: "authelia_authelia@docker" traefik.docker.network: "traefik" networks: - traefik - default networks: traefik: external: true default: driver: overlay