## 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 可提供基本响应