Self-hosing a Joplin server for syncing your notes across devices.
Joplin官方提供多種同步筆記的方式,你可以把筆記用OneDrive或Dropbox或Joplin Cloud同步,也能夠使用Joplin官方開發的伺服器同步,也就是「Joplin Server」。
Joplin Server本身是開源軟體,Joplin官方經營的Joplin Cloud應該就是使用這套系統作為後端的。
自架Joplin Server 有什麼好處呢?可享有跟官方Joplin Cloud一樣的功能,包括多裝置同步筆記,資料都在自己的伺服器。
將Joplin筆記發布為公開網頁供他人瀏覽。訪客不需要帳號也可以瀏覽你的Joplin筆記。
還能跟其他帳號共同編輯記事本!作為小型團隊協作的利器。
Joplin Server可以架在私人的NAS,也可以架在VPS。後者讓同步伺服器能一直在線上,不受物理條件影響而下線,這樣也能確保自己的筆記有一份雲端備份。還有如果你要讓筆記能讓別人公開瀏覽,那麼買個網域便是有必要的了。
Joplin Server只是同步伺服器,並非網頁版Joplin。同步到Jopli Server之前,你必須要安裝Joplin客戶端才可以使用!
1. 使用Docker架設Joplin Server#
Joplin Server的授權條款跟Joplin客戶端不同,條款寫明了同步伺服器僅供個人使用,禁止商業用途。如果你很在意這點,請改用其他的同步方式。
撰文當下Joplin Server官方映像檔僅支援x86架構,ARM架構的映像檔需要找第三方打包的,並替換掉docker-compose.yml
裡面使用的映像檔。
在Linux安裝Docker
使用Joplin官方提供的docker-compose範本。這裡會啟動兩個容器,一個是Postgresql資料庫,另一個是Joplin Server網頁後台。
mkdir ~/joplin-server
cd ~/joplin-server
wget -O docker-compose.yml https://raw.githubusercontent.com/laurent22/joplin/refs/heads/dev/docker-compose.server.yml
- 取得環境變數
wget -O .env https://raw.githubusercontent.com/laurent22/joplin/dev/.env-sample
- 編輯
.env
,設定PostgreSQL資料庫的密碼,還有Joplin Server伺服器位址
APP_BASE_URL=https://example.com/joplin # 連線網址,必須與後面連入的網域一致。如果你沒有網域,就填寫http://Linux伺服器IP:22300
APP_PORT=22300
DB_CLIENT=pg
POSTGRES_PASSWORD=joplin
POSTGRES_DATABASE=joplin
POSTGRES_USER=joplin
POSTGRES_PORT=5432
POSTGRES_HOST=localhost
- 啟動容器
sudo docker compose up -d
開啟瀏覽器,輸入
http://上面設定的網址/joplin
,登入Joplin Server後台,預設管理員帳號為admin@localhost
,密碼為admin
。登入後請馬上修改密碼。Joplin Server的使用者帳號只能由管理員帳號新增,使用者無法自行註冊。若你的Joplin客戶端有多個設定檔(profile),可以分別給二個設定檔新增帳號,這樣兩邊的筆記資料就會隔開上傳。
需要注意設定伺服器防火牆,不要讓Joplin Server資料庫和網頁後台的通訊埠暴露到公開網路。
若是架在NAS,請安裝內網穿透軟體,從外部網路連線到Joplin Server。
Joplin Server架在VPS的話,建議取得SSL憑證,並安裝Nginx。以下是Nginx反向代理規則的範例:
proxy_set_header X-Forwarded-Host $host;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
location /joplin/ {
proxy_redirect off;
rewrite ^/joplin/(.*)$ /$1 break;
proxy_pass http://127.0.0.1:22300;
}
2. 將筆記同步到Joplin Server#
點選Joplin客戶端左下角同步按鈕,選取Joplin主機,接著填入網址和帳號密碼。再點選同步。
如何遷移現有的Joplin筆記?直接切換同步目標就可以了。如果不放心,請在同步前,點選檔案 → 全部匯出,將Joplin的筆記匯出為JEX封存檔。然後刪除Joplin客戶端所有資料,重裝Joplin客戶端,然後匯入JEX封存檔。再同步到遠端Joplin Server。
或許你會問,是否可以讓Joplin同步到不同的雲端備份?理論上是可以。不過Joplin的同步原理是讓所有裝置的筆記檔案都「一致」,故沒辦法用來「封存」筆記。筆記在這個裝置刪除了,同步之後就會標記為刪除。還有這樣做的話,在多裝置同步的場合(電腦+手機客戶端)會造成混亂,故不建議這樣做。
3 .將Joplin筆記設定為公開分享的網頁#
對筆記按右鍵,點選上傳記事,即會產生一個網址。
然後這個筆記就能讓其他人公開瀏覽。之後編輯的變更,會自動同步到這個公開的網頁。
如果你覺得Joplin排版醜醜的,請善用HTML標籤來裝飾一下Markdown檔案,例如將元素用
<p align="center"> </p>
包起來就能實現圖片置中。另外,Joplin的Markdown可以用[toc]
語法,自動在記事最上方產生目錄大綱。目前Joplin只能公開單一記事,不能公開整個記事本。暫時的解法是使用反向連結(對記事按右鍵 → 複製Markdown連結),然後貼到一個公開記事裡面當作「目錄」,接著將其他記事本一一設定為公開。
再按一次上傳筆記的分享按鈕,取消公開。
4. 與其他帳號共用Joplin筆記本#
目前Joplin只能共享記事本,不能分享單一記事。記事本必須是最頂層的,不能是其他記事本下的子目錄。
且你只能跟同一個Joplin Sever的帳號共用筆記本。
以管理員帳號登入Joplin Sever後台,新增多個使用者的帳號,並設定容量配額。
對記事本按右鍵,點選分享記事
輸入要分享的帳號。Joplin官方文件寫這裡能夠設定其他帳號的編輯權限?但我測試的時候沒有看到。
這樣一來獲得分享權限的用戶就能存取你共享的記事本了,可以看到該記事本下所有的子目錄和嵌入的檔案。