design.md 1.0 KB

Context

UFW 默认 deny incoming + 仅允许 SSH,导致 certbot standalone 的 80 端口 ACME 验证被防火墙阻断。

Goals / Non-Goals

Goals:

  • 确保证书申请前 80 端口已被 UFW 放行

Non-Goals:

  • 不修改 base role 的默认防火墙策略
  • 不引入临时端口规则(避免增加复杂度)

Decisions

在 trojan role 中单独允许 80 端口

  • Rationale: base role 的 allowed_ports 机制在 base role 执行时生效,trojan role 在后执行时无法通过该机制追加端口。直接在 trojan role 中使用 UFW 模块允许 80 端口是最简洁的方案。
  • Alternatives considered: 在 base role 的 group_vars/all.yml 中增加 allowed_ports: [80] — 但这会为所有服务器(包括不部署 Trojan 的服务器)开放 80 端口,不符合最小权限原则。

Risks / Trade-offs

  • [Risk] 80 端口长期开放可能被扫描
    • Mitigation: 80 端口本身不运行敏感服务,仅用于 HTTP 和 ACME 验证;nginx fallback 可提供基本响应