抽屉里的手机还能开博客?用 Typecho 和 cpolar 搭一台可远程访问的小服务器

前言

抽屉里的旧手机不一定只能当备用机。我手里的小米 MIX 2S 虽然不再承担日常通讯,却还有 Wi-Fi、存储空间和完整的安卓系统;拿它搭一个个人博客,正好能把闲置设备变成随时可以打开的小网站。比起一上来研究复杂的服务器环境,我更愿意先把事情拆开:让手机跑起 Web 服务,让 Typecho 真正读写数据库,再解决人不在家时怎么访问。这样即使某一步出了问题,也知道该回到手机、网站还是网络入口排查。尤其在手机和电脑之间来回操作时,本机地址、局域网 IP 与公网域名各有用途,提前分清楚就少走很多弯路。

我用 KSWEB 在手机上准备 PHP、MySQL 和 Apache,把 Typecho 源码放进 htdocs,先验证本机 8000、数据库管理页 8001 和局域网访问。博客能打开之后,再通过 Termux 安装 cpolar,给手机上的 8000 提供公网入口。这里还有一个特别容易忽略的细节:第一次打开公网地址时,正文出现了,页面样式却不见了,原因并不在隧道,而是 Typecho 的"站点地址"还指向旧入口。最后,我会换成固定二级子域名 blog01,再安装 Joe 等主题,并处理演示环境中的 PHP 版本兼容问题。整条流程以这台 MIX 2S 的操作为例,不把一次访问成功夸大成手机永不掉线。

1. 先让旧手机具备长期运行的基本条件

这套演示使用的是 小米 MIX 2S、Android 9、8GB RAM / 256GB 存储,不要求 Root。准备条件给出的下限是 Android 7.0,推荐 2GB 以上内存、2GB 以上可用空间,ARM64 设备更合适。手机要保持 Wi-Fi 连接,长期使用还得留意供电、机身温度和电池状态;关闭电池优化可以减少后台被清理的机会,却不能替代真正的设备稳定性检查。

需要的文件包括 termux.apk、KSWEB.apk、typecho-master.zip,以及准备用到的主题 butterfly、Cuckoo、GreenGrapes、Joe。示例素材提供在 123 云盘,提取码是 1314:

https://www.123865.com/s/3jOKVv-9JNzH?pwd=1314

先安装 KSWEB 和 Termux。以这台小米手机为例,进入"设置 → 电量和性能 → 应用配置",将两个应用的后台策略改成无限制;不同品牌的具体入口可能不同,目的是别让 Web 服务和隧道进程在锁屏后轻易被系统清理。

随后打开 KSWEB,在设置中启用"自动启动"和"锁定 WIFI"。这一步解决的是应用层的常驻设置,之后还要分别确认 Apache 和 cpolar 是否实际在运行。

2. 用 KSWEB 先跑通手机上的 Web 环境

KSWEB 里需要用到四项:PHP 运行 Typecho,MySQL 保存文章、用户和评论,Apache 处理网页请求,PhpAdmin 则用于图形化管理数据库。示例环境中 PHP、Apache、MySQL 已经随 KSWEB 安装,先启动 Apache,再用手机浏览器打开:

shell 复制代码
http://localhost:8000

出现默认测试页,就说明本机的 8000 Web 入口可用。接下来在 KSWEB 中安装 PhpAdmin,按界面提示确认后,Apache 会重新启动;状态页出现 8001,再打开数据库管理页:

shell 复制代码
http://localhost:8001

这里两个端口的用途不要弄混:8000 放博客,8001 是数据库管理页面。后面通过 cpolar 对外提供的是博客端口,并不需要顺手把数据库管理页也开放出去。

3. 把 Typecho 文件放对位置,并让电脑能打开手机博客

解压 typecho-master.zip,把源码目录里的文件复制到 KSWEB 的站点根目录 htdocs,而不是把外层压缩包直接放进去。完成以后重新访问本机 8000,正常情况下会出现 Typecho 的安装向导。

shell 复制代码
http://localhost:8000

我更习惯在电脑大屏幕上填写数据库和管理员信息,因此还要让同一局域网中的电脑能够访问手机。把 KSWEB 中 Apache 的监听 IP 从 localhost 改为 0.0.0.0;这台 MIX 2S 的示例局域网 IP 是 192.168.50.114,在电脑浏览器里打开:

shell 复制代码
http://192.168.50.114:8000

这样做只改变了局域网访问方式。localhost 永远是当前正在操作的那台设备 :在手机上它指向手机,在电脑上则指向电脑。后面如果从电脑打开手机服务,要使用手机实际的局域网 IP,不要机械地把所有 localhost 原样粘过去。

4. 建数据库、完成初始化,先确认博客真的能用

Typecho 的安装向导需要一个 MySQL 数据库。返回 PhpAdmin 管理页:

shell 复制代码
http://localhost:8001

示例使用 root 用户,密码留空进入页面。这个空密码只是在复现演示环境,不能把它当作长期运行的安全设置;尤其不要把 8001 当成普通博客页面向公网发布。

点击"新建",数据库名称填写 xy,字符集和排序规则使用示例中的 utf8mb4_bin,然后创建数据库。数据库名称可以自定义,但 Typecho 安装向导中的名称必须与实际创建的一致。

回到 Typecho,点击"我准备好了,开始下一步",按页面填写数据库连接信息。初始化页面和管理员账户设置依次如下:

进入到初始化配置页面,配置MySQL数据库,参考如下图:

安装完成后,浏览器再次打开博客首页:

shell 复制代码
http://localhost:8000

能看到默认的"欢迎使用 Typecho"文章,才说明 Apache、PHP、Typecho 和数据库连接已经形成基本闭环。下一步不用急着换主题,先解决外部网络能否访问,以及访问之后图片、CSS 是否会正确加载。

5. Termux 安装 cpolar,把手机的 8000 端口送到公网

Typecho 此时已经在 MIX 2S 上运行,cpolar 只承担网络入口的职责:外面的浏览器经由隧道访问手机上的 8000,网站和数据库仍然运行在这台手机里。先打开 Termux,等待首次环境初始化完成。

创建软件源目录:

shell 复制代码
mkdir -p $PREFIX/etc/apt/sources.list.d

加入示例使用的 cpolar 软件源并更新仓库:

shell 复制代码
#添加cpolar下载源
echo "deb [trusted=yes] http://termux.cpolar.com termux extras" >> $PREFIX/etc/apt/sources.list.d/cpolar.list

#更新仓库
pkg update

安装 cpolar:

shell 复制代码
pkg install cpolar

安装 Termux 服务管理组件,完成安装后关闭 Termux,再重新进入,让服务环境生效:

shell 复制代码
pkg install termux-services

启动 cpolar,并为该服务设置启用状态:

shell 复制代码
sv up cpolar
shell 复制代码
# 设置开机自启
sv-enable cpolar

需要分清:sv-enable cpolar 管理的是 Termux 服务,不等于已经解决 Android 设备重启后所有应用、Wi-Fi 和后台进程自动恢复的问题。长期运行时还需要结合手机的后台限制和实际重启测试确认。现在先在手机浏览器打开 cpolar 管理页,使用已注册的账号登录:

shell 复制代码
http://localhost:9200

6. 第一次公网访问:正文有了,样式为什么没了?

进入 cpolar 后创建指向 Typecho 8000 的 HTTP 隧道。在线列表里显示隧道名 typecho-8000,并出现 HTTP、HTTPS 两条公网地址;先用 HTTPS 地址从外部测试。

注册好账号后,输入账号信息,登录到后台管理页面:

这次遇到的情况很有代表性:页面内容能显示,样式却没有跟上。这说明隧道已经把请求送到 Typecho,但不能据此判断整站资源地址都正确。Typecho 的"站点地址"仍指向旧地址时,CSS、图片等资源可能继续从原地址加载。

打开 Typecho 管理后台:

shell 复制代码
http://localhost:8000/admin

在"系统设置"里把"站点地址"改为这次生成的完整 HTTPS 公网地址,保存后再刷新公网页面。不要把此处当成 cpolar 的域名配置:它是 Typecho 自己用来生成网页链接和资源路径的站点配置。

如果使用随机域名,后续地址发生变化还要同步修改 Typecho 的"站点地址";否则很容易再次出现网页能开、样式缺失或跳回旧地址的情况。真正长期使用时,固定域名的价值就在于少改这一项设置。

7. 换成固定二级子域名 blog01,再同步网站地址

在 cpolar 的"预留 → 保留二级子域名"里选择地区 China Top,示例名称为 blog01。名称具有唯一性,实际以账号中保留成功的结果为准。

回到"隧道管理 → 隧道列表",找到 typecho-8000 并编辑,域名类型改成"二级子域名",填写刚保留的名称后更新。在线隧道列表中可以看到公网地址切换成固定二级子域名形式。

再回 Typecho 的"系统设置",把"站点地址"从此前的随机地址更新为固定地址,并重新打开页面确认内容与样式一致。

在这套示例里,公网入口是 blog01 对应的 cpolar 域名;它并没有把博客搬到云服务器,更不能单凭地址固定就断言旧手机永远在线。手机的供电、网络、KSWEB、Termux 和隧道仍然都要正常工作。

8. 博客能用了,再挑适合的 Typecho 主题

站点已经有稳定入口之后,再处理外观会更省心。这里展示了默认主题,以及 Joe、GreenGrapes、Typecho-Butterfly、Cuckoo 四款主题。不同主题会改变布局和功能呈现,先看实际展示效果,再决定哪个更适合自己的内容。

默认主题:

Joe:

GreenGrapes:

Typecho-Butterfly:

Cuckoo:

以 Joe 为例,将准备好的主题复制到 Typecho 的 htdocs/usr/themes 目录。注意解压后的层级:示例中出现了两层 Joe 文件夹,需要将真正的主题目录调整到正确位置,否则后台可能识别不到。

进入管理后台,可以使用手机本地地址,也可以通过已配置的公网域名访问:

shell 复制代码
# 内网本地网址
http://localhost:8000/admin

# 或者访问穿透出来的公网域名也可以的
https://blog01.cpolar.top/admin/

点击"更换外观",进入"网站外观"后找到 Joe,点击"启用"。

9. 主题显示报错,再查 PHP 版本兼容

启用 Joe 后,首页虽然切换了外观,却出现了错误提示。这不是公网隧道的问题,应该回到主题和 PHP 的兼容性上排查。

示例中的 KSWEB 默认 PHP 版本为 8.2.6,而这套 Joe 主题在演示环境中改用 PHP 7.4 后才正常显示。按 KSWEB 页面切换到 7.4.23,再重新访问博客验证:

这只能说明该主题在这套演示环境下的兼容性问题得到解决,不代表所有主题都必须使用 PHP 7.4,也不代表老版本 PHP 适合无限期公开运行。要长期运营网站,还应关注主题更新、PHP 的安全维护状态,以及站点和数据库备份。

总结

从抽屉里的旧手机到可以通过浏览器访问的 Typecho 博客,最关键的不是某个"一键安装"按钮,而是每一层都要实际验证:KSWEB 的 8000 能显示网站,8001 能管理数据库,Typecho 能完成初始化,Termux 中的 cpolar 能把请求送到手机。公网第一次只出现正文、不显示样式,也恰好提醒我:网络连通和网站配置正确是两回事;固定域名启用后,还必须同步更新 Typecho 的"站点地址"。

这台 MIX 2S 还可以继续做轻量站点和练习环境,但长期使用不能只看访问截图。供电与后台保活、数据库凭据、PHP 和主题兼容、站点备份,都和能否持续运行有关。让旧设备重新发挥价值的前提,是知道它负责什么,也知道它可能在哪一层停下来。

相关推荐
牢姐与蒯1 小时前
Linux信号(一).信号产生
linux·运维·服务器·ubuntu
FfHUCisI1 小时前
sync.Once 与 sync.Cond 源码与并发控制陷阱
服务器·开发语言·后端·golang
Lethehong2 小时前
2026年9月,传奇搬砖该换哪个模拟器?MuMu、雷电、夜神实测对比(附云手机 24 小时挂机)
智能手机
爱签AI电子合同2 小时前
电子合同上手成本怎么测?易用性维度专项测评
服务器·人工智能·智能合约·企业微信
无情的西瓜皮4 小时前
拆解小米18系列价格阶梯:10个SKU、5000元价格带、双芯分级——一场教科书式的“高端化结构”分析
智能手机·供应链管理·小米·产业分析·高通骁龙
aixingkong9215 小时前
Nvidia为例 XPU的Multi-Host、Socket Direct 、GPUDirect、RDMA 技术点分析
服务器·网络·硬件架构·硬件工程
judezh13 小时前
api 容器一直 unhealthy?我把一个 Agent 运行时的健康检查逐条拆了,查出四个问题
运维·docker
百万蹄蹄向前冲14 小时前
双端同步!云服务器装最新Node.js v26.10全过程追踪
服务器·人工智能·node.js
春天花会开13114 小时前
内网 HTTPS 部署实战:私有 CA + Nginx 反向代理全流程复盘
运维·nginx·https