使用 Docker 与 Gitea 部署私人 Git 服务器
前言
Git 用来同步一些文档、代码确实非常的方便,但是总会有一些文件不希望同步至 GitHub 或是其他的公共服务商,这时可以使用开源项目自建一个属于私人的 Git 服务器。
我是有一些文件在只需要局域网内同步就可以了,在这之前我是使用的 GitLab 社区版部署的私人 Git 服务器。
不得不说,GitLab 也是非常强大的,但相对的占用资源也比较高,需要较多的内存,而且也遇到过跨版本升级的问题。
GitLab CE 资源占用:
1 | CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS |
最终,我决定迁移至轻量级的 Gitea,Gitea 完成迁移后的资源占用:
1 | CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS |
使用 Docker Compose 部署起来也是非常简单的。
Gitea 介绍
Gitea 的自我介绍:一款极易搭建的自助 Git 服务
- 易安装:通过 二进制 来运行;或者通过 Docker 来运行;或者通过 安装包 来运行。
- 跨平台:任何 Go 语言 支持的平台都可以运行 Gitea,包括 Windows、Mac、Linux 以及 ARM。
- 轻量级:一个廉价的树莓派的配置足以满足 Gitea 的最低系统硬件要求。最大程度上节省您的服务器资源!
- 开源化:所有的代码都开源在 code.gitea.io/gitea 上
修改主机 SSH 端口
我们将使用 Docker 部署 Gitea,由于 git 默认使用 22 端口更方便一些,22 端口将映射给 Docker 使用,所以需要修改宿主机的 SSH 端口
命令均是在 root 权限下执行
1 | vim /etc/ssh/sshd_config |
修改 Port 22
为其他数字。
1 | systemctl restart sshd |
如果是远程服务器,记得先新开一个终端创建进行连接测试,确认可以登录再退出当前的窗口。
使用 Docker Compose 部署
如果没有安装 docker compose, 可以查看 Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程
首先创建一个工作文件夹,然后在其中创建 docker-compose.yml 文件,填入下面的内容:
1 | networks: |
Gitea 的文件将保存在与 docker-compose.yml 同目录的 gitea 文件夹内,postgres 数据库文件保存在 postgres 文件夹内。
启动 Gitea :
1 | docker compose up -d |
可以省略 docker compose pull
,第一次启动会自动拉取镜像。
然后就可以访问 http://<ip>:3000
查看,第一次打开会进入安装界面。
数据库部分不需要修改,可以修改下面的部分
- 服务器域名
- 基础URL
关闭注册
进入 docker-compose.yml 目录,编辑文件 ./gitea/gitea/conf/app.ini
文件
1 | vim ./gitea/gitea/conf/app.ini |
修改下面的内容
1 | [service] |
重启 Gitea:
1 | docker compose down |
如果使用 Nginx 反代 Web 界面,可以将 docker-compose.yml 中的端口设置问仅限本地访问:
1 | ports: |
相比资源占用较大的 GitLab,Gitea 在功能上足够满足大多数个人或小团队的 Git 使用需求,且部署、维护成本极低,非常适合在本地或小型 VPS 上运行。
Gitea 的 Web 界面相当的简洁直观,功能上同样支持常见的 Git 功能和权限控制,支持使用 SSH Key 认证。如果你也有不便托管在 GitHub 上的私有项目,或者希望在局域网内构建自己的 Git 服务,Gitea 是一个非常值得尝试的解决方案。