memos v0.24.0使用minio S3存储教程
1、环境介绍
我这里全都是https域名+端口号访问方式
minio
这里需要2个域名,我使用的是minio.woshi.xin和memos.minio.woshi.xin两个域名 第一个是给minio使用 第二个是给memos使用。
docker安装的minio,并做反向代理+ssl证书,这里需要注意的是,反向代理的时候,发送域名(host)这里要写$http_host,而不是127.0.0.1要不你存储的时候可能会出错!
memos
docker安装的memos,并做反向代理+ssl证书
2.minio安装操作
在memos0.21版本的时候,s3对象存储(minio)中用的是Path style的URL构建方式,Bucket是在后边拼接,一个域名就能搞定例如我的域名是https://minio.woshi.xin,Bucket是memos,那么在我们请求的时候他是类似https://minio.woshi.xin/memos的格式;
而在memos0.22.0版本升级后,s3对象存储(minio)中用的是 Virtual hosted style的URL构建方式,Bucket会拼接在Endpoint的前边,例如我的域名是https://minio.woshi.xin,Bucket是memos,请求的时候就是https://memos.minio.woshi.xin;
安装好minio后添加上环境变量
MINIO_DOMAIN=minio.woshi.xin(改为你访问minio的网址,完后重启一下)
3.设置minio
进入minio建立存储桶:memos
设置为公开
然后更改区域为CN
建立密钥
4.需要注意
设置完以上的内容,记得把minio的反代端口将19001改成19000。改的时候注意发送域名(host)是$http_host,而不是127.0.0.1
5.设置memos


填完正常使用即可,别忘了改memos中reference 字段的大小
如果还是不会 那么你就跟着我做吧
这个py脚本是memos导出的md文件恢复 !!!只是针对我使用的v 0.21.0版本测试成功
暂时这个版本没有办法直接恢复原始文章的时间!只能手动修改 按ALT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| import os import requests import warnings from datetime import datetime
# 关闭警告 warnings.filterwarnings("ignore")
# ===================== 你的配置(已填好) ===================== MEMOS_URL = "https://你的memos地址" # 你的有效Token ACCESS_TOKEN = "你的memos,token" MD_DIR = r"D:\ceshi\memos" #脚本地址 # ==============================================================
# 🎯 【调试确认的唯一正确接口】 API_URL = f"{MEMOS_URL}/api/v1/memo" HEADERS = { "Authorization": f"Bearer {ACCESS_TOKEN}", "Content-Type": "application/json" }
print("=== 开始导入 | 正确接口+文件名时间 ===") success = 0
for filename in os.listdir(MD_DIR): if not filename.lower().endswith(".md"): continue
try: # 1. 从文件名提取时间(2024-11-04T08_52_00Z.md) time_str = filename.replace(".md", "").replace("_", ":") dt = datetime.fromisoformat(time_str.replace("Z", "+00:00")) timestamp = int(dt.timestamp())
# 2. 读取笔记内容 with open(os.path.join(MD_DIR, filename), "r", encoding="utf-8") as f: content = f.read()
# 3. 正确参数(官方支持,必显示) data = { "content": content, "createdTs": timestamp, # 自定义时间 "visibility": "PRIVATE" }
# 4. 发送请求 resp = requests.post(API_URL, json=data, headers=HEADERS, verify=False, timeout=10) if resp.status_code == 200: print(f"✅ 成功:{filename} | 时间:{time_str}") success += 1
except Exception as e: print(f"❌ 失败:{filename}")
print(f"\n🎉 导入完成!成功导入 {success} 条!") print("✅ 刷新网页,所有笔记+正确时间全部显示!") input("按回车退出")
|