Docs/ Infrastructure/ Domaines personnalisés

Domaines personnalisés

Connectez vos propres noms de domaine aux applications sh0 avec des certificats SSL automatiques et une configuration sans interruption.

Ajout d'un domaine

Chaque application déployée sur sh0 obtient un sous-domaine par défaut sous *.sh0.app. Pour utiliser votre propre domaine, accédez aux paramètres de votre application et ajoutez-le via le panneau Domaines.

  1. Ouvrez le Tableau de bord et sélectionnez votre application.
  2. Accédez à Paramètres → Domaines.
  3. Cliquez sur Ajouter un domaine et saisissez votre nom de domaine (par ex., example.com).
  4. sh0 affichera les enregistrements DNS requis à configurer chez votre registraire.
Adding a custom domain in the sh0 dashboard
Tip
Vous pouvez ajouter à la fois des domaines racine (example.com) et des sous-domaines (app.example.com). sh0 gère les deux de manière transparente.

Configuration DNS

Après avoir ajouté un domaine dans le tableau de bord, vous devez configurer les enregistrements DNS chez votre registraire de domaine (Cloudflare, Namecheap, GoDaddy, etc.). sh0 prend en charge les enregistrements A et CNAME.

Configuration de l'enregistrement A

Utilisez un enregistrement A pour les domaines racine. Pointez-le vers l'adresse IP de votre serveur sh0 :

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

Configuration CNAME

Utilisez un enregistrement CNAME pour les sous-domaines. Pointez-le vers le nom d'hôte de votre serveur 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 propagation DNS peut prendre jusqu'à 48 heures, mais se termine généralement en quelques minutes. sh0 détectera automatiquement quand vos enregistrements DNS sont correctement configurés.

Vérification du domaine

sh0 vérifie automatiquement la propriété du domaine en vérifiant les enregistrements DNS. Le processus de vérification fonctionne comme suit :

  1. sh0 génère un jeton de vérification unique pour votre domaine.
  2. Vous ajoutez l'enregistrement DNS tel qu'affiché dans le tableau de bord.
  3. sh0 vérifie périodiquement l'enregistrement (toutes les 30 secondes).
  4. Une fois vérifié, sh0 provisionne un certificat SSL et achemine le trafic vers votre application.

Vous pouvez également déclencher une vérification manuelle via l'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 automatique via Let's Encrypt

sh0 utilise Caddy comme reverse proxy, qui obtient et renouvelle automatiquement les certificats SSL auprès de Let's Encrypt. Il n'y a rien à configurer -- une fois votre domaine vérifié :

  • Un certificat HTTPS est provisionné en quelques secondes.
  • Le trafic HTTP est automatiquement redirigé vers HTTPS.
  • Les certificats sont renouvelés automatiquement avant expiration (tous les 60 jours).
  • Les certificats RSA et ECDSA sont pris en charge.
SSL certificate details for a custom domain
Tip
Si vous utilisez Cloudflare comme fournisseur DNS, réglez le mode proxy sur DNS uniquement (nuage gris) pour laisser sh0 gérer le SSL directement. Si vous préférez le proxy Cloudflare (nuage orange), réglez le mode SSL sur Full (Strict) dans Cloudflare.

Domaines wildcard

Les domaines wildcard vous permettent d'acheminer tous les sous-domaines d'un domaine vers une seule application. C'est utile pour les applications multi-tenant où chaque client obtient son propre sous-domaine.

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

Dans le tableau de bord sh0, ajoutez le domaine wildcard comme *.example.com. Votre application recevra le nom d'hôte complet dans les en-têtes de requête et pourra acheminer en conséquence.

Warning
Les certificats SSL wildcard nécessitent une validation par défi DNS-01. sh0 prend cela en charge automatiquement pour les fournisseurs DNS supportés (Cloudflare, Route53, DigitalOcean). Pour les autres fournisseurs, vous devrez peut-être configurer le défi DNS manuellement.

Indicateurs de statut du domaine

Le tableau de bord affiche un badge de statut pour chaque domaine. Voici ce que signifie chaque statut :

StatutDescription
En attenteLes enregistrements DNS n'ont pas encore été détectés.
VérificationEnregistrements DNS détectés, certificat SSL en cours de provisionnement.
ActifLe domaine est vérifié, le SSL est actif, le trafic est acheminé.
ErreurLe provisionnement SSL a échoué ou les enregistrements DNS sont mal configurés.
Domain list with status indicators

Résolution des problèmes DNS

Si votre domaine est bloqué au statut En attente ou Erreur, essayez ces étapes :

Vérifiez vos enregistrements DNS localement :

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

Vérifiez que votre serveur est accessible sur les ports 80 et 443 :

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

Problèmes courants et solutions :

  • DNS non propagé : Attendez jusqu'à 48 heures, ou utilisez une valeur TTL plus basse.
  • Pare-feu bloquant les ports 80/443 : Assurez-vous que votre pare-feu serveur autorise le trafic HTTP et HTTPS entrant.
  • Interférence du proxy Cloudflare : Passez en mode DNS uniquement (nuage gris) ou configurez le SSL Full (Strict) dans Cloudflare.
  • Mauvaise adresse IP : Vérifiez l'IP publique de votre serveur avec curl ifconfig.me.
  • Limite de débit : Let's Encrypt a des limites de débit (50 certificats par domaine par semaine). Si vous les atteignez, attendez ou utilisez un certificat de staging.
Danger
Ne pointez jamais un domaine vers votre serveur avant de l'avoir ajouté dans le tableau de bord sh0. sh0 doit connaître le domaine avant de pouvoir provisionner un certificat SSL. Ajouter l'enregistrement DNS en premier peut provoquer l'échec du provisionnement du certificat en raison d'une configuration Caddy manquante.