Aller au contenu principal

Configuration DNS Wildcard

Le DNS générique (wildcard) permet des sous-domaines locataires comme acme.yourdomain.com, techcorp.yourdomain.com, etc. C'est optionnel — FeedbackPulse fonctionne très bien avec des URL basées sur des slugs (ex. : /wall/acme-corp) sans DNS générique.


Ai-je besoin du DNS générique ?

ScénarioDNS générique nécessaire ?
Les locataires utilisent des pages publiques basées sur des slugs (/wall/acme-corp)Non
Les locataires veulent leur propre sous-domaine (acme.yourdomain.com)Oui
Les locataires apportent leur propre domaine personnalisé (feedback.acme.com)Non (utilisez CNAME à la place)

Ce dont vous avez besoin

  1. Un enregistrement DNS A générique : *.yourdomain.com → IP de votre serveur
  2. Un certificat SSL générique : couvre *.yourdomain.com
  3. Configuration du serveur web : accepte tous les sous-domaines

Étape 1 : Ajouter l'enregistrement DNS

Accédez au panneau de gestion DNS de votre registraire de domaine et ajoutez :

TypeNom/HôteValeurTTL
A*123.456.789.0 (IP de votre serveur)300

Vous avez également besoin de l'enregistrement A habituel pour le domaine racine :

TypeNom/HôteValeur
A@123.456.789.0

Instructions spécifiques aux fournisseurs

Cloudflare

  1. Connectez-vous au tableau de bord Cloudflare
  2. Sélectionnez votre domaine
  3. Allez dans DNSEnregistrements
  4. Cliquez sur Ajouter un enregistrement
  5. Type : A | Nom : * | IPv4 : IP de votre serveur | Proxy : DNS uniquement (nuage gris)
  6. Cliquez sur Enregistrer

Important : Pour les sous-domaines génériques, configurez le proxy Cloudflare sur DNS uniquement (nuage gris), pas sur Proxy activé (nuage orange). Le plan gratuit de Cloudflare ne proxifie pas les sous-domaines génériques.

Namecheap

  1. Connectez-vous → Liste des domainesGérer votre domaine
  2. Allez dans DNS avancé
  3. Cliquez sur Ajouter un nouvel enregistrement
  4. Type : Enregistrement A | Hôte : * | Valeur : IP de votre serveur | TTL : Automatique
  5. Enregistrez

GoDaddy

  1. Connectez-vous → Mes produitsDNS pour votre domaine
  2. Cliquez sur Ajouter un enregistrement
  3. Type : A | Nom : * | Valeur : IP de votre serveur | TTL : 600
  4. Enregistrez

Google Domains / Google Cloud DNS

  1. Allez sur Google Domains
  2. Sélectionnez votre domaine → DNS
  3. Sous Enregistrements personnalisés, ajoutez :
  4. Hôte : * | Type : A | Données : IP de votre serveur
  5. Enregistrez

AWS Route 53

  1. Allez dans Route 53Zones hébergées → sélectionnez votre domaine
  2. Cliquez sur Créer un enregistrement
  3. Nom de l'enregistrement : * | Type : A
  4. Valeur : IP de votre serveur | TTL : 300
  5. Cliquez sur Créer les enregistrements

DigitalOcean DNS

  1. Allez dans RéseauDomaines
  2. Sélectionnez votre domaine
  3. Ajoutez : Type A | Nom d'hôte * | Dirigera vers : IP de votre serveur | TTL : 300

Hetzner DNS

  1. Allez sur la console DNS Hetzner
  2. Sélectionnez votre zone
  3. Ajoutez un enregistrement : Type A | Nom * | Valeur : IP de votre serveur

Étape 2 : Obtenir un certificat SSL générique

Option A : Let's Encrypt avec défi DNS (gratuit)

Les certificats génériques de Let's Encrypt nécessitent le défi DNS-01 (pas HTTP) :

# Installer Certbot avec le plugin DNS pour votre fournisseur
# Exemple : Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Créer le fichier d'identifiants Cloudflare
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

Ajoutez votre jeton API Cloudflare :

dns_cloudflare_api_token = your_cloudflare_api_token_here
sudo chmod 600 /etc/letsencrypt/cloudflare.ini

# Obtenir le certificat générique
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

Plugins DNS pour les autres fournisseurs

FournisseurPlugin CertbotInstallation
Cloudflarepython3-certbot-dns-cloudflaresudo apt install python3-certbot-dns-cloudflare
Route 53python3-certbot-dns-route53sudo apt install python3-certbot-dns-route53
DigitalOceanpython3-certbot-dns-digitaloceansudo apt install python3-certbot-dns-digitalocean
Google Cloudpython3-certbot-dns-googlesudo apt install python3-certbot-dns-google

Option B : Défi DNS manuel

Si votre fournisseur DNS n'a pas de plugin Certbot :

sudo certbot certonly --manual --preferred-challenges dns \
-d yourdomain.com -d "*.yourdomain.com"

Certbot vous demandera de créer un enregistrement TXT. Suivez les instructions.

Inconvénient du défi manuel : Vous devrez renouveler manuellement tous les 90 jours et mettre à jour l'enregistrement DNS TXT à chaque fois.

Option C : Certificat générique payant

Achetez auprès de fournisseurs comme :

  • Comodo/Sectigo (~70 $/an)
  • DigiCert (~400 $/an)
  • RapidSSL (~125 $/an)

Étape 3 : Configurer votre serveur web

Consultez les sections génériques dans :

Clé : utilisez ServerAlias *.yourdomain.com (Apache) ou server_name yourdomain.com *.yourdomain.com; (Nginx).


Étape 4 : Vérifier que ça fonctionne

# Tester la résolution DNS pour un sous-domaine
dig test.yourdomain.com

# Devrait retourner l'IP de votre serveur dans la section ANSWER

# Tester avec curl
curl -I https://anything.yourdomain.com
# Devrait retourner un 200 ou une redirection (pas "could not resolve host")

Étape 5 : Configurer FeedbackPulse

Mettez à jour votre fichier .env :

# Définir le domaine de session pour autoriser les cookies sur les sous-domaines
SESSION_DOMAIN=.yourdomain.com

# URL principale de l'application (sans sous-domaine)
APP_URL=https://yourdomain.com

Notez le point initial dans SESSION_DOMAIN=.yourdomain.com — cela permet aux cookies de session de fonctionner sur tous les sous-domaines.


Fonctionnement des sous-domaines dans FeedbackPulse

Lorsqu'une requête arrive à acme.yourdomain.com :

  1. Le middleware ResolveTenant extrait le sous-domaine (acme)
  2. Il recherche le locataire avec subdomain = 'acme'
  3. S'il est trouvé, le locataire est défini comme contexte actuel
  4. L'utilisateur voit la page de connexion ou le tableau de bord du locataire

Les locataires définissent leur sous-domaine lors de l'inscription. Vous pouvez également le définir manuellement dans le panneau d'administration.


Étapes suivantes