RayLeigh

陈仓颉

Nothing is true, everything is permitted.

如何在伺服器上部署一個基於 Node.js 的 TiddlyWiki

Node.js 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 文本內容:

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,並且通過一些方式登錄修改了。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。