banner
Barry

Barry

偶尔摆烂,经常偶尔.
twitter
github
tg_channel
medium
email
steam_profiles

关于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 在墙内使用。
Loading...
Ownership of this post data is guaranteed by blockchain and smart contracts to the creator alone.