使用 Docker 搭建碎片化知识卡片-Memos

简介: Memos 是一个功能全面、易于使用的开源知识库和社交平台,适合个人和企业使用。它支持标签、过滤、搜索和多账户管理,提供多种隐私设置和后端存储选择,支持单点登录和 Docker 部署,注重数据的安全性和私密性。

介绍

Memos 是一个功能全面、易于使用的开源知识库和社交平台。它不仅适合个人记录和分享信息,也适合企业或组织作为内部的知识管理工具。Memos 的活跃开发和多元化功能使其成为维护私密性和安全性的理想选项。

它旨在为用户提供一个方便的记录、分享和管理知识的环境,同时注重保护用户数据的私密性和安全性。

它具备以下功能:

  • 支持标签、过滤、搜索和多账户管理。
  • 可自定义备忘录可见性,有多种隐私设置选项。
  • 提供多样化的后端存储选择,如数据库、S3 和本地存储。
  • 支持多种单点登录选项,包括 Github、Gitlab 和 Google 等,以及自定义认证方法。
  • 增强的用户界面(UI),新的时间线页面和改进的深色模式。
  • 升级 Markdown 解析器支持扩展语法,如表格(table)和 LaTeX。
  • 支持通过 Docker 部署,允许无损数据的版本更新。
  • 可用于搭建独立微博,满足用户对 self-host 微博的需求。

使用 docker 快速部署

安装

docker pull ghcr.io/usememos/memos

运行

docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos ghcr.io/usememos/memos:latest

然后我们就可以使用 ip + 端口的形式来访问 memos 应用了。

在 k8s 中部署

第一,在我们的 k8s 集群上新建一个文件,文件名比如叫 memos-deployment.yaml,然后将下面这段 yaml 内容 copy 进去;

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: memos
  name: memos
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: memos
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: memos
    spec:
      containers:
        - image: 'ghcr.io/usememos/memos:latest'
          imagePullPolicy: Always
          name: memos
          ports:
            - containerPort: 5230
              name: memeos
              protocol: TCP
          resources:
            requests:
              cpu: 250m
              memory: 512Mi
      restartPolicy: Always

第二,在终端中 cd 到 memos-deployment.yaml 文件的目录,并执行下面这段命令进行应用部署:

kubectl apply -f memos-deployment.yaml

第三,我们可以使用以下命令来查看部署状态:

kubectl rollout status deployment/memos

第四,为了进一步检查,确认 pod 是否成功运行,可以使用以下命令:

kubectl get pods -l app=memos

-l app=memos 这一部分是一个标签选择器,用来只挑选出拥有app=memos标签的 pods,这样就只会显示你刚刚部署的应用的 pods。

此时已经部署完成了,但是外界还无法访问,因为默认情况下 pod 不会被分配一个可以从集群外访问的 IP 地址,所以还需要创建一个 Service 来连接外界和这个 pod,这里多说比较复杂。因为对于个人来说使用 k8s 集群的概率极低(大都应该是学习),所以只需要会使用 docker 进行部署即可。

而在企业级维度,一般都会使用各大云厂商提供的 k8s 服务,比如阿里云 ACK 等,使用这种白屏化界面部署这些开源应用简直不要太简单,就不过多赘述了。

使用

部署好之后,我们输入 ip + 端口,首先会看到一个注册页面,这里我们注册一个用户:

注册好之后,我们就会跳转到主页面,它长这个样子:

默认进来之后又成了英文,接下来我们到 Settings 中将语言设置成中文。

之后我们点击主页就可以开始记录笔记了:

移动端也很清爽:

相较于手机记事本、备忘录及一些其他笔记软件来说,memos 的优点很显而易见:

  • 开源且永久免费,只要你有一台服务器,你就可以自由地使用和修改软件,不受任何限制。
  • 按照教程使用 Docker 进行傻瓜式部署,简单几步,轻松安装
  • Memos 的界面简洁直观、易于上手,只要有浏览器,在任何一台联网设备上都可以进行访问
  • Memos的轻量级特点使得其占用资源较少,运行速度快,我们在手机端或者电脑端都能快速打开。
  • 不但如此,我们还可以将备忘录分享给他人,增强了笔记的个性化和实用性。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
7月前
|
测试技术 Linux 网络安全
【Docker项目实战】使用Docker部署pinry堆叠图像公告系统
【4月更文挑战第10天】使用Docker部署pinry堆叠图像公告系统
96 1
|
4月前
|
运维 监控 数据可视化
"揭秘Docker管理神器Portainer:一键解锁Docker可视化管理新境界,让你的运维工作轻松又高效!"
【8月更文挑战第11天】Docker简化了应用部署与管理,但容器规模增大时,高效管理变得挑战重重。Portainer作为轻量级Docker管理工具,以直观界面和全面功能脱颖而出。它不仅简化了容器的创建、监控与操作,还涵盖了镜像、网络、卷管理及用户权限控制。Portainer易于部署,兼容单机与Swarm集群,降低学习门槛。本文深度剖析Portainer优势,并通过实例展示其实用性,使读者对其功能与价值有深刻理解。
100 3
|
7月前
|
存储 前端开发 Docker
《Docker 简易速速上手小册》第4章 Docker 容器管理(2024 最新版)
《Docker 简易速速上手小册》第4章 Docker 容器管理(2024 最新版)
50 0
|
7月前
|
Web App开发 安全 前端开发
百度搜索:蓝易云【Docker WebRTC容器部署方案】
以上是一个简单的Docker WebRTC容器部署方案。在实际应用中,你可能需要根据自己的需求进行更复杂的配置和优化。此外,要确保你的WebRTC应用程序在Docker容器中能够正确运行,可能需要处理一些网络和安全方面的问题。
162 6
|
存储 Cloud Native Docker
【云原生】一看就会的Docker镜像管理
【云原生】一看就会的Docker镜像管理
95 0
|
JSON 网络协议 Linux
Docker | 多图预警 | 配置Docker下Python开发环境
Docker | 多图预警 | 配置Docker下Python开发环境
204 0
|
网络协议 应用服务中间件 nginx
Docker笔记9 | Docker中网络功能知识梳理和了解
Docker笔记9 | Docker中网络功能知识梳理和了解
10914 1
|
消息中间件 Cloud Native Ubuntu
【云原生 • Docker】初识Docker和Docker的坏境搭建(保姆级教学)
前言:当我们学习一门技术,最快的学习方法是看官方文档。 个人理解docker中的镜像就像是咱们java 中的Class而容器是基于这个镜像构建出的实例。我是一个初学者,理解有误还请见谅,并麻烦您说说您的看法让彼此相互学习… 按我理解好比 docker 镜像:java中 class docker容器 :java中 class new出来的对象
114 0
|
Cloud Native Shell 网络安全
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(二)
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(二)
267 0
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(二)
|
网络协议 Cloud Native Shell
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(一)
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(一)
141 0
【云原生Docker系列第二篇】Docker容器管理(我在人间贩卖黄昏,只为带着星光照耀你)(一)