一、背景团队协作开发中,代码托管是基础环节。除了 GitHub、Gitee 等公共平台,有时需要在私有服务器上部署一个轻量级的 Git 仓库管理服务,用于存放内部项目或学习练手。本文记录在阿贝云免费云服务器上搭建 Gitea 的完整过程,包括数据库配置、Nginx 反向代理和 SSH 推送通道。
二、环境准备Gitea 对系统资源要求不高,适合在免费云服务器上运行。本次使用的环境:服务器:阿贝云免费云服务器操作系统:Ubuntu 22.04 LTS(通过后台重装系统功能安装)数据库:SQLite(轻量场景足够,无需额外安装 MySQL)反代:Nginx先更新系统并安装依赖:apt update && apt install git nginx -y
三、下载并安装 Gitea创建 Gitea 运行用户和目录:adduser --system --group --disabled-password gitmkdir -p /var/lib/gitea/{custom,data,log}chown -R git:git /var/lib/gitea && chmod -R 750 /var/lib/gitea下载 Gitea 二进制文件:wget -O /usr/local/bin/gitea https://dl.gitea.com/gitea/1.21/gitea-1.21-linux-amd64chmod +x /usr/local/bin/gitea
四、配置 Systemd 服务创建 systemd 服务文件,让 Gitea 开机自启并以后台服务方式运行:vim /etc/systemd/system/gitea.service写入以下内容:[Unit]启动服务并设置开机自启:systemctl daemon-reload && systemctl enable --now gitea此时 Gitea 默认监听 3000 端口,可通过 http://服务器IP:3000 访问安装向导。
五、配置 Nginx 反向代理为了通过 80 端口统一访问,配置 Nginx 反向代理到 Gitea 的 3000 端口:vim /etc/nginx/sites-available/giteaserver {ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/nginx -t && systemctl reload nginx注意:绑定域名访问需要在阿贝云后台先提交域名白名单,审核通过后域名解析才能正常指向服务器。
六、配置 SSH 协议推送代码Gitea 默认使用 22 端口处理 SSH 推送,但服务器自身的 SSH 也占用 22 端口。需要将 Gitea 的 SSH 端口改为 2222,在 Gitea 安装向导或配置文件 /etc/gitea/app.ini 中设置:[server]修改后重启 Gitea 服务:systemctl restart gitea本地 clone 仓库时指定端口:git clone ssh://git@服务器IP:2222/user/repo.git
七、使用感受整套
Gitea 私有仓库搭建下来,对阿贝云免费云服务器的几点实际体验:
重装系统灵活:开始用了默认系统,后来发现 Git 版本太老,直接在后台一键重装成 Ubuntu 22.04,几分钟搞定,不用纠结镜像源问题。
VNC 排障实用:配置 SSH 端口时一度把 sshd_config 改错导致无法远程登录,通过后台 VNC 连接进去恢复了配置,避免了重新装系统的麻烦。
快照保驾护航:Gitea 配好后打了一个快照,后面改 Nginx 配置搞坏了环境,直接用快照恢复到正常状态,仓库数据也没丢。
流量统计可观测:Git 推送和拉取会产生流量,后台的流量统计图表可以直观看到每天的数据变化,判断是否有异常大流量拉取。
CPU 占用可控:Gitea 本身比较轻量,平时空闲时 CPU 占用很低,后台的 CPU 使用统计图表也印证了这一点,只有在 git push 压缩仓库时才会有短暂峰值。
免费虚拟主机不适合此场景:顺便对比了一下阿贝云的免费虚拟主机,虚拟主机无法安装自定义程序、没有 SSH 权限,所以 Gitea 这类需要自建服务的项目只能用云服务器。
整体来看,Gitea 在免费云服务器上运行稳定,适合个人或小团队做私有代码托管。阿贝云后台的重装系统、VNC 连接、快照管理和流量/CPU 统计这几个功能在搭建和运维过程中都用到了,覆盖了常见排障场景。需要注意免费产品资源有限,仓库体积大或并发推送多时建议评估性能。
参考资料[1] 阿贝云官网:https://www.abeiyun.com