快轉到主要內容

Docker架設Joplin同步伺服器 (Joplin Server) ,雲端同步筆記,筆記發表為公開網頁

· 民國114年乙巳年
· ·
分類   Linux系統 Self-hosting自架
標籤   Joplin Note-Taking Docker
目錄

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裡面使用的映像檔。

  1. 在Linux安裝Docker

  2. 使用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
  1. 取得環境變數
wget -O .env https://raw.githubusercontent.com/laurent22/joplin/dev/.env-sample
  1. 編輯.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
  1. 啟動容器
sudo docker compose up -d
  1. 開啟瀏覽器,輸入http://上面設定的網址/joplin,登入Joplin Server後台,預設管理員帳號為admin@localhost,密碼為admin。登入後請馬上修改密碼。

  2. Joplin Server的使用者帳號只能由管理員帳號新增,使用者無法自行註冊。若你的Joplin客戶端有多個設定檔(profile),可以分別給二個設定檔新增帳號,這樣兩邊的筆記資料就會隔開上傳。

  3. 需要注意設定伺服器防火牆,不要讓Joplin Server資料庫和網頁後台的通訊埠暴露到公開網路。

  4. 若是架在NAS,請安裝內網穿透軟體,從外部網路連線到Joplin Server。

  5. 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筆記設定為公開分享的網頁
#

  1. 對筆記按右鍵,點選上傳記事,即會產生一個網址。

  2. 然後這個筆記就能讓其他人公開瀏覽。之後編輯的變更,會自動同步到這個公開的網頁。

  3. 如果你覺得Joplin排版醜醜的,請善用HTML標籤來裝飾一下Markdown檔案,例如將元素用<p align="center"> </p>包起來就能實現圖片置中。另外,Joplin的Markdown可以用[toc]語法,自動在記事最上方產生目錄大綱。

  4. 目前Joplin只能公開單一記事,不能公開整個記事本。暫時的解法是使用反向連結(對記事按右鍵 → 複製Markdown連結),然後貼到一個公開記事裡面當作「目錄」,接著將其他記事本一一設定為公開。

  5. 再按一次上傳筆記的分享按鈕,取消公開。

4. 與其他帳號共用Joplin筆記本
#

目前Joplin只能共享記事本,不能分享單一記事。記事本必須是最頂層的,不能是其他記事本下的子目錄。

且你只能跟同一個Joplin Sever的帳號共用筆記本。

  1. 以管理員帳號登入Joplin Sever後台,新增多個使用者的帳號,並設定容量配額。

  2. 對記事本按右鍵,點選分享記事

  3. 輸入要分享的帳號。Joplin官方文件寫這裡能夠設定其他帳號的編輯權限?但我測試的時候沒有看到。

  4. 這樣一來獲得分享權限的用戶就能存取你共享的記事本了,可以看到該記事本下所有的子目錄和嵌入的檔案。

參考資料
#

相關文章

Docker跑calibre-web,架設閱讀電子書伺服器
分類   Linux系統 Self-hosting自架
標籤   Calibre Docker Ebook Reader
瀏覽器跑Linux遠端桌面!Webtop Docker部署教學
分類   Linux系統 Self-hosting自架
標籤   VDI KasmVNC Remote Desktop Docker
Cockpit教學:用網頁瀏覽器管理QEMU/KVM虛擬機,替代Virt Manager
分類   Linux系統 Self-hosting自架
標籤   Libvirt PCI Passthrough GPU Passthrough QEMU-KVM Podman Docker Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。