域名与 SSL
配置自定义域名并自动获取 HTTPS 证书
域名与 SSL
Senate 通过内置的 Caddy 反向代理提供自动域名管理和 SSL 证书申请。
概述
当你为服务添加域名时:
- Senate 配置 Caddy 将流量路由到你的容器
- 如果启用 HTTPS,Let's Encrypt 自动申请 SSL 证书
- 流量从域名代理到容器端口

添加域名
- 导航到你的服务
- 进入 Domains 标签页
- 点击 Add Domain
- 配置域名:
| 字段 | 描述 | 示例 |
|---|---|---|
| Host | 域名 | app.example.com |
| Port | 要路由到的容器端口 | 3000 |
| Path | URL 路径前缀 | / 或 /api |
| Protocol | HTTP 或 HTTPS | https |
- 点击 Save
域名配置
Host
完全限定域名 (FQDN):
- 子域名:
app.example.com、api.example.com - 根域名:
example.com - 通配符:暂不支持
Port
应用监听的内部容器端口:
- 必须与容器内应用绑定的端口一致
- 不同于主机端口绑定
- 常用端口:
3000、8080、80
Path
将特定 URL 路径路由到不同服务:
| 路径 | 路由 |
|---|---|
/ | 所有流量 |
/api | 仅 /api/* 请求 |
/admin | 仅 /admin/* 请求 |
基于路径的路由允许多个服务共享单个域名。
Protocol
| 协议 | 描述 |
|---|---|
https | 通过 Let's Encrypt 自动 SSL(推荐) |
http | 无加密(不推荐用于生产环境) |
SSL 证书
Senate 支持三种 SSL 证书模式:
自动模式(HTTP-01 验证)
使用 Let's Encrypt HTTP-01 验证的默认模式:
- 使用该域名配置 Caddy
- Caddy 向 Let's Encrypt 申请证书
- HTTP-01 验证域名所有权
- 安装证书并自动续期
要求:
- 域名 DNS 必须指向服务器 IP
- 80 端口必须可访问(用于 HTTP-01 验证)
- 443 端口必须可访问(用于 HTTPS 流量)
DNS 验证(Cloudflare)
使用 Cloudflare DNS 提供商的 DNS-01 验证:
- 添加域名时选择 DNS 模式
- 选择 Cloudflare 作为 DNS 提供商
- 提供你的 Cloudflare API 令牌
- Caddy 使用 DNS-01 验证(无需 80 端口)
适用场景: 80 端口不可访问或偏好 DNS 验证。
自定义证书
上传你自己的 SSL 证书:
- 添加域名时选择 Custom 模式
- 粘贴你的证书(PEM 格式)
- 粘贴你的私钥(PEM 格式)
- 直接使用证书(不自动续期)
适用场景: 你有自己的证书或使用私有 CA。
证书续期
通过自动或 DNS 模式获取的证书会在过期前自动续期。自定义证书需要手动续期。
内部端点
服务还会获得用于容器间通信的内部端点:
http://{service-name}-{id}:{port}这些显示在 Domains 标签页的"Internal Endpoints"下。
管理域名
编辑域名
- 点击域名上的编辑图标(✏️)
- 修改配置
- 点击 Save
更改立即生效。SSL 证书保持不变。
删除域名
- 点击域名上的删除图标(🗑️)
- 确认删除
路由立即从 Caddy 中移除。
网关集成
域名由每台服务器上的网关(Caddy)管理。查看所有路由:
- 进入 Machines → 选择服务器 → Gateway
- 查看按服务分组的所有配置域名
- 监控证书状态
- 查看上游健康状况
故障排除
证书未能申请
- DNS 未配置:使用
dig yourdomain.com验证 - 80 端口被阻止:检查防火墙允许 HTTP 流量
- 速率限制:Let's Encrypt 有速率限制;等待后重试
- 无效域名:确保域名可公开解析
域名无法访问
- 服务未运行:检查服务状态
- 端口错误:验证端口与容器监听端口匹配
- 路径不匹配:检查路径配置
- 防火墙:确保 80/443 端口开放
最佳实践
- 生产环境始终使用 HTTPS
- 添加域名前设置好 DNS
- 使用路径路由在更少的域名上整合服务
- 监控网关状态以了解证书和路由问题