当前位置: 首页 > news >正文

如何搭建开源笔记Joplin服务并实现远程访问本地数据

文章目录

    • 1. 安装Docker
    • 2. 自建Joplin服务器
    • 3. 搭建Joplin Sever
    • 4. 安装cpolar内网穿透
    • 5. 创建远程连接的固定公网地址

Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能,只有实现了多端同步,我们才能在工作电脑和手机之间无缝切换笔记体验。

本文介绍如何在自己的服务器上利用docker搭建 Joplin Server,并对同步进行配置,再结合cpolar内网穿透工具实现公网远程访问本地Joplin Sever。

1. 安装Docker

本篇文章演示环境为CentOS 7,使用Xshell7进行ssh,需安装Docker,小编在本地Windows中已安装Joplin app,如未安装可到 Joplin官网中安装下载,支持多个版本下载。

Joplin官网地址:https://joplinapp.org/

没有安装Docker的小伙伴需安装Docker:

本教程操作环境为Linux CentOS 7系统,在开始之前,我们需要先安装Docker。

在终端中执行下方命令:

添加Docker源

# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg# Add the repository to Apt sources:
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装Dokcer包

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

通过运行映像来验证 Docker 引擎安装是否成功

sudo docker run hello-world

2. 自建Joplin服务器

建立 /data/joplin/docker-compose.yml 文件,首先创建一个/data/joplin/目录

mkdir -p /data/joplin

进入joplin目录中

cd data/joplin

添加compose配置文件

vim docker-compose.yml

内容如下

version: '3'
services:db:image: postgres:13volumes:- ./data/postgres:/var/lib/postgresql/dataports:- "5432:5432"restart: unless-stoppedenvironment:- POSTGRES_PASSWORD=joplin- POSTGRES_USER=joplin- POSTGRES_DB=joplinapp:image: joplin/server:latestdepends_on:- dbports:- "22300:22300"restart: unless-stoppedenvironment:- APP_PORT=22300- APP_BASE_URL=https://joplin.cpolar.cn- DB_CLIENT=pg- POSTGRES_PASSWORD=joplin- POSTGRES_DATABASE=joplin- POSTGRES_USER=joplin- POSTGRES_PORT=5432- POSTGRES_HOST=db

在/data/joplin/目录中,执行

docker compose up -d

打开新的浏览器访问 http://192.168.149.143:22300,本机IP加上端口号

默认用户名admin@localhost密码admin

image-20240125124047153

3. 搭建Joplin Sever

在Joplin客户端中,点击上方工具,选择 选项,点击 同步,同步目标选择 JoplinServer,

068361c8c44f9fd858da3383ab7cf23

e2dcedee94873affedfb6034db77bc4

Joplin服务器URL:https://joplin.cpolar.cn
Joplin服务器邮箱:选择admin@localhost或者在管理页面自行创建
Jpolin服务器密码:选择admin或者在管理页面自行创建
点“检查同步配置”,显示“成功!同步配置看起来没问题”即可

image-20240126133457159

这个时候我们在客户端编辑完文章后,回到 Joplin主界面点击 同步

31752e8bfc2a579411bc20dbf61eed2

我们再回到 JoplinServer界面来看一下数据库是否同步,重新登陆一下,可以看到后台文件

image-20240125124545702

我们就成功在本地搭建了Joplin Server,但是想实现无需公网IP环境来远程访问Joplin Server里的数据库内容,就需要借助cpolar内网穿透工具来实现公网访问了!接下来介绍一下如何安装cpolar内网穿透并实现Joplin Server公网访问!

4. 安装cpolar内网穿透

下面是安装cpolar步骤:

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

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 向系统添加服务
sudo systemctl enable cpolar
  • 启动cpolar服务
sudo systemctl start cpolar

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

image-20230831171159175

5. 创建远程连接的固定公网地址

我们接下来为其配置固定的HTTP端口地址,该地址不会变化,还可以自定义域名,方便分享给别人长期查看你的博客,而无需每天重复修改服务器地址。

配置固定http端口地址需要将cpolar升级到专业版套餐或以上。

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20240125131215050

保留成功后复制保留成功的二级子域名的名称

image-20240125131306464

回到cpolar web UI管理界面后,点击左侧仪表盘的隧道管理——创建隧道

  • 隧道名称:可自定义,注意不要与已有的隧道名称重复,本例使用了:joplin
  • 协议:http
  • 本地地址:22300
  • 域名类型:二级子域名
  • Sub Domain:Joplin (刚才创建的二级子域名)
  • 地区:选择China
  • 点击高级,选择Host头域 填写joplin.cpolar.cn

点击创建

image-20240126131812348

创建成功后,打开左侧在线隧道列表,查看刚刚创建隧道后生成两个公网地址,接下来就可以在其他电脑(异地)上,使用任意一个地址复制到浏览器访问即可,登陆后可以看到数据库信息。

image-20240126133610149

image-20240126134121093

这样一个固定且永久不变的公网地址就设置好了,并且无需公网IP环境,无需额外购买服务器!成功实现了在异地我们也可以进行远程访问JoplinServer!

相关文章:

如何搭建开源笔记Joplin服务并实现远程访问本地数据

文章目录 1. 安装Docker2. 自建Joplin服务器3. 搭建Joplin Sever4. 安装cpolar内网穿透5. 创建远程连接的固定公网地址 Joplin 是一个开源的笔记工具,拥有 Windows/macOS/Linux/iOS/Android/Terminal 版本的客户端。多端同步功能是笔记工具最重要的功能,…...

免费分享一套微信小程序外卖跑腿点餐(订餐)系统(uni-app+SpringBoot后端+Vue管理端技术实现) ,帅呆了~~

大家好,我是java1234_小锋老师,看到一个不错的微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现) ,分享下哈。 项目视频演示 【免费】微信小程序外卖跑腿点餐(订餐)系统(uni-appSpringBoot后端Vue管理端技术实现)…...

后端学习:数据库MySQL学习

数据库简介 数据库:英文为 DataBase,简称DB,它是存储和管理数据的仓库。   接下来,我们来学习Mysql的数据模型,数据库是如何来存储和管理数据的。在介绍 Mysql的数据模型之前,需要先了解一个概念&#xf…...

2024最新版IntelliJ IDEA安装使用指南

2024最新版IntelliJ IDEA安装使用指南 Installation and Usage Guide to the Latest JetBrains IntelliJ IDEA Community Editionn in 2024 By JacksonML JetBrains公司开发的IntelliJ IDEA一经问世,就受到全球Java/Kotlin开发者的热捧。这款集成开发环境&#xf…...

消息中间件及java线程池

1. ActiveMQ是什么? Apache ActiveMQ是一个开源的消息中间件(Message Oriented Middleware, MOM),它遵循Java消息服务(Java Message Service, JMS)规范,提供高效、可靠和异步的消息传递功能。Ac…...

关于axios给后端发送数据的问题

这里需要用的插件:qs.js,是前端给后端发送的数组,需要序列化所以要用到这个插件,这里就提取连接在这里,需要的自提,需要导如进来,别忘记了 链接:https://pan.baidu.com/s/1qyD8v9wfd…...

web前端之ES6的实用深度解构赋值方法、复杂的解构赋值

MENU 前言解构对象解构数组解构混用 前言 ES6中允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构(Destructuring)。 使用解构赋值可以将复杂的代码整理的更加干净整洁。 解构对象 在没有使用解构之前,想要确定…...

uni-app 接口封装,token过期,自动获取最新的token

一、文件路径截图 2、新建一个文件app.js let hosthttp://172.16.192.40:8083/jeecg-boot/ //本地接口 let myApi {login: ${host}wx/wxUser/login, //登录 } module.exports myApi 3、新建一个文件request.js import myApi from /utils/app.js; export const r…...

AWS免费套餐——云存储S3详解

文章目录 前言一、为什么选择S3二、费用估算三、创建S3云存储注册账户登录账户创建存储桶关于官网相关文档 总结 前言 不论个人还是企业,日常开发中经常碰到需要将文档、安装包、日志等文件数据存储到服务器的需求。往常最常用的是云服务器,但是仅仅承担…...

2723. 两个 Promise 对象相加

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 给定两个 promise 对象 promise1 和 promise2,返回一个新的 promise。promise1 …...

【方法论】费曼学习方法

费曼学习方法是由诺贝尔物理学奖得主理查德费曼提出的一种学习方法。这种方法强调通过将所学的知识以自己的方式解释给别人来提高学习效果。 费曼学习方法的步骤如下: 选择一个概念:选择一个要学习的概念或主题。 理解和学习:用自己的方式学…...

Transformer模型 | Pytorch实现Transformer模型进行时间序列预测

Transformer模型最初是为了处理自然语言处理任务而设计的,但它也可以用于时间序列预测。下面是将Transformer模型应用于时间序列预测的一般步骤: 数据准备:准备时间序列数据集,包括历史观测值和目标预测值。通常,你需要将时间序列转换为固定长度的滑动窗口序列,以便输入…...

Git推送大量内容导致http 413错误

Git推送大量内容导致服务端HTTP 413错误 问题描述 使用git push 大量变更内容(超过60M)时报 http 413错误,详细错误信息: Compressing objects: 100% (2907/2907), done. Writing objects: 100% (6760/6760), 64.18 MiB | 1.18…...

pytest框架的基本使用

1. 测试框架的作用 测试框架不关系用例的内容 它关心的是:用例编排和结果收集 2. pytest框架的特点 1. 适用于python语言 2. 用法符合python风格 3. 有丰富的生态 3. 安装pytest框架 1. 新建一个项目 2. 在项目终端窗口输入如下命令,用于安装py…...

C++STL之map、set的使用和模拟实现

绪论​: “我这个人走得很慢,但是我从不后退。——亚伯拉罕林肯”,本章是接上一章搜索二叉树中红黑树的后续文章,若没有看过强烈建议观看,否则后面模拟实现部分很看懂其代码原理。本章主要讲了map、set是如何使用的&am…...

100天精通鸿蒙从入门到跳槽——第18天:ArkTS组件状态管理装饰器

博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — 面试准备的宝典!《IDEA开发秘籍》 — 提升你的IDEA技能!《100天精通Golang》 — Go语言学习之旅!《100天精通鸿蒙》 — 从Web/安卓到鸿蒙大师!100天…...

【前端】防抖

防抖用于限制连续触发的事件的执行频率。当一个事件被触发时,防抖会延迟一定的时间执行对应的处理函数。如果在延迟时间内再次触发了同样的事件,那么之前的延迟执行将被取消,重新开始计时 场景 :用户输入 项目中遇到的场景,需要鼠标悬浮在图表的时候,将ToolsTip里的数据…...

python对图片或文件的操作

一. base64 与图片的相互转换 1. base64 转图片 import base64 from io import BytesIO from PIL import Image# base64 编码的图像数据(示例) base64_data "iVBn9DHASKJDjDsdSADSf8lgg"# 将 base64 编码的字符串解码为二进制数据 binary_d…...

架构篇19:单服务器高性能模式-Reactor与Proactor

文章目录 ReactorProactor小结上篇介绍了单服务器高性能的 PPC 和 TPC 模式,它们的优点是实现简单,缺点是都无法支撑高并发的场景,尤其是互联网发展到现在,各种海量用户业务的出现,PPC 和 TPC 完全无能为力。今天我将介绍可以应对高并发场景的单服务器高性能架构模式:Rea…...

PyInstaller 将 Python 程序生成可直接运行的程序

图标转换地址:https://convert.app/#google_vignette 官方文档:https://readthedocs.org/projects/pyinstaller/downloads/pdf/stable/#page20 安装pyinstaller pip install pyinstaller执行打包 pyinstaller -i ./resource/w.icns -w -F whv.py --a…...

抖音数字资产管理方法论:构建个人内容沉淀系统的技术实践

抖音数字资产管理方法论:构建个人内容沉淀系统的技术实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

IPFS去中心化存储实战指南:黑马程序员音乐播放器项目开发完整教程

IPFS去中心化存储实战指南:黑马程序员音乐播放器项目开发完整教程 【免费下载链接】BlockChain 黑马程序员 120天全栈区块链开发 开源教程 项目地址: https://gitcode.com/gh_mirrors/blockchain95/BlockChain 你是否想过如何构建一个真正去中心化的音乐播放…...

隧道裂缝剥落病害AI识别系统

我国现有公路隧道超2.5万座,总里程超2.8万公里,其中运营超过15年的老旧隧道占比达35%。据交通运输部2025年统计,年均因隧道结构病害导致的交通中断超1200次,直接经济损失超45亿元。传统检测模式暴露四大核心痛点:检测周…...

机器学习模型评估中的构念效度:超越基准测试分数的科学推断

1. 项目概述与核心问题在机器学习的日常研究和工程实践中,我们每天都在和各种各样的基准测试(Benchmark)打交道。无论是为了比较新提出的ResNet变体在ImageNet上的Top-1准确率,还是评估一个大型语言模型在MMLU上的常识推理能力&am…...

从BUG()到panic:深入Linux 5.4内核,看异常处理如何层层递进

从BUG()到panic:Linux内核异常处理的防御体系全解析当你在深夜调试一个内核模块时,突然屏幕刷出一串红色警告——这可能是每个Linux内核开发者都经历过的噩梦时刻。但你是否想过,从第一行警告出现到系统完全崩溃,内核究竟经历了怎…...

深度解析DeTikZify:科研工作者的智能图表生成神器

深度解析DeTikZify:科研工作者的智能图表生成神器 【免费下载链接】DeTikZify Synthesizing Graphics Programs for Scientific Figures and Sketches with TikZ. 项目地址: https://gitcode.com/gh_mirrors/de/DeTikZify 在科研工作中,创建高质量…...

LangGraph状态机工程:构建复杂AI工作流的完整指南

传统RAG(检索增强生成)在处理简单的"单跳"问题时表现良好——“文章里提到了什么” “这个概念是什么意思”——但当问题涉及多个实体之间的关系、需要跨多个文档推理时,传统RAG就显得力不从心。GraphRAG(Graph-based R…...

航空发动机叶片三维扫描-诺斯顿

航空发动机叶片作为发动机的核心动力部件,其精度与性能直接决定发动机的推力、燃油效率及运行安全性,三维扫描技术作为航空制造领域的核心数字化手段,已广泛应用于叶片全生命周期的多个关键环节。其应用涵盖叶片研发设计阶段的逆向工程&#…...

万星easy-vibe:描述需求即发布 零基础无需学语法

开源Easy-Vibe是一套开源AI编程学习方案,把学习顺序从先学语法再做项目翻转为直接做项目。文章拆解了项目驱动、提示词编写、AI编辑器和多Agent协作的完整流程,解释了为什么想法比语法更重要。 github上datawhalechina/easy-vibe:它在GitHub…...

通过Taotoken标准OpenAI协议实现分钟级集成现有代码

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 通过Taotoken标准OpenAI协议实现分钟级集成现有代码 1. 迁移背景与核心思路 许多开发团队在构建AI应用时,会直接使用O…...