在Windows使用WSL2建立原生Docker環境架設Miniflux
在Windows 10使用Docker Desktop和Rancher Desktop架設Miniflux,體驗都不是很好──Docker Desktop常當掉;Rancher Desktop有時莫名掛掉,所以決定用WSL2建立原生Docker環境架設Miniflux。目前使用後覺得網頁讀取反應快很多,之前用Rancher Desktop架設的Miniflux有時卡卡的,偶爾遇到某些文章點下一頁會卡住,關掉網頁重開才會好。
注意
本文由 Gemini 3 Pro 語言模型產生。
這份筆記記錄了如何從零開始,在 Windows 10/11 上使用 WSL 2(Ubuntu)建立原生 Docker 環境,部署 Miniflux RSS 閱讀器,並設定自動備份資料庫至 Windows 硬碟,最後配置 Windows Terminal 達成開機常駐。
階段一:安裝 WSL 2 與 Ubuntu
1. 更新 WSL 元件
以系統管理員身分開啟 Windows PowerShell,執行:
wsl --update
2. 安裝 Ubuntu
如果尚未安裝,請執行:
wsl --install -d Ubuntu
或是指定版號安裝(建議使用長期支援版本):
wsl --install -d Ubuntu-24.04
- 安裝完成後會自動跳出視窗。
- 依照指示設定 Linux 的 Username(使用者名稱)與 Password(密碼)。
3. 清空舊環境(選用)
如果你之前安裝過 Rancher Desktop、Docker Desktop 或舊版 Ubuntu,想要一個乾淨的開始,請先在 Windows 解除安裝 Docker 桌面程式,然後輸入 wsl --list 列出所有子系統,將它們刪除:
wsl --unregister rancher-desktop-data
wsl --unregister rancher-desktop
wsl --unregister Ubuntu-24.04
執行完畢後,再輸入一次 wsl --list,確認顯示「沒有安裝任何發佈版本」或列表為空。確認清空後,再執行上述安裝指令。
階段二:啟用 Systemd(關鍵)
為了讓 Docker 能像在 Linux 伺服器上一樣自動啟動,必須開啟 Systemd 支援。
進入 Ubuntu 終端機。
編輯設定檔:
sudo nano /etc/wsl.conf貼上以下內容:
[boot] systemd=true存檔離開(
Ctrl+O→ Enter →Ctrl+X)。重啟 WSL(請回到 Windows PowerShell 執行):
wsl --shutdown(等待約 10 秒後再次開啟 Ubuntu 終端機)
階段三:安裝 Docker Engine(官方版)
建議不要使用 apt install docker.io,請使用 Docker 官方倉庫安裝最新版以獲得最佳相容性。
1. 安裝前置工具與金鑰
# 更新系統
sudo apt update
sudo apt install ca-certificates curl gnupg
# 下載 Docker GPG 金鑰
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# 加入 Docker 倉庫
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
2. 安裝 Docker Engine
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
3. 設定免 Sudo 執行(加入群組)
sudo usermod -aG docker $USER
- 注意:執行完後建議關閉視窗,再次執行
wsl --shutdown重啟,權限才會生效。
4. 啟動 Docker 並設定開機自啟
因為我們在階段二啟用了 systemd,現在可以用標準 Linux 方式管理服務。
啟動 Docker:
sudo systemctl start docker設定開機自動啟動(指 WSL 啟動時):
sudo systemctl enable docker測試是否成功:
docker run --rm hello-world如果看到
Hello from Docker!的訊息,恭喜你!安裝成功了。
階段四:部署 Miniflux
1. 建立專案目錄
mkdir ~/miniflux
cd ~/miniflux
2. 建立 docker-compose.yml
nano docker-compose.yml
(請在此貼上你的 Miniflux 配置內容,以下為範例結構)
或是參考我之前使用Docker部署Miniflux RSS Reader的配置內容。
services:
miniflux:
image: miniflux/miniflux:latest
container_name: miniflux
ports:
- "8888:8080"
depends_on:
- db
environment:
- DATABASE_URL=postgres://miniflux:secret@db/miniflux?sslmode=disable
- RUN_MIGRATIONS=1
db:
image: postgres:16
container_name: postgresql # <--- 注意這個名稱,備份腳本會用到
environment:
- POSTGRES_USER=miniflux
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=miniflux
volumes:
- miniflux-db:/var/lib/postgresql/data
volumes:
miniflux-db:
檔案總管的 WSL 路徑(方便編輯)
你可以直接用 Windows 檔案總管管理 Linux 檔案:
- 在檔案總管網址列輸入:
- 舊版路徑格式:
\\wsl$ - 新版路徑格式:
\\wsl.localhost
- 舊版路徑格式:
- 如果看得到 Ubuntu 資料夾,建議按右鍵 →「釘選到快速存取」。
⚠️ 重要警告:換行符號(Line Endings)
Windows(CRLF)和 Linux(LF)的換行編碼不同。若設定檔格式錯誤,Docker 會無法讀取。
建議使用 Visual Studio Code 編輯:
- 在 Ubuntu 終端機進入資料夾,輸入
code .。 - 打開檔案後,檢查視窗右下角的狀態列。
- 如果顯示
LF:正確,直接存檔。 - 如果顯示
CRLF:點擊它 → 選擇LF→ 再存檔。
- 如果顯示
3. 設定 Cloudflare Tunnel(選用)
如果你的架構包含 Cloudflared,且 Miniflux 與 Tunnel 在同一個 Docker 網路內:
- 進入 Cloudflare Zero Trust Dashboard → Tunnels → Configure → Public Hostname。
- Service 區塊設定:
- Type:
HTTP - URL:
miniflux:8080(注意:這裡是填容器名稱與內部 Port)
- Type:
4. 啟動服務
docker compose up -d
階段五:設定自動備份(WSL 直寫 Windows)
此腳本會將資料庫備份直接寫入 Windows 的 D 槽(或 C 槽),不佔用 WSL 空間。
1. 準備工作
- 確認 Windows 目標資料夾已建立,例如:
C:\Docker\Miniflux\db - 對應 WSL 路徑為:
/mnt/c/Docker/Miniflux/db
2. 建立備份腳本
在 Ubuntu 家目錄建立腳本:
nano ~/backup_miniflux.sh
腳本內容:
#!/bin/bash
# --- 設定區 ---
# 請確認 CONTAINER_NAME 與 docker-compose.yml 裡的 container_name 一致
CONTAINER_NAME="postgresql"
DB_USER="miniflux" # 對應 yaml 的 POSTGRES_USER
DB_NAME="miniflux" # 對應 yaml 的 POSTGRES_DB
DB_PASS="secretpassword" # 對應 yaml 的 POSTGRES_PASSWORD
BACKUP_DIR="/mnt/c/Docker/Miniflux/db" # Windows 存放路徑
DATE=$(date +%Y-%m-%d_%H-%M-%S)
FILENAME="${BACKUP_DIR}/miniflux_${DATE}.dump"
# -------------
mkdir -p "$BACKUP_DIR"
echo "正在備份..."
# 使用 pipe 直接寫入,不產生中間檔
docker exec -i -e PGPASSWORD="$DB_PASS" "$CONTAINER_NAME" \
pg_dump -U "$DB_USER" -d "$DB_NAME" -Fc > "$FILENAME"
if [ $? -eq 0 ]; then
echo "備份成功:$FILENAME"
# 保留最近 7 份備份,刪除舊的
cd "$BACKUP_DIR"
ls -t *.dump | awk 'NR>7' | xargs -r rm -f
else
echo "備份失敗!"
exit 1
fi
3. 給予執行權限
chmod +x ~/backup_miniflux.sh
4. 還原資料庫(災害復原)
若需要還原,不需進入容器,使用「管線」指令即可。
假設備份檔在 /mnt/c/Docker/Miniflux/db/backup.dump:
# 注意:postgresql 是你的資料庫容器名稱
cat "/mnt/c/Docker/Miniflux/db/backup.dump" | docker exec -i postgresql pg_restore -U miniflux -d miniflux --clean --if-exists
--clean --if-exists:這兩個參數會自動先刪除舊資料表再還原,省去手動清空的麻煩。
5. 設定 Windows 排程(Task Scheduler)
為了確保每天自動執行,我們使用 Windows 工作排程器呼叫 WSL。這裡設定背景模式,不會跳出視窗。
開啟 工作排程器 → 建立基本工作。
一般:
- 改選 不論使用者登入與否均執行。
- 勾選 不儲存密碼。
- (選用)勾選 隱藏。
觸發程序:每天。
動作:啟動程式。
程式/指令碼:
wsl.exe引數(這是關鍵,請完整複製並修改使用者名稱):
-d Ubuntu-24.04 -u 你的使用者名稱 -- exec bash -l -c "/home/你的使用者名稱/backup_miniflux.sh"指令解析:
bash -l(Login Shell):模擬使用者登入,確保 Docker 環境變數被正確載入,避免出現0x7F找不到指令的錯誤。-c:執行完後自動結束。
(請確認
-d後面的發行版名稱是否正確,可用wsl -l -v查詢)
階段六:Windows Terminal 開機常駐與最小化
目標:開機自動啟動 Ubuntu(喚醒 Docker),並縮小到右下角系統匣。
1. 基本設定
- 從 Microsoft Store 安裝 Windows Terminal。
- 開啟 Terminal,按
Ctrl + ,進入設定。 - 啟動(Startup)頁籤:
- 預設設定檔:選擇 Ubuntu。
- 預設終端機應用程式:選擇 Windows Terminal。
2. 設定「縮小至系統匣」
在設定頁面的 外觀:
- 總是顯示通知區域圖示:開啟。
- 最小化至通知區域:開啟。
- 存檔。
3. 設定開機自動啟動
建議使用 Startup 資料夾 方式,可達成完全背景啟動:
- 關閉 Terminal 內建的「在電腦啟動時啟動」。
- 按下
Win + R,輸入shell:startup。 - 在資料夾中建立捷徑,指向
wt.exe(通常在 AppData 路徑下,或直接建立新捷徑輸入wt)。 - 右鍵點選捷徑 → 內容 → 執行 → 改為 最小化。
常見維護指令
執行更新指令:
選項 A(僅更新 Docker 相關套件):如果你不想更動 Ubuntu 其他系統套件,請用這行:
sudo apt update sudo apt install --only-upgrade docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin選項 B(全面更新系統與 Docker):順便做系統例行維護:
sudo apt update && sudo apt upgrade
手動重啟 WSL(遇到網路或 Docker 怪問題時):
wsl --shutdown確認 Docker 狀態:
docker ps