72TEAM / OPERATIONS← 返回运维中心

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 业务日志。