Saltar al contenido principal

Configuración de DNS con Comodín

El DNS con comodín permite subdominios de inquilino como acme.yourdomain.com, techcorp.yourdomain.com, etc. Esto es opcional — FeedbackPulse funciona perfectamente con URLs basadas en slug (p. ej., /wall/acme-corp) sin DNS con comodín.


¿Necesito DNS con Comodín?

Escenario¿Se necesita DNS con comodín?
Los inquilinos usan páginas públicas basadas en slug (/wall/acme-corp)No
Los inquilinos quieren su propio subdominio (acme.yourdomain.com)
Los inquilinos traen su propio dominio personalizado (feedback.acme.com)No (usa CNAME en su lugar)

Qué Necesitas

  1. Un registro A DNS con comodín: *.yourdomain.com → IP de tu servidor
  2. Un certificado SSL con comodín: cubre *.yourdomain.com
  3. Configuración del servidor web: acepta todos los subdominios

Paso 1: Agregar el Registro DNS

Ve al panel de gestión DNS de tu registrador de dominio y agrega:

TipoNombre/HostValorTTL
A*123.456.789.0 (la IP de tu servidor)300

También necesitas el registro A normal para el dominio raíz:

TipoNombre/HostValor
A@123.456.789.0

Instrucciones por Proveedor

Cloudflare

  1. Inicia sesión en el Panel de Cloudflare
  2. Selecciona tu dominio
  3. Ve a DNSRecords
  4. Haz clic en Add Record
  5. Tipo: A | Nombre: * | IPv4: IP de tu servidor | Proxy: Solo DNS (nube gris)
  6. Haz clic en Save

Importante: Para subdominios con comodín, establece el proxy de Cloudflare en Solo DNS (nube gris), no en Proxied (nube naranja). El plan gratuito de Cloudflare no hace proxy de subdominios con comodín.

Namecheap

  1. Inicia sesión → Domain ListManage tu dominio
  2. Ve a Advanced DNS
  3. Haz clic en Add New Record
  4. Tipo: A Record | Host: * | Valor: IP de tu servidor | TTL: Automatic
  5. Guarda

GoDaddy

  1. Inicia sesión → My ProductsDNS para tu dominio
  2. Haz clic en Add Record
  3. Tipo: A | Nombre: * | Valor: IP de tu servidor | TTL: 600
  4. Guarda

Google Domains / Google Cloud DNS

  1. Ve a Google Domains
  2. Selecciona tu dominio → DNS
  3. En Custom Records, agrega:
  4. Host: * | Tipo: A | Datos: IP de tu servidor
  5. Guarda

AWS Route 53

  1. Ve a Route 53Hosted Zones → selecciona tu dominio
  2. Haz clic en Create Record
  3. Nombre del registro: * | Tipo de registro: A
  4. Valor: IP de tu servidor | TTL: 300
  5. Haz clic en Create Records

DigitalOcean DNS

  1. Ve a NetworkingDomains
  2. Selecciona tu dominio
  3. Agrega: Tipo A | Hostname * | Will direct to: IP de tu servidor | TTL: 300

Hetzner DNS

  1. Ve a la Consola DNS de Hetzner
  2. Selecciona tu zona
  3. Agrega registro: Tipo A | Nombre * | Valor: IP de tu servidor

Paso 2: Obtener un Certificado SSL con Comodín

Opción A: Let's Encrypt con Desafío DNS (Gratuito)

Los certificados con comodín de Let's Encrypt requieren el desafío DNS-01 (no HTTP):

# Instalar Certbot con plugin DNS para tu proveedor
# Ejemplo: Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Crear archivo de credenciales de Cloudflare
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

Agrega tu token de API de Cloudflare:

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

# Obtener certificado con comodín
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

Plugins DNS para Otros Proveedores

ProveedorPlugin de CertbotInstalación
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

Opción B: Desafío DNS Manual

Si tu proveedor DNS no tiene un plugin de Certbot:

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

Certbot te pedirá que crees un registro TXT. Sigue las instrucciones.

Inconveniente del desafío manual: Necesitarás renovar manualmente cada 90 días y actualizar el registro TXT de DNS cada vez.

Opción C: Certificado con Comodín de Pago

Compra a proveedores como:

  • Comodo/Sectigo (~$70/año)
  • DigiCert (~$400/año)
  • RapidSSL (~$125/año)

Paso 3: Configurar Tu Servidor Web

Consulta las secciones de comodín en:

Clave: usa ServerAlias *.yourdomain.com (Apache) o server_name yourdomain.com *.yourdomain.com; (Nginx).


Paso 4: Verificar que Funciona

# Probar resolución DNS para un subdominio
dig test.yourdomain.com

# Debe devolver la IP de tu servidor en la sección ANSWER

# Probar con curl
curl -I https://anything.yourdomain.com
# Debe devolver un 200 o redirección (no "could not resolve host")

Paso 5: Configurar FeedbackPulse

Actualiza tu archivo .env:

# Establecer el dominio de sesión para permitir cookies entre subdominios
SESSION_DOMAIN=.yourdomain.com

# La URL principal de tu app (sin subdominio)
APP_URL=https://yourdomain.com

Nota el punto inicial en SESSION_DOMAIN=.yourdomain.com — esto permite que las cookies de sesión funcionen en todos los subdominios.


Cómo Funcionan los Subdominios en FeedbackPulse

Cuando llega una solicitud a acme.yourdomain.com:

  1. El middleware ResolveTenant extrae el subdominio (acme)
  2. Busca el inquilino con subdomain = 'acme'
  3. Si se encuentra, el inquilino se establece como contexto actual
  4. El usuario ve la página de inicio de sesión o el panel del inquilino

Los inquilinos establecen su subdominio durante el registro. También puedes establecerlo manualmente en el panel de administración.


Próximos Pasos