FR
live

Forgejo Runs Your Code Forge on 100 MB of RAM and Nobody Owns It

Forgejo shipped version 16.0 on July 16, 2026, three and a half years after the community fork from Gitea. A single 100 MB Go binary replaces both GitHub and GitLab on the cheapest VPS money can buy, with GitHub Actions-compatible CI/CD and governance locked under a non-profit foundation.

Forgejo Runs Your Code Forge on 100 MB of RAM and Nobody Owns It — ETTAYEB illustration

On July 16, 2026, Forgejo shipped version 16.0. Four days earlier, Codeberg — the community forge running on Forgejo — crossed 120,000 repositories. Three and a half years after forking Gitea in October 2022 — triggered by a hostile corporate takeover that transferred the domain and trademark without community consent — the verdict is in: Forgejo does everything GitHub does for teams of 2 to 20 developers, runs on 100 MB of RAM, and answers to nobody’s quarterly earnings call.

It’s the only lightweight forge with governance locked under a non-profit. If your code belongs on your own hardware, here’s why Forgejo is the short path.

The Fork That Changed Everything

In October 2022, the Gitea domain and trademark were transferred to a for-profit company without community knowledge or approval. An open letter was written. The transfer stood. The community response was to create Forgejo under Codeberg e.V., a German non-profit, designed from day one to keep governance out of any single company’s hands.

For about a year, Forgejo operated as a soft fork, tracking upstream Gitea commits the way LineageOS tracks Android. In early 2024, the project announced a hard fork*: the codebases diverge, upstream commits are no longer auto-merged, and cherry-picks are selective. Version 1.21 was the last release that guaranteed migration compatibility between the two projects. Since then, the technical choices and roadmaps have been entirely independent.

The differences are structural, not cosmetic. Gitea Ltd requires copyright assignment for all contributions and restricts early security disclosure to paying customers. Forgejo requires no copyright assignment, notifies trusted parties via encrypted channels regardless of payment status, and publishes security announcements on an entirely public repository. Radical transparency isn’t a marketing slide here — it’s encoded into the project’s constitution under Codeberg’s non-profit charter.

One Binary, One Server, Zero Friction

Forgejo ships as a single Go binary under 100 MB. No runtime, no complex system dependencies, no mandatory container orchestration. Three official deployment paths:

  • Binary: download, chmod +x, run. Five minutes from zero to a working instance on a fresh machine.
  • Docker: a single image, docker compose up -d, and the web UI is live on port 3000.
  • Kubernetes: a community-maintained Helm chart for multi-node deployments.

Database backends are your choice: SQLite for personal instances or small teams (zero maintenance overhead), PostgreSQL or MySQL for scaling up. Git storage lives on the local filesystem, with S3 and S3-compatible object storage support for releases and packages.

The reference docker-compose fits in thirty lines:

yaml
version: "3"

services:
  server:
    image: codeberg.org/forgejo/forgejo:16.0
    container_name: forgejo
    environment:
      - FORGEJO__database__DB_TYPE=sqlite3
    restart: always
    volumes:
      - ./forgejo/data:/data
      - /etc/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    ports:
      - "3000:3000"

Two notes that save hours of troubleshooting. First, never expose port 3000 directly to the internet: put a reverse proxy (Nginx, Caddy, Traefik) with Let’s Encrypt in front of it. The instance configuration wizard runs on first visit over the web UI, and the admin account is created during that session — an open port at that stage is an open invitation to compromise. Second, Forgejo 16.0 changed the default behavior of REVERSE_PROXY_TRUSTED_PROXIES in container images: the previous default of * has been removed. If you rely on reverse proxy authentication, you must explicitly declare your trusted proxy address ranges before upgrading.

What Forgejo Does, and What It Doesn’t

The feature set covers a team’s entire daily development loop:

  • Git repositories with branch management, tags, forks, and pull requests
  • Code review with multi-line comments (new in 16.0), change suggestions, and approvals
  • Issue tracking with labels, milestones, assignees, and templates
  • CI/CD via Forgejo Actions, syntax-compatible with GitHub Actions workflows — your .github/workflows/*.yml files migrate to .forgejo/workflows/ with a path change, not a rewrite
  • Integrated package registry: containers, npm, PyPI, Maven, NuGet, RubyGems
  • Per-repo wiki, signed release artifacts, webhooks, and SSH integration

What Forgejo does not do, and what GitLab does: built-in SAST/DAST scanning, dependency vulnerability analysis, compliance management, and nested groups. These live in GitLab Ultimate, the paid tier. For a team already running dedicated tools (SonarQube, Trivy, Snyk), their absence in Forgejo isn’t a gap — it’s fewer things to maintain on one box.

ActivityPub federation deserves a dedicated note. The project is actively working on it, with public monthly reports, and federated stars shipped as the first building block. The end goal is allowing a user on one Forgejo instance to open an issue or follow a repository on another, with no centralized account required. It’s not a buying argument today — the work is long and the concrete use cases are still sparse — but it’s proof the project is investing in a decentralized architecture where Gitea has no federated roadmap and GitHub has no commercial mandate to build one.

The Table That Settles the Argument

ForgejoGiteaGitLab CEGitHubLicenseMITMIT (core)MIT (CE)ProprietaryGovernanceNon-profit foundationFor-profit companyGitLab Inc.MicrosoftIdle RAM40–80 MB40–80 MB4 GB minimumSaaS (outside your control)Comfortable RAM1–2 GB1–2 GB8–16 GBSaaSCI/CDGitHub Actions-compatibleGitHub Actions-compatibleGitLab CI (own syntax)GitHub ActionsSAST/DASTNoneNonePaid (Ultimate)Paid (Advanced Security)FederationIn developmentNoneNoneNoneMonthly VPS cost$6$6$40–80Free (cloud)

The number that decides it for most teams: a $6/month VPS (1 GB RAM, 1 vCPU) runs Forgejo comfortably for a 2–10 person team with SQLite. The same VPS cannot launch GitLab CE — it needs 8 GB of RAM for a smooth experience with active CI/CD, pushing you straight into $40–80/month territory. Annualized, that’s $400–$900 per year you’re not spending. For a small team or a solo developer, that’s the budget for a dedicated NUC, a NAS, or subscriptions to three other self-hosted services.

Verdict

For a new deployment in 2026, start with Forgejo. It does everything Gitea does, with the same memory footprint and the same GitHub Actions workflow compatibility, but its community governance under Codeberg e.V. structurally protects it from a commercial pivot. The day Gitea Ltd decides to gate a feature behind a paid tier — and the history of open-core projects says that day comes — Forgejo users won’t be affected.

Stay on Gitea if your instance is already running and you have no reason to migrate. The migration path isn’t smooth from post-1.21 versions, and the two projects remain functionally close. Spend your energy elsewhere.

Reach for GitLab CE only if you have 30+ developers and a demonstrable need for integrated SAST/DAST. At that team size, the VPS cost is noise next to payroll, and GitLab’s vertical integration (registry, pipelines, security, compliance) justifies the memory footprint. For everything else, Forgejo is enough.

Your code, your server, your rules. All for the price of a monthly coffee.

References

The cyber brief, every Tuesday

The flaws that matter and the patches to apply, in a ten-minute read.

No spam. One-click unsubscribe.
read next

On the same topic

Immich replaces Google Photos once you budget for a mini PC and real backups

Immich shipped version 3.0 on 2 July 2026, nine months after its first stable release and weeks after a two-year retrospective on its backing by nonprofit FUTO. It replaces Google Photos once you can afford roughly $300 of hardware and a disciplined off-site backup — skip either, and the migration trades Google’s reliability for a real chance of losing everything.

Coolify gives you a free Vercel on your own server in one command

Coolify shipped version 4.2.0 on July 21, 2026, and now sits at 59,800 GitHub stars. This open-source PaaS deploys your apps, databases, and 280 services to any Linux server with a single click — no per-GB billing, no bandwidth caps, no lock-in.

← Back to the feed

Type at least two characters.

navigate open esc dismiss