个人知识库系统
版本:v1.3 创建时间:2026-04-29 最后更新:2026-04-29
版本记录
| 版本 | 时间 | 更新内容 |
|---|---|---|
| v1.3 | 2026-04-29 | Gitea Webhook + 宿主机 webhook 接收器:push 后立即 mkdocs build(见运维文档);cron 建议改为兜底 |
| v1.2 | 2026-04-29 | 新增《选型对比-存储与架构》《实施复盘-问题与经验》两篇总结 |
| v1.1 | 2026-04-29 | Gitea 禁止自助注册;只读站点由 Quartz 切换为 MkDocs Material;Memos 手机 Safari 加入主屏幕 |
| v1.0 | 2026-04-29 | 初始搭建:Memos + Gitea + Obsidian + Quartz(notes) |
延伸阅读(同目录):选型对比-存储与架构 · 实施复盘-问题与经验 · 运维:Gitea Webhook 触发 MkDocs
一、需求背景
1.1 使用场景
职业场景 - 项目管理:技术方案文档、行业调研报告、数据分析(图表/SQL)、项目复盘 - 求职:技术资料学习、算法题思路总结、博客打卡、面试录音复盘 - 职业规划:学习路径 XMind、学习计划与进度追踪 - 技术研究:中间件研究、技术点笔记、职场感悟
生活场景 - 台球:训练心得记录 - 日常琐碎:WiFi 密码、有共鸣的文章/视频、技术博客地址、待学习的技术视频截图、好用网站收藏
1.2 现状痛点
| 痛点 | 描述 |
|---|---|
| 存储分散 | 内容散落在备忘录、微信传输助手、语雀、百度网盘、手机相册,找东西要翻很久 |
| 分类不清 | 多个存储源没有统一分类,找技术内容时要跳过大量生活娱乐内容 |
| 时间成本高 | 时隔较久后找到文档,还需要花时间重新梳理熟悉 |
| 数据安全隐患 | 手机照片仅存本地,换手机容易丢失;百度网盘下载速度慢 |
二、选型分析
2.1 架构思路
核心原则:统一入口 + 分类存储
内容按类型分为三类:
| 类型 | 特点 | 工具 |
|---|---|---|
| 结构化文档 | 有体系、需检索 | Obsidian |
| 碎片速记 | 随手记、频率高 | Memos |
| 大文件媒体 | 占空间、需备份 | 待规划(v2.0) |
2.2 工具选型
知识库主体:Obsidian - 本地优先,文件为 Markdown,数据完全自有 - 插件生态丰富,支持双向链接 - 文件结构天然适合 Git 版本管理
碎片速记:Memos - 极轻量,Docker 一键部署 - 手机浏览器直接使用,无需安装 App - 专注速记,不干扰主知识库
私有 Git 托管:Gitea - 开源自建,数据完全自有 - 轻量,适合个人 VPS 部署 - 提供 Obsidian 多设备同步能力
只读网页浏览:MkDocs + Material - Python 生态,Material 主题对移动端侧边栏、搜索、暗色模式支持成熟 - 与标准 Markdown 链接兼容好,适合「知识库 + 文档站」形态 - 构建产物为纯静态 HTML,由 Nginx 托管
反向代理:Nginx + Let's Encrypt - HTTPS 加密访问 - 通过域名访问,替代 IP+端口暴露
三、技术实现
3.1 系统架构
iPhone(Memos 随手记)
↓ HTTPS
┌─────────────────────────────────┐
│ 阿里云服务器 │
│ 2核4G 40GB 华东1(杭州) │
│ │
│ ┌─────────┐ ┌──────────────┐ │
│ │ Memos │ │ Gitea │ │
│ │ :5230 │ │ :3000 │ │
│ └─────────┘ └──────────────┘ │
│ ↕ │
│ ┌──────────────────────────┐ │
│ │ MkDocs Material(构建) │ │
│ │ 输出目录如 /opt/mkdocs-site│ │
│ └──────────────────────────┘ │
│ │
│ ┌──────────────────────────┐ │
│ │ Nginx(反向代理 + SSL) │ │
│ └──────────────────────────┘ │
└─────────────────────────────────┘
↕ Git sync
Mac 工作机 / Mac 家用机
(Obsidian + Git 插件)
3.2 服务清单
| 服务 | 访问地址 | 用途 |
|---|---|---|
| Memos | https://memos.teacherhome.top | 碎片速记 |
| Gitea | https://git.teacherhome.top | 知识库 Git 托管 |
| notes(MkDocs) | https://notes.teacherhome.top | 只读网页浏览(Material) |
3.3 数据流
Obsidian(Mac写作)
→ Git push(每10分钟自动)
→ Gitea 仓库
→ Cron 定时:git pull + mkdocs build
→ notes.teacherhome.top(静态站点)更新
四、配置流程
4.1 服务器环境
- 系统:Alibaba Cloud Linux(基于 RHEL/CentOS)
- 容器:Podman(兼容 Docker CLI)
- Web 服务:Nginx
- SSL:Let's Encrypt(Certbot)
4.2 部署步骤
Step 1:部署 Memos
mkdir -p /data/memos
docker pull docker.m.daocloud.io/neosmemo/memos:stable
docker tag docker.m.daocloud.io/neosmemo/memos:stable neosmemo/memos:stable
docker run -d \
--name memos \
--restart unless-stopped \
-p 5230:5230 \
-v /data/memos:/var/opt/memos \
neosmemo/memos:stable
Step 2:部署 Gitea
mkdir -p /data/gitea
docker pull docker.m.daocloud.io/gitea/gitea:latest
docker tag docker.m.daocloud.io/gitea/gitea:latest gitea/gitea:latest
docker run -d \
--name gitea \
--restart unless-stopped \
-p 3000:3000 \
-p 2222:22 \
-v /data/gitea:/data \
gitea/gitea:latest
初始化配置:数据库选 SQLite3,站点 URL 填服务器域名
Step 3:配置 Obsidian
- 安装 Obsidian,打开克隆的文件夹作为 Vault - 安装插件:Git(Vinzent03,246万下载) - 配置:Auto commit/push interval = 10分钟,hostname 填设备名Step 4:部署 MkDocs(Material)
# 建议 Python 3.8+(系统自带 3.6 时可用 pyenv / 官方安装包升级)
yum install python3 python3-pip -y # 或已满足版本则跳过
pip3 install mkdocs-material mkdocs-awesome-pages-plugin
# 工作副本(与 Gitea 裸库同机时可本地 clone)
git config --global --add safe.directory /data/gitea/git/repositories/用户名/knowledge-base.git
git clone /data/gitea/git/repositories/用户名/knowledge-base.git /opt/knowledge-base
# mkdocs.yml 放在 /opt,docs_dir 指向知识库目录(示例)
# site_dir: /opt/mkdocs-site
# 构建:mkdocs build -f /opt/mkdocs.yml
历史:v1.0 曾使用 Quartz(Node),因国内构建依赖外网字体、手机端导航偏顶栏等问题,v1.1 起改为 MkDocs,详见下文「Quartz vs MkDocs」。
Step 5:配置 Nginx + SSL
# 创建反向代理:memos、gitea;notes 站点 root 指向 MkDocs 构建输出目录,例如:
# root /opt/mkdocs-site;
# try_files $uri $uri/ /index.html;
# 申请 SSL 证书
certbot --nginx -d memos.teacherhome.top -d git.teacherhome.top
certbot --nginx -d notes.teacherhome.top
# 修复 Memos 上传大小限制
# 在 memos.conf 的 location / 中添加:
# client_max_body_size 20m;
Step 6:自动构建(MkDocs)
- 推荐(实时):仓库 Push Webhook → 宿主机执行
/opt/rebuild-notes.sh,见 运维-Gitea-Webhook触发MkDocs构建.md。 - 兜底(可选):
cron低频执行同一脚本,防止 Webhook 偶发失败。
cat > /opt/rebuild-notes.sh << 'EOF'
#!/bin/bash
cd /opt/knowledge-base && git pull
mkdocs build -f /opt/mkdocs.yml
EOF
chmod +x /opt/rebuild-notes.sh
# 示例:仅每小时兜底(有 Webhook 后可去掉每 10 分钟那条)
# (crontab -l; echo "0 * * * * /opt/rebuild-notes.sh >> /var/log/mkdocs-build.log 2>&1") | crontab -
五、日常使用 SOP
5.1 两个入口原则
| 场景 | 工具 | 访问方式 |
|---|---|---|
| 手机随手记、碎片想法、WiFi密码、有共鸣的内容 | Memos | https://memos.teacherhome.top(加入主屏幕) |
| 技术笔记、项目文档、算法总结、博客草稿 | Obsidian | Mac 本地客户端 |
| 不确定放哪里 | Obsidian 00-收件箱 | Mac 本地客户端 |
| 手机浏览知识库 | MkDocs(Material) | https://notes.teacherhome.top |
5.2 日常节奏
随时 - 手机记碎片 → Memos - Mac 写正式内容 → Obsidian(自动10分钟同步)
每天 - 打开 Obsidian,当天的技术笔记/工作文档直接写到对应目录
每周末(15-20分钟)
1. 清空 00-收件箱,把积累内容移到对应文件夹
2. 翻 Memos,有价值的整理成 Obsidian 笔记,无价值的删除
5.3 目录结构
knowledge-base/
├── 00-收件箱/ ← 所有新内容先扔这里
├── 01-职业/
│ ├── 项目/
│ │ ├── 技术方案/
│ │ ├── 行业调研/
│ │ ├── 数据分析/
│ │ └── 项目复盘/
│ ├── 求职/
│ │ ├── 算法题总结/
│ │ ├── 面经复盘/
│ │ └── 博客草稿/
│ ├── 职业规划/
│ └── 技术研究/
├── 02-生活/
│ ├── 台球/
│ └── 日常记录/
└── 03-素材库/
六、待规划
近期待完成
- [x] Gitea 关闭用户自助注册(
app.ini中DISABLE_REGISTRATION = true) - [x] 手机 Safari 将 Memos 加入主屏幕(见「七、v1.1 迭代说明」)
- [ ] 家用 Mac 配置 Obsidian + Git 同步
v2.0 规划
- [ ] notes(MkDocs)站点访问控制(鉴权 / IP 限制 / Basic Auth 等)
- [ ] 入口统一 + 单点登录(SSO):一次登录,Memos / Gitea / notes 打通
- [ ] 照片备份方案(Immich,待服务器扩容或购置外置硬盘后实施)
- [ ] 面试录音文件存储方案
- [ ] Nginx Basic Auth 加固(可选)
七、v1.1 迭代说明
7.1 Gitea 禁止自助注册
在服务器 app.ini 增加(或通过管理后台关闭注册):
执行 docker restart gitea 生效。新用户仅可由管理员创建。
7.2 Quartz → MkDocs(对比)
| 维度 | Quartz(v1.0) | MkDocs Material(v1.1) |
|---|---|---|
| 技术栈 | Node.js | Python + pip |
| 与 Obsidian 语法 | 深度适配 wikilink、部分插件语法 | 标准 Markdown 链接为主;首页等需避免纯 [[wikilink]] |
| 国内构建 | OG 等插件易依赖外网字体失败 | 依赖少,阿里云源装 pip 包即可 |
| 手机端体验 | 顶栏搜索/菜单偏上,单手不便 | Material 侧栏 + 搜索成熟,文档站常见布局 |
| 主题与扩展 | Quartz 插件生态 | Material 主题、插件(搜索、代码复制等)成熟 |
| 维护成本 | 需跟踪 Quartz 与 Node 版本 | 与 Python 版本绑定,建议 3.8+ |
结论:个人知识库以「手机可读、稳定构建」优先时,MkDocs Material 更合适;Obsidian 仍作为唯一写作源,站点为只读渲染层。
7.3 iPhone:Safari 将 Memos 加到主屏幕
- Safari 打开
https://memos.teacherhome.top并登录。 - 点底栏 分享(方框向上箭头)。
- 向下滚动,点 添加到主屏幕。
- 可改名称(如「Memos」)后点 添加。
主屏幕图标即 PWA 式快捷入口,仍走 HTTPS,与「不开放公网端口、仅域名访问」的策略一致。