SiebotCitizen Apps
Estudo técnico · MVP
Relatório de infraestrutura / Rede e SSL

Rede e SSL

DNS, IP, firewall, proxy reverso e certificado para o endereço obrigatório apps.siebot.cloud/aplicacao_separada_por_underline — incluindo o ajuste do tenant.

Módulo 04 de 07 · apps.siebot.cloudCitizen Apps / Pesquisa de infraestrutura
Siebot Infrastructure Lab

Um domínio. Múltiplas aplicações.

Entenda o caminho de uma requisição até apps.siebot.cloud/controle_visitas, passando por DNS, TLS, proxy e Docker.

apps.siebot.cloudTLS / 443Proxy reverso
CITIZEN APPSGOVERNANÇA PROXY HTTPSTLS • ROTAS CONTÊINER Acontrole_visitas CONTÊINER Boutra_app
Task 03 • Rede e acesso externo

apps.siebot.cloud/controle_visitas

Para cumprir o padrão requisitado, todos os acessos públicos passam por um mesmo subdomínio e o roteamento distingue as aplicações pelo prefixo de caminho com underscore.

DNSapps.siebot.cloud → IP público
→
Proxy HTTPSTLS + Host + rota do path
→
Docker privadocontrole_visitas:8080
→
Siebot API HubHTTPS + token autorizado

Exemplo de roteamento Nginx

server {
  listen 443 ssl;
  server_name apps.siebot.cloud;
  # Certificado e chaves configurados
  # TLS e renovação fora deste exemplo

  location = /controle_visitas {
    return 308 /controle_visitas/;
  }

  location /controle_visitas/ {
    proxy_set_header Host $host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_set_header X-Forwarded-Prefix /controle_visitas;
    proxy_pass http://controle_visitas:8080/;
  }
}

Exemplo parcial para compreensão. O / final em proxy_pass remove o prefixo antes do encaminhamento. Os nomes Docker só resolvem se o proxy estiver conectado à rede adequada. Exigem-se certificados, listener HTTP para desafio/redirect, timeouts, WebSocket e configuração de trusted proxies.

Checklist DNS, certificado e URL

  1. Definir origem: IP público estável (Hostinger/EC2) ou IP estático vinculado (Lightsail).
  2. DNS: publicar registro A de apps.siebot.cloud apontando ao servidor; aguardar propagação.
  3. Firewall: abrir somente TCP 80/443 para público. Restringir SSH a IPs de administração/VPN.
  4. TLS: emitir certificado válido para apps.siebot.cloud e testar renovação automática; desafio HTTP-01 utiliza porta 80.
  5. Proxy: mapear /controle_visitas/ à app correta; rotas desconhecidas → 404, app indisponível → resposta controlada.
  6. Base path: validar CSS/JS, cookies, redirects, sessões, upload, WebSocket e geração de URLs sob o prefixo.
  7. Segurança: recusar Host inesperado, ativar HTTPS redirect, limites de requisições e cabeçalhos apropriados.
Bloqueio arquitetural encontrado no ZIP

O tenant não pode ser extraído cegamente do subdomínio

O arquivo src/util/bootstrap.php deriva CITIZEN_APPS_TENANT da primeira parte de HTTP_HOST. Assim, o host siebert.siebot.cloud sugere tenant siebert, enquanto apps.siebot.cloud passaria a sugerir apps. Isso pode alterar consultas filtradas por tenant.

Correção necessária: utilizar tenant validado da sessão autenticada ou um mapeamento explícito confiável; não confiar no Host enviado pelo cliente para decidir acesso a dados corporativos.

Escolha de URL: por caminho, não por subdomínio

Padrão requeridoapps.siebot.cloud/controle_visitas

Um único hostname e certificado. A chave aceita underscore no path; aplicações devem suportar base path.

Alternativa futuracontrole-visitas.apps.siebot.cloud

Melhor separação de origem web, mas precisa slug DNS com hífen, DNS/certificados adicionais e mudança do padrão solicitado.

Conclusão da task 03: a arquitetura de domínio + HTTPS é tecnicamente viável em Hostinger VPS, Lightsail ou EC2; não foi validada no servidor real. O ajuste de tenant e o teste de compatibilidade do caminho em cada app são condições anteriores à entrada em produção.

Conferência de publicação

Hostname públicoapps.siebot.cloudRegistro DNS A para o IP da VPS
Prefixo da aplicação/controle_visitas/Path com underscore e barra final canônica
TLS / certificadoHTTPS :443ACME e renovação automática
O código original deriva o tenant de HTTP_HOST. A mudança para apps.siebot.cloud requer corrigir essa resolução antes da produção.