想部署自己的版本控制系统?Gitea是你的最佳选择!

Gitea 是什么?

如果你是一名开发者,一定对 Git 不陌生——它是目前最流行的版本控制系统(VCS),能帮你高效管理代码变更。但当你想把项目公开分享时,就需要一个 Git 代码托管平台。

你可能听说过 GitHub,它是全球最大的开源社区。然而在国内,访问 github.com 经常遇到连接超时,主要原因有两点:

  • DNS 污染:中间商篡改 GitHub 的 DNS 记录,使其无法正确指向官方服务器。
  • 服务器传输延迟高:GitHub 服务器位于美国等地,跨境传输不稳定。

虽然网上有不少访问 GitHub 的教程,但如果你希望数据掌握在自己手中、拥有媲美国内网站的速度,自建一个 Git 托管平台是更好的选择。常见场景包括:

  • 企业团队:保护代码隐私安全,同时规划内部任务。
  • 个人开发者:保留 100% 的数据掌握权。

市面上也有一些 Git 托管程序,如 OneDev(Java 编写)、GitLab(功能强大)、GitHub Enterprise Server(GitHub 企业自托管版)。而本期要介绍的是 Gitea——一个使用 Go 语言编写、简单轻量但功能齐全的托管程序,官方文档见 docs.gitea.com/zh-cn/。

根据官方文档:

Gitea 是一个轻量级的 DevOps 平台软件。从开发计划到产品成型的整个软件生命周期,它都能高效而轻松地帮助团队和开发者,包括 Git 托管、代码审查、团队协作、软件包注册和 CI/CD。它与 GitHub、Bitbucket 和 GitLab 等比较类似。Gitea 最初是从 Gogs 分支而来,几乎所有代码都已更改。

环境准备

如果你是个人管理代码,在本地搭建就可以了,Windows和Linux都可以;或者部署到一台公共服务器,让任何人都可以看到你的代码。本期以Linux服务器讲解为例,Windows的部署类似但有些步骤需要进行调整。

本期的搭建环境如下:

  • CPU:2核
  • RAM:2G(额外配了2G swap,可以看下方)
  • 硬盘:NVMe 30GB
  • 系统:Ubuntu 26.04.1 (Resolute)

你可以在雨云上找到我选择的服务器配置,点击此链接可以快捷选择。

通过雨云,你可以获得优秀的连接速度和网络质量、媲美普通工作站的CPU性能等,非大陆地区无需ICP备案,支持试用,欢迎尝试雨云。

例如这是我的服务器信息:

接下去,我们要通过SSH工具连接。你可以理解为一个工具,可以远程连接到你的服务器并在其上操作。常见的有PuTTY、Terminus等,这里不详细展开。

需要注意的是,因为我的服务器并非全新服务器,已经有了一些服务,所以如果输出和你的请不要见怪

连接上后,运行以下命令更新软件包,并安装必要软件:

# 因为 root 就是 sudo 权限,所以不需要加 sudo
apt update
apt upgrade -y
apt install nano git -y

安装 Gitea

首先创建用户供 Gitea 工作:

adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

执行这条命令没有输出,可以通过以下命令验证:

cat /etc/passwd | grep git

image

接下去执行以下命令,创建 Gitea 工作的目录,并赋予相应的权限:

mkdir -p /var/lib/gitea/{custom,data,log}
chown -R git:git /var/lib/gitea/
chmod -R 750 /var/lib/gitea/
mkdir /etc/gitea
chown root:git /etc/gitea
chmod 770 /etc/gitea

然后下载 Gitea 可执行程序,并放置在Linux系统的全局目录下:

wget https://dl.gitea.com/gitea/1.27.3/gitea-1.27.3-linux-amd64 -O /usr/local/bin/gitea
chmod +x /usr/local/bin/gitea

注意你看到这篇文章的时候可能已经有了更新的版本,可以到Gitea官方下载界面查看最新版本(最新的在最上面,不推荐下载nightly版本)

用 gitea --version 测试是否下载成功:

注册为系统服务

编辑/etc/systemd/system/gitea.service:

[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target
Wants=mariadb.service
After=mariadb.service

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/var/lib/gitea/
ExecStart=/usr/local/bin/gitea web --config /etc/gitea/app.ini
Restart=always
Environment=USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea

[Install]
WantedBy=multi-user.target

然后注册:

systemctl enable gitea --now
systemctl status gitea # 如果有 active 输出证明成功了

访问界面

接下去可以访问Gitea的界面(一般为你的公网地址 + :3000,比如127.0.0.1:3000),开始初始化。

因为隐私问题这里不展示我的配置。将数据库设置为 SQLite,下方按照自己的需求配置即可。

随后就可以仿照Github进行使用了!