Etherpad
出自福留子孫
目錄
一、安裝
前置準備:
- 一個 OS 專用於 etherpad 的帳號,如 adminNas
- root 權限
安裝步驟
- 先在 DS720+ 安裝 git server ,使得可以使用 git clone … 指令。
- 進 OS 取得 root 權限
- cd 到 web 服務的根目錄
- git clone https://github.com/ether/etherpad-lite.git 安裝資料夾
省略安裝資料夾則會安裝到 etherpad-lite 資料夾
(士賢:從etherpad官網下載,再解壓縮再將資料夾上傳到伺服器)
會建立安裝資料夾 - chown -R adminNas:administrators ./etherpad-lite
- 檢查 etherpad-lite 路徑是否沒有任何可操作之權限,若是:chmod -R 777 ./etherpad-lite
- 回復到 adminNas 的帳號身份
- cd etherpad-lite
- bin/run.sh
(士賢:src/bin/run.sh)
納入排程:
- 去「DSM/控制台/任務排程表/新增」
- 任務名稱:可取「run etherpad」(無法用英文)
- 使用者帳號:adminNas
- 「排程/在以下日期執行/不重複」
- 任務設定:「bash /volume1/web/etherpad-lite/bin/run.sh」
- 回到「控制台/任務排程表」挑選剛才新增的任務,按「執行」按鈕
額外的安裝布驟:
- bin/run.sh --root
- export NODE_ENV=production
debug
若是安裝啟動後,首頁及頁面CSS顯示出問題(跟預設不同)
- 可以更改setting.json的下面這行(大約在295行),將true改成false
- "minify": true, ----->> "minify": false,
- (如果為 true,則所有 css 和 js 在傳送到客戶端之前都會被縮小。)
二、使用
- http://網址:9001
- http://網址:9001/p/頁名 // 進入某頁
- http://網址:9001/admin // 安裝 Plugin 或編輯設定檔
設定要可更改,須先「chmod 777 setting.json」- 重新啟動:http://網址:9001/admin/settings 中有「存設定」與「重啟 Etherpad」的按鈕
- 「存設定」按了也不會存入新的設定
- 「重啟 Etherpad」按鈕按了可以關停 Etherpad ,但不會重新啟動。
- 管理外掛:http://網址:9001/admin/plugins
- 運行資訊:http://網址:9001/admin/plugins/info
- 重新啟動:http://網址:9001/admin/settings 中有「存設定」與「重啟 Etherpad」的按鈕
- 重新啟動 Etherpad :
- 先利用「http://網址:9001/admin/settings」的「重啟 Etherpad」按鈕,會關停 Etherpad ,但重啟會失敗。
- 再執行「DSM / 控制台 / 任務排程表 / run2.sh」使新設定生效。
刪除一篇便箋(pad)
http://網址:9001/api/1/deletePad?padID=便箋名&apikey=.......
apikey 去 APIKEY.txt 中查閱
三、有用外掛
(一)插入圖照
- 名稱:previewimages
- 用法:直接在便箋文中插入圖照連結,會自動調大小顯示圖照。
- 補充:
- 使用維基共享資源圖照時,可利用各種尺寸的縮圖
- 同一行可以插入兩個圖照連結
(二)插入影片
- 名稱:embedmedia
- 用法:安裝完會在工具列出現「Embed Media」圖示,按此圖示,輸入影片連結,可嵌入影片。
(三)設定字的大小
- 名稱:font_size
- 用法:安裝完會在工具列出現「字級尺寸」圖示,是下拉選單。先選定字串,再設定字級。
(四)列出所有的 pad(便箋)
- 名稱:padlist2
- 用法:網址列輸入「http://網址:9001/list 」,會列出所有便箋,並可以蒐尋字串找出「便箋名」含蒐尋字串的便箋。
(五)可以 wiki 格式匯出單一 pad(便箋)的內容
- 名稱:mediawiki
- 用法:安裝完會在匯出功能中,多一個 MediaWiki。
- 補充:多層文字的完整度不如預設的 Plain text ,多媒體完整度要靠預設的 Etherpad 格式(json 語法)
- 多層列表只會表現出單層
- 換行不會產生空白行
- 沒有段落功能(等號)
- 影片與圖照都轉成單層中括號
- 加粗轉為三個單引號
四、進階設定
編輯 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
- "requireAuthentication": true,
- "requireAuthorization": false,
- "users":{} // 諸帳號
三、圖示
圖示是被做成字型使用,並且套用「Font_Awesome_5」
- 由主介面看原始碼,查 button 標籤的 class 屬性,查到諸圖示類別有:
- buttonicon-bold
- buttonicon-italic
- buttonicon-underline
- buttonicon-strikethrough
- buttonicon-insertorderedlist
- buttonicon-insertunorderedlist
- buttonicon-indent
- buttonicon-outdent
- buttonicon-undo
- buttonicon-redo
- buttonicon-clearauthorship
- buttonicon-import_export
- buttonicon-history
- buttonicon-savedRevision
- buttonicon-settings
- buttonicon-embed
- buttonicon-showusers
- btn-primary
- btn-default
- 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 文件。讓我們逐行解析:
- #!/bin/sh (如何執行)
這是一個 shebang 行,它告訴系統用哪個解釋器來執行腳本。在這個例子中,它指定用 /bin/sh,即 Bourne shell 或其相容的 shell。 - MY_DIR=$(cd "${0%/*}" && pwd -P) || exit 1 (執行路徑設定)
這行命令首先通過 ${0%/*} 獲取腳本所在的目錄,$0 表示腳本本身的路徑,${0%/*} 則是去掉文件名,只保留目錄路徑。
然後使用 cd 切換到該目錄,並使用 pwd -P 獲取實際的絕對路徑,將其賦值給變量 MY_DIR。
如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。 - cd "${MY_DIR}/../.." || exit 1 (切換執行路徑)
切換到 MY_DIR 變量所指向的目錄的上兩級目錄。
如果操作失敗,則使用 exit 1 終止腳本執行並返回錯誤碼 1。 - . src/bin/functions.sh (常數參數設定)
使用點命令(.)來源(source)src/bin/functions.sh 文件。
這將執行該文件中的所有命令,並將其中定義的函數和變量導入當前腳本的環境。
可以使腳本中的函數(如 compute_node_args)在當前腳本中可用。 - 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 文件。讓我們逐步解析這條命令:- exec
exec 是一個 shell 內建命令,它用於在當前進程中執行指定的命令,而不是創建一個新的進程。
這意味著當你使用 exec 執行一個命令時,該命令會替換當前 shell 進程,而不是在新的子進程中運行。當命令執行完畢後,進程將終止,而不是返回到原始的 shell 進程。 - node
node 是 Node.js 的命令行工具,用於執行 JavaScript 文件。
Node.js 是一個用於開發伺服器端應用程式的 JavaScript 運行環境。 - $(compute_node_args)
這是一個命令替換(command substitution)表達式。
它將會執行 compute_node_args 腳本(假設它是一個可執行腳本),並將其輸出插入到當前位置。
這個腳本可能會計算並生成一些 Node.js 需要的參數,例如指定的 Node.js 版本、記憶體限制等。 - src/node/server.js
這是要執行的 JavaScript 文件的路徑。
在這個例子中,這是一個 Node.js 伺服器應用程式的入口點。 - "$@"
這是一個特殊的 shell 參數,代表所有傳遞給當前腳本或函數的參數。
在這裡,它將會把所有參數傳遞給 server.js 文件。
綜上所述,這條命令的功能是在當前 shell 進程中使用 Node.js 執行 src/node/server.js 文件,並將 compute_node_args 腳本的輸出作為額外的命令行參數,再把所有其他傳遞給當前腳本的參數傳遞給 server.js 文件。
- exec
總結一下,這個腳本的目的是確保在正確的目錄下執行 Node.js 伺服器應用程式,並在需要時使用額外的命令行參數。在執行過程中,它還導入了一些函數和變量,可能對腳本的後續操作有用。
六、參考外掛
外掛列表:
- ep_embedmedia:嵌入媒體 (youtube、vimeo 等)。
- ep_image_insert:可插入圖像並調整圖像大小的功能。
- ep_webrtc:WebRTC的音頻/視頻聊天的功能。
- ep_mathjax:支持 LaTeX STylee 數學公式。
- ep_mediawiki:在 Etherpad 中編輯並導出為 mediawiki
- ep_real_time_chat:即時聊天更新。
- ep_inline_voting:添加選項以對部分文本進行投票
- ep_catalog_plugin:etherpad目錄插件
- ep_align:用於設置段落的左對齊、居中對齊、右對齊或完全對齊的功能。
- ep_markdown:可應用 Markdown 編輯和導出。
- ep_font_size:可改變文字大小的功能。
- ep_font_color:可改變文字顏色的功能。
- ep_print_preview_pdf:列印及預覽 PDF
- ep_print:列印功能。
- ep_desktop_notifications:接收聊天桌面通知。
- ep_themes:改變 theme 的不同部分的主題、樣式和顏色。
- ep_guest:限制未登錄的使用者有限的訪問許可。
- ep_openid_connect:限制特定的登錄者帳號密碼
- ep_table_of_contents:表格相關]
- ep_private_pad: 用戶註冊和登錄以管理私人pad (安裝會導致 EtherPad 無法開啟)
- ep_tableau: 出現表格選單,可以新增表格、刪除表格
七、參考文件
- https://benson82208.pixnet.net/blog/post/44426446-線上多人共同編輯-etherpad-安裝
- https://docs.gandi.net/zh-hant/cloud/tutorials/etherpad_lite.html
- https://gis90.github.io/articles/7544/
- http://www.unixlinux.online/unixlinux/gdliunx/linuxj/201703/96960.html
- 以太墊的安裝與使用
附錄、DS218上共筆頁列表
SQL 指令:SELECT `key` FROM store WHERE `key` LIKE 'pad:%' AND `key` NOT LIKE '%:revs:%' AND `key` NOT LIKE '%:chat:%'
資料表中,key 可以有如下涵意
- pad:頁名:該頁當前版本內容
- pad:頁名:revs:數字:版本
- pad:頁名:chat:數字:聊天
一些頁面說明:
當前諸頁列表: