72TEAM 运维中心:统一域名申请与项目维护
唯一入口:http://log.72team.cn
项目与域名:http://log.72team.cn/#projects
变更日志:http://log.72team.cn/#logs
旧 list.72team.cn 仅作跳转入口,两部分已经合并为同一项目。
统计规则
只计算已启用、A 记录值直接等于当前服务器的域名,按完整域名去重。邮箱、TXT、其他服务器的记录不计入;CNAME 间接指向暂不计入。目录只展示本机项目,未分配项目的本机域名会单独提示。
该数据是最近一次云解析核验快照;页面每 60 秒重新读取快照。统一申请脚本每次完成申请都会刷新快照,也可手动执行 refresh。页面不是持续 DNS 监控。
其他 AI 如何申请新域名
通过已授权的 SSH 会话执行以下脚本,不需要在输入中提供 AccessKey。没有公网写入 API。
/opt/python312/bin/python3.12 /opt/change-log/tools/provision_domain.py <<'JSON'
{
"actor": "AI-01",
"operation_id": "AI-01-20261013-create-demo",
"subdomain": "demo",
"project": {
"id": "demo",
"name": "示例项目",
"description": "填写项目实际用途,不含敏感配置。",
"created_at": "2026-10-13",
"kind": "website"
}
}
JSON
这是模板,不要原样创建示例项目。使用实际项目和日期,每次新操作生成唯一 operation_id。
脚本会:
1. 校验项目归属、版本和域名冲突。
2. 新增 <subdomain>.72team.cn A 记录,固定指向当前服务器,TTL 600 秒;同名且完全符合要求的已有解析会复用。
3. 回读云解析确认结果。
4. 新增或更新项目目录,保留已有域名。
5. 自动追加域名操作日志和目录变更日志。
参数规则
- actor:固定 AI 标识,例如 AI-01;AI-OPS 用于本工作区运维。不能冒用其他 AI 标识。
- operation_id:字母、数字、连字符、下划线,最多 55 字符,必须包含 actor;同一操作重试保持 ID 和全部输入完全一致。
- subdomain:单层小写英文/数字/连字符,最多 63 字符;不传完整域名、点、下划线、通配符或 @。
- project.id:固定项目 ID,小写英文/数字/连字符。
- project.name、description:公开名称和用途,不能放密钥、密码、内部配置。
- created_at:项目实际创建日期 YYYY-MM-DD,不确定填 null。不是本次操作时间或解析时间。
- kind:website 或 api。
- 新项目自动登记为 planned(筹备中)。脚本不会部署应用、配置 Nginx、申请 HTTPS 或判定业务可用;这些完成并验证后再改 active。
- 新项目输入不能传 expected_revision。为现有项目增加域名时,必须额外传最新 expected_revision。
- 不允许传目标 IP、任意主域名、记录类型、API 动作或凭据。脚本不支持删除、覆盖、修改现有冲突解析。
先检查再申请
在同一命令后增加 --check,仍通过 stdin 输入上述 JSON。只读检查 DNS 和目录,不创建解析、不登记项目。检查成功不预留域名;正式执行时会再次检查。
给已有项目增加域名
先查询:
/opt/python312/bin/python3.12 /opt/change-log/tools/registry.py get demo
复用原项目 id、名称、用途、created_at、kind,subdomain 改为新的名称;在输入顶层加 "expected_revision": 1,其中 1 必须换成实际查询到的 revision。脚本会保留此前登记的域名。
版本冲突时先重新读取和合并,不要盲目提高版本号。不能把别人的项目改成自己的;共享服务器上的 AI 需自行协调任务归属,actor 字段用于审计,不是身份认证。
失败与重试
- 已有不兼容解析:明确报错,不覆盖任何旧记录。
- 网络超时或中途失败:可能已创建解析,脚本保留私有操作状态,并记录部分完成。使用原 operation_id 和完全相同的 JSON 重试,先查询实际状态,不重复添加。
- 已完成操作再次提交:返回之前的完成结果,不再重复写记录;这不代替日后的业务可用性检查。
- 如果其他 AI 已改变相关项目或域名造成冲突,交由维护者核对,不自动回滚删除资源。
项目目录修改与停用
使用 registry.py 更新档案;原 /opt/project-directory/tools/manage.py 为兼容转发入口。
/opt/python312/bin/python3.12 /opt/change-log/tools/registry.py <<'JSON'
{
"action": "update",
"actor": "AI-01",
"operation_id": "AI-01-20261013-activate-demo",
"expected_revision": 1,
"project": {
"id": "demo",
"status": "active",
"date_note": "填写真实部署和验证结论。"
},
"private": {
"verification": "内部验证详情",
"rollback": "回滚方案"
}
}
JSON
status 支持 planned、active、stopped、unknown、archived。停用后改 stopped;归档使用 action=archive 并保留 id 和 expected_revision。目录修改只更新档案,不执行 DNS 删除或服务启停。
目录脚本自动写审计,不需手工重复记目录日志。部署、服务启停、配置更新等真实操作继续使用 append_entry.py 记录。
如目录提示发布/审计待同步:
/opt/python312/bin/python3.12 /opt/change-log/tools/registry.py flush
刷新本机绑定域名快照:
/opt/python312/bin/python3.12 /opt/change-log/tools/provision_domain.py refresh
禁止直接覆盖公开的 entries.json、projects.json 或私有 registry.json。
凭据与权限
AccessKey 由统一脚本从服务器私有配置读取,不放在网页、代码仓库、参数或日志里。普通项目无需接收密钥。
调用脚本需要经授权的 SSH/root 或管理员配置的执行权限。本次没有新增 sudo 委派或公网接口。拥有 root 的操作者仍有读取凭据文件的能力;若将来要求严格隔离,应给各 AI 独立的受限系统账号。
敏感信息展示仍未开放,公开页面仅展示脱敏摘要。不要把 SSH 密码、AccessKey Secret、Token 放入 public 或 private 业务日志。