Files
obsidian-vault/栖云个人服务部署方案_v2.md
2026-06-23 00:24:32 +08:00

312 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 栖云个人服务部署方案 v2
> 2026-06-15 | 基于当前服务器状态2C/4G/59G SSD已用 13G可用 45G制定
---
## 一、当前状态
### 已部署服务11 个)
| 服务 | 域名 | 端口 | 部署方式 | 状态 |
|:---|:---|:---|:---|:---|
| Halo 博客 | www.xybkwd.top | 8090 | Docker | 运行中 |
| Gitea | gitea.xybkwd.top | 3000 | Docker | 运行中 |
| Beast Dashboard | dashboard.xybkwd.top | 9000 | Docker | 运行中 |
| Memos | memo.xybkwd.top | 5230 | Docker | 运行中 |
| 栖云导航 | nav.xybkwd.top | 80/443 | Caddy 静态 | 运行中 |
| 要闻 | brief.xybkwd.top | 80/443 | Caddy 静态 | 运行中 |
| Vaultwarden | vault.xybkwd.top | 8088 | Docker | 运行中 |
| Calibre-Web | books.xybkwd.top | 8083 | Docker | 运行中 |
| Freqtrade | — | — | Docker | 运行中 |
| 灵感收集器 | — | — | cron+Python | 运行中 |
| AI Chat | chat.xybkwd.top | — | Caddy 反代 | 运行中 |
### 基础设施
- **反向代理**Caddy自动 HTTPS
- **认证**Caddy basicauthfxy / Qiyun2025!),覆盖除博客和 Vaultwarden 外的所有服务
- **防火墙**ufw默认 deny incoming
- **代理**Shadowsocks-libev31567
- **DNS**:腾讯云泛解析 `*.xybkwd.top` → 43.163.225.30
### 资源余量
- **内存**3.6G 总量,已用 2.1G,可用 ~1.5G
- **磁盘**59G 总量,已用 13G可用 45G
- **CPU**2 核,负载较低
---
## 二、8 个部署方向方案
### 1. 全文搜索 — Meilisearch
**定位**:给 Gitea 仓库、Memos 灵感、博客文章、Calibre 书库提供统一搜索入口。
**选型**MeilisearchRust 编写,内存友好,自带 Web UI中文分词支持好
**部署方案**
- Docker`getmeili/meilisearch:latest`
- 端口7700
- 域名:`search.xybkwd.top`
- 内存占用:~200MB
- 磁盘:索引数据 ~500MB按当前内容量估算
**数据源接入**
- Gitea通过 API 拉取仓库 README 和文档
- Memos通过 API 拉取所有 memo
- Halo 博客:通过 API 拉取文章
- Calibre-Web通过 API 拉取书目元数据
**实现路径**
1. 部署 Meilisearch Docker 容器
2. 写一个 Python 脚本,定时从各数据源拉取内容推入 Meilisearch
3. 做一个简单的搜索页面(纯 HTML放在 `/var/www/nav/search.html`
4. Caddy 反代 `search.xybkwd.top` → localhost:7700
**资源评估**:内存 +200MB磁盘 +500MB完全可行。
---
### 2. 书影音管理 — 已有 Calibre-Web + 扩展
**当前状态**Calibre-Web 已部署books.xybkwd.top仅覆盖电子书。
**扩展方向**
- **电影/剧集**:不推荐在 2C/4G 服务器上跑 Jellyfin/Plex太重。建议用 **Ryot**Rust 编写的轻量级媒体追踪器),追踪已看/想看的电影剧集,不托管媒体文件
- **音乐**Navidrome 太吃内存。建议用 Ryot 统一管理书影音"已读/已看/已听"记录
**部署方案**
- Docker`ghcr.io/ignisda/ryot:latest`
- 端口8555
- 域名:`media.xybkwd.top`
- 内存占用:~150MB
- 数据库SQLite无需额外容器
**与 Calibre-Web 的关系**Calibre-Web 管"书库本身"Ryot 管"阅读/观看记录和评分"。两者互补。
**资源评估**:内存 +150MB磁盘 +200MB可行。
---
### 3. n8n — 自动化工作流引擎
**定位**:可视化的自动化编排工具,替代零散的 cron 脚本。
**选型**n8n开源自部署节点丰富支持 AI 节点)
**部署方案**
- Docker`n8nio/n8n:latest`
- 端口5678
- 域名:`n8n.xybkwd.top`
- 内存占用:~300-500MB 较重)
- 磁盘:~1GB含数据库和工作流
**可替代的 cron 任务**
- 灵感收集器每日分析
- 交易日报生成
- 新闻抓取和摘要
- DeepSeek 余额检查
- 备份脚本
**⚠️ 资源警告**n8n 是 8 个方向中最吃资源的。当前可用内存 ~1.5G,部署 n8n 后剩余 ~1G。如果后续还要加其他服务可能需要取舍。
**替代方案**:如果资源紧张,可以用 **Activepieces**(更轻量)或保持 cron 脚本不变。
**资源评估**:内存 +400MB磁盘 +1GB勉强可行但需关注。
---
### 4. RSS Hub — 信息聚合
**定位**:把微信公众号、网站、社交媒体等没有 RSS 的信息源转成 RSS 订阅。
**选型**RSSHubNode.js社区庞大路由覆盖广
**部署方案**
- Docker`diygod/rsshub:latest`
- 端口1200
- 域名:`rss.xybkwd.top`
- 内存占用:~200-300MB
- 磁盘:缓存 ~200MB
**推荐路由**
- 微信公众号(需 cookie
- 知乎专栏/用户
- GitHub Trending/Release
- 加密货币相关CoinDesk、The Block
- 政策文件(中国政府网、发改委)
**配套阅读器**:推荐 **Miniflux**Go 编写,极简,~50MB 内存)
- Docker`miniflux/miniflux:latest`
- 端口8080
- 域名:`reader.xybkwd.top`
**资源评估**RSSHub + Miniflux 合计内存 +300MB磁盘 +300MB可行。
---
### 5. 图床 — 私有图片托管
**定位**:替代腾讯云 COS 的私有图片存储Markdown 写作时直接引用。
**选型**Lsky Pro兰空图床PHP功能完整
**部署方案**
- Docker`halcyonazure/lsky-pro:latest`
- 端口8089
- 域名:`img.xybkwd.top`
- 内存占用:~100MB
- 磁盘:取决于图片量(初始 ~100MB
**功能**
- Web 上传 / API 上传 / 剪贴板粘贴
- 自动生成 Markdown/HTML/URL 链接
- 相册管理、角色权限
- 支持 S3/COS 等外部存储(可后续对接腾讯云 COS 做备份)
**⚠️ 注意**:图片存储在服务器本地磁盘上。如果图片量大,建议定期备份到 COS 或本地。
**资源评估**:内存 +100MB磁盘按需增长可行。
---
### 6. 自动化抓取 — 定向信息采集
**定位**:定时抓取特定网站的信息,结构化存储,供 AI 分析。
**选型****changedetection.io**(监控网页变化)+ 自定义 Python 爬虫
**部署方案 A — 网页变化监控**
- Docker`ghcr.io/dgtlmoon/changedetection.io:latest`
- 端口5000
- 域名:`watch.xybkwd.top`
- 内存占用:~200MB
- 功能:监控任意网页变化,支持 CSS 选择器定位,变化时发通知
**部署方案 B — 定向爬虫**
- 用 PythonBeautifulSoup/httpx写轻量爬虫
- 目标:政策文件、行业报告、竞品动态
- 输出:结构化 JSON → Gitea 仓库 → AI 分析
- 调度cron或 n8n如果部署了的话
**推荐组合**changedetection.io 做"监控"Python 脚本做"采集",灵感收集器做"分析"。
**资源评估**:内存 +200MB磁盘 +200MB可行。
---
### 7. 语音助手 — 个人 AI 语音交互
**定位**:通过语音与 AI 对话,适合开车、做家务等场景。
**选型****Open WebUI + Piper TTS**(本地语音合成)
**部署方案**
- Open WebUI`ghcr.io/open-webui/open-webui:main`(端口 3001
- Piper TTS本地语音合成引擎~100MB 模型)
- 域名:`voice.xybkwd.top`
**⚠️ 现实约束**
- 2C/4G 服务器跑不了本地 LLM语音识别和生成仍需调用 DeepSeek API
- Open WebUI 本身内存占用 ~500MB+,较重
- 手机端已有 DeepSeek App 支持语音输入,体验更好
**替代方案**
- **不部署服务端**,直接用 DeepSeek App 的语音功能
- 或者部署一个极简的 **Web 语音对话页面**(浏览器 SpeechRecognition API + DeepSeek API无需额外 Docker 容器,内存占用接近零
**推荐**:极简 Web 页面方案。写一个单页 HTML用浏览器原生语音 API后端只做 API 转发。部署在 `/var/www/nav/voice.html`
**资源评估**极简方案几乎零资源占用Open WebUI 方案内存 +500MB不推荐。
---
### 8. 微信读书同步 — 阅读数据归集
**定位**:把微信读书的划线、笔记、书评同步到 Gitea与 Calibre-Web 书库打通。
**选型****weread-exporter**Python社区维护
**部署方案**
- 不部署服务,用 Python 脚本 + cron 定时同步
- 脚本:`~/scripts/weread_sync.py`
- 输出Markdown 格式的划线/笔记 → Gitea 仓库 `fxy/weread-notes`
- 频率:每日一次
**实现路径**
1. 获取微信读书 Cookie浏览器登录后导出
2. 部署 weread-exporter 脚本
3. 配置 cron 每日同步
4. 输出到 Gitea 仓库,可在 nav 页面加一个"读书笔记"入口
**与 Calibre-Web 的关系**
- Calibre-Web 管"自有电子书"(文石阅读器上的书)
- 微信读书同步管"微信读书 App 上的书"
- 两者互补,覆盖全部阅读场景
**资源评估**:几乎零资源占用(一个 Python 脚本 + cron
---
## 三、部署优先级建议
按资源消耗、实用价值、实现难度综合排序:
| 优先级 | 方向 | 理由 |
|:---:|:---|:---|
| **P0** | 微信读书同步 | 零资源占用,高实用价值,快速落地 |
| **P0** | 图床 | 轻量,解决 Markdown 写作刚需 |
| **P1** | 全文搜索 | 打通已有数据孤岛,提升信息检索效率 |
| **P1** | 自动化抓取 | 信息采集是 AI 分析的原料 |
| **P2** | RSS Hub | 信息聚合,但需配合阅读器使用 |
| **P2** | 书影音管理 | Calibre-Web 已覆盖书,扩展影音记录 |
| **P3** | 语音助手 | 极简方案可行,但手机 App 已够用 |
| **P3** | n8n | 功能强大但吃资源,当前 cron 够用 |
---
## 四、资源预算
如果全部部署(不含 n8n 的完整方案):
| 项目 | 内存增量 | 磁盘增量 |
|:---|:---|:---|
| 微信读书同步 | ~0 | ~50MB |
| 图床 (Lsky Pro) | +100MB | +100MB |
| 全文搜索 (Meilisearch) | +200MB | +500MB |
| 自动化抓取 (changedetection.io) | +200MB | +200MB |
| RSS Hub + Miniflux | +300MB | +300MB |
| 书影音管理 (Ryot) | +150MB | +200MB |
| 语音助手 (极简 Web) | ~0 | ~0 |
| **合计** | **+950MB** | **+1.35GB** |
**当前可用**:内存 ~1.5G,磁盘 45G。全部部署后内存剩余 ~550MB磁盘剩余 ~43.6GB。**可行,但内存偏紧。**
---
## 五、建议分批推进
**第一批(本周)**:微信读书同步 + 图床 + 全文搜索
- 内存增量:+300MB
- 解决三个高频刚需
**第二批(下周)**:自动化抓取 + RSS Hub
- 内存增量:+500MB
- 信息采集基础设施
**第三批(后续)**:书影音管理 + 语音助手
- 内存增量:+150MB
- 锦上添花
**n8n**:单独评估,如果部署则需停掉部分 cron 任务释放资源,或者等服务器升级后再上。
---
## 六、后续可考虑
- **服务器升级**:当前 2C/4G 跑 11 个服务已用 2.1G 内存,再加 7-8 个服务会到 3G+。如果后续要上 n8n 或本地 LLM建议升级到 4C/8G
- **监控告警**:目前没有服务健康监控(除 freqtrade 有 health_check.sh建议加一个 Uptime Kuma轻量~100MB
- **备份策略**:当前有每日备份脚本,建议定期验证备份可恢复性