搞一个属于自己的'微博' --- Memos

介绍 memos

搞一个属于自己的"微博" — Memos

一、Memos 介绍

官网:https://www.usememos.com/

项目地址:https://github.com/usememos/memos

Memos 是一款轻量级的开源自托管备忘录平台,设计简单,专注于记录想法和便签。它适合个人使用或团队协作,是一款简洁却功能强大的工具,它主要有以下几个特点

  1. 简单的笔记记录
    • 支持 Markdown 语法,可以方便地编写格式化文本。
    • 支持代码块、高亮等功能,适合开发者或技术人员。
  2. 标签与组织
    • 通过标签(Tags)对备忘录进行分类和整理,便于检索。
    • 可用过滤器快速定位特定内容。
  3. 跨平台支持
    • Memos 支持浏览器直接访问,也可以通过 Progressive Web App (PWA) 安装为桌面应用
    • 可通过 API 集成到其他工具或服务中
  4. 实时同步
    • 提供实时保存和同步功能,确保内容不会丢失
    • 支持多设备访问,便于随时随地查看备忘录
  5. 搜索功能
    • 内置强大的全文搜索,快速找到所需的备忘录
  6. 开源与自托管
    • 代码开源,用户可以自行托管,掌控自己的数据
    • 支持 Docker 快速部署
  7. 轻量且快速
    • 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 连接

​ 这里可以有两种方式

  1. 一种是可以直接使用你注册时创建的 user 登录(我这里创建的 user 是 moka),然后修改 root 密码并切换回 root 用户
  2. 另一种是可以直接在 SSH 配置文件上修改允许 root 用户登录 SSH,然后修改 root 用户密码

​ 这两种我都介绍一下,首先是第一种

0.2.1 使用非 root 用户登录 SSH(推荐)

​ 首先安装 SSH

1
sudo apt install -y ssh

​ 然后修改 root 用户密码

1
sudo passwd root

​ 然后设置密码,之后进入 终端 创建连接的时候,用户名注意要写成你创建的 user 的名字,而不是 root

​ 然后可以使用命令切换到 root 用户

1
su -

​ 这里输入 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 用户密码

1
sudo passwd root

​ 好了,基础配置完成了,下面来让我们正式部署 Memos 了

​ 同样,这里也有两种方式部署:

  1. Docker 部署(推荐,适合新手)
  2. 二进制文件部署(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

1
sudo ufw allow 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 的数据库以及二进制文件

1
mkdir -p ~/memos/data

​ 然后进入这个文件夹

1
cd ~/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
chmod +x 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": "😄"
    }
  }'
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计
备案图标 辽公网安备21010602001101 辽ICP备2024027190号-1