如何安装Trilium做一套自己的笔记系统——服务器端

要在不同的终端、平台之间,实现Trilium笔记的数据漫游,就需要部署服务器,这样所有连接此服务器的客户端都会与之进行数据同步,这样就可以在不同的地点和平台随时访问自己的笔记了。

服务器端的部署,需要 linux 的环境,你可以使用网上购买的虚拟主机或者云服务器,也可以在自己家的电脑或者NAS上完成。这两种情况从访问上来说略有不同:

  1. 如果是部署在云端,你需要对你购买的虚拟主机或云服务器有一定的定制权。像我买的这个阿里云的便宜货,无法SSH连接,nginx 大部分设置被屏蔽,这样是没办法的。起码你要能远程连接到服务器,安装服务器端的软件。
  2. 如果是私有部署,也就是在自己家里的电脑或者NAS上安装,申请服务器的费用就省了,但是问题是如何从外网来访问?那就要看你家里的网络是否有公网IP地址?有的话,用DNS、DDNS都行;没有,就要想办法用VPN或者内网穿透来解决。这个另文另论。

我有一台老机器,老i3的CPU,显卡也是集成的,但是装了ubuntu感觉还挺能打,于是就拿来装各种自己要用的系统。为了方便安装配置和扩展,以及迁移,尽量使用docker的方式。

Trilium 的安装过程是这样的:

条件

首先,您需要在计算机上安装 docker。以下是两个可以提供帮助的指南:

拉取镜像

docker pull zadam/trilium:[VERSION]

注意:这里拉取的是中文版,优点是界面、文档绝大部分已经汉化,使用起来友好度高。缺点是可能更新上没有原版那么速度。

将[VERSION]替换为实际的最新版本,或使用“series”标签-例如0.48-latest

不推荐使用“latest”标签,因为它可能会将您的Trilium实例升级到新的次要版本(minor version),这可能会破坏您的同步设置或引起其他问题。

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

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

    mkdir ~/mybook/trilium-data
    chmod 777 ~/mybook/trilium-data
//~代表当前用户目录,如用户myusername,~目录则为 /home/myusername

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

运行镜像

这些命令将卷挂载到主机系统,以便在容器停止后保留 trilium 的数据(最重要的是文档)并且不会被清除。

启动trilium容器,允许远程访问:

docker run -d -p 0.0.0.0:8080:8080 --name=mybook -v /home/myusername/mybook/trilium-dada:/root/trilium-data nriver/trilium-cn --restart=always

以上命令的几个关键点:

  1. -d 后台运行;
  2. -p 8080:8080(或者 0.0.0.0:8080:8080),将内部8080端口对外暴露为8080端口,从而允许外部通过IP地址和这个端口访问笔记服务器;
  3. --name=mybook,mybook是给自己的容器取的名字,按照个人爱好安排;
  4. -v ~/trilium-data:/home/myusername/trilium-data,前面一个目录,是上面说明过的,用来存储数据的自定义的目录,要跟上面的操作一致。后面是系统安装时容器内的默认目录。

到此为止,一个Trilium服务器就算安装完毕运行起来了,客户端可以通过设置里面的”同步“选项,连接服务器,然后就可以自动同步数据了。在新的平台、系统上安装新的客户端,也只需要连接到同一个服务器的同一端口,输入密码就可以获取其它所有客户端输入的笔记数据了。

安装第二个Trilium

前面说了,采用docker安装的一个好处就是便于扩展。采用普通安装方式,要在同一台服务器上安装两个或者多个Trilium,可能并不容易,而docker安装可以轻松解决这个问题,只需要一条不同的启动命令,创建一个新的容器,就完美搞定。

docker run -d -p 0.0.0.0:88:8080 --name=herbook -v /home/myusername/herbook/trilium-data:/root/trilium-data zadam/trilium:0.51-latest --restart=always

与第一个容器不同的地方有三:

  1. -p,暴露的端口,要与第一个不同,在容器内部同为8080,但容器外服务器的端口8080已经被第一个容器占用,所以这里使用不同的88端口;
  2. --name,必须使用不同的容器名。当然不指定容器名也无所谓,系统会自动分配容器ID;
  3. -v,指定的数据目录不同,原理与上相同,不与第一个容器造成冲突。

容器运行起来以后,可以用

docker ps

命令来查看。这属于docker的基本操作,可以自行查看docker的相关知识。