搞一个属于自己的"微博" — 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
1
|
sudo apt install -y ssh
|
然后修改 root 用户密码
然后设置密码,之后进入 终端 创建连接的时候,用户名注意要写成你创建的 user 的名字,而不是 root
然后可以使用命令切换到 root 用户
这里输入 root 用户的密码之后即可切换到 root 用户
0.2.2 使用 root 用户登录 SSH
首先安装 SSH
1
|
sudo apt install -y ssh
|
然后编辑 SSH 配置文件
1
|
sudo vim /etc/ssh/sshd_config
|
找到以下内容并修改
1
2
3
4
|
# 允许 root 用户通过 SSH 登录
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;
# 将 HTTP 请求重定向到 HTTPS
return 301 https://$host$request_uri;
}
server {
listen 443 ssl;
server_name testmemos.com;
# SSL 证书配置
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": "😄"
}
}'
|