Etherpad

出自福留子孫
跳轉到: 導覽搜尋

一、安裝

前置準備:

  1. 一個 OS 專用於 etherpad 的帳號,如 adminNas
  2. root 權限

安裝步驟

  1. 先在 DS720+ 安裝 git server ,使得可以使用 git clone … 指令。
  2. 進 OS 取得 root 權限
  3. cd 到 web 服務的根目錄
  4. git clone https://github.com/ether/etherpad-lite.git 安裝資料夾
    省略安裝資料夾則會安裝到 etherpad-lite 資料夾
    (士賢:從etherpad官網下載,再解壓縮再將資料夾上傳到伺服器)
    會建立安裝資料夾
  5. chown -R adminNas:administrators ./etherpad-lite
  6. 檢查 etherpad-lite 路徑是否沒有任何可操作之權限,若是:chmod -R 777 ./etherpad-lite
  7. 回復到 adminNas 的帳號身份
  8. cd etherpad-lite
  9. bin/run.sh
    (士賢:src/bin/run.sh)

納入排程:

  1. 去「DSM/控制台/任務排程表/新增」
  2. 任務名稱:可取「run etherpad」(無法用英文)
  3. 使用者帳號:adminNas
  4. 「排程/在以下日期執行/不重複」
  5. 任務設定:「bash /volume1/web/etherpad-lite/bin/run.sh」
  6. 回到「控制台/任務排程表」挑選剛才新增的任務,按「執行」按鈕

額外的安裝布驟:

  1. bin/run.sh --root
  2. export NODE_ENV=production

debug

若是安裝啟動後,首頁及頁面CSS顯示出問題(跟預設不同)

  • 可以更改setting.json的下面這行(大約在295行),將true改成false
    "minify": true, ----->> "minify": false,
  • (如果為 true,則所有 css 和 js 在傳送到客戶端之前都會被縮小。)

二、使用

  1. http://網址:9001
  2. http://網址:9001/p/頁名 // 進入某頁
  3. http://網址:9001/admin // 安裝 Plugin 或編輯設定檔
    設定要可更改,須先「chmod 777 setting.json」
  4. 重新啟動 Etherpad :

刪除一篇便箋(pad)

http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......
apikey 去 APIKEY.txt 中查閱

三、有用外掛

(一)插入圖照

名稱:previewimages
用法:直接在便箋文中插入圖照連結,會自動調大小顯示圖照。
補充:
  1. 使用維基共享資源圖照時,可利用各種尺寸的縮圖
  2. 同一行可以插入兩個圖照連結

(二)插入影片

名稱:embedmedia
用法:安裝完會在工具列出現「Embed Media」圖示,按此圖示,輸入影片連結,可嵌入影片。

(三)設定字的大小

名稱:font_size
用法:安裝完會在工具列出現「字級尺寸」圖示,是下拉選單。先選定字串,再設定字級。

(四)列出所有的 pad(便箋)

名稱:padlist2
用法:網址列輸入「http://網址:9001/list 」,會列出所有便箋,並可以蒐尋字串找出「便箋名」含蒐尋字串的便箋。

(五)可以 wiki 格式匯出單一 pad(便箋)的內容

名稱:mediawiki
用法:安裝完會在匯出功能中,多一個 MediaWiki。
補充:多層文字的完整度不如預設的 Plain text ,多媒體完整度要靠預設的 Etherpad 格式(json 語法)
  1. 多層列表只會表現出單層
  2. 換行不會產生空白行
  3. 沒有段落功能(等號)
  4. 影片與圖照都轉成單層中括號
  5. 加粗轉為三個單引號

四、進階設定

編輯 settings.json

(一)使用 MySQL 在資料

用多行註解註解掉:

"dbType": "dirty",
"dbSettings": {
  "filename": "var/dirty.db"
},

改成:

"dbType" : "mysql",
"dbSettings" : {
  "user":     "某使用者",
  "host":     "localhost",
  "port":     3306,
  "password": "密碼",
  "database": "etherpad",
  "charset":  "utf8mb4"
},

在重新開etherpad前,請先去設定的MySQL資料庫(例如使用 adminer),在資料表已有其他字集內容之前,將資料表的校對字集設定(Collation)與上面"charset"相符,否則 etherpad 會無法開啟。

(二)須登入才能使用 Etherpad

  1. "requireAuthentication": true,
  2. "requireAuthorization": false,
  3. "users":{} // 諸帳號

三、圖示

圖示是被做成字型使用,並且套用「Font_Awesome_5」

  • 由主介面看原始碼,查 button 標籤的 class 屬性,查到諸圖示類別有:
    1. buttonicon-bold
    2. buttonicon-italic
    3. buttonicon-underline
    4. buttonicon-strikethrough
    5. buttonicon-insertorderedlist
    6. buttonicon-insertunorderedlist
    7. buttonicon-indent
    8. buttonicon-outdent
    9. buttonicon-undo
    10. buttonicon-redo
    11. buttonicon-clearauthorship
    12. buttonicon-import_export
    13. buttonicon-history
    14. buttonicon-savedRevision
    15. buttonicon-settings
    16. buttonicon-embed
    17. buttonicon-showusers
    18. btn-primary
    19. btn-default
    20. chatloadmessages
  • 由 src/static/css/pad/icons.css 中查到上述各類別的字形編碼
  • 由 src/static/font/fontawesome-etherpad.svg 中的各 glyph 標籤 unicode 屬性,查出其向量繪圖資料

四、檔案列表

ep_<plugin>/
 ├ .github/
 │  └ workflows/
 │     └ npmpublish.yml  ◄─ GitHub workflow to auto-publish on push
 ├ static/
 │  ├ css/               ◄─ static .css files
 │  ├ images/            ◄─ static image files
 │  ├ js/
 │  │  └ index.js        ◄─ static client-side code
 │  └ tests/
 │     ├ backend/
 │     │  └ specs/       ◄─ backend (server) tests
 │     └ frontend/
 │        └ specs/       ◄─ frontend (client) tests
 ├ templates/            ◄─ EJS templates (.html, .js, .css, etc.)
 ├ locales/
 │  ├ en.json            ◄─ English (US) strings
 │  └ qqq.json           ◄─ optional hints for translators
 ├ .travis.yml           ◄─ Travis CI config
 ├ LICENSE
 ├ README.md
 ├ ep.json               ◄─ Etherpad plugin definition
 ├ index.js              ◄─ server-side code
 ├ package.json
 └ package-lock.json

五、啟動解說

#!/bin/sh
MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1
cd "${MY_DIR}/../.." || exit 1
. src/bin/functions.sh
exec node $(compute_node_args) src/node/server.js "$@"

這是一個 shell 腳本,它使用 Node.js 執行一個 JavaScript 文件。讓我們逐行解析:

  1. #!/bin/sh (如何執行)
    這是一個 shebang 行,它告訴系統用哪個解釋器來執行腳本。在這個例子中,它指定用 /bin/sh,即 Bourne shell 或其相容的 shell。
  2. MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 (執行路徑設定)
    這行命令首先通過 ${0%/*} 獲取腳本所在的目錄,$0 表示腳本本身的路徑,${0%/*} 則是去掉文件名,只保留目錄路徑。
    然後使用 cd 切換到該目錄,並使用 pwd -P 獲取實際的絕對路徑,將其賦值給變量 MY_DIR。
    如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
  3. cd "${MY_DIR}/../.." || exit 1 (切換執行路徑)
    切換到 MY_DIR 變量所指向的目錄的上兩級目錄。
    如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。
  4. . src/bin/functions.sh (常數參數設定)
    使用點命令(.)來源(source)src/bin/functions.sh 文件。
    這將執行該文件中的所有命令,並將其中定義的函數和變量導入當前腳本的環境。
    可以使腳本中的函數(如 compute_node_args)在當前腳本中可用。
  5. exec node $(compute_node_args) src/node/server.js "$@" (執行伺服器)
    這行命令與之前解釋的命令相同。
    它在當前 shell 進程中使用 Node.js 執行 src/node/server.j 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。
  • 第五行程式碼更詳細解說這條命令是在 Bash 環境下運行的,用於使用 Node.js 執行一個 JavaScript 文件。讓我們逐步解析這條命令:
    1. exec
      exec 是一個 shell 內建命令,它用於在當前進程中執行指定的命令,而不是創建一個新的進程。
      這意味著當你使用 exec 執行一個命令時,該命令會替換當前 shell 進程,而不是在新的子進程中運行。當命令執行完畢後,進程將終止,而不是返回到原始的 shell 進程。
    2. node
      node 是 Node.js 的命令行工具,用於執行 JavaScript 文件。
      Node.js 是一個用於開發伺服器端應用程式的 JavaScript 運行環境。
    3. $(compute_node_args)
      這是一個命令替換(command substitution)表達式。
      它將會執行 compute_node_args 腳本(假設它是一個可執行腳本),並將其輸出插入到當前位置。
      這個腳本可能會計算並生成一些 Node.js 需要的參數,例如指定的 Node.js 版本、記憶體限制等。
    4. src/node/server.js
      這是要執行的 JavaScript 文件的路徑。
      在這個例子中,這是一個 Node.js 伺服器應用程式的入口點。
    5. "$@"
      這是一個特殊的 shell 參數,代表所有傳遞給當前腳本或函數的參數。
      在這裡,它將會把所有參數傳遞給 server.js 文件。
      綜上所述,這條命令的功能是在當前 shell 進程中使用 Node.js 執行 src/node/server.js 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。

總結一下,這個腳本的目的是確保在正確的目錄下執行 Node.js 伺服器應用程式,並在需要時使用額外的命令行參數。在執行過程中,它還導入了一些函數和變量,可能對腳本的後續操作有用。

六、參考外掛

外掛列表

  1. ep_embedmedia:嵌入媒體 (youtube、vimeo 等)。
  2. ep_image_insert:可插入圖像並調整圖像大小的功能。
  3. ep_webrtc:WebRTC的音頻/視頻聊天的功能。
  4. ep_mathjax:支持 LaTeX STylee 數學公式。
  5. ep_mediawiki:在 Etherpad 中編輯並導出為 mediawiki
  6. ep_real_time_chat:即時聊天更新。
  7. ep_inline_voting:添加選項以對部分文本進行投票
  8. ep_catalog_plugin:etherpad目錄插件
  9. ep_­align:用於設置段落的左對齊、居中對齊、右對齊或完全對齊的功能。
  10. ep_­markdown:可應用 Markdown 編輯和導出。
  11. ep_­font_­size:可改變文字大小的功能。
  12. ep_font_color:可改變文字顏色的功能。
  13. ep_print_preview_pdf:列印及預覽 PDF
  14. ep_print:列印功能。
  15. ep_desktop_notifications:接收聊天桌面通知。
  16. ep_themes:改變 theme 的不同部分的主題、樣式和顏色。
  17. ep_guest:限制未登錄的使用者有限的訪問許可。
  18. ep_openid_connect:限制特定的登錄者帳號密碼
  19. ep_table_of_contents:表格相關]
  20. ep_private_pad: 用戶註冊和登錄以管理私人pad (安裝會導致 EtherPad 無法開啟)
  21. ep_tableau: 出現表格選單,可以新增表格、刪除表格

七、參考文件

  1. https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝
  2. https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html
  3. https://gis90.github.io/articles/7544/
  4. http://www.unixlinux.online/unixlinux/gdliunx/linuxj/201703/96960.html
  5. 以太墊的安裝與使用

附錄、DS218上共筆頁列表

SQL 指令:SELECT `key` FROM store WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%'

資料表中,key 可以有如下涵意

  1. pad:頁名:該頁當前版本內容
  2. pad:頁名:revs:數字:版本
  3. pad:頁名:chat:數字:聊天

一些頁面說明:

當前諸頁列表: