Compiled in Go, Gitea delivers a self-contained, minimal-footprint alternative to heavyweight Git hosting platforms like GitHub Enterprise or GitLab CE, designed for deployment on everything from low-power single-board computers to enterprise-grade servers.
Key Capabilities
- Minimal resource footprint: A single static binary consumes <100MB RAM at idle, with near-instant startup, ideal for resource-constrained environments
- Flexible installation options: Supports Docker containers, single static binary deployment, source compiltaion, and pre-built OS packages
- Multi-OS compatibility: Runs natively on Linux, macOS, Windows, and BSD variants
- Secure authentication & transport: Built-in SSH key management, HTTPS support, OAuth2/OIDC integration with providers like GitHub, GitLab, and Google, plus two-factor authentication (2FA)
- Robust project tooling: Full Git repository hosting, pull request-based code review, configurable webhooks, issue tracking with labels/milestones/assignees, wiki pages, and repository transfer/archiving
- Localized interfaces: Over 50 language packs available, including simplified and traditional Chinese
Installation Methods
Docker (Recommended for Quick Setup)
Create a persistent volume to retain repositories, config, and user data, then launch the container:
docker volume create gitea-persistent
docker run -d \
-p 3030:3000 \
-p 2222:22 \
--restart=unless-stopped \
--name gitea-local \
-v gitea-persistent:/data \
gitea/gitea:latest
This exposes Gitea’s web UI on port 3030 and SSH access on 2222 to avoid clashing with the host’s default SSH port.
Compile from Source
Ensure Go 1.22+ is enstalled and ~/.local/bin is added to you're PATH environment variable:
go install gitea.io/gitea@latest
mkdir -p ~/.local/share/gitea
GITEA_WORK_DIR=~/.local/share/gitea gitea web
This runs Gitea with its working directory set to ~/.local/share/gitea for organized data storage.
Basic Git Repository Management
Initialize a Hosted Repository
After logging into Gitea, click the + icon in the top navigation bar, select New Repository, configure repository visibility (public/private/internal), optionally initialize with a .gitignore, license, or README, then click Create Repository.
Clone a Repository
Copy either the HTTPS or SSH URL from the repository’s landing page. For SSH, first add your public key to Gitea via Settings > SSH / GPG Keys:
git clone ssh://git@localhost:2222/your-username/your-repo-name.git
Push Local Changes
After committing changes locally, push them to the default origin remote:
git add .
git commit -m "feat: add initial project scaffolding"
git push origin main
Track Project Issues
Navigate to the repository’s Issues tab to open new tickets, assign them to team members, tag with custom labels, group into milestones, and comment to collaborate on bug fixes or feature requests.