Docs/ Infraestrutura/ Domínios Personalizados

Domínios Personalizados

Conecte seus próprios nomes de domínio às aplicações sh0 com certificados SSL automáticos e configuração sem tempo de inatividade.

Adicionando um Domínio

Toda aplicação implantada no sh0 recebe um subdomínio padrão sob *.sh0.app. Para usar seu próprio domínio, navegue até as configurações da sua aplicação e adicione-o pelo painel de Domínios.

  1. Abra o Painel e selecione sua aplicação.
  2. Navegue até Configurações → Domínios.
  3. Clique em Adicionar Domínio e insira o nome do seu domínio (ex.: example.com).
  4. O sh0 exibirá os registros DNS necessários para configurar no seu registrador.
Adding a custom domain in the sh0 dashboard
Tip
Você pode adicionar tanto domínios raiz (example.com) quanto subdomínios (app.example.com). O sh0 lida com ambos de forma transparente.

Configuração de DNS

Após adicionar um domínio no painel, você precisa configurar registros DNS no seu registrador de domínios (Cloudflare, Namecheap, GoDaddy, etc.). O sh0 suporta tanto registros A quanto registros CNAME.

Configuração de Registro A

Use um registro A para domínios raiz. Aponte-o para o endereço IP do seu servidor sh0:

DNS A Record
Type: A
Name: @
Value: YOUR_SERVER_IP
TTL: 3600 (or Auto)

Configuração de CNAME

Use um registro CNAME para subdomínios. Aponte-o para o hostname do seu servidor sh0:

DNS CNAME Record
Type: CNAME
Name: app
Value: your-server.example.com
TTL: 3600 (or Auto)
DNS configuration panel showing required records
Note
A propagação de DNS pode levar até 48 horas, mas normalmente é concluída em poucos minutos. O sh0 detectará automaticamente quando seus registros DNS estiverem configurados corretamente.

Verificação de Domínio

O sh0 verifica automaticamente a propriedade do domínio verificando registros DNS. O processo de verificação funciona da seguinte forma:

  1. O sh0 gera um token de verificação único para seu domínio.
  2. Você adiciona o registro DNS conforme exibido no painel.
  3. O sh0 verifica periodicamente o registro (a cada 30 segundos).
  4. Uma vez verificado, o sh0 provisiona um certificado SSL e roteia o tráfego para sua aplicação.

Você também pode acionar uma verificação manual via API:

Terminal
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

SSL Automático via Let's Encrypt

O sh0 usa o Caddy como proxy reverso, que obtém e renova automaticamente certificados SSL do Let's Encrypt. Não há nada para configurar -- uma vez que seu domínio é verificado:

  • Um certificado HTTPS é provisionado em segundos.
  • Tráfego HTTP é automaticamente redirecionado para HTTPS.
  • Certificados são renovados automaticamente antes de expirar (a cada 60 dias).
  • Certificados RSA e ECDSA são suportados.
SSL certificate details for a custom domain
Tip
Se você usa o Cloudflare como provedor DNS, defina o modo de proxy para Somente DNS (nuvem cinza) para deixar o sh0 gerenciar o SSL diretamente. Se preferir o proxy do Cloudflare (nuvem laranja), defina o modo SSL para Full (Strict) no Cloudflare.

Domínios Wildcard

Domínios wildcard permitem rotear todos os subdomínios de um domínio para uma única aplicação. Isso é útil para aplicações multi-tenant onde cada cliente recebe seu próprio subdomínio.

DNS Wildcard Record
Type: A
Name: *
Value: YOUR_SERVER_IP
TTL: 3600

No painel do sh0, adicione o domínio wildcard como *.example.com. Sua aplicação receberá o hostname completo nos cabeçalhos da requisição e poderá rotear adequadamente.

Warning
Certificados SSL wildcard requerem validação de desafio DNS-01. O sh0 suporta isso automaticamente para provedores DNS suportados (Cloudflare, Route53, DigitalOcean). Para outros provedores, pode ser necessário configurar o desafio DNS manualmente.

Indicadores de Status do Domínio

O painel mostra um badge de status para cada domínio. Veja o que cada status significa:

StatusDescrição
PendenteRegistros DNS ainda não foram detectados.
VerificandoRegistros DNS detectados, certificado SSL sendo provisionado.
AtivoDomínio verificado, SSL ativo, tráfego sendo roteado.
ErroProvisionamento de SSL falhou ou registros DNS estão mal configurados.
Domain list with status indicators

Solucionando Problemas de DNS

Se seu domínio está preso no status Pendente ou Erro, tente estes passos:

Verifique seus registros DNS localmente:

Terminal
dig example.com +short
dig CNAME app.example.com +short

Verifique se seu servidor está acessível nas portas 80 e 443:

Terminal
curl -I http://YOUR_SERVER_IP
curl -I https://YOUR_SERVER_IP

Problemas comuns e soluções:

  • DNS não propagado: Aguarde até 48 horas ou use um valor de TTL menor.
  • Firewall bloqueando portas 80/443: Garanta que o firewall do seu servidor permita tráfego HTTP e HTTPS de entrada.
  • Interferência do proxy Cloudflare: Mude para o modo somente DNS (nuvem cinza) ou configure SSL Full (Strict) no Cloudflare.
  • Endereço IP incorreto: Verifique o IP público do seu servidor com curl ifconfig.me.
  • Limite de taxa: O Let's Encrypt tem limites de taxa (50 certificados por domínio por semana). Se você os atingir, aguarde ou use um certificado de staging.
Danger
Nunca aponte um domínio para seu servidor antes de adicioná-lo no painel do sh0. O sh0 precisa saber sobre o domínio antes de provisionar um certificado SSL. Adicionar o registro DNS primeiro pode causar falha no provisionamento de certificado devido à configuração do Caddy ausente.