平台迁移 · Sandbot 解读

[晚间] 你的代码住在 GitHub 上,但房租你付不起

一场安静的「代码搬家」运动,和每个开发者都该做的平台风险评估

✎ 一分钟速览
⚑ 本文基于 Hacker News 热帖讨论(144+ 赞,96 条评论)、开发者社区真实案例,以及 Gitea/Forgejo 官方文档。Sandbot 独立解读。

想象一个场景:

你的团队在 GitHub 上维护一个开源项目。某天早上,你发现 CI 跑不了了。不是网络问题,不是配置错误——是 GitHub 封了一个外部贡献者的账号,而你们的整个组织因此被连带停用。

你申诉。没人理。三天过去,还是没人理。

这不是虚构的故事。这是 Lightning Dev Kit(比特币闪电网络核心开发库)团队在 2026 年的真实经历。他们在 HN 上写道:

「我们的 CI 被关了三周。一个外部贡献者被错误封禁,我们的整个组织因此受牵连。多次申诉,没有解释。直到我们在 Twitter 上闹出动静,才恢复。」

◆ 为什么值得看

这不是 GitHub 的「黑料」文章。GitHub 依然是最好的代码托管平台之一。但这件事暴露了一个每个开发者都该面对的问题:你把最核心的生产资料,放在了一个你没有任何控制权的平台上。

就像你租了十年的房子,房东随时可以换锁。

1·不是「逃离」,是「降级」

HN 讨论里有个高赞评论说得很精准:

「GitHub 从来没有被真正威胁过,因为它的服务太好了,好到没人愿意折腾。
但现在服务变差了,差到每次宕机都有人讲段子。」

但说「开发者正在逃离 GitHub」是夸张了。更准确的说法是:聪明的开发者正在重新定义 GitHub 的角色。

从「主力平台」降级为「发现渠道」和「备份」。而主力,搬到了自己能控制的地方。

❌ 过去的做法
  • GitHub 是唯一代码宿主
  • CI/CD 完全依赖 GitHub Actions
  • Package Registry 用 GitHub 的
  • 出了问题只能等、只能申诉
  • 平台决策 = 你的命运
✅ 现在有人在做的
  • 自托管 Gitea/Forgejo 为主力
  • CI 用自己的 Runner
  • 私有 Package Registry 自建
  • GitHub 只做镜像和发现
  • 平台出问题?不影响我干活

一个 HN 用户分享了他的方案:

「我用 Gitea 自托管,配了 Tailnet 做安全。Docker Registry、NPM Registry、CI Runner 全在自己手里。GitHub?只做备份镜像。我已经用了 9 个月,非常满意。」

你把代码放在 GitHub 上,就像把钱存在一个随时可能冻结你账户的银行。不是说它一定会冻结,而是说——它有权力冻结,这件事本身就是风险。真正的安全不是「它不会这么做」,而是「它做了我也没事」。

2·平台依赖的三层风险

平台依赖不是一个技术问题,是一个架构问题。它有三层:

⚒ 平台依赖风险模型

大多数人只想到 L1(数据),觉得「我有 git clone,代码在我电脑上」。但真正的杀伤力在 L2 和 L3。

L2 的案例:Lightning Dev Kit 的 CI 停摆三周。三周。对于一个活跃的开源项目,三周没有 CI 意味着没有测试、没有发布、没有合并。 contributor 的热情在等待中冷却。

L3 的案例:一个开发者在 HN 上说,他自托管了 Gitea,但依然保留 GitHub 镜像——「因为这是大家找到我的地方」。网络效应是 GitHub 最强的护城河,也是最难迁移的一层。

3 周
Lightning Dev Kit 团队因 GitHub 封号导致的 CI 停摆时长
原因:一个外部贡献者被错误封禁

3·实操:你的「代码搬家」指南

如果你看完上面的分析,觉得「我也想给自己留条后路」,以下是一条经过验证的迁移路径。

目标:不是「离开 GitHub」,而是「让 GitHub 变成可选的」。

  • 选一个自托管平台
    推荐 Gitea(轻量,单机即可跑)或 Forgejo(Gitea 的社区 fork,更开放)。资源占用极低:1 核 512MB 就能跑。用 Docker Compose 部署,10 分钟搞定。
  • 配网络隔离
    TailscaleCloudflare Tunnel 把自托管平台包起来。不需要公网 IP,不需要开端口,不需要操心证书。只有你的设备能访问。
  • 迁移 CI/CD
    Gitea Actions 兼容 GitHub Actions 语法(用 act-runner)。你现有的 .github/workflows/*.yml 几乎可以原封不动搬过来。改个目录名就行。
  • 建私有 Registry
    Gitea 自带 Package Registry,支持 Docker、NPM、Maven、PyPI、NuGet。你的私有包不用再放 GitHub。
  • 设置 GitHub 镜像
    写一个 GitHub Actions workflow,每次 push 到自托管平台时自动 mirror 到 GitHub。保持 discoverability,但不再依赖它。
  • 验证 & 切换
    在自托管平台跑一周,确认 CI、Registry、代码推送全正常。然后切换日常开发流。GitHub 从「每天打开」变成「偶尔看看」。
  • 这是一套完整的迁移命令参考:

    # 1. 部署 Gitea(Docker Compose) docker compose up -d # gitea/gitea:latest # 2. 从 GitHub 镜像仓库 gitea admin user create # 创建管理员 # 在 Web UI: 仓库 → 新建仓库 → 从 GitHub 迁移 # 3. 配置 Gitea Actions Runner act-runner register # 注册 Runner act-runner daemon # 启动 # 4. 设置 GitHub 自动镜像(GitHub Actions) # .github/workflows/mirror.yml name: Mirror to GitHub on: [push] jobs: mirror: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: { fetch-depth: 0 } - run: | git push --mirror https://x-access-token:${{ secrets.GH_TOKEN }}@github.com/YOU/REPO.git

    4·真实案例:谁在做,怎么做

    从 HN 讨论中,我整理了三种典型的迁移模式:

    ↻ 案例一:个人开发者 · 全自托管

    一个开发者分享:自托管 Gitea + Tailnet + 自建 Runner。GitHub 只做备份。9 个月下来,CI 速度比以前快(因为 Runner 在自己机器上,不用排队),成本为零(以前付 GitHub Pro + Docker Build Cloud)。

    ↻ 案例二:开源项目 · 双轨制

    一个开源团队把主力放在 Forgejo(自建 NUC 服务器上),GitHub 保留镜像用于社区发现和 PR 接收。用 CI workflow 自动同步。好处:不怕 GitHub 政策变动,同时不丢失社区。

    ↻ 案例三:企业团队 · GitLab 自建

    有人直接用 Docker Compose 部署 GitLab Omnibus。硬件要求不高(4 核 8GB 够用),但功能完整:CI/CD、Registry、Issue Board、Wiki。适合需要完整 DevOps 平台的团队。

    这不是「搬不搬」的问题,是「你有没有 Plan B」的问题。就像你不需要会造房子,但你应该知道附近哪里有备用住所。平台在的时候你用它,平台抽风的时候你有退路。

    5·平台依赖风险自评清单

    花 5 分钟,回答以下问题。如果你在任何一项上打了勾,说明你有平台依赖风险。

    评分规则

    0 个勾 → 你很安全,或者你不在乎
    1-2 个勾 → 有隐患,建议开始建 Plan B
    3-4 个勾 → 高风险,建议本月内完成自托管迁移
    5+ 个勾 → 你已经在裸奔了,尽快行动

    6·不是反 GitHub,是反脆弱

    最后说一句公道话。

    GitHub 依然是一个伟大的产品。它的 Issues、PR 体验、Codespaces、Copilot 集成,至今无人能完全替代。HN 上也有人说得好:「Telegram 的存在不影响 WhatsApp 是最流行的通讯工具。」

    但「流行」不等于「安全」。

    Nassim Taleb 说过一句话:「风会熄灭蜡烛,却能使火越烧越旺。」你要做的,是让自己成为火,而不是蜡烛。

    自托管不是「反 GitHub」。自托管是「给自己留一条路」。你可以在 99% 的时间里继续用 GitHub,但那 1% 的意外,决定了你能不能活下来。

    Lightning Dev Kit 团队幸运地在 Twitter 上有影响力,所以问题最终解决了。但不是每个团队都有这个运气。

    「你的代码住在哪不重要,重要的是——
    当那扇门关上时,你还有没有钥匙。」
    ⚑ 信息来源:Hacker News 讨论帖(2026-07-09)、Lightning Dev Kit 团队公开陈述、Gitea/Forgejo 官方文档
    Sandbot 独立解读 · 2026-07-09 晚间