Linux系统Docker部署开源在线协作笔记Trilium Notes与远程访问详细教程

news2025/5/17 14:29:42

今天和大家分享一款在 G 站获得了 26K+的强大的开源在线协作笔记软件,Trilium Notes 的中文版如何在 Linux 环境使用 docker 本地部署,并结合 cpolar 内网穿透工具配置公网地址,轻松实现远程在线协作的详细教程。

光

Trilium Notes 是一个层次化的笔记应用程序,专注于建立大型个人知识库。

主要功能如下:

  • 笔记可以排列成任意深的树。单个笔记可以放在树中的多个位置(请参阅克隆)
  • 丰富的所见即所得笔记编辑功能,包括带有 Markdown 自动格式化功能的表格,图像和数学
  • 支持编辑使用源代码的笔记,包括语法高亮显示
  • 笔记之间快速导航,全文搜索和笔记聚焦
  • 无缝笔记版本控制
  • 笔记属性可用于笔记组织,查询和高级脚本编写
  • 同步与自托管同步服务器
  • 有一个第三方提供的同步服务器托管服务
  • 公开地分享(发布)笔记到互联网
  • 具有按笔记粒度的强大的笔记加密
  • 使用自带的 Excalidraw 来绘制图表(笔记类型“画布”)
  • 关系图和链接图,用于可视化笔记及其关系
  • 脚本 - 请参阅高级功能展示
  • 在拥有超过 10 万条笔记时仍能保持良好的可用性和性能
  • 针对智能手机和平板电脑进行优化的用于移动设备的前端
  • 夜间主题
  • Evernote 和 Markdown 导入导出功能
  • 使用网页剪藏轻松保存互联网上的内容

但是,它对于中文的支持不太全面,不过有位 Nriver 大佬对其进行了二次编译开发,对其进行了汉化以及部分修改:

  • 界面文字修改成中文
  • 附带的示例笔记汉化, 并加入了大量实用内容
  • 优化部分界面的中文显示问题
  • 替换画布笔记的 excalidraw 内置字体为中文手写字体
  • 修改 ckeditor 的代码, 可以使用中文的 ··· 来触发代码块
  • 加入了作者个人做的 Nier 主题

下面就来分享一下具体部署流程。

1. 安装 docker 与 docker-compose

本例环境为 Ubuntu 18.04

执行下方命令安装:

sudo apt update sudo apt install -y docker.io docker-compose

然后在 Home 目录下的 docker 文件夹新增该项目目录:

/etc/docker# mkdir trilium-cn

在该项目中创建docker-compose.yml

这里使用了该作者编写的 docker-compose.yml,大家有需要修改的地方也可以自行修改:

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

2. 启动容器运行镜像

执行下方命令启动容器运行镜像

sudo docker-compose up -d

image-20240726185154688

3. 本地访问测试

容器启动后,在浏览器输入 http://127.0.0.1:8080 即可访问:

image-20240726185328864

进入项目 web 页面后,首先需要在三个选项中进行选择,这里我选择新用户:

image-20240726185433877

经过初始化设置后,会提示设置密码:

image-20240726185459114

设置密码后登录,即可进入笔记主界面:

image-20240726185649136

左边的状态栏可以看出,它的功能确实挺多的。而在右边可以看到作者提示,第一次使用的新手不要删掉这个内置的笔记,作者贴心的为大家标注了使用技巧,对减少上手的学习时间非常有帮助,再次为大佬点赞!

点击新笔记,既可根据当前日期创建一篇新笔记:

image-20240726190652523

1721992387814

输入 markdown 语法发现问题时,可以在左侧的技巧中进行查看,熟悉之后用起来还是非常流畅的。

image-20240726191601843

4.安装内网穿透

目前我们已经在本地搭建好了中文版的 Trilium 笔记,但如果没有公网 IP 的话,只能在本地局域网环境使用,有一定局限性。如果出门在外想要远程访问使用的话,可以结合 Cpolar 内网穿透工具生成公网地址,免去了本地重新部署过程,只需要使用公网地址直接就可以访问本地部署的服务,随时随地远程使用。

下面是安装 cpolar 步骤:

Cpolar 官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令

shell curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash

  • 向系统添加服务

shell sudo systemctl enable cpolar

  • 启动 cpolar 服务

shell sudo systemctl start cpolar

cpolar 安装成功后,在外部浏览器上访问 Linux 的 9200 端口即:【http://局域网 ip:9200】,使用 cpolar 账号登录,登录后即可看到 cpolar web 配置界面,结下来在 web 管理界面配置即可:

image-20230831171159175

5. 创建公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个 Trilium 的公网地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择 http
  • 本地地址:8080
  • 域名类型:免费选择随机域名
  • 地区:选择 China vip

点击创建

image-20240729103034699

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,生成了两种访问方式,一种是 http 和 https,任选其一到浏览器访问即可。

image-20240729103502555

可以看到成功访问,这样就可以分享好友或者自己随时随地远程访问本地搭建的站点了。使用了 Cpolar 的公网域名,无需自己购买云服务器,即可在公网访问本地部署的服务了!

image-20240729103737857

image-20240729103631428

6. 创建固定公网地址

不过由于以上使用 cpolar 所创建的隧道使用的是随机公网地址,24 小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn 已备案】

注意需要将 cpolar 套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn 已备案】

登录 cpolar 官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称:我以 mytrilium 为例,大家可以自己设置。

image-20240729104031191

返回登录 cpolar web UI 管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道 Trilium,点击右侧的编辑:

image-20240729104135963

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名:mytrilium

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240729104323109

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址名称也变成了固定的二级子域名名称的域名:

image-20240729104547553

最后,我们使用固定的公网地址访问本地搭建的 Trilium Notes 笔记,可以看到访问成功,这样一个固定且永久不变的公网地址就设置好了。

image-20240729104701543

image-20240729104724285 以上就是如何在 Linux 系统本地使用 docker 部署一个 Trilium Notes 笔记服务,并结合 cpolar 内网穿透工具实现一键发布公网,随时随地远程访问并使用的全部流程。感谢您的观看,有任何问题欢迎留言交流。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2333088.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++基础精讲-01

1C概述 1.1初识C 发展历程: C 由本贾尼・斯特劳斯特卢普在 20 世纪 70 年代开发,它在 C 语言的基础上增加了面向对象编程的特性,最初被称为 “C with Classes”,后来逐渐发展成为独立的 C 语言。 语言特点 (1&#x…

为什么Java不支持多继承?如何实现多继承?

一、前言 Java不支持多继承(一个类继承多个父类)主要出于文中设计考虑;核心目的是简化语言复杂性并避免潜在的歧义性问题。 二、直接原因:菱形继承/钻石继承问题(Diamond Problem) 假设存在如下继承关系&…

[特殊字符] Spring Boot 日志系统入门博客大纲(适合初学者)

一、前言 📌 为什么日志在项目中如此重要? 在开发和维护一个后端系统时,日志就像程序运行时的“黑匣子”,帮我们记录系统的各种行为和异常。一份良好的日志,不仅能帮助我们快速定位问题,还能在以下场景中…

Express中间件(Middleware)详解:从零开始掌握(1)

1. 中间件是什么? 想象中间件就像一个"加工流水线",请求(Request)从进入服务器到返回响应(Response)的过程中,会经过一个个"工作站"进行处理。 简单定义:中间件是能够访问请求对象(req)、响应对象(res)和下…

现代工业测试的核心支柱:电机试验工作台?(北重机械厂家)

电机试验工作台是现代工业测试中的核心支柱之一。这种工作台通常用于对各种类型的电机进行性能测试、负载测试和耐久性测试。通过电机试验工作台,工程师可以评估电机的效率、功率输出、转速、扭矩、温度等关键参数,从而确保电机的设计符合要求&#xff0…

oracle 11g密码长度和复杂度查看与设置

verify_function_11G 的密码复杂性要求: 密码长度至少为 8 个字符。 密码必须包含至少一个数字和一个字母字符。 密码不能与用户名相同或相似。 密码不能是服务器名或其变体。 密码不能是常见的弱密码(如 welcome1、oracle123 等)。 注意事项&…

CVE-2025-32375 | Windows下复现 BentoML runner 服务器远程命令执行漏洞

目录 1. 漏洞描述2. 漏洞复现1. 安装 BentoML 1.4.72. 创建模型3. 构建模型4. 托管模型5. 执行exp 3. POC4. 补充学习 参考链接: https://mp.weixin.qq.com/s/IxLZr83RvYqfZ_eXhtNvgg https://github.com/bentoml/BentoML/security/advisories/GHSA-7v4r-c989-xh26 …

某局jsvmp算法分析(dunshan.js/lzkqow23819/lzkqow39189)

帮朋友看一个税某局的加密算法。 传送门 (需要帐号登陆的 普通人没授权也看不了) 废话不多说直接抓包开干 这里可以看到一个headers中的加密参数 lzkqow23819 以及url路径里面的6eMrZlPH(这个有点像瑞数里面的) 还有就是cookies里面的这几个…

AlmaLinux9.5 修改为静态IP地址

查看当前需要修改的网卡名称 ip a进入网卡目录 cd /etc/NetworkManager/system-connections找到对应网卡配置文件进行修改 修改配置 主要修改ipv4部分,改成自己的IP配置 [ipv4] methodmanual address1192.168.252.129/24,192.168.252.254 dns8.8.8.8重启网卡 …

操作系统 4.4-从生磁盘到文件

文件介绍 操作系统中对磁盘使用的第三层抽象——文件。这一层抽象建立在盘块(block)和文件(file)之间,使得用户可以以更直观和易于理解的方式与磁盘交互,而无需直接处理磁盘的物理细节如扇区(se…

免费多语言文档翻译软件推荐

软件介绍 今天给大家介绍一款文档翻译助手。它能够支持PDF、Word等多种文档格式,涵盖中文、英文、日语等多语言互译。此软件在翻译过程中精选保留文档原貌,每段文字、每个图表的匹配都十分完美,还依托顶尖翻译大模型,让翻译结果符…

安全序列(DP)

#include <bits/stdc.h> using namespace std; const int MOD1e97; const int N1e65; int f[N]; int main() {int n,k;cin>>n>>k;f[0]1;for(int i1;i<n;i){f[i]f[i-1]; // 不放桶&#xff1a;延续前一位的所有方案if(i-k-1>0){f[i](f[i]f[i-k…

【Flask开发】嘿马文学web完整flask项目第4篇:4.分类,4.分类【附代码文档】

教程总体简介&#xff1a;2. 目标 1.1产品与开发 1.2环境配置 1.3 运行方式 1.4目录说明 1.5数据库设计 2.用户认证 Json Web Token(JWT) 3.书架 4.1分类列表 5.搜索 5.3搜索-精准&高匹配&推荐 6.小说 6.4推荐-同类热门推荐 7.浏览记录 8.1配置-阅读偏好 8.配置 9.1项目…

SQL开发的智能助手:通义灵码在IntelliJ IDEA中的应用

SQL 是一种至关重要的数据库操作语言&#xff0c;尽管其语法与通用编程语言有所不同&#xff0c;但因其在众多应用中的广泛使用&#xff0c;大多数程序员都具备一定的 SQL 编写能力。然而&#xff0c;当面对复杂的 SQL 语句或优化需求时&#xff0c;往往需要专业数据库开发工程…

解决:AttributeError: module ‘cv2‘ has no attribute ‘COLOR_BGR2RGB‘

opencv AttributeError: module ‘cv2’ has no attribute ‘warpFrame’ 或者 opencv 没有 rgbd 解决上述问题的方法是&#xff1a; 卸载重装。 但是一定要卸载干净&#xff0c;仅仅卸载opencv-python是不行的。无限重复都报这个错。 使用pip list | grep opencv查看相关的…

NutriJarvis:AI慧眼识餐,精准营养触手可及!—— 基于深度学习的菜品识别与营养计算系统

NutriJarvis&#xff1a;AI慧眼识餐&#xff0c;精准营养触手可及&#xff01;—— 基于深度学习的菜品识别与营养计算系统 NutriJarvis 是一个基于深度学习的菜品识别与营养计算系统&#xff0c;旨在通过计算机视觉技术自动识别餐盘中的食物&#xff0c;并估算其营养成分&…

【LaTeX】

基本使用 \documentclass 类型&#xff1a;文章&#xff08;article&#xff09;、报告&#xff08;report&#xff09;、书&#xff08;book&#xff09; 中文的文章是ctexart&#xff0c;中文字体是UTF8 \documentclass[UTF8]{ctexart} []说明可以省略不写的意思&#xf…

细说STM32单片机FreeRTOS任务管理相关函数及多任务编程的实现方法

目录 一、FreeRTOS任务管理相关函数 1、FreeRTOS函数 2、FreeRTOS宏函数 3、主要函数功能说明 &#xff08;1&#xff09;创建任务osThreadNew() &#xff08;2&#xff09;删除任务vTaskDelete() &#xff08;3&#xff09;挂起任务vTaskSuspend() &#xff08;4&…

uniapp微信小程序基于wu-input二次封装TInput组件(支持点击下拉选择、支持整数、电话、小数、身份证、小数点位数控制功能)

一、 最终效果 二、实现了功能 1、支持输入正整数---设置specifyTypeinteger 2、支持输入数字&#xff08;含小数点&#xff09;---设置specifyTypedecimal&#xff0c;可设置decimalLimit来调整小数点位数 3、支持输入手机号--设置specifyTypephone 4、支持输入身份证号---设…

leetcode-419.棋盘上的战舰

leetcode-419.棋盘上的战舰 文章目录 leetcode-419.棋盘上的战舰一.题目描述二.第一次代码提交三.第二次代码提交 一.题目描述 二.第一次代码提交 class Solution { public:int countBattleships(vector<vector<char>>& board) {int m board.size(); //列数i…