Skip to content
Back to blog
Product
July 24, 20265 min

Deploy Straight from Codeberg — No GitHub Mirror

By Michael Michelsen

If you moved your code to Codeberg to get off a US-owned Git host, you have probably hit the same wall every time you go to deploy it: your platform-as-a-service only speaks GitHub, GitLab, and Bitbucket. So you end up mirroring your repo back to one of them, which quietly undoes the reason you left. HostStack now deploys straight from Codeberg — no mirror, no GitHub round-trip.

As far as we can tell, HostStack is the first PaaS to treat Codeberg as a first-class deploy source, with the same feature set we give GitHub: OAuth connect, public and private repositories, push-to-deploy, signed webhooks, and pull-request preview environments.

What Codeberg is, and why it matters here

Codeberg is a Berlin-based non-profit (Codeberg e.V.) running Forgejo, the community-governed fork of Gitea. It is EU-incorporated, ad-free, and funded by members rather than venture capital — which is exactly the profile a lot of European teams want after re-reading their vendor list. The catch has always been the tooling ecosystem around it: CI, PaaS, and deploy platforms are overwhelmingly built GitHub-first.

Deploying is the step where that gap bites. Your Git host can be as sovereign as you like, but if the thing that builds and runs your code only integrates with GitHub, your source of truth is still a mirror on someone else's platform. Closing that gap is the point of this release.

How it works

Two ways in, depending on how much integration you want:

  • Connect Codeberg (OAuth). Go to Settings → Codeberg, click Connect, and authorize HostStack on codeberg.org. Your repositories sync automatically. Private repos work: HostStack mints a short-lived token per deploy and clones over HTTPS — nothing is stored in your build image, and the token never touches a log. Add a Forgejo webhook (we show you the URL and secret) and every push to your branch deploys; open a pull request and you get a preview environment.
  • Public Git URL. If the repo is public, you don't even need to connect an account. Pick the "Public Git URL" source in the new-service wizard, paste the clone URL, choose a branch, and deploy. This also covers Gitea and any self-hosted Forgejo instance.

Self-hosted Forgejo and Gitea

Codeberg runs Forgejo, and the integration talks to Forgejo's API — which means the same code path works against a Forgejo or Gitea instance you host yourself. The OAuth connection stores which instance it authenticated against, so a self-hosted deployment target is a configuration change, not a rewrite. If you run your own Forgejo behind the firewall and want it wired up, get in touch.

Webhooks are signed, deploys are team-scoped

Forgejo signs webhook deliveries with HMAC-SHA256 over the request body. HostStack verifies that signature against the per-connection secret before acting on anything, and every auto-deploy is scoped to the team that owns the connection — a forged or replayed delivery can't trigger a build for a repo it doesn't control. Deliveries are de-duplicated, so a retried webhook won't double-deploy.

Where this fits

This is part of a longer arc for us: HostStack is a European PaaS on EU infrastructure, under a Danish legal entity, and "deploy from the Git host you actually chose" is a piece of the same digital-sovereignty story as GDPR-clean hosting and EU-only data residency. If you left GitHub on principle, your deploy target should not drag you back.

Codeberg support is live now for every team. Connect it under Settings → Codeberg, or read the deploy docs to get started.

Essential cookies only — for login sessions. No tracking. Details