Skip to content

Forgejo

Audience

PLANA staff working on git, CI, or the container registry.

PLANA hosts its source code on Forgejo — the open-source fork of Gitea. Self-hosted at git.planapulse.com. Forgejo is also the container registry and the CI runner platform.

Why Forgejo

CapabilityForgejo
Git host
OCI registry (container images + Helm charts)
CI runner (Forgejo Actions, mostly GitHub Actions-compatible)
Issue / PR tracking
OIDC client (signs in via Authentik)
FOSS✓ (MIT-licensed; community-governed)

One product, one operator surface, one auth domain. No GitHub / GitLab / Docker Hub / Bitbucket sprawl.

Deployment

ComponentWhere
Forgejo serverforgejo namespace
Forgejo runnersforgejo-runner namespace
Databaseforgejo on pg01
Filesystemblock-storage PVC (retain reclaim policy)
Domaingit.planapulse.com

Helm-based deployment, reconciled by Flux from infra/k8s/forgejo/.

URLs

URLPurpose
https://git.planapulse.comWeb UI
git@git.planapulse.com:plana-pulse/<repo>.gitSSH clone
https://git.planapulse.com/<org>/<repo>Browse
https://git.planapulse.com/<org>/<repo>/raw/branch/main/<path>Raw file
https://git.planapulse.com/<org>/<repo>/archive/<sha>.tar.gzArchive (used by CI)

Two orgs

OrgUse
plana-pulseThe 32 PLANA Pulse repos (infra, pulse-*, odoo-modules, etc.)
plana-docsDocumentation portal repo
(vantage — separate Forgejo org for the Vantage project)

Org-scoped CI runners ensure jobs don't mix across project boundaries.

Authentication

MethodUse
OIDC via AuthentikWeb sign-in for staff
SSH keysGit push/pull
API tokensFor automation / CI

Staff sign in once via Authentik; SSH keys are uploaded per-user to the Forgejo profile.

The oca-sync-bot-write SSH deploy key handles automated OCA module sync — it's per-repo, write-only, least-privilege.

Container registry

Forgejo's built-in OCI registry at git.planapulse.com:

git.planapulse.com/<org>/<image-name>:<tag>

Examples:

git.planapulse.com/plana-pulse/pulse-account-api:abc1234
git.planapulse.com/plana-pulse/odoo-modules/base-18:abc1234
git.planapulse.com/plana-docs/portal:abc1234

CI pushes; cluster pods pull. Per-namespace pull secrets (forgejo-registry) make this work.

CI runners

Forgejo Actions, broadly GitHub Actions-compatible:

RunnerOrg scope
act-runner-mainMain plana-pulse org
act-runner-vantageVantage org

Both DaemonSets in forgejo-runner namespace. They poll Forgejo for queued jobs, execute, return results.

See Operations → CI/CD for pipeline patterns.

Backups

Standard pattern:

  • Daily pg_dump of the forgejo DB to SOS (plana-pulse-backups)
  • Daily tar of the Forgejo data PVC to SOS

A Forgejo restore involves restoring both. Procedure in infra/docs/runbooks/forgejo-restore.md.

Updating Forgejo

Major version updates are rare (every 6-12 months). Procedure:

  1. Verify backup is recent
  2. Pull a Forgejo version with documented upgrade path
  3. Update the Helm values
  4. Roll out
  5. Soak for 24h

Forgejo's upgrade compatibility is excellent — most upgrades are seamless.

Where to read more

© PLANA Digital Ltd.