👨‍💻 只是玩玩 | JUST FUN

trilium server服务安装流程

博客圈前段时间一直在讨论笔记应用,先是讨论印象笔记如何如何恶心,开了会员也有广告之类的。后来又讨论到那个笔记好,推荐的可谓五花八门,如mybase、notion之类的。

我以前没用过这一类的程序,也没搭建过个人知识库系统,但是了解到这个东西后又发现自己其实挺有需求的,最简单的例子就是在执行ubuntu命令的时候有些命令每次都去百度,但是下次又可能需要用上,然后又去百度,但是会查找到很多无效的内容。如果我把查找到的正确的内容收藏起来,下次直接打开不久好了么。

s所以还是有点心动的,notion之前尝试过国内的抄作业版:wolai,当时用不太懂,也没理解到这类工具的真正用途。这次再打开wolai有点豁然开朗的感觉,notion也很好,但是这类服务数据都是托管在运营商那边,我们并没有完全的把握权限让我有点不安。所以又试了很多工具,如:思源笔记、为知笔记、Obsidian、trilium等等

最后我选了trilium,我总结了一下选trilium的原因

  1. 开源
  2. 有中文版
  3. 可以使用markdown语法,所见既得
  4. 可以纯本地使用,也可以用docker搭建服务端同步。
  5. 有浏览器收藏工具
  6. 主题定制简单
  7. 更新频繁,提的issue两天内开发者都会跟进。至少后续出问题了不用担心没人管。

目前使用起来挺舒服的,改了一个主题,也把官方的插件都继承进来了。目前编辑器偶尔会出现打中文会出现有个字母在前面的bug,我用ghost的网页编辑器也会这样,不知道怎么回事。

这个版本的主题我frok了一份原版的,然后修改了一下night部分的css,如果你喜欢的话可以进行尝试。

GitHub - QingShui23/Allure-modify: A more beautiful and simple theme for trilium
A more beautiful and simple theme for trilium. Contribute to QingShui23/Allure-modify development by creating an account on GitHub.
另外:trilium完全可以不依赖server再本地运行,但是注意不要使用onedrive等第三方同步服务同步数据。因为trilium使用的是数据库,这样会导致数据库损坏。如果你使用过这种方式同步数据,你的原有数据将无法导入trilium server端中,只能新建,或者选择本地打包导出数据再进行导入。

安装流程

安装环境

Ubuntu 18-20,推荐Ubuntu 20.04 LTS

博客圈的均哥之前用centos6.7跟着这教程走连docker都装不上,所以建议还是用新一点的系统。理论上20年的系统版本应该都是没有问题的。

安装docker

拉取docker镜像

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

配置国内镜像源,并设置docker开机自动启动

$ mkdir -p /etc/docker/
$ echo "{'registry-mirrors': ['https://docker.mirrors.ustc.edu.cn']}" > /etc/docker/daemon.json
$ systemctl daemon-reload
$ systemctl start docker
# 把docker加入开机自启
$ systemctl enable docker

其他国内镜像源

网易 http://hub-mirror.c.163.com
ustc https://docker.mirrors.ustc.edu.cn
中国科技大学 https://docker.mirrors.ustc.edu.cn

申请ssl证书

现在有很多平台都可以免费申请ssl证书,因为我的域名备案在腾讯云的,所以我直接在腾讯申请了个免费的ssl证书。

登录后台,在搜索处搜索SSL,点击【域名与网站】下的【ssl证书】

点击【我的证书】-> 【申请免费证书】,然后按要求填资料就好了,一般十几分钟就能下来。

申请完后点列表的下载就可以下载到SSL的证书文件压缩包。

我们通过sftp工具或者其他的方式把证书压缩包里的nginx目录下的两个【.crt,.key】文件放到服务器上去,并记住存放路径,之后会用到。

配置nginx

我这边nginx的配置文件目录在etc/nginx/conf.d进入该目录,新增一个后缀为conf的nginx配置文件,内容如下:

server {
    listen              443 ssl;  
    server_name         #你的绑定的笔记域名;
    ssl_certificate     #你的证书crt文件地址;  
    ssl_certificate_key #你的证书key文件地址;
    ssl_session_cache   shared:SSL:1m;  
    ssl_session_timeout 5m;  
    ssl_ciphers         HIGH:!aNULL:!MD5;         
    ssl_prefer_server_ciphers  on;
   
   
 #因为我的主站没有ssl,不知道为什么如果手动输入https访问我的主站会跳转到这里,所以做了处理
   
 #如果你主站绑定了ssl,可以不用写这一段
    #location / {
	#if ( $host = "主站域名,不带www" ){
   		#return 301 http://$host$request_uri;
   	#}
	#if ( $host = "主站域名,带www" ){
   		#return 301 http://$host$request_uri;
   	#}

        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_pass http://127.0.0.1:8080;
        proxy_http_version 1.1;
    }


    location ~ /.well-known {
        allow all;
    }

    client_max_body_size 50m;
}

保存后用sudo nginx -s reload重启nginx服务

拉取trilium中文docker镜像

感谢以下这些作者们,让我们使用到了如此优秀的软件

  • 原版github地址:https://github.com/zadam/trilium
  • 汉化版github地址:https://github.com/Nriver/trilium-translation

拉取镜像(选一条,上面是中文的,下面是原版的)

docker pull nriver/trilium-cn 
docker pull zadam/trilium:latest

创建并启动容器

sudo docker run --name tmserver -t -i -p 127.0.0.1:8080:8080 -e TRILIUM_DATA_DIR='/home/node/trilium-data' -v /data/trilium-data:/home/node/trilium-data --restart=always nriver/trilium-cn 
参数说明:
--name 容器名称
-p 容器映射的ip和端口
-v 把容器里的trilium文件路径映射到vps上,防止容器停止后数据丢失
--restart=always 开机自动启动

现在访问你绑定的域名因该就可以使用了。