Skip to content

Latest commit

 

History

History
170 lines (120 loc) · 7.21 KB

README_zh-CN.md

File metadata and controls

170 lines (120 loc) · 7.21 KB

memos on fly.io

English | 中文

fly.io上运行自托管的 memos,并附有 litestream自动备份数据库到你个人的 S3 / Backblaze B2

🙏 感谢 memoslinkding-on-fly,本项目受其启发!

重要提示!

  • 如果您想在 Fly.io 上部署 Memos,但不需要 Litestream 来自动备份数据库到你的 S3/B2,请跳过本文档接下来的部分,并直接阅读 README_no_litestream_zh-CN

  • 如果你想要在本地搭建(包含 Litestream 功能),而不在 fly.io 上搭建,可参考 hu3rror/memos-litestream

  • hu3rror/memos-on-fly-build 已被弃用,新的项目镜像维护更新将被转移到 hu3rror/memos-litestream,如果你以前使用过这个镜像,你可以简单地在你的 fly.toml 中的 build image 部分中删除旧的镜像,并改为新的镜像,像这样:

    [build]
    - image = "hu3rror/memos-fly:latest"
    + image = "ghcr.io/hu3rror/memos-litestream:stable"
  • Memos 在更新到 v0.22.0 版本后,Telegram Bot 将不再内置在 Memos 中,而转为外置启动的 telegram-integration ,如果你需要该功能,可尝试将镜像标签更改为 ghcr.io/hu3rror/memos-litestream:stable-memogram,像这样:

    [build]
    - image = "ghcr.io/hu3rror/memos-litestream:stable"
    + image = "ghcr.io/hu3rror/memos-litestream:stable-memogram"

    并在 fly.io 中添加新的环境变量 BOT_TOKEN 到 flyctl secrets 中,并重新部署

    flyctl secrets set BOT_TOKEN="your_bot_token"

    ⚠️stable-memogram 标签版本的支持仍处于测试阶段,使用前务必备份您的数据库。

安装前提

初始化 fly app

注意⚠️不要 设置 Postgres,不要 立即部署!

flyctl launch

该命令将创建一个 fly.toml 文件。

编辑 fly.toml

您可以参考本存储库中的 fly_example.toml 并根据注释内容的提示进行修改。

手动修改的详细信息

1. 添加 build 部分。

[build]
  image = "ghcr.io/hu3rror/memos-litestream:stable"

2. 添加 env 部分。

[env]
  LITESTREAM_REPLICA_BUCKET = "your_bucket_name"  # 更改为您的 litestream bucket 名称
  LITESTREAM_REPLICA_ENDPOINT = "your_endpoint"  # 更改为您的 litestream ENDPOINT 网址
  LITESTREAM_REPLICA_PATH = "memos_prod.db"  # 如果不了解请保持默认值

3. 配置 litestream 备份

ℹ️ 如果您想使用其他存储提供程序,请检查 litestream 的 "Replica Guides" 部分并根据需要调整配置。

  1. 登录 B2 并创建一个bucket
  2. LITESTREAM_REPLICA_ENDPOINTLITESTREAM_REPLICA_BUCKET 的值设置到您的 [env] 部分。
  3. 为此 bucket 创建访问密钥。将密钥添加到fly的密钥存储中。
    flyctl secrets set LITESTREAM_ACCESS_KEY_ID="your_key_id" LITESTREAM_SECRET_ACCESS_KEY="your_application_key"

4. 添加持久卷

  1. 创建持久卷。fly.io 的免费套餐包含 3GB存储空间,而memos 若采用纯文本+外挂图床的方式,则所需要的存储空间非常少,大多数情况下1GB的卷已经足够了。您也可以在稍后更改卷的大小。如何更改可以在下面的_"scale persistent volume"_部分找到。

    flyctl volumes create memos_data --region your_region --size size_in_GB

    例子:

    flyctl volumes create memos_data --region hkg --size 1
  2. fly.toml 添加 mounts 部分,将持久卷附加到容器。

    [[mounts]]
      source = "memos_data"
      destination = "/var/opt/memos"

5. 将 internal_port 添加到 [[services]]

[http_service]
  internal_port = 5230   # change to 5230

6. 部署到 fly.io

flyctl deploy

如果一切正常,您现在可以通过运行 flyctl open来访问 memos。您应该会看到它的登录页面。

完成了!

🎊 尽情使用 memos 吧!

其他

如何更新到最新的 memos 版本

如果最新的 docker 镜像已经发布到 Docker Hub,您可以通过在项目文件夹中运行flyctl deploy来轻松升级memos。

自定义域名

如果您希望,您可以参考 fly.io 自定义域名

验证安装

  • 您应该能够登录到您的 memos 实例。
  • 在您的B2存储桶浏览一下,应该可以看到一个数据库的初始副本。
  • 您的用户数据应该在 VM 重新启动后仍然存在。

验证备份/扩展持久卷

Litestream 通过将其 WAL(Write-ahead logging) 持久化到B2上的备份来实现数据持久化。如果您想验证备份是否正常工作,可以手动模拟故障并恢复。

  1. 在 fly.io 的控制台中,使用 "Stop" 按钮停止您的应用程序。
  2. 更改您的 memos 数据库中的某些数据。
  3. 使用 "Start" 按钮重新启动应用程序。
  4. 检查您的更改是否仍然存在。如果是,则意味着已经成功数据持久化。

如果您想测试持久卷的扩展,请按照以下步骤操作:

  1. 使用 flyctl volumes resize 命令来增加持久卷的大小。

  2. 使用 SSH 连接到您的 fly.io VM,然后运行以下命令来扩展文件系统。

    cd memos-on-fly
    fly ssh console
    sudo resize2fs /dev/vda1

    注意:/dev/vda1是文件系统所在的设备名称。如果您的设备名称不同,请相应地更改此命令。

  3. 检查文件系统是否已成功扩展。您可以运行df -h命令来查看文件系统的容量和使用情况。如果一切正常,您应该看到文件系统的可用空间已经增加了。

Memos Telegram 机器人不响应,不回复

由于 fly.toml 更新到 v2 版本,默认开启 auto_stop_machines,你可以手动修改 fly.toml:

[http_service]
  auto_stop_machines = false   # 修改为 `false`,如果你使用 telegram bot