Zum Hauptinhalt springen

Wildcard-DNS-Setup

Wildcard-DNS ermöglicht Mandanten-Subdomains wie acme.yourdomain.com, techcorp.yourdomain.com usw. Dies ist optional — FeedbackPulse funktioniert auch gut mit Slug-basierten URLs (z. B. /wall/acme-corp) ohne Wildcard-DNS.


Brauche ich Wildcard-DNS?

SzenarioWildcard-DNS erforderlich?
Mandanten nutzen Slug-basierte öffentliche Seiten (/wall/acme-corp)Nein
Mandanten möchten eine eigene Subdomain (acme.yourdomain.com)Ja
Mandanten bringen ihre eigene Domain (feedback.acme.com)Nein (stattdessen CNAME verwenden)

Was Sie benötigen

  1. Ein Wildcard-DNS-A-Eintrag: *.yourdomain.com → Ihre Server-IP
  2. Ein Wildcard-SSL-Zertifikat: deckt *.yourdomain.com ab
  3. Webserver-Konfiguration: akzeptiert alle Subdomains

Schritt 1: DNS-Eintrag hinzufügen

Gehen Sie in das DNS-Verwaltungspanel Ihres Domain-Registrars und fügen Sie hinzu:

TypName/HostWertTTL
A*123.456.789.0 (Ihre Server-IP)300

Sie benötigen außerdem den regulären A-Eintrag für die Root-Domain:

TypName/HostWert
A@123.456.789.0

Anbieter-spezifische Anleitungen

Cloudflare

  1. Bei Cloudflare Dashboard anmelden
  2. Ihre Domain auswählen
  3. Zu DNSEinträge gehen
  4. Auf Eintrag hinzufügen klicken
  5. Typ: A | Name: * | IPv4: Ihre Server-IP | Proxy: Nur DNS (graue Wolke)
  6. Auf Speichern klicken

Wichtig: Für Wildcard-Subdomains den Cloudflare-Proxy auf Nur DNS setzen (graue Wolke), nicht auf Proxied (orangefarbene Wolke). Cloudflares kostenloses Abo proxyt keine Wildcard-Subdomains.

Namecheap

  1. Anmelden → Domain-Liste → Ihre Domain verwalten
  2. Zu Erweitertes DNS gehen
  3. Auf Neuen Eintrag hinzufügen klicken
  4. Typ: A-Eintrag | Host: * | Wert: Ihre Server-IP | TTL: Automatisch
  5. Speichern

GoDaddy

  1. Anmelden → Meine ProdukteDNS für Ihre Domain
  2. Auf Eintrag hinzufügen klicken
  3. Typ: A | Name: * | Wert: Ihre Server-IP | TTL: 600
  4. Speichern

Google Domains / Google Cloud DNS

  1. Zu Google Domains gehen
  2. Ihre Domain auswählen → DNS
  3. Unter Benutzerdefinierte Einträge hinzufügen:
  4. Host: * | Typ: A | Daten: Ihre Server-IP
  5. Speichern

AWS Route 53

  1. Zu Route 53Hosted Zones → Ihre Domain auswählen
  2. Auf Eintrag erstellen klicken
  3. Eintragsname: * | Eintragstyp: A
  4. Wert: Ihre Server-IP | TTL: 300
  5. Auf Einträge erstellen klicken

DigitalOcean DNS

  1. Zu NetworkingDomains gehen
  2. Ihre Domain auswählen
  3. Hinzufügen: Typ A | Hostname * | Zeigt auf: Ihre Server-IP | TTL: 300

Hetzner DNS

  1. Zur Hetzner DNS Console gehen
  2. Ihre Zone auswählen
  3. Eintrag hinzufügen: Typ A | Name * | Wert: Ihre Server-IP

Schritt 2: Wildcard-SSL-Zertifikat beziehen

Option A: Let's Encrypt mit DNS-Challenge (kostenlos)

Wildcard-Zertifikate von Let's Encrypt erfordern eine DNS-01-Challenge (nicht HTTP):

# Certbot mit DNS-Plugin für Ihren Anbieter installieren
# Beispiel: Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Cloudflare-Anmeldedatei erstellen
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

Ihren Cloudflare-API-Token hinzufügen:

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

# Wildcard-Zertifikat beziehen
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

DNS-Plugins für andere Anbieter

AnbieterCertbot-PluginInstallation
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: Manuelle DNS-Challenge

Wenn Ihr DNS-Anbieter kein Certbot-Plugin hat:

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

Certbot fordert Sie auf, einen TXT-Eintrag zu erstellen. Folgen Sie den Anweisungen.

Einschränkung bei manueller Challenge: Sie müssen alle 90 Tage manuell erneuern und den DNS-TXT-Eintrag jedes Mal aktualisieren.

Option C: Kostenpflichtiges Wildcard-Zertifikat

Kaufen Sie bei Anbietern wie:

  • Comodo/Sectigo (ca. 70 $/Jahr)
  • DigiCert (ca. 400 $/Jahr)
  • RapidSSL (ca. 125 $/Jahr)

Schritt 3: Webserver konfigurieren

Lesen Sie die Wildcard-Abschnitte in:

Wichtig: ServerAlias *.yourdomain.com (Apache) oder server_name yourdomain.com *.yourdomain.com; (Nginx) verwenden.


Schritt 4: Funktionalität prüfen

# DNS-Auflösung für eine Subdomain testen
dig test.yourdomain.com

# Sollte Ihre Server-IP im ANSWER-Abschnitt zurückgeben

# Mit curl testen
curl -I https://anything.yourdomain.com
# Sollte 200 oder Weiterleitung zurückgeben (nicht „could not resolve host")

Schritt 5: FeedbackPulse konfigurieren

Ihre .env-Datei aktualisieren:

# Session-Domain setzen, um Cookies über Subdomains hinweg zu erlauben
SESSION_DOMAIN=.yourdomain.com

# Ihre Haupt-App-URL (ohne Subdomain)
APP_URL=https://yourdomain.com

Beachten Sie den führenden Punkt in SESSION_DOMAIN=.yourdomain.com — dieser erlaubt es Session-Cookies, über alle Subdomains hinweg zu funktionieren.


Wie Subdomains in FeedbackPulse funktionieren

Wenn eine Anfrage bei acme.yourdomain.com eingeht:

  1. Die ResolveTenant-Middleware extrahiert die Subdomain (acme)
  2. Sie sucht den Mandanten mit subdomain = 'acme'
  3. Wenn gefunden, wird der Mandant als aktueller Kontext gesetzt
  4. Der Benutzer sieht die Login-Seite oder das Dashboard des Mandanten

Mandanten legen ihre Subdomain bei der Registrierung fest. Sie können sie auch manuell im Admin-Panel setzen.


Nächste Schritte