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ário | DNS 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
- Um registro DNS wildcard tipo A:
*.yourdomain.com→ IP do seu servidor - Um certificado SSL wildcard: cobre
*.yourdomain.com - 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:
| Tipo | Nome/Host | Valor | TTL |
|---|---|---|---|
| A | * | 123.456.789.0 (IP do seu servidor) | 300 |
Você também precisa do registro A regular para o domínio raiz:
Tipo Nome/Host Valor A @123.456.789.0
Instruções por Provedor
Cloudflare
- Faça login no Cloudflare Dashboard
- Selecione seu domínio
- Vá em DNS → Records
- Clique em Add Record
- Tipo:
A| Nome:*| IPv4: IP do seu servidor | Proxy: Somente DNS (nuvem cinza) - 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
- Faça login → Domain List → Manage seu domínio
- Vá em Advanced DNS
- Clique em Add New Record
- Tipo:
A Record| Host:*| Valor: IP do seu servidor | TTL: Automatic - Salve
GoDaddy
- Faça login → My Products → DNS do seu domínio
- Clique em Add Record
- Tipo:
A| Nome:*| Valor: IP do seu servidor | TTL: 600 - Salve
Google Domains / Google Cloud DNS
- Acesse Google Domains
- Selecione seu domínio → DNS
- Em Custom Records, adicione:
- Host:
*| Tipo:A| Data: IP do seu servidor - Salve
AWS Route 53
- Vá em Route 53 → Hosted Zones → selecione seu domínio
- Clique em Create Record
- Nome do registro:
*| Tipo de registro:A - Valor: IP do seu servidor | TTL:
300 - Clique em Create Records
DigitalOcean DNS
- Vá em Networking → Domains
- Selecione seu domínio
- Adicione: Tipo
A| Hostname*| Direcionará para: IP do seu servidor | TTL:300
Hetzner DNS
- Vá para o Console DNS da Hetzner
- Selecione sua zona
- 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
| Provedor | Plugin Certbot | Instalação |
|---|---|---|
| Cloudflare | python3-certbot-dns-cloudflare | sudo apt install python3-certbot-dns-cloudflare |
| Route 53 | python3-certbot-dns-route53 | sudo apt install python3-certbot-dns-route53 |
| DigitalOcean | python3-certbot-dns-digitalocean | sudo apt install python3-certbot-dns-digitalocean |
| Google Cloud | python3-certbot-dns-google | sudo 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:
- Configuração do Apache — procure a seção "Suporte a Subdomínios Wildcard"
- Configuração do Nginx — procure a seção "Suporte a Subdomínios Wildcard"
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:
- O middleware
ResolveTenantextrai o subdomínio (acme) - Ele busca o tenant com
subdomain = 'acme' - Se encontrado, o tenant é definido como contexto atual
- 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
- Certificados SSL — mais detalhes de configuração SSL
- Domínios Personalizados — deixe os tenants usarem seus próprios domínios