这套基础设施运行在 Windows WSL2(Ubuntu)上,通过 Docker Compose 管理,Cloudflare Tunnel 提供安全的外部访问。所有站点不暴露任何公网端口——用户只能通过 Cloudflare 边缘节点访问,源站完全在内网。
# WSL 终端(Windows Terminal 或 VSCode)
wsl
# 检查 Docker 状态
docker ps
# 重启 nginx(改配置后)
docker exec nginx-proxy nginx -s reload
三步走:
# ① 建目录放HTML
mkdir -p /mnt/c/AI-Workspace/docker-stack/nginx/html/新站名/
echo '<h1>Hello</h1>' > /mnt/c/AI-Workspace/docker-stack/nginx/html/新站名/index.html
# ② nginx加server block
# 编辑 /mnt/c/AI-Workspace/docker-stack/nginx/conf/default.conf
# 添加:
# server { listen 80; server_name 新站名.bearqh.fun; root /usr/share/nginx/html/新站名; index index.html; ... }
# ③ 加DNS(两种方式选一)
# A) CF Tunnel 自动:cloudflared tunnel route dns 隧道名 新站名.bearqh.fun
# B) CF Dashboard 手动:加 CNAME 记录 → 隧道域名
# ④ 重载
docker exec nginx-proxy nginx -s reload
当 Tunnel 连接不稳定时(502、504 频繁出现):
# 停止旧 tunnel
docker stop cloudflared-tj
# 清除 stale connector(等 30 秒)
sleep 30
# 重启
docker start cloudflared-tj
# 等 60 秒让新 connector 注册
sleep 60
# 验证
docker logs cloudflared-tj --tail 20
| 熊.online | 个人门户、知识、聊天、股票看板、装修站 |
| bearqh.fun | 技术站、AI 孵化基地、Dify/n8n/MinIO/Portainer |
| 保康.top | 保康统计局、政府信息公开、AI孵化基地(双域名) |
所有域名由 Cloudflare 管理 DNS,A/AAAA 记录指到 192.0.2.0/24 占位(实际由 Tunnel 代理),CNAME 指向各隧道。
# 查看所有容器
docker ps -a
# 查看日志
docker logs -f nginx-proxy --tail 50
# 重启某个服务
docker restart n8n dify
# 拉取镜像(WSL网络不稳时)
# 方案1:镜像加速器
docker pull dockerproxy.com/库名/镜像名
# 方案2:本地构建
cd /mnt/c/AI-Workspace/docker-stack/
docker compose build 服务名
nginx 容器名 nginx-proxy,Docker 网络别名叫 nginx-tj。Cloudflare Tunnel 的 origin service 配置为 http://nginx-tj:80。如果重建容器改了名,记得加别名或更新 cloudflared 配置。
# 企业微信端直接发消息即可
# AI会自动回复、调度任务、操作文件
# 常用命令
/faq — 保康县统计FAQ
/tools — 办公工具集
/data — 统计数据查询
/report — 报表API
/quick — 快捷模板
路径:C:\Users\36108\Desktop\统计数据\(Windows 桌面)
四类结构:
主要从 tj.保康.top 获取 → Hermes 自动分析 → 写入 Obsidian 数据库对应分类。也可手动上传 Excel/CSV 替代。
保康县 AI 编程人才孵化基地,全部课程和工具免费开放:ai.保康.top
大概率 Tunnel connector 过期。重启 cloudflared 容器 → 等 60 秒即可恢复。
检查 nginx root 路径是否正确。注意 Docker 容器内路径是 /usr/share/nginx/html/,不是 WSL 的绝对路径。
四层兜底脚本已配置:
GIT_SSH_COMMAND="ssh -o ConnectTimeout=10 -o ServerAliveInterval=30" git push 或改 SSH 连接。