摘要
本指南将帮助你在 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:15
container_name: joplin-postgres
restart: unless-stopped
environment:
POSTGRES_PASSWORD: joplinpass
POSTGRES_USER: joplinuser
POSTGRES_DB: joplin
volumes:
- db-data:/var/lib/postgresql/data
app:
image: joplin/server:latest
container_name: joplin-server
restart: unless-stopped
ports:
- "22300:22300"
environment:
APP_PORT: 22300
APP_BASE_URL: "http://localhost:22300"
DB_CLIENT: pg
POSTGRES_PASSWORD: joplinpass
POSTGRES_DATABASE: joplin
POSTGRES_USER: joplinuser
POSTGRES_PORT: 5432
POSTGRES_HOST: db
volumes:
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',
'[email protected]',
'上面生成的hash',
1,
extract(epoch from now()) * 1000,
extract(epoch from now()) * 1000
);
🖥️ 客户端配置同步
下载客户端
👉 https://joplinapp.org/download
配置同步目标
打开客户端 → 设置 → 同步:
设置项 | 值 |
---|---|
同步目标 | Joplin Server (Beta) |
URL | http://localhost:22300 |
邮箱 | [email protected] |
密码 | your_password |
点击 "同步",完成首次连接 ✅
🔐 安全性建议
-
删除
USER_AUTH_ENABLED: 0
后重启容器; -
设置复杂管理员密码;
-
若暴露到公网,请配合 Nginx 和 HTTPS 使用。
🚀 附加功能(可选)
-
配置公网访问 + HTTPS(推荐使用 Nginx + Certbot);
-
自动备份 PostgreSQL 数据;
-
搭配群组插件实现团队协作。