GitHub Repo storage
GitHub Repo storage is experimental. It is suitable as a secondary or supplementary store (for example, publishing assets to a public GitHub repository for CDN delivery), but is not recommended as your primary storage backend in production. Rate limits, API latency, and repository size constraints make it unsuitable for high-volume or latency-sensitive workloads.
The GitHub Repo provider commits uploaded files to a GitHub repository using the GitHub Contents API.Good for: low-volume publishing workflows, hosting assets on GitHub Pages, or archiving assets alongside source code.Variable reference
| Variable | Required | Default | Description |
|---|
Storage__Provider | Yes | — | Must be github-repo. |
Storage__GitHubRepo__Owner | Yes | — | GitHub user or organization that owns the repository. |
Storage__GitHubRepo__Repo | Yes | — | Repository name. |
Storage__GitHubRepo__Ref | Yes | — | Branch or ref to commit files to (e.g., main). |
Storage__GitHubRepo__BasePath | No | — | Directory path within the repository where assets are stored (e.g., assets/images). |
Storage__GitHubRepo__Token | Yes | — | GitHub personal access token with repo scope (or public_repo for public repositories). |
Storage__GitHubRepo__VisibilityPolicy | No | — | Controls which assets are served publicly. Use public-only to only expose assets from public repositories. |
Storage__GitHubRepo__CommitMessageTemplate | No | chore(nekohub): {operation} {path} | Template for commit messages. {operation} and {path} are replaced at runtime. |
Storage__PublicBaseUrl | Yes | — | Public URL prefix for asset delivery. For example, a raw.githubusercontent.com URL or a GitHub Pages URL. |
Example configuration
Storage__Provider=github-repo
Storage__GitHubRepo__Owner=your-org
Storage__GitHubRepo__Repo=nekohub-assets
Storage__GitHubRepo__Ref=main
Storage__GitHubRepo__BasePath=assets/images
Storage__GitHubRepo__Token=ghp_xxxxxxxxxxxxxxxxxxxx
Storage__GitHubRepo__VisibilityPolicy=public-only
Storage__GitHubRepo__CommitMessageTemplate=chore(nekohub): {operation} {path}
Storage__PublicBaseUrl=https://raw.githubusercontent.com/your-org/nekohub-assets/main/assets/images