Docs/ Infraestructura/ Dominios personalizados

Dominios personalizados

Conecta tus propios nombres de dominio a las aplicaciones de sh0 con certificados SSL automáticos y configuración sin tiempo de inactividad.

Agregar un dominio

Cada aplicación desplegada en sh0 obtiene un subdominio predeterminado bajo *.sh0.app. Para usar tu propio dominio, navega a la configuración de tu aplicación y agrégalo a través del panel de Dominios.

  1. Abre el Panel de control y selecciona tu aplicación.
  2. Navega a Configuración → Dominios.
  3. Haz clic en Agregar dominio e ingresa tu nombre de dominio (por ejemplo, example.com).
  4. sh0 mostrará los registros DNS necesarios para configurar en tu registrador.
Adding a custom domain in the sh0 dashboard
Tip
Puedes agregar tanto dominios raíz (example.com) como subdominios (app.example.com). sh0 maneja ambos sin problemas.

Configuración DNS

Después de agregar un dominio en el panel de control, necesitas configurar los registros DNS en tu registrador de dominios (Cloudflare, Namecheap, GoDaddy, etc.). sh0 admite tanto registros A como registros CNAME.

Configuración de registro A

Usa un registro A para dominios raíz. Apúntalo a la dirección IP de tu servidor sh0:

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

Configuración de CNAME

Usa un registro CNAME para subdominios. Apúntalo al nombre de host de tu 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
La propagación DNS puede tardar hasta 48 horas, pero típicamente se completa en pocos minutos. sh0 detectará automáticamente cuando tus registros DNS estén configurados correctamente.

Verificación de dominio

sh0 verifica automáticamente la propiedad del dominio revisando los registros DNS. El proceso de verificación funciona de la siguiente manera:

  1. sh0 genera un token de verificación único para tu dominio.
  2. Agregas el registro DNS como se muestra en el panel de control.
  3. sh0 verifica periódicamente el registro (cada 30 segundos).
  4. Una vez verificado, sh0 aprovisiona un certificado SSL y enruta el tráfico a tu aplicación.

También puedes activar una verificación manual vía la 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 vía Let's Encrypt

sh0 usa Caddy como su proxy inverso, que obtiene y renueva automáticamente certificados SSL de Let's Encrypt. No hay nada que configurar -- una vez que tu dominio está verificado:

  • Se aprovisiona un certificado HTTPS en segundos.
  • El tráfico HTTP se redirige automáticamente a HTTPS.
  • Los certificados se renuevan automáticamente antes de su expiración (cada 60 días).
  • Se admiten certificados RSA y ECDSA.
SSL certificate details for a custom domain
Tip
Si usas Cloudflare como tu proveedor DNS, establece el modo de proxy en Solo DNS (nube gris) para que sh0 administre el SSL directamente. Si prefieres el proxy de Cloudflare (nube naranja), establece el modo SSL en Completo (Estricto) en Cloudflare.

Dominios comodín

Los dominios comodín te permiten enrutar todos los subdominios de un dominio a una sola aplicación. Esto es útil para aplicaciones multi-inquilino donde cada cliente obtiene su propio subdominio.

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

En el panel de control de sh0, agrega el dominio comodín como *.example.com. Tu aplicación recibirá el nombre de host completo en los encabezados de la solicitud y podrá enrutar en consecuencia.

Warning
Los certificados SSL comodín requieren validación mediante desafío DNS-01. sh0 admite esto automáticamente para proveedores DNS compatibles (Cloudflare, Route53, DigitalOcean). Para otros proveedores, es posible que necesites configurar el desafío DNS manualmente.

Indicadores de estado del dominio

El panel de control muestra una insignia de estado para cada dominio. Esto es lo que significa cada estado:

EstadoDescripción
PendienteLos registros DNS aún no se han detectado.
VerificandoRegistros DNS detectados, certificado SSL en proceso de aprovisionamiento.
ActivoEl dominio está verificado, SSL está activo, el tráfico se está enrutando.
ErrorEl aprovisionamiento de SSL falló o los registros DNS están mal configurados.
Domain list with status indicators

Solución de problemas DNS

Si tu dominio está atascado en estado Pendiente o Error, prueba estos pasos:

Verifica tus registros DNS localmente:

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

Verifica que tu servidor sea accesible en los puertos 80 y 443:

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

Problemas comunes y soluciones:

  • DNS no propagado: Espera hasta 48 horas, o usa un valor TTL más bajo.
  • Firewall bloqueando puertos 80/443: Asegúrate de que el firewall de tu servidor permita tráfico HTTP y HTTPS entrante.
  • Interferencia del proxy de Cloudflare: Cambia al modo solo DNS (nube gris) o configura SSL Completo (Estricto) en Cloudflare.
  • Dirección IP incorrecta: Verifica la IP pública de tu servidor con curl ifconfig.me.
  • Límite de tasa: Let's Encrypt tiene límites de tasa (50 certificados por dominio por semana). Si los alcanzas, espera o usa un certificado de staging.
Danger
Nunca apuntes un dominio a tu servidor antes de agregarlo en el panel de control de sh0. sh0 necesita saber sobre el dominio antes de poder aprovisionar un certificado SSL. Agregar el registro DNS primero puede causar que el aprovisionamiento del certificado falle debido a la configuración faltante de Caddy.