如何使用 Docker Compose 安装 Memos 自托管笔记应用

简介

Memos是一个自托管的开源笔记应用程序,专为个人组织和信息管理而设计。它允许用户高效地创建、存储和管理笔记,提供如Markdown支持、用户友好的界面和注重隐私的设计等功能。Memos可以在各种平台上运行,但使用Docker Compose可以简化部署过程,使其易于设置和维护。

  • 隐私优先方法: Memos确保所有用户数据保持私密和安全,允许用户控制他们的信息。
  • Markdown支持: 用户可以使用广泛的Markdown语法以纯文本形式创建笔记,便于轻松格式化和组织。
  • 轻量级架构: 使用Go和React.js构建的Memos旨在轻量级,确保快速性能和最小资源使用。
  • 可定制功能: 用户可以通过定制服务器名称、图标、描述和系统样式来个性化他们的体验。
  • 开源: Memos完全开源,允许用户为其开发做出贡献,并根据需要定制应用程序。
  • 免费使用: Memos的所有功能均可免费使用,没有隐藏费用或订阅。
  • 数据持久性: 笔记保存在SQLite数据库文件中,确保即使在应用程序关闭后也能保留数据。
  • 用户友好界面: Memos提供了一个直观的界面,使其易于捕捉和管理笔记。
  • 多设备可访问性: 用户可以从各种设备访问他们的笔记,增强了便利性和灵活性。
  • 协作功能: Memos允许轻松共享笔记,促进用户之间的协作。

image.png

接下来,我将一步一步教大家如何进行安装和部署!!

准备工作

服务器准备

必要前提:

  • 一个充满求知欲的大脑。
  • 一台 Linux 服务器(推荐腾讯云、阿里云或雨云等)。

我将以 雨云 为例,带大家创建一台自己的云服务器,以便学习本篇文章的内容。

注册链接: https://rainyun.ivwv.site

创建雨云服务器

以下步骤仅供参考,请根据实际需求选择配置。

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。

https://img-blog.csdnimg.cn/img_convert/4c16271f125adea69da6ed9e7b2a4226.png

  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。

https://img-blog.csdnimg.cn/img_convert/414570cd3da48d4cc4bf51489992000b.png

  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。

https://img-blog.csdnimg.cn/img_convert/c8afbeb764459a37a8451dd2ed8eeff1.png

  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。

https://img-blog.csdnimg.cn/img_convert/ea5814f1d1068ca9fa2bb94631cfbdf1.png

  • 到此为止,我们的云服务器就远程连接上了。

使用Docker Compose安装Memos

要使用Docker Compose安装Memos,你需要创建一个docker-compose.yml文件,该文件定义了运行应用程序所需的服务、网络和卷。以下是两种部署Memos的配置:一个使用SQLite,另一个使用PostgreSQL。

1 创建 docker-compose.yml

touch docker-compose.yml

2 使用SQLite的Memos

以下docker-compose.yml文件使用SQLite作为数据库设置Memos:

services:memos:image: neosmemo/memos:stablecontainer_name: memosuser: rootrestart: unless-stoppedvolumes:- ./memos/:/var/opt/memosports:- 5230:5230

配置说明:

  • services: 这一节定义了Docker将运行的服务。这里,我们有一个名为memos的单一服务。
  • image: 指定要使用的Docker镜像,在这种情况下是neosmemo/memos:stable
  • container_name: 为容器分配一个名称,以便于管理。
  • user: 以root用户身份运行容器。
  • restart: 配置重启策略。unless-stopped意味着容器将在没有明确停止的情况下重启。
  • networks: 将服务连接到名为traefik-net的外部网络,这对于路由很有用。
  • volumes: 将本地目录(./memos/)映射到容器的数据存储目录(/var/opt/memos),确保数据持久性。

3 使用PostgreSQL数据库的Memos

如果你更喜欢使用PostgreSQL作为数据库,你可以使用以下配置。这是在你有很多笔记需要一个强大的数据库时的情况。以下是带有doc的Memos数据库选项。

services:memos:image: neosmemo/memos:stablecontainer_name: memosrestart: unless-stoppedvolumes:- ./memos/:/var/opt/memosports:- 5230:5230environment:MEMOS_DRIVER: postgresMEMOS_DSN: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@memos-db:5432/${POSTGRES_DB}?sslmode=disabledepends_on:memos-db:condition: service_healthymemos-db:image: postgres:16.1-alpinevolumes:- ./memos-db:/var/lib/postgresql/data:rwenvironment:POSTGRES_DB: ${POSTGRES_DB}POSTGRES_USER: ${POSTGRES_USER}POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}healthcheck:test:- CMD-SHELL- pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}interval: 5stimeout: 5sretries: 5restart: on-failure:5

配置说明:

  • memos服务与SQLite配置类似,但包括PostgreSQL的环境变量。
  • depends_on: 确保memos-db服务在memos服务之前启动。
  • environment: 设置PostgreSQL连接的环境变量,包括数据库名称、用户和密码。
  • memos-db服务运行一个PostgreSQL数据库,有一个健康检查以确保在Memos服务启动之前它已经准备好。

4 创建一个.env文件

对于PostgreSQL配置,在与你的docker-compose.yml文件相同的目录中创建一个.env文件,以定义环境变量:

POSTGRES_DB=memos
POSTGRES_USER=memos
POSTGRES_PASSWORD=memos

你可以根据需要更改数据库详细信息。

5 启动Docker Compose文件

要启动Memos应用程序,请在包含docker-compose.yml文件的目录中运行以下命令:

docker compose up -d

此命令将下载必要的Docker镜像,创建容器,并以分离模式启动服务。

启动后可以查看容器运行状态:

docker compose ps

6 访问Memos UI并创建你的第一个用户

一旦容器运行,你可以通过在Web浏览器中导航到 http://your_ip:5230 来访问Memos Web界面。你将看到一个注册屏幕,你可以在其中创建你的第一个用户帐户。

然后Memos UI将如下所示:

image.png

然后你有设置区域,你可以在其中将外观从浅色更改为深色,添加用户或启用SSO。

image.png

结论

使用Docker Compose设置Memos提供了一种直接部署自托管笔记应用程序的方法。通过使用SQLite或PostgreSQL,用户可以选择最适合他们需求的数据库。所提供的配置允许轻松定制和扩展,使Memos成为个人组织和笔记管理的灵活解决方案。

相关链接
雨云 - 新一代云服务提供商: https://rainyun.ivwv.site
我的博客:https://blog.ivwv.site

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

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

相关文章

西部地区生活物资保供与城郊大仓基地高质量建设运营论坛西安市成功举办

2024 年 12 月 5日,由中国商业联合会、陕西省商务厅指导,中国商业联合会商贸物流与供应链分会、西安市发改委、西安市商务局主办,中企盟(北京)电商物流技术研究院、西安商业联合会、陕西省商贸物流供应链协会承办的“西…

[笔记] Windows 上 Git 安装详细教程:从零开始,附带每个选项解析

Git 是目前最流行的分布式版本控制系统之一,广泛应用于软件开发和项目管理中。对于 Windows 用户来说,正确安装和配置 Git 是开始使用 Git 的第一步。本文提供一份详细的指南,帮助你在 Windows 系统上顺利安装 Git,并解释每个安装…

五天SpringCloud计划——DAY3之服务治理(Nacos+OpenFeign+OKHttp)

一、引言 在微服务架构中,一个项目通常会被分为多个模块来降低耦合,但是通常情况下,一个项目中总会出现一种情况——一个模块内的方法需要调用另一个模块内的方法。本文就来使用NacosOpenFeignOKHttp帮助大家解决这个问题。 二、Nacos的使用…

go-blueprint create exit status 1

1. 异常信息 2024/12/06 10:59:19 Could not initialize go.mod in new project exit status 1 2024/12/06 10:59:19 Problem creating files for project. exit status 1 Error: exit status 12. 排查思路 手动进行go mod init查看手动的报错解决报错 3. 解决问题 发现是GO11…

Socket编程-tcp

1. 前言 在tcp套接字编程这里,我们将完成两份代码,一份是基于tcp实现普通的对话,另一份加上业务,client输入要执行的命令,server将执行结果返回给client 2. tcp_echo_server 与udp类似,前两步&#xff1…

Python使用Selenium自动实现表单填写之蛇年纪念币蛇钞预约(附源码,源码有注释解析,已测试可用

Python实现纪念币预约自动填写表单 声明:本文只做技术交流,不可用代码为商业用途,文末有源码下载,已测试可用。 Part 1 配置文件改写(源码 有详细的注释说明 读取配置文件,自己组数据库,录入信息 配置文件 Part 2 主函数 每一期的xpath路径都不一样 所以需要提前去网站…

【计算机网络】期末速成(2)

部分内容来源于网络,侵删~ 第五章 传输层 概述 传输层提供进程和进程之间的逻辑通信,靠**套接字Socket(主机IP地址,端口号)**找到应用进程。 传输层会对收到的报文进行差错检测。 比特流(物理层)-> 数据帧(数据链路层) -> 分组 / I…

Vue3网站锚点定位

网站上实现锚点定位的方法有很多&#xff0c;今天介绍vue3实现的定位效果的方式。通过scrollIntoViewh函数的行为&#xff0c;滑动至指定的容器。 一、样式布局 <template> <div style"width: 100%; display: flex;flex-direction: column;"><div …

微信小程序实现图片拖拽调换位置效果 -- 开箱即用

在编写类似发布朋友圈功能的功能时&#xff0c;需要实现图片的拖拽排序&#xff0c;删除图片等功能。 一、效果展示 **博主的小程序首页也采用了该示例代码&#xff0c;可以在威信中搜索&#xff1a;我的百宝工具箱 二、示例代码 1.1、在自己的小程序中创建组件 1.2、组件…

五、docker的网络模式

五、docker的网络模式 5.1 Docker的四种网络模式 当你安装docker时&#xff0c;它会自动创建三个网络&#xff0c;可使用如下命令查看&#xff1a; [rootlocalhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 7390284b02d6 bridge bridge lo…

ros项目dual_arm_pick-place(对比moveit配置助手生成的文件)

目录 前言正文gazebo_controllers.yaml变更ros_controllers.yaml变更simple_moveit_controllers.yaml变更moveit_planning_execution.launch变更ros_controllers.launch变更其他文件 汇总总结 前言 在本专栏前文中讲到&#xff0c;作者有moveit配置助手导出的包marmbots&#…

【uni-app 微信小程序】新版本发布提示用户进行更新

知识准备 uni.getUpdateManager文档介绍 不支持APP与H5&#xff0c;所以在使用的时候要做好平台类型的判断&#xff0c;如何判断&#xff0c;参考条件编译处理多端差异 代码参考 export const updateApp () > {const updateManager uni.getUpdateManager()updateManag…

Java-操作xls替换文本或图片

准备xls模板文件&#xff1a;template.xls 要求根据不同的产品型号和图片&#xff0c;插入到模板文件中&#xff0c;然后再填充产品信息。 准备需要替换的图片和数据 功能实现 package net.work.controller.base;import io.swagger.annotations.Api; import io.swagger.annot…

.Net学习

1 什么是.NET Core .NET是开发平台&#xff0c;.NET Framework、.NET Core、Xamaarin/Mono的统称。 .NET Framework是只能在Windows上开发的技术 .NET Core是可以跨平台开发的技术 Xamaarin/Mono是移动端开发的技术 .NET Core&#xff1a;跨平台、免费、开源&#xff0c;可…

半监督学习与数据增强

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

【成功解决:Can‘t uninstall ‘ultralytics‘. No files were found to uninstall.】

问题&#xff1a; 尝试卸载ultralytics时&#xff0c;使用pip uninstall ultralytics命令&#xff0c;已经卸载了ultralytics&#xff0c;但是仍出现Cant uninstall ultralytics. No files were found to uninstall&#xff0c;导致无法卸载干净。 原因 ultralytics相应的dis…

AcWing 3496. 特殊年份

文章目录 前言代码思路 前言 写简单题没啥。反正都是要写的&#xff0c;先把能拿到的分数拿了&#xff0c;之后有机会再去啃一啃硬骨头。啃不下来就算了。 代码 #include<bits/stdc.h> using namespace std; char a1[10],a2[10],a3[10],a4[10],a5[10]; int main(){cin…

MongoDB性能监控工具

mongostat mongostat是MongoDB自带的监控工具&#xff0c;其可以提供数据库节点或者整个集群当前的状态视图。该功能的设计非常类似于Linux系统中的vmstat命令&#xff0c;可以呈现出实时的状态变化。不同的是&#xff0c;mongostat所监视的对象是数据库进程。mongostat常用于…

【LeetCode: 999. 可以被一步捕获的棋子数 + 模拟】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

智创 AI 新视界 -- 优化 AI 模型训练效率的策略与技巧(16 - 1)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…