关于Memos

总结关于目前Memos的一些用法

前言

我从接触独立博客开始,就一直在博客的子栏目中部署了一个类似 嘀咕 的微博客。 最初的作用是备份 QQ 空间、Twitter 和朋友圈等。 可是慢慢发现,不知道为什么自己在这些社交媒体的分享欲变得越来越弱,只想有一个地方来记录我平时的一些想法,于是有了嘀咕。

现在在独立博客圈少部博主中流行的这种“B 言 B 语”,最早来源于少数派上的一篇文章——《保卫表达:用后端 BaaS 快速搭建专属无点赞评论版微博——b 言 b 语》,“B 言 B 语”也叫“废话胶囊”。

由此也衍生出了:

目前以上版本均可使用,不过可能有些版本的使用成本有点高。

今天要介绍的是另一个能提供类似功能的应用——Memos Memos 自己对标的竞品是 Flomo ,我们是不是把它用歪了?

部署 Memos

前置条件:1.一台 VPS 服务器或本地电脑(或 Docker SaaS 平台)2.一点点 WebStack 技能(Docker、Nginx)

安装docker-compose-plugin插件后,docker compose命令可以去掉中间的”-”,Docker Compose V1 版本已经结束生命周期。

暂时不建议把 Memos 部署到网站二级目录,如:https://example.com/memos 而应该部署到一个二级域名,如:https://memos.example.com

1.新建 docker-compose.yml 一般在准备用于 Memos 的域名的目录下新建 docker-compose.yml 文件:

cd /www/wwwroot/memos.example.com
vim docker-compose.yml

输入以下内容:

version: '3.0'
services:
  memos:
    image: neosmemo/memos
    container_name: memos
    volumes:
      - ./memos/:/var/opt/memos
    ports:
      - 5230:5230
    restart: always

2.启动 Memos 启动 Memos

docker compose up -d

等待镜像拉取完成,Memos 就运行在服务器的5230端口了。 此时,打开http://127.0.0.1:5230就能访问 Memos 了。 如果有公网 IP,那就打开IP+端口,如: http://119.29.29.29:5230 。 用域名反代 IP 见下文第 4 点。 常用的命令有:

docker compose up -d
docker compose down
docker compose pull
docker compose up -d --force-recreate

3.升级 Memos

Memos 官方提供的升级命令

docker-compose down && docker image rm neosmemo/memos:latest && docker-compose up -d

会导致 Memos 在升级期间掉线,因为 down 了,特别是境内服务器网速不好的情况下,掉线时间会随着 pull 时间无限延长。

最新版 Docker 升级 Memos 的命令有改进空间:

docker compose pull && docker compose up -d --force-recreate

但是如果用了镜像加速服务,因为缓存的原因也可能有 pull 不到最新镜像的问题。

4.Nginx 反代 如果打算对互联网提供 Memos 访问服务,就需要反代 Memos,一般都是用 Nginx,反代5230端口即可。

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 REMOTE-HOST $remote_addr;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $connection_upgrade;
add_header X-Cache $upstream_cache_status;
# cache
add_header Cache-Control no-cache;
expires 12h;
}

一些主机管理面板或者 NPM 反代面板提供可视化反代设置,那更简单。

5.备份数据 在第 1 步中的docker-compose.yml文件中,

volumes:
  - ./memos/:/var/opt/memos

这段就是数据持久化配置,如果不做数据持久化,Docker 容器重启后,所有 Memos 都会消失。 “:”冒号前面的内容是物理宿主机上的目录,例子中对应的目录为:

/www/wwwroot/memos.example.com/memos

需要备份的数据是此目录下的memos_prod.db文件,是一个 SQLite 数据库文件,Memos 的所有设置、用户信息、附件和 Memos 都保存在这个文件中。 官方提供的示例中,数据卷为家目录/home/username下的.memos目录,是一个隐藏目录,注意对比。

Memos 美化代码

效果

调用 Bing 每日背景

适配 v0.11.2

html {
  background-image: url('https://bing.immmmm.com/img/bing?region=zh-CN&type=image');
  width: 100%;
  height: 100vh;
  background-position: center;
  background-size: cover;
  background-attachment: fixed;
}
.w-full.bg-zinc-100,
.bg-white,
.hover\:bg-white:hover,
.dark .dark\:bg-zinc-700,
.dark .dark\:hover\:bg-zinc-700:hover,
.memo-wrapper,
.bg-gray-200,
.dark .memo-wrapper,
.memo-editor-container {
  --tw-bg-opacity: 0.66 !important;
}
.dark header.dark\:bg-zinc-800,
aside.dark\:bg-zinc-800,
.bg-gray-100,
.dark html,
.dark body {
  --tw-bg-opacity: 0 !important;
}
.memo-editor-container > .memo-editor {
  background-color: transparent !important;
}

加送界面细节微调:

.status-text {
  font-size: 10px !important;
  border: none;
  color: rgb(156, 163, 175) !important;
}
.tag-span,
.dark .tag-span {
  border: 1px solid;
  border-radius: 6px;
  padding: 0px 6px;
  color: rgb(22, 163, 74) !important;
  font-size: 12px !important;
  -webkit-transform: scale(calc(10 / 12));
  transform-origin: left center;
}
.memo-content-text .link {
  color: rgb(22, 163, 74) !important;
  margin-right: -6px;
}
header .bg-blue-600 {
  display: none !important;
}
.text-lg {
  font-size: 1rem !important;
}
.header-wrapper,
.sidebar-wrapper {
  width: 11rem !important;
}
.filter-query-container {
  padding-bottom: 0.5rem;
}

加载「霞鹜文楷」在线字体

body {
  font-family: 'LXGW WenKai Screen', sans-serif !important;
}
function changeFont() {
  const link = document.createElement('link')
  link.rel = 'stylesheet'
  link.type = 'text/css'
  link.href = 'https://cdn.staticfile.org/lxgw-wenkai-screen-webfont/1.6.0/lxgwwenkaiscreen.css'
  document.head.append(link)
};
changeFont()

Hexo 博客嵌入

懒得搬过来了 参考链接: 基于Memos实现说说和清单功能。 | Leonus 基于memos实现动态相册 | Leonus

可能大家需要自行适配一下自己的博客,相信以大家的聪明才智肯定没问题的啦。

Memos Awesome

Some Tips

  1. 发图尽量把图片传到第三方图床,(至少近期版本)别上传到 Memos 资源库。
  2. 附件也一样别传到 Memos 资源库,可以传到第三方网盘,贴上分享链接。
  3. 备份memos_prod.db数据库遵循两地三中心原则,多处备份,且是单向的。
  4. 如果你意识不到数据对你有多珍贵或重要,用 SaaS 服务即可,不用自建。
  5. 没有那么多人来看你的 Memos,自娱自乐即可。
  6. 如果要用 Memos 里的 Ask AI 可通过自建 OpenAI API Host 在墙内使用。

欢迎通过 Twitter 邮件告诉我你的想法
Find me on Twitter or write me an email