Deploy: Cloudflare Pages + Access
Este site é estático (Docusaurus). Publicamos no Cloudflare Pages e
protegemos com Cloudflare Access (Zero Trust), permitindo apenas o Google
Workspace @appolus.com.br. Nenhuma lógica de autenticação vive no site — o
Access fica na frente de tudo.
1. Cloudflare Pages
Conecte o repositório appolustecnologia/docs em Workers & Pages → Create →
Pages → Connect to Git e use:
| Campo | Valor |
|---|---|
| Framework preset | None (ou Docusaurus) |
| Build command | npm run build |
| Build output directory | build |
| Root directory | / |
| Variável de ambiente | NODE_VERSION = 20 |
O npm run build roda gen-api antes (gera a referência OpenAPI), então o deploy
não depende de arquivos gerados versionados.
Domínio
Em Custom domains, adicione docs.appolus.com.br. Como o DNS da Appolus está
na Cloudflare, o registro CNAME é criado automaticamente.
2. Cloudflare Access (login Google restrito)
Em Zero Trust → Access:
a) Identity provider (uma vez por conta)
Settings → Authentication → Login methods → Add new → Google (ou
Google Workspace). Configure o OAuth Client ID/Secret no Google Cloud Console
(tela de consentimento + credenciais OAuth). Para travar no domínio já no IdP,
use o provider Google Workspace informando o domínio appolus.com.br.
b) Application
Access → Applications → Add an application → Self-hosted:
| Campo | Valor |
|---|---|
| Application name | Appolus Docs |
| Session duration | ex.: 24h |
| Application domain | docs.appolus.com.br |
c) Policy
Adicione uma policy Allow com um destes seletores:
- Emails ending in →
@appolus.com.br— simples e robusto; ou - Login Methods = Google + Email domain =
appolus.com.br.
Quem não bater a regra recebe a tela de bloqueio do Access e nunca chega no site.
3. Fluxo final
Usuário → docs.appolus.com.br
→ Cloudflare Access (login Google, valida @appolus.com.br)
→ Cloudflare Pages (site estático)
Notas
- Custo: Cloudflare Access é gratuito até 50 usuários.
- Preview deployments: o Access protege o domínio de produção. Se quiser
proteger também as URLs
*.pages.devde preview, inclua-as no application domain (ou use uma policy adicional). - Sem segredos no site: chaves de API (ex.: a da Athena Query API) não ficam no Docusaurus — a doc só mostra o header a preencher.