HedgeDoc 線上即時協作
BUBU 前陣子參考一些線上會議剛好看到很多人都有在使用 HackMD 線上即時多人協作可以將會議上內容記錄下來並且即時顯示在頁面上面,想說看是否能自架然後提供給有需要的人去做使用,剛好官方有提供社群版的軟體名稱叫 CodiMD 這一套開源版本,但 BUBU 所安裝是另一個分支 HedgeDoc 這原是 CodiMD 所分支出來的,原本是想要用手動架設結果一直卡住無法架設成功因此改採用 Docker 方式來架設
運行環境
環境都是在 「Proxmox VE 」 虛擬系統上架設,都是以 「 LXC 」模式為主,除非有特殊狀況會告知使用 「 VM 」 模式
- 系統環境: Debian 11
安裝過程
安裝 Docker 服務
- 安裝需要的套件
apt install ca-certificates curl gnupg lsb-release
- 安裝 Docker 認證 KEY
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
- 設定來源庫
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安裝 Docker
apt update
apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin -y
- 下載 Docker Compose 套件
curl -L https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64 > /usr/local/bin/docker-compose
- 設定 Docker Compose 執行權限
chmod +x /usr/local/bin/docker-compose
安裝 HedgeDoc 服務
- 設定 Docker 設定檔
vim /opt/docker-compose.yml
version: '3'
services:
database:
image: postgres:13.4-alpine
environment:
- POSTGRES_USER=hedgedoc
- POSTGRES_PASSWORD=password
- POSTGRES_DB=hedgedoc
volumes:
- database:/var/lib/postgresql/data
restart: always
app:
# Make sure to use the latest release from https://hedgedoc.org/latest-release
image: quay.io/hedgedoc/hedgedoc:1.9.7
environment:
- CMD_DB_URL=postgres://hedgedoc:password@database:5432/hedgedoc
# 連線網址名稱
- CMD_DOMAIN=localhost
# 不用 Port
- CMD_URL_ADDPORT=false
# 使用 SSL
- CMD_PROTOCOL_USESSL=true
# 不允許註冊
- CMD_ALLOW_EMAIL_REGISTER=false
# 關閉訪客權限
- CMD_ALLOW_ANONYMOUS=false
volumes:
- uploads:/hedgedoc/public/uploads
ports:
- "3000:3000"
restart: always
depends_on:
- database
volumes:
database:
uploads:
設定 Nginx 服務
- 服務設定檔
vim /etc/nginx/conf.d/hedgedoc.conf
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
#
server {
listen 80;
server_name 您的連線網域;
rewrite ^(.*)$ https://${server_name}$1 permanent;
}
#
server {
# 使用 https 和 http/2 協定
listen 443 ssl http2;
# 上述的 IPv6 方式
listen [::]:443 ssl http2;
server_name 您的連線網域;
#
# certs sent to the client in SERVER HELLO are concatenated in ssl_certificate
#
# SSL 憑證證書路徑
ssl_certificate /etc/nginx/ssl/fullchain.pem;
# 私鑰路徑
ssl_certificate_key /etc/nginx/ssl/privkey.pem;
# 緩存有效期
ssl_session_timeout 1d;
# 緩存憑證類型和大小
ssl_session_cache shared:SSL:50m;
#
# intermediate configuration. tweak to your needs.
#
# 使用的加密協定
ssl_protocols TLSv1.3 TLSv1.2 TLSv1.1;
# 加密演算法,越前面的優先級越高
ssl_ciphers 'TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+ECDSA+AES128:EECDH+aRSA+AES128:RSA+AES128:EECDH+ECDSA+AES256:EECDH+aRSA+AES256:RSA+AES256:EECDH+ECDSA+3DES:EECDH+aRSA+3DES:RSA+3DES:!MD5';
# 交握過程使用 Server 的首選加演算法,這裡使用 Client 為首選
ssl_prefer_server_ciphers on;
#
access_log /var/log/nginx/hd_access.log;
error_log /var/log/nginx/hd_error.log;
#
add_header Content-Security-Policy upgrade-insecure-requests;
#
location / {
proxy_pass http://連線站台位置:3000;
proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
#
location /socket.io/ {
proxy_pass http://連線站台位置:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
}
}
系統畫面
連線成功會看到很可愛的刺蝟圖示
在畫面上會有訪筆記,可以讓訪客去做編輯
編輯的畫面
退出後可以再從記錄上面去查看剛剛的編輯的資料
也可以用帳號方式登入,目前有支援是本地帳號、LDAP或者其他第三方的登入方式
登入後所顯示畫面
編輯的畫面
退出後可以再從記錄上面去查看剛剛的編輯的資料