Table of Contents

曼陀林工作冷启动文件

版本: 2.0 | 日期: 2026-08-16 | 用途: 服务器冷启动/重建/新人接手时,按此文件可完整恢复“曼陀林”全部工作系统
服务器: 腾讯云轻量 lhins-1dai07vu | 公网IP: 82.156.85.124 | 系统: Ubuntu | 时区: Asia/Shanghai
域名: mandolinwu.site(ICP备案进行中;备案前外部访问用IP,备案后 dev./wiki. 子域名 HTTPS 全通)
站点品牌: 曼陀林(Halo博客“曼陀林”、Wiki“慧飞知识库”、域名 mandolinwu.site 均属此体系)

1. 平台总览

┌─ 曼陀林平台 (82.156.85.124) ────────────────────────────┐
│  Caddy(:80/:443 反代+HTTPS)                             │
│  ├─ dev.mandolinwu.site  → /ctwing/* /game* → :13543   │
│  ├─ wiki.mandolinwu.site → :3000 (DokuWiki 慧飞知识库)  │
│  │                                                      │
│  ├─ :13543 Flask接收端(CTWing数据+H5工具+游戏)           │
│  ├─ :3000  DokuWiki 知识库(Wiki)                        │
│  ├─ :8080  NocoDB 智能表格(员工日报)                     │
│  ├─ :8090  Halo 博客"曼陀林"                             │
│  ├─ :5672  RabbitMQ(CTWing MQ备用通道)                  │
│  └─ :3306  MySQL(huifei_daily日报库 + halo博客库)       │
└─────────────────────────────────────────────────────────┘

访问地址:

服务 地址
————
设备数据查询 H5 http://82.156.85.124/ctwing/h5(备案后 https://dev.mandolinwu.site/ctwing/h5
Wiki 慧飞知识库 http://82.156.85.124:3000(备案后 https://wiki.mandolinwu.site
Halo 博客“曼陀林” http://82.156.85.124:8090
NocoDB http://82.156.85.124:8080
我的世界3D / 佩奇游戏 http://82.156.85.124/game/mc、/game
RabbitMQ管理台 http://82.156.85.124:15672

2. CTWing 设备数据工作流

2.1 系统链路

设备(4G/NB/土壤) → AEP平台(iot.ctwing.cn) → 北向订阅(定源) → HTTP推送 → Flask接收端(:13543)
        → SQLite(ctwing.db) → 每日09:00日报 → MySQL(huifei_daily) → 微信推送
        → H5查询工具(图表/分析报告/设备台账管理)

2.2 核心组件

组件 位置 说明
——————
Flask接收端 ~/projects/ctwing-2/receiver_server.py 接收AEP推送+解析入库+H5 API+游戏
systemd: ctwing-receiver 端口13543 开机自启
MQ消费端 ~/projects/ctwing-2/mq_consumer.py RabbitMQ备用通道
AEP SDK ~/projects/ctwing-2/aep_sdk/ 官方Python SDK
AEP客户端 ~/projects/ctwing-2/aep_api.py 订阅管理(增删设备定源)
SQLite ~/projects/ctwing-2/data/ctwing.db device_data + monitored_devices
日报脚本 db_writer.py + ~/.hermes/scripts/ctwing_daily.sh 09:00聚合写MySQL+微信推送
cron b3b717e6550f 每天09:00 设备日报

2.3 AEP 开放平台接入(关键)

- 凭证(~/.hermes/.env,600权限):

  1. 应用: AEP_APP_KEY=IQsPnFznnO7, AEP_APP_SECRET=dbwgP7q7IM
  2. 4G智慧球阀 17080670 / NB智慧球阀 17070058 / 土壤墒情站 17197695(各配MasterKey)

- API域名: `https://2000455438.api.ctwing.cn`(租户ID.api.ctwing.cn) - 签名算法(血泪教训,不是MD5!):

  code = "application:{AppKey}\ntimestamp:{毫秒}\n" + 参数行"名:值\n"(按key排序,空值也要) + body + "\n"
  signature = Base64(HMAC-SHA1(key=AppSecret, msg=code))

- 订阅API: Create POST /subscription(20181031202018) / Delete DELETE /subscription(20181031202023) / List GET /subscribes(20220624163719) - AEP deviceId = 产品ID + SN - 设备管理原则:添加设备→建设备级订阅;删除设备→删该设备订阅。禁止产品级。删除只动 subUrl=http://82.156.85.124:13543/ctwing/receive 的订阅

2.4 数据解析

- AEP推送信封: {“deviceId”:“…”,“payload”:{“APPdata”:“base64”}} - APPdata解码→SN(18位)+JSON数据体;类型按deviceId前缀: 17080670=valve 17070058=nb_valve 17197695=soil

2.5 H5 设备管理工具

- 页面/ctwing/h5 | API: /ctwing/api/manage /data /report - 台账表 monitored_devices(sn,name,device_type,product,aep_subscribed,aep_device_id,sub_id) - 功能: 增删设备(自动同步AEP定源) + 4图 + 一键分析报告

3. Halo 博客"曼陀林"

- 容器 halo(:8090) | Halo 2.25.4 | 主题 theme-hao | 后台/console 简体中文 - 管理员: mandolinwu(密码在 .env) - 数据库: MySQL halo库(R2DBC连接必须带 ANSI_QUOTES) - 升级/主题安装要点见 selfhosted-app-deployment 技能 references/halo.md

4. Wiki 慧飞知识库

- 容器 wiki(:3000) | DokuWiki | 数据卷 /home/ubuntu/wiki/data(/storage) - 管理员: admin(密码 WIKI_ADMIN_PASSWORD 在 .env) - 权限: Public Wiki(公开读,注册写) - 页面存档: 曼陀林工作冷启动文件(本文件)

5. 家庭游戏

- 佩奇丛林大冒险 /game(联机竞速)、我的世界3D /game/mc(Three.js内嵌单文件零外链) - 游戏文件在 ~/games/,由接收端13543提供

6. 其他工作流

- 研发日报: NocoDB(:8080) 员工表单填报 → 22:15汇总(cron edb89ca63fa5,暂停中) - 家务计划: 每天13:00汇总(cron dc2ba7d86ec2) - 球阀深度分析: ~/huifei/iot_full_report.py <SN> → PDF报告

7. 服务器基础设施

- Docker容器: rabbitmq / huifei-mysql(:3306仅内网) / nocodb(:8080) / halo(:8090) / wiki(:3000) - Caddy: /etc/caddy/Caddyfile(dev/wiki 子域名反代+自动HTTPS) - 防火墙(轻量控制台): 已放行 22/80/443/13543/8080/8090/3000/5672 - 凭据集中存放: ~/.hermes/.env(600权限) - 二维码: /home/ubuntu/qrcodes/

8. 常见运维命令

sudo systemctl restart ctwing-receiver mq_consumer caddy
sudo caddy reload --config /etc/caddy/Caddyfile
docker ps / docker restart <name>
tail -f ~/projects/ctwing-2/data/cron.log

9. 排障速查

症状 排查
————
域名打不开/跳备案页 mandolinwu.site 未ICP备案,用IP访问或等备案通过
数据没流入 curl localhost:13543/ctwing/health;查AEP订阅列表
添加设备报“deviceId不属于该productId” SN未在AEP产品注册,先到控制台注册
AEP签名401 时间戳偏差>5分钟?/echo校准;空值参数也要签名
微信打不开链接 用IP+系统浏览器;或二维码(/home/ubuntu/qrcodes/)

10. 冷启动恢复步骤

1. Docker装容器: rabbitmq/huifei-mysql/nocodb/halo/wiki 2. 恢复代码: ~/projects/ctwing-2 + ~/games + ~/huifei + ~/docs 3. systemd: ctwing-receiver + mq_consumer 启用 4. Caddy配置 + 防火墙放行(22/80/443/13543/8080/8090/3000/5672) 5. cron: b3b717e6550f(09:00日报) dc2ba7d86ec2(13:00家务) edb89ca63fa5(22:15研发日报) 6. 验证: /ctwing/health → AEP订阅 → 数据入库 → H5 → Wiki → 博客