今天,继续来分享一款优秀的开源应用 memos 。
一、概述
memos 是一个以隐私为先、可自托管的知识库,适用于个人笔记、团队维基和知识管理。它使用 Go 和 React 构建,提供闪电般的性能,同时不牺牲功能或可用性。
- 支持自托管,永久免费,MIT 许可证
- 极简设计并支持深色模式,移动设备响应式布局
- 支持 REST + gRPC API
- 支持 Docker 安装,支持 SQLite、MySQL 和 PostgreSQL
- 支持 Markdown 及文本存储 —— 随时随地携带你的数据
给自己的云服务器又增加了一点负担:https://memos.hollowman.cn
二、docker 搭建
1. 创建 docker-compose.yml文件
services:
memos:
image: neosmemo/memos:stable
container_name: memos
restart: unless-stopped
ports:
- "5230:5230" # 端口映射(主机:容器)
volumes:
- ./memos:/var/opt/memos # 挂载数据卷(主机:容器)配置说明:
镜像选择: image: neosmemo/memos:stable
容器名称: container_name: memos
重启策略: restart: unless-stopped
端口映射:
ports:
- "5230:5230" # 端口映射(主机:容器)前面为主机端口,可自定义,访问时使用:http://localhost:5230
数据挂载: - ./memos:/var/opt/memos # 挂载数据卷(主机:容器)
./memos为主机目录,这里使用了相对路径,表示的是 docker-compose.yml 所在目录下的 memos 文件夹/var/opt/memos为容器内的目录
2. 运行容器
在 docker-compose.yml 所在目录,运行命令:
sudo docker compose up -d3. 访问 memos 系统
在浏览器中输入 http://localhost:5230 即可创建用户及管理知识系统
三、API 访问
作为个人私有的知识库,memos 可堪大任。可有时候,我们希望共享知识库,而又缺少忠实的用户,只能寄希望于知识库之外的大众了,memos 懂,因此也提供了 API 访问的接口。
1. 本文章用到的 API 接口
| 接口功能 | 方法 | 路径 |
|---|---|---|
| 查询第1页的备忘录列表,默认每页10条 | GET | /api/v1/memos |
| 查询第1页的备忘录列表,指定每页条数 | GET | /api/v1/memos?page_size=n |
| 查询第n页备忘列表,指定每页条数 | GET | /api/v1/memos?page_size=n&page_token=XXX |
| 查询某个creator(如users/1)对应用户名 | GET | /api/v1/{creator} |
| 查询某个笔记的评论 | GET | api/v1/memos.name/comments |
| 评论某个笔记 | POST | api/v1/memos.name/comments |
Memos API 使用 Bearer Token 认证机制,所有需要认证的接口必须在请求头中包含Authorization: Bearer <token>。page_size变量名也可以使用pageSize替代;同理page_token也可以使用pageToken替代
注意:发布备忘录时,可以选择私有、工作区和公开,如果保存为公开,则查询时可以不需要认证(此时,即使是随便输入 token 也不会报错)
3.通过 tocken 访问 memos(在 AI 肩膀上看得全)
这是代码演示页面:readmemos demo,主要功能有:
- 默认会获取 guest 用户的 token 进行操作
- 分页显示(可选择每页数量)
- markdown 渲染
- 显示笔记用户及笔记权限(显示私有笔记需要正确的 token)
- 简单的笔记添加(可选择公开或私有,默认公开)
- 评论显示(正确的 token 可访问该用户的所有评论以及其他用户的公开评论)
- 评论回复(强制公开评论)
代码太长,不贴出来了,可以在演示页面,直接按 F12 或者查看源代码来获取源代码。其中用到的传递 guest token 的 gettoken.php 文件代码为:
<?php
header('Content-Type: application/json');
$token = '输入默认用户的token';
// 如果你没有 token,可以返回错误
if (!$token) {
echo json_encode(['error' => '未找到访问令牌']);
exit;
}
// 成功返回 token
echo json_encode(['token' => $token]);
?>目前发现的似乎是有点逻辑方面的问题,不知道 memos 后期会不会修正:
公开笔记,可以在不登陆的情况下访问;但公开评论,却只有登陆用户(可以是其他用户)才能访问。
也就是说,输入错误的token能查询出公开笔记,但公开评论却无法查看;而输入了正确的token,则在查询出公开笔记的基础上,还可以查看其他成员的公开评论。



之前也想弄个说说,但是热情下来了感觉懒得折腾了
我也是一阵一阵的,博客代码已经好久没动了,有些需要调整的地方都懒得花时间。
这个docker我关闭了。因为每次还得选择自己看还是公开,微博 .x.就用mastodon了,没有自建。
后台有个选项可以可以默认选择公开
这是最新版本吗?可以加评论吗
已增加评论功能
已找到评论的api接口,正在测试中
基本功能在用,API来学习一下
我还是第一次学习,之前只看过大家的数据挂载