自托管实践:一台迷你主机运行 28 项服务

作者在文章《What I Self-Host, What I Don’t, and Why》中分享了自己的家庭自托管方案。他使用一台搭载 Intel N100 处理器、16GB 内存和 512GB SSD 的 Beelink S12 Pro 迷你主机,外接一块 6TB 硬盘,运行了 28 项自托管服务,涵盖影音娱乐、照片管理、智能家居、个人效率、开发工具和系统运维等领域。

这套系统目前使用约 7.5GB 内存,CPU 占用率在 30%~40% 之间。作者希望借此说明:自托管并不需要昂贵的服务器,一台普通迷你主机就能满足相当多的家庭需求。

一、完整服务清单

  1. 影音娱乐

    • Jellyfin:开源媒体服务器,管理电影、电视剧和家庭视频,替代 Netflix 等流媒体服务。
    • Audiobookshelf:有声书和播客管理、下载及播放。
    • Gonic:基于 Subsonic 协议的音乐服务器,支持手机远程听歌。
    • MPD:音乐播放服务,配合 Snapcast 实现全屋音频播放。
    • Snapcast:实现多个设备之间的音频同步播放,替代 Sonos 一类商业音响系统。
    • Automatic Ripping Machine(ARM):自动抓取和转码 DVD,方便将实体光盘转为数字媒体。
    • Transmission Daemon:BT 下载服务。
    • slskd:Soulseek 文件共享网络的服务端实现,用于音乐文件共享。
    • Yubal:下载 YouTube Music 播放列表,并自动整理音乐文件名称和标签。
  2. 照片、文件与数据管理

    • Immich:Google Photos 的开源替代品,管理和备份家庭照片、视频,支持相册分享。
    • Samba:提供局域网文件共享,方便不同设备访问服务器文件。
    • Syncthing:文件同步工具,用于将 Immich 中的照片单向同步到笔记本电脑及外接硬盘。
    • Readeck:网页文章收藏和归档工具,将阅读内容保存到自己的服务器,避免原始网页失效。
    • Actual Budget:个人财务管理工具,支持交易记录导入、分类和报表。
    • PocketBase:基于 SQLite 的轻量级后端,提供数据库管理和 Web CRUD 界面,用于管理家庭账目等数据。
  3. 智能家居与安防

    • Home Assistant:智能家居中枢,统一管理不同厂商的设备,并支持自动化控制。
    • Frigate:网络摄像头录像系统(NVR),支持人员、车辆等目标检测,作者接入了 8 个 IP 摄像头,并与 Home Assistant 联动。
  4. 开发与个人效率

    • Forgejo:轻量级 Git 仓库管理服务,作为 GitHub 的自托管替代品。
    • Vikunja:任务和项目管理工具,替代 Trello,默认使用 SQLite,适合小规模团队或家庭使用。
    • Vaultwarden:兼容 Bitwarden 客户端的密码管理服务,支持密码同步和自动填充。
  5. 系统管理与基础设施

    • Caddy:Web 服务器和反向代理,自动申请 Let's Encrypt HTTPS 证书,通过子域名访问内网服务。
    • Cockpit:Web 服务器管理控制台,用于查看系统状态和服务故障。
    • Homepage:自托管服务导航面板,集中展示所有服务的状态和访问入口。
    • Beszel:轻量级服务器监控工具,收集 CPU、内存、磁盘和温度等指标。
    • Uptime Kuma:服务可用性监控,支持 HTTP、TCP、Ping 等健康检查。
    • Gotify:统一消息通知服务,接收其他服务的故障告警和事件通知。
    • Backrest:Restic 备份工具的 Web 管理界面,负责备份策略、去重、压缩和保留周期管理。
    • FreshRSS:自托管 RSS 阅读器,用于订阅网站和软件更新。

二、作者的技术选型原则

作者并不追求所有服务都必须自托管,而是强调实用性和可维护性。

首先,尽量选择轻量级软件。 他尤其喜欢 Go 编写的单二进制程序,能够原生运行就不使用容器。对于依赖复杂的服务才采用 Podman,并通过 systemd 统一管理,不再使用 Docker。他认为,为一个简单服务引入 MySQL、Redis 以及多个容器,往往得不偿失。

其次,重视网络安全。 除了路由器上的 VPN 服务,他不将任何应用直接暴露到公网,所有服务只能通过局域网或 VPN 访问。作者认为,在 AI 辅助攻击能力不断增强的背景下,即使应用本身安全,也不值得冒险开放公网入口。

第三,控制资源和运维成本。 例如,Jellyfin 主要使用 720p 视频,摄像头也主动降低分辨率,减少视频处理、网络带宽和磁盘存储开销。他不使用 Sonarr、Radarr 等 *arr 自动化媒体管理套件,因为认为其资源消耗和维护复杂度偏高。

三、哪些服务不值得自托管?

作者也列出了尝试过但最终放弃,或者不打算部署的服务:

  • Sonarr、Radarr、Lidarr:媒体自动化管理套件,依赖复杂,维护成本较高。
  • Collabora Online:在线办公套件,认为本地 LibreOffice 加文件共享已经足够。
  • Firefly III:个人财务管理工具,部署复杂,最终选择更轻量的 Actual Budget。
  • OwnTracks:位置追踪工具,Android 后台定位不够稳定。
  • Music Assistant:音乐管理平台,与现有 MPD、Gonic、Snapcast 体系存在功能重叠。
  • 邮件服务:不打算自建邮件服务器,因为邮件收发的可靠性要求太高,维护成本与收益不成比例,未来更倾向于使用付费邮件服务。

四、总结

这篇文章最值得关注的不是部署了多少软件,而是作者对自托管的理解:自托管的目标不是消灭云服务,而是把真正重要的数据和服务控制权掌握在自己手中。

对于照片、家庭影音、密码、智能家居、个人文件等服务,自托管能够带来更好的隐私保护、数据掌控和长期稳定性;对于邮件、在线办公等高度依赖外部生态和服务可用性的业务,则没有必要强行自建。

一台 180 欧元左右的迷你主机就能承载如此丰富的服务。相比追求高性能硬件,选择轻量、低依赖、易维护的软件,建立可靠的备份和监控体系,才是长期自托管真正需要考虑的问题。

如果你有魔法,你可以看到一个评论框~