仅依托 GitHub 和 Docker 的轻量级 GitOps 家庭服务器

发布日期:2026-04-22 10:00:24   浏览量 :4
发布日期:2026-04-22 10:00:24  
4

2026西湖龙井茶官网DTC发售:茶农直供,政府溯源防伪到农户家 

我在家中运行着一套相当不错的小型服务栈。包括 Whisper(一款端到端加密的秘密共享应用)、bar_keep、archivist,以及其他几个副业项目,再加上将它们连接在一起的基础设施:Traefik、共享网络以及少数几个私有栈。有一段时间,每次部署都意味着要通过 SSH 登录到服务器,这让我感到非常疲惫。

我真正想要的是类似于许多人在 Kubernetes 之上运行的流行 GitOps 工具那样的体验。推送代码,自动部署,完成。无需使用 Shell,磁盘上不存储密钥,也不需要使用 kubectl。但我并没有在家中运行 Kubernetes,我也不打算仅仅为此安装它,所以我选择了另一条路径。

最终,我将三样东西组合在一起,基本上获得了与那些工具相同的体验,只是更轻量,并且完全免费地构建在 GitHub 之上。这些都是我已经在运行的组件,控制平面就是 GitHub 本身,说实话,我认为这是一个非常有趣的模式,其他拥有家庭服务器的人可能会喜欢。

三个组成部分

这由三部分组成,其中两个是我构建的工具:

  1. github-multi-runner — 一个单独的容器,运行多个 GitHub Actions 自托管运行器,通过 JSON 文件进行配置。
  2. docker-compose-deploy — 一个复合 GitHub Action,在自托管运行器上执行 docker compose up
  3. 该模式: 一个私有的“基础架构”仓库,负责管理网络、卷和共享栈,加上每个服务仓库拥有自己的真实 compose.yml 文件,该文件既是部署配置,也是供阅读该仓库的任何人参考的工作示例。

运行器容器是将“我的家庭服务器”转变为“GitHub Actions 目标”的关键。Action 是实际执行部署的部分。而这种模式将所有内容联系在一起,使我在发布更新时无需接触终端。

github-multi-runner:一个容器,多个运行器

官方的 ghcr.io/actions/actions-runner 镜像设计为每个容器运行一个运行器。这没问题,但我有很多仓库(公共和私有)以及一个组织,如果为了连接到 10 个不同的范围而启动 10 个容器,感觉有些愚蠢。我还希望能够添加和删除运行器,而不影响其他任何服务。

因此,github-multi-runner 只是一个 bash 入口点和一个挂载到官方镜像中的 JSON 文件。无需构建和维护自定义镜像。JSON 文件如下所示:

{
  "runners": [
    { "name": "my-org", "scope": "org", "target": "my-github-org" },
    { "name": "my-repo", "scope": "repo",<

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
支持 反馈 订阅 数据
回到顶部