
Мій сервер тепер телефон: як розкороблений CMF Phone 1 замінив VPS
Ентузіаст self-hosting замінив невеликий VPS у Hetzner на розкороблений CMF Phone 1: Termux, Debian у chroot і Cloudflare Tunnel — з усіма компромісами, які це передбачає.
Ентузіаст self-hosting замінив невеликий VPS у Hetzner телефоном, що лежав без діла в шухляді. У докладному дописі автор розповідає, як розкоробив CMF Phone 1 і перетворив його на машину, що тепер виконує роль його особистої інфраструктури: віддалений браузер, трекер фінансів, сервіс спільного доступу до екрана та кілька менших вебзастосунків.
Чому телефон
Міграція почалася з проблеми витрат. VPS був дешевий, але не витримував навантаження, коли Chrome, який використовує проєкт віддаленого браузера Surf, отримував справжню роботу; машини з виділеним CPU це вирішували, але коштували занадто дорого для персонального браузера. Складати новий комп'ютер було недоречно, бо ціни на DRAM високі. А телефон під рукою має вісім ядер ARM, 8 ГБ оперативної пам'яті, 128 ГБ флешпам'яті, Wi-Fi 6, 5G-модем і вбудований акумулятор, що працює як маленький UPS.
Від postmarketOS до Termux
Перша спроба — прошити postmarketOS — закінчилася splash-екраном і чорним дисплеєм: Wi-Fi, Bluetooth та апаратне прискорення позначені як неробочі. Відновлення стокової Nothing OS вимагало Windows-утиліти прошивки; у якийсь момент телефон виглядав soft-brick-нутим. Урок: в Android уже є робочі драйвери для всієї апаратури. Друга спроба зберегла стоковий Android, а середовищем-хостом став Termux: OpenSSH, runit, Caddy, Cloudflared і Tailscale, а також Termux:Boot, що запускає сервіси після перезавантаження. Керований через Ansible Android-профіль встановлює wake lock, вимикає light і deep idle, виключає потрібні застосунки з фонових обмежень і тримає Wi-Fi та постійний Tailscale VPN увімкненими.
proot, а потім справжній chroot
Застосунки, що постачалися як Linux ARM64 OCI-образи, спершу працювали під proot-distro — він не потребує ні root, ні спеціального ядра, але перехоплює файлові та процесні операції в просторі користувача. Чутливе до затримок навантаження браузера не могло так ефективно дістатися CPU, тож автор розкоробив телефон і увійшов у ту саму файлову систему Debian справжнім chroot. Образи закріплені за digest, Ansible перевіряє та встановлює їх; допоміжний root-процес створює приватний mount namespace і знижує привілеї. Ні Docker, ні компілятора на телефоні немає.
Вхідний трафік, роумінг і результат
HTTP-сервіси виведені через Cloudflare Tunnel — з'єднання лише вихідне, тож маршрутизатор не потребує вхідних правил, а при перенесенні телефона в іншу мережу тунель просто перепідключається. Віддалений браузер Surf, який сам завершує TLS і до якого прив'язаний старий iPad, для проходження тунелю загортає TLS-потік у звичайний WebSocket; за вимірами автора, це додає приблизно один мережевий round trip, а з'єднання iPad становило близько 60 мс. Вбудований сервіс дашборду показує CPU, пам'ять, диск і акумулятор за адресою dash.cmf у LAN або tailnet. Висновок автора: для кількох особистих сервісів це цілком розумно, якщо у вас є розкороблюваний ARM64-телефон — але не для незамінних даних без автоматичних позапристроєвих резервних копій.
SiTech — веброзробка з підтримкою AI
Створюємо швидкі та сучасні сайти й інтегруємо AI у бізнес-процеси. Маєте проєкт чи запитання? Із задоволенням допоможемо.