Senate

域名与 SSL

配置自定义域名并自动获取 HTTPS 证书

域名与 SSL

Senate 通过内置的 Caddy 反向代理提供自动域名管理和 SSL 证书申请。

概述

当你为服务添加域名时:

  1. Senate 配置 Caddy 将流量路由到你的容器
  2. 如果启用 HTTPS,Let's Encrypt 自动申请 SSL 证书
  3. 流量从域名代理到容器端口

域名概述

添加域名

  1. 导航到你的服务
  2. 进入 Domains 标签页
  3. 点击 Add Domain
  4. 配置域名:
字段描述示例
Host域名app.example.com
Port要路由到的容器端口3000
PathURL 路径前缀//api
ProtocolHTTP 或 HTTPShttps
  1. 点击 Save

域名配置

Host

完全限定域名 (FQDN):

  • 子域名:app.example.comapi.example.com
  • 根域名:example.com
  • 通配符:暂不支持

Port

应用监听的内部容器端口:

  • 必须与容器内应用绑定的端口一致
  • 不同于主机端口绑定
  • 常用端口:3000808080

Path

将特定 URL 路径路由到不同服务:

路径路由
/所有流量
/api/api/* 请求
/admin/admin/* 请求

基于路径的路由允许多个服务共享单个域名。

Protocol

协议描述
https通过 Let's Encrypt 自动 SSL(推荐)
http无加密(不推荐用于生产环境)

SSL 证书

Senate 支持三种 SSL 证书模式:

自动模式(HTTP-01 验证)

使用 Let's Encrypt HTTP-01 验证的默认模式:

  1. 使用该域名配置 Caddy
  2. Caddy 向 Let's Encrypt 申请证书
  3. HTTP-01 验证域名所有权
  4. 安装证书并自动续期

要求:

  • 域名 DNS 必须指向服务器 IP
  • 80 端口必须可访问(用于 HTTP-01 验证)
  • 443 端口必须可访问(用于 HTTPS 流量)

DNS 验证(Cloudflare)

使用 Cloudflare DNS 提供商的 DNS-01 验证:

  1. 添加域名时选择 DNS 模式
  2. 选择 Cloudflare 作为 DNS 提供商
  3. 提供你的 Cloudflare API 令牌
  4. Caddy 使用 DNS-01 验证(无需 80 端口)

适用场景: 80 端口不可访问或偏好 DNS 验证。

自定义证书

上传你自己的 SSL 证书:

  1. 添加域名时选择 Custom 模式
  2. 粘贴你的证书(PEM 格式)
  3. 粘贴你的私钥(PEM 格式)
  4. 直接使用证书(不自动续期)

适用场景: 你有自己的证书或使用私有 CA。

证书续期

通过自动或 DNS 模式获取的证书会在过期前自动续期。自定义证书需要手动续期。

内部端点

服务还会获得用于容器间通信的内部端点:

http://{service-name}-{id}:{port}

这些显示在 Domains 标签页的"Internal Endpoints"下。

管理域名

编辑域名

  1. 点击域名上的编辑图标(✏️)
  2. 修改配置
  3. 点击 Save

更改立即生效。SSL 证书保持不变。

删除域名

  1. 点击域名上的删除图标(🗑️)
  2. 确认删除

路由立即从 Caddy 中移除。

网关集成

域名由每台服务器上的网关(Caddy)管理。查看所有路由:

  1. 进入 Machines → 选择服务器 → Gateway
  2. 查看按服务分组的所有配置域名
  3. 监控证书状态
  4. 查看上游健康状况

故障排除

证书未能申请

  1. DNS 未配置:使用 dig yourdomain.com 验证
  2. 80 端口被阻止:检查防火墙允许 HTTP 流量
  3. 速率限制:Let's Encrypt 有速率限制;等待后重试
  4. 无效域名:确保域名可公开解析

域名无法访问

  1. 服务未运行:检查服务状态
  2. 端口错误:验证端口与容器监听端口匹配
  3. 路径不匹配:检查路径配置
  4. 防火墙:确保 80/443 端口开放

最佳实践

  1. 生产环境始终使用 HTTPS
  2. 添加域名前设置好 DNS
  3. 使用路径路由在更少的域名上整合服务
  4. 监控网关状态以了解证书和路由问题

相关内容

目录