services: code-server: image: codercom/code-server:4.132.0-39 container_name: code-server restart: unless-stopped user: "${CODE_SERVER_UID:-1000}:${CODE_SERVER_GID:-1000}" environment: DOCKER_USER: ${CODE_SERVER_USER:-coder} command: - --bind-addr - 0.0.0.0:8080 - --auth - none - /home/coder/homelab volumes: - ./config:/home/coder/.config:rw - ./local:/home/coder/.local:rw - ../:/home/coder/homelab:rw networks: - homelab_net labels: # Traefik - "traefik.enable=true" - "traefik.http.routers.code-server.rule=Host(`code.xiteng.site`)" - "traefik.http.routers.code-server.entrypoints=websecure" - "traefik.http.routers.code-server.tls=true" - "traefik.http.routers.code-server.tls.certresolver=cfresolver" - "traefik.http.routers.code-server.service=code-server" - "traefik.http.routers.code-server.middlewares=code-server-scheme,code-server-auth" - "traefik.http.services.code-server.loadbalancer.server.port=8080" - "traefik.http.routers.code-server-http.rule=Host(`code.xiteng.site`)" - "traefik.http.routers.code-server-http.entrypoints=web" - "traefik.http.routers.code-server-http.service=code-server" - "traefik.http.routers.code-server-http.middlewares=code-server-scheme,code-server-auth" - "xiteng.site.cache.code-server.enabled=true" - "xiteng.site.cache.code-server.routers=code-server,code-server-http" - "xiteng.site.cache.code-server.paths=/assets/,/static/" - "xiteng.site.cache.code-server.edge-ttl=604800" - "xiteng.site.cache.code-server.stale-while-revalidate=86400" # Authentik ForwardAuth - "traefik.http.middlewares.code-server-scheme.headers.customrequestheaders.X-Forwarded-Proto=https" - "traefik.http.middlewares.code-server-auth.forwardauth.address=http://authentik-outpost:9000/outpost.goauthentik.io/auth/traefik" - "traefik.http.middlewares.code-server-auth.forwardauth.trustForwardHeader=true" - "traefik.http.middlewares.code-server-auth.forwardauth.authResponseHeaders=X-authentik-username,X-authentik-groups,X-authentik-email,X-authentik-name" - "xiteng.site.component.code-server.enabled=true" - "xiteng.site.component.code-server.name=Code Server" - "xiteng.site.component.code-server.description=浏览器中的 VS Code 工作台,用于维护 Homelab 配置与脚本。" - "xiteng.site.component.code-server.section=services" - "xiteng.site.component.code-server.category=开发与协作" - "xiteng.site.component.code-server.url=https://code.xiteng.site" - "xiteng.site.component.code-server.access=sso" - "xiteng.site.component.code-server.access-label=需要 Authentik" - "xiteng.site.component.code-server.icon=CS" - "xiteng.site.component.code-server.icon-url=https://cdn.simpleicons.org/coder" - "xiteng.site.component.code-server.accent=blue" - "xiteng.site.component.code-server.order=130" - "xiteng.site.component.code-server.monitor.enabled=true" - "xiteng.site.component.code-server.monitor.url=http://code-server:8080/healthz" networks: homelab_net: external: true