1 背景
在当今数字时代,笔记软件已经成为我们生活和工作中不可或缺的工具。然而,随着数据安全和隐私保护意识的提升,越来越多的用户开始关注笔记数据的存储位置和访问便捷性。
在众多笔记软件选择中,Joplin 作为一款开源的笔记应用,以其优秀的特性和灵活的部署方式脱颖而出。
对于Joplin,我已经使用3年了,所以强烈推荐有动手能力的同学自己搭建私有云笔记。
为什么选择私有云笔记?
与传统的云笔记服务相比,私有云笔记具有以下优势:
- 数据安全性:数据完全由自己掌控,不用担心服务商数据泄露
- 隐私保护:笔记内容只存储在自己的服务器上,不会被第三方访问
- 成本可控:无需支付高额的存储费用,可以根据需求灵活扩展
- 功能自定义:可以根据个人需求进行功能定制和优化
为什么选择 Joplin
让我们来对比一下市面上常见的笔记软件:
有道云笔记
- 优点:界面友好,功能齐全,中文支持好
- 缺点:数据存储在第三方服务器,无法私有部署,付费功能较多
OneNote
- 优点:与微软生态集成度高,功能强大
- 缺点:依赖微软服务,同步有时不稳定,无法私有部署
Joplin
优点:
- 开源免费
- 支持私有部署
- 全平台支持(Windows, macOS, Linux, Android, iOS)
- Markdown 编辑器
- 端到端加密
- 插件系统
缺点:
- 界面相对简单
- 无web端
2 Joplin Server 部署要求
官方支持情况
Joplin 官方提供了完整的服务器端实现,并支持多种部署方式:
- Docker 容器化部署(推荐)
- 源码部署
- 二进制部署
服务器配置要求
最低配置要求
CPU:1核
内存:1GB
存储:取决于笔记数量,建议至少 20GB
操作系统:支持 Docker 的任何系统
3 部署准备工作
域名准备
- 购买域名(如:note.yourdomain.com)
- 配置 DNS 解析到服务器 IP
- 等待 DNS 生效(通常需要几分钟到几小时)
环境准备
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 安装 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# 验证安装
docker --version
docker-compose --version
# 安装nginx
sudo apt update
sudo apt install nginx
4 使用 Docker Compose 部署 Joplin Server
首先创建项目目录
mkdir joplin-server
cd joplin-server
创建 docker-compose.yml 文件
可参考官方配置:https://raw.githubusercontent.com/laurent22/joplin/dev/docker-compose.server.yml
version: '3'
services:
db:
image: postgres:13
container_name: postgres_13
volumes:
- ./postgresData:/var/lib/postgresql/data
ports:
- "127.0.0.1:5432:5432"
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=your_password
- POSTGRES_USER=joplin
- POSTGRES_DB=joplin
app:
image: joplin/server:latest
depends_on:
- db
container_name: joplin
ports:
- "127.0.0.1:22300:22300"
restart: unless-stopped
environment:
- APP_PORT=22300
- APP_BASE_URL=https://your-domain.com
- DB_CLIENT=pg
- POSTGRES_PASSWORD=your_password
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=db
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
这里会部署两个docker容器,一个是PostgreSQL数据库,一个是Joplin Server,如果你有现成的PostgreSQL数据库,可以把数据库的容器去掉,只保留Joplin Server的容器
这里我就是独立部署,可以参考我的部署示例,并且带邮件的相关配置
services:
joplin_server:
image: joplin/server:latest
container_name: joplin
ports:
- "22300:22300"
restart: unless-stopped
environment:
- TZ=Asia/Shanghai
- APP_PORT=22300
- APP_BASE_URL=https://your-domain.com
- DB_CLIENT=pg
- POSTGRES_PASSWORD=your_password
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=postgresql
- MAILER_ENABLED=1
- MAILER_HOST=your_mail_host
- MAILER_PORT=465
- MAILER_SECURITY=tls
- MAILER_AUTH_USER=your_user
- MAILER_AUTH_PASSWORD=your_password
- MAILER_NOREPLY_NAME=饭饭's Note Server
- MAILER_NOREPLY_EMAIL=your_email
networks:
- local_network
logging:
driver: "json-file"
options:
max-size: "100m"
max-file: "5"
Nginx反向代理配置
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://joplin_server:22300;
}
现在已经是 2025 年,请为域名配置 HTTPS 证书,并将 HTTP 流量阻挡或重定向到 HTTPS,以保障数据传输的安全。
启动服务
cd joplin-server
docker-compose up -d
查看资源占用
docker stats
正常资源占用在200m左右,我的服务跑了2年了,占用也才400m
登录修改密码
部署成功并配置好nginx反向代理后,此时访问你的域名会进入joplin的登录页面
yourdomain.com/login
默认情况下,Joplin Server 将设置一个管理员用户:
账户:admin@localhost
密码:admin
我们使用默认的账户密码登录后,在右上角,点个人资料按钮更新管理员账户和密码,建议使用强密码
也可以新建一个账户给自己用
5 客户端配置
1.下载对应平台的客户端,Jopin客户端基本覆盖了全平台
- Windows/macOS/Linux:https://joplinapp.org/download/
- Android:Google Play Store
- iOS:App Store
2.下载后客户端后,打开工具-->选项-->同步菜单中进行登录
同步目标:Joplin服务器(BETA)
填写自己刚刚设置的账号密码即可完成登录
6 总结与注意事项
1.安全性考虑:
- 始终使用 HTTPS
- 定期更新系统和 Docker 镜像
- 设置强密码
- 配置防火墙
2.数据备份:
- 定期备份 PostgreSQL 数据
- 备份 Joplin 数据目录
- 考虑使用自动备份脚本