在手机上运行太微nodejs博客

林一二2023年08月21日 14:07
Ref:
Keywords:
  1. 首先下载 FDroid
  2. 用 FDroid 来安装 Termux
  3. 更新包 pkg upgrade , 中间可能会卡住需要输入 Y
  4. 装 ssh 远程连接,方便电脑上操作 pkg install openssh
    1. 参考 SSH into Termux from Your Computer 查看用户名、配置密码,把它们用 Bitwarden 之类的密码管理器记录起来
    2. 安装 pkg install net-tools,然后就可以用 ifconfig 查看手机在内网的 ip 了,例如 192.168.3.4
    3. ssh u0_a233@192.168.3.4 -p 8022 来连接,然后输入密码。sshd 默认会启动在 8022 上。
  5. 安装 nodejs
    1. 参考 How to install Node.js and npm in Termux on Android
    2. apt install nodejs
  6. 将 Github 上的 wiki 仓库同步到本地
    1. pkg install git
    2. git clone https://github.com/linonetwo/wiki.git
    3. 配置定时同步脚本 startBlogAndProxy.config.js,定时同步 git,并自动刷新 wiki
  7. 启动只读的 wiki
    1. tiddlywiki ~/wiki --listen host=0.0.0.0 port=8080 root-tiddler=$:/core/save/lazy-images
    2. 如果你像我一样删去了 tiddlywiki.info 里的 +plugins/tiddlywiki/filesystem +plugins/tiddlywiki/tiddlyweb 这两个插件,这样产生的网站就已经是只读的了。如果没有,你需要禁用他们,不然你的网站就会是所有人都可修改的。
    3. 或参考 Pimgeek数字花园上聊天里分享的方案来生成只读网站
  8. 配置反向代理
    1. 用免费的 Cpolar,下载并解压程序 curl -O -L https://static.cpolar.com/downloads/releases/3.3.12/cpolar-stable-linux-arm.zip && unzip ./cpolar-stable-linux-arm.zip,然后参考「连接您的帐户」添加token./cpolar authtoken xxx
    2. 执行内网穿透代理 ./cpolar http 8080 ,如果买了付费版还可以指定「预留」里配置的域名,例如 ./cpolar http 8080 -subdomain=onetwowiki ,就可以在 https://onetwowiki.cpolar.top 访问了
    3. 在域名提供商处配置 CNAME 记录,来使用自己的域名。注意"不能"把现有域名的子域名,例如 wiki.onetwo.ren 直接绑定到上面的域名上,而是要使用「预留」里的「保留自定义域名」,把自己的域名(例如 wiki.onetwo.ren)填进去后,点击「保留」按钮,获得一个专门用于绑 CNAME 的域名(例如 xxxx.cname.cpolar.io),把这个填到 CNAME 记录里即可
    4. 在配置保留域名时,如果自己的域名没有备案,记得地区选 United States,并给 Tiddlywiki 服务器配置 HTTPS
  9. 配置 HTTPS 免备案
    1. 如果是在阿里云上买的域名,可以申请 20 个免费 https 证书,参考如何申请阿里云的免费域名HTTPS证书,不仅方便,还会自动更新域名解析的 DNS 记录
    2. 申请完后,下载 Apache crt/key 类型的证书,存放在 ssh 文件夹里,例如我为 https://wiki.onetwo.ren 申请的证书,就重命名后放在 ~/ssl/wiki.onetwo.ren_public.crt~/ssl/wiki.onetwo.ren.key
    3. 在启动命令的后面拼上 tls-key=../ssl/wiki.onetwo.ren.key tls-cert=../ssl/wiki.onetwo.ren_public.crt ,变为 cd ~/wiki && git pull && tiddlywiki ~/wiki --listen host=0.0.0.0 port=8080 root-tiddler=$:/core/save/lazy-images tls-key=../ssl/wiki.onetwo.ren.key tls-cert=../ssl/wiki.onetwo.ren_public.crt
    4. Cpolar 的命令也要用上 https 相关证书,并连到 https 版的本地 wiki https://localhost:8080 上,变为 ./cpolar tls -hostname=wiki.onetwo.ren -redirect-https -crt=~/ssl/wiki.onetwo.ren.pem -key=~/ssl/wiki.onetwo.ren.key -region=hk https://localhost:8080

配置了 pm2 配置文件 startBlogAndProxy.config.js 之后,可以通过 pm2 start ~/wiki/tiddlers/startBlogAndProxy.config.js 来自动后台启动和同步。

(当然首先要 npm i -g pm2

Q/A

如果不是在阿里云买的域名,如何开 HTTPS 呢?

FSpark:

关键是获得证书,在手机上跑sh还是在电脑上跑再复制过来都行,用 acme.sh 或 certbot 验证获得免费证书,三个月自动更新一次,它们靠自动更改DNS TXT记录来验证域名所有权

如果我没有域名呢?

可以直接用 Cpolar 的免费子域名,例如我们的 https://tw-cn.cpolar.top 就是。不过还是在阿里云买个自己的域名好,便宜的也无所谓。