如何在服务器上部署一个基于 Node.js 的 TiddlyWiki

Node.js TiddlyWiki 案例：

pimgeek 的数字花园：🌱 学习者的数字花园

我的数字花园：仿生猫不会梦见电子猫粮

什么是 TiddlyWiki？

现记录部署过程。前置条件是要有一个域名和一个 VPS 并了解基本的 Linux 命令。

安装 Node.js 和 TiddlyWiki

更新软件包 apt update & apt upgrade

RedHat 系使用 yum

安装 Node.js apt install npm

全局安装 TiddlyWiki npm install -g tiddlywiki

检查 TiddlyWiki 版本 tiddlywiki --version

创建 TiddlyWiki 目录 mkdir ~/wiki wiki 可以替换为想要的名字

在 TiddlyWiki 目录下创建基本文件 tiddlywiki wiki --init server

创建用户权限文本 vim ~/wiki/users.csv 或者用 nano 等文本工具

users.csv 文本内容：

Copy
username,password
johndoe,!@#$%^

其中首行为必填项，第二行为用户名和明文密码，英文小写逗号，不包含任何空格（具体参考官方文档：WebServer Parameter: credentials）

安装 Nginx 和 Let's Encrypt

熟悉的话这一步可以略过。重点是设置好反向代理。

安装 Nginx apt install nginx

创建并编辑代理服务器配置 cd /etc/nginx/sites-available 然后 vim example.com

其中 example.com 为域名

example.com 文本内容：

Copy
server {
server_name example.com
client_max_body_size 100M;

location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}

其中 client_max_body_size 条目设置最大上传文件大小

链接并启用代理服务器 ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled

安装 Let's Encrypt 以及激活 nginx 插件 apt install certbot python3-certbot-nginx

创建 SSL 认证 certbot --nginx 按照说明进行设置

运行 TiddlyWiki 并访问域名测试是否启动成功 tiddlywiki wiki --listen credentials=users.csv "readers=(anon)" "writers=(authenticated)"

其中 creadentials 字段指定用户权限文本名称，readers 为只读权限（此处的 anon 为匿名，即任意访客），writers 为读写权限（authenticated 读取 credentials 中指定的用户）

安装 pm2 并设置后台运行服务

全局安装最新版本 pm2 npm install -g pm2@latest

准备 TiddlyWiki 启动脚本 vim ~/tw.sh

脚本内容：

Copy
cd /root
tiddlywiki wiki --listen credentials=users.csv "readers=(anon)" "writers=(authenticated)"

赋予 tw.sh 权限 chmod +x /root/tw.sh

通过 pm2 守护进程运行 TiddlyWiki pm2 start /root/tw.sh

保存当前状态 pm2 save

设置开机自启 pm2 startup

至此便可以访问首页 Node.js 版本的 TiddlyWiki，并且通过一些方式登录修改了。