从零写一个 Guix 服务:给 Caddy 做反向代理服务
来源: aloysberger.com — 2026-09-13
概述
正在把机器从 NixOS 迁移到 Guix 的作者,用一个 VPS 上的反向代理需求练手:Caddy 官方频道里没有现成服务,他决定从零写一个自定义 Guix 服务,并把摸索过程写成面向新手的教程。文章给出的路线图非常克制——先定义一个什么都不做的空服务并成功启用,再创建守护进程所需的用户与用户组,然后把 Caddy 配置拷到正确位置,最后配置 Shepherd 让它作为后台守护进程运行。作者借这个过程澄清服务的本质:服务是「扩展操作系统功能」的构件,可以是常驻进程,也可以是一次性的建账号、拷文件,或周期任务;它天生可扩展、可组合,一个服务可以扩展别的服务,也能被别的服务扩展。文中给出的最小版本大量硬编码、不适合分发,但足以工作,后续再重构。
核心要点
- 服务类型(service type)如同类与实例的关系,service 过程负责把服务类型实例化并启用。
- 典型服务的四步曲:建用户与用户组、落配置文件、用 Shepherd 拉起守护进程,家里的服务大多是这三件事的组合。
- 服务不只有常驻进程一种形态,它也可以是一次性的建账号/拷文件,或 cron 式周期任务,本质是用声明式方式配置系统。
- Guix 服务从设计上就可扩展、可组合:一个服务可以扩展多个服务,也可以被多个服务扩展。
金句
我们不想让完美妨碍完成。
👍 0
👎 0
返回 Lobsters 首页