Table of Contents
类似我之前实现的时间轴, 也是一个私人的说说或者是私人的微博,可以用来记录一些临时的想法或者分享某一时刻的精彩瞬间,毕竟数据在自己手上相当酷不是
如何搭建
根据memos文档, 搭建也非常简单, 直接使用 docker
即可
docker run -d --name memos -p 5230:5230 -v ~/.memos/:/var/opt/memos neosmemo/memos:latest
docker-compose
因为我需要和我之前的搭建好一些服务(Blog, DNS等)统一管理, 所以转成了 docker-compose
配置
version: "3" services: blog: ... memos: image: neosmemo/memos:latest container_name: "memos" ports: - 127.0.0.1:8005:5230 volumes: - ./memos:/var/opt/memos network_mode: bridge
需要注意的是 ./memos
目录用来作为数据持久化
nginx和https配置
这也是和我之前的服务保持一致, 我的 nginx
配置目录格式如下
/etc/nginx/ ├── nginx.conf ├── conf.d │ ├── default.conf │ ├── upsteam.conf │ ├── blog.conf │ ├── cloud.conf │ ├── ... │ ├── memos.conf │ └── ssl │ ├── xxx.com.conf
-
使用 HTTPS 连接
server { listen 80; listen [::]:80; server_name xxx.com *.xxx.com; location / { return 301 https://$host$request_uri; } location ^~ /.well-known/acme-challenge { alias /home/xxx/app/acme.sh/xxx.com/.well-known/acme-challenge; } }
-
添加
upstream
upstream memos.xxx.com { server 127.0.0.1:8005 max_fails=3 fail_timeout=30s; }
-
添加
memos.conf
server { listen 443 ssl; listen [::]:443 ssl; server_name memos.xxx.com; include /etc/nginx/conf.d/ssl/xxx.com.conf; access_log /home/xxx/app/logs/memos_nginx_access.log; error_log /home/xxx/app/logs/memos_nginx_error.log; location / { proxy_pass http://memos.xxx.com; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
-
添加DNS记录: 到
CloudFlare
添加一个memos
的 CNAME 记录到cname.xxx.com
, 等待一分钟即可 -
添加SSL证书: 如果使用了
CloudFlare
, 这一步可以忽略。 因为我很早就建好了一个acme.sh
服务,现在可以使用它来增加一个证书,首先需要重启nginx
, 生成证书前也可以使用 dig memos.xxx.com 验证DNS
是否生效, 我这里使用的是webroot
方式docker 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
, 所以需要
-
拷贝到本地
└──╼ scp xxx:~/app/memos/memos_prod.db ./
-
然后使用
sqlite
打开文件并手动更新└──╼ sqlite3 memos_prod.db SQLite version 3.32.2 2021-07-12 15:00:17 Enter ".help" for usage hints. sqlite> select * from user; ... sqlite> update user set password_hash="$2a$14$ajq8Q7fbtFRQvXpdCq7Jcuy.Rx1h/L4J60Otx.gyNLbAYctGMJ9tK" where id=1; sqlite> .quit
这时候密码会被设置成 secret
-
覆盖原文件(需要先暂停服务)
└──╼ scp ./memos_prod.db xxx:~/app/memos/memos_prod.db
重启服务,重新登录后修改新密码即可