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

简介

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

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

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

准备工作

服务器准备

必要前提:

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

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

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

创建雨云服务器

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

  • 点击 云产品云服务器立即购买
  • 选择距离你较近的区域,以保证低延迟。
  • 按照自己需求选择配置,选择Ubuntu 22.04 版本,按照自己需求是否预装Docker。
  • 最后按照提示进行购买。
  • 购买后等待机器部署完毕,点击刚刚创建好的服务器,进入管理面板,找到远程连接相关信息。
  • 我们使用 PowerShell 进行 SSH 远程连接到服务器,Win+R 打开运行窗口,输入 powershell 后点击确定。
  • 输入 ssh root@你的服务器IP 例如 ssh root@154.9.227.239 回车后,首次需要输入 yes,再次回车后即可登录服务器。
  • 到此为止,我们的云服务器就远程连接上了。

使用Docker Compose安装Memos

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

1 创建 docker-compose.yml

jsx 复制代码
touch docker-compose.yml

2 使用SQLite的Memos

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

yaml 复制代码
services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    user: root
    restart: unless-stopped
    volumes:
      - ./memos/:/var/opt/memos
    ports:
		  - 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数据库选项。

yaml 复制代码
services:
  memos:
    image: neosmemo/memos:stable
    container_name: memos
    restart: unless-stopped
    volumes:
      - ./memos/:/var/opt/memos
    ports:
		  - 5230:5230
    environment:
      MEMOS_DRIVER: postgres
      MEMOS_DSN: postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@memos-db:5432/${POSTGRES_DB}?sslmode=disable
    depends_on:
      memos-db:
        condition: service_healthy

  memos-db:
    image: postgres:16.1-alpine
    volumes:
      - ./memos-db:/var/lib/postgresql/data:rw
    environment:
      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: 5s
      timeout: 5s
      retries: 5
    restart: on-failure:5

配置说明:

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

4 创建一个.env文件

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

bash 复制代码
POSTGRES_DB=memos
POSTGRES_USER=memos
POSTGRES_PASSWORD=memos

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

5 启动Docker Compose文件

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

bash 复制代码
docker compose up -d

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

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

bash 复制代码
docker compose ps

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

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

然后Memos UI将如下所示:

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

结论

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

相关链接

雨云 - 新一代云服务提供商: https://rainyun.ivwv.site

我的博客:https://blog.ivwv.site

相关推荐
巴伦是只猫6 分钟前
【机器学习笔记Ⅰ】13 正则化代价函数
人工智能·笔记·机器学习
典学长编程15 分钟前
Linux操作系统从入门到精通!第二天(命令行)
linux·运维·chrome
wuk99829 分钟前
基于MATLAB编制的锂离子电池伪二维模型
linux·windows·github
DuelCode1 小时前
Windows VMWare Centos Docker部署Springboot 应用实现文件上传返回文件http链接
java·spring boot·mysql·nginx·docker·centos·mybatis
你想考研啊3 小时前
四、jenkins自动构建和设置邮箱
运维·jenkins
Code blocks3 小时前
使用Jenkins完成springboot项目快速更新
java·运维·spring boot·后端·jenkins
snoopyfly~3 小时前
Ubuntu 24.04 LTS 服务器配置:安装 JDK、Nginx、Redis。
java·服务器·ubuntu
独行soc3 小时前
#渗透测试#批量漏洞挖掘#HSC Mailinspector 任意文件读取漏洞(CVE-2024-34470)
linux·科技·安全·网络安全·面试·渗透测试
BD_Marathon3 小时前
Ubuntu下Tomcat的配置
linux·ubuntu·tomcat
饥饿的半导体4 小时前
Linux快速入门
linux·运维