搞一个属于自己的”微博” — Memos
一、Memos 介绍
官网:https://www.usememos.com/
项目地址:https://github.com/usememos/memos
Memos 是一款轻量级的开源自托管备忘录平台,设计简单,专注于记录想法和便签。它适合个人使用或团队协作,是一款简洁却功能强大的工具,它主要有以下几个特点
- 简单的笔记记录
- 支持 Markdown 语法,可以方便地编写格式化文本。
- 支持代码块、高亮等功能,适合开发者或技术人员。
- 标签与组织
- 通过标签(Tags)对备忘录进行分类和整理,便于检索。
- 可用过滤器快速定位特定内容。
- 跨平台支持
- Memos 支持浏览器直接访问,也可以通过 Progressive Web App (PWA) 安装为桌面应用
- 可通过 API 集成到其他工具或服务中
- 实时同步
- 提供实时保存和同步功能,确保内容不会丢失
- 支持多设备访问,便于随时随地查看备忘录
- 搜索功能
- 开源与自托管
- 代码开源,用户可以自行托管,掌控自己的数据
- 支持 Docker 快速部署
- 轻量且快速
- Memos 体积小,资源占用少,响应速度快,适合对性能有要求的用户
二、部署 Memos
0. 环境配置
主机 |
IP |
系统 |
Ubuntu |
192.168.100.130 |
Ubuntu |
0.1 更新 apt 源
更新升级一下系统内的软件,让他们是最新版的
1
| sudo apt update -y && sudo apt upgrade -y
|
0.2 配置 SSH 连接
这里可以有两种方式
- 一种是可以直接使用你注册时创建的 user 登录(我这里创建的 user 是
moka
),然后修改 root 密码并切换回 root 用户
- 另一种是可以直接在 SSH 配置文件上修改允许 root 用户登录 SSH,然后修改 root 用户密码
这两种我都介绍一下,首先是第一种
0.2.1 使用非 root 用户登录 SSH(推荐)
首先安装 SSH
然后修改 root 用户密码
然后设置密码,之后进入 终端 创建连接的时候,用户名注意要写成你创建的 user 的名字,而不是 root
然后可以使用命令切换到 root 用户
这里输入 root 用户的密码之后即可切换到 root 用户
0.2.2 使用 root 用户登录 SSH
首先安装 SSH
然后编辑 SSH 配置文件
1
| sudo vim /etc/ssh/sshd_config
|
找到以下内容并修改
1 2 3 4
| PermitRootLogin yes
PasswordAuthentication yes
|
然后重启 SSH 服务
1
| sudo systemctl restart ssh
|
然后修改 root 用户密码
好了,基础配置完成了,下面来让我们正式部署 Memos 了
同样,这里也有两种方式部署:
- Docker 部署(推荐,适合新手)
- 二进制文件部署(main)
这里我们两种方法都讲一下
1. Docker 部署
1.1 安装 Docker
Ubuntu 安装 Docker 比较简单,因为 apt 源里面都有
1
| sudo apt install docker.io
|
然后添加上 Docker 的”加速器”(国内用户专属)
1 2
| sudo mkdir -p /etc/docker sudo vim /etc/docker/daemon.json
|
然后在里面添加上以下内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| { "registry-mirrors": [ "https://dockerhub.icu", "https://docker.chenby.cn", "https://docker.1panel.live", "https://docker.awsl9527.cn", "https://docker.anyhub.us.kg", "https://dhub.kubesre.xyz", "https://docker.registry.cyou", "https://docker-cf.registry.cyou", "https://dockercf.jsdelivr.fyi", "https://docker.jsdelivr.fyi", "https://dockertest.jsdelivr.fyi", "https://mirror.aliyuncs.com", "https://dockerproxy.com", "https://mirror.baidubce.com", "https://docker.m.daocloud.io", "https://docker.nju.edu.cn", "https://docker.mirrors.sjtug.sjtu.edu.cn", "https://docker.mirrors.ustc.edu.cn", "https://mirror.iscas.ac.cn", "https://docker.rainbond.c" ] }
|
然后保存后应用
1 2
| sudo systemctl daemon-reload sudo systemctl restart docker
|
1.2 安装 Memos
根据官方文档里给出来的步骤
此命令将在后台启动 Memos,并将其暴露在端口 5230 上。数据将存储在 ~/.memos/ 中,这是用户主目录中的隐藏目录
1 2 3 4 5 6
| sudo docker run -d \ --init \ --name memos \ --publish 5230:5230 \ --volume ~/.memos/:/var/opt/memos \ neosmemo/memos:stable
|
然后在防火墙上开放端口 5230
此时进入 http://192.168.100.130:5230
即可进入 Memos
PS:有关 Docker 的使用的详情可以参考这篇文章:Docker 的安装与使用
2. 二进制文件部署
2.1 安装数据库
Memos 官方推荐的数据库是 SQLite,我们这里也安装这个
如果非要使用其他数据库的话,可以参考一下官方文档
1
| sudo apt install -y sqlite3
|
安装好即可
2.2 安装 Memos
首先,下载 wget 或者 curl 等工具,方便后续下载内容
这里我两个都下,实际上二选一即可
1
| sudo apt install -y curl wget
|
然后创建文件夹,用来放置 Memos 的数据库以及二进制文件
然后进入这个文件夹
然后进入到 Memos Github 的 Latest 页面,下载最新的二进制文件
可以使用 wget 进行下载
1
| wget https://github.com/usememos/memos/releases/download/v0.23.0/memos_v0.23.0_linux_amd64.tar.gz
|
也可以使用 curl 进行下载
1
| curl -O https://github.com/usememos/memos/releases/download/v0.23.0/memos_v0.23.0_linux_amd64.tar.gz
|
然后解压压缩包并删除这个压缩包
1
| tar -zxf memos_v0.23.0_linux_amd64.tar.gz && rm -f memos_v0.23.0_linux_amd64.tar.gz
|
给 memos
这个二进制程序添加使用权(执行权限)
然后就可以运行这个程序了
1
| ./memos --data ./data --port 5230
|
可以看到以下内容即为成功
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| moka@moka-Ubuntu:~/memos$ ./memos --data ./data --port 5230 --- Server profile version: 0.23.0 data: /home/moka/memos/data dsn: /home/moka/memos/data/memos_dev.db addr: port: 5230 mode: dev driver: sqlite ---
███╗ ███╗███████╗███╗ ███╗ ██████╗ ███████╗ ████╗ ████║██╔════╝████╗ ████║██╔═══██╗██╔════╝ ██╔████╔██║█████╗ ██╔████╔██║██║ ██║███████╗ ██║╚██╔╝██║██╔══╝ ██║╚██╔╝██║██║ ██║╚════██║ ██║ ╚═╝ ██║███████╗██║ ╚═╝ ██║╚██████╔╝███████║ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ╚══════╝ Version 0.23.0 has been started on port 5230 --- See more in: 👉Website: https://usememos.com 👉GitHub: https://github.com/usememos/memos ---
|
然后就可以到 http://192.168.100.130:5230
进入 Memos
但是我们这里先不进,因为这样不关的话我们就用不了机器了,而且关闭这个终端的话这个程序也会停止
我们这里先使用 Ctrl+C 先退出这个 memos,我们这里先为 Memos 配置后台服务(systemd)
首先创建 Systemd 服务文件
1
| sudo touch /etc/systemd/system/memos.service
|
然后添加以下内容
1
| sudo vim /etc/systemd/system/memos.service
|
1 2 3 4 5 6 7 8 9 10 11 12
| [Unit] Description=Memos Service After=network.target
[Service] ExecStart=/home/moka/memos/memos --data /home/moka/memos/data --port 5230 Restart=always User=moka WorkingDirectory=/home/moka/memos
[Install] WantedBy=multi-user.target
|
- 这里面涉及到
moka
的位置都换成你们自己创建 user 的用户名
- 如果你用的是 root 用户下载/执行的,就把这里的
/home/moka
全都替换成 /root
并且下面的 User
后面的内容也要换成 root
而不是 moka
然后启动并应用服务
1 2 3
| sudo systemctl daemon-reload sudo systemctl enable memos sudo systemctl start memos
|
此时进入 http://192.168.100.130:5230
即可进入 Memos
三、配置 nginx(可选)
安装完 Memos 之后,然后如果想要在公网上使用的话,就需要配置 HTTPS 使用
这里就需要域名和SSL证书什么的就不多说了
- 我们这里假设你已经整完了
- 域名是
testmemos.com
- 域名对应的SSL证书也存放在了
/etc/nginx/ssl/
目录下
这里提供一个 nginx 配置文件,作为参考
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
| server { listen 80; server_name testmemos.com;
return 301 https://$host$request_uri; }
server { listen 443 ssl; server_name testmemos.com;
ssl_certificate /etc/nginx/ssl/fullchain.pem; ssl_certificate_key /etc/nginx/ssl/key.pem;
ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5;
client_max_body_size 10M;
location / { proxy_pass http://127.0.0.1:5230; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; }
location ~* \.(ico|css|js|gif|jpe?g|png|woff2?|eot|ttf|svg|otf)$ { expires 6M; access_log off; add_header Cache-Control "public"; proxy_pass http://127.0.0.1:5230; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } }
|
四、第三方客户端
memos 有着不少第三方客户端:
五、API
这里列举四个比较常用的 API,其他 API 可以查看 官方 API 文档
1. 查询 memos
1 2 3
| curl -s https://{YOUR_SITE}/api/v1/memos \ -H "Accept: application/json" \ -H "Authorization: Bearer {YOUR_API_TOKEN}"
|
2. 查询资源(resouces)
1 2 3
| curl -s https://{YOUR_SITE}/api/v1/resources \ -H "Accept: application/json" \ -H "Authorization: Bearer {YOUR_API_TOKEN}"
|
3. 查询反应(reaction)
1 2 3
| curl -s -X GET https://{YOUR_SITE}/api/v1/{memos_id}/reactions \ -H "Accept: application/json" \ -H "Authorization: Bearer {YOUR_API_TOKEN}"
|
4. 添加反应(reaction)
1 2 3 4 5 6 7 8 9
| curl -s -X POST https://{YOUR_SITE}/api/v1/{memos_id}/reactions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer {YOUR_API_TOKEN}" \ -d '{ "reaction": { "contentId": "{memos_id}", "reactionType": "😄" } }'
|