# My server is a phone now

> 来源：[HackerNews](https://seg6.space/posts/phone-server/)

# 我的服务器现在是一部手机

> 原文链接：[My server is a phone now](https://seg6.space/posts/phone-server/)，来源：HackerNews

## 背景与概述

“我的服务器现在是一部手机。”这句话听起来像句玩笑，但在 HackerNews 上却引发了不少讨论。作者把一台淘汰的旧手机改造成了 24 小时在线的个人服务器，用来跑 Web 服务、文件同步、内网穿透等常见任务。这种玩法并不新鲜，但随着手机性能越来越强、功耗越来越低，它变得越来越有现实意义。

对普通开发者来说，家庭服务器通常有几个选择：树莓派、NAS、迷你主机或云主机。旧手机其实具备很多独特优势：SoC 性能往往不输树莓派，内存动辄 4GB、6GB 甚至更大；自带电池，相当于免费 UPS；集成了 Wi-Fi、蓝牙和移动网络，联网方式灵活；最重要的是，很多人家里都躺着几部吃灰的旧手机，成本几乎为零。

当然，用手机当服务器也有不少天生的限制：Android 系统倾向于杀后台、没有完整的 systemd 初始化、存储和散热条件有限、外网访问通常需要内网穿透。本文将结合这篇文章的思路，聊聊如何把一部手机改造成可用的 Linux 服务器，以及其中需要注意的技术细节。

## 核心内容

### 1. 旧手机为什么能当服务器？

一部三年前的中高端手机，通常搭载的是 ARM64 处理器、6GB 以上内存和 128GB 以上的 UFS 闪存。这样的配置跑几个 Docker 容器或者 Node.js 服务完全没问题。相比树莓派，手机还多了一块电池，可以在停电时继续工作，对于个人 DNS、家庭自动化、消息推送等场景非常友好。

### 2. 软件环境：Termux 是入门首选

在 Android 上跑 Linux 服务，最省心的方案是 [Termux](https://termux.dev/)，它是一个无需 root 的 Android 终端模拟器和 Linux 环境，内置了 `apt` 风格的包管理器 `pkg`，可以直接安装 Python、Node.js、Nginx、OpenSSH 等工具。

```bash
# 安装常用工具
pkg update
pkg install openssh python nodejs nginx
```

如果你需要更接近完整 Linux 的体验，可以使用 `proot-distro` 安装 Debian 或 Ubuntu：

```bash
pkg install proot-distro
proot-distro install debian
proot-distro login debian
```

### 3. 部署哪些服务比较合适？

作者提到在手机上跑了 SSH、Web 服务、文件同步等。适合手机服务器的场景通常是轻量级、低并发的：

- **个人博客/静态站点**：用 Nginx 或 Caddy 托管。
- **文件同步**：Syncthing、rsync、WebDAV。
- **下载器**：Aria2、qBittorrent Web UI。
- **API 网关/爬虫脚本**：Python + Flask/FastAPI，配合定时任务。
- **智能家居中枢**：Home Assistant。

### 4. 外网访问：比树莓派更麻烦

手机大多处于移动网络或家庭宽带的 NAT 后面，没有公网 IP。常用的解决思路有：

- **内网穿透工具**：frp、ngrok、nps。
- **Mesh VPN**：Tailscale、ZeroTier、Headscale，把多台设备组成虚拟局域网。
- **Cloudflare Tunnel**：让公网流量通过加密隧道进入本地服务，无需开放端口。

```bash
# 用 Cloudflare Tunnel 暴露本地 8080 端口
cloudflared tunnel --url http://localhost:8080
```

### 5. 稳定性与维护

Android 会为了省电主动杀死后台进程，因此需要做一些保活配置：

- 在系统设置里关闭 Termux 的电池优化。
- 使用 `termux-wake-lock` 防止 CPU 休眠。
- 安装 Termux:Boot，让服务开机自启。
- 长期插电运行，注意电池健康和散热。

## 技术分析

从系统架构来看，手机跑 Linux 服务主要有两条路径：

**路径一：非 root，基于 Termux 用户态。** 这种方式最简单，Termux 提供自己的 libc 和包仓库，运行在 Android 的 Linux 内核之上，通过 `proot` 可以模拟 chroot 环境。缺点是无法使用真正的 root 权限、systemd 和部分底层硬件接口。

**路径二：刷机或 root，运行完整 Linux。** 例如刷入 PostmarketOS、Ubuntu Touch，或者用 Linux Deploy、chroot 容器。这样可以获得更接近传统 Linux 服务器的体验，包括完整的 init 系统和 systemd，但门槛和兼容性风险也更高。

在网络层面，手机通常没有固定公网 IP，且移动网络运营商可能对端口做限制。因此这类项目更适合作为“边缘节点”而不是“中心服务器”。安全方面