diff --git a/headscale-with-admin-UI/compose.yml b/headscale-with-admin-UI/compose.yml new file mode 100644 index 0000000..ceaabec --- /dev/null +++ b/headscale-with-admin-UI/compose.yml @@ -0,0 +1,52 @@ +services: + headscale: + image: headscale/headscale:latest + container_name: headscale + restart: unless-stopped + environment: + - TZ=Asia/Riyadh # CHANGE ME + volumes: + - ./conf:/etc/headscale + - headscale-data:/var/lib/headscale + entrypoint: headscale serve + networks: + - proxy + labels: + traefik.enable: "true" + traefik.docker.network: proxy + # Configure service and router + traefik.http.services.headscale.loadbalancer.server.port: 8080 + traefik.http.services.headscale.loadbalancer.server.scheme: http + traefik.http.routers.headscale.rule: Host(`tailscale.YOURDOMAIN.com`) # CHANGE ME + traefik.http.routers.headscale.entrypoints: https + traefik.http.routers.headscale.tls.certresolver: cloudflare + traefik.http.routers.headscale.service: headscale + # Configure CORS middleware if needed + traefik.http.middlewares.headscale-cors.headers.accesscontrolallowmethods: GET,POST,PUT,PATCH,DELETE,OPTIONS + traefik.http.middlewares.headscale-cors.headers.accesscontrolallowheaders: "*" + traefik.http.middlewares.headscale-cors.headers.accesscontrolalloworiginlist: https://tailscale.YOURDOMAIN.com # CHANGE ME AND Add other origins if needed + traefik.http.middlewares.headscale-cors.headers.accesscontrolmaxage: 100 + traefik.http.middlewares.headscale-cors.headers.addvaryheader: true + traefik.http.routers.headscale.middlewares: headscale-cors + # UDP ports for DERP, etc + traefik.udp.services.headscale-udp-41641.loadbalancer.server.port: 41641 + traefik.udp.services.headscale-udp-3478.loadbalancer.server.port: 3478 + headscale-admin: + image: goodieshq/headscale-admin:latest + container_name: headscale-admin + restart: unless-stopped + networks: + - proxy + labels: + traefik.enable: "true" + traefik.docker.network: proxy + traefik.http.services.headscale-admin.loadbalancer.server.port: 80 + traefik.http.services.headscale-admin.loadbalancer.server.scheme: http + traefik.http.routers.headscale-admin.rule: Host(`tailscale.YOURDOMAIN.com`) && PathPrefix(`/admin`) # CHANGE ME + traefik.http.routers.headscale-admin.entrypoints: https + traefik.http.routers.headscale-admin.tls.certresolver: cloudflare +networks: + proxy: + external: true +volumes: + headscale-data: null \ No newline at end of file