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:
- Tier de criticidade (impacto se cair)
- 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)
| Hostname | App | Site atual | Stateful? | Failover possível agora? | Prioridade Tunnel |
|---|---|---|---|---|---|
lms.colabh.org | Tutor/Open edX (LMS) | Franca | ✅ MySQL+Mongo | ❌ sem replicação DB cross-site | Após replicação |
cms.lms.colabh.org | Tutor CMS | Franca | ✅ | ❌ idem | Após replicação |
apps.lms.colabh.org | Tutor sub-service | Franca | ✅ | ❌ | Após replicação |
discovery.lms.colabh.org | Tutor Discovery | Franca | ✅ | ❌ | Após replicação |
notes.lms.colabh.org | Tutor Notes | Franca | ✅ | ❌ | Após replicação |
meilisearch.lms.colabh.org | Tutor Meilisearch | Franca | ✅ índice | ❌ | Após replicação |
repositorio.colabh.org | Invenio | Franca | ✅ Postgres+ES | ❌ | Após replicação |
redalint.colabh.org | Invenio (outra instância) | Franca | ✅ | ❌ | Após replicação |
ojs.cppsunesp.org | OJS | Franca | ✅ MySQL | ❌ | Após replicação |
publicacoes.lab-ippriunesp.org | OJS | Franca | ✅ | ❌ | Após replicação |
dashboard.cppsunesp.org | CPPS Dashboard | Franca | ⚠️ depende impl | ❓ avaliar | Avaliar |
superset.cppsunesp.org | Superset | Franca | ✅ DB de configs | ❌ | Após replicação |
superset.labriunesp.org | Superset | Franca | ✅ | ❌ | Após replicação |
superset.lab-ippriunesp.org | Superset | Franca | ✅ | ❌ | Após replicação |
Tier 2 — Admin / operação
| Hostname | App | Site atual | Stateful? | Failover possível agora? | Prioridade Tunnel |
|---|---|---|---|---|---|
argocd.colabh.org | ArgoCD UI | Franca | ⚠️ estado em git | 🟡 sim quando ArgoCD SP subir (ADR-001) | Alta — POC ideal |
authentik.colabh.org | Authentik IdP | Franca | ✅ Postgres | ❌ SSO crítico, precisa HA | Após Authentik HA |
sso.colabh.org | Authentik (alias OIDC) | Franca | ✅ idem | ❌ idem | Após Authentik HA |
o2.colabh.org | OpenObserve | Franca | ✅ logs storage | ❌ | Após replicação ou ingestor por site |
rancher.colabh.org | Rancher UI | Franca | ✅ cluster mgmt DB | ❌ | Avaliar |
Tier 3 — Operacional interno (admin-only)
| Hostname | App | Site atual | Failover real necessário? | Prioridade Tunnel |
|---|---|---|---|---|
traefik.cppsunesp.org | Traefik dashboard | Franca | 🟡 baixa | Média (sem dado, fácil) |
traefik.labriunesp.org | Traefik dashboard | Franca | 🟡 baixa | Média |
traefik.lab-ippriunesp.org | Traefik dashboard | Franca | 🟡 baixa | Média |
airflow.cppsunesp.org | Airflow UI | Franca | 🟡 baixa | Após replicação |
airflow.labriunesp.org | Airflow UI | Franca | 🟡 baixa | Após replicação |
airflow.lab-ippriunesp.org | Airflow UI | Franca | 🟡 baixa | Após replicação |
Tier 4 — Não-HTTP / replicação própria
| Hostname | App | Notas |
|---|---|---|
mongo-0.colabh.org, mongo-1.colabh.org, mongo-2.colabh.org | MongoDB cluster | TCP, não-HTTP. Tunnel suporta TCP mas com config diferente. Failover de DB é replicação MongoDB nativa, não DNS. |
s3.colabh.org | SeaweedFS S3 | Storage com replicação própria. Decisão de failover separada (datacenter replication SeaweedFS). |
Sequência de adoção de Tunnel
| Ordem | Hostname | Pré-req | Fase do roadmap |
|---|---|---|---|
| 1 | argocd.colabh.org | ArgoCD SP em produção | Fase 6 (POC do PR #13 do caminho crítico) |
| 2 | traefik.*.org (3 dashboards) | Trivial — só admin, sem dado | Fase 3 |
| 3 | o2.colabh.org | OpenObserve com ingestor por site OU replicação | Fase 8 |
| 4 | dashboard.cppsunesp.org | Avaliar se stateless de verdade | Fase 9 |
| 5 | rancher.colabh.org | Rancher HA OU instância por site | Fase 9 |
| 6 | authentik.colabh.org / sso.colabh.org | Authentik HA (cluster Postgres + replicação) | Fase 9 |
| 7+ | Tutor / Invenio / OJS / Superset / Airflow | Bloqueado por replicação de DB cross-site | Pós-Fase 9 |
Hostnames novos — checklist
Antes de adicionar hostname novo, verificar:
- Domínio:
colabh.org,cppsunesp.org,labriunesp.orgoulab-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-cloudflareOU 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:
- Acessar console DNS via API de outro provider (ex: Google Domains, NameCheap) — não temos hoje
- Atualizar A records pra apontar diretamente pro IP público do Traefik
- Aguardar TTL expirar nos resolvers
- Limitação: hoje não temos DNS secundário configurado — adicionar como item futuro