使用 Traefik 和 PostgreSQL 的 Gitea docker-compose 配置
这是我目前为中小型企业推荐的 Gitea 生产环境配置。 它使用 PostgreSQL 作为后端,Traefik 作为反向代理。
有关我使用的 Traefik 设置的更多信息,请参阅 Simple Traefik Docker-Compose Setup With Lets Encrypt Cloudflare DNS-01 & TLS-ALPN-01 & HTTP-01 Challenges。
首先,运行初始化脚本以创建具有正确权限的必要目录并选择随机 PostgreSQL 密码。
gitea_init.sh
#!/bin/sh
# gitea initialize script
echo POSTGRES_PASSWORD=$(pwgen 30 1) > .env
mkdir -p gitea_data gitea_config
chown -R 1000:1000 gitea_data gitea_configdocker-compose 配置
注意,与官方 Gitea Docker 安装指南有一些不同之处:
- 我们使用随机 PostgreSQL 密码而不是
gitea。有关为什么这非常重要的原因,请参阅此文章 - 我们不使用专用网络,因为
docker-compose无论如何都会创建单独的网络。 - 我们不使用 SSH,因为我们只是不在乎。2024 年基于 HTTPS 的 git 已经足够好了。
docker-compose.yml
services:
postgres:
image: postgres:17
restart: unless-stopped
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- POSTGRES_DB=gitea
volumes:
- ./postgres_data:/var/lib/postgresql/data
gitea:
image: gitea/gitea:latest-rootless
container_name: gitea
depends_on:
- postgres
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=postgres:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=${POSTGRES_PASSWORD}
restart: unless-stopped
volumes:
- ./gitea_data:/var/lib/gitea
- ./gitea_config:/etc/gitea
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
labels:
- "traefik.enable=true"
- "traefik.http.routers.gitea.rule=Host(`gitea.mydomain.com`)"
- "traefik.http.routers.gitea.entrypoints=websecure"
- "traefik.http.routers.gitea.tls.certresolver=cloudflare"
- "traefik.http.routers.gitea.tls.domains[0].main=mydomain.com"
- "traefik.http.routers.gitea.tls.domains[0].sans=*.mydomain.com"
- "traefik.http.services.gitea.loadbalancer.server.port=3000"现在你可以创建 systemd 服务以自动启动 Gitea 服务。有关详细信息,请参阅我们关于 docker-compose systemd 服务的文章
create_gitea_service.sh
curl -fsSL https://techoverflow.net/scripts/create-docker-compose-service.sh | sudo bash /dev/stdin如何开始
现在通过在浏览器中打开你的域名来配置 Gitea。schema 字段需要留空。
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow