# 栖云个人服务部署方案 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 basicauth(fxy / Qiyun2025!),覆盖除博客和 Vaultwarden 外的所有服务 - **防火墙**:ufw(默认 deny incoming) - **代理**:Shadowsocks-libev(31567) - **DNS**:腾讯云泛解析 `*.xybkwd.top` → 43.163.225.30 ### 资源余量 - **内存**:3.6G 总量,已用 2.1G,可用 ~1.5G - **磁盘**:59G 总量,已用 13G,可用 45G - **CPU**:2 核,负载较低 --- ## 二、8 个部署方向方案 ### 1. 全文搜索 — Meilisearch **定位**:给 Gitea 仓库、Memos 灵感、博客文章、Calibre 书库提供统一搜索入口。 **选型**:Meilisearch(Rust 编写,内存友好,自带 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 订阅。 **选型**:RSSHub(Node.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 — 定向爬虫**: - 用 Python(BeautifulSoup/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) - **备份策略**:当前有每日备份脚本,建议定期验证备份可恢复性