101 lines
4.8 KiB
YAML
101 lines
4.8 KiB
YAML
services:
|
||
db:
|
||
image: postgres:15@sha256:6eb0add3b77c081df18aa518ce43df58fdcc40f2e6d868a6fd08038dc7acd425
|
||
restart: always
|
||
env_file: ../.env
|
||
labels:
|
||
- "xiteng.site.component.gitea-db.enabled=true"
|
||
- "xiteng.site.component.gitea-db.name=Gitea PostgreSQL"
|
||
- "xiteng.site.component.gitea-db.description=保存仓库平台的账户、Issue、PR 与系统元数据。"
|
||
- "xiteng.site.component.gitea-db.section=infrastructure"
|
||
- "xiteng.site.component.gitea-db.category=数据层"
|
||
- "xiteng.site.component.gitea-db.access=internal"
|
||
- "xiteng.site.component.gitea-db.access-label=仅容器网络"
|
||
- "xiteng.site.component.gitea-db.icon=PG"
|
||
- "xiteng.site.component.gitea-db.icon-url=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/postgresql.svg"
|
||
- "xiteng.site.component.gitea-db.accent=blue"
|
||
- "xiteng.site.component.gitea-db.order=530"
|
||
volumes:
|
||
- ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d
|
||
- ./db_data:/var/lib/postgresql/data
|
||
networks:
|
||
- homelab_net
|
||
|
||
gitea:
|
||
image: gitea/gitea:1.27.1
|
||
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__PROTOCOL: http
|
||
GITEA__server__DOMAIN: gitea.xiteng.site
|
||
GITEA__server__ROOT_URL: https://gitea.xiteng.site/
|
||
GITEA__server__SSH_PORT: 22
|
||
GITEA__server__SSH_LISTEN_PORT: 22
|
||
GITEA__server__SSH_DOMAIN: git.xiteng.site
|
||
GITEA__service__ENABLE_PASSWORD_SIGNIN_FORM: "false"
|
||
GITEA__service__ENABLE_BASIC_AUTHENTICATION: "false"
|
||
GITEA__service__ENABLE_PASSKEY_AUTHENTICATION: "false"
|
||
volumes:
|
||
- ./data:/data
|
||
- ./custom/extra_links.tmpl:/data/gitea/templates/custom/extra_links.tmpl:ro
|
||
# 保留 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"
|
||
- "traefik.http.routers.gitea.middlewares=gitea-scheme"
|
||
# --- 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"
|
||
- "traefik.http.routers.gitea-http.middlewares=gitea-scheme"
|
||
# --- 中间件:强制 X-Forwarded-Proto(Cloudflare Tunnel 用 HTTP 连 Traefik,但用户端是 HTTPS)---
|
||
- "traefik.http.middlewares.gitea-scheme.headers.customrequestheaders.X-Forwarded-Proto=https"
|
||
# --- 开启 TLS 并指定解析器 ---
|
||
- "traefik.http.routers.gitea.tls=true"
|
||
- "traefik.http.routers.gitea.tls.certresolver=cfresolver"
|
||
- "xiteng.site.cache.gitea.enabled=true"
|
||
- "xiteng.site.cache.gitea.routers=gitea,gitea-http"
|
||
- "xiteng.site.cache.gitea.paths=/assets/,/css/,/js/,/images/"
|
||
- "xiteng.site.cache.gitea.edge-ttl=604800"
|
||
- "xiteng.site.cache.gitea.stale-while-revalidate=86400"
|
||
# 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"
|
||
# --- Xiteng Site dynamic catalog ---
|
||
- "xiteng.site.component.gitea.enabled=true"
|
||
- "xiteng.site.component.gitea.name=Gitea"
|
||
- "xiteng.site.component.gitea.description=自托管代码、Issue、Pull Request 与包管理平台。"
|
||
- "xiteng.site.component.gitea.section=services"
|
||
- "xiteng.site.component.gitea.category=开发与协作"
|
||
- "xiteng.site.component.gitea.url=https://gitea.xiteng.site/liooil"
|
||
- "xiteng.site.component.gitea.endpoint=git.xiteng.site:22"
|
||
- "xiteng.site.component.gitea.access=mixed"
|
||
- "xiteng.site.component.gitea.access-label=公开浏览 · 写操作需登录"
|
||
- "xiteng.site.component.gitea.icon=GT"
|
||
- "xiteng.site.component.gitea.icon-url=https://cdn.jsdelivr.net/gh/homarr-labs/dashboard-icons/svg/gitea.svg"
|
||
- "xiteng.site.component.gitea.accent=green"
|
||
- "xiteng.site.component.gitea.order=100"
|
||
- "xiteng.site.component.gitea.navigation=new-tab"
|
||
- "xiteng.site.component.gitea.portal-link=native"
|
||
- "xiteng.site.component.gitea.monitor.enabled=true"
|
||
- "xiteng.site.component.gitea.monitor.url=http://gitea:3000"
|
||
networks:
|
||
- homelab_net
|
||
|
||
networks:
|
||
homelab_net:
|
||
external: true
|