Private Cloudflare Pages
Status: preferred path for the private service dashboard when a dedicated Pages project is protected by Cloudflare Access.
Current Decision
Use Cloudflare Pages instead of GitHub Pages for the private service dashboard if, and only if, the private dashboard has its own Pages project and the whole dashboard host is protected by Cloudflare Access before private registry data is bundled.
Do not deploy the private registry into the existing public Flow Studio Pages project. The dashboard is a static Docusaurus build, so route-only protection on a shared public project is not enough: private registry data can be bundled into JavaScript assets.
Sources:
Guarded Workflow
The repository includes a guarded workflow:
- private-cloudflare-pages workflow
- Cloudflare Workers & Pages dashboard
- Cloudflare Zero Trust dashboard
The workflow refuses to bundle or deploy the private registry unless all of these are true:
- the workflow is running from
main - Cloudflare deploy credentials are configured in GitHub Actions
- Cloudflare Access read credentials can list Access applications
ENABLE_PRIVATE_CLOUDFLARE_PAGES=truePRIVATE_DASHBOARD_CLOUDFLARE_PAGES_PROJECTnames a dedicated private dashboard Pages projectPRIVATE_DASHBOARD_CLOUDFLARE_ACCESS_DOMAINnames the Access-protected dashboard host- the private dashboard project is not the public Flow Studio Pages project
- the Access host is attached to the private Pages project
- Cloudflare Access protects the selected host, the project
pages.devhost, and the wildcard*.pages.devdeployment aliases for the private Pages project
This preserves the same safety goal as the GitHub Pages guard: private registry data is not bundled until identity-aware hosting is already in place.
Latest Deployment Evidence
On May 28, 2026, the guarded private-cloudflare-pages workflow passed from main at 832cdddb68aebd90fc5ce263df4803537a638d7e:
- workflow run: https://github.com/Mobilis-Mobile/00-MobilisArchitectureInfo/actions/runs/26556337731
- protected dashboard: https://mobilis-private-service-dashboard.pages.dev/private/third-party-services/
- preflight confirmed Cloudflare Access protects the dashboard host, the project
pages.devhost, and wildcard deployment aliases before private registry data is bundled - unauthenticated route check returned HTTP 302 to Cloudflare Access and did not expose private dashboard spreadsheet markup
How To Enable
- Create a separate Cloudflare Pages project for the private service dashboard.
- Attach the intended dashboard hostname to that Pages project.
- Create Cloudflare Access self-hosted application coverage for the dashboard hostname, the project
pages.devhostname, and*.PROJECT.pages.devdeployment aliases. - Confirm the GitHub Actions Cloudflare token can deploy Pages and read Access application metadata.
- The deploy-token repository secret is required for Pages deployment.
- A separate Access-read repository secret is optional. Use it when Access reads should use a separate least-privilege token.
- If the separate Access-read secret is absent, the workflow uses the deploy token for Access reads too.
- The Access read token needs Cloudflare account permission
Access: Apps and Policies Read.
- Add the no-secret repository variables named above.
- Run the private-cloudflare-pages workflow from
main.
Public Build Safety
The normal public Cloudflare Pages build must continue to exclude the private registry.
Public builds use a locked placeholder for /private/third-party-services and must pass:
cd docs-portal
DEPLOY_TARGET=cloudflare-pages MOBILIS_PRIVATE_DASHBOARD_ENABLED=false npm run build
npm run build:astro
npm run stage:astro-deploy
npm run test:third-party-services-public-build
npm run test:project-status-public-build
npm run test:flow-studio-access-public-build
Private Cloudflare Pages builds can include the registry and must pass:
cd docs-portal
DEPLOY_TARGET=cloudflare-private-pages MOBILIS_PRIVATE_DASHBOARD_ENABLED=true npm run build
npm run build:astro
npm run stage:astro-deploy
npm run test:flow-studio-access-private-build
npm run test:third-party-services-browser