Quadlet 配置分享:Gitea

本文属于「quadlet 配置分享」系列,直接贴配置,不讲 Quadlet 基础。入门见 Podman 教程

Gitea

Gitea 是 Go 写的轻量自托管 Git 服务,资源占用低,支持 OIDC/OAuth2 登录、Webhook、Actions CI/CD。

配置

用 Pod 将 Gitea 和 PostgreSQL 放在同一网络命名空间。

# gitea.pod
[Pod]
PublishPort=3000:3000
PublishPort=2222:22
UserNS=keep-id

[Install]
WantedBy=default.target
# gitea.container
[Unit]
Requires=gitea-db.service
After=gitea-db.service

[Container]
Image=docker.io/gitea/gitea:latest-rootless
Pod=gitea.pod
Volume=/path/to/data:/var/lib/gitea
Volume=/path/to/config:/etc/gitea
Volume=/etc/localtime:/etc/localtime:ro
Environment=GITEA__database__DB_TYPE=postgres GITEA__database__HOST=127.0.0.1:5432 GITEA__database__NAME=gitea GITEA__database__USER=gitea GITEA__database__PASSWD=gitea
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=default.target
# gitea-db.container
[Container]
Image=docker.io/library/postgres:18
Pod=gitea.pod
Volume=/path/to/db:/var/lib/postgresql
Environment=POSTGRES_USER=gitea POSTGRES_PASSWORD=gitea POSTGRES_DB=gitea
AutoUpdate=registry

[Service]
Restart=always

[Install]
WantedBy=default.target
  1. /path/to/ 替换为实际路径。
  2. 如果不想暴露 SSH,去掉 PublishPort=2222:22 和 Pod 中对应的行。
  3. latest-rootless 镜像默认以 git 用户(UID 1000)运行,SSH 监听 2222,与宿主 SSH 不冲突。

可选:Gitea Runner

如果需要 CI/CD(Actions),加上 Runner。

参考 Rootless Podman 运行 Gitea Runner

启动

  1. 保存文件到 ~/.config/containers/systemd/
  2. systemctl --user daemon-reload
  3. 启动:systemctl --user start gitea-pod
  4. 【可选】启用自动更新:systemctl --user enable --now podman-auto-update.timer