Cloudflare Setup | Pages + Access
Configuração Cloudflare passo a passo para as 3 wikis (internal / client / board). Pré-requisitos: conta Cloudflare ativa com domínio
anoukpartners.com, Google Workspace Anouk.
Visão geral
┌────────────────────────────────────────────────┐
│ Cloudflare conta Anouk │
│ │
│ ┌──────────────────────┐ │
│ │ Pages │ │
│ │ ├─ colliers-interno │ ← GitHub Action │
│ │ ├─ colliers-cliente │ │
│ │ └─ colliers-board │ │
│ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ │
│ │ Access (Zero Trust) │ │
│ │ ├─ Application (x3) │ SSO Google Workspace │
│ │ ├─ Policies │ por grupo/email │
│ │ └─ Identity providers│ │
│ └──────────────────────┘ │
│ │
│ ┌──────────────────────┐ │
│ │ DNS │ │
│ │ interno.colliers... │ CNAME → Pages │
│ │ cliente.colliers... │ CNAME → Pages │
│ │ board.colliers... │ CNAME → Pages │
│ └──────────────────────┘ │
└────────────────────────────────────────────────┘
1. Cloudflare Pages — 3 projetos
No dashboard Cloudflare → Workers & Pages → Create application → Pages → Direct upload (não conectar ao GitHub — o GitHub Action faz upload via API):
| Projeto | Production branch | Framework |
|---|---|---|
colliers-interno | main | None (static) |
colliers-cliente | main | None (static) |
colliers-board | main | None (static) |
Os 3 projetos recebem deploy via cloudflare/pages-action@v1 no workflow (já no workflows/wiki.yml).
Secrets no GitHub
No repo Anouk-Partners/colliers-costal-wiki → Settings → Secrets and variables → Actions:
CLOUDFLARE_API_TOKEN— criar emhttps://dash.cloudflare.com/profile/api-tokens- Template: “Edit Cloudflare Workers”
- Permissões mínimas:
Account > Cloudflare Pages: Edit
CLOUDFLARE_ACCOUNT_ID— visível no dashboard, canto direito
2. DNS (custom domains)
Em cada projeto Pages → Custom domains → Set up a custom domain:
| Projeto | Domain |
|---|---|
colliers-interno | interno.colliers.wiki.anoukpartners.com |
colliers-cliente | cliente.colliers.wiki.anoukpartners.com |
colliers-board | board.colliers.wiki.anoukpartners.com |
Cloudflare cria os CNAMEs automaticamente. Verificar em DNS → registros.
Alternativa mais simples (se wiki.anoukpartners.com ainda não existir):
colliers-interno.pages.dev(default Cloudflare) — sem custom domain, mais rápido pra testar- Custom domain depois, quando tudo funcionar
3. Cloudflare Access (Zero Trust)
Dashboard Cloudflare → Zero Trust → Access.
3.1. Configurar Google como Identity Provider
Settings → Authentication → Login methods → Add new → Google Workspace.
- App ID + Secret: criar em
console.cloud.google.com(OAuth 2.0 credential) - Admin email:
pedro.villa@anoukpartners.com - Claim email, groups
Testar login: https://anoukpartners.cloudflareaccess.com/cdn-cgi/access/login/test
3.2. Criar Applications (uma por wiki)
Access → Applications → Add an application → Self-hosted.
| Aplicação | Domain | Session duration |
|---|---|---|
| Colliers — Interno | interno.colliers.wiki.anoukpartners.com | 24h |
| Colliers — Cliente | cliente.colliers.wiki.anoukpartners.com | 12h |
| Colliers — Board | board.colliers.wiki.anoukpartners.com | 2h |
Identity provider: Google Workspace.
3.3. Policies por aplicação
Interno:
- Policy name:
Anouk staff - Action:
Allow - Include:
Emails ending in: @anoukpartners.com
Cliente:
- Policy name:
Team Costal + Anouk - Action:
Allow - Include:
Emails ending in: @anoukpartners.comOREmails in list: [lista-costal] - Criar grupo “lista-costal” em Access → Groups com os e-mails aprovados (Igor + designados). Atualizável via dashboard sem redeploy.
Board:
- Policy name:
Board Colliers + Anouk leadership - Action:
Allow - Include:
Emails in list: [lista-board]OREmails: pedro.villa@anoukpartners.com - Grupo “lista-board”: Ricardo, Bruno, Lucas, Pedro.
3.4. Logs e auditoria
Zero Trust → Logs → Access mostra tentativas de login (allowed / blocked). Revisar semanalmente.
4. Configuração adicional recomendada
- Web Analytics: Cloudflare → Analytics → Web Analytics → habilitar nos 3 sites. Zero-cost, sem cookies.
- Security headers: Pages → Settings → Functions → adicionar
_headers:/* X-Frame-Options: SAMEORIGIN Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: geolocation=(), microphone=(), camera=() - Cache rules: padrão Cloudflare já é suficiente para site estático.
5. Custos estimados
| Item | Custo |
|---|---|
| Cloudflare Pages (3 projetos) | Gratuito até 500 builds/mês |
| Cloudflare Access | Gratuito até 50 usuários |
| DNS + SSL | Gratuito (já no plano Cloudflare) |
| Web Analytics | Gratuito |
| Total esperado | R$ 0 / mês |
(se ultrapassar 50 usuários ou 500 builds, reavaliar — mas improvável nesta fase)
6. Checklist de validação
- 3 projetos Cloudflare Pages criados
- 3 custom domains apontando certos
- 3 Access applications com políticas distintas
- Login testado com e-mail Anouk (deve passar interno e cliente)
- Login testado com e-mail não-Anouk não-autorizado (deve bloquear)
- Login testado com Igor (deve passar cliente, bloquear interno)
- Logs Access aparecendo em Zero Trust dashboard
- Primeiro build GitHub Action verde nos 3 targets
Ver também
- deployment-guide
- sync-options
- publish-contract
- Docs Cloudflare Access:
https://developers.cloudflare.com/cloudflare-one/applications/configure-apps/self-hosted-apps/ - Docs Cloudflare Pages:
https://developers.cloudflare.com/pages/