当前位置: 首页 > 工具软件 > Joplin > 使用案例 >

docker 部署 joplin server进行文档同步

方茂
2023-12-01

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 部署的部分

joplin server 部署

docker-compose文件

首先看下官方文档

官方dokcer-compose.yml文件示例

当然官方文档是缺少一些重要参数的,本文中做说明,在文档的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,需要添加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执行重新加载配置文件

配置 joplin Desktop

登录进入 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

 类似资料: