【打工日常】云原生之搭建一款轻量级的开源Markdown笔记工具

news2024/11/16 12:03:27

一、flatnotes介绍  

1.flatnotes简介  

一个自托管的,无数据库的笔记网络应用程序,利用平面文件夹的markdown文件进行存储。

2.项目特点

A.干净简单的用户界面B.响应式移动端界面C.原生/所见即所得Markdown编辑模式D.高级搜索功能E.笔记“标签”功能F.支持wikilink易链接其它笔记G.明暗主题切换H.多种认证选项I.提供Restful API

二、本次实践介绍  

1. 本次实践简介  

a.本次实践部署环境为个人笔记本ubuntu日常工作的测试环境,若是生产环境请谨慎部署;  

b.本次实践为快速使用docker部署开源flatnotes于个人ubuntu上。  

2. 本地环境规划  

本次实践环境规划:下载镜像dullage/flatnotes,通过docker-cli或者docker compose启动容器  

镜像命名IP地址容器镜像版本操作系统版本
flatnoteslocalhostlatestubuntu 22.04

三、检查本地Docker环境  

1. 检查本地Docker版本  

检查Docker版本:docker version    
   
root@WellDone:/home/goodjob# docker version    
Client: Docker Engine - Community    
Version:           25.0.0    
API version:       1.44    
Go version:       go1.21.6    
Git commit:       e758fe5    
Built:             Thu Jan 18 17:09:49 2024    
OS/Arch:           linux/amd64    
Context:           default    
   
Server: Docker Engine - Community    
Engine:    
Version:         25.0.0    
API version:     1.44 (minimum version 1.24)    
Go version:       go1.21.6    
Git commit:       615dfdf    
Built:           Thu Jan 18 17:09:49 2024    
OS/Arch:         linux/amd64    
Experimental:     false    
containerd:    
Version:         1.6.27    
GitCommit:       a1496014c916f9e62104b33d1bb5bd03b0858e59    
runc:    
Version:         1.1.11    
GitCommit:       v1.1.11-0-g4bccb38    
docker-init:    
Version:         0.19.0    
GitCommit:       de40ad0    
root@WellDone:/home/goodjob#  

2. 检查Docker服务状态  

检查Docker服务状态,确保Docker服务正常运行。  

systemctl status docker    
   
root@WellDone:/home/goodjob/Downloads# systemctl status docker    
● docker.service - Docker Application Container Engine    
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)    
    Active: active (running) since Wed 2024-01-24 08:54:31 CST; 1 day 4h ago    
TriggeredBy: ● docker.socket    
      Docs: https://docs.docker.com    
  Main PID: 1549 (dockerd)    
    Tasks: 65    
    Memory: 419.5M    
      CPU: 38.874s    
    CGroup: /system.slice/docker.service    
            ├─ 1549 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock    
            ├─ 2010 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.17.0.2 -container-port 6379    
            ├─ 2016 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 6379 -container-ip 172.17.0.2 -container-port 6379    
            ├─ 2029 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 5432 -container-ip 172.17.0.3 -container-port 5432    
            ├─ 2036 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 5432 -container-ip 172.17.0.3 -container-port 5432    
            ├─123083 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8888 -container-ip 172.17.0.4 -container-port 8080    
            └─123095 /usr/bin/docker-proxy -proto tcp -host-ip :: -host-port 8888 -container-ip 172.17.0.4 -container-port 8080    
   
1月 24 08:54:31 WellDone dockerd[1549]: time="2024-01-24T08:54:31.067895045+08:00" level=info msg="API listen on /run/docker.sock"    
1月 24 08:54:31 WellDone systemd[1]: Started Docker Application Container Engine.    
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.185008219+08:00" level=info msg="ignoring event" container=8ad99af82d8a41dd661d>    
1月 24 16:13:48 WellDone dockerd[1549]: time="2024-01-24T16:13:48.189484205+08:00" level=warning msg="ShouldRestart failed, container will not be>    
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.024915139+08:00" level=info msg="ignoring event" container=27fd28e2993f31b170b8>    
1月 24 21:58:08 WellDone dockerd[1549]: time="2024-01-24T21:58:08.029986730+08:00" level=warning msg="ShouldRestart failed, container will not be>    
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.329180722+08:00" level=info msg="Container failed to exit within 10s of signal >    
1月 25 10:46:16 WellDone dockerd[1549]: time="2024-01-25T10:46:16.350757439+08:00" level=info msg="ignoring event" container=b1223add00f36bbb3246>    
1月 25 10:49:21 WellDone dockerd[1549]: time="2024-01-25T10:49:21.993755983+08:00" level=info msg="Container failed to exit within 10s of signal >    
1月 25 10:49:22 WellDone dockerd[1549]: time="2024-01-25T10:49:22.015822650+08:00" level=info msg="ignoring event" container=edb0e153b45dbe62acd8>    
lines 1-28/28 (END)  

四、下载flatnotes镜像  

1.下载flatnotes镜像  
 
root@HEJIAJIN-FX506HE:/home/welldone# docker pull dullage/flatnotes
Using default tag: latest
latest: Pulling from dullage/flatnotes
70ba6f391a98: Pull complete
fd1d7a3a6a58: Pull complete
240fcc724b86: Pull complete
193f307df575: Pull complete
1001d7abe1f6: Pull complete
ef78ccb6ecdd: Pull complete
62b5565ce964: Pull complete
855483b56fbe: Pull complete
9d9b183a46bb: Pull complete
4f4fb700ef54: Pull complete
cfd40209fcc9: Pull complete
376d4ecc88fd: Pull complete
110bfda3eca3: Pull complete
f9d6652969c0: Pull complete
5d6e1e8a35e7: Pull complete
Digest: sha256:94a55c27886f8edf38117c2d0c1bd0cc187c9d04093a0c9712f1b5868008fc98
Status: Downloaded newer image for dullage/flatnotes:latest
docker.io/dullage/flatnotes:latest
 

2.使用docker-compose启动一个flatnotes的容器    
 
version: '3.9'
services:
  flatnotes:
      image: dullage/flatnotes:latest
      container_name: flatnotes
      environment:
          - PUID=1000
          - PGID=1000
          - FLATNOTES_AUTH_TYPE=password
          - FLATNOTES_USERNAME=user
          - FLATNOTES_PASSWORD=123!@#
          - FLATNOTES_SECRET_KEY=aLongRandomSeriesOfCharacters
      volumes:
          - /container/flatnotes:/data
      ports:
          - "18080:8080"
      restart: always

3.使用docker-cli启动一个flatnotes的容器

docker run -d \
-e "PUID=1000" \
-e "PGID=1000" \
-e "FLATNOTES_AUTH_TYPE=password" \
-e "FLATNOTES_USERNAME=user" \
-e "FLATNOTES_PASSWORD=123!@#" \
-e "FLATNOTES_SECRET_KEY=aLongRandomSeriesOfCharacters" \
-v "/container/flatnotes:/data" \
-p "18080:8080" \
dullage/flatnotes:latest
 
4.查看flatnotes容器状态  
 
root@HEJIAJIN-FX506HE:/container/docker-compose/docker-firsttest# docker compose ps

NAME     IMAGE         COMMAND             SERVICE   CREATED         STATUS         PORTS
flatnotes   dullage/flatnotes:latest   "/entrypoint.sh"     flatnotes   4 seconds ago   Up 4 seconds   0.0.0.0:18080->8080/tcp, :::18080->8080/tcp

六、访问flatnotes首页  

访问地址http://localhost:18080 账号user,密码123!@#

图片

图片

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

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

相关文章

安服仔番外——IaaS、PaaS、SaaS

云安全也是很重要的一个方向,当然了,今天开启这一篇的目的是up发现安服仔们需要懂的东西很多,确实不只局限于所谓的设备、漏扫、渗透之类的大家明面上都懂的,持续学习!恰好up所在的项目对云接触很多,那就刚…

Rank Math Pro插件下载 - 您的SEO优化新引擎

在当今数字时代,搜索引擎优化(SEO)对于任何希望提升在线可见性和吸引更多访客的网站来说都是至关重要的。Rank Math Pro是一款先进的SEO插件,专为WordPress网站设计,它能够帮助网站管理员和内容创作者轻松实现SEO最佳实…

撤销及变更:31个自然基金项目!

本周投稿推荐 SSCI • 2区社科类,3.0-4.0(社科均可) EI • 计算机工程类(接收广,录用极快) SCI&EI • 4区生物医学类,1.5-2.0(录用率99%) • 1区工程类&#…

Oracle到PostgreSQL的不停机数据库迁移

1970 年,数据库之父 Edgar Frank Codd 发表了“数据的关系模型”论文,该论文为往后的关系型数据库的发展奠定了基础。1979 年,基于关系模型理论的数据库产品 Oracle 2 首次亮相,并在过去的三四十年时间里,横扫全球数据…

开放式耳机哪个品牌好?性能超强的五款耳机推荐!速来码住!

运动已经融入了我们的日常生活,组团徒步、爬山、跑步、骑行等项目都收到了很人的喜爱。运动加耳机的组合也成了年轻人热爱的方式,在激烈运动的过程中往往会照成颠簸,在佩戴耳机上稳固性和舒适性就变得很重要了,因此开放式蓝牙耳机…

408算法题专项-2019年

题目: 分析:要求空间复杂度为O(1),我们可以逆向假设可以开空间,得出一种思路,然后对这种思路优化空间即可得到O(1) 思路一:假设开空间 思考:再开…

【初阶数据结构】单链表之环形链表

目录标题 前言环形链表的约瑟夫问题环形链表环形链表|| 前言 前面我们已经学习了关于单链表的一些基本东西,今天我们来学习单链表的一个拓展——环形链表,我们将用力扣和牛客网上的三道题目来分析讲解环形链表问题。 环形链表的约瑟夫问题 我们首先来看…

iOS性能指标和性能测试工具

一: iOS性能测试指标 作为一名软件测试工程师,在测试 iOS 应用的性能时,需要关注以下几个方面: 1. 响应时间:应用的启动时间、页面加载速度、接口响应时间等。 2. CPU 使用率:应用在各种操作下的 CPU 占…

python中如何把list变成字符串

python中如何把list变成字符串?方法如下: python中list可以直接转字符串,例如: data ["hello", "world"] print(data1:,str(data)) 得到结果: (data1:, "[hello, world]") 这里将整个…

C脚本实现WIncc模拟量趋势窗口弹出

文章目录 前言一、步骤及解析二、运行画面演示三、总结 前言 本文给出了一种基于C脚本实现点击输入输出域对象,弹出对应模拟量趋势窗口的方法。 一、步骤及解析 在Wincc变量管理中,添加两个变量; 示例如下: 将以上两个变量添加到…

C++学习第二十九课:C++ 输入输出流详解:从基础到高级应用

在 C 中,流(stream)是一种用于实现输入输出操作的抽象概念。流可以看作是字节的流动,这些字节可以从一个地方流向另一个地方,例如从键盘输入到程序中,或者从程序输出到屏幕。C 提供了一套完整的流库来处理各…

头歌实践教学平台:CG1-v1.0-点和直线的绘制

第1关:OpenGL点的绘制 一. 任务描述 根据下面要求,在右侧修改代码,绘制出预期输出的图片。平台会对你编写的代码进行测试。 1.本关任务 熟悉编程环境; 了解光栅图形显示器的特点; 了解计算机绘图的特点&#xff1b…

zblog中用户中心-邀请码注册插件的导出功能补充

自己加了一个导出未使用的邀请码功能,可惜我不是入驻作者,没有权限发布,之前被一条大河拒了,他说我抄他代码,不给我过审还冷嘲热讽,我一气之下,就没继续申请了,话说我是专业搞java开…

element-plus表单上传,唯一替换文件校验,封装方法统一管理

<el-formref"ruleFormRef":model"ruleForm":rules"rules"label-width"110px" ><el-form-item label"语言成绩材料" prop"languageList"><div class"dis-flex w100"><el-uploadref…

探索Python字典的迭代之旅:使用‘for‘循环的技巧与实践

在Python中&#xff0c;字典&#xff08;dictionary&#xff09;是一种非常强大的数据结构&#xff0c;它允许我们以键值对&#xff08;key-value pairs&#xff09;的形式存储数据。字典的遍历是日常工作中常见的操作之一&#xff0c;而’for’循环则是实现这一操作的常用方法…

HTTP 1.1 与 HTTP 1.0

什么是HTTP HTTP 就是一个 超文本传输协议 协议 : 双方 约定 发送的 域名 数据长度 连接(长连接还是短连接) 格式(UTF-8那些) 传输 :数据虽然是在 A 和 B 之间传输&#xff0c;但允许中间有中转或接力。 超文本:图片、视频、压缩包,在HTTP里都是文本 HTTP 常见状态码 比如 20…

一篇文章帮你搞定微软云计算证书Renew

IT证书都有过期的时间&#xff0c;像AWS是3年有效期&#xff0c;谷歌是2年&#xff0c;微软是1年&#xff0c;那这些证书到期该怎么Renew更新呢&#xff1f; 小李哥最近的微软AZ-204证书要到期了&#xff0c;到期前半年就会收到Microsoft发来提醒邮件。大家在这半年内任何时间都…

Redis 实战之命令请求的执行过程

命令请求的执行过程 发送命令请求读取命令请求命令执行器&#xff08;1&#xff09;&#xff1a;查找命令实现命令执行器&#xff08;2&#xff09;&#xff1a;执行预备操作命令执行器&#xff08;3&#xff09;&#xff1a;调用命令的实现函数命令执行器&#xff08;4&#x…

【MySQL】——课程平台的创建设计

&#x1f4bb;博主现有专栏&#xff1a; C51单片机&#xff08;STC89C516&#xff09;&#xff0c;c语言&#xff0c;c&#xff0c;离散数学&#xff0c;算法设计与分析&#xff0c;数据结构&#xff0c;Python&#xff0c;Java基础&#xff0c;MySQL&#xff0c;linux&#xf…

mybatis 跨库查询 mysql

跨库&#xff0c;表关联的查询&#xff0c;实现起来很简单&#xff1a; select a.uid from ucenter.user a , database user_profile b where a.uid b.uid;只要在表的前边加上库名即可。 这个是我项目中xml 中的一个例子&#xff0c;项目采用的是springmvc,持久层框架就是my…