- Home »

Установка Gitea на Ubuntu с помощью Docker
В этой статье разберём, как развернуть Gitea на Ubuntu с использованием Docker. Если вы когда-нибудь задумывались: «Чем поднять свой Git без боли и адских зависимостей?» — эта инструкция для вас. Gitea — простой, легковесный и очень быстрый способ получить свой self-hosted git-сервер, а Docker в связке с Ubuntu снимает головную боль с настройкой окружения и обновлениями. Под катом — только практика, минимальный булшит и максимум рабочих команд.
Как это работает?
Gitea — это легковесная альтернатива GitLab и GitHub, которую можно развернуть буквально за пару минут. Работает на Go, запускается практически на чем угодно и идеально подходит для небольших команд и личных проектов. Docker здесь решает всё: один контейнер — и у вас уже готовый сервер с веб-интерфейсом, API и всеми фишками git-хостинга. Классика DevOps — инфраструктура как код, и всё это под контролем.
- Запускается одной командой — не нужно возиться с зависимостями.
- Изолировано — контейнер не лезет в ваш основной софт.
- Масштабируемо — можно быстро перенести, обновить, или даже откатить сервис.
Быстрый старт: установка и настройка Gitea через Docker
# 1. Устанавливаем Docker (если ещё не стоит)
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
# 2. (Рекомендуется) Добавить себя в группу docker для запуска без sudo
sudo usermod -aG docker $USER
# <-- После этого лучше перелогиниться!
# 3. Создадим директории для хранения данных Gitea и базы
mkdir -p ~/gitea/{data,db}
# 4. Запуск Gitea и PostgreSQL (можно через Docker Compose, но покажу на примере docker run)
## Запускаем PostgreSQL
docker run -d --name gitea-db \
-e POSTGRES_USER=gitea \
-e POSTGRES_PASSWORD=supersecretpass \
-e POSTGRES_DB=giteadb \
-v ~/gitea/db:/var/lib/postgresql/data \
--restart=always \
postgres:16
## Запускаем Gitea
docker run -d --name gitea \
-p 3000:3000 -p 222:22 \
-e USER_UID=1000 -e USER_GID=1000 \
-e GITEA__database__DB_TYPE=postgres \
-e GITEA__database__HOST=gitea-db:5432 \
-e GITEA__database__NAME=giteadb \
-e GITEA__database__USER=gitea \
-e GITEA__database__PASSWD=supersecretpass \
-v ~/gitea/data:/data \
--link gitea-db:db \
--restart=always \
gitea/gitea:latest
Теперь заходим на http://your-server-ip:3000
и заполняем финальные настройки через веб-интерфейс. Если хочется хардкорнее — поднимаем всё через docker-compose
(см. примеры ниже).
Примеры и типовые кейсы
Давайте разберём, где Gitea на Docker особенно заходит, а где могут быть нюансы:
Кейс | Плюсы | Минусы | Рекомендации |
---|---|---|---|
Личный git-сервер / pet-проекты | Минимум ресурсов, 5 мин на развёртывание | Рутовые права, если не продумал данные заранее | Используй отдельного пользователя, хранение данных вне контейнера |
Командная разработка (10-30 чел) | Быстрая интеграция, CI/CD через Actions, LDAP | Без продвинутых инструментов (kanban, registry) | Смотри в сторону Gitea Actions, интеграции через webhooks |
Корпоративная инфраструктура | Open Source, легко автоматизировать | Нет продвинутой RBAC и аудита как у GitLab | Сопровождай скриптами и мониторингом, бэкапь данные |
Сравнение: Gitea vs другие решения
Параметр | Gitea | Gogs | GitLab CE | Gerrit |
---|---|---|---|---|
Память (минимум) | <200 Мб | ~100 Мб | >2 Гб | >1 Гб |
Время установки | 3-5 мин | 2-4 мин | 30-60 мин | 20-40 мин |
Интерфейс | Веб, API | Веб, API | Веб, API | Веб, REST API |
CI/CD | Actions (бета) | Нет | GitLab CI (топ) | Плагины |
Скрипты и автоматизация: что можно сделать крутого?
- Автобэкапы через cron и
docker cp
(или volumerize). - Интеграция с Telegram/Slack через webhooks.
- Мониторинг контейнеров через Prometheus + Grafana.
- Автоматическая выдача прав через API.
- Переезд между серверами — вытащил volume, воткнул на новый — и всё работает.
- Инфраструктура как код: весь деплой зашит в
docker-compose.yml
и пару ansible-ролей.
Альтернативные команды и примеры для Docker Compose
Если хочется по-красивому:
# docker-compose.yml для Gitea + Postgres
version: "3"
services:
db:
image: postgres:16
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=supersecretpass
- POSTGRES_DB=giteadb
volumes:
- ./db:/var/lib/postgresql/data
restart: always
gitea:
image: gitea/gitea:latest
depends_on:
- db
environment:
- USER_UID=1000
- USER_GID=1000
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=db:5432
- GITEA__database__NAME=giteadb
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=supersecretpass
volumes:
- ./gitea:/data
ports:
- "3000:3000"
- "222:22"
restart: always
# Запуск
docker-compose up -d
Полезные ссылки
- Официальная документация Gitea
- Docker Hub: Gitea
- Awesome Gitea — плагины, темы, скрипты
- Gogs (аналог Gitea)
- VPS для своего Gitea
- Выделенный сервер для командной работы
Интересные факты и нестандартные сценарии
- Можно использовать Gitea не только как git-сервер, а ещё как приватный pastebin или markdown-блог — прямо через wiki.
- Гибкая интеграция с внешними CI/CD (Drone, Jenkins, GitHub Actions runner) позволяет строить full-stack пайплайны для любых языков.
- Скрипты миграции с GitHub и GitLab в комплекте — прощай, lock-in!
- Via API можно автоматически админить репозитории, управлять командами, даже комментировать тикеты из скриптов.
- Запуск на ARM — спокойно заводится даже на Raspberry Pi.
Вывод: стоит ли использовать Gitea на Docker?
Если нужен свой git-сервер без избыточных килотонн зависимостей и PHP/Java в проде — Gitea на Docker идеальный выбор. Простой деплой, автообновление, лёгкий перенос, дружелюбный API и вся нужная базовая функциональность. Для pet-проектов, небольших команд и even продакшн — мастхэв!
- Запускается за минуты, не требует танцев с бубном.
- Всё — как сервис, весь стек изолирован.
- Легко автоматизировать и бэкапить.
Если хочется стабильную и дешёвую площадку — смотри VPS или выделенный сервер под свои нужды — ставь Gitea и экономь нервы!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.