文章目录
引言
博客之前曾经写一个一篇关于 Memos 的搭建教程,如今半年过去了,回顾之前的那篇博客,多少感觉内容有些空洞,此次部署将包含更多的详细信息,以及如何解决项目备份的问题。
Memos简介
Memos 开源、轻量级笔记服务。轻松捕捉并分享您的精彩想法。
github 地址:https://github.com/usememos/memos
准备条件
- VPS
- 域名
VPS 系统最好为 Ubuntu 或 debian 系统。此教程以不限流量、年付 10 欧的 netcup vps 为例。域名也是来自 netcup 复活节活动是购买的 de 域名,年付 1.32 欧,性价比很高。
环境搭建
这里用最简单的 docker 方式一键部署,登录VPS后,使用 docker 官方脚本先来安装一下 docker 环境。
curl -fsSL https://get.docker.com | sudo sh
安装完成后,通过输入 docker –verison 来确认是否安装成功,弹出版本信息即为成功。
docker --version
部署 memos
1.新建项目目录,在这里以 /var/docker 为 docker 项目的目录,具体的项目会在此目录下创建对应名称的目录。比如 memos ,会新建 /var/docker/memos 项目路径。
mkdir -p /var/docker/memos && cd /var/docker/memos
2.配置 docker-compose 文件,首先通过 nano docker-compose.yml 新建 docker-compose.yml 文件,然后填入以下代码:
services:
memos:
image: neosmemo/memos:stable
container_name: memos
ports:
- "5230:5230"
volumes:
- /var/docker/memos:/var/opt/memos
键盘点击 ctrl + x,点击 y 保存
3.项目上线,使用下面的命令,部署项目
docker compose up -d
4.输入 docker ps 检测项目是否运行,看到 status 状态为 up,即意味着部署成功。
docker ps
5.浏览器输入 vps ip地址+端口 检测是否可以在浏览器中打开,出现如图所示即为成功。
升级 memos
发布新版本后,如果想要升级,可以按照以下步骤,依次执行如下命令:
- 停止并移除容器:docker-compose down
- 拉取最新的镜像(如果有更新的话):docker-compose pull
- 重新启动容器:docker-compose up -d
这样,你的应用程序就会被更新到最新版本,并且重新部署在 Docker 容器中。
选择存储:数据库、S3还是本地存储?
数据库存储
数据库存储旨在利用SQLite的单文件数据库,使其易于管理并与其他数据集成。事务确保数据一致性,并且对小型二进制文件有好处。然而,它对大型二进制文件的性能很差,增加了数据库大小,并减慢了备份速度,这可能会增加数据库文件中的碎片。
S3云存储
S3是亚马逊提供的云存储服务,可以存储各种类型的文件,并提供高可用性和可扩展性。存储大文件也具有成本效益,使其成为需要存储大量文件的应用程序的好选择。然而,检索文件可能比数据库或本地存储慢,可能需要额外的配置和维护,以及数据传输和请求的额外费用。
本地存储
本地存储是一个简单的数据存储解决方案,可以存储各种类型的文件,并提供高效的数据访问和查询。它适用于中小型文件,不需要额外费用或设置。然而,它的可用空间有限,这取决于设备和文件系统,它不适合大文件或大量文件。它也没有数据库或S3存储那么耐用或可靠。
结论
- 如果主要使用文本且文件很少,请使用默认的数据库存储。
- 如果已经拥有S3对象云存储,请将S3配置为备忘录。
- 如果没有S3并使用大量图像,请使用本地存储。
选择最适合您需求的存储选项。请记住,正确的存储选项可以对应用程序的性能和效率产生很大影响。
备份 memos 数据
其实有很多中备份数据的方法,如果存储的数据不是重要的个人私密文档,可以通过电报进行备份,下面是备份到电报的脚本。(前提需要在电报中配置相对应的电报机器人 token 和获取频道 id)
1.首先在项目路径下输入命令新建 nano backup.sh 文件,然后在文件中输入如下代码,请将 TELEGRAM_CHAT_ID 和 TELEGRAM_BOT_TOKEN 切换为自己电报机器人的 token 和频道 id
该脚本实现的功能为:将备份文件保存在 /var/docker/backup 文件夹中,该文件夹仅保存最近的 4 个备份文件。以防止备份文件占据大量磁盘空间。
#!/bin/bash
# 定义备份文件名和目录
BACKUP_DIR="/var/docker/memos"
BACKUP_FOLDER="/var/docker/backup"
BACKUP_FILE="$BACKUP_FOLDER/memos_backup_$(date +%Y%m%d_%H%M%S).tar.gz"
# 创建备份文件所在目录
mkdir -p "$BACKUP_FOLDER"
# 删除备份文件夹中旧的备份文件,只保留最近的三个备份文件
cd "$BACKUP_FOLDER" && ls -t | tail -n +4 | xargs rm -f
# 创建备份文件
tar -czvf "$BACKUP_FILE" -C "$BACKUP_DIR" .
# 替换以下内容为你的电报群组的 Chat ID 和 BOT Token
TELEGRAM_CHAT_ID=""
TELEGRAM_BOT_TOKEN=""
# 使用 curl 发送文件到电报群组
curl -F document=@"$BACKUP_FILE" "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendDocument?chat_id=$TELEGRAM_CHAT_ID"
2.赋予该 backup.sh 为可执行权限
chmod +x backup.sh
3.命令行输入 bash backup.sh 测试电报能否收到备份文件,成功会在电报中收到类似如下的文件。
4.为了实现自动化备份,我们可以在系统中加入计划任务,命令行输入 crontab -e,首次运行会提示选择编辑器,选择自己习惯的编辑器即可,这里我选择 1 ,用 nano 作为编辑器。
在新弹出的文本框中输入:0 20 * * * /bin/bash /var/docker/memos/backup.sh,这个意思是每天晚上八点执行该脚本。测试的时候,我们先将时间设置为测试的下一分钟,这样就知道脚本能否正常自动执行,待测试没问题,再改为自己设定的时间。
这里需要注意的是,计划时间是以 vps 系统时间为标准,所以如果想要在中国标准时间执行,则需要修改 vps 上的时间。可以通过以下命令进行修改:
sudo timedatectl set-timezone Asia/Shanghai
之后就会按照设定的时间发送备份文件到电报群组中。
如果觉得电报不是很合适,可以用 aws s3 进行备份,这个备份需要提前在 vps 上安装 aws cli 工具,然后在 aws 中配置密钥,在这里我给出大家思路,如果有必要,会专门写一篇博客,来介绍如何将 docker 的数据备份到 aws s3 存储桶中。
好了,今天的分享就到这里,感谢大家的观看。我们下篇博文见,see you 👋
你可能感兴趣的播客文章:
- Oracle cloud 免费套餐能开几台实例
- Oracle Cloud甲骨文云不同地区IP有多少
- 2024年分享7个最值得推荐的免费VPS
- 一篇文章了解全球IPV4地址分配
- 尼日利亚低价开通 YouTube 会员
如果你想及时收到关于兔哥博客更多内容,欢迎大家订阅电报频道:兔哥播报 和公共社区:兔哥论坛 。