Forgejo VPS

Forgejo from its signed release binaries on the long-term-support line, with registration off and an admin account only you know. You open it over SSH, give it a domain, and push.

Who it suits

Individuals and small teams who want GitHub-style hosting for their code on their own server. We chose Forgejo over Gitea for its long-term-support releases, its non-profit stewardship (Codeberg e.V. holds its domains), and because Codeberg runs it at scale. Forgejo Actions needs a separate runner, which we don't install.

Which plan

Budget runs Forgejo for one person or a small team: it is a single Go program with SQLite. Choose Standard for large repositories, many users, or a Forgejo Actions runner on the same server; CI jobs are what use the CPU.

What we install

Forgejo is a community-run Git forge (a fork of Gitea) with repositories, issues, pull requests, packages and Actions. We download the newest v15 LTS binary from Codeberg, check its signature, and set it up as Forgejo's binary-install guide describes: a git user, SQLite in /var/lib/forgejo, the web interface on 127.0.0.1:3000 and Git over the server's own SSH.

$ apt Debian family (apt)
  • ca-certificates
  • curl
  • git
  • gnupg
  • jq
$ dnf Red Hat family (dnf)
  • git
  • gnupg2
  • jq

From order to ready

  1. Server ready. We email you when the server is running, and you can log in with SSH. The installer starts on that same first boot.
  2. Installer running. It logs to /var/log/vps9-setup.log; tail -f it to watch.
  3. Application ready. /var/lib/vps9-setup.exit appears when the installer has finished, holding 0 if it worked. Forgejo is ready when curl http://127.0.0.1:3000/api/healthz on the server reports pass. The owner login is in /root/forgejo-admin.txt.

What you still do

  1. Run cat /root/forgejo-admin.txt for the owner account's password.
  2. From your computer, run ssh -L 3000:127.0.0.1:3000 root@<your IPv4>, open http://localhost:3000, log in as owner and set your real email in Settings.
  3. Point a domain at the server, allow ports 80 and 443 in the panel firewall, and run vps9-https git.example.com.
  4. Add your SSH key in Settings, SSH / GPG keys, then push to git@git.example.com:owner/<repo>.git.

Exposure and security

The web interface listens on 127.0.0.1:3000, so nothing is public until vps9-https puts Caddy on 80 and 443. The install page is locked, registration is off, and the admin account was made from the command line with a random password. Git over SSH uses the server's own SSH on port 22 as the git user, with the keys you add in Forgejo.

Backups and upgrades

Updates are yours: download the next v15 binary from Codeberg, check its signature, replace /usr/local/bin/forgejo and restart the forgejo service, reading the release notes first. v15 is supported until July 2027. We turn on the operating system's automatic security updates. Back up with forgejo dump (as the git user, with -c /etc/forgejo/app.ini) and copy the archive off the server. We run the hardware, the network and the first-boot install; after that, Forgejo is yours to run, and we don't manage, update or back it up for you.

Forgejo questions

Why Forgejo and not Gitea?

They share most of their code and both are good choices. We picked Forgejo for its long-term-support releases (fewer forced upgrades on a server you look after yourself), its stewardship by the non-profit Codeberg e.V., and because Codeberg runs it for a large public community. Gitea is MIT-licensed with commercial backing; Forgejo is GPL-licensed since version 9.

Can I run CI with Forgejo Actions?

Yes. Forgejo Actions uses workflows much like GitHub Actions, but jobs run on a separate Forgejo Runner that you install, ideally on another server or at least in containers. Turn Actions on for each repository that needs it.

Can I bring my repositories from GitHub?

Yes. New Migration imports a repository with its issues, pull requests, labels, milestones and releases from GitHub, GitLab and others, using an access token from the old host.

Order it from your terminal

$ vps9
$ vps9 servers create --plan budget --image ubuntu-24.04 --app forgejo --hostname web-1 --key key_8f2c
POST /api/v1/servers
{
  "plan": "budget",
  "image": "ubuntu-24.04",
  "hostname": "web-1",
  "app": "forgejo"
}

Be first when orders open

Join the waitlist and we'll send you one email when VPSNine launches. Pick a plan if you already know which one you want, and we'll size the first servers around it.

  • One email, on launch day
  • Monthly or yearly, no lock-in
  • 14-day money-back guarantee