海外云服务器搭建Gitea自建Git服务器完整教程(2026最新版)

📅 · 海外云服务器自建服务教程 - ChengziCloud

一句话结论

Meta Description: 从零开始用海外云服务器搭建Gitea轻量Git服务器,涵盖Docker/二进制双安装方式、MySQL/SQLite数据库配置、反向代理SSL、用户权限管理、CI/CD集成,附服务器配置推荐与价格对比。

本文要点
  • 前言
  • 为什么选择Gitea自建Git服务器
  • 服务器配置推荐
  • 第一步:服务器初始化
  • 第二步:安装MySQL数据库
  • 第三步:安装Gitea(二进制方式)
  • 第四步:配置Systemd服务
  • 第五步:Web初始化配置

Meta Description: 从零开始用海外云服务器搭建Gitea轻量Git服务器,涵盖Docker/二进制双安装方式、MySQL/SQLite数据库配置、反向代理SSL、用户权限管理、CI/CD集成,附服务器配置推荐与价格对比。

关键词:海外云服务器搭建Gitea、自建Git服务器教程、Gitea部署教程、Gitea Docker安装、Gitea反向代理配置、轻量GitLab替代、海外代码托管

前言

用海外云服务器搭建Gitea自建Git服务器,是个人开发者和小型团队摆脱GitHub/GitLab限制的最佳方案。Gitea是一个用Go语言编写的轻量级自托管Git服务,功能涵盖代码托管、Pull Request、Issue追踪、CI/CD(Gitea Actions)、包管理(Package Registry)等,安装仅需一个二进制文件或一条Docker命令,内存占用不到GitLab的十分之一。与GitHub相比,Gitea无仓库数量限制、无协作者限制、代码完全自主可控;与GitLab CE相比,Gitea启动速度快10倍、内存占用低5-10倍,2核1G的小型VPS即可流畅运行。本文提供完整的命令步骤,从安装到配置再到安全加固,所有操作均可直接复制执行。

🚀 还没有海外云服务器?通过 5.chengzicloud.cloud 选购阿里云/AWS/腾讯云国际版,享专属折扣和中文技术支持。

一、为什么选择Gitea自建Git服务器

完全自主可控:代码存储在自己的服务器上,不受GitHub政策变动影响。2024年GitHub宣布收紧免费私有仓库协作者限制后,自建Git服务的需求大幅增长。Gitea不收集任何遥测数据,隐私有保障。

资源占用极低:Gitea用Go语言编写,编译为单一二进制文件,不依赖Node.js、Ruby、Python等运行时。在2核1G的VPS上,Gitea启动后仅占用约50MB内存,而GitLab CE至少需要4GB内存才能正常运行。这对于预算有限的个人开发者和初创团队来说是决定性优势。

功能完整度高:Gitea支持Git全部核心功能(分支、标签、合并、rebase),并提供Web端代码编辑、Pull Request、Code Review、Issue/Wiki、Actions(类GitHub Actions的CI/CD)、Package Registry(npm/Maven/Docker/PyPI)、LFS(大文件存储)、Webhook、LDAP/OAuth2集成等功能。对于90%的开发团队,Gitea的功能已经足够。

迁移成本低:从GitHub/GitLab迁移仓库到Gitea非常简单——Gitea内置了从GitHub、GitLab、Gogs、Gitea、Bitbucket等平台一键导入仓库的功能,也支持标准的 git push --mirror 方式迁移。反之,将来想迁出也只需反向操作,不存在数据锁定。

社区活跃:Gitea在GitHub上有45k+ Stars,活跃贡献者超过500人,每月发布新版本,中文文档完善。遇到问题可以在Gitea官方论坛或中文社区快速获得帮助。

二、服务器配置推荐

Gitea对硬件要求极低,但要根据仓库规模和并发用户数合理选择配置:

使用场景CPU内存硬盘带宽推荐系统月费参考
个人代码托管1核1GB20GB SSD1MbpsUbuntu 22.04$3.5-5/月
小团队(3-10人)2核2GB40GB SSD3MbpsUbuntu 22.04$6-10/月
中型团队(10-30人)4核4GB80GB SSD5MbpsUbuntu 22.04$15-25/月
大型项目/CI密集8核8GB160GB SSD10MbpsUbuntu 22.04$30-50/月

硬盘预估:代码仓库本身通常不大(1个中型项目约100-500MB),但Gitea的 LFS(大文件存储)和 Actions 构建缓存会快速占用磁盘。建议预留至少双倍于仓库总量的磁盘空间,并启用磁盘配额限制单个用户的存储上限。

服务商最低配1核2G2核4G数据中心优点
阿里云国际版 ECS$4.2/月$5.5/月$12/月新加坡/香港/硅谷中文面板、支持支付宝
AWS Lightsail$3.5/月$5/月$10/月全球20+区域新用户免费套餐、生态完善
腾讯云国际版 CVM$4.5/月$6/月$13/月香港/新加坡/东京低延迟到国内、微信支付
Vultr$6.0/月$6/月$12/月全球32个按小时计费、随时销毁
DigitalOcean$6.0/月$6/月$12/月全球14个文档最完善、社区教程多

💡 新手建议:选阿里云国际版或腾讯云国际版香港节点,延迟低、有中文面板,通过 5.chengzicloud.cloud 购买还可享额外折扣。

🚀 通过 5.chengzicloud.cloud 购买以上平台均有额外折扣,点击首页查看最新优惠。

三、第一步:服务器初始化

所有操作均以root用户执行。先更新系统并安装基础依赖:


// Ubuntu 22.04
apt update && apt upgrade -y
apt install -y curl wget git unzip apt-transport-https ca-certificates gnupg lsb-release

// CentOS 7
yum update -y
yum install -y curl wget git unzip epel-release

创建专用用户和目录:


// 创建git用户
useradd -m -s /bin/bash git
passwd git

// 创建必要目录
mkdir -p /var/lib/gitea/{custom,data,log}
mkdir -p /etc/gitea
chown git:git /var/lib/gitea/{custom,data,log}
chmod 750 /var/lib/gitea/{custom,data,log}
chown root:git /etc/gitea
chmod 770 /etc/gitea

关键说明:/var/lib/gitea 存储所有数据(仓库、数据库、日志),/etc/gitea 存储配置文件。将配置文件所有者设为 root:git 而非 git:git,是为了防止Gitea进程自身修改配置文件导致安全问题。

四、第二步:安装MySQL数据库

虽然Gitea支持SQLite(适合单人使用),但推荐安装MySQL以获得更好的并发性能和数据安全性。


// Ubuntu 22.04
apt install -y mysql-server
mysql_secure_installation

// CentOS 7
yum install -y mysql-server
systemctl start mysqld
// 获取初始密码
grep 'temporary password' /var/log/mysqld.log
mysql_secure_installation

创建Gitea专用数据库和用户:


// 登录MySQL
mysql -u root -p

// 创建数据库和用户
CREATE DATABASE gitea CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'gitea'@'localhost' IDENTIFIED BY 'YourStrongPassword123!';
GRANT ALL PRIVILEGES ON gitea.* TO 'gitea'@'localhost';
FLUSH PRIVILEGES;
EXIT;

密码安全:请将 YourStrongPassword123! 替换为真实的强密码(16位以上,包含大小写字母、数字和特殊字符)。密码会写入配置文件,因此配置文件权限控制至关重要。

五、第三步:安装Gitea(二进制方式)

这是最推荐的安装方式,轻量且可控:


// 下载最新版Gitea(以1.22为例,实际请查看官网获取最新版本号)
su - git
wget -O gitea https://dl.gitea.com/gitea/1.22.0/gitea-1.22.0-linux-amd64
chmod +x gitea
mv gitea /usr/local/bin/

// 验证安装
gitea --version

备选方式:Docker安装

如果偏好容器化部署,可以使用Docker一键安装:


// 安装Docker
curl -fsSL https://get.docker.com | sh
systemctl enable --now docker

// 启动Gitea容器
docker run -d \
  --name=gitea \
  -p 3000:3000 \
  -p 2222:22 \
  -v /var/lib/gitea:/data \
  -v /etc/gitea:/etc/gitea \
  -e USER_UID=1000 \
  -e USER_GID=1000 \
  --restart=always \
  gitea/gitea:latest

Docker方式将数据挂载到 /var/lib/gitea,与二进制方式目录结构一致,方便将来切换。SSH端口映射到2222避免与系统SSH冲突。

六、第四步:配置Systemd服务

创建Gitea系统服务,实现开机自启和进程管理:


// 退出git用户,以root操作
exit

// 创建systemd服务文件
cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea
After=network.target
After=mysqld.service
Requires=mysqld.service

[Service]
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
EOF

// 启动服务
systemctl daemon-reload
systemctl enable --now gitea

// 验证服务状态
systemctl status gitea

此时Gitea已在3000端口运行。打开浏览器访问 http://你的服务器IP:3000,会进入Gitea的初始化安装向导。

七、第五步:Web初始化配置

在浏览器中完成Gitea的初始化设置:

  1. 数据库设置:选择MySQL,填入 localhost:3306、数据库名 gitea、用户 gitea、密码
  2. 仓库根目录:保持默认 /var/lib/gitea/data/gitea-repositories
  3. 应用URL:填入你的域名(如 https://git.yourdomain.com/),末尾带斜杠
  4. SSH端口:如果使用二进制安装填 22,Docker安装填 2222
  5. HTTP端口:保持 3000
  6. 管理员账号:设置第一个管理员用户名和密码
  7. 邮件设置:可选配置SMTP用于找回密码和通知

完成设置后,Gitea会自动重启。用刚才设置的管理员账号登录即可。

八、第六步:Nginx反向代理+SSL证书

生产环境必须使用HTTPS。配置Nginx反向代理并申请Let's Encrypt免费SSL证书:


// 安装Nginx
apt install -y nginx

// 安装Certbot
apt install -y certbot python3-certbot-nginx

创建Nginx配置:


cat > /etc/nginx/sites-available/gitea << 'EOF'
server {
    listen 80;
    server_name git.yourdomain.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl http2;
    server_name git.yourdomain.com;

    ssl_certificate /etc/letsencrypt/live/git.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/git.yourdomain.com/privkey.pem;

    client_max_body_size 512M;

    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /assets/ {
        alias /var/lib/gitea/data/gitea/public/assets/;
        expires 30d;
        add_header Cache-Control "public, immutable";
    }
}
EOF

// 启用站点
ln -s /etc/nginx/sites-available/gitea /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
nginx -t

申请SSL证书:


// 先确保域名DNS已解析到服务器IP
certbot --nginx -d git.yourdomain.com --non-interactive --agree-tos -m [email protected]

// 验证自动续签
certbot renew --dry-run

重启Nginx并更新Gitea配置中的应用URL:


systemctl restart nginx

在 /etc/gitea/app.ini 中修改应用URL为HTTPS地址:


[repository]
ROOT_URL = https://git.yourdomain.com/

[server]
DOMAIN = git.yourdomain.com
ROOT_URL = https://git.yourdomain.com/
HTTP_PORT = 3000

重启Gitea使配置生效:


systemctl restart gitea

九、第七步:SSH克隆配置

Gitea支持SSH克隆,配置后用户可以使用SSH密钥推送代码:


// 编辑Gitea配置
cat >> /etc/gitea/app.ini << 'EOF'

[server]
SSH_DOMAIN = git.yourdomain.com
SSH_PORT = 22
SSH_LISTEN_PORT = 22
START_SSH_SERVER = true
EOF

// 重启Gitea
systemctl restart gitea

重要:START_SSH_SERVER = true 让Gitea内置SSH服务器监听22端口。如果系统SSH也使用22端口,会冲突。两种解决方案:

方案一(推荐):将系统SSH改到其他端口:


// 修改SSH端口
sed -i 's/^#Port 22/Port 2222/' /etc/ssh/sshd_config
systemctl restart sshd

方案二:使用Docker方式的2222端口映射,通过 ssh -p 2222 user@host 克隆。

用户在Gitea Web界面添加SSH公钥后,即可通过SSH克隆和推送:


// SSH克隆示例
git clone [email protected]:username/repo.git

// HTTPS克隆示例
git clone https://git.yourdomain.com/username/repo.git

十、第八步:安全加固

Gitea部署完成后,必须进行安全加固:

10.1 防火墙配置


// Ubuntu 22.04 (ufw)
ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw enable

// CentOS 7 (firewalld)
firewall-cmd --permanent --add-port=22/tcp
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --reload

注意:不要开放3000端口到公网,Nginx反向代理已经处理了HTTP/HTTPS流量。

10.2 限制注册和仓库创建

在Gitea Web管理面板 → 站点设置 → 取消勾选「启用公开注册」,改为仅管理员可创建新用户。或者在 app.ini 中配置:


[service]
DISABLE_REGISTRATION = true
REQUIRE_SIGNIN_VIEW = true

10.3 定期备份

编写自动备份脚本,每天备份数据库和仓库:


cat > /home/git/backup-gitea.sh << 'BACKUP'
#!/bin/bash
BACKUP_DIR="/home/git/gitea-backups"
DATE=$(date +%Y%m%d)
mkdir -p $BACKUP_DIR

// 备份MySQL数据库
mysqldump -u gitea -p'YourStrongPassword123!' gitea | gzip > $BACKUP_DIR/gitea-db-$DATE.sql.gz

// 备份Gitea数据目录
tar czf $BACKUP_DIR/gitea-data-$DATE.tar.gz /var/lib/gitea/data /etc/gitea/

// 保留最近7天的备份
find $BACKUP_DIR -name "*.gz" -mtime +7 -delete
BACKUP

chmod +x /home/git/backup-gitea.sh

// 添加cron定时任务(每天凌晨3点执行)
echo "0 3 * * * /home/git/backup-gitea.sh" | crontab -

10.4 启用Fail2ban防暴力破解


apt install -y fail2ban

cat > /etc/fail2ban/filter.d/gitea.conf << 'EOF'
[Definition]
failregex = .*Failed authentication attempt.*from <HOST>
ignoreregex =
EOF

cat > /etc/fail2ban/jail.d/gitea.conf << 'EOF'
[gitea]
enabled = true
port = http,https
filter = gitea
logpath = /var/lib/gitea/log/gitea.log
maxretry = 5
bantime = 3600
findtime = 600
EOF

systemctl enable --now fail2ban

十一、Gitea Actions:内置CI/CD

Gitea 1.19+内置了Gitea Actions,兼容GitHub Actions的工作流语法,无需额外安装Runner:

在Gitea管理面板 → Actions → Runners → 添加Runner:


// 安装Gitea Act Runner
wget -O act_runner https://gitea.com/gitea/act_runner/releases/latest/download/act_runner-$(uname -s)-$(uname -m)
chmod +x act_runner
mv act_runner /usr/local/bin/

// 注册Runner(在管理面板获取注册Token后执行)
act_runner register --instance https://git.yourdomain.com --token YOUR_REGISTRATION_TOKEN

// 创建systemd服务
cat > /etc/systemd/system/gitea-runner.service << 'EOF'
[Unit]
Description=Gitea Runner
After=network.target

[Service]
Type=simple
User=git
ExecStart=/usr/local/bin/act_runner daemon
Restart=always

[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable --now gitea-runner

在仓库中创建 .gitea/workflows/ci.yml 即可使用:


name: CI Pipeline
on: [push, pull_request]
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build
        run: echo "Build step"
      - name: Test
        run: echo "Test step"

十二、常见问题FAQ

Q:Gitea和GitLab CE有什么区别?

A:最大的区别是资源占用。Gitea用Go编写,单二进制文件,2核1G即可流畅运行;GitLab CE用Ruby编写,官方推荐最低4核8G。功能上GitLab CE更丰富(内置容器注册表、监控面板、安全扫描),但Gitea覆盖了90%的日常开发需求。对于个人开发者和10人以下团队,Gitea是性价比最高的选择。

Q:从GitHub迁移仓库到Gitea麻烦吗?

A:非常简单。在Gitea Web界面点击「迁移仓库」→ 选择「GitHub」→ 输入GitHub Personal Access Token → 选择要迁移的仓库 → 点击确认。Gitea会自动导入代码、Issues、Pull Requests、Wiki和协作权限。也可以通过命令行 git push --mirror 迁移。

Q:Gitea支持Docker镜像仓库吗?

A:支持。Gitea内置了Package Registry,可以托管Docker镜像、npm包、Maven包、PyPI包等。在管理面板启用后,通过 docker push git.yourdomain.com/username/repo:tag 推送镜像。

Q:多人协作时SSH密钥怎么管理?

A:每个用户在Gitea Web界面 → 设置 → SSH公钥中添加自己的公钥。一个用户可以添加多个公钥(不同设备)。管理员可以在管理面板查看和删除所有用户的SSH公钥。

Q:仓库数据会丢失吗?

A:只要做好备份就不会。Gitea的数据全部存储在MySQL数据库和 /var/lib/gitea/data 目录中。建议:(1) 启用MySQL的自动备份;(2) 定期打包 /var/lib/gitea/data 目录;(3) 将备份上传到异地存储(如阿里云OSS或AWS S3)。上面的备份脚本已经涵盖了前两步。

Q:Gitea的Actions和GitHub Actions完全兼容吗?

A:大部分兼容。Gitea Actions支持所有常用的GitHub Actions(checkout、setup-node、upload-artifact等),工作流语法完全一致。少数使用 github.event 特定字段的高级Action可能不兼容,但主流CI/CD场景没有问题。

Q:可以同时托管多个用户的代码仓库吗?

A:可以。Gitea本身就是为多用户设计的。每个注册用户有独立的命名空间(username/repo),支持创建组织(Organization)进行团队协作。管理员可以设置存储配额、仓库数量限制等策略。

十三、总结

海外云服务器搭建Gitea自建Git服务器,是个人开发者和小型团队实现代码自主可控的最优解。整个安装过程30分钟即可完成,一台$5/月的入门级VPS就能流畅运行。相比GitHub的隐私风险和GitLab CE的资源消耗,Gitea在功能完整度和运维成本之间取得了最佳平衡。无论是个人项目管理、团队协作开发,还是CI/CD自动化部署,Gitea都能胜任。

延伸阅读:

🚀 需要海外云服务器搭建Gitea?通过 5.chengzicloud.cloud 选购阿里云/AWS/腾讯云国际版,2核2G低至$5/月,享专属折扣和中文技术支持。

本文由 5.chengzicloud.cloud 提供,点击访问首页了解更多海外云服务器部署方案和专属优惠。