GitHub又全球宕机6小时:3步用Gitea自建代码托管,把仓库命运握在自己手里

· 小白基础技术分享

为什么要自建代码托管

今天 GitHub 又双叒全球宕机了:8 月 18 日故障持续 6 小时以上,全球错误率一度接近 20%,正好撞上 Cursor 发布竞品 Origin 的日子。如果你被这类事故坑过——PR 提不了、CI 跑不了、代码拉不下来——这篇教程就是为你准备的:用开源项目 Gitea,3 步在自家服务器上搭一个轻量代码托管平台。

GitHub又全球宕机6小时:3步用Gitea自建代码托管,把仓库命运握在自己手里封面

Gitea 是 Go 写的轻量 Git 服务,单文件即可运行,几百 MB 内存就能带起来一个小团队,比 GitLab 轻得多,支持 PR、Issue、CI(内置 Actions)、Webhook,中文界面友好。适合:个人开发者备份代码、小团队内部托管、对隐私敏感不想把代码放 GitHub 的项目。

前置条件

– 一台 Linux 服务器(云主机或旧电脑都行,2 核 2G 就够跑);

– 已安装 Docker 和 Docker Compose(推荐,最省事);

– 一个域名或 IP(本地用 localhost 也行,但公网需要反代 + HTTPS)。

验证是否就绪:`docker –version` 能输出版本号即可继续。

第 1 步:写一个 compose 文件

新建 `docker-compose.yml`:

services:
  gitea:
    image: gitea/gitea:latest
    container_name: gitea
    environment:
      - USER_UID=1000
      - USER_GID=1000
      - GITEA__server__DOMAIN=git.example.com
      - GITEA__server__ROOT_URL=https://git.example.com/
    restart: always
    volumes:
      - ./gitea:/data
    ports:
      - "3000:3000"
      - "2222:22"

把 `git.example.com` 换成你的域名;`2222` 是 SSH 端口,避免和本机 22 冲突。

第 2 步:启动并初始化

docker compose up -d
# 等 10 秒左右,打开 http://服务器IP:3000

首次打开会进入安装向导:数据库选 SQLite(小团队够用)、站点名称随意、管理员账号自己设。点”立即安装”后,就完成了 80% 的工作。

成功验证:安装完能看到登录页,用刚建的管理员账号能登录,右上角有”新建仓库”按钮——平台已经活了。

第 3 步:推送第一个仓库

# 在 Gitea 网页上新建一个空仓库,然后本地操作:
git remote add origin http://你的IP:3000/用户名/仓库名.git
git push -u origin main

推送成功后再试一次拉取和 PR:在网页上改一个文件、发起 Pull Request、合并——全套流程走通,说明自托管完全可用。

常见失败与处理

| 现象 | 原因 | 解决 |

|——|——|——|

| 网页打不开 | 端口没放行 | 云厂商安全组放行 3000/2222 |

| push 报 `connection refused` | SSH 端口没映射 | 检查 compose 里 `2222:22` |

| 忘记管理员密码 | 初始化后改动 | 进容器 `docker exec -it gitea gitea admin user change-password –username admin –password 新密码` |

| 想用 HTTPS | 缺证书 | 前面加 Nginx/Caddy 反代,Caddy 自动签发证书最省心 |

| 上传大文件失败 | 默认 3MB 限制 | 在 `app.ini` 里把 `MAX_SIZE` 调到 100MB 并重启 |

进阶:定时镜像 GitHub 仓库

# 在 Gitea 新建仓库时选"迁移",粘贴 GitHub 仓库地址
# 再在仓库设置里开启"镜像同步",GitHub 上的更新就会定时自动拉过来

这样即使 GitHub 再宕机,你的代码照样能拉、能发版。镜像功能对小团队尤其友好:代码主库留在 Gitea,GitHub 只当”展示橱窗”——既能享受自托管的稳定,又不丢掉 GitHub 的开源曝光。

安全与备份提醒

自托管最忌讳”建完就忘”。建议三件事:第一,开启两步验证(Gitea 设置里直接支持 TOTP);第二,定期备份数据目录,一行命令就能打包:

tar czf gitea-backup-$(date +%F).tar.gz ./gitea
# 把生成的 tar 包上传到对象存储或另一台机器

第三,别把 Gitea 直接暴露在公网 22 端口——用密钥登录 + fail2ban,或者干脆走 Tailscale 内网访问,安全性和便利性兼得。

适合谁

– 被 GitHub 宕机/限速坑过、想要”代码主权”的开发者;

– 小团队想省钱省事、不想被 SaaS 平台绑架;

– 学习 Git 和自托管想练手的同学(本教程全程免费)。

别忘了:自托管意味着你自己要负责备份——定期把 `./gitea` 目录打包存到对象存储,别让”自建”变成”单点故障”。

一句话总结:GitHub 一年宕机 257 次,与其干等,不如 3 步用 Gitea 把代码托管搬回自己家。教程免费、步骤可复制,今晚就能跑起来。

👇 关注LC智趣厅,每周一篇可落地的小白教程。


— END —
LC 智趣厅 · 科技与生活的交点
ihygg.cn

Scroll to Top
微信公众号:LC智趣厅

扫码关注微信公众号
LC智趣厅