前言

你有没有遇到过这种情况?

  • 代码写到一半想保存版本,但不知道存哪里
  • 想和别人一起写代码,结果改来改去改乱了
  • GitHub 确实好用,但总担心某天上不去
  • 自己有一台吃灰的服务器,想折腾点有用的

如果你中了上面任何一条,自建 Git 代码仓库 可能是最适合你的方案。

这篇文章会带你 从零开始,在一台 Linux 服务器上搭建一个属于自己的 GitHub——用的是 Gitea,一个只有 100MB 左右的轻量级 Git 服务。

全程不需要你懂什么高深的东西,跟着做就行。


什么是 Gitea?

简单说:Gitea 就是一个 开源的、轻量的、自己管的 GitHub

它和 GitHub 的不同在于:

GitHubGitea(自建)
谁管服务器GitHub 公司你自己
每月费用免费版限制多完全免费
仓库数量无限制无限制
私有仓库免费版有限制随便建
部署难度注册即用需要一台服务器
数据安全在别人手里在自己的服务器上

说白了,GitHub 是租房子(方便但受制于人),Gitea 是自建房(前期费点事,后面全是你的)。


准备工作

你需要的东西:

  1. 一台 Linux 服务器(云服务器或虚拟机都行)

    • 最低配置:1核 CPU、1GB 内存、10GB 硬盘
    • 系统推荐:Ubuntu 22.04 / Debian 11 / CentOS 7+
    • 可以买便宜的轻量云服务器,几十块钱一个月
  2. 一个域名(非必需,但有域名访问更方便)

    • 可以用 IP 地址直接访问,就是不太好看
  3. 一点点耐心(全程大概 30 分钟)

第一步:安装 Gitea

Gitea 的安装非常简单,只需要下载一个二进制文件就能跑。

先用 SSH 登录到你的服务器:

ssh root@你的服务器IP

然后执行以下命令下载 Gitea:

# 创建目录
mkdir -p /opt/gitea

# 下载 Gitea 二进制文件
wget -O /opt/gitea/gitea https://dl.gitea.com/gitea/1.22/gitea-1.22-linux-amd64

# 赋予执行权限
chmod +x /opt/gitea/gitea

就这么简单?对,就这么简单。一个文件就是整个 Gitea。

接下来创建运行 Gitea 的用户:

# 创建 git 用户
adduser --system --shell /bin/bash --gecos 'Git Version Control' --group --disabled-password --home /home/git git

# 把目录权限给 git 用户
chown -R git:git /opt/gitea

第二步:配置数据库

Gitea 需要一个数据库来存数据。推荐用 SQLite,最简单,不需要额外装数据库软件。

# 切换到 git 用户
su - git

# 生成配置文件,使用 SQLite
cd /opt/gitea
./gitea web --port 3000

第一次运行 Gitea 时,它会自动创建 SQLite 数据库。默认监听 3000 端口。

Ctrl+C 停掉,我们来配置开机自启。


第三步:设置为系统服务

创建一个 Gitea 系统服务,让它开机自动启动:

# 以 root 身份执行
cat > /etc/systemd/system/gitea.service << 'EOF'
[Unit]
Description=Gitea (Git with a cup of tea)
After=network.target

[Service]
RestartSec=2s
Type=simple
User=git
Group=git
WorkingDirectory=/opt/gitea
ExecStart=/opt/gitea/gitea web
Restart=always

[Install]
WantedBy=multi-user.target
EOF

# 启动并设置开机自启
systemctl daemon-reload
systemctl start gitea
systemctl enable gitea

# 检查状态
systemctl status gitea

如果是 active (running) 就成功了。


第四步:配置 Nginx 反向代理

用 IP + 端口(http://你的IP:3000)已经可以访问了,但为了安全和好看,最好配个域名。

假设你的 Nginx 已经装好了(宝塔面板更简单),添加一个网站配置:

server {
    listen 80;
    server_name git.你的域名.com;

    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;
    }
}

如果用宝塔面板:

  1. 添加站点 → 输入你的域名
  2. 设置 → 反向代理 → 添加
  3. 目标 URL 填 http://127.0.0.1:3000

第五步:首次配置

浏览器访问 http://你的域名,你会看到一个安装页面:

  1. 数据库类型:选择 SQLite
  2. 站点名称:写你喜欢的名字
  3. 管理员账号:设置管理员用户名和密码
  4. 服务器域名:填你的域名
  5. 其他保持默认

点"安装 Gitea",几秒后就好了。


第六步:创建你的第一个仓库

安装完成后,登录管理员账号。首页会有一个"创建仓库"的按钮。

  1. 点击"创建仓库"
  2. 输入仓库名称(比如 my-project
  3. 选择"私有"或"公开"
  4. 勾选"初始化仓库" → 勾选"添加默认 README"
  5. 点击"创建仓库"

恭喜,你拥有了自己的第一个 Git 仓库!


第七步:推代码上去

在你的本地电脑上(Mac 或 Windows),打开终端:

# 克隆你刚创建的仓库
git clone http://你的域名/用户名/my-project.git

# 进入目录
cd my-project

# 创建一个文件
echo "# Hello Gitea" > README.md

# 提交
git add .
git commit -m "第一次提交"

# 推送到服务器
git push

推送时输入你刚才设置的管理员用户名和密码,代码就推上去了。


进阶玩法(非必看)

当你熟悉了基本用法后,Gitea 还有更多好玩的:

🚀 Webhook 自动部署

Gitea 支持 Webhook——当代码推送到仓库时,自动通知你的服务器执行某个操作。比如:

  • 推代码 → 网站自动更新
  • 推代码 → 自动跑测试
  • 推代码 → 自动构建 Docker 镜像

配置方法:

  1. 进入仓库 → 设置 → Webhook
  2. 添加 Webhook URL(比如你的部署脚本地址)
  3. 选择触发事件(比如"推送事件")
  4. 下次推送代码时,Gitea 就会自动请求那个 URL

🔒 HTTPS 配置

用 Let's Encrypt 免费证书给 Gitea 加上 HTTPS:

apt install certbot python3-certbot-nginx
certbot --nginx -d git.你的域名.com

📦 Gitea Actions(内置 CI/CD)

Gitea 1.21+ 内置了 CI/CD 功能,类似 GitHub Actions。可以在仓库里放一个 .gitea/workflows/build.yml 文件,自动编译、测试、部署你的代码。


写在最后

自建 Gitea 最大的好处是:你的代码完全在你手里,不受任何平台限制

虽然前期配置要花 30 分钟,但之后你就有了一套完全免费、私密、可控的代码托管系统,想建多少仓库都行,想加什么功能自己改。

如果你在搭建过程中遇到任何问题,欢迎在评论区留言!