Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端,可惜暂时还没有web版本的。
多端同步功能是笔记工具最重要的功能。只有实现了多端同步,我们才能在工作电脑和手机之间无缝切换笔记体验。
Joplin 在同步上做得不错,支持 Dropbox、OneDrive 和 AWS s3,支持 WebDAV 协议,我也曾直接使用Nextcloud的webdav进行同步,也支持自家的 Joplin Server。
本文介绍如何在自己的服务器上利用docker搭建 Joplin Server,并配置好 Joplin Desktop 的同步功能。
首先需要安装docker和docker-compose,这个还请各位大佬找找别的文档,很容易搞定,本文只介绍joplin server 部署的部分
当然官方文档是缺少一些重要参数的,本文中做说明,在文档的joplinserver的容器启动时还需要下面的环境变量
- APP_PORT=22300 //这个是默认的端口
- APP_BASE_URL=https://joplin.XXX.space //这是你后续nginx代理后要访问这个服务时要用的域名
// //数据库名称,和db容器一致即可
- DB_CLIENT=pg //数据库类型,
- POSTGRES_PASSWORD=sadassss6
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=postgres_db
//下面是邮件服务,当你容器启动后,修改密码系统会给您发邮件确认,这里如果不配置,会发不了邮件,密码也就改不成功
- MAILER_ENABLED=true
- MAILER_HOST=smtp.exmail.qq.com //我用的是企业微信邮箱,所以这里是这样的,按邮件服务商的设置即可
- MAILER_PORT=465
- MAILER_SECURITY=tls //这里的tls好像一定要小写
//下面这些,也不知道是不是必须的,反正都写上吧
- MAILER_AUTH_USER=service@32323e.com
- MAILER_AUTH_PASSWORD=322222222
- MAILER_NOREPLY_NAME=service@32323e.com
- MAILER_NOREPLY_EMAIL= service@32323e.com
- SUPPORT_EMAIL=sservice@32323e.come
- SUPPORT_NAME=service
- BUSINESS_EMAIL=service@32323e.com
完整的文件内容如下
version: '3'
services:
postgres_db:
image: postgres:13
container_name: postgres_db
volumes:
- ./postgres:/var/lib/postgresql
ports:
- 5432:5432
restart: unless-stopped
environment:
- POSTGRES_PASSWORD=rrrrrrr
- POSTGRES_USER=joplin
- POSTGRES_DB=joplin
joplin_server:
image: joplin/server:latest
container_name: joplin_server
depends_on:
- postgres_db
ports:
- 22300:22300
restart: unless-stopped
environment:
- APP_PORT=22300
- APP_BASE_URL=https://joplin.rrr.rr
- DB_CLIENT=pg
- POSTGRES_PASSWORD=rrrrrrr
- POSTGRES_DATABASE=joplin
- POSTGRES_USER=joplin
- POSTGRES_PORT=5432
- POSTGRES_HOST=postgres_db
- MAILER_ENABLED=true
- MAILER_HOST=smtp.exmail.qq.com
- MAILER_PORT=465
- MAILER_SECURITY=tls
- MAILER_AUTH_USER=service@rrr.space
- MAILER_AUTH_PASSWORD=3ErrrrrraVFq
- MAILER_NOREPLY_NAME=service@rrr.space
- MAILER_NOREPLY_EMAIL= service@rrr.space
- SUPPORT_EMAIL=service@rrr.space
- SUPPORT_NAME=service
- BUSINESS_EMAIL=service@rrr.space
文件放在系统的用户目录下,然后执行
docker-compose up -d
然后访问ip:22300,即可看到页面
这时由于你的代理还没有设置,可能会不让你访问
如果需要以Ip+ 端口的形式先访问,可以将上面环境变量的APP_BASE_URL改成http://ip:22300,注意,一定要写端口号,而且端口号后面不能有斜杠/
打开页面后,使用默认的账户名 admin@localhost 和密码 admin 登录,然后修改账号和密码即可。
如果你的邮箱配置正确,会收到修改密码的确认邮件。
为了启用nginx,需要添加nginx,
并且需要在购买域名的地方申请一个ssl证书,然后下载下来,
再起一个nginx的doker容器就可以了,
proxy:
image: nginx
container_name: nginx_proxy
restart: always
ports:
- 80:80
- 443:443
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf
- ./nginx/certs:/etc/nginx/certs:ro
- ./nginx/vhost.d:/etc/nginx/vhost.d
- ./nginx/conf.d:/etc/nginx/conf.d
- ./nginx/temp_dir:/usr/share/nginx/temp_dir
- ./nginx/cache:/usr/share/nginx/cache
- /var/run/docker.sock:/tmp/docker.sock:ro
在certs的文件夹下,放入两个证书文件,并且在下面的joplin_ng.conf种设置证书文件路径。
在nginx.conf的文件的http{}里面填写下面一句话,这句话让nginx去conf.d文件夹下面加载全部配置文件。
include /etc/nginx/conf.d/*.conf;
在conf.d文件夹
填加一个新的文件,joplin_ng.conf,里面内容如下
server {
listen 443 ssl ;
ssl_certificate certs/joplin.rrr.rr.pem;
ssl_certificate_key certs/joplin.rrr.rr.key;
server_name joplin.rrr.rr ;
location / {
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
client_max_body_size 100m;
proxy_pass http://服务器本地IP:22300;
}
}
配置文件设置完成后,进入容器内部执行
nginx -t
检查配置文件正确性
nginx -s reload
执行重新加载配置文件
登录进入 https://your-sample-url/login ,使用默认的账户名 admin@localhost 和密码 admin 登录,然后修改账号和密码即可。
服务器 URL 保持和 .env 配置文件中的 APP_BASE_URL 配置相同。
Joplin Server 支持多个客户端同步,可以把每个客户端的内容同步到不同的服务器目录。不同的目录可以在 Joplin Server 后台看到。如果你只有一个客户端,那么随便填写一个英文字符串就好。
参考文档:
部署的时候参考了很多文档,最终整理文档时参考了以下文章
https://zhuanlan.zhihu.com/p/352413230
https://blog.csdn.net/monokai/article/details/114009792
https://github.com/laurent22/joplin/tree/dev/packages/server
https://zhuanlan.zhihu.com/p/430521274