Docker 搭建 Gitea
Gitea 是一个 Go 语言开发的开源的自托管 Git 服务,相比 GitLab,它具有轻量级、占用资源低的特点,适用于个人、小型团队。
Docker Compose 部署
Gitea 支持使用 SQLite3、MySQL 和 PostgreSQL 数据库,实际部署时推荐使用 MySQL 或 PostgreSQL。在本文中使用 PostgreSQL,使用其他数据库请参考官网配置。
在宿主机中创建 git 用户并设置一个复杂密码。
1 | adduser git |
在系统中给 git
用户创建 ssh 密钥对。该密钥对将用于向主机验证主机上的 git
用户。这里使用 ed25519
算法。
1 | sudo -u git ssh-keygen -t ed25519 -C "Gitea Host Key" |
将公钥追加写入到 /home/git/.ssh/authorized_keys
。
1 | cat /home/git/.ssh/id_ed25519.pub >> /home/git/.ssh/authorized_keys |
使用 id
命令查看刚刚创建的 git
用户的 UID
和 GID
,下面的 docker-compose.yaml
文件要用到。
1 | id git |
在合适的位置建立 gitea 的数据文件夹,如 /root/gitea/
,进入该目录写入 docker-compose.yaml
文件。
1 | version: "3" |
修改 docker-compose.yaml
文件中的 USER_UID
和 USER_GID
,改为上面 id git
命令获取到的 git
用户对应的 UID
和 GID
。
在主机中创建 /usr/local/bin/gitea
文件并赋予可执行权限。该文件将发出从主机到容器的 SSH 转发。将以下内容添加到 /usr/local/bin/gitea
。
1 | ssh -p 2222 -o StrictHostKeyChecking=no git@127.0.0.1 "SSH_ORIGINAL_COMMAND=\"$SSH_ORIGINAL_COMMAND\" $0 $@" |
然后拉取并启动容器。
1 | docker compose up -d |
配置反向代理
参考配置:
1 | location / { |
初始化配置
启用本地模式,禁用 Gravatar 头像,禁止用户注册。
如果打开禁用用户注册,需要在下方创建管理员账号。
参考资料
https://docs.gitea.com/zh-cn/installation/install-with-docker
Docker 搭建 Gitea