栖云数字城堡 · 全景架构手册
冯先生个人数字基建,始于 2026 年 6 月 7 日
最后更新:2026-06-24
一、整体拓扑
二、域名与服务清单
所有服务统一域名 *.xybkwd.top,经 Caddy 反向代理 + 统一认证(auth.xybkwd.top)。
2.1 核心服务
| 域名 |
服务 |
端口 |
需要认证 |
| nav.xybkwd.top |
导航页 + 知识库搜索/问答 |
静态文件 |
✅ |
| auth.xybkwd.top |
统一登录认证 |
9002 |
— |
| chat.xybkwd.top |
旧 AI 对话(已弃用) |
8900 |
— |
| gitea.xybkwd.top |
Git 代码仓库 |
3000 |
✅ |
| dashboard.xybkwd.top |
控制面板 |
9000 |
✅ |
| memo.xybkwd.top |
备忘录 / 随手记 |
5230 |
— |
| search.xybkwd.top |
搜索(原 Meilisearch 直连,现指向8100) |
8100 |
✅ |
2.2 内容与阅读
| 域名 |
服务 |
端口 |
| brief.xybkwd.top |
每日简报 |
静态文件 |
| books.xybkwd.top |
在线阅读 |
8083 |
| podcast.xybkwd.top |
播客服务器 |
13378 |
2.3 同步与存储
| 域名 |
服务 |
端口 |
| dav.xybkwd.top |
WebDAV 日记同步 |
8766 |
| vault.xybkwd.top |
密码管理 |
8088 |
2.4 代理与工具
| 域名 |
服务 |
| ss.xybkwd.top |
Shadowsocks 代理订阅 |
| www.xybkwd.top |
主站 |
三、Gitea 仓库清单
全部在 fxy 用户下,共 17 个仓库:
核心系统
| 仓库名 |
说明 |
server-ops |
服务器运维脚本、配置归档、daily 日志 |
nav-page |
导航页前端代码 |
dashboard |
控制面板 |
qiyun-portal |
栖云个人门户 |
todo-system |
待办系统 |
daily-brief |
新闻采集管线(国内+国际+政策+研报) |
知识与笔记
| 仓库名 |
说明 |
inspiration-collector |
灵感收集器(AI 日报/周报/随手记) |
weread-notes |
微信读书笔记 + 每日阅读日报 |
obsidian-vault |
Obsidian 笔记库 |
ebook-library |
电子书库 |
work-docs |
工作文档归档(2026-06-24 新增) |
qa-archive |
知识库问答记录归档(2026-06-24 新增,自动同步) |
投研与交易
| 仓库名 |
说明 |
freqtrade-strategies |
交易策略代码 |
beast-trader-strategies |
Beast Trader 策略 |
boox-notes |
BOOX 阅读笔记 |
其他
| 仓库名 |
说明 |
culture-sports |
文体部 |
boox-notes |
BOOX 同步笔记 |
四、数据流
4.1 知识库备份(东京 → 北京)
4.2 知识库索引(北京)
4.3 问答归档(北京 → 东京 Gitea)
4.4 日报/新闻管线(东京)
五、服务器清单
5.1 东京服务器
| 项目 |
信息 |
| IP |
43.163.225.30 |
| 用户 |
ubuntu |
| SSH 密钥 |
C:\Users\32779\Desktop\保险箱\ssh_new.pem |
| 角色 |
主力服务 + Gitea + Caddy 网关 |
| 服务 |
Caddy、Gitea、Memos、freqtrade、audiobookshelf、WebDAV、SS 代理等 |
5.2 北京服务器
| 项目 |
信息 |
| IP |
81.70.93.78 |
| 用户 |
ubuntu |
| SSH 密钥 |
C:\Users\32779\Desktop\保险箱\BJ.pem |
| 角色 |
知识库(Meilisearch + AI 问答)+ 备份 |
| 服务 |
Meilisearch(7700)、QA API(8100)、rsync 备份 |
| SSH 到东京密钥 |
~/.ssh/tokyo_key.pem |
5.3 安全规则
- 绝对不碰防火墙/安全组。UFW 经验:启用后导致全部页面崩溃,直接禁用。
- 端口开放统一由云控制台安全组管理,需要开放端口时由冯先生自行操作。
- 腾讯云(北京)安全组允许东京 IP 访问 7700(Meilisearch)和 8100(QA API)。
六、本机环境(Windows)
6.1 Python
| 项目 |
路径 |
| 解释器 |
C:\Users\32779\.workbuddy\binaries\python\envs\default\Scripts\python.exe |
| Git Bash |
/c/Users/32779/.workbuddy/binaries/python/envs/default/Scripts/python.exe |
| 已装包 |
mootdx, requests, pandas, stockstats, python-docx, PyMuPDF |
| 编码 |
中文输出需 PYTHONIOENCODING=utf-8 |
6.2 Ollama 本地模型
| 项目 |
值 |
| 程序路径 |
C 盘(Windows 安装默认,不可选) |
| 模型数据 |
D:\ollama\model_data\ |
| 环境变量 |
OLLAMA_MODELS=D:\ollama\model_data\models |
|
OLLAMA_HOST=0.0.0.0:11434 |
|
OLLAMA_IGPU_ENABLE=1(Intel Arc 加速) |
|
OLLAMA_CONTEXT_LENGTH=65536 |
| 已安装 |
qwen3.5:9b(6.3GB,IQ4_NL 量化,来自 modelscope.cn) |
| 运行 |
ollama run qwen3.5:9b |
6.3 A 股数据工具栈
| 数据 |
接口 |
方式 |
| K线/财务 |
mootdx TCP 7709 |
不封IP,首选 |
| 龙虎榜/解禁/融资融券/大宗 |
datacenter-web.eastmoney.com |
可直连 |
| 东财其他API |
push2.eastmoney.com |
❌ TLS握手失败,走WebFetch |
| 实时行情/PE/PB |
qt.gtimg.cn(腾讯) |
待验证 |
6.4 doc2md 文档转换工具
| 项目 |
信息 |
| 位置 |
C:\Users\32779\WorkBuddy\Claw\doc2md.py |
| GUI |
C:\Users\32779\WorkBuddy\Claw\doc2md_gui.py |
| 启动 |
双击 Claw\启动转换工具.bat |
| 输入目录 |
Claw\input\ |
| 输出目录 |
Claw\output\ |
| 功能 |
Word(标题+表格)→ MD,PDF(字号识别+表格提取)→ MD |
七、知识库 RAG 问答
7.1 架构
7.2 检索优化
| 优化项 |
之前 |
现在 |
| 单次检索文档数 |
3 篇 |
12 篇(3 搜索词 × 6 篇,去重) |
| 搜索策略 |
单关键词 |
多轮检索:AI 自动拆成 3 个角度 |
| 每篇截取 |
2000 字 |
4000 字 |
| 提示词 |
简单指令 |
要求交叉验证多条资料 |
| 输出上限 |
2000 tokens |
4000 tokens |
7.3 成本
- 单次问答约 ¥0.02(一次 DeepSeek 生成搜索词 + 一次生成回答)
- 知识库增大不影响单次成本(始终只取 top 12)
7.4 前端功能
- 搜索/问答双标签切换
- Markdown 渲染(marked.js CDN)
- 保存按钮 → 下载 .md 文件到本地
- 自动归档 → 同步到 Gitea
fxy/qa-archive
八、踩坑汇总(血的教训)
🔥 最高优先级
- 不碰防火墙安全组 — UFW 启用后全部服务崩溃,彻底禁用
- Caddy
handle_path 会剥离路径前缀 — 代理 API 要用 @matcher + handle @matcher,不能用 handle_path
- Caddy 规则顺序敏感 —
/api/ask 必须在 @api(匹配 /api/*)之前,否则被拦截
- 服务器端口必须监听
0.0.0.0 — 127.0.0.1 只能本机访问,跨服务器必须 0.0.0.0
⚠️ 重要
rsync --delete 会删 .git 目录 — 同步非 Git 目录到 Git 仓库时不能用 --delete
- Ollama pull 受系统代理干扰 — Clash(127.0.0.1:7890)会阻断 Ollama CLI 的模型下载,需
HTTP_PROXY="" 清空
- Ollama
OLLAMA_MODELS 路径格式 — Windows 必须用反斜杠 D:\ollama\...,Git Bash 的 /d/ 前缀不生效
- 模型默认上下文仅 4096 — 长文本会被无声截断,必须设
OLLAMA_CONTEXT_LENGTH=65536
- 服务端中文 URL 编码 — Python
http.server 对 URL 中的中文编码处理脆弱,需 urllib.parse 手动解析
📝 常规注意事项
- Gitea API 不能自删用户 — 管理员用户也不能通过 API 删除自己
- Git 不跟踪空目录 — 需要
.gitkeep 占位文件
- Windows 下 Python 路径问题 — Git Bash 要用绝对路径调用 Python,且中文输出要设编码
- 助理模式可能覆盖已有功能 — 修改 search.html 后,助理模式再次运行时可能覆盖 Q&A 代码
九、构建时间线
十、交接备忘
如果某天需要重装或迁移,关键步骤顺序:
- 东京服务器 → 部署 Caddy、Gitea(Docker)、Memos、各脚本
- 域名 DNS → 指向东京 IP
- 北京服务器 → 部署 Meilisearch、kb_server.py、备份脚本
- 安全组 → 北京开放 7700、8100 给东京 IP
- 本机 → 装 Python 环境、Ollama、Claw 工具
- SSH 密钥 → 东京→北京互信(保险箱文件夹有备份)
文档生成于 2026-06-24,共 17 个 Gitea 仓库、2 台服务器、10+ 运行服务。