【Docker项目实战】使用Docker部署Xnote轻量级笔记系统

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群版 2核4GB 100GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用版 2核4GB 50GB
简介: 【6月更文挑战第19天】使用Docker部署Xnote轻量级笔记系统

一、Xnote介绍

1.1 Xnote简介

  • Xnote简介

xnote是一款面向个人的轻量级笔记系统,提供多种维度的数据管理功能,致力于把个人从信息过载中解放出来。

1.2 Xnote特点

  • 拥有丰富的数据管理能力,支持多种笔记格式以及文件管理功能
  • 默认提供了一些常用的工具,同时提供扩展能力,用户可以编写各种插件满足自己的需求
  • 跨平台,支持Windows、Mac、Linux三大平台,可以在云服务上部署,也可以在本地运行
  • 100%自由的数据控制权,可以运行在多种数据库环境中
  • 支持小规模的多用户,面向多用户的商业场景使用请谨慎

1.3 Xnote使用场景

  • 个人笔记管理:xnote可以帮助个人快速记录和整理各种类型的笔记,包括文本、图片、链接等。用户可以根据需求创建不同的笔记本,将相关的笔记整理在一起,并且可以通过标签、分类等方式进行细致的管理。

  • 项目管理:xnote提供了任务和标签的功能,可以用于个人或小团队的项目管理。用户可以创建任务,在任务中添加子任务、设置截止日期和优先级,还可以给任务打上标签,方便快速筛选和查找。

  • 知识管理:xnote支持富文本编辑,用户可以灵活地创建和编辑自己的知识库。可以将学习笔记、技术文档、网页链接等都整理到xnote中,方便自己查阅和复习。

  • 时间管理:xnote提供了提醒功能,用户可以设置提醒时间,让自己不会错过重要的事项。同时,用户还可以将待办事项与日历同步,更加高效地安排和管理时间。

  • 团队协作:xnote支持多人协作,团队成员可以共享笔记本和任务,方便团队成员之间的沟通和合作。而且,xnote还提供评论和反馈的功能,让团队成员可以及时交流和讨论。

二、本地环境介绍

2.1 本地环境规划

本次实践为个人测试环境,操作系统版本为centos7.6。

hostname IP地址 操作系统版本 Docker版本
dokcer 192.168.3.166 centos 7.6 2 20.10.17

2.2 本次实践介绍

1.本次实践部署环境为个人测试环境,生产环境请谨慎;
2.使用Docker部Xnote轻量级笔记系统。

三、本地环境检查

3.1 检查Docker服务状态

检查Docker服务是否正常运行,确保Docker正常运行。

[root@jeven ~]# systemctl status docker
● docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
   Active: active (running) since Thu 2024-03-21 18:42:13 CST; 3min 53s ago
     Docs: https://docs.docker.com
 Main PID: 43305 (dockerd)
    Tasks: 82
   Memory: 103.6M
   CGroup: /system.slice/docker.service

3.2 检查Docker版本

检查Docker版本

[root@jeven ~]# docker -v
Docker version 20.10.17, build 100c701

3.3 检查docker compose 版本

检查Docker compose版本,确保2.0以上版本。

[root@jeven ~]# docker compose version
Docker Compose version v2.6.0

四、下载Xnote镜像

在华为云镜像仓库中拉取Xnote镜像

[root@jeven xnote]# docker pull swr.cn-north-4.myhuaweicloud.com/jeven/xnote
Using default tag: latest
latest: Pulling from jeven/xnote
Digest: sha256:10a511df294788bcb8fa9f2c98bdd3a66b48ef65222347d55c1af030e131dbdf
Status: Image is up to date for swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest
swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest

五、部署署Xnote应用

5.1 创建部署目录

创建部署目录

mkdir -p /data/xnote/data && cd /data/xnote

目录授权

 chmod -R 777 /data/xnote/

5.2 编辑boot.properties文件

编辑boot.properties文件,主要修改db_driver = sqlite部分,定义数据库类型,这里直接使用sqlite数据库。

vim boot.properties
# 这是系统默认配置,请不要编辑
# 配置项使用下划线(_)划分模块和单词,除了最后一个(.type),其他地方不要使用(.)
# 关于数字的说明
# kb/mb/gb/tb/pb的进位是1024, k/m的进位是1000
# 例如: 1kb = 1024, 1k = 1000

# 数据存储的根目录
data = ./data

# HTTP服务的端口号
port = 1234

# 服务器根目录,默认是空(根路径)
server_home = 

# 最小线程数
min_threads = 15
min_threads.type = int

# 是否开启调试模式
debug = false
debug.type = bool

# 启动后是否自动打开浏览器(在桌面运行的选项)
open_browser = false
open_browser.type = bool

# 启动后是否播放语音提示
ringtone = false
ringtone.type = bool

# 是否强制跳转https
force_https = false
force_https.type = bool

# 是否快速重载(开发模式使用)
fast_reload = false
fast_reload.type = bool

# TODO 重启的内存阈值 -1表示不重启
reload_mem_threshold = -1
reload_mem_threshold.type = int

# 定时任务开关
cron_enabled = true
cron_enabled.type = bool

# 是否开启WEBDAV
webdav = false
webdav.type = bool

# 数据库驱动 {leveldb, leveldbpy, sqlite, mysql}
db_driver = sqlite
# 缓存驱动 {memory, db, redis}
db_driver_cache = memory

# 是否开启数据库备份
db_backup = true
db_backup.type = bool

# 是否开启数据库debug日志
db_log_debug = false
db_log_debug.type = bool

# 数据库备份失效时间(天)
db_backup_expire_days = 5
db_backup_expire_days.type = int

# 是否开启数据库调试
db_debug = false
db_debug.type = bool

# 分析table_proxy性能(临时)
db_profile_table_proxy = false
db_profile_table_proxy.type = bool

# 系统日志最大长度
db_sys_log_max_size = 10000
db_sys_log_max_size.type = int

# leveldb缓存配置
block_cache_size = 16777216 # 16M
block_cache_size.type = int

# leveldb的写入缓冲配置(MemTable的大小)
write_buffer_size = 4194304 # 4M
write_buffer_size.type = int

# leveldb最大打开的文件数
max_open_files = 1000
max_open_files.type = int

# lmdb配置
lmdb_map_size = 1GB
lmdb_map_size.type = int

# 主从同步配置
# leader: 主节点
# follower: 从节点
node_role = leader
# 节点ID
node_id = my_node_id
# 是否构建文件同步索引
build_fs_sync_index = false
build_fs_sync_index.type = bool

# 是否开启binlog
binlog = false
binlog.type = bool

# binlog最大值
binlog_max_size = 1M
binlog_max_size.type = int

# 是否同步文件
sync_files_from_leader = false
sync_files_from_leader.type = bool
# 是否同步数据库
sync_db_from_leader = false
sync_db_from_leader.type = bool
# 同步的轮询时间
sync_interval_seconds = 3
sync_interval_seconds.type = int

# 笔记本配置,笔记本的最大深度
max_book_depth = 2
max_book_depth.type = int

# sqlite的journal模式,默认DELETE,改成WAL可以提高并发性能,但是兼容性比较差
sqlite_journal_mode = DELETE

# mysql配置(还不稳定,试验中)
mysql_database = xnote
mysql_host = 
mysql_user = 
mysql_password =
mysql_cloud_type = 
mysql_pool_size = 10
mysql_pool_size.type = int
mysql_port = 3306
mysql_port.type = int


# 权限配置
auth_max_session_size = 20  # 单个用户最大会话数量
auth_max_session_size.type = int


# UI配置
ui_show_footer = true
ui_show_footer.type = bool

5.3 编辑docker-compose.yml文件

编辑docker-compose.yml文件

version: "3"
services:
 server:
     image: swr.cn-north-4.myhuaweicloud.com/jeven/xnote:latest   
     container_name: xnote
     volumes:
       - /data/xnote/data:/xnote/data
       - /data/xnote/boot.properties:/config/boot/boot.sae.properties
     ports:
       - 5238:1234

5.3 创建Xnote容器

  • 使用docker-compose.yaml文件创建Xnote容器
    [root@jeven xnote]# docker compose up -d
    [+] Running 2/2
    ⠿ Network xnote_default  Created                                                                                                               0.1s
    ⠿ Container xnote        Started                                                                                                               1.7s
    

5.4 检查Xnote容器状态

检查Xnote容器状态,确保Xnote容器正常启动。

[root@jeven xnote]# docker compose ps
NAME                COMMAND                  SERVICE             STATUS              PORTS
xnote               "python sentinel.py …"   server              running             0.0.0.0:5238->1234/tcp, :::5238->1234/tcp

5.5 检查Xnote容器日志

检查Xnote容器运行日志,确保Xnote服务正常运行。

docker compose logs

在这里插入图片描述

六、访问Xnote首页

6.1 进入Xnote初始页

访问地址:http://192.168.3.166:5238,将IP替换为自己服务器IP地址,进入到Xnote初始页。如果无法访问,则检查服务器防火墙是否设置,云服务器的安全组端口是否放行等。

在这里插入图片描述

6.2 登录Xnote

默认登录账号密码为admin/123456,进入Xnote首页。

在这里插入图片描述
在这里插入图片描述

6.3 新建笔记标签

首页——管理笔记本——新建笔记本,输入笔记本名称。

在这里插入图片描述

在这里插入图片描述

6.4 编辑笔记内容

点击创建笔记,编辑笔记标题。

在这里插入图片描述
在这里插入图片描述

编辑笔记内容,保存即可。

在这里插入图片描述

查看笔记效果

在这里插入图片描述

七、总结

Xnote是一款轻量级的笔记系统,可以使用Docker快速部署。它有简洁高效的页面,适合新手上手操作。在我的初步体验中,我发现Xnote页面流畅,没有卡顿现象,响应速度很快。它还提供了很好的笔记分类功能,方便我们整理和查找笔记。另外,Xnote还支持markdown笔记,这对于记录技术内容非常有帮助。如果你需要一个简单而实用的笔记系统,可以尝试使用体验一下Xnote。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
1天前
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
Java Nacos Docker
"揭秘!Docker部署Seata遇上Nacos,注册成功却报错?这些坑你不得不防!一网打尽解决秘籍,让你的分布式事务稳如老狗!"
【8月更文挑战第15天】在微服务架构中,Nacos搭配Seata确保数据一致性时,Docker部署Seata后可能出现客户端连接错误,如“can not connect to services-server”。此问题多由网络配置不当、配置文件错误或版本不兼容引起。解决策略包括:调整Docker网络设置确保可达性;检查并修正`file.conf`和`registry.conf`中的Nacos地址和端口;验证Seata与Nacos版本兼容性;修改配置后重启服务;参考官方文档和最佳实践进行配置。通过这些步骤,能有效排除故障,保障服务稳定运行。
13 0
|
4天前
|
存储 Ubuntu Linux
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
如何在 Ubuntu 上使用 Docker 容器化和部署多个 WordPress 应用程序
11 0
|
4天前
|
存储 Shell API
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
G6VP 与 GraphScope部署问题之拉取并启动 GraphScope 的 Docker 镜像如何解决
|
8天前
|
Docker 容器
Docker cp 将宿主机上的文件复制到容器中
Docker cp 将宿主机上的文件复制到容器中
10 0
|
1天前
|
网络协议 Linux 网络安全
遇到Docker容器网络隔断?揭秘六种超级实用解决方案,轻松让Docker容器畅游互联网!
【8月更文挑战第18天】Docker容器内网络不通是开发者常遇问题,可能因网络配置错、Docker服务异常或防火墙阻碍等原因引起。本文提供六种解决策略:确认Docker服务运行状态、重启Docker服务、检查与自定义Docker网络设置、验证宿主机网络连接、临时禁用宿主机IPv6及检查防火墙规则。通过这些步骤,多数网络问题可得以解决,确保容器正常联网。
6 1
|
2天前
|
安全 Ubuntu Docker
深度挖掘Docker 容器
【8月更文挑战第16天】Docker容器间的连接是容器化技术的关键,支持容器与宿主机的数据交换。主要方法包括:1) 利用Docker网络驱动创建自定义网络,使容器相连通信;2) 采用Docker Compose通过配置文件简化多容器应用的部署与互联;3) 虽不推荐,早期使用--link参数实现容器互联;4) 通过环境变量配置连接信息;5) 共享卷支持文件共享和间接通信。推荐使用Docker网络和Docker Compose以实现高效灵活的容器间通信。
13 3
|
3天前
|
Ubuntu Linux Docker
使用Docker进行容器化:从零开始的技术博文
【8月更文挑战第16天】从零开始掌握Docker容器化技术:本文详细介绍Docker基本概念、安装配置流程及核心组件。涵盖Docker镜像与容器管理、镜像加速配置,以及如何利用Dockerfile自动化构建镜像,助您快速入门并高效运用Docker进行软件开发与部署。