前言
在筆記軟體盛行的時代,我們有許多記筆記的方式,大部分軟體會保存使用者的資料在伺服器上面。若是輕度使用不會有太大影響,但長期或重度的使用者會衍伸出一些問題:
- 資料沒有隱私:無法保障資料不會被其他人查看。
- 資料儲存格式不統一:軟體公司會使用自家的格式保存檔案,有可能會遇到用其他筆記軟體無法開啟或編輯。
- 軟體營運決策:開公司會想要賺錢,隨時都有可能被養套殺,會因大量筆記搬家很累而無奈繼續使用他們的軟體。
此系統優點是,同步快速穩定,圖片可以正常顯示,且圖片不是放在公開的網址上,也可以把 WebDAV 當作私人硬碟,隨時上傳任何檔案。一切的一切都由你主導控制。只需要維護系統就好。
本篇實現如標題所講的功能,可以在多平台查看和編輯 Markdown 筆記。主要原理是透過 WebDAV 的方式來同步,需要的軟體技術如下:
所需軟體:
- 伺服器端:Ubuntu Server 22.04.5 LTS
- 電腦端:Typora,付費軟體。簡潔介面、WYSIWYM,推薦使用
部落格文章 Typora 介紹:Markdown 編輯器推薦:Typora + 開源插件使用心得
-
手機端(iOS):1Writer,付費軟體。支援 Markdown 渲染及 WebDAV,推薦使用
-
手機端(Android):Zettel Notes,免費軟體。支援 Markdown 渲染及 WebDAV,推薦使用
-
個人網域 + SSL 認證:iOS 必要,連線需要 https
-
Docker、Docker Compose:安裝 WebDAV、Nginx Proxy Manager
-
Rclone WebDAV:透過 Rclone 架設 WebDAV
-
Nginx Proxy Manager:實現反向代理
安裝 Docker、Docker Compose 請參考部落格這篇文章:快速上手 Docker 和 Docker Compose
如果要在內網使用 SSL 憑證請參考部落格這篇文章:如何在內網服務中使用 SSL 憑證
安裝 Nginx Proxy Manager
Nginx Proxy Manager 以下簡稱 NPM,可以更輕鬆設定反向代理,以及 SSL 認證。
mkdir -p docker/npm #在 docker 資料夾底下建立 npm 資料夾
cd docker/npm
nano docker-compose.yml
設定 NPM docker-compose.yml
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
設定 Port Forwarding
開啟 80
、81
、443
。
啟動 Nginx Proxy Manger
設定好 docker-compose.yml
和防火牆後,啟動 Docker。
docker compose up -d
同目錄會產生 data
、letsencrypt
資料夾不要刪掉。
網址輸入:http://內網IP:81/
進入 NPM 管理介面,輸入帳號 admin@example.com
和密碼 changeme
來修改日後登入帳密。
架設 Rclone WebDAV
安裝 Rclone
sudo -v ; curl https://rclone.org/install.sh | sudo bash
調整資料夾架構
關於資料夾選用,我的建議是 Docker 相關的腳本歸在一類,與自用的存筆記資料夾分開,避免誤刪。
示範將筆記資料存在 notes
資料夾。
home
├── dockers
│ ├── npm
│ └── rclone
└── notes
設定 WebDAV docker-compose.yml
cd .. #回到 Home 目錄
mkdir docker/rclone
cd docker/rclone
nano docker-compose.yml
version: '3'
services:
webdav:
image: rclone/rclone:latest
restart: always
command: ["serve", "webdav", "--addr", ":7000", "--user", "web_ac", "--pass", "web_pwd", "--read-only=false", "/home/note/"]
ports:
- "7000:7000"
volumes:
- /home/note:/home/note
在
command
中:
:7000
:Port 號,如果7000
使已用的話,請自行更改。注意:webdav 的
ports
冒號兩邊都要更改成一樣。
web_ac
:WebDAV 登入帳號
web_pwd
:WebDAV 登入密碼
/home/note/
:筆記存放目錄,如果要修改的話volumes
冒號兩邊都要修改成一樣。
啟動 Rclone WebDAV
設定好 docker-compose.yml
和規劃筆記資料夾後,啟動 Docker。
docker compose up -d
設定 WebDAV 網址
此步驟選用,如果要在 iOS 上使用 WebDAV,網址需要有 SSL 認證。
網域供應商新增 DNS
確認使用者已加入 sudo
群組
sudo usermod -aG sudo user # 將 user 加入 sudo 群組
groups
NPM 新增反向代理、SSL 證書
登入 NPM,點選「ADD Proxy Host」。
注意:不要勾選 Cache Assets
和 Block Common Exploits
,否則無法正常運作。
SSL 設定
點選 Request a new SSL Certificate
。
開啟 Force SSL
。
登入 WebDAV
以上設定好後,接下來在各個平台來驗證看看。
瀏覽器
連線 WebDAV 網址,可以帳號密碼登入就代表 WebDAV 架設成功。
Windwos 網路磁碟機
檔案總管右鍵,新增網路位置,輸入帳號密碼。
Typora
剛安裝完 Typora 可以讓你試用 14 天,到期再選擇購買授權碼啟用。
開啟側邊欄(Ctrl+/),點下方按鈕選擇開啟資料夾 。
iOS
開啟 1Writer,點選 新增資料夾
,選擇 WebDAV
,輸入 WebDAV 網址以及帳號密碼。
iOS 的 WebDAV 網址要有 SSL 認證,若擔心公開至網路上,可以參考 這一篇文章 架設內網 SSL 憑證。
Android
開啟 Zettel Notes 進入儲存庫管理介面,編輯儲存庫同步選擇 WebDAV。
結語
以上是透過 WebDAV 實現多平台同步筆記內容,透過自架的方式我們可以掌握資料在手中。未來如果要換筆記軟體或儲存位置也可以無腦搬家。
除此之外定期備份也不能馬虎,Rclone 也提供上傳至雲端硬碟的功能。