Pular para o conteúdo principal

Configuração de DNS Wildcard

O DNS wildcard permite subdomínios de tenant como acme.yourdomain.com, techcorp.yourdomain.com, etc. Isso é opcional — o FeedbackPulse funciona perfeitamente com URLs baseadas em slug (ex.: /wall/acme-corp) sem DNS wildcard.


Preciso de DNS Wildcard?

CenárioDNS wildcard necessário?
Tenants usam páginas públicas baseadas em slug (/wall/acme-corp)Não
Tenants querem seu próprio subdomínio (acme.yourdomain.com)Sim
Tenants trazem seu próprio domínio personalizado (feedback.acme.com)Não (use CNAME)

O que Você Precisa

  1. Um registro DNS wildcard tipo A: *.yourdomain.com → IP do seu servidor
  2. Um certificado SSL wildcard: cobre *.yourdomain.com
  3. Configuração do servidor web: aceita todos os subdomínios

Passo 1: Adicionar o Registro DNS

Vá ao painel de gerenciamento de DNS do seu registrador de domínio e adicione:

TipoNome/HostValorTTL
A*123.456.789.0 (IP do seu servidor)300

Você também precisa do registro A regular para o domínio raiz:

TipoNome/HostValor
A@123.456.789.0

Instruções por Provedor

Cloudflare

  1. Faça login no Cloudflare Dashboard
  2. Selecione seu domínio
  3. Vá em DNSRecords
  4. Clique em Add Record
  5. Tipo: A | Nome: * | IPv4: IP do seu servidor | Proxy: Somente DNS (nuvem cinza)
  6. Clique em Save

Importante: Para subdomínios wildcard, defina o proxy do Cloudflare como Somente DNS (nuvem cinza), não Proxied (nuvem laranja). O plano gratuito do Cloudflare não faz proxy de subdomínios wildcard.

Namecheap

  1. Faça login → Domain ListManage seu domínio
  2. Vá em Advanced DNS
  3. Clique em Add New Record
  4. Tipo: A Record | Host: * | Valor: IP do seu servidor | TTL: Automatic
  5. Salve

GoDaddy

  1. Faça login → My ProductsDNS do seu domínio
  2. Clique em Add Record
  3. Tipo: A | Nome: * | Valor: IP do seu servidor | TTL: 600
  4. Salve

Google Domains / Google Cloud DNS

  1. Acesse Google Domains
  2. Selecione seu domínio → DNS
  3. Em Custom Records, adicione:
  4. Host: * | Tipo: A | Data: IP do seu servidor
  5. Salve

AWS Route 53

  1. Vá em Route 53Hosted Zones → selecione seu domínio
  2. Clique em Create Record
  3. Nome do registro: * | Tipo de registro: A
  4. Valor: IP do seu servidor | TTL: 300
  5. Clique em Create Records

DigitalOcean DNS

  1. Vá em NetworkingDomains
  2. Selecione seu domínio
  3. Adicione: Tipo A | Hostname * | Direcionará para: IP do seu servidor | TTL: 300

Hetzner DNS

  1. Vá para o Console DNS da Hetzner
  2. Selecione sua zona
  3. Adicione registro: Tipo A | Nome * | Valor: IP do seu servidor

Passo 2: Obter um Certificado SSL Wildcard

Opção A: Let's Encrypt com Desafio DNS (Gratuito)

Certificados wildcard do Let's Encrypt requerem DNS-01 challenge (não HTTP):

# Instalar o Certbot com plugin DNS para seu provedor
# Exemplo: Cloudflare
sudo apt install certbot python3-certbot-dns-cloudflare

# Criar arquivo de credenciais do Cloudflare
sudo mkdir -p /etc/letsencrypt
sudo nano /etc/letsencrypt/cloudflare.ini

Adicione seu token de API do Cloudflare:

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

# Obter certificado wildcard
sudo certbot certonly \
--dns-cloudflare \
--dns-cloudflare-credentials /etc/letsencrypt/cloudflare.ini \
-d yourdomain.com \
-d "*.yourdomain.com"

Plugins DNS para Outros Provedores

ProvedorPlugin CertbotInstalação
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

Opção B: Desafio DNS Manual

Se seu provedor DNS não tem um plugin Certbot:

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

O Certbot pedirá para você criar um registro TXT. Siga as instruções.

Ressalva do desafio manual: Você precisará renovar manualmente a cada 90 dias e atualizar o registro TXT de DNS a cada vez.

Opção C: Certificado Wildcard Pago

Compre de provedores como:

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

Passo 3: Configurar Seu Servidor Web

Consulte as seções de wildcard em:

Ponto-chave: use ServerAlias *.yourdomain.com (Apache) ou server_name yourdomain.com *.yourdomain.com; (Nginx).


Passo 4: Verificar o Funcionamento

# Testar resolução DNS de um subdomínio
dig test.yourdomain.com

# Deve retornar o IP do seu servidor na seção ANSWER

# Testar com curl
curl -I https://anything.yourdomain.com
# Deve retornar 200 ou redirecionamento (não "could not resolve host")

Passo 5: Configurar o FeedbackPulse

Atualize seu arquivo .env:

# Definir o domínio de sessão para permitir cookies entre subdomínios
SESSION_DOMAIN=.yourdomain.com

# URL principal do app (sem subdomínio)
APP_URL=https://yourdomain.com

Observe o ponto inicial em SESSION_DOMAIN=.yourdomain.com — isso permite que os cookies de sessão funcionem em todos os subdomínios.


Como os Subdomínios Funcionam no FeedbackPulse

Quando uma requisição chega em acme.yourdomain.com:

  1. O middleware ResolveTenant extrai o subdomínio (acme)
  2. Ele busca o tenant com subdomain = 'acme'
  3. Se encontrado, o tenant é definido como contexto atual
  4. O usuário vê a página de login ou o painel do tenant

Os tenants definem seu subdomínio durante o registro. Você também pode defini-lo manualmente no painel admin.


Próximos Passos