trilium 同步服务配置笔记

#dev

trilium 是一个个人知识库笔记软件,支持同步到自己的服务器上。

参考资料:

首先在 ubuntu 上安装 nodejs 10.x,版本必须在 10.5 之后。然后根据官方指南安装所有依赖:

sudo apt install libpng16-16 libpng-dev pkg-config autoconf libtool build-essential nasm libx11-dev libxkbfile-dev

然后克隆最新稳定版源码并安装 npm 包:

git clone -b stable https://github.com/zadam/trilium.git
cd trilium
npm install

这期间我遇到过一个报错:

g++: fatal error: Killed signal terminated program cc1plus

没有搜索到什么解决方法,某个回答说是内存不够,再次运行 npm install 就好了。

到这一步,原本直接运行就可以,但因为这个服务器上还运行了别的应用,我打算把它部署在子域名下,所以需要配置一下端口和反向代理。

/etc/nginx/sites-available/ 下建立 trilium,并写入如下内容:

server {
    listen    80;
    listen    [::]:80;
    server_name    trilium.example.com; // 自定义域名
    location / {
        proxy_pass http://127.0.0.1:8080/; // 自定义端口
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

注意这里有个坑:proxy_pass 必须用 http 协议,否则会 502。

不知为何,我的 /home/[user]/ 目录下并不存在 .local/share,因此只能自己手动建立一个 data directory:

cd ~
mkdir trilium-data
export TRILIUM_DATA_DIR= ~/trilium-data

然后把 config.ini 复制过来:

cp <dir>/trilium/config-sample.ini ~/trilium-data/config.ini

把这个 config.ini 里的端口改掉,就齐活了。

现在可以运行:

cd trilium
nohup node src/www &

这样即使用户登出,还是能在后台运行服务。在这一步又踩了两个坑,一个是没装 sqlite3,于是手动 npm install sqlite3;另一个是提示 DB uninitialized,只要配置正确后跳转到 /setup 完成初次使用导航就好了。

登录和同步完成后,又发现一个问题,就是加载实在太慢。可以调整一下 payload 大小限制,在 server{} 里加上:

client_max_body_size 0;

最后,照例 certbot 配置 SSL 证书,就完成了。其实还有很多不完善的地方,研究 nginx 文档后再回来修改吧。