Gitea на VPS: свой Git-сервер и CI за вечер
Развёртывание Gitea на VPS: Docker, SSH-ключи, Actions runner, бэкапы репозиториев. Альтернатива GitHub для команды и pet-проектов.
Краткий ответ: Gitea — лёгкий self-hosted Git с веб-UI, PR, issues и Actions. На VPS 1–2 GB RAM: Docker Compose, PostgreSQL, SSL через Nginx.
GitHub удобен, но приватные репозитории, лимиты Actions и зависимость от SaaS не всем подходят. Gitea — open-source, данные на вашем VPS.
Gitea vs GitLab vs GitHub
| Gitea | GitLab CE | GitHub | |
|---|---|---|---|
| RAM минимум | 512 MB–1 GB | 4 GB+ | SaaS |
| Actions/CI | Да (runner) | Да | Да |
| Сложность | Низкая | Высокая | Нулевая |
| Self-hosted | Да | Да | Нет |
Для тяжёлого CI с registry — GitLab Runner. Для лёгкого Git + pet-проекты — Gitea.
Docker Compose
# docker-compose.yml
services:
gitea:
image: gitea/gitea:latest
restart: unless-stopped
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=gitea_secret
volumes:
- ./gitea:/data
ports:
- "127.0.0.1:3000:3000"
- "127.0.0.1:2222:22"
depends_on:
- db
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_USER: gitea
POSTGRES_PASSWORD: gitea_secret
POSTGRES_DB: gitea
volumes:
- ./postgres:/var/lib/postgresql/data
Reverse proxy — Traefik или Nginx. SSH Git через порт 2222.
Первый запуск
- Откройте
https://git.example.com - Создайте admin, отключите open registration или включите только по invite
- Добавьте SSH-ключ в Settings → SSH Keys
git clone git@git.example.com:user/repo.git
Gitea Actions runner
# На отдельном VPS или том же (не production!)
docker run -d --name gitea-runner \
-e GITEA_INSTANCE_URL=https://git.example.com \
-e GITEA_RUNNER_REGISTRATION_TOKEN=TOKEN_FROM_UI \
-v /var/run/docker.sock:/var/run/docker.sock \
gitea/act_runner:latest
Runner выполняет CI — изолируйте как GitLab Runner. Альтернатива — webhook на GitHub Actions для mirror.
Бэкапы
# Ежедневно через cron
tar czf /backup/gitea-$(date +%F).tar.gz ./gitea ./postgres
Стратегия 3-2-1 + Restic на MinIO.
Безопасность
- Только HTTPS, HSTS
- 2FA для admin
- Fail2ban на Nginx auth
- Не открывайте Docker socket runner’у на prod-сервере приложений
Итог
Gitea на VPS — свой Git за час. 1 GB RAM, Docker, SSL — и команда работает без GitHub. CI через act_runner или внешний pipeline.
VPS от 1 GB — StormNet Cloud. CI/CD — GitHub Actions. Секреты — Vault.
Рекомендуем прочитать
Частые вопросы
Gitea или GitLab для self-hosted Git?
Gitea — от 512 MB RAM, быстрый старт. GitLab CE — тяжелее (4 GB+), но больше CI/CD из коробки.
Можно ли заменить GitHub на Gitea?
Для команды и pet-проектов — да. Для open-source community и marketplace Actions — GitHub удобнее.






