What Gitea Does
Gitea provides a full software development lifecycle:
- Git Hosting: Repository management with branch protection, webhooks, and deploy keys
- Code Review: Pull requests with inline comments, reviews, approvals, and merge strategies
- Issue Tracking: Issues with labels, milestones, projects, and kanban boards
- CI/CD: Gitea Actions (GitHub Actions compatible) for automated workflows
- Package Registry: Host Docker images, npm, Maven, PyPI, NuGet, and more
- Wiki: Built-in wiki for project documentation
- Organizations & Teams: Multi-user with organization structure and team permissions
Architecture
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Web UI │────▶│ Gitea │────▶│ SQLite / │
│ (Go + Vue) │ │ Server (Go) │ │ PostgreSQL /│
└──────────────┘ └──────┬───────┘ │ MySQL │
│ └──────────────┘
┌──────┴───────┐
│ Git Repos │
│ (Filesystem)│
└──────────────┘Gitea runs as a single binary with embedded web server and Git operations. It supports SQLite (zero-config), PostgreSQL, MySQL, and MSSQL as database backends.
Installation Options
Docker (Recommended)
services:
gitea:
image: gitea/gitea:latest
ports:
- "3000:3000" # Web UI
- "2222:22" # SSH
environment:
GITEA__database__DB_TYPE: postgres
GITEA__database__HOST: db:5432
GITEA__database__NAME: gitea
GITEA__database__USER: gitea
GITEA__database__PASSWD: gitea
volumes:
- gitea-data:/data
depends_on:
- db
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: gitea
POSTGRES_PASSWORD: gitea
POSTGRES_DB: gitea
volumes:
- pg-data:/var/lib/postgresql/data
volumes:
gitea-data:
pg-data:Single Binary
# Download and run directly
wget https://dl.gitea.com/gitea/latest/gitea-latest-linux-amd64
chmod +x gitea-latest-linux-amd64
./gitea-latest-linux-amd64 webKubernetes with Helm
helm repo add gitea https://dl.gitea.com/charts/
helm install gitea gitea/gitea --namespace gitea --create-namespaceKey Features
Gitea Actions (CI/CD)
Gitea Actions is compatible with GitHub Actions syntax:
# .gitea/workflows/ci.yaml
name: CI
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm test
- run: npm run buildPackage Registry
Host your own packages alongside code:
# Docker registry
docker tag myapp:latest gitea.example.com/org/myapp:latest
docker push gitea.example.com/org/myapp:latest
# npm registry
npm publish --registry=https://gitea.example.com/api/packages/org/npm/Supported package types: Docker, npm, PyPI, Maven, NuGet, Cargo, Composer, Conan, Conda, Go, Helm, and more.
Migration Tools
Easily migrate from other platforms:
Supported sources:
├── GitHub (repos, issues, PRs, wiki, labels, milestones)
├── GitLab (repos, issues, PRs, labels)
├── Bitbucket
├── Gogs
└── Gitea (other instances)Resource Comparison
| Metric | Gitea | GitLab CE | Gogs |
|---|---|---|---|
| RAM (idle) | ~150MB | ~2GB | ~100MB |
| Binary size | ~100MB | 2GB+ (install) | ~60MB |
| CI/CD | Built-in (Actions) | Built-in | External |
| Package registry | Yes | Yes | No |
| Container registry | Yes | Yes | No |
Gitea vs Alternatives
| Feature | Gitea | GitHub | GitLab CE | Gogs |
|---|---|---|---|---|
| Open Source | Yes (MIT) | No | Yes (MIT) | Yes (MIT) |
| Self-hosted | Yes | Enterprise | Yes | Yes |
| CI/CD | Gitea Actions | GitHub Actions | GitLab CI | External |
| Package registry | Yes | Yes | Yes | No |
| Resource usage | Low | N/A | High | Very low |
| Actions compat. | GitHub Actions | Native | Own syntax | No |
FAQ
Q: Gitea or GitLab? A: If you need a lightweight, low-resource Git service, pick Gitea (150MB RAM vs GitLab's 2GB+). If you need an enterprise DevOps platform (built-in CI/CD, security scanning, container registry), pick GitLab.
Q: How compatible is Gitea Actions with GitHub Actions? A: Most GitHub Actions workflows run on Gitea directly. Common actions like actions/checkout and actions/setup-node are supported. A few actions that depend on GitHub-specific APIs may need adjustment.
Q: Can I migrate from GitHub/GitLab? A: Yes. Gitea has a built-in migration tool that supports one-click migration of repositories, issues, PRs, and wikis from GitHub, GitLab, Bitbucket, and more.