When a team needs private code repositories and does not want to pay per-seat GitHub fees or hand their source code to a third-party cloud service, the usual answer is "just use GitLab." That answer is correct but costly in a different way: GitLab's self-hosted edition requires serious server resources. Gitea is the lightweight alternative that fits on the same $10 VPS (a virtual private server, a rented slice of a remote computer you control over the internet) you already use for everything else.
It is a complete Git hosting service. Git (the version control system that tracks every change made to code files over time) is the underlying technology behind GitHub and GitLab. A Git hosting service manages the code repositories (storage locations that hold every version of every file in a project) teams use to collaborate on code. You get issue tracking, pull requests (proposed code changes that go through review before being merged), code review, a wiki, and a CI/CD pipeline tool (a system that automatically runs tests and deploys code when changes are pushed). The project lives at github.com/go-gitea/gitea with 57,123 stars, and documentation and downloads are at about.gitea.com.
| Fact | Value |
|---|---|
| What it is | Self-hosted Git repository server |
| Built by | Gitea community (open-source) |
| License | MIT, free to use and modify |
| Platforms | Linux, macOS, Windows, Docker |
| Requires | A server or VPS with at least 512 MB RAM |
| Install method | Single binary download or Docker |
| Verdict | Install for private code hosting; evaluate if your team already uses GitHub or GitLab |
What Gitea actually is
Gitea is a Git server, which means it is the software that stores and manages code repositories and provides the web interface for viewing, reviewing, and collaborating on that code. When a developer runs git push (a command that sends local code changes to a remote server), Gitea is what receives and stores that push.
The project is written in Go, a programming language that compiles down to a single self-contained executable file. That architectural choice has a practical consequence: the entire application is one binary you download and run. There is no interpreter to install, no dependency chain to manage, and no package manager to configure. You download one file and it runs.
That also explains the resource footprint. Gitea runs on 512 MB of RAM because the Go runtime is lean. GitLab, by comparison, requires 4 to 8 GB of RAM for a comfortable self-hosted installation because it bundles multiple separate services that all run simultaneously. For a small team or a solo operator, Gitea fits on the server you already have. The MIT license means there is no "Community Edition vs Enterprise Edition" split; the full feature set is free with no licensing cost.
What you get after installing it
The Gitea web interface covers the full workflow a development team needs day-to-day.
Repositories are the core of the service. Each repository stores the complete history of a project's files, with commit logs (a chronological record of every change made and who made it), branching (parallel lines of development that can later be combined), tagging (named markers for specific versions), and file browsing. You can make repositories public, private, or accessible only to specific teams.
Issue tracking is built in. Issues are the task lists and bug reports that teams use to coordinate work. Gitea supports labels, milestones (groupings of related issues tied to a deadline), assignees, and comment threads. It covers the basics without requiring a separate service.
Pull requests and code review work as expected: someone pushes a branch, opens a pull request against the main branch, and reviewers can comment on specific lines of code, request changes, and approve or reject the merge. Gitea can enforce rules requiring a minimum number of approvals before a merge is allowed.
Wiki pages attach documentation directly to a repository, with full version history and editable through the web interface.
Gitea Actions is the CI/CD component. CI/CD stands for continuous integration and continuous deployment, a practice where code changes automatically trigger test runs and deployment steps. The notable detail is compatibility: Gitea Actions accepts the same YAML workflow files (YAML is a plain-text configuration format that describes the steps of an automated pipeline) used by GitHub Actions. If you have existing GitHub Actions workflows, you can copy them to Gitea with little or no modification.
User management and organizations let you structure access the way your team is organized. LDAP integration (a protocol for connecting to a company's existing directory of employees and credentials) means you can tie Gitea logins to your existing corporate identity system.
The install experience
The Docker install is the simplest path for most people. Docker is software that runs applications inside isolated containers, meaning the application and all its dependencies are packaged together and run the same way regardless of what else is on the server.
docker run -d \
--name=gitea \
-p 3000:3000 \
-p 22:22 \
-v /opt/gitea:/data \
gitea/gitea:latest
This command pulls the official Gitea image and starts it. Port 3000 is the web interface; port 22 is for SSH-based Git operations (using SSH keys rather than a password to authenticate pushes). The -v flag mounts a local folder on the server so data persists if the container is restarted.
After the container starts, you open http://your-server-ip:3000 in a browser and work through a setup page. The setup page asks for your database choice (SQLite, a lightweight file-based database, works fine for small teams; PostgreSQL is the recommendation for larger deployments), an admin account name and password, and a base URL. Fill those in, click Install, and Gitea is running.
The single binary install is the alternative if you prefer not to use Docker. Download the correct binary for your server's architecture from the releases page, mark it executable, and run it. A systemd service file (a configuration file that makes Linux automatically start and restart the application) is available in the documentation for making Gitea start on boot.
The total install time, including DNS configuration (updating the domain name system record that translates a web address like gitea.yourcompany.com into the server's IP address) to point a domain at the server, is under thirty minutes on a fresh VPS. Gitea's resource use at idle is low enough that it can share a server with other services without conflict.
Where it fits and what to compare it to
Gitea is the right choice when your requirements are private repositories, a familiar web interface for code review, and low server costs. It is the wrong choice if your team needs the integrations and marketplace that GitHub has built up over fifteen years.
GitHub is the industry default for a reason. The Actions marketplace, third-party integrations, and social features are unmatched. Team pricing starts at $4 per user per month with a generous free tier for individuals. If your team is already on GitHub and the bill is manageable, there is no strong reason to migrate. Gitea becomes relevant when you cannot put code on a third-party server, when pricing does not fit the budget, or when you need the data entirely under your control.
GitLab offers self-hosting with a larger feature set than Gitea: more mature CI/CD pipelines, a container registry (storage for Docker images), and security scanning tools. The tradeoff is resource requirements. A minimum GitLab installation needs 4 GB of RAM, preferably 8 GB, plus a multi-core CPU. For teams running everything on a small VPS, it is often impractical.
Forgejo is a community fork of Gitea, meaning it started as a copy of Gitea's source code and is now developed independently by contributors who wanted a fully community-governed project. The two are largely compatible; most Gitea workflow files run unchanged on Forgejo. The choice between them comes down to governance preference, not features.
The AI agent angle is worth naming directly. AI coding agents like Claude Code and Codex push code changes to remote Git repositories as part of their workflow. Gitea works as that remote: the agent pushes to your own server, opens a pull request, and triggers a CI pipeline to run tests. The code never touches GitHub or any external service. For teams running AI agents on proprietary codebases, self-hosted Gitea provides an audit trail and access control that a cloud-hosted service cannot match.
Verdict
Install Gitea if your team needs private repositories and you have a VPS available or are willing to rent one. The MIT license, single-binary deployment, and 512 MB RAM footprint make it the most practical self-hosted Git option for small teams. Gitea Actions compatibility with GitHub Actions workflow files means you can carry existing automation over without rewriting it.
Hold off if your team is already on GitHub and the pricing is not a problem. The GitHub ecosystem has genuine value that Gitea does not replicate, and the migration cost is real. Gitea solves one specific problem: private, self-controlled Git hosting at low cost. If you do not have that problem, you do not need this tool.
The 57,123-star count reflects a project in production use since 2016. The documentation at about.gitea.com covers installation, upgrades, and administration thoroughly, and most common setup questions are already answered in the forums.