A self-hosted Git server is your own private version of GitHub: a web app that stores your code repositories on a machine you control. Of the four we scored, OneDev comes out on top at 4.3/5. It runs as one Docker container (a packaged app that runs the same way on any machine with Docker installed), has a database built in, and has the most complete built-in CI/CD (continuous integration and delivery: automatic builds and tests every time you push code).
If you want the simplest possible start, pick Gitea (4.2/5). It is a single file you download and run, it can use SQLite (a database stored in one file, so there is no database server to set up), and it can import issues and pull requests from GitHub. Pick Forgejo (3.9/5) if you want a project run by an independent community, and Gogs (3.4/5) if your machine is very small and you don’t need CI/CD.
Our picks
Scores
1–5 per criterion · total is the weighted average · select a score to see its source| # | Product | Install effort ×3 | Built-in CI/CD ×3 | Code review and project tools ×2 | Hardware needs ×2 | Total |
|---|---|---|---|---|---|---|
| 1 | OneDev | 4 | 5 | 5 | 3 | 4.3 |
| 2 | Gitea | 5 | 3 | 5 | 4 | 4.2 |
| 3 | Forgejo | 5 | 2 | 5 | 4 | 3.9 |
| 4 | Gogs | 5 | 1 | 3 | 5 | 3.4 |
How each criterion is scored
Install effort ×3
How many separate programs and services a minimal one-server install needs before the first repository can be created.
- 5 One self-contained binary with a built-in database (such as SQLite), so nothing else has to be installed.
- 4 One container image with a built-in database; a standalone install needs a separately installed runtime such as Java.
- 3 Has a built-in database, but needs a separately installed runtime (such as Java) and has no self-contained container image.
- 2 Needs the application plus an external database server.
- 1 Needs several separate services (such as a database server and a cache) before first start.
Built-in CI/CD ×3
Whether the server can build and test code itself (continuous integration and delivery, CI/CD), what extra software that needs, and how close it is to GitHub Actions workflows.
- 5 As 4, plus a graphical job editor and tools to debug running jobs.
- 4 Built-in CI/CD with its own job executors (containers, bare metal or similar), with agents or Kubernetes to add capacity.
- 3 Built-in CI/CD that needs a separately installed runner program, described by the project as mostly compatible with GitHub Actions.
- 2 Built-in CI/CD that needs a separately installed runner program, using a workflow format the project says is not designed to be compatible with GitHub Actions.
- 1 No built-in CI/CD; only webhooks that notify outside CI services.
Code review and project tools ×2
How many of these five are built in: pull requests with review, an issue tracker, a wiki, project (kanban) boards, and a package registry.
- 5 All five.
- 4 Four of the five.
- 3 Three of the five.
- 2 One or two of the five.
- 1 Git hosting with none of the five.
Hardware needs ×2
The smallest machine the project's own documentation says the server runs on.
- 5 Documented to run in 512 MB of RAM or less.
- 4 Documented to run on 1 GB of RAM, or on a small device such as a Raspberry Pi.
- 3 The documented minimum is 2 GB of memory (RAM) or more, even if smaller setups are possible with tuning.
- 2 The documentation says it is lightweight but gives no figures.
- 1 The documentation gives no hardware guidance.
OneDev bundles the most into one install. The Docker guide gives a
single docker run command, and the server “by default uses an
embedded database”, so there is nothing else to set up. CI/CD is part
of the server: you build jobs with “an intuitive GUI”, and they can run
in containers, on bare metal or in sandbox virtual machines, with
agents or Kubernetes adding capacity later. If a job fails, you can
pause it and look around in a web terminal.
The trade-off is memory. The system requirements page asks for “at least 2G physical memory”. The bare-metal guide says a 1 GB machine works for personal use, but only after you edit a memory setting. Next step: if you have 2 GB to spare and Docker installed, start with the Docker guide.
- One Docker container with an embedded database
- CI/CD jobs built with a graphical editor, run in containers, on bare metal or in sandbox virtual machines
- Pull-request reviews, issue tracker, Kanban boards, wiki and package registry
- Jobs can be paused and inspected from a web terminal
- The documented minimum is 2 GB of memory
- Installing without Docker needs Java 11 or higher
Skip it if: Anyone with a 1 GB machine who doesn't want to edit memory settings.
Gitea is the friendliest first install. You download one file for your platform, and “all downloads come with SQLite, MySQL and PostgreSQL support”. If you choose SQLite, the documentation says you can skip the database chapter entirely. A Raspberry Pi 3 is “powerful enough” for small workloads, and 2 CPU cores with 1 GB of RAM is “typically sufficient” for small teams.
Gitea Actions is its CI/CD, and it reads workflows that are “mostly compatible” with GitHub Actions. The catch is that the jobs run on Gitea Runner, a standalone program you install separately. One more note: the documentation says SQLite “does not scale”, so choose PostgreSQL or MySQL if you expect to grow. Next step: if you are moving from GitHub, use Gitea’s built-in migration form to bring issues and pull requests with you.
- One downloaded file with SQLite built in
- Gitea Actions, described as mostly compatible with GitHub Actions
- Code review, issues, kanban boards, wiki and package registry
- Built-in form to migrate repositories, issues and pull requests from GitHub
- Actions jobs need Gitea Runner, a separate program
- The documentation warns that SQLite does not scale
Skip it if: Teams that want CI/CD without installing a second program.
Forgejo was created in 2022 because its developers think the project “should be owned by an independent community”. Setup is as simple as Gitea’s: the binary includes SQLite, “meaning you don’t have to install additional dependencies”, and the Docker image defaults to SQLite too. The project says it runs on a Raspberry Pi or a small cloud instance. Its latest release on Codeberg is v17.0.1, published on 26 October 2026.
It scores lower than Gitea on CI/CD for one documented reason. Forgejo Actions is “designed to be familiar” to GitHub Actions users, but “not designed to be compatible”, and moving a workflow over will most likely need some tweaking. Jobs also run on a separate runner. Next step: if you don’t depend on GitHub workflows, try the binary install guide.
- The official binary includes SQLite, with no other dependencies
- Issues, pull requests, wikis, kanban boards and a package registry
- Runs on a Raspberry Pi or a small cloud server
- Described by the project as "privacy first", from update checker to default settings
- Forgejo Actions is not designed to be compatible with GitHub Actions
- CI/CD jobs need a separately installed runner
Skip it if: Anyone who wants to reuse GitHub Actions workflows without changes.
Gogs aims to be “a simple, stable and extensible self-hosted Git service”. It ships as an independent binary for Linux, macOS, Windows and ARM-based systems, or as a Docker container, and it supports SQLite3. Its hardware needs are the lowest documented here: “2 CPU cores and 512MB RAM would be the baseline for teamwork”, and a Raspberry Pi is “more than enough to get you started”.
It ranks last because it does less. There is no built-in CI/CD: instead, webhooks notify other services, and the README lists Jenkins as a supported CI tool. Issues, pull requests and a wiki are included, but project boards and a package registry are not listed. Next step: if you only need to store and review code on an old machine, start here.
- A single binary or Docker container, with SQLite3 support
- Documents 512 MB of RAM as the baseline for a team
- Issues, pull requests and a wiki
- No built-in CI/CD; it relies on webhooks and outside tools such as Jenkins
- No project boards or package registry listed
Skip it if: Anyone who wants automatic builds and tests on the same server.
Questions
Do I need to set up a database server?
Not for a small start. Gitea and Forgejo binaries include SQLite, Gogs supports SQLite3, and OneDev’s Docker container uses an embedded database by default. Gitea’s documentation warns that SQLite does not scale, so switch to PostgreSQL or MySQL if your server grows.
Which ones can run my code's tests automatically?
OneDev, Gitea and Forgejo have built-in CI/CD. Gitea and Forgejo send the jobs to a runner, a separate program you install. OneDev runs jobs in containers, on bare metal or in sandbox virtual machines. Gogs has no built-in CI/CD and relies on webhooks to outside tools such as Jenkins.
Will it run on a Raspberry Pi?
Gitea says a Raspberry Pi 3 is powerful enough for small workloads, Forgejo says running on a Raspberry Pi is no problem, and Gogs says a Raspberry Pi is more than enough to get started. OneDev’s documented minimum is 2 GB of memory.
Method
Each server was scored from 1 to 5 against a published scale on four weighted criteria: install effort (×3), built-in CI/CD (×3), code review and project tools (×2) and hardware needs (×2). The ranking is the weighted average. Every score cites quotes from the project’s own documentation, website, README or release data on GitHub or Codeberg, captured on 5 November 2026.
We did not install or benchmark the servers, so hardware and setup scores reflect what each project documents. How our rankings work