Gitea
Open-source, lightweight self-hosted Git service and GitHub alternative written in Go.
Why consider Gitea?
Gitea is a painless, self-hosted, all-in-one software development service featuring Git hosting, code review, and CI/CD.
Learn Gitea by building
Practical setup notes, real use cases, and copy-ready examples in one focused guide.
In this guide3 sections
Gitea: A Lightweight, Self-Hosted Git Service
Gitea is an open-source, self-hosted version control and software development platform written in Go. For teams and developers seeking an alternative to managed services like GitHub or GitLab, Gitea delivers a fast, low-resource environment that you can control completely. According to its official documentation, Gitea provides an all-in-one, self-hosted platform combining Git hosting, code review, CI/CD, and a package registry. The project is designed to offer a fast and frictionless experience for deploying a self-hosted Git service.
Because it is written in Go, Gitea can run on any platform supported by Go, including Linux, macOS, and Windows across multiple architectures. This cross-platform nature, coupled with minimal system requirements, allows Gitea to run comfortably even on low-power devices such as a Raspberry Pi.
Core Features and Capabilities
Gitea includes all the fundamental features expected of a modern Git forge. It provides repository management, issue tracking, pull requests, and wiki pages. Additionally, it offers advanced capabilities that streamline the software development lifecycle:
- Built-in CI/CD: Gitea Actions enables CI/CD workflows that are compatible with GitHub Actions, allowing the use of familiar YAML syntax and existing plugins. This makes migrating existing automation pipelines straightforward.
- Package Registry: Gitea has built-in support for more than 20 package management formats, such as npm, PyPI, and Maven. This allows teams to host their build artifacts right next to their source code.
- Code Review and Collaboration: The platform supports robust code review workflows, enabling branch protection, team assignments, and granular access controls.
Installation and Setup via Docker
Deploying Gitea is remarkably simple. One of the most common and recommended ways to host Gitea is through Docker. The following is the official Docker Compose configuration for standing up a basic Gitea instance using a SQLite backend, sourced from the Docker installation guide:
networks: gitea: external: falseservices: server: image: docker.gitea.com/gitea:1.27.1 container_name: gitea environment: - USER_UID=1000 - USER_GID=1000 restart: always networks: - gitea volumes: - ./gitea:/data - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro ports: - "3000:3000" - "222:22"Once you save this configuration to a docker-compose.yml file, you can bring up the service by running docker compose up -d. The Gitea web interface will then be accessible on port 3000, where you can complete the initial configuration and create your first administrator account.
Why Choose Gitea?
Choosing Gitea often comes down to a desire for data sovereignty and operational efficiency. By self-hosting your codebase, you ensure that your intellectual property remains within your own infrastructure, protected by your own security policies. The platform's efficiency means you won't need to provision expensive, heavyweight servers just to maintain your repositories and project boards.
Whether you are an individual developer managing personal projects or a small to medium-sized team needing a dedicated internal Git server, Gitea provides a comprehensive toolset without the bloat.
Related tools
More options with a similar category or technology profile.
Dapr CLI
Command-line tool for managing Dapr distributed application runtime environments and sidecars.
bpytop
Python port of bashtop with game-like UI, responsive mouse support, and hardware sensors.
bashtop
Linux resource monitor showing usage and stats for processor, memory, disks, network, and processes.
SchemaHero
Kubernetes-native declarative database schema management and table migration operator.