Open-status ticket filtering and shorter list TTL, FreeScout API via jump host with write-path cache clear, OpenBoard finance-hold flags on board create, and expanded shenzhou web tab UX.
184 lines
12 KiB
YAML
184 lines
12 KiB
YAML
# configs/shenzhou.example.yml
|
||
# ============================================================================
|
||
# 神州 tab 配置模板(joy web 生产资产世界)
|
||
# 文档:docs/ops/joy-shenzhou.md
|
||
# 生成依据(2026-07-10):
|
||
# - cloud_hosts 据 devops:~/ansible/inventory.ini
|
||
# - sites 据 devops:~/docs/devops/production-servers.md + NS 实测
|
||
# - cdn/jobs/external 据 modiqi CF 配置 + cluster-recall + production-servers.md
|
||
# 规则:裸 IP 不入此文件,用 SSH 别名 / 域名;标 candidate 的为监控盲区候选
|
||
# ============================================================================
|
||
|
||
version: "1.2"
|
||
updated: "2026-07-12"
|
||
# agent_context 可选:覆盖/追加 joy online 内置卡片(见 dashboard/online_context.py)
|
||
# CLI: joy online context mall | joy online context --match "订单"
|
||
# 派活: scripts/lib/online-hint.sh → clone-send / dispatch-loop
|
||
|
||
# ── 0. 关键业务路径(对齐 prod-watch SITES + wapuu 品牌表 + 迁移记忆)──
|
||
# 数据源见 dashboard/shenzhou.py sources;主机/全站是钻取层
|
||
# 业务现成工具:weixiaoduo mall-dashboard/order-watch · modiqi domain-expiry · prod-query
|
||
# 截图:ai-team mShots(JOY_MSHOTS_BASE / ~/.config/joy/mshots-base)
|
||
# screenshot_url_src 可与 url 不同(apex→www);screenshot: false 关闭预览
|
||
# stack: wp | wp-ms | static | cdn | app | dns(可省略,采集会推断)
|
||
# slo_ms: 延迟 SLO;money 路径默认 2500,其它 4000
|
||
critical_paths:
|
||
- { id: mall, name: 薇晓朵商城, biz: 菲比斯·电商, url: "https://mall.weixiaoduo.com/", screenshot_url_src: "https://mall.weixiaoduo.com/", host: weixiaoduo-prod, money: true, stack: wp-ms, slo_ms: 2500 }
|
||
- { id: weixiaoduo, name: 薇晓朵主站, biz: 菲比斯·内容, url: "https://weixiaoduo.com/", screenshot_url_src: "https://www.weixiaoduo.com/", host: weixiaoduo-prod, money: true, stack: wp-ms, slo_ms: 2500 }
|
||
- { id: modiqi, name: 莫蒂奇, biz: 莫蒂奇·品牌, url: "https://modiqi.com/", host: weixiaoduo-prod, stack: wp }
|
||
- { id: cravatar, name: 初认头像, biz: 文派·公共依赖, url: "https://cravatar.com/", host: cravatar-prod, stack: app, note: "头像服务;首页非完整 WP REST" }
|
||
- { id: admincdn, name: 萌芽加速, biz: 文派·CDN/WP, url: "https://admincdn.com/", host: feicode-prod, stack: wp }
|
||
- { id: windfonts, name: 文风字体, biz: 文派·字体, url: "https://windfonts.com/", host: feicode-prod, stack: wp }
|
||
- { id: motucloud, name: 墨图云集, biz: 文派·云, url: "https://motucloud.com/", host: feicode-prod, stack: wp }
|
||
- { id: wpcy, name: 文派叶子, biz: 文派, url: "https://wpcy.com/", host: cravatar-prod, stack: wp }
|
||
- { id: feicode, name: feiCode, biz: 工程平台, url: "https://feicode.com/", host: feicode-prod, stack: app }
|
||
# 文派 SaaS 仅主站(子域不进 critical_paths)
|
||
- { id: wenpai-org, name: 文派.org, biz: 文派·SaaS, url: "https://wenpai.org/", host: wenpai-org, money: true, stack: wp-ms, slo_ms: 2500 }
|
||
|
||
# ── 1. 云主机(钻取层 · [production] 4 + [edge] 5 + DNS)──
|
||
cloud_hosts:
|
||
# 生产主站 [production] —— 委托 devops 用 ansible_ed25519 直连
|
||
# region/specs/ip 为台账字段(不探),供设备卡展示
|
||
# specs 台账(选型/续费见 docs/ops/prod-capacity-tiers.md)
|
||
- id: weixiaoduo-prod
|
||
role: WordPress 业务主站(多站点 80+ 子域,含 mall/matomo/modiqi/mudelms)
|
||
ssh: weixiaoduo-prod # ProxyJump=devops
|
||
panel: baota
|
||
container: docker
|
||
region: 阿里云·杭州
|
||
specs: 16核/30G · 8369B · M-L 收款主站
|
||
- id: feicode-prod
|
||
role: feiCode 平台(Forgejo + act_runner + registry×3 + license + wenpai-bridge + aimirror)
|
||
ssh: feicode-prod
|
||
panel: baota
|
||
container: docker
|
||
region: 阿里云
|
||
specs: 80核/62G · E5-2698v4 · XL 平台
|
||
- id: cravatar-prod
|
||
role: Cravatar 头像 + 多站点托管
|
||
ssh: cravatar-prod
|
||
web: openresty # 非宝塔
|
||
container: podman
|
||
region: 阿里云
|
||
specs: 72核/62G · E5-2696v3 · XL 公共
|
||
- id: wenpai-org
|
||
role: 文派
|
||
ssh: wenpai-org # 旧别名 wenpai-prod-b
|
||
region: 阿里云
|
||
specs: 8核/15G · EPYC · M 业务
|
||
# 边缘 [edge]
|
||
- { id: bj-1p, role: 北京边缘, ssh: bj-1p, region: 北京, specs: "2核/1.7G · S 边缘" }
|
||
- { id: hz-1p, role: 杭州边缘, ssh: hz-1p, region: 杭州, specs: "2核/1.7G · S 边缘" }
|
||
- { id: sz-1p, role: 深圳边缘, ssh: sz-1p, region: 深圳, specs: "2核/1.7G · S 边缘" }
|
||
- { id: gz-1p, role: 广州边缘, ssh: gz-1p, region: 广州, specs: "2核 · S 边缘" }
|
||
- { id: hk-edge, role: 香港边缘, ssh: hk-edge, region: 香港, specs: "2核/3.5G · S 边缘" }
|
||
# DNS 节点(不在 [edge],单独用途)
|
||
- { id: cn-heyuan, role: "DNS 节点(dns.feibisi.com ThinkPHP)", ssh: cn-heyuan, region: 河源, specs: "2核/3.5G · S DNS" }
|
||
# 退役
|
||
- { id: wptea-prod, role: "退役 2026-04-18(迁 weixiaoduo-prod)", retired: true }
|
||
# 客户托管(inventory 之外,经 debian 跳,多为一次性,按活跃度筛)
|
||
# - { id: aetled, role: 待确认, ssh: "aetled", via: debian }
|
||
# - { id: dental-part, role: 待确认, ssh: "dental-part", via: debian }
|
||
# - { id: cqxstx, role: 待确认, ssh: "cqxstx", via: debian }
|
||
# - { id: yayaka, role: 待确认, ssh: "yayaka", via: debian }
|
||
# - { id: tigerflow, role: 待确认, ssh: "tigerflow", via: debian }
|
||
# - { id: oa52, role: 待确认, ssh: "oa52", via: debian }
|
||
# - { id: jeukh-server, role: 待确认, ssh: "jeukh-server", via: debian }
|
||
# - { id: yayaka-new, role: 待确认(疑似 yayaka 迁移中), ssh: "yayaka-new", via: debian }
|
||
|
||
# ── 2. 网站(prod-watch 扩充候选;去重去退役;标 candidate = 监控盲区)──
|
||
sites:
|
||
# 已在 prod-watch 9 主域(wptea.com 待移除)
|
||
- { url: weixiaoduo.com, watch: true }
|
||
- { url: mall.weixiaoduo.com, watch: true }
|
||
- { url: modiqi.com, watch: true }
|
||
- { url: windfonts.com, watch: true }
|
||
- { url: admincdn.com, watch: true, dns: cloudflare }
|
||
- { url: cravatar.com, watch: true }
|
||
- { url: motucloud.com, watch: true }
|
||
- { url: wpcy.com, watch: true }
|
||
- { url: wenpai.org, watch: true, dns: cloudflare, note: "仅主站;子域不单独 watch" }
|
||
# wpfanyi.com / 091616.com — 仅 301,不 watch
|
||
# - { url: wptea.com, watch: true, retired: true } # 已退役,待从 prod-watch 移除
|
||
# 盲区候选(曾过期 / 未监控,从 production-servers.md 提取)
|
||
- { url: cravatar.cn, watch: candidate, note: 曾过期 }
|
||
- { url: litepress.cn, watch: candidate, note: 曾过期 }
|
||
- { url: wenpai.cn, watch: candidate }
|
||
- { url: wenpai.net, watch: candidate, dns: cloudflare }
|
||
- { url: feibisi.com, watch: candidate }
|
||
- { url: feibisi.net, watch: candidate }
|
||
- { url: skypanel.com, watch: candidate }
|
||
- { url: feicode.com, watch: candidate }
|
||
- { url: cn.feicode.com, watch: candidate, note: 曾过期 }
|
||
- { url: feimail.com, watch: candidate }
|
||
- { url: mudelms.com, watch: candidate }
|
||
- { url: weixiaoduo.cn, watch: candidate }
|
||
- { url: weixiaoduo.net, watch: candidate, note: 曾过期 }
|
||
- { url: tongji.feibisi.com, watch: candidate, note: Matomo }
|
||
- { url: img.feibisi.com, watch: candidate }
|
||
- { url: site.feibisi.com, watch: candidate }
|
||
- { url: app.windfonts.com, watch: candidate }
|
||
- { url: go.wpcy.net, watch: candidate, note: CF Worker 短链 }
|
||
# 完整全集待从各生产机 nginx vhost / 宝塔配置现采补全(weixiaoduo-prod 80+ 子域)
|
||
|
||
# ── 3. 在线服务(对外 API / 服务端点)──
|
||
services:
|
||
- { id: cravatar-api, endpoint: "https://cravatar.com/avatar/", host: cravatar-prod }
|
||
- { id: matomo, endpoint: "https://tongji.feibisi.com/", host: weixiaoduo-prod }
|
||
- { id: dns-feibisi, endpoint: "https://dns.feibisi.com/", host: cn-heyuan }
|
||
- { id: wenpai-bridge, endpoint: "内部", host: feicode-prod }
|
||
- { id: license-server, endpoint: "内部", host: feicode-prod }
|
||
|
||
# ── 4. 业务系统(带业务流程的应用 + 容器态)──
|
||
# health_url 可选;container 名用于实测;status=stopped-* → lifecycle 停服待决策
|
||
business:
|
||
- { id: wp-multisite, kind: WordPress, host: weixiaoduo-prod, subs: [mall, modiqi, mudelms, weizhan], health_url: "https://weixiaoduo.com/" }
|
||
- { id: matomo-analytics, kind: Matomo, host: weixiaoduo-prod, container: [matomo-app, matomo-mysql], health_url: "https://tongji.feibisi.com/" }
|
||
- { id: forgejo, kind: Forgejo, version: "11.0.3", host: feicode-prod, container: [forgejo_FeiCode-1, forgejo-postgres], health_url: "https://feicode.com/" }
|
||
- { id: cravatar, kind: Cravatar, host: cravatar-prod, container: [fonts-vault], health_url: "https://cravatar.com/", uptime_name: "Gravatar Proxy" }
|
||
- { id: windfonts, kind: WordPress, host: feicode-prod, health_url: "https://windfonts.com/", note: "文风字体 WP 站(非纯 static)" }
|
||
- { id: admincdn-wp, kind: WordPress, host: feicode-prod, health_url: "https://admincdn.com/" }
|
||
- { id: motucloud-wp, kind: WordPress, host: feicode-prod, health_url: "https://motucloud.com/" }
|
||
- { id: wpcy-wp, kind: WordPress, host: cravatar-prod, health_url: "https://wpcy.com/" }
|
||
- { id: wenpai-saas, kind: WordPress, host: wenpai-org, subs: [api, login, make, developer, learn, profiles, translate], health_url: "https://wenpai.org/", note: "CF zone + wenpai-edge 透传" }
|
||
- { id: mautic, kind: Mautic, host: feicode-prod, status: stopped-4m, note: "待确认重启/清理", decision: pending }
|
||
- { id: weblate, kind: Weblate, host: feicode-prod, status: stopped-4m, decision: pending }
|
||
|
||
# ── 5. CDN & Cloudflare(运维中心 = modiqi)──
|
||
cdn:
|
||
provider: cloudflare
|
||
ops_center: modiqi
|
||
token_ref: "modiqi:~/secrets/cloudflare.enc.yaml" # sops+age 加密
|
||
dns_zones: [admincdn.com, wenpai.net, wenpai.org, wpcy.net, wpfanyi.com, cyberforums.com] # NS=cloudflare
|
||
workers:
|
||
- { name: url-shortener, route: go.wpcy.net, desc: 品牌短链 }
|
||
- { name: domain-check, route: domains.wpcy.net, desc: 域名检查 }
|
||
- { name: wenpai-edge, route: "wenpai.org/* + *.wenpai.org/*", desc: "文派边缘透传+安全头" }
|
||
- { name: redirect-proxy, route: "wpfanyi/wpmirror/admincdn(091616 不监控)", desc: "退役域统一 301" }
|
||
- { name: cravatar-proxy, route: cravatar.com, desc: Cravatar }
|
||
- { name: uptimeflare_worker, route: uptime.wpcy.net, desc: Uptime }
|
||
self_cdn: [admincdn.com, windfonts.com] # 自建 CDN 资源
|
||
# 注:多数主域名 DNS 在阿里云;wenpai.org 已切 CF NS(2026-07-12)
|
||
|
||
# ── 6. 调度(定时任务)──
|
||
jobs:
|
||
# feicode-prod 已知(来自 production-servers.md)
|
||
- { host: feicode-prod, schedule: "0 2 * * *", name: "Forgejo PostgreSQL 备份" }
|
||
- { host: feicode-prod, schedule: "0 3 * * *", name: "wenpai-bridge DB 备份" }
|
||
- { host: feicode-prod, schedule: "0 */6 * * *", name: "Renovate Bot" }
|
||
- { host: feicode-prod, schedule: "0 5 * * *", name: "actions-mirror-sync" }
|
||
- { host: feicode-prod, schedule: "*/5 * * * *", name: "webhook 监控" }
|
||
- { host: feicode-prod, schedule: "* * * * *", name: "forgejo-pages auto-install-hooks" }
|
||
- { host: devops, schedule: "0 3 * * *", name: "backup-prod-to-nas" }
|
||
# Mac 侧
|
||
- { host: mac, schedule: "*/5 * * * *", name: "prod-watch.sh" }
|
||
# 其余生产机待登机现采:systemctl list-timers + crontab -l + wp-cron
|
||
|
||
# ── 7. 外部依赖(主力 = 阿里云全家桶)──
|
||
external:
|
||
- { kind: DNS, provider: "阿里云(万网)" }
|
||
- { kind: 邮件, provider: 阿里云企业邮箱, imap: "imap.qiye.aliyun.com:993", smtp: "smtp.qiye.aliyun.com:465" }
|
||
- { kind: 对象存储, provider: "阿里云 OSS(待精确)", cred: "aliyun-*.enc.yaml" }
|
||
- { kind: 支付, provider: "待确认(支付宝/微信)", note: "WooCommerce mall" }
|
||
- { kind: 代码镜像, provider: "[DockerHub, GHCR, Codeberg]", host: feicode-prod }
|
||
- { kind: CDN, provider: Cloudflare, ref: cdn }
|