在云服务器上安装Trilium打造个性化的笔记系统(2):如何在云服务器上通过 docker 安装Trilium的服务端

上一篇是扯闲篇《在云服务器上安装Trilium打造个性化的笔记系统(1):源起》,这一篇正式进入实操。

之前写过一篇《如何安装Trilium做一套自己的笔记系统——服务器端》,讲的主要是用 docker命令来部署 Trilium 的服务端,比着那一篇完全可以在云服务器上部署好 Trilium。

今天介绍的一种方法,是利用 docker compose 来部署。这也是在 Trilium 中文翻译版本中推荐的 docker 部署方式。本质上说,这种方式只是把docker启动所要设置的参数,都写到一个 .yml文件中,这样每次启动就不用打那么一长串的命令了。在以下的整个安装过程,我的系统环境是 ubuntu 20.04,用 root 用户通过 SSH 使用 putty 远程登录到服务器,如果你用的不是root用户,那么运行命令的时候可能系统会提示没有权限,在命令前面加上 sudo 就行。如果参数可以或者需要自定义,我也会明确说明。

准备工作

  1. 购买云服务器,进入云平台的管理后台,查看并记录云服务器的IP地址。
  2. 申请域名,以下过程假设域名是 abc.com。
  3. 进入域名服务商的控制台,将域名 abc.com 解析到你的云服务器 IP 地址上。
  4. 安装 docker。

前面的操作都比较简单,提醒一下第4步的操作:云服务器刚刚开通的时候,通常是没有安装 docker 这个命令的,需要你自行安装,安装有几种不同的方式比如curl安装、apt安装、snap安装等等,方法网上的介绍很多,我建议你用最简单的,一行命令搞定:

curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

安装的时间会有点长,具体取决于你的云服务器配置与速度。

如果你不是 root 用户,那么安装完成后,可以把当前用户加入到docker分组中,这样后续运行docker命令可以不加sudo。

#添加当前用户到docker用户组
#更新用户组
sudo usermod -aG docker $USER
newgrp docker

在主机系统上准备数据目录

Trilium 需要一个可以存储其数据的目录,然后需要将其挂载到 docker 容器中。容器作为用户“节点”运行,因此我们需要使该目录可供该用户使用:

    mkdir ~/trilium/trilium-data
    chmod 777 ~/trilium/trilium-data
//~代表代码主目录,如用超级用户root登录,~目录为/root;用其它用户如user1登录,则~目录则为 /home/user1
// trilium 和 trilium-data 可以根据自己的喜好使用其它名称,也可以只用一级目录如 ~/trilium-data

由于这允许系统上的任何用户读取/写入此目录,因此建议仅在单用户系统上执行此操作。该目录将在下面使用(挂载)。

在Docker里运行服务端

中文版的文档说明,请点击这里查看。运行步骤如下:

直接下载 docker-compose.yml

wget https://raw.githubusercontent.com/Nriver/trilium-translation/main/docker-compose.yml

根据你的需要和实际情况,修改docker-compose.yml配置文件。你可以使用你熟悉的编辑器,nano、vi和vim都行。

vi docker-compose.yml

修改后的配置文件内容如下:

version: '3'
services:
trilium-cn:
image: nriver/trilium-cn
restart: always
ports:
- "777:8080"
volumes:
# 把同文件夹下的 trilium-data 目录映射到容器内
- ~/trilium/trilium-data:/root/trilium-data
environment:
# 环境变量表示容器内笔记数据的存储路径
- TRILIUM_DATA_DIR=/root/trilium-data
# 自定义docker容器的名称
container_name: mynote
# 可选功能: 健康检查。需要启用的话,把下面的注释去掉
#healthcheck:
# test: ["CMD-SHELL", "curl --fail http://localhost:8080/api/health-check | jq -e '.status == "ok"' || exit 1"]
# interval: 30s
# timeout: 10s
# retries: 3

以上配置文件需要说明的几个地方:

image: nriver/trilium-cn(使用nriver翻译的中文版trilium镜像)

ports:
- "777:8080"
(777根据你的喜好修改,是对外提供访问的端口,数据同步或通过web访问时最终使用 https://abc.com:777 这个地址。8080是trilium在容器内提供服务的端口,不可修改。)

- ~/trilium/trilium-data:/root/trilium-data(冒号前面的,是前面的步骤你建立的数据目录,如果前面建立的目录不是这个名称,根据你当时建立的实际目录修改。冒号后面的,是trilium容器内部的数据目录。)

- TRILIUM_DATA_DIR=/root/trilium-data(指定trilium容器内部的数据目录)

container_name: mynote(mynote按照个人喜好修改,是自定义的容器名称,为了便于识别和进行容器操作。如果要使用容器默认名称,就把这行去掉或者注释掉。)

运行

docker compose up -d

它会从Docker Hub直接拉镜像运行。笔记数据会在 docker-compose.yml 中设置的目录下。

浏览器打开 http://abc.com:777 访问服务端,出现以下页面,表示安装成功了:

Docker服务端版本更新

如果过一段时间trilium版本升级了,可以通过以下方法更新:

cd到docker-compose.yml所在目录

先停止trilium

docker compose down

拉取最新镜像

docker compose pull

运行

docker compose up -d

需要注意的是:trilium要求客户端与服务端的版本保持一致才能进行数据同步,所以,如果你升级了服务端的版本,请将电脑上的客户端也升级到同样的版本。

后续操作

如果你是首次使用 trilium,那么选第一项,然后就可以访问 http://abc.com:777通过网页来使用笔记系统了。也可以在电脑上装 trilium 的客户端,通过设置“同步”选项,将电脑的笔记与服务器进行同步。这样别管走到哪,只要能够访问网络,笔记数据都是同步的。客户端的安装以及自定义数据存放目录,可以参考以前写的《如何安装Trilium做一套自己的笔记系统——客户端》。

如果你的电脑早已安装了 trilium 客户端并且使用了一段时间,有了一些数据,那么选第二项,按照提示设置“同步”选项,就可以将电脑上的数据同步的服务器了。

再往后,就到了安装证书,启用 trilium 的TLS,实现 https 加密访问的步骤,下一篇单独写。