之前已经在Mac端部署了本地的Node.js版的TiddlyWiki,导入了本地的wiki文件,并且关联了GitHub仓库。为了实现多设备访问,可以使用家庭服务器进行内网穿透或公网IP+端口转发的方式,但是也可以在手机上进行部署,通过局域网的方式起到了“移动服务器”的效果。

安卓端准备工作
Termux是安卓端的一个Linux模拟环境,可以在里面运行Node.js版本的TiddlyWiki。可以在F-Droid和play商店进行下载安装。
# 安装完成后,尽量给予权限(尤其是后台和通知),打开Termux,执行基础安装:# 更新软件源并安装 OpenSSHpkg updatepkg upgradepkg install openssh# 设置一个临时密码(用于第一次 Mac 连接)passwd# 启动 SSH 监听服务sshd# 获取连接所需的信息whoami # 记下弹出的用户名,如 u0_a240ifconfig # 在 wlan0 部分找 inet 后的内网 IP,如 192.168.1.3
Mac 端通过ssh连接Termux
# 你一定不想在手机上打命令行,Mac和手机连接同一无线网,在Mac的终端(Terminal)中输入:# 使用刚才查到的用户名和 IP,注意端口是 8022ssh u0_a240@192.168.1.5-p 8022# 输入命令后手机会跳出通知栏,点击'ACQUIRE WAKELOCK'就能保持Termux后台运行termux-wake-lock
输入你设置的临时密码,连接成功后,你的 Mac 终端前缀会变成手机的用户名。然后就可以在Mac端输入命令行了。
安装基础依赖
# 在 Mac 控制的手机终端里执行:# 安装Node.jspkg install nodejs# 安装gitpkg install git# 安装TiddlyWikinpm install -g tiddlywiki
手机端生成 GitHub 鉴权密钥
手机作为一个独立的新设备,需要向 GitHub 注册身份:
# 生成手机专属密钥,一路回车ssh-keygen -t ed25519 -C '你的GitHub邮箱@example.com'# 查看并复制公钥cat ~/.ssh/id_ed25519.pub
登录 GitHub 网页版 -> Settings -> SSH and GPG keys -> New SSH Key,将密钥粘贴保存。
测试连接ssh -T git@github.com
报错1 Connection closed by 198.18.1.231 port 22 是因为手机后台运行了代理/翻墙软件,其接管了流量但拒绝转发 SSH 的 22 端口数据。
解决方案:强制让GitHub的 SSH 流量走443(HTTPS)端口。# 打开配置文件nano ~/.ssh/config# 填入以下配置信息Host github.comHostname ssh.github.comPort443User git# Ctrl+O保存 -> Enter -> Ctrl+X退出# 重新测试,看到 ‘Hi [你的用户名]!’就成功了。ssh -T git@github.com
建立wiki文件夹
# 文件夹名可自取# 回到根目录cd ~# 创建文件夹名为'example'的服务文件夹tiddlywiki example --init server
建立git和GitHub仓库的远程连接
在GitHub网站上建立一个新的空白仓库。
不要有描述,不要有readme文档,一定是空白仓库。
# 进入example文件夹cd example# 初始化git,并设置初始分支为maingit initgit branch -M main# 创建一个忽略文件,防止乱七八糟的临时文件被上传echo 'node_modules/'>>.gitignoreecho '*.tmp'>>.gitignoreecho '.DS_Store'>>.gitignoreecho '$__StoryList.tid'>>.gitignore#关联GitHub仓库(github.com:用户名/仓库名就是仓库首页的网址)git remote add origin git@github.com:用户名/仓库名.git# 验证关联是否成功git remote -v# 出现# origin git@github.com:用户名/仓库名.git (fetch)# origin git@github.com:用户名/仓库名.git (push)#即是说明关联成功
拉取仓库的文件至本地
git pull origin main# 如果看到 'Already up to date' 说明已成功
启动TiddlyWiki
cd ~tiddlywiki example --listen host=0.0.0.0 port=8080
在Mac的浏览器中输入即可访问安卓手机中已同步好的TiddlyWiki文件,也可以在手机浏览器中输入访问,可以随意编辑,并且会自动保存,不小心关闭也没有大碍。
提交更改至GitHub仓库
# 添加暂存git add .# 添加快照git commit -m 'Mobile update: $(date)'
报错2 Author identity unknown git 拒绝匿名提交(Commit)。由于提交失败,本地没有产生新数据,后续的推送(Push)自然找不到目标。
# 解决方案:补全身份信息# 补全身份登记git config --global user.email ’your_email@example.com‘git config --global user.name ‘YourName’# 推送到云端git push origin main
自动化
为了避免每次都在小屏幕上输入长串命令,我们需要配置 Shell 脚本和别名。
编写“启动脚本”
nano ~/start_wiki.sh
~ 填入内容
#!/data/data/com.termux/files/usr/bin/bashcd ~/exampleecho '正在从 GitHub 同步最新数据...'git pull origin mainecho '启动 TiddlyWiki 服务中...'tiddlywiki .--listen host=0.0.0.0 port=8080
编写“同步脚本”
nano ~/sync_wiki.sh
~ 填入内容
#!/data/data/com.termux/files/usr/bin/bashcd ~/你的仓库名echo '正在打包修改记录...'git add .git commit -m 'Mobile auto-update: $(date)'echo '正在推送到 GitHub...'git push origin mainecho '同步圆满完成'
配置快捷口令与权限
# 赋予脚本执行权限chmod +x ~/start_wiki.sh ~/sync_wiki.sh# 注册极短别名echo ‘alias tw='~/start_wiki.sh'’>>~/.bashrcecho ’alias ts='~/sync_wiki.sh'‘>>~/.bashrc# 立刻生效source ~/.bashrc
报错3 No command tw found... 可尝试把那两行也复制到文件里:
nano ~/.zshrc# 填入内容echo ‘alias tw='~/start_wiki.sh'’>>~/.bashrcecho ’alias ts='~/sync_wiki.sh'‘>>~/.bashrc# 保存退出后source ~/.zshrc
开启维基:在 Termux 输入回车,浏览器访问 http://localhost:8080。
备份收工:回 Termux 按停止服务,输入回车。
Reference
- TiddlyWiki
夜雨聆风