services: db: image: postgres:15 restart: always env_file: ../.env volumes: - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d - ./db_data:/var/lib/postgresql/data networks: - homelab_net gitea: image: gitea/gitea:latest container_name: gitea restart: unless-stopped env_file: ../.env environment: USER_UID: 964 USER_GID: 964 GITEA__database__DB_TYPE: postgres GITEA__database__HOST: db:5432 GITEA__database__NAME: giteadb GITEA__database__USER: gitea GITEA__server__SSH_PORT: 22 GITEA__server__SSH_LISTEN_PORT: 22 GITEA__server__SSH_DOMAIN: git.xiteng.site volumes: - ./data:/data # 保留 SSH 端口以便通过 SSH 推送代码(可选),移除 HTTP 宿主端口,由 Traefik 暴露 ports: - "3004:3000" labels: # --- 1. Traefik 路由设置 --- - "traefik.enable=true" - "traefik.http.routers.gitea.rule=Host(`gitea.xiteng.site`)" - "traefik.http.services.gitea.loadbalancer.server.port=3000" - "traefik.http.routers.gitea.entrypoints=websecure" # --- HTTP 入口(来自 cloudflared tunnel)--- - "traefik.http.routers.gitea-http.rule=Host(`gitea.xiteng.site`)" - "traefik.http.routers.gitea-http.service=gitea" - "traefik.http.routers.gitea-http.entrypoints=web" # --- 开启 TLS 并指定解析器 --- - "traefik.http.routers.gitea.tls=true" - "traefik.http.routers.gitea.tls.certresolver=cfresolver" # TCP Config (SSH) - "traefik.tcp.routers.gitea-ssh.rule=HostSNI(`*`)" # SNI must be * for SSH - "traefik.tcp.routers.gitea-ssh.entrypoints=ssh" - "traefik.tcp.services.gitea-ssh.loadbalancer.server.port=22" # --- 2. Homepage 自动发现设置 --- - "homepage.group=我的服务" # 分组名称 - "homepage.name=Gitea" # 显示名称 - "homepage.icon=gitea" # 图标 (支持 si, mdi 等前缀) - "homepage.href=https://gitea.xiteng.site" # 点击跳转的链接 - "homepage.description=代码托管平台" # 副标题描述 # --- 3. AutoKuma 自动发现设置 --- # 格式: kuma.<自定义ID>.<监控类型>.<属性> - "kuma.gitea.http.name=Gitea" # 监控项名称 - "kuma.gitea.http.url=http://gitea:3000" # 内网直连 # (可选) 每 60 秒检查一次,重试 3 次 - "kuma.gitea.http.interval=60" - "kuma.gitea.http.max_retries=3" networks: - homelab_net networks: homelab_net: external: true