fshy / CI runners / Storage
Forgejo and
forgejo.org · CI runners, Storage · 2 records · JSON
- Forgejo and Gitea Actions (self-hosted) CI runners★ qualifiesanonymousno cardD
- Gitea / Forgejo self-hosted with any S3 LFS backend Storagecaveatemail?card?Rper-object-cap
Forgejo and Gitea Actions (self-hosted) CI runners
★ qualifiesanonymousno cardD
| Free tier | MIT for Gitea and GPL for Forgejo, with a GitHub-Actions-compatible workflow syntax; unlimited on your own runners unit unlimited; metered on none |
|---|---|
| Price | none stated |
| Per-object cap | no cap from the software; the runner host is the ceiling |
| Retention | whatever the runner host retains |
| Egress | whatever the runner host charges |
| Identity | anonymous the software needs no account |
| Limits |
|
| Binding | none |
| Interface | git, cli a .forgejo/workflows or .gitea/workflows YAML; the act runner; a compatible subset of GitHub Actions |
| Tooling | the forgejo or act runner binary; docker or a host backend |
| Composes with | Actions syntax without GitHub, which lets a workflow move between a free hosted runner and your own machine without a rewrite |
| Reliability | compatibility with GitHub Actions is a documented subset, so a workflow that runs on GitHub may need edits |
| Notes | The compatibility is the value and the subset is the cost. A workflow that depends on a GitHub-only action does not run. |
| Evidence rung | documented the Forgejo Actions user guide was read today; Codeberg's hosted instance runs the same software. |
| Checked | 2026-10-23 (live); stale on 2026-11-22 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-22 | forgejo.org/docs/latest/user/actions/ | Forgejo Actions is GitHub-Actions-compatible with documented differences; runners are user-provided |
| 2026-10-22 | codeberg.org/actions/meta | Codeberg's hosted runners use ghcr.io/catthehacker/ubuntu:act-latest to provide a compatibility level with GitHub Actions, and Docker-in-Docker is not officially supported |
Gitea / Forgejo self-hosted with any S3 LFS backend Storage
caveatemail?card?Rper-object-cap
| Free tier | Unlimited by default: quota.default.TOTAL = -1 means unlimited, and the soft-quota feature is 'currently not yet enabled by default'. You supply the disk/object store, so bytes = your infrastructure.unit unlimited; metered on stored-bytes |
|---|---|
| Price | none stated |
| Per-object cap | No per-file cap unless you set one |
| Retention | not stated |
| Egress | Yours to pay for — unless the LFS backend is one of the free S3 endpoints (HF buckets, IA), in which case egress is the backend's and is free/CDN. |
| Identity | email (placeholder) not published |
| Limits |
Soft-quota only: 'Forgejo checks the quota usage only before an action is executed, but it will allow a started action to complete' — so it can be overshot. No per-file cap unless you set one. |
| Binding | per-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota |
| Interface | s3-compatible, rest, git git |
| Tooling | Gitea/Forgejo binaries (single Go binary), git-lfs client, S3-compatible LFS storage config ([lfs] STORAGE_TYPE=minio). REST API + Swagger for full automation. Gitea Cloud offers a 30-day trial, not free. |
| Composes with | The pattern that makes 500 GB+ real: self-host the forge on a free-tier VM (or any always-on box) and set LFS storage to a free S3 endpoint. The forge holds ~metadata only; the bytes never touch your disk. Gitea's LFS_MAX_FILE_SIZE/LFS_START_SERVER are config, not policy. |
| Reliability | Quota feature is explicitly 'still in development' with 'little support for early prevention of operations in the UI'. Self-hosted means a dead VM = dead forge, but the LFS blobs survive in the object store. |
| Notes | Unlimited by default: quota.default.TOTAL = -1 means unlimited, and the soft-quota feature is 'currently not yet enabled by default'. You supply the disk/object store, so bytes = your infrastructure. |
| Evidence rung | reported One page read moves it to documented. |
| Checked | 2026-10-21 (inherited); stale on 2026-11-04 |
Evidence (2)
| date | source | what it proved |
|---|---|---|
| 2026-10-21 | forgejo.org/docs/latest/admin/advanced/quota/ | 'quota.default.TOTAL is -1 (unlimited) by default'; soft-quota semantics quoted |
| 2026-10-21 | forgejo.org/docs/latest/admin/setup/storage/ | storage backend configuration for LFS/attachments |
Unknown or withheld values (6)
$.free_tier.notesprocess$.identity_cost.detaildefaulted$.identity_cost.kindidentity-defaulted$.per_object_cap.notesnot-extracted$.retention.notesnot-extracted$.retention.statednot-extracted