配置 Joplin Server 实现同步

文章目录

从 WizNote 为知笔记到 Joplin(上) 一文中,我介绍了把自己积累十年的笔记从 WizNote 搬家到 Joplin 的心路历程。

Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端,关于它的优势可以看 这里

我们知道,多端同步功能是笔记工具最重要的功能。只有实现了多端同步,我们才能在工作电脑和手机之间无缝切换笔记体验。Joplin 在同步上做得不错,支持 Dropbox、OneDrive 和 AWS s3(当然国内都没法用),支持 WebDAV 协议,也支持自家的 Joplin Server

本文介绍如何在自己的服务器上搭建 Joplin Server,并配置好 Joplin Desktop 的同步功能。

安装 Docker

以 Ubuntu 18.04 为例:

 1# 更新包
 2sudo apt update
 3
 4# 安装包管理 https 支持
 5sudo apt install apt-transport-https ca-certificates curl software-properties-common
 6
 7# 添加 docker 官方包的 GPG key
 8curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 9
10# 添加 docker 官方源
11sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
12
13# 再次更新包
14sudo apt update
15
16# 安装 docker
17sudo apt install docker-ce
18
19# 查看 docker 服务状态
20sudo systemctl status docker

如果此时显示 docker 服务一切正常,接着设置 docker 的执行用户组。我用来运行 Joplin Server 的用户名称为 app,进行下面的设置:

1sudo usermod -aG docker app

创建 Joplin Server 配置文件

创建配置文件,/home/app/joplin/.env

1APP_BASE_URL=https://your-sample-url
2APP_PORT=22300

Joplin Server 推荐使用 PostgreSQL 数据库,但我的烂服务器装个数据库很难受,所以上面的配置就是直接用 SQLite 数据库了。 O(∩_∩)O哈哈~

我的近三千篇文章在同步之后,数据库大小仅为 600MB,这个大小对于 SQLite 还是能承受的。

创建 Docker Volumes

由于采用了 SQLite 数据库,而 Docker 默认每次运行都会使用隔离的资源,会导致之前的同步内容丢失。

我们需要考虑数据持久化的问题,创建一个 Volume:

1# 创建名为 joplin 的 volume
2docker volume create joplin

下面的命令查看 volume 是否创建成功,可以看到,volumns 文件夹位于 /var/lib/docker 中。

 1$ docker volume inspect joplin
 2[
 3    {
 4        "CreatedAt": "2021-02-20T12:09:19+08:00",
 5        "Driver": "local",
 6        "Labels": {},
 7        "Mountpoint": "/var/lib/docker/volumes/joplin/_data",
 8        "Name": "joplin",
 9        "Options": {},
10        "Scope": "local"
11    }
12]

运行 Joplin Server

下面的命令在后台运行 Joplin Server,名称为 joplin_server,绑定端口为 22300,并把容器的 /home/joplin 绑定到 joplin 这个 volume:

1docker run -d --name joplin_server -v joplin:/home/joplin --env-file /home/app/joplin/.env -p 22300:22300 joplin/server:latest

使用下面的命令查看运行状态:

1$ docker ps -a
2
3CONTAINER ID   IMAGE                  COMMAND                  CREATED      STATUS      PORTS                      NAMES
46074fa330192   joplin/server:latest   "docker-entrypoint.s…"   3 days ago   Up 3 days   0.0.0.0:22300->22300/tcp   joplin_server

使用下面的命令重启容器:

1docker container restart joplin_server

配置 Nginx

nginx 配置服务器

 1server {
 2        server_tokens off;
 3        root /srv/www/html;
 4        index index.html index.htm;
 5        server_name your-domain
 6        client_max_body_size 100m;
 7
 8        location / { try_files $uri $uri/ @joplin; }
 9        location @joplin {
10                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
11                proxy_set_header X-Forwarded-Proto $scheme;
12                proxy_set_header Host $http_host;
13                proxy_redirect off;
14                proxy_pass http://localhost:22300;
15        }
16}

建议开启 HTTPS 支持,可以参考我之前写的文章: 使用 Let's Encrypt 加入全站 HTTPS 支持

配置 Joplin Desktop

Joplin Desktop Sync

同步目标选择 Joplin Server。

服务器 URL 保持和 .env 配置文件中的 APP_BASE_URL 配置相同。

Joplin Server 支持多个客户端同步,可以把每个客户端的内容同步到不同的服务器目录。不同的目录可以在 Joplin Server 后台看到。如果你只有一个客户端,那么随便填写一个英文字符串就好。

登录进入 https://your-sample-url/login ,使用默认的账户名 admin@localhost 和密码 admin 登录,然后修改账号和密码即可。

Joplin Server Files

在移动设备上也可以进行相同的设置。移动设备有个「同步状态」功能可以看到当前的同步状态:

Joplin Mobile Sync Status

全文完