Centos 7 搭建 Trilium

Trilium 是一个开源的笔记软件项目,它允许用户创建、组织和管理他们的笔记。

项目地址

项目地址: https://github.com/zadam/trilium
汉化地址: https://github.com/Nriver/trilium-translation

安装准备

环境: CentOS 7.9trilium-cn-linux-x64-server.zip (服务器端)、trilium-cn-windows-x64.zip (客户端)

方式一

下载安装包,通过 SSH 工具上传至服务器

/images/documents/Centos7搭建Trilium/1.png
图1

方式二

在服务器中通过 wget 拉取,直接下载安装包

1
wget https://github.com/Nriver/trilium-translation/releases/download/v0.55.1_20220922/trilium-cn-linux-x64-server.zip

服务器端-安装

安装 zip 解压工具

1
yum install -y unzip zip

解压 trilium-cn-linux-x64-server.zip

1
unzip trilium-cn-linux-x64-server.zip

将解压后的文件移动到你想存放的位置

1
sudo mv trilium-linux-x64-server /opt/trilium

进入 /opt/trilium 目录下,通过 ./trilium.sh 启动,启动报错,错误解决方案如下

报错解决

错误一

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 查看当前的版本
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

# 执行命令升级
sudo yum provides libstdc++.so.6

cd /usr/local/lib64

# 下载最新版本的libstdc.so_.6.0.26
sudo wget http://www.vuln.cn/wp-content/uploads/2019/08/libstdc.so_.6.0.26.zip

# 解压
unzip libstdc.so_.6.0.26.zip

# 将下载的最新版本拷贝到 /usr/lib64
cp libstdc++.so.6.0.26 /usr/lib64

cd  /usr/lib64

# 查看 /usr/lib64 下 libstdc++.so.6 链接的版本
ls -l | grep libstdc++

# 删除/usr/lib64 原来的软连接 libstdc++.so.6,删除之前先备份一份
sudo rm libstdc++.so.6

# 链接新的版本
sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6

# 查看新版本,成功
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

错误二

1
sudo yum install bison

错误三

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd /usr/local/lib64

wget http://ftp.gnu.org/pub/gnu/make/make-4.3.tar.gz

tar -zxvf make-4.3.tar.gz 

cd make-4.3

./configure --prefix=/usr

make && make install

make -v

错误四

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd /usr/local/lib64

wget http://ftp.gnu.org/pub/gnu/bison/bison-3.0.5.tar.gz

tar -zxvf bison-3.0.5.tar.gz

cd bison-3.0.5

./configure

make && make install

bison --version

错误五

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
yum -y install centos-release-scl

yum -y install devtoolset-8-gcc devtoolset-8-gcc-c++ devtoolset-8-binutils

#启动 gcc8
scl enable devtoolset-8 bash
 
# 通过 scl 命令启动 gcc,这个只是暂时的,当你的 shell 关闭后或者重启就会恢复原来的版本,
要想一直使用升级后的版本可以使用如下命令:

echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
source /etc/bashrc
 
# 最后查看 gcc 版本
gcc --version
g++ --version
报错

Cannot find a valid baseurl for repo: centos-sclo-rh/x86_64

问题原因
CentOS 7SCL 源在 2024年6月30日 停止维护了。

当前 scl 源里面默认使用了centos 官方的地址,无法连接,需要替换为阿里云。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 重命名原来的文件
cd /etc/yum.repos.d/
mv CentOS-SCLo-scl.repo CentOS-SCLo-scl.repo.bak
mv CentOS-SCLo-scl-rh.repo CentOS-SCLo-scl-rh.repo.bak

vim CentOS-SCLo-rh.repo

# 粘贴以下内容
[centos-sclo-rh]
name=CentOS-7 - SCLo rh
baseurl=https://mirrors.aliyun.com/centos/7/sclo/x86_64/rh/
gpgcheck=1
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

不用做,报错可以尝试

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mv /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo.bak
vim /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-SCLo

# 粘贴以下内容
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v2.0.22 (GNU/Linux)

mQENBFYM/AoBCADR9Q5cb+H5ndx+QkzNBQ88wcD+g112yvnHNlSiBMOnNEGHuKPJ
tujZ+eWXP3K6ucJckT91WxfQ2fxPr9jQ0xpZytcHcZdTfn3vKL9+OwR0npp+qmcz
rK8/EzVz/SWSgBQ5xT/HUvaeoVAbzBHSng0r2njnBAqABKAoTxgyRGKSCWduKD32
7PF2ZpqeDFFhd99Ykt6ar8SlV8ToqH6F7An0ILeejINVbHUxd6+wsbpcOwQ4mGAa
/CPXeqqLGj62ASBv36xQr34hlN/9zQMViaKkacl8zkuvwhuHf4b4VlGVCe6VILpQ
8ytKMV/lcg7YpMfRq4KVWBjCwkvk6zg6KxaHABEBAAG0aENlbnRPUyBTb2Z0d2Fy
ZUNvbGxlY3Rpb25zIFNJRyAoaHR0cHM6Ly93aWtpLmNlbnRvcy5vcmcvU3BlY2lh
bEludGVyZXN0R3JvdXAvU0NMbykgPHNlY3VyaXR5QGNlbnRvcy5vcmc+iQE5BBMB
CgAjAhsDBwsJCAcDAgEGFQgCCQoLBBYCAwECHgECF4AFAmIgbg0ACgkQTrhOcfLu
nVUzkAgAgJSl++PWo69OGI8eUn53whhfJ6ZyKCOyI9+Flghtfwq1mdcP4dIoAubw
nlQcvEsE4Erob2I1S+n/dXYh9y2+Si3HdXRreKzC1rCSG5ebYRrEqeMoJhBoDFSd
xydtxi03l+Dh2iWtLtXpAM85qHvgIrPfdUnLRVbDBT52Ph5igZl8ux2ooJ94CPm4
yTG/0aPIebNQsLP8LEpa2wad2WJfIeFgjEHranWIzhzapGgwyf2Iu9Sz3L8ljiz2
2HixHpI2es3IqgLyRsTBo2/EdbvMJWlFwiESe1UQIW6ObKNnVabIHUAxZgOlj59o
JhPOzTBG+Ma2fLs+ZFBV88cpKdctFQ==
=+Gr2
-----END PGP PUBLIC KEY BLOCK-----

不用做,报错可以尝试

1
2
yum-config-manager --enable centos-sclo-rh
yum-config-manager --enable centos-sclo-sclo

不用做,报错可以尝试

1
2
yum clean all
yum makecache

错误六

报错

Error: /lib64/libm.so.6: version `GLIBC_2.29’ not found

该问题表明 glibc 版本太低,可以安装更高版本的 glibc,可以从以下地址下载压缩包
官方网站:https://ftp.gnu.org/gnu/glibc/
清华镜像:https://mirrors.tuna.tsinghua.edu.cn/gnu/glibc/

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
cd /usr/local/lib64

wget http://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz

tar -zxvf glibc-2.29.tar.gz

# 进入解压后的目录,创建 build 目录 (代码运行需要 build 目录),进入 build 目录后,再进行后面的操作
cd glibc-2.29

mkdir build

cd build

** 注意:--prefix=/usr 一定不能改,只能是 --prefix=/usr,否则安装不成功,后面坑一堆!**
../configure --prefix=/usr --disable-profile --enable-add-ons --with-headers=/usr/include --with-binutils=/usr/bin  

make && make install

# 安装之后查看是否成功
ll /lib64/libc*

# 查看 glibc 支持的版本
strings /lib64/libc.so.6 | grep GLIBC

创建服务

为了让程序方便管理、后台启动,创建服务,通过 systemctl start trilium 来启动服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
# 创建服务
vi /etc/systemd/system/trilium.service

# 把下面的内容粘贴进去
[Unit]
Description=Trilium Daemon
After=syslog.target network.target
    
[Service]
Type=simple
ExecStart=/opt/trilium/trilium.sh
WorkingDirectory=/opt/trilium/

RestartSec=5s
TimeoutStopSec=20s
Restart=on-failure
    
[Install]
WantedBy=multi-user.target

服务器端的启动成功后,通过 ip+:8080 进入网页

/images/documents/Centos7搭建Trilium/2.png
图2

下面是常用的服务操作相关的命令

1
2
3
4
5
6
7
systemctl start trilium     # 启动服务
systemctl stop trilium      # 停止服务
systemctl restart trilium   # 重新启动服务
systemctl status trilium    # 查看服务启动状态
journalctl -u trilium       # 查看服务日志
systemctl enable trilium    # 设置开机启动
systemctl disable trilium   # 取消开机启动

电脑端-安装

解压 trilium-cn-windows-x64.zip 到一个新的目录,运行 .exe 文件就可以了
如果之前安装过原版的,安装汉化版后,显示的仍是英文,进到 C:\Users\用户名\AppData\Roaming 目录下,删除 Trilium Notes、trilium-data 文件夹

数据目录

  • document.db: 里面包含了所有的笔记内容
  • config.ini: 是软件相关的设置,可以设置使用的端口
  • backup: 里面是软件自动备份的数据库
  • log: 日志文件

数据目录的存储位置

(1) 客户端

  • win: C:\Users\用户名\AppData\Roaming\trilium-data
  • linux: /home/用户名/.local/share/trilium-data
  • mac: /Users/用户名/Library/ApplicationSupport/trilium-data

(2) 服务器端

  • linux-server/home/用户名/trilium-data
  • dockerdocker-compose.yml 同目录的文件夹里 trilium-data

更该数据目录的位置

(1) Linux 中修改数据存储目录的方法

1
export TRILIUM_DATA_DIR=/home/myuser/data/my-trilium-data

(2) Windows 中修改数据存储目录的方法

/images/documents/Centos7搭建Trilium/3.png
图3

更改数据目录的位置 (高级做法)

Windows 批处理文件

trilium 安装目录下,创建一个 startWindows.bat 文件 (编码格式 utf-8),内容如下所示:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
@echo off
::这几句是为防止乱码的
REM 
chcp 65001
CLS
echo =====当前的Trilium数据存储位置环境变量是=====
set TRILIUM_DATA_DIR

echo =====重新设置Trilium数据存储位置环境变量=====
::这个 H:\ProgramFiles\my-trilium-data 可以替换成 你想要的 位置
::这样每次启动就用 指定的 临时 环境变量
set TRILIUM_DATA_DIR=H:\ProgramFiles\my-trilium-data

echo =====修改后Trilium数据存储位置环境变量是=====
set TRILIUM_DATA_DIR

echo =====后台启动trilium=====
start /b trilium.exe
startWindows.bat 用于设置和修改 Trilium 数据存储位置的环境变量,并后台启动 Trilium 程序,脚本的步骤如下:
  • @echo off : 关闭命令的回显
  • REM : 是一个注释符号,用于添加对代码的解释或说明。在批处理脚本中,rem 后面的文字会被视为注释,不会被执行,例如,“rem 这是注释”,这一行只是作为一个注释,不会影响脚本的执行
  • “chcp 65001” 命令用于设置命令行字符集为 UTF-8,以防止乱码
  • 然后,“cls” 脚本清屏,并输出当前 Trilium 数据存储位置环境变量的值
  • 接下来,脚本重新设置 Trilium 数据存储位置环境变量的值为 H:\ProgramFiles\my-trilium-data
  • 然后,脚本再次输出修改后的 Trilium 数据存储位置环境变量的值
  • 最后,脚本使用 “start /b” 命令后台启动 Trilium 程序
  • 你可以将脚本中的 H:\ProgramFiles\my-trilium-data 替换为你想要使用的其他目录路径。这样,每次运行脚本时,Trilium 程序将使用指定的临时环境变量启动,而该环境变量的值可以> 在脚本中修改

运行 startWindows.bat,运行结果如下

1
2
3
4
5
6
=====当前的Trilium数据存储位置环境变量是=====
Environment variable TRILIUM_DATA_DIR not defined
=====重新设置Trilium数据存储位置环境变量=====
=====修改后Trilium数据存储位置环境变量是=====
TRILIUM_DATA_DIR=H:\ProgramFiles\my-trilium-data
=====后台启动trilium=====

Linux 脚本

在 trilium-linux 安装目录下,创建一个 startLinux.sh 文件,内容如下所示

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
#!/bin/sh
echo "=====当前的Trilium数据存储位置环境变量是====="
echo $TRILIUM_DATA_DIR
echo "=====重新设置Trilium数据存储位置环境变量====="
export TRILIUM_DATA_DIR=/media/shijunzhi/TOSHIBA/ProgramFiles/my-trilium-data
echo "=====修改后Trilium数据存储位置环境变量是====="
echo $TRILIUM_DATA_DIR
echo "=====后台启动Trilium====="
nohup ./trilium &
# trilium 程序的输出内容在当前目录的 nohup.out 文件中

运行方式: 在命令行输入 ./startLinux.sh

startLinux.sh 的目的是更改 Trilium 数据存储位置的环境变量,并在后台启动 Trilium,脚本的步骤如下:
  • #!/bin/sh: 告诉操作系统脚本应该使用哪个解释器来运行。在这种情况下,脚本将使用标准的Unix shell。
  • echo : 打印
  • echo $TRILIUM_DATA_DIR: 打印当前 Trilium 数据存储位置的环境变量值
  • export TRILIUM_DATA_DIR=/media/shijunzhi/TOSHIBA/ProgramFiles/my-trilium-data: 重新设置 Trilium 数据存储位置的环境变量,将其设置为新的路径
  • echo $TRILIUM_DATA_DIR: 打印修改后的 Trilium 数据存储位置的环境变量值
  • nohup ./trilium &: 后台启动 Trilium。nohup 命令使程序在后台运行,并忽略挂起信号。& 使 shell 在后台运行该命令

双开Trilium

Windows 批处理文件 startWindows.bat

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
@echo off
::这几句是为防止乱码的
REM 
chcp 65001
CLS
echo =====当前的Trilium数据存储位置环境变量是=====
set TRILIUM_DATA_DIR
echo =====重新设置Trilium数据存储位置环境变量=====
::这个 H:\ProgramFiles\my-trilium-data 可以替换成 你想要的 位置
::这样每次启动就用 指定的 临时 环境变量
set TRILIUM_DATA_DIR=H:\ProgramFiles\my-trilium-data
echo =====修改后Trilium数据存储位置环境变量是=====
set TRILIUM_DATA_DIR
echo =====当前的Trilium启动端口是=====
set TRILIUM_PORT
echo =====重新设置Trilium启动端口=====
set TRILIUM_PORT=8090
echo =====修改后Trilium启动端口是=====
set TRILIUM_PORT
echo =====后台启动trilium=====
start /b trilium.exe

Linux 脚本 startLinux.sh

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#!/bin/sh
echo "=====当前的Trilium数据存储位置环境变量是====="
echo $TRILIUM_DATA_DIR
echo "=====重新设置Trilium数据存储位置环境变量====="
export TRILIUM_DATA_DIR=/media/shijunzhi/TOSHIBA/ProgramFiles/my-trilium-data
echo "=====修改后Trilium数据存储位置环境变量是====="
echo $TRILIUM_DATA_DIR
echo "=====当前的Trilium启动端口是====="
echo $TRILIUM_PORT
echo "=====重新设置Trilium启动端口====="
export TRILIUM_PORT=8100
echo "=====修改后Trilium启动端口是====="
echo $TRILIUM_PORT
echo "=====后台启动Trilium====="
nohup ./trilium &

使用说明

比如在 Windows 系统上,我可以写 2 个批处理文件

  • startWindowsWork.bat 存储位置是 H:\ProgramFiles\work-trilium-data 端口是 8090
  • startWindowsLife.bat 存储位置是 H:\ProgramFiles\life-trilium-data 端口是 8100

这样,我就可以同时启动 2Trilium,一个用来记录工作笔记,另一个用来记录生活娱乐笔记,两个相互独立,互不干扰

还原备份

英文文档对于还原备份的描述:

Let’s assume you want to restore the weekly backup, here’s how to do it:

  • find data directory Trilium uses - easy way is to open “About Trilium Notes” from “Menu” in upper left corner and looking at “data directory”
  • I’ll refer to as data directory from now on ~/trilium-data
  • find - this is the document backup ~/trilium-data/backup/backup-weekly.db
  • at this point stop/kill Trilium
  • delete , and (latter two files are auto generated) /trilium-data/document.db、/trilium-data/document.db-wal、~/trilium-data/document.db-shm
  • copy and rename this to /trilium-data/backup/backup-weekly.db、/trilium-data/document.db
  • make sure that the file is writable, e.g. with chmod 600 document.db
  • start Trilium again If you have configured sync then you need to do it across all members of the sync cluster, otherwise older version (restored backup) of the document will > be detected and synced to the newer version.
翻译:

我们假设您想恢复每周备份,以下是操作步骤:

  • 找到 Trilium 使用的数据目录 - 简单方法是打开左上角 “菜单” 中的 “关于 Trilium Notes”,并查看 “数据目录”
  • 从现在开始,我将称之为 “~/trilium-data”
  • 找到 - 这是文档备份 “~/trilium-data/backup/backup-weekly.db”
  • 此时停止/杀死 Trilium
  • 删除 (~/trilium-data/document.db 和 ~/trilium-data/document.db-wal 和 ~/trilium-data/document.db-shm) 这三个文件(后两个文件是自动生成的)
  • 复制 “/trilium-data/backup/backup-weekly.db” 文件并将他重命名为 “/trilium-data/document.db”
  • 确保该文件可写,例如使用 “chmod 600 document.db” 命令
  • 重新启动Trilium 如果您已配置同步,则需要将其应用于同步集群的所有成员,否则将检测到旧版本(已恢复备份)的文档并将其同步到新版本。

总结:/trilium-data/backup 文件夹下放的备份是数据,根据名称可知,分别是 每日、每周、每月备份,我们可以在 triliun 中的备份选项中点击 立即备份,生成当前时间点的备份数据,/trilium-data 文件夹下的 document.db 是我们正在使用的数据文件,将 /trilium-data 文件夹下的 document.db、document.db-wal、document.db-shm 删除,将我们复制的备份文件复制到 /trilium-data 文件夹下并重命名位 document.db,然后启动 trilium


0%