摘要
本指南將幫助你在 Windows 11 系統 上通過 Docker + Docker Compose 完成 Joplin Server 的本地搭建,并實現數據持久化、PostgreSQL 后端支持、用戶登錄與同步功能。
條件 | 說明 |
---|---|
? 已安裝 Docker Desktop for Windows | 可從 Docker 官網 下載并安裝,建議使用 Windows 10/11 Pro/Enterprise 系統;安裝時請選擇 WSL2 作為后端引擎。 |
? 已開啟 WSL2 + 虛擬化(Hyper-V) | 打開 PowerShell(管理員)執行: wsl --install 并確保已啟用虛擬化: ① 在 BIOS 中開啟 Virtualization ② 啟用 Windows 功能: ?- “適用于 Linux 的 Windows 子系統” ?- “虛擬機平臺” ?- “Hyper-V” |
? Git Bash 或 PowerShell 可正常使用 | 在 Windows 上推薦使用 PowerShell 或 Git Bash 執行命令,如:docker-compose up 、curl 、npm 等;如果 npm 報執行策略錯誤,可運行: Set-ExecutionPolicy -Scope Process -ExecutionPolicy RemoteSigned |
? 具備基礎的命令行操作能力 | 包括使用 cd 切換目錄、編輯 YAML 文件、執行 Docker 命令等。如無經驗,建議同時學習: 👉 Docker 入門教程 👉 PowerShell 基本命令 |
? 檢查 WSL2 與虛擬化是否已開啟:
wsl --status
輸出應類似于:
Default Version: 2
…
若未啟用,請手動安裝 WSL:
wsl --install
或指定 Ubuntu 發行版:
wsl --install -d Ubuntu
? 檢查 Docker Desktop 是否正常運行:
運行以下命令確認:
docker version
?
📁 項目結構準備
在任意目錄(如 E:\docker\joplin
)下新建項目結構:
bash
復制編輯
E:\docker\joplin
├── docker-compose.yml
🧾 docker-compose.yml 配置文件
創建并寫入如下內容:
yaml
version: '3.8'services:db:image: postgres:15container_name: joplin-postgresrestart: unless-stoppedenvironment:POSTGRES_PASSWORD: joplinpassPOSTGRES_USER: joplinuserPOSTGRES_DB: joplinvolumes:- db-data:/var/lib/postgresql/dataapp:image: joplin/server:latestcontainer_name: joplin-serverrestart: unless-stoppedports:- "22300:22300"environment:APP_PORT: 22300APP_BASE_URL: "http://localhost:22300"DB_CLIENT: pgPOSTGRES_PASSWORD: joplinpassPOSTGRES_DATABASE: joplinPOSTGRES_USER: joplinuserPOSTGRES_PORT: 5432POSTGRES_HOST: dbvolumes:db-data:
?? 啟動 Joplin Server
在 PowerShell 或 Git Bash 中執行以下命令:
cd E:\docker\joplin
docker-compose up -d
等待容器啟動后,訪問:
http://localhost:22300
手動插入用戶到 PostgreSQL
進入數據庫:
docker exec -it joplin-postgres psql -U joplinuser -d joplin
使用 Node.js 生成 bcrypt 密碼哈希:
bash
npm install bcryptjs
// gen.js
const bcrypt = require('bcryptjs');
console.log(bcrypt.hashSync('your_password', 10));
bash
node gen.js
在數據庫中插入用戶:
sql
INSERT INTO users (id, email, password, is_admin, created_time, updated_time)
VALUES ('550e8400e29b41d4a716446655440000','your@email.com','上面生成的hash',1,extract(epoch from now()) * 1000,extract(epoch from now()) * 1000
);
?
🖥? 客戶端配置同步
下載客戶端
👉 https://joplinapp.org/download
配置同步目標
打開客戶端 → 設置 → 同步:
設置項 | 值 |
---|---|
同步目標 | Joplin Server (Beta) |
URL | http://localhost:22300 |
郵箱 | your@email.com |
密碼 | your_password |
點擊 “同步”,完成首次連接 ?
🔐 安全性建議
-
刪除
USER_AUTH_ENABLED: 0
后重啟容器; -
設置復雜管理員密碼;
-
若暴露到公網,請配合 Nginx 和 HTTPS 使用。
🚀 附加功能(可選)
-
配置公網訪問 + HTTPS(推薦使用 Nginx + Certbot);
-
自動備份 PostgreSQL 數據;
-
搭配群組插件實現團隊協作。