Files

63 lines
3.2 KiB
YAML

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