自定义域名
将自定义域名连接到 sh0 应用,享受自动 SSL 证书和零停机配置。
添加域名
在 sh0 上部署的每个应用都会获得 *.sh0.app 下的默认子域名。要使用自己的域名,请导航到应用设置并通过域名面板添加。
- 打开 控制台 并选择你的应用。
- 导航到 设置 → 域名。
- 点击 添加域名 并输入你的域名(例如
example.com)。 - sh0 将显示需要在域名注册商处配置的 DNS 记录。
Adding a custom domain in the sh0 dashboard
Tip
你可以同时添加根域名(
example.com)和子域名(app.example.com)。sh0 无缝处理两者。DNS 配置
在控制台中添加域名后,你需要在域名注册商(Cloudflare、Namecheap、GoDaddy 等)配置 DNS 记录。sh0 同时支持 A 记录和 CNAME 记录。
A 记录设置
对根域名使用 A 记录。将其指向 sh0 服务器的 IP 地址:
Type: A
Name: @
Value: YOUR_SERVER_IP
TTL: 3600 (or Auto)CNAME 设置
对子域名使用 CNAME 记录。将其指向 sh0 服务器的主机名:
Type: CNAME
Name: app
Value: your-server.example.com
TTL: 3600 (or Auto) DNS configuration panel showing required records
Note
DNS 传播最多可能需要 48 小时,但通常在几分钟内完成。sh0 会自动检测 DNS 记录是否已正确配置。
域名验证
sh0 通过检查 DNS 记录自动验证域名所有权。验证流程如下:
- sh0 为你的域名生成唯一的验证令牌。
- 你按照控制台中显示的内容添加 DNS 记录。
- sh0 定期检查记录(每 30 秒)。
- 验证通过后,sh0 配置 SSL 证书并将流量路由到你的应用。
你也可以通过 API 触发手动检查:
curl -X POST https://your-server:9000/api/domains/verify \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '[object Object]' Domain verification status in the dashboard
通过 Let's Encrypt 自动配置 SSL
sh0 使用 Caddy 作为反向代理,自动从 Let's Encrypt 获取和续期 SSL 证书。无需配置——域名验证通过后:
- HTTPS 证书在几秒内配置完成。
- HTTP 流量自动重定向到 HTTPS。
- 证书在到期前自动续期(每 60 天)。
- 同时支持 RSA 和 ECDSA 证书。
SSL certificate details for a custom domain
Tip
如果使用 Cloudflare 作为 DNS 提供商,请将代理模式设置为 仅 DNS(灰色云朵)以让 sh0 直接管理 SSL。如果你更喜欢 Cloudflare 的代理(橙色云朵),请在 Cloudflare 中将 SSL 模式设置为 完全(严格)。
通配符域名
通配符域名允许你将一个域名的所有子域名路由到单个应用。这对于每个客户都有自己子域名的多租户应用非常有用。
Type: A
Name: *
Value: YOUR_SERVER_IP
TTL: 3600在 sh0 控制台中,将通配符域名添加为 *.example.com。你的应用将在请求头中接收完整的主机名,并可据此进行路由。
Warning
通配符 SSL 证书需要 DNS-01 质询验证。sh0 对支持的 DNS 提供商(Cloudflare、Route53、DigitalOcean)自动支持此功能。对于其他提供商,你可能需要手动配置 DNS 质询。
域名状态指示器
控制台为每个域名显示状态标记。以下是每种状态的含义:
| 状态 | 描述 |
|---|---|
| 待处理 | 尚未检测到 DNS 记录。 |
| 验证中 | 已检测到 DNS 记录,正在配置 SSL 证书。 |
| 活跃 | 域名已验证,SSL 已激活,流量正在路由。 |
| 错误 | SSL 配置失败或 DNS 记录配置错误。 |
Domain list with status indicators
DNS 故障排查
如果域名卡在 待处理 或 错误 状态,请尝试以下步骤:
本地检查 DNS 记录:
dig example.com +short
dig CNAME app.example.com +short验证服务器在 80 和 443 端口是否可达:
curl -I http://YOUR_SERVER_IP
curl -I https://YOUR_SERVER_IP常见问题和解决方案:
- DNS 未传播:等待最多 48 小时,或使用较低的 TTL 值。
- 防火墙阻止 80/443 端口:确保服务器防火墙允许入站 HTTP 和 HTTPS 流量。
- Cloudflare 代理干扰:切换到仅 DNS 模式(灰色云朵)或在 Cloudflare 中配置完全(严格)SSL。
- IP 地址错误:使用
curl ifconfig.me仔细检查服务器的公共 IP。 - 速率限制:Let's Encrypt 有速率限制(每个域名每周 50 个证书)。如果达到限制,请等待或使用测试证书。
Danger
在 sh0 控制台中添加域名之前,切勿将域名指向服务器。sh0 需要先知道域名才能配置 SSL 证书。先添加 DNS 记录可能因缺少 Caddy 配置而导致证书配置失败。