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.
- ca-certificates
- curl
- git
- gnupg
- jq
- git
- gnupg2
- jq
From order to ready
- 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.
- Installer running. It logs to
/var/log/vps9-setup.log;tail -fit to watch. - Application ready.
/var/lib/vps9-setup.exitappears when the installer has finished, holding 0 if it worked. Forgejo is ready whencurl http://127.0.0.1:3000/api/healthzon the server reports pass. The owner login is in /root/forgejo-admin.txt.
What you still do
- Run
cat /root/forgejo-admin.txtfor the owner account's password. - From your computer, run
ssh -L 3000:127.0.0.1:3000 root@<your IPv4>, openhttp://localhost:3000, log in as owner and set your real email in Settings. - Point a domain at the server, allow ports 80 and 443 in the panel firewall, and run
vps9-https git.example.com. - 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 servers create --plan budget --image ubuntu-24.04 --app forgejo --hostname web-1 --key key_8f2c{
"plan": "budget",
"image": "ubuntu-24.04",
"hostname": "web-1",
"app": "forgejo"
}