[个人项目] 基于 Vditor 二开个人笔记服务器的经历

2023-11-04 04:59

本文主要是介绍[个人项目] 基于 Vditor 二开个人笔记服务器的经历,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

在 2021 年 12 月15 号的时候,部署了人生中的第一个云笔记服务 —— 基于 Leanote 搭建私有笔记服务器。但是在试用过程中发现,并还没有想象中的那么好。(可能是我的要求比较高吧,既要实用,又要好看,🙈)

事实上,Leanote 不管各个方面都已经做的很不错了,基本上做到了要啥有啥,还全平台支持和简易博客的搭建,极其强大。但让我觉得不太舒服的地方如下:

  • 🤔 私有化版本不支持 流程图脑图 等等各种可能需要插件才能完成的笔记功能,云服务版是有的
  • 😂 用习惯了 Typora 的即使渲染模式,对分屏式 Markdown 写法多少还是生疏了,看着十分的不习惯
  • 🙃 私有化支持的主题中没有 暗黑模式,这对重度计算机使用者来说是非常不舒服的,看多了眼睛累
  • 🙈 界面个人不太喜欢(这是主要原因

然后经过几番寻找,找到了极其强大 Markdown 开源组件的 Vditor ,居然支持 Vue3,那就没什么好说的了,干就完事了。因此有了此项目,开发过程就不过多的说明了,如果感兴趣可以直接看源码,传送门:

https://gitee.com/Yogurt_cry/ccs-note

以下是亲测的 Docker 部署的流程,特此说明,以备后查

部署环境

信息说明
服务器系统版本Ubuntu 18.04.6 LTS (64位)
Docker 版本20.10.12
服务器配置天翼云 4 核 8G 4M带宽

部署步骤

Step 1 部署前准备

cd /home# 创建项目文件夹
mkdir CCSNote2_Test# 数据文件夹, 用于映射 mongodb 容器内容, 存放笔记
mkdir CCSNote2_Test/Data# 静态资源文件夹, 主要是用于存储笔记中的图片
mkdir CCSNote2_Test/Static
mkdir CCSNote2_Test/Static/Upload
mkdir CCSNote2_Test/Static/Upload/Note# 安装包文件夹, 主要是存放包文件
mkdir CCSNote2_Test/Install# 下载部署包
wget -P CCSNote2_Test/Install https://gitee.com/Yogurt_cry/ccs-note/attach_files/926748/download/CCSNote_v2.0.0.tar.gz# 解压部署包
tar zxvf CCSNote2_Test/Install/CCSNote_v2.0.0.tar.gz -C CCSNote2_Test/Install/ CCSNote_v2.0.0

Step 2 创建 MongoDB

# 拉取 mongodb 镜像
docker pull monogo# 运行镜像
docker run -itd --name CCSNOTE_V2_Test_Data --restart=always -p 27020:27017 -v /home/CCSNote2_Test/Data:/data/db mongo

这里 Yogurt 使用的是 27020 ,你可以根据实际情况调整自己的端口号

Step 3 修改配置文件

3.1 修改 Api 配置
vim /home/CCSNote2_Test/Install/CCSNote_v2.0.0/ccsNote/App/Config/Config.ini
# 数据库连接语句
# 本程序并未提供用户名和密码的登录模式,
# 因此千万不要将 MongoDB 的端口放置公网,
# 以避免数据泄露风险
MongoCNNQuery = mongodb://localhost:27017# 前端 Url
# 访问笔记的 Url
# 主要是用于跨域检测, 一般都是在同一个域名下的, 但端口不一致容易导致跨域的发生
WebUrl = http://localhost:8080
# 访问后端的 Url
# 主要是用在访问笔记中的图片, 自动构建访问路径
ApiUrl = http://localhost:19422

默认为 localhost ,但实际在 Docker 环境中,localhost 指的不是宿主机的 localhost ,而是容器的 localhost,因此需要修改为实际的内容。

  • MongoCNNQuery : 由于没有对 MongoDB 设置用户名和密码,因此建议使用内网 IP。可以使用 ifconfig 来查询。例如:Yogurt 的内网 IP 为 172.xx.xx.92 ,映射端口号为 27020。则填写的内容为:MongoCNNQuery = mongodb://172.xx.xx.92:27020
  • WebUrl : 可能是由于 Yogurt_cry 对 Go 语言的熟悉程度不够 (才接触了 15 天😂),还不能很好的解决跨域的问题,因此就先通过设置参数来吧。例如:Yogurt 的 Web 端外网域名为:http://note.yogurtcry.icu:8004,则填写的内容为:WebUrl = http://note.yogurtcry.icu:8004
  • ApiUrl : 这里的 ApiUrl 指的是上传访问图片的,一般来说可以在 Go 中使用 r.host 来解决,但第一次做就保险一点,先通过设置参数来。例如:Yogurt 的 Api 域名为:http://note.yogurtcry.icu:8014,则填写的内容为:ApiUrl = http://note.yogurtcry.icu:8014

设置完并保存即可。

完整配置如下:

# 数据库连接语句
# 本程序并未提供用户名和密码的登录模式,
# 因此千万不要将 MongoDB 的端口放置公网,
# 以避免数据泄露风险
MongoCNNQuery = mongodb://172.xxx.xxx.92:27020# 前端 Url
# 访问笔记的 Url
# 主要是用于跨域检测, 一般都是在同一个域名下的, 但端口不一致容易导致跨域的发生
WebUrl = http://note.yogurtcry.icu:8004
# 访问后端的 Url
# 主要是用在访问笔记中的图片, 自动构建访问路径
ApiUrl = http://note.yogurtcry.icu:8014
3.2 修改 Web 配置
vim /home/CCSNote2_Test/Install/CCSNote_v2.0.0/html/config/config.js
window.Config = {ApiUrl: "http://localhost:19422",SystemName: "创云笔记",Version: "v2.0.0"
}

基本上只要修改 ApiUrl 即可。ApiUrl 和 3.1 中的 ApiUrl 填写一致即可。

完整配置如下:

window.Config = {ApiUrl: "http://note.yogurtcry.icu:8014",SystemName: "创云笔记",Version: "v2.0.0"
}

Step 4 构建镜像

Dockerfile 不用修改任何东西,把 Step 3 的配置完成后直接构建镜像即可。

# 切换到 Dockerfile 文件所在目录
cd /home/CCSNote2_Test/Install/CCSNote_v2.0.0# 执行打包语句
docker build -t=yogurtcry/ccsnote:test .# 等待执行完成后, 查看打包结果
docker images
REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
yogurtcry/ccsnote   test      58bee4aaf470   22 seconds ago   174MB

Step 5 运行容器

docker run -itd --restart=always --name CCSNOTE_V2_Test -p 8014:19422 -p 8004:80 -v /home/CCSNote2_Test/Static/Upload/Note:/data/ccsNote/App/Static/Upload/Note yogurtcry/ccsnote:test

Step 6 访问笔记

云服务器是需要在安全组中设置指定端口才可以访问的,因此首次访问前,请确认端口的设置情况。按照以上的示例,我们应该开启 80148004 等两个端口。27020 不用开启,因为是内网访问的。

在浏览器中输入我们的网址:http://note.yogurtcry.icu:8004

4e9c60c4a80e3f76e619a2232f01304f.png

这里主要考虑的是私有化部署,因此什么注册流程全给省了,会以首次登录的账号密码作为笔记的账号密码。下次登录直接以此账号密码登录即可。

111b8ba0be5dc41bcbb5764f343cb97d.png

进来之后就可以看到主界面了。

嗯,大概就是这样了。

后记 1

这是一次很奇妙的开发经历,功能不复杂 (我这部分的功能不复杂,Vditor 那部分还是很复杂的),主要还是考虑体验问题吧。麻雀虽小,但要五脏俱全。利用业余时间,短短 15 天的时间里,做了 2 个版本。第一版主要想看看 Vidtor 的功能,以及需要熟悉一下 Go 的一些语法,做出来的效果就比较差了,就是黑白的。

82b9815b3185538dca890f75d8882043.png

f128744d9ed8b325ec7b75b538c77139.png

就连图标也是黑白的。谈不上好看吧,关键是连最基本的账号分离都没做,所有的笔记都在 “裸奔”。给好朋友看了一下,也被吐槽了😂 (这不废话嘛,做成这样)。汇总了一下朋友们的意见,重新设计的 UI,对首屏打开率做了点小小的优化,再给朋友看的时候:

2b80cfc1f7cac9eb8bd538bd92db5ebc.png

嗯,体验好了很多 哈哈哈。

后记 2

其实整个项目的核心部分就是 Vditor ,在开发的过程中,对这个开源项目有了很深的敬意,是我们国家的团队开发的哦。非常感谢他们的付出,才让我们可以用到了如此好的组件。

人生中第一次为开源项目捐赠,能力有限,虽然不多,聊表心意。后面能力大了,会加油支持开源社区的,嘿嘿,希望这一天早点到来。

这篇关于[个人项目] 基于 Vditor 二开个人笔记服务器的经历的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/343396

相关文章

Springboot项目启动失败提示找不到dao类的解决

《Springboot项目启动失败提示找不到dao类的解决》SpringBoot启动失败,因ProductServiceImpl未正确注入ProductDao,原因:Dao未注册为Bean,解决:在启... 目录错误描述原因解决方法总结***************************APPLICA编

Python极速搭建局域网文件共享服务器完整指南

《Python极速搭建局域网文件共享服务器完整指南》在办公室或家庭局域网中快速共享文件时,许多人会选择第三方工具或云存储服务,但这些方案往往存在隐私泄露风险或需要复杂配置,下面我们就来看看如何使用Py... 目录一、android基础版:HTTP文件共享的魔法命令1. 一行代码启动HTTP服务器2. 关键参

在IntelliJ IDEA中高效运行与调试Spring Boot项目的实战步骤

《在IntelliJIDEA中高效运行与调试SpringBoot项目的实战步骤》本章详解SpringBoot项目导入IntelliJIDEA的流程,教授运行与调试技巧,包括断点设置与变量查看,奠定... 目录引言:为良驹配上好鞍一、为何选择IntelliJ IDEA?二、实战:导入并运行你的第一个项目步骤1

SpringBoot改造MCP服务器的详细说明(StreamableHTTP 类型)

《SpringBoot改造MCP服务器的详细说明(StreamableHTTP类型)》本文介绍了SpringBoot如何实现MCPStreamableHTTP服务器,并且使用CherryStudio... 目录SpringBoot改造MCP服务器(StreamableHTTP)1 项目说明2 使用说明2.1

IntelliJ IDEA2025创建SpringBoot项目的实现步骤

《IntelliJIDEA2025创建SpringBoot项目的实现步骤》本文主要介绍了IntelliJIDEA2025创建SpringBoot项目的实现步骤,文中通过示例代码介绍的非常详细,对大家... 目录一、创建 Spring Boot 项目1. 新建项目2. 基础配置3. 选择依赖4. 生成项目5.

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

mysql中的服务器架构详解

《mysql中的服务器架构详解》:本文主要介绍mysql中的服务器架构,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、背景2、mysql服务器架构解释3、总结1、背景简单理解一下mysqphpl的服务器架构。2、mysjsql服务器架构解释mysql的架

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Linux如何快速检查服务器的硬件配置和性能指标

《Linux如何快速检查服务器的硬件配置和性能指标》在运维和开发工作中,我们经常需要快速检查Linux服务器的硬件配置和性能指标,本文将以CentOS为例,介绍如何通过命令行快速获取这些关键信息,... 目录引言一、查询CPU核心数编程(几C?)1. 使用 nproc(最简单)2. 使用 lscpu(详细信