Skip to content

Inventário de hostnames e domínios

Inventário gerado a partir das rotas Traefik (config/traefik/routes/) e configs de apps (apps/). Atualizar este doc sempre que adicionar/remover hostname público.

Domínios autoritativos

  • colabh.org — domínio principal (apps de produção)
  • cppsunesp.org — domínio CPPS UNESP (apps acadêmicos)
  • labriunesp.org — domínio Labri (subset de apps)
  • lab-ippriunesp.org — domínio do lab IPPRI (subset de apps)

DNS authoritative: Cloudflare.

Cert provider: Let’s Encrypt via DNS-01 challenge (Cloudflare API token).

Insight crítico

Failover DNS via Cloudflare Tunnel (ADR-008) não substitui replicação de estado. Pra lms.colabh.org (Tutor) falhar pra SP de fato, Tutor precisa estar rodando e com dados atualizados em ambos os sites — replicação cross-site de MySQL/Mongo. Hoje, Tutor só roda em Franca.

Isso significa que o inventário abaixo deve ser lido em 2 dimensões:

  1. Tier de criticidade (impacto se cair)
  2. Failover-readiness (a infra atual permite failover real?)

App stateful sem replicação cross-site não pode ter failover real, mesmo com Tunnel. Tunnel hoje entrega:

  • Single-origin protegido com WAF + DDoS Cloudflare
  • Visibilidade L7 do tráfego
  • Possibilidade de failover quando o serviço tiver cópia funcional no outro site

Tier 1 — Usuário externo / pesquisa-ensino (alto impacto)

HostnameAppSite atualStateful?Failover possível agora?Prioridade Tunnel
lms.colabh.orgTutor/Open edX (LMS)Franca✅ MySQL+Mongo❌ sem replicação DB cross-siteApós replicação
cms.lms.colabh.orgTutor CMSFranca❌ idemApós replicação
apps.lms.colabh.orgTutor sub-serviceFrancaApós replicação
discovery.lms.colabh.orgTutor DiscoveryFrancaApós replicação
notes.lms.colabh.orgTutor NotesFrancaApós replicação
meilisearch.lms.colabh.orgTutor MeilisearchFranca✅ índiceApós replicação
repositorio.colabh.orgInvenioFranca✅ Postgres+ESApós replicação
redalint.colabh.orgInvenio (outra instância)FrancaApós replicação
ojs.cppsunesp.orgOJSFranca✅ MySQLApós replicação
publicacoes.lab-ippriunesp.orgOJSFrancaApós replicação
dashboard.cppsunesp.orgCPPS DashboardFranca⚠️ depende impl❓ avaliarAvaliar
superset.cppsunesp.orgSupersetFranca✅ DB de configsApós replicação
superset.labriunesp.orgSupersetFrancaApós replicação
superset.lab-ippriunesp.orgSupersetFrancaApós replicação

Tier 2 — Admin / operação

HostnameAppSite atualStateful?Failover possível agora?Prioridade Tunnel
argocd.colabh.orgArgoCD UIFranca⚠️ estado em git🟡 sim quando ArgoCD SP subir (ADR-001)Alta — POC ideal
authentik.colabh.orgAuthentik IdPFranca✅ Postgres❌ SSO crítico, precisa HAApós Authentik HA
sso.colabh.orgAuthentik (alias OIDC)Franca✅ idem❌ idemApós Authentik HA
o2.colabh.orgOpenObserveFranca✅ logs storageApós replicação ou ingestor por site
rancher.colabh.orgRancher UIFranca✅ cluster mgmt DBAvaliar

Tier 3 — Operacional interno (admin-only)

HostnameAppSite atualFailover real necessário?Prioridade Tunnel
traefik.cppsunesp.orgTraefik dashboardFranca🟡 baixaMédia (sem dado, fácil)
traefik.labriunesp.orgTraefik dashboardFranca🟡 baixaMédia
traefik.lab-ippriunesp.orgTraefik dashboardFranca🟡 baixaMédia
airflow.cppsunesp.orgAirflow UIFranca🟡 baixaApós replicação
airflow.labriunesp.orgAirflow UIFranca🟡 baixaApós replicação
airflow.lab-ippriunesp.orgAirflow UIFranca🟡 baixaApós replicação

Tier 4 — Não-HTTP / replicação própria

HostnameAppNotas
mongo-0.colabh.org, mongo-1.colabh.org, mongo-2.colabh.orgMongoDB clusterTCP, não-HTTP. Tunnel suporta TCP mas com config diferente. Failover de DB é replicação MongoDB nativa, não DNS.
s3.colabh.orgSeaweedFS S3Storage com replicação própria. Decisão de failover separada (datacenter replication SeaweedFS).

Sequência de adoção de Tunnel

OrdemHostnamePré-reqFase do roadmap
1argocd.colabh.orgArgoCD SP em produçãoFase 6 (POC do PR #13 do caminho crítico)
2traefik.*.org (3 dashboards)Trivial — só admin, sem dadoFase 3
3o2.colabh.orgOpenObserve com ingestor por site OU replicaçãoFase 8
4dashboard.cppsunesp.orgAvaliar se stateless de verdadeFase 9
5rancher.colabh.orgRancher HA OU instância por siteFase 9
6authentik.colabh.org / sso.colabh.orgAuthentik HA (cluster Postgres + replicação)Fase 9
7+Tutor / Invenio / OJS / Superset / AirflowBloqueado por replicação de DB cross-sitePós-Fase 9

Hostnames novos — checklist

Antes de adicionar hostname novo, verificar:

  • Domínio: colabh.org, cppsunesp.org, labriunesp.org ou lab-ippriunesp.org?
  • Adicionado record DNS em Cloudflare (proxied? ou A record direto?)
  • Rota Traefik em config/traefik/routes/<app>.yaml
  • Cert via cert-manager + ClusterIssuer letsencrypt-cloudflare OU via Traefik ACME
  • App é stateful? Quais dados? Replicação cross-site existe?
  • Tier de criticidade definido (1/2/3)
  • Item adicionado neste inventário
  • Se Tier 1: failover plan documentado (Tunnel? DNS round-robin? Cloudflare LB?)

Runbook curto: Cloudflare offline

Se Cloudflare cair globalmente (raro mas aconteceu), os Tunnels não resolvem. Plano B manual:

  1. Acessar console DNS via API de outro provider (ex: Google Domains, NameCheap) — não temos hoje
  2. Atualizar A records pra apontar diretamente pro IP público do Traefik
  3. Aguardar TTL expirar nos resolvers
  4. Limitação: hoje não temos DNS secundário configurado — adicionar como item futuro