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

pimgeek 的数字花园即为此模式,现记录部署过程。什么是 TiddlyWiki?

前置条件是要有一个域名和一个 VPS。

安装 Node.js 和 TiddlyWiki

  • 更新软件包 apt update
    • 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 文本内容:

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 文本内容:

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

脚本内容:

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,并且通过一些方式登录修改了。

参考文献

作者: 陈仓颉

以有涯随无涯

《如何在服务器上部署一个基于 Node.js 的 TiddlyWiki》有4个想法

    1. 好久不见!个站商店已经3.0啦,很高兴看到站点不忘初衷😁
      严格来说是个人 wiki,是一个介于私人笔记和博客之间的实践,说只能玩玩确实没错,就是拿来玩的哈哈哈

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注