返回

文章详情

我的服务器现在是手机

Hacker News2026年8月8日 22:49

一段时间以来,我的个人基础设施托管在一台小型 Hetzner VPS 上。它运行着几个网络应用程序,一个名为 Surf 的远程浏览器、Caddy 和通常的支持工具。没有什么特别严肃的。它工作得很好,只是我不喜欢为此付费。我运行的一个应用程序 Surf 让这个妥协变得难以忽视。最便宜的共享机器在 Chrome 有实际工作需要时效果很好,但这时它们感觉像是被饿死了。专用 CPU 机器解决了这个问题,但每月的费用足够高,使得个人浏览器看起来像是一个值得怀疑的财务承诺。购买另一台机器也不是一个吸引人的解决办法。DRAM 价格已经完全愚蠢,所以组装一台具有适量内存的新机器感觉特别不合时宜。我查看了二手迷你电脑,并短暂考虑过在不使用时将我的桌面电脑转化为服务器。然后我想到了我已经拥有的 CMF Phone 1。八个 ARM 核心,8 GB 内存,128 GB 闪存,Wi-Fi 6,一台 5G 调制解调器,以及一个内置的电池备份,这一切都连接到我觉得过于合格以至于只是在抽屉中闲置的 SoC 上。而且我已经为此付过钱。擦去灰尘并玩了一会儿之后,我决定把这部手机变成服务器。今天,它运行着 Surf 及其管理的 Chrome 实例、我的个人财务跟踪器、一个屏幕共享服务,以及一些较小的网络应用程序。它们可以在重启后存活,能够从 Git 部署,并在手机在网络之间移动时保持可达,因此这现在是实际替代 VPS 的机器。第一个坏主意:替换安卓这个想法最干净的版本似乎是闪存一个常规的 Linux 发行版。CMF Phone 1 有一个 postmarketOS 设备端口,它能够启动,并且设备页面上有足够多的绿色框框让一个鲁莽的人感到乐观。我最终成为了那个鲁莽的人。让我注意力不足的,是所有被标记为故障的东西:Wi-Fi、蓝牙、硬件加速,以及大多数其他让手机作为小服务器有用的东西。我走到了 postmarketOS 启动画面和一个黑屏的地步。在那时,我既没有服务器,也没有电话。恢复 stock Nothing OS 变成了一个独立的侧任务。闪存工具需要 Windows,因此我在 QEMU 中安装了 Windows,解决 USB 直通和 MediaTek 驱动的问题,看着闪存工具卡住,然后最终将过程转移到一个实际的 Windows 安装并恢复了出厂镜像。在此过程中的某一时刻,手机软砖了,只显示一个黑屏,我真的以为我把一台完好无损的设备变成了书重。这台手机最终恢复了过来,教训是:安卓已经为这块硬件的每一个部分提供了有效的驱动程序。Wi-Fi、电源管理、电池、GPU、调制解调器,以及所有奇怪的厂商细节都已经正常工作。在追求更加常规的用户空间时抛弃这一切是错误的选择。我实际上并不需要这部手机变成一台普通的 Linux 机器。我只需要它能够可靠地运行 Linux 应用程序,同时 Android 继续做它擅长的硬件特定工作。termux 是宿主操作系统第二次尝试保留 stock Android,并将 Termux 视为宿主环境。Termux 给我提供 OpenSSH、runit、Caddy、Cloudflared、包管理和足够正常的 Unix 工具。Termux:Boot 在重启后启动监督者和 SSH。Tailscale 为手机提供了一个稳定的私人地址,因此从我 tailnet 上的任何机器上我只需运行:ssh cmf。Termux 不是虚拟机。它的进程仍然在 Android 的 Linux 内核上执行,但其基于 Bionic 的用户空间与普通的 Debian 安装有足够不同,以至于现有的 Linux 应用程序镜像不能简单地放入其中。然而,这种分割最终是有用的:Termux 可以保持小型的宿主控制平面,而每个应用程序则带入它所期望的 Linux 文件系统。实际服务由 runit 监管。Android 的电池管理在其正常工作中表现得非常好,而在假装成为服务器的设备中则表现得很糟糕,因此我还让我的 Ansible 构建施加了一个 Android 主机配置:它安装了一个持久的唤醒锁,禁用轻度和深度闲置,让 Termux、Termux:Boot 和 Tailscale 免于后台限制,禁用子进程限制,防止 Wi-Fi 休眠,并将 Tailscale 配置为始终开启的 VPN。恢复链比任何单个设置更重要。Android 启动,始终在线的 VPN 使 Tailscale 返回,Termux:Boot 启动 runit,runit 启动每个驻留服务,健康检查验证本地和公共路径。手机可以重启而无需等待我注意到。Android 启动 -> Tailscale 始终在线 VPN -> Termux:Boot -> runit -> 驻留服务 -> 本地和公共健康检查这不是一台常规的 Linux 服务器。没有 systemd,没有普通的 Docker 守护进程,没有理由假装其他。 但这是一台 Linux 内核,上面有一个非常强大的用户空间,而这恰好足够了。第二个...

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

请我喝杯咖啡