开发者生态
morning
我的服务器现在是电话
摘要
For a while, my personal infrastructure lived on a small Hetzner VPS. It ran a few web apps, a remote browser called Surf , Caddy, and the usual supporting cast. Nothing particularly serious. It worke...
the
and
that
for
personal
apps
Surf
The
make
server
2026-08-09
1 阅读
约6分钟阅读
seg6
字号:
有一段时间,我的个人基础设施依赖于小型 Hetzner VPS。它运行一些网络应用程序、一个名为 Surf、Caddy 的远程浏览器以及通常的支持演员。没有什么特别严重的事情。它有效,我只是不喜欢为此付费。我运行的应用程序之一 Surf 使这种妥协难以被忽视。最便宜的共享机器还可以,直到 Chrome 有真正的工作要做,此时他们感到饥饿。专用 CPU 机器可以解决这个问题,但每个月的成本足以让个人浏览器感觉像是一项值得怀疑的财务承诺。购买另一台机器也不是一个有吸引力的逃生口。 DRAM 价格已经变得完全愚蠢,因此组装一个具有足够内存量的新盒子感觉特别不合时宜。我查看了二手迷你电脑,并短暂考虑过在不使用台式机时将其变成服务器。然后我想起了我已经拥有的 CMF Phone 1。八个 ARM 内核、8 GB RAM、128 GB 闪存、Wi-Fi 6、一个 5G 调制解调器和一个内置备用电池,所有这些都连接到 SoC,我觉得它太适合放在抽屉里了。而且我已经付过钱了。掸去灰尘并把玩了一段时间后,我决定把手机变成服务器。如今,它运行 Surf 及其托管 Chrome 实例、我的个人财务跟踪器、屏幕共享服务以及一些较小的网络应用程序。它们可以在重新启动后存活下来,从 Git 进行部署,并且当手机在网络之间移动时仍然可以访问,因此现在这台机器实际上取代了 VPS。第一个坏主意:替换 android 这个想法最干净的版本似乎是刷新一个普通的 Linux 发行版。 CMF Phone 1 有一个 postmarketOS 设备端口,它会启动,设备页面上有足够多的绿色框,足以让鲁莽的人乐观起来。我最终成为了那个人。我不太关注的是所有被标记为损坏的东西:Wi-Fi、蓝牙、硬件加速以及大多数其他使手机用作小型服务器的东西。我得到了 postmarketOS 启动画面和黑色显示屏。那时我既没有服务器也没有电话。恢复Nothing OS库存变成了它自己的支线任务。刷机实用程序需要 Windows,因此我在 QEMU 中安装了 Windows,与 USB 直通和 MediaTek 驱动程序进行了斗争,看着刷机工具挂起,然后最终将该过程转移到实际的 Windows 安装中并恢复了出厂映像。中间有一瞬间,手机软了,只显示黑屏,我真的以为我已经把一个完美的设备变成了镇纸。它回来了,并吸取了教训:Android 已经为该硬件的每个部分提供了可用的驱动程序。 Wi-Fi、电源管理、电池、GPU、调制解调器以及每一个奇怪的供应商细节都已经可以工作了。为了追求更传统的用户空间而抛弃所有这些是错误的做法。我实际上并不需要让手机成为一台普通的 Linux 机器。我需要它可靠地运行 Linux 应用程序,同时 Android 继续执行它擅长的硬件特定工作。 termux 是主机操作系统第二次尝试保留了原生 Android 并将 Termux 视为主机环境。 Termux 为我提供了 OpenSSH、runit、Caddy、Cloudflared、包管理和足够普通的 Unix 工具。 Termux:Boot 在重新启动后启动 Supervisor 和 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 内核,上面有一个非常强大的用户空间,事实证明这已经足够了。第二个b
这篇文章对您有帮助吗?
订阅66必读
每日精选科技资讯,直达你的邮箱