没钱续 vps,旧手机当服务器搭配 cf Tunnels 隧道,部署博客和网盘。发布公网。
创业负债。吃饭都是问题了,vps 之前一只白嫖别人的用。现在到期了快。
博客虽然没写什么东西,但好在是 hugo 的静态博客,纯 html 文件。直接白嫖 cloudflare pages 或 github pages 就行。
但还有 openlist 网盘没地方部署了。还有几个 docker 服务。翻了翻网上也没什么免费的 docker 托管。
想到之前写过一篇旧手机用 termux 安装 linux 容器当服务器用的教程。
搭配 cloudflare Tunnels 隧道,可以把内网的服务发布到公网。
cloudflare 真是互联网大善人。
所以可以这样搞:
- 开机 -> Termux:Boot 自启 termux 软件。
- Termux 启动 -> 拉起 SSH -> 安装 Tmux 拉起 Debian。
- Debian 启动 -> 拉起 SSH -> 拉起 Cloudflared 启动 cf tunnels 隧道 -> 拉起 openlist 或其他服务。
注:
其实 Cloudflared 和 openlist 都可以直接装在 termux 宿主机里,没必要再装个 debian 容器。 只是我习惯用 termux 安装 debian,在 debian 里再装 openlist 等服务。所以下面的例子是以此为例的。你随你喜欢就好。两者无差别。不会了可以问 ai。
旧手机安装 linux 容器
看这篇
安装完 linux 容器后
配置 cloudflare Tunnels 隧道
安装 cloudflared 新建隧道的时候有安装部骤,照着安装就行。
记的配置 cloudflare tunels 隧道自启。在下面。
你可以通过以下命令来管理它
- 查看运行状态:
service cloudflared status - 停止隧道:
service cloudflared stop - 启动隧道:
service cloudflared start - 重启隧道(改了配置后常用):
service cloudflared restart
以 openlist 网盘为例
安装 openlist 网盘程序。
https://doc.oplist.org/guide/installation/manual
安装后因为手机的 linux 容器没有 systemd 不能以平常 vps 配置自启和后台运行。
后台运行有几种方案。screen 和 tmux
- 我习惯用
screen
# 安装 screen
apt install screen
# 运行服务时前面加上 screen 就行,测试下
# openlist 网盘运行命令就是
screen ./openlist server
以下是 screen 的常用指令汇总:
- 会话管理(在普通终端输入)
- 新建会话:
screen -S <名称>,创建一个指定名称的会话。 - 列出所有会话:
screen -ls或screen -list。 - 恢复/重新连接会话:
screen -r <名称或PID>。 - 强制离线并重连:
screen -d -r <名称>,如果会话显示为 “Attached”,此命令可强制让其在别处离线并在当前窗口恢复。 - 清除死掉的会话:
screen -wipe,用于清除那些已经停止但仍显示在列表中的会话。 - 彻底关闭会话:在会话中输入
exit或使用screen -X -S <名称> quit。
-
常用快捷键(在 screen 会话中使用)
所有快捷键都需要先按
Ctrl + a(前缀键)作为开头。
- 退出并保持后台运行 (Detach):
Ctrl + a,d。 - 新建窗口:
Ctrl + a,c。 - 查看窗口列表:
Ctrl + a,w
配置自启
虽然用 termux 安装了 debian 容器。但每次软件退出或手机重启后,要连接 termux 的 ssh 和启动 debian 容器都要手动启动。
在 Termux 中,由于它没有标准的 systemd 守护进程,systemctl 命令无法使用。
大体流程:
- 开机 -> Termux:Boot 自启 termux 软件。
- Termux 启动 -> 拉起 SSH -> 安装 Tmux 拉起 Debian。
- Debian 启动 -> 拉起 SSH -> 拉起其他服务。
开机自启 termux 软件
- 开机自启 termux 软件,用 Termux:Boot:https://wiki.termux.com/wiki/Termux:Boot
termux 自启 ssh 或其他服务。
两种配置自启方案
- Termux-services 方案。我没试过,可以参考:https://ivonblog.com/posts/termux-services/
- 这里以自启服务写在
~/.bashrc为例。要杀掉行程再用kill指令停止。
-
termux 的 ssh 服务自启。
# 编辑启动脚本 vim ~/.bashrc # 在文件的最末尾添加以下内容: pgrep -x sshd >/dev/null || sshd -
termux 自启 debian 容器。
其实只要填加
sudo bash debian命令就行。但这样每次打开 termux 就自动进入 debian 了。我是想打开 termux 后,后台自启 debian 不需要在前台运行。
这里就需要用
tmux或者screen软件。这里用tmux这个软件。# 安装 Tmux 在 Termux 中执行: pkg install tmux -y # 编辑启动脚本 vim ~/.bashrc # 在文件的最末尾添加以下内容: # 打开 Termux 时,检查后台是否有 Debian 任务,没有则启动。 if ! tmux has-session -t debian 2>/dev/null; then tmux new-session -d -s debian 'sudo bash debian' fi -
贴上我的 termux 的
.bashrc自启配置文件~ $ cat ~/.bashrc # ssh 服务自启 pgrep -x sshd >/dev/null || sshd # 自启 debian 容器 if ! tmux has-session -t debian 2>/dev/null; then tmux new-session -d -s debian 'sudo bash debian' fi # 查看手机 IP ifconfig | grep "inet " | grep -v 127.0.0.1 # Komari tmux 自启脚本 if ! tmux has-session -t komari 2>/dev/null; then termux-wake-lock tmux new-session -d -s komari 'cd ~/komari && ./komari server -l 0.0.0.0:25774' echo "[Komari] 已在 tmux 新会话中后台启动" else echo "[Komari] 服务已在后台运行中" fi # Komari-Agent Root 自启脚本 if ! tmux has-session -t komari-agent 2>/dev/null; then termux-wake-lock # 在 tmux 中启动会话,并调用 su -c 来执行 root 命令 tmux new-session -d -s komari-agent "su -c 'cd /data/data/com.termux/files/home/komari && ./komari-agent -e http://127.0.0.1:25774 -t hyp57O3yAOxHZYj74ClxsJ'" echo "[Agent] 已在 tmux 中尝试以 Root 身份后台启动" else echo "[Agent] 服务已在后台运行中" fi ~ $如何操作这个后台自启的 Debian?
配置完成后,当你打开 Termux,它是静默的。你可以通过以下指令管理它:也就是
tmux的常用命令。- 查看后台是否在跑:
tmux ls - 进入 Debian 界面:
tmux attach -t debian(进去后你就在root@localhost:#提示符下了) - 退出(回到后台)而不关闭:
在进入 Debian 后,按下快捷键:
Ctrl + B然后松开,再按D。 - 彻底关闭后台任务:
tmux kill-session -t debian
- 查看后台是否在跑:
-
你是否想让 debian 容器也自启 ssh 呢。
# 进入 debian 容器,操作跟在 termux 里一样。在 Debian 内部执行: vim ~/.bashrc # 在文件的最末尾添加以下内容: # 检查 ssh 服务状态,如果没运行则启动 service ssh status > /dev/null 2>&1 || service ssh star -
以及自启 cloudflare tunnels 隧道
# 检查 cloudflared 服务状态,如果没运行则启动 service cloudflared status > /dev/null 2>&1 || service cloudflared star -
贴上我的 debian 自启脚本
# 检查 ssh 服务状态,如果没运行则启动
service ssh status > /dev/null 2>&1 || service ssh start
# 检查 cloudflared 服务状态,如果没运行则启动
service cloudflared status > /dev/null 2>&1 || service cloudflared start
# 自启 openlist
# 1. 自动清理已死掉的会话 (防止脚本误判)
screen -wipe > /dev/null 2>&1
# 2. 检查 openlist 会话是否存在
if ! screen -list | grep -q "\.openlist"; then
# 确保进入绝对路径,避免相对路径报错
cd ~/p.hechuan.me || exit
# 3. 启动 screen
# 建议加上 -L (开启日志) 或指定 shell 环境
screen -d -m -S openlist ./openlist server
echo "OpenList 已在 Screen 后台启动。"
else
echo "OpenList 已经在运行中。"
fi
# Komari-Agent tmux 自启脚本
if ! tmux has-session -t Komari-Agent 2>/dev/null; then
termux-wake-lock
tmux new-session -d -s Komari-Agent 'cd ~/komari && ./komari-agent -e http://127.0.0.1:25774 -t OhmWv1Nr4nwkGL6XvqNwTt'
echo "[Komari-Agent] 已在 tmux 新会话中后台启动"
else
echo "[Komari-Agent] 服务已在后台运行中"
fi
手机改来电自启,改自供电。
鸽
旧手机利用的3篇文章

说些什么吧!