基础设施即代码迁移

我们刚刚将又一个我们的基础设施的关键部分迁移到完全自动化的设置:“源服务器”。源服务器 托管网站和 f-droid.org 存储库的所有公开文件。它也负责将更新推送到所有主镜像。所以可以说 源服务器 是我们业务的中心。Ciaran Gultnieks,F-Droid 项目的创始人,自从他十多年前搭建 源服务器 以来一直在安静尽职地维护它。为了这么多年的可靠服务,走过风风雨雨,F-Droid 用户和社区都欠他一份感激之情。

我们进行这次迁移的主要理由是为了提高我们的 “bus factor“。F-Droid 依赖贡献者保持运行,但没有单独一个人应该对任何基础设施的关键部分唯一负责。我们仍然是一个小团队,所以我们专注于将中央服务器迁移到“基础设施即代码”。具体来讲,整个中央网络和镜像设置现在在 F-Droid GitLab 组里的 Ansible 项目中维护。用代码管理服务器有几个关键优势:

  • 任何可以运行 Ansible 的人都可以轻易重建服务器。
  • 自动化服务配置使得创建高度详细,自定义的安全沙箱成为可能。
  • 临时实例使审计变得容易,任何可以访问代码的人都可以测试。

这大大提高了 “bus factor”。现在任何可以访问代码的人都可以重建一份我们的基础设施的副本, F-Droid 委员会控制域名,所以一旦遇到紧急情况,委员会可以将域名重定向到一个新的基础设施。因为 F-Driod 完全是自由软件,没有什么需要保密的东西,基本上,只有签名,加密和访问控制的密钥。这些密钥可以在需要的地方(例如镜像)重新生成并设置。f-droid.org 网站和存储库来自拉去很多公共源代码存储库以构建应用。

最后一项:签名服务器

还有最后一个生产服务器没有使用 Ansible 代码管理:签名服务器。我们确实计划最终也用代码管理那台机器。它的设置相当简单,所以将它转换到 Ansible 目前优先级不高。它需要一个带有从 Git 存储库安装的 fdroidserver 的基本 Debian 系统。我们已经将其他需要的工具,比如 apksigner 推送到 Debian 了,使它们得到维护并对所有人可用。如果你在寻找一个有趣的项目做出贡献,我们仍然需要一个 Ansible 项目以创建一个独立的签名服务器。之后我们就可以在其上迭代以创建一个非常坚固的设置。

基础设施即代码

这些是现在使用代码管理的关键服务器。它们尚未全部公开,我们想要在发布它们之前确保它们经过仔细的审查和审计(请告诉我们如果你想要贡献审计或渗透测试,我们可以设置一些东西)。

F-Droid 社区努力使其尽可能公开透明地服务它的用户。这是使 F-Droid 对所有信任我们提供你所需要的应用的你们这些人更负责任的一大步。