前言#
我從接觸獨立博客開始,就一直在博客的子欄目中部署了一個類似 嘀咕 的微博客。
最初的作用是備份 QQ 空間、Twitter 和朋友圈等。
可是慢慢發現,不知道為什麼自己在這些社交媒體的分享欲變得越來越弱,只想有一個地方來記錄我平時的一些想法,於是有了嘀咕。
現在在獨立博客圈少部博主中流行的這種 “B 言 B 語”,最早來源於少數派上的一篇文章 ——《保衛表達:用後端 BaaS 快速搭建專屬無點讚評論版微博 ——b 言 b 語》,“B 言 B 語” 也叫 “廢話膠囊”。
由此也衍生出了:
- LeanCloud 版(原版)
- Golang 版
- 騰訊雲 CloudBase 版
- 木木老師修改版 《「哔哔點啥」微信公眾號 2.0》
- BBTalkVercel 版
目前以上版本均可使用,不過可能有些版本的使用成本有點高。
今天要介紹的是另一個能提供類似功能的應用 ——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#
- https://memos.top
- Discuss in Telegram 👾
- Docker Hub:https://hub.docker.com/r/neosmemo/memos
- Docker Hub Nightly:https://hub.docker.com/r/eallion/memos
- Moe Memos 客戶端:https://memos.moe/
- Memos-bber Chrome 擴展:https://github.com/lmm214/memos-bber
- Memos 微信小程序:https://github.com/Rabithua/memos_wmp
- Telegram Bot:https://github.com/qazxcdswe123/telegramMemoBot
- 哔哔廣場:https://immmmm.com/bbs/
- 「分享」Android 使用 HTTP Shortcuts 錄入筆記
- 「分享」使用 iOS 快捷指令錄入筆記,支持多圖上傳,支持標籤選擇
- 「分享」在 Fly.io 平台上搭建 memos 並自動備份到 B2/S3
- Memos API 非官方不完全說明::木木木木木 (immmmm.com)
- Memos Web (yct.ee)
- Obsidian-Memos
Some Tips#
- 發圖儘量把圖片傳到第三方圖床,(至少近期版本)別上傳到 Memos 資源庫。
- 附件也一樣別傳到 Memos 資源庫,可以傳到第三方網盤,貼上分享鏈接。
- 備份
memos_prod.db
數據庫遵循兩地三中心原則,多處備份,且是單向的。 - 如果你意識不到數據對你有多珍貴或重要,用 SaaS 服務即可,不用自建。
- 沒有那麼多人來看你的 Memos,自娛自樂即可。
- 如果要用 Memos 裡的 Ask AI 可通過自建 OpenAI API Host 在牆內使用。