folio¶
A self-hosted, private GitHub Pages for your personal repositories.
Folio lets you build documentation from any private repo with GitHub Actions, publish to Google Cloud Storage, and serve it through an authenticated Go server on Cloud Run that scales to zero.
Key Features¶
- Password-protected — Simple login gate with signed cookies
- GCS-backed — Static sites stored in Google Cloud Storage
- Multi-repo — Serve docs from many repos under one domain
- Near-zero cost — Cloud Run scales to zero, GCS stores a few megabytes
- Container image — Pre-built at
ghcr.io/charliek/folio, deploy anywhere - Reusable workflows — GitHub Actions workflow builds and publishes mkdocs sites
How It Works¶
Private repos folio
┌──────────┐ ┌──────────┐ ┌──────────────────────┐
│ repo-a │ │ repo-b │ │ GCS Bucket │
│ (mkdocs) │ │ (mkdocs) │ │ /_root/... │
│ │ │ │ │ /repos/repo-a/... │
│ publish ──┼──┼── publish ─┼──►│ /repos/repo-b/... │
└───────────┘ └───────────┘ └──────────┬───────────┘
│
▼
┌──────────────────────┐
│ folio server │
│ (Cloud Run) │
│ docs.example.com │
└──────────────────────┘
- Each repo's GitHub Actions workflow builds mkdocs and uploads to GCS
- The folio server authenticates users and proxies content from GCS
- Path rewriting maps URLs to the correct GCS objects
Quick Links¶
- Quick Start — Get running in minutes
- Configuration — All environment variables
- API Reference — Server endpoints
- Caller Setup — Add docs publishing to your repos