Android手机上部署Linux服务器 在Termux里安装Ubuntu 说明本教程说明了如何在Adroid手机上安装TermuxApp并部署Ubuntu系统说明了如何直接在Termux内安装ssh服务推荐后来补充的这种方法避免和开机用手机输入大量命令行以及在ubuntu内安装ssh服务并提供了ubuntu内安装docker的基本步骤和ollama部署轻量大模型用于学习参考在实际操作中doker功能的实现存在限制参考为主。安装Termux App开源项目地址https://github.com/termux/termux-app下载地址直接下载termux不要下载成了f-droidhttps://f-droid.org/en/packages/com.termux/安装Ubuntu在 Termux 里安装 Ubuntu标准且推荐的方法是通过proot-distro工具。整个过程不需要 Root 权限跟着下面的步骤操作即可。 准备工作确保 Termux 是从F-Droid下载的Google Play 版本已废弃手机剩余存储空间建议在4GB 以上。 安装步骤1. 更新 Termux 包列表pkg updatepkg upgrade-y过程中如果提示配置文件冲突直接按回车或输入N即可。2. 安装 proot-distropkginstallproot-distro-y3. 安装 Ubuntuproot-distroinstallubuntu这会下载 Ubuntu 24.04 LTS 的 rootfs 文件大小约 200-400MB耐心等待完成。4. 登录 Ubuntu 环境proot-distro login ubuntu看到命令提示符变成rootlocalhost:~#就说明成功了。5. 初始化 Ubuntu在 Ubuntu 环境内执行aptupdateaptupgrade-yaptinstallsudonano-y 日常使用以后每次打开 Termux 想进入 Ubuntu只需执行proot-distro login ubuntu如果希望打开 Termux 自动进入 Ubuntu可以把这条命令追加到~/.bashrc文件中。 小提示proot 环境不支持 systemd所以像systemctl这类命令用不了。需要后台运行服务时可以直接用nohup或来启动进程。安装Open SSH服务(直接在Termux内安装推荐)该步骤完成后直接支持远程登录省去了在手机上输入命令的麻烦⚠️ Termux 的 sshd默认端口是 8022不是标准22端口1. 更新包并安装 opensshpkg updatepkg upgrade-ypkginstallopenssh-y2. 设置登录密码必须passwd输入两次密码这就是远程SSH登录的密码。3. 查看登录用户名whoami输出类似u0_a147这个就是ssh登录账号。4. 查看手机局域网IP电脑同WiFi连接ipa找到wlan0下的inet例如192.168.1.100。5. 启动 sshd 服务sshd如果报错no hostkeys available先生成主机密钥ssh-keygen-Asshd停止ssh服务pkillsshd6. 电脑端连接Windows PowerShell / Linux / Macsshu0_a147192.168.1.100-p8022替换用户名、IP端口固定8022输入刚才设置的密码即可登录。7. 可选配置开机自动启动 sshd打开Termux就启动echosshd~/.bashrc公钥免密登录推荐更安全电脑端生成密钥后把公钥写入Termuxmkdir-p~/.ssh# 将电脑id_rsa.pub内容追加到下面文件echo你的公钥内容~/.ssh/authorized_keyschmod700~/.sshchmod600~/.ssh/authorized_keys然后修改$PREFIX/etc/ssh/sshd_config关闭密码登录PasswordAuthentication no改完重启pkill sshd sshd常见坑连不上电脑和手机必须同一个局域网手机省电策略会杀掉Termux后台需要关闭电池优化、后台限制。端口不能改22Android不允许普通进程监听1024以下端口。外网访问局域网只能内网连接外网需要端口映射/ngrok等内网穿透。连接被拒绝确认sshd已经运行ps aux | grep sshd。安全提醒不要把密码登录暴露到公网优先使用密钥认证。Termux后台被杀是安卓机制长时间运行建议把Termux加入后台白名单。安装Open SSH服务(ubuntu内)该步骤完成后支持远程直接登陆ubuntu前提是已经在手机终端的Termux里进入了ubuntu系统。要让外部设备远程直接登录你 Termux 里的 Ubuntu需要在 Ubuntu 内部单独装一个 SSH 服务并换一个和 Termux 自带的 SSH 不冲突的端口。️ 操作步骤在 Ubuntu 环境内也就是你现在所在的rootlocalhost:~#提示符下执行以下操作安装 OpenSSH 服务端aptupdateaptinstall-yopenssh-server生成主机密钥必须执行ssh-keygen-A设置 root 密码用于远程登录passwd输入并确认一个新密码。修改 SSH 配置换到新端口nano/etc/ssh/sshd_config找到Port那一行如果被注释了就去掉#把它改成2222或者任何其他不冲突的端口比如 10022。不要用 8022因为那是 Termux 自己用的。启动 SSH 服务/usr/sbin/sshd注意Ubuntu 里不能用service ssh start或systemctl直接用这个绝对路径启动即可。保持 Termux 会话不要关闭sshd是作为当前 proot 会话的子进程运行的一旦你退出这个 Termux 会话它就会被终止。 从电脑连接测试现在在你的电脑上确保和手机在同一个 Wi-Fi 下执行ssh-p2222root手机IP手机 IP 可以在 Termux不是在 Ubuntu 里用ifconfig或ip addr查看通常是以192.168.开头的那一串。如果连接被拒绝先检查sshd是否在运行在 Ubuntu 里执行ss -tln | grep 2222看看端口有没有在监听。到此你可以远程登录手机上的ubuntu系统了远程登录时拒绝密码登录解决方案这个错误在 Termux Ubuntu 的环境里很常见主要原因是Ubuntu 的 SSH 服务默认禁止 root 用户直接登录或者密码认证方式没打开。核心原因Ubuntu 默认不允许 root 密码登录你的 Termux Ubuntu 里你用的账号是root。大多数 Linux 发行版的 SSH 服务出于安全考虑默认不允许 root 用户通过密码远程登录。所以即使密码输对了服务器也会直接拒绝。解决方法修改 SSH 配置在手机上的 Ubuntu 环境里操作也就是你现在rootlocalhost:~#的那个窗口1. 编辑 SSH 配置文件nano/etc/ssh/sshd_config2. 找到并修改以下两行如果行首有#去掉它。确保最终是这两个值PermitRootLogin yes PasswordAuthentication yesPermitRootLogin yes明确允许 root 用户登录。PasswordAuthentication yes确保允许用密码认证而不是只认密钥。3. 额外检查一项Termux 环境特有在同一文件里找到UsePAM把它改成noUsePAM no因为 Termux 的 proot 容器里没有完整的 PAM 环境开着它可能导致 sshd 启动失败或认证异常。4. 保存退出按CtrlO保存回车确认再按CtrlX退出。5. 重启 SSH 服务先杀掉旧的 sshd 进程再重新启动pkillsshd /usr/sbin/sshd注意Ubuntu 里不能用systemctl restart sshd那在 proot 环境里无效。如果还是不行检查这几点确认 Xshell 里填的端口必须是你设置的2222或你改的其他端口不是默认的 22。确认密码已设置在 Ubuntu 里执行passwd root重新设一次输入时屏幕不显示字符是正常的。确认 IP 正确在 Termux不是 Ubuntu里执行ifconfig确认手机 Wi-Fi 的 IP 地址。确认 Termux 会话没关sshd是依附在当前 Termux 会话上的Termux 关掉服务就停了。安装Dockerubuntu里不能直接装Docker需要在Termux里装核心思路是在 Termux 主机而非 proot Ubuntu 内部运行udockerd让 proot Ubuntu 里的docker客户端通过网络连接到它。这样绕过了 proot 无法运行 Docker 守护进程的限制。 架构原理udockerd是一个用 Python 写的 Docker Engine API 兼容守护进程底层由udocker驱动无需 root、namespaces 或 cgroups。它运行在Termux 主机上监听一个 TCP 端口默认 2375。然后你的 proot Ubuntu 里的docker客户端通过设置DOCKER_HOSTtcp://127.0.0.1:2375就能和它通信。 操作步骤第一步在 Termux 主机不是 proot 内安装 udockerd打开 Termux就是你平时打开的那个终端不要用proot-distro login ubuntu进去执行# 安装 Python 和必要依赖pkg updatepkg upgrade pkginstallpython python-pipcurltar# 安装 udockerdpipinstalludockerdudockerd 需要 Python 3.12 和 curl/tar。安装完成后udockerd命令应该就可以用了。第二步启动 udockerd 守护进程在 Termux 主机上让它后台运行# 后台启动 udockerd监听默认的 127.0.0.1:2375nohupudockerd~/udockerd.log21如果想让日志更详细便于排查可以加-vnohupudockerd-v~/udockerd.log21udockerd首次运行时udocker会自动下载它需要的 proot/fakechroot 执行后端可能需要一点时间。验证是否启动成功psaux|grepudockerd# 或者看端口是否在监听netstat-tlnp2/dev/null|grep2375第三步进入 proot Ubuntu配置 DOCKER_HOST现在进入你的 Ubuntu 环境proot-distro login ubuntu在里面设置环境变量指向 Termux 主机上运行的 udockerdexportDOCKER_HOSTtcp://127.0.0.1:2375为了让这个设置永久生效可以写入~/.bashrcechoexport DOCKER_HOSTtcp://127.0.0.1:2375~/.bashrcsource~/.bashrc注意127.0.0.1在这里是可行的因为 proot 环境共享 Termux 主机的网络命名空间localhost 是互通的。第四步测试 docker 命令dockerps# 应该不再报 socket 错误而是显示空列表dockerpull alpinedockerrun--rmalpineechohello⚠️ 重要限制使用 udockerd 时有几个明确的边界需要知道docker build 仅支持经典构建器如果你的 Docker CLI 默认使用 BuildKit需要设置export DOCKER_BUILDKIT0才能正常 build。无进程隔离udocker 的容器和 Termux 主机共享 PID namespace不是真正的隔离环境只适合单租户场景也就是你自己用。无 docker composeudockerd 不直接支持 docker compose如果需要编排多个容器只能手动用脚本管理。仅限 Linuxudockerd 依赖 proot只能在 Linux 内核上运行。 后续建议udockerd 启动后终端关闭它可能会被终止。如果想让它长期稳定运行可以考虑结合termux-wake-lock防止 Termux 被系统休眠或者用nohup 后台方式确保进程存活。如果你后续想跑一些实际的镜像比如 Home Assistant、Jellyfin、Nextcloud 等社区有现成的 Termux-Udocker 脚本可以参考能省去手动配置端口映射和挂载的麻烦。ubuntu内部署轻量大模型学习在 Termux 的 Ubuntu 服务器中安装和运行轻量版大模型是完全可行的目前最主流的方式是通过Ollama来部署。 怎么装用 Ollama 跑轻量模型环境准备确保 Termux 中已通过proot-distro安装并登录了 Ubuntu。安装 Ollama在 Ubuntu 环境中执行一键安装命令curl-fsSLhttps://ollama.com/install.sh|sh启动服务运行ollama serve或让它后台运行。后台运行命令nohupollama serveollama.log21# 查看进程是否启动psaux|grepollama拉取并运行轻量模型推荐从参数量最小的模型开始尝试例如ollama run qwen2.5:0.5b其他适合手机端的轻量选择还包括deepseek-r1:1.5b、llama3.2:1b、tinyllama:1.1b等。 实际性能参考在手机上运行大模型性能主要取决于手机的芯片和内存。根据实测数据不同设备的体验差异较大旗舰机型 (如骁龙 8 Elite)运行Qwen 2.5 1.5B(Q4量化) 时生成速度可达38.4 tokens/秒体验比较流畅。中端机型 (如 Exynos 1380)运行Qwen 2.5 0.5B速度约21.5 tokens/秒但运行1.5B模型时速度会降至8.7 tokens/秒。旧款旗舰 (如骁龙 865)运行Qwen 2.5 1.5B速度约13.8 tokens/秒。⚠️ 需要注意的几点硬件门槛运行大模型对手机内存RAM和存储空间有要求建议预留充足空间。如果手机 RAM 较小建议优先尝试0.5B 或 1.5B级别的模型。发热与耗电推理过程会大量消耗算力可能导致手机发热和电量消耗加快建议在充电时或短时间使用。体验预期虽然能跑但速度通常无法与电脑相比。如果追求流畅体验3B 左右的模型可能是部分中高端手机的舒适上限。