Kick off a software project quickly.
Your own GitHub, self-hosted on a single VPS — repositories, pull requests, CI/CD and a package registry, with no per-seat billing.
Gitea is a lightweight, self-hosted Git service written in Go and released under the MIT licence. It gives you the whole GitHub workflow — repositories, branches, issues, pull requests, code review, wiki, releases — on infrastructure you control, from a single binary that starts in seconds and idles on a few hundred megabytes of RAM.
On a ServOrbit VPS, Gitea runs as two containers: `gitea/gitea` for the application and `postgres:16-alpine` for the database. The web UI is served on port 3000 behind the nginx vhost with HTTPS, and Git over SSH listens on port 2222 so `git clone` and `git push` work with your usual public key. Repository data and the PostgreSQL database each live in a named Docker volume, so a full backup is a volume snapshot.
Beyond hosting code, Gitea bundles two things that usually cost extra elsewhere. Gitea Actions is a CI/CD engine that reads the same workflow YAML as GitHub Actions — existing `.github/workflows` files run almost unchanged on a runner you install yourself. And the built-in package registry speaks npm, Docker/OCI, Maven, NuGet, PyPI, Composer, Cargo and Helm from the same instance that hosts your code. Organisations, teams and protected branches let you reproduce a whole company's Git setup without a monthly per-developer subscription.
Host every internal repository on your own VPS instead of a SaaS account billed per developer. Client projects, proprietary code and unreleased work stay inside infrastructure you own, in a jurisdiction you choose. Onboarding a new developer is creating an account, not adding a paid seat — the cost of the instance does not change when the team grows.
Gitea Actions reads the same workflow syntax as GitHub Actions, so your existing `.github/workflows` files run with little or no change. Install a runner on the same VPS or on a dedicated build machine and every push, tag and pull request triggers your pipeline — with no build-minute quota and no queue shared with other customers.
Publish private npm packages, Docker images, Maven artifacts or PyPI wheels straight to the instance that already hosts your code: `docker push git.example.com/team/api:1.4`. One set of credentials, one backup, one URL for source and artifacts — instead of a separate registry service per ecosystem.
Guide optimized for ServOrbit Cloud VPS.
2 GB of RAM is a comfortable starting point for a small team: Gitea itself idles on a few hundred megabytes and PostgreSQL takes the rest. Plan more headroom if you intend to run Gitea Actions runners on the same machine, since builds are the heaviest part of the workload.
Gitea needs a domain name: clone URLs, webhooks, OAuth callbacks and the package registry all embed the public address of the instance. Create an A record such as git.example.com pointing to your VPS IP — TLS is issued and renewed automatically once the app is deployed.
Open your ServOrbit dashboard → Marketplace → Development → Gitea → Deploy. Docker pulls gitea/gitea and postgres:16-alpine, generates the database credentials, and the web UI answers on port 3000 behind the HTTPS vhost within a minute.
Open your domain in a browser: the first account registered becomes the site administrator. From Site Administration you can then close public registration, wire up LDAP or OAuth2, and set the default branch protection rules before inviting your team. Create a repository and push to it: git remote add origin [email protected]:2222/team/api.git.
CI is off until a runner is registered. Generate a token in Site Administration → Actions → Runners, then start gitea/act_runner on the VPS or on a separate build host pointing at your instance URL. Push a workflow file to .github/workflows/ci.yml and the job appears in the Actions tab on the next commit.
Browse our help center and FAQ, or write to our team — support in French, English and Arabic.