类似我之前实现的时间轴, 也是一个私人的说说或者是私人的微博,可以用来记录一些临时的想法或者分享某一时刻的精彩瞬间,毕竟数据在自己手上相当酷不是
如何搭建
根据memos文档, 搭建也非常简单, 直接使用 docker 即可
1docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
docker-compose
因为我需要和我之前的搭建好一些服务(Blog, DNS等)统一管理, 所以转成了 docker-compose 配置
1version: "3"
2
3services:
4 blog:
5 ...
6 memos:
7 image: neosmemo/memos:latest
8 container_name: "memos"
9 ports:
10 - 127.0.0.1:8005:5230
11 volumes:
12 - ./memos:/var/opt/memos
13 network_mode: bridge
需要注意的是 ./memos 目录用来作为数据持久化
nginx和https配置
这也是和我之前的服务保持一致, 我的 nginx 配置目录格式如下
1/etc/nginx/
2├── nginx.conf
3├── conf.d
4│ ├── default.conf
5│ ├── upsteam.conf
6│ ├── blog.conf
7│ ├── cloud.conf
8│ ├── ...
9│ ├── memos.conf
10│ └── ssl
11│ ├── xxx.com.conf
-
使用 HTTPS 连接
1server { 2 listen 80; 3 listen [::]:80; 4 server_name xxx.com *.xxx.com; 5 6 location / { 7 return 301 https://$host$request_uri; 8 } 9 location ^~ /.well-known/acme-challenge { 10 alias /home/xxx/app/acme.sh/xxx.com/.well-known/acme-challenge; 11 } 12} -
添加
upstream1upstream memos.xxx.com { 2 server 127.0.0.1:8005 max_fails=3 fail_timeout=30s; 3} -
添加
memos.conf1server { 2 listen 443 ssl; 3 listen [::]:443 ssl; 4 server_name memos.xxx.com; 5 include /etc/nginx/conf.d/ssl/xxx.com.conf; 6 7 access_log /home/xxx/app/logs/memos_nginx_access.log; 8 error_log /home/xxx/app/logs/memos_nginx_error.log; 9 10 location / { 11 proxy_pass http://memos.xxx.com; 12 proxy_redirect off; 13 proxy_set_header Host $host; 14 proxy_set_header X-Real-IP $remote_addr; 15 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 16 } 17} -
添加DNS记录: 到
CloudFlare添加一个memos的 CNAME 记录到cname.xxx.com, 等待一分钟即可 -
添加SSL证书: 如果使用了
CloudFlare, 这一步可以忽略。 因为我很早就建好了一个acme.sh服务,现在可以使用它来增加一个证书,首先需要重启nginx, 生成证书前也可以使用 dig memos.xxx.com 验证DNS是否生效, 我这里使用的是webroot方式1docker exec acme.sh --issue -d xxx.com -d www.xxx.com,memos.xxx.com -w /acme.sh/xxx.com --preferred-chain "ISRG" --server letsencrypt然后重启nginx
移动端支持
既然要记录一些临时的想法,肯定不能只有web平台,否则有了新想法,等打开浏览器,登录,然后输入,这时候想法早没了,虽然 Memos 本身自带的web界面在手机浏览器上也能渲染得很好,但是有一个手机APP还是会更方便一些,目前有一个 memos.moe 可供使用,我也安装使用过,确实流畅,但还有一些基础功能比如资源管理和系统管理没有实现,为此,我自己写了一个 专属APP, 添加了这一部分的实现
FAQ
重置密码
升级到 0.12.0 后无法登录,总是提示 Incorrect login credentials, 因为使用的 Docker 部署,找到挂载目录下的 memos_prod.db 文件(请先备份好), 我的机器上没有安装 sqlite, 所以需要
-
拷贝到本地
1└──╼ scp xxx:~/app/memos/memos_prod.db ./ -
然后使用
sqlite打开文件并手动更新1└──╼ sqlite3 memos_prod.db 2SQLite version 3.32.2 2021-07-12 15:00:17 3Enter ".help" for usage hints. 4sqlite> select * from user; 5... 6sqlite> update user set password_hash="$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK" where id=1; 7sqlite> .quit这时候密码会被设置成 secret
-
覆盖原文件(需要先暂停服务)
1└──╼ scp ./memos_prod.db xxx:~/app/memos/memos_prod.db重启服务,重新登录后修改新密码即可
知识共享署名-非商业性使用-相同方式共享4.0国际许可协议