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

11 KiB
Raw Blame History

栖云个人服务部署方案 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
  • CPU2 核,负载较低

二、8 个部署方向方案

1. 全文搜索 — Meilisearch

定位:给 Gitea 仓库、Memos 灵感、博客文章、Calibre 书库提供统一搜索入口。

选型MeilisearchRust 编写,内存友好,自带 Web UI中文分词支持好

部署方案

  • Dockergetmeili/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太重。建议用 RyotRust 编写的轻量级媒体追踪器),追踪已看/想看的电影剧集,不托管媒体文件
  • 音乐Navidrome 太吃内存。建议用 Ryot 统一管理书影音"已读/已看/已听"记录

部署方案

  • Dockerghcr.io/ignisda/ryot:latest
  • 端口8555
  • 域名:media.xybkwd.top
  • 内存占用:~150MB
  • 数据库SQLite无需额外容器

与 Calibre-Web 的关系Calibre-Web 管"书库本身"Ryot 管"阅读/观看记录和评分"。两者互补。

资源评估:内存 +150MB磁盘 +200MB可行。


3. n8n — 自动化工作流引擎

定位:可视化的自动化编排工具,替代零散的 cron 脚本。

选型n8n开源自部署节点丰富支持 AI 节点)

部署方案

  • Dockern8nio/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社区庞大路由覆盖广

部署方案

  • Dockerdiygod/rsshub:latest
  • 端口1200
  • 域名:rss.xybkwd.top
  • 内存占用:~200-300MB
  • 磁盘:缓存 ~200MB

推荐路由

  • 微信公众号(需 cookie
  • 知乎专栏/用户
  • GitHub Trending/Release
  • 加密货币相关CoinDesk、The Block
  • 政策文件(中国政府网、发改委)

配套阅读器:推荐 MinifluxGo 编写,极简,~50MB 内存)

  • Dockerminiflux/miniflux:latest
  • 端口8080
  • 域名:reader.xybkwd.top

资源评估RSSHub + Miniflux 合计内存 +300MB磁盘 +300MB可行。


5. 图床 — 私有图片托管

定位:替代腾讯云 COS 的私有图片存储Markdown 写作时直接引用。

选型Lsky Pro兰空图床PHP功能完整

部署方案

  • Dockerhalcyonazure/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 — 网页变化监控

  • Dockerghcr.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 WebUIghcr.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-exporterPython社区维护

部署方案

  • 不部署服务,用 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
  • 备份策略:当前有每日备份脚本,建议定期验证备份可恢复性