Установка Gitea в Docker на Ubuntu 18.04 — пошаговое руководство
С помощью Docker, PostgreSQL и Traefik можно быстро развернуть лёгкий Git-сервер Gitea на Ubuntu 18.04. В руководстве показаны подготовка окружения, docker-compose, настройка Traefik с Let’s Encrypt, пост-инсталляция Gitea, создание первого репозитория и тестовый коммит. Включены чеклисты, рекомендации по безопасности и план действий при ошибках.
Введение

Gitea — форк Gogs, лёгкий self-hosted Git-сервис, похожий на GitHub/Bitbucket/GitLab. Написан на Go, кроссплатформенный, может работать на минимальном железе и там, где доступна компиляция Go (Windows, Linux, macOS, ARM).
В этом руководстве шаг за шагом показано, как установить и настроить Gitea с помощью Docker, PostgreSQL и Traefik на Ubuntu 18.04 Server.
Для кого это руководство
- Системные администраторы и DevOps-инженеры, которые хотят быстрый self-hosted Git.
- Разработчики, желающие локальный приватный хост для репозиториев.
- Команды, которым важна простота развертывания и низкие требования к ресурсам.
Важно: предполагается, что у вас есть root-привилегии на Ubuntu 18.04.
Что мы сделаем
- Установим Docker-CE
- Установим Docker Compose
- Развернём Gitea в контейнере Docker
- Проведём пост-инсталляцию Gitea
- Создадим первый репозиторий
- Выполним первый коммит и push
Предварительные требования
- Ubuntu 18.04
- Права root или sudo
- Домен(ы) для Traefik (в примере использованы git.hakase-labs.io и traefik.hakase-labs.io)
Шаг 1 — Установка Docker-CE
Добавим репозиторий Docker и установим Docker-CE. Команды ниже выполняйте от имени пользователя с правами sudo.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
Команда add-apt-repository автоматически обновит список репозиториев. Далее установим конкретную версию Docker CE, использованную в исходном руководстве:
sudo apt policy docker-ce
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu
После установки запустите и включите службу Docker:
sudo systemctl start docker
sudo systemctl enable dockerПроверьте установку:
docker version
Или выполните тестовый контейнер:
docker run hello-world
Примечание: при установке более новой версии Docker используйте актуальную версию docker-ce и docker-compose.
Шаг 2 — Установка Docker Compose
Docker Compose упрощает запуск мультиконтейнерных приложений. Скачайте бинарный файл и сделайте его исполняемым:
sudo curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-composeПроверьте версию:
docker-compose versionDocker Compose установлен.
Шаг 3 — Развёртывание Gitea в Docker
Мы создадим docker-compose с тремя сервисами: PostgreSQL (db), Traefik (reverse proxy) и Gitea (server). Все файлы будут в каталоге deployment.
Создание Docker-сети
Сначала создадим внешнюю bridge-сеть для Traefik:
docker network ls
docker network create hakasenet
docker network ls
Подготовка каталога и файлов развертывания
mkdir deployment; cd deployment
touch docker-compose.yml
mkdir -p gitea/ postgres/
touch acme.json
chmod 600 acme.json
touch traefik.tomlСтруктура каталогов и файлов:
tree
Настройка PostgreSQL
Откроем docker-compose.yml и добавим сервис базы данных:
version: "3"
networks:
hakasenet:
external: true
internal:
external: false
services:
db:
image: postgres:9.6
restart: always
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=gitea
- POSTGRES_DB=gitea
labels:
- "traefik.enable=false"
networks:
- internal
volumes:
- ./postgres:/var/lib/postgresql/dataСохраните файл.
Настройка Traefik
Добавьте сервис Traefik в тот же docker-compose.yml под сервисом db:
traefik:
image: traefik:latest
command: --docker
ports:
- 80:80
- 443:443
labels:
- "traefik.enable=true"
- "traefik.backend=dashboard"
- "traefik.frontend.rule=Host:traefik.hakase-labs.io"
- "traefik.port=8080"
networks:
- hakasenet
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./traefik.toml:/traefik.toml
- ./acme.json:/acme.json
container_name: traefik
restart: alwaysТеперь создадим traefik.toml с базовой конфигурацией (включая ACME для Let’s Encrypt). Откройте traefik.toml и вставьте:
#Traefik Global Configuration
debug = false
checkNewVersion = true
logLevel = "ERROR"
#Define the EntryPoint for HTTP and HTTPS
defaultEntryPoints = ["https","http"]
#Define the HTTP port 80 and
#HTTPS port 443 EntryPoint
#Enable automatically redirect HTTP to HTTPS
[entryPoints]
[entryPoints.http]
address = ":80"
[entryPoints.http.redirect]
entryPoint = "https"
[entryPoints.https]
address = ":443"
[entryPoints.https.tls]
#Enable Traefik Dashboard on port 8080
#with basic authentication method
#hakase and password
[entryPoints.dash]
address=":8080"
[entryPoints.dash.auth]
[entryPoints.dash.auth.basic]
users = [
"hakase:$apr1$hEgpZUN2$OYG3KwpzI3T1FqIg9LIbi.",
]
[api]
entrypoint="dash"
dashboard = true
#Enable retry sending a request if the network error
[retry]
#Define Docker Backend Configuration
[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "hakase-labs.io"
watch = true
exposedbydefault = false
#Letsencrypt Registration
#Define the Letsencrypt ACME HTTP challenge
[acme]
email = "[email protected]"
storage = "acme.json"
entryPoint = "https"
OnHostRule = true
[acme.httpChallenge]
entryPoint = "http"Важно: замените email в блоке acme на ваш действительный адрес.
Настройка Gitea
Добавьте сервис Gitea в docker-compose.yml:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- internal
volumes:
- ./gitea:/data
ports:
- "3000"
- "22"
labels:
- "traefik.enabled=true"
- "traefik.backend=gitea"
- "traefik.frontend.rule=Host:git.hakase-labs.io"
- "traefik.docker.network=hakasenet"
- "traefik.port=3000"
networks:
- internal
- hakasenet
depends_on:
- db
- traefikСервис Gitea будет доступен через Traefik на git.hakase-labs.io. Порт внутри контейнера — 3000.
Развёртывание стека
Запустите все сервисы:
docker-compose up -dКоманда скачает образы и запустит контейнеры.

Проверьте состояние:
docker-compose psДля просмотра логов:
docker-compose logs
Контейнеры db (5432), gitea (3000) и traefik (80/443) должны быть запущены.
Шаг 4 — Пост-инсталляция Gitea
Откройте браузер и перейдите по адресу вашего Gitea, например:

Перейдите к странице установки:
https://git.hakase-labs.io/install
Конфигурация базы данных
На странице установки укажите параметры PostgreSQL — хост: db, имя базы, пользователя и пароль (в примере — gitea/gitea).

Общая конфигурация Gitea
Укажите Site title, SSH Server Domain (без https) и Gitea Base URL — укажите ваш домен https://git.hakase-labs.io.

Переведённые UI-поля в инсталляторе:
- Site title -> Заголовок сайта
- SSH Server Domain -> Домен SSH-сервера
- Gitea Base URL -> Базовый URL Gitea
Администратор
Создайте учётную запись администратора: имя пользователя, пароль, email.

Нажмите Install Gitea. После успешной установки вы попадёте на дашборд пользователя.

Шаг 5 — Создание первого репозитория
В интерфейсе пользователя нажмите кнопку “+” и выберите создание нового репозитория. Заполните поля (имя репозитория, описание, приватность) и нажмите Create Repository.

После создания вы увидите страницу репозитория.

Шаг 6 — Тестовый коммит
Настройте глобальные git-опции локально:
git config --global user.name "hakase"
git config --global user.email "[email protected]"Клонируйте репозиторий по HTTPS:
git clone https://git.hakase-labs.io/hakase/myrepo.gitПерейдите в каталог, отредактируйте README.md:
cd myrepo/
vim README.mdСделайте коммит и отправьте изменения:
git add .
git commit -m 'Edit the README.md file by hakase-labs'
git push origin masterВведите учётные данные, когда потребуется.

Проверьте страницу репозитория — изменения должны отобразиться.

Поздравляем — Gitea успешно развернут с помощью Docker на Ubuntu 18.04.
Когда этот подход не подойдёт (контрпример)
- Вам нужна корпоративная поддержка и SLA — лучше использовать платные решения или управляемые сервисы.
- Планируется масштабирование до сотен/тысяч репозиториев с высокой нагрузкой — рассмотрите Kubernetes и HA-архитектуру с репликацией БД.
- Необходимо сложное управление пользователями и интеграция с корпоративным AD/LDAP — Gitea поддерживает LDAP, но сложные политики удобнее реализовать в GitLab/GitHub Enterprise.
Альтернативные подходы
- Развёртывание без Docker: установка бинарника Gitea напрямую на систему для минимизации слоя виртуализации.
- Kubernetes: helm-чарты для Gitea + managed PostgreSQL + ingress (Traefik/NGINX) для production и масштабируемости.
- Managed Git: использовать GitHub/GitLab SaaS для уменьшения операционной нагрузки.
Мини‑методология развёртывания (быстрая чек‑листа)
- Подготовить сервер Ubuntu (с обновлениями, минимальная защита).
- Установить Docker и Docker Compose.
- Создать сеть hakasenet и структуру каталогов deployment.
- Подготовить traefik.toml и acme.json (правильный email и права).
- Запустить docker-compose up -d и проверить состояние.
- Пройти установщик Gitea через веб-интерфейс.
- Настроить резервное копирование каталогов ./gitea и ./postgres.
Контрольные списки по ролям
DevOps / Системный администратор
- Проверить DNS-записи для доменов (A/AAAA).
- Настроить firewall: открыть 80/443 (внешний), ограничить SSH доступ.
- Настроить автоматическое обновление и мониторинг контейнеров.
Администратор Gitea
- Создать глобальные политики доступа и команды.
- Включить 2FA для администраторов.
- Настроить LDAP/SMTP при необходимости.
Разработчик
- Настроить локальный git config.
- Проверить SSH ключи и права доступа.
- Обучить команду работе с приватными репозиториями.
Безопасность и жёсткая настройка
- Резервное копирование: регулярно бэкапьте ./gitea и ./postgres.
- SSL/HTTPS: Traefik с Let’s Encrypt автоматически выдаёт сертификаты — убедитесь, что порт 80 доступен для HTTP-выявления.
- SSH: если открываете порт 22, ограничьте доступ по IP или используйте отдельный SSH-прокси.
- Учетные записи: требуйте сложные пароли, включите 2FA для админов.
- Обновления: периодически обновляйте образы gitea, postgres и traefik и тестируйте на staging.
Отладка и план действий при ошибках
Проблема: Контейнеры не запускаются
- Выполните docker-compose ps и docker-compose logs.
- Посмотрите конкретные логи контейнера: docker logs
.
Проблема: Traefik не получает сертификат
- Убедитесь, что порт 80 открыт и домен указывает на сервер.
- Проверьте acme.json (правильные права 600) и email в конфиге.
Проблема: Gitea не может подключиться к БД
- Убедитесь, что в настройках инсталлятора указан хост db (имя сервиса docker-compose).
- Проверьте переменные POSTGRES_USER/PASSWORD/DB в docker-compose.
Откат изменений
- Остановите сервисы: docker-compose down.
- Восстановите бэкап ./postgres и ./gitea при необходимости.
Миграция и совместимость
- Для миграции с существующей Gitea/Gogs: используйте встроенные инструменты экспорта/импорта репозиториев и баз.
- Для перехода на Kubernetes: перенос данных требует безопасного бэкапа БД и файловой системы, затем развертывания StatefulSet для Postgres и Deployment для Gitea.
Критерии приёмки
- Контейнеры db, traefik и server запущены и healthy.
- Доступ по HTTPS: https://git.<ваш-домен>/ открывается без ошибок SSL.
- Инсталлятор Gitea прошёл успешно, админ может войти.
- Репозиторий создан, push работает без ошибок.
Глоссарий (1‑строчные определения)
- Docker: система контейнеризации для упаковки приложений.
- Docker Compose: инструмент для запуска мультиконтейнерных приложений.
- Traefik: динамический reverse-proxy и load-balancer с поддержкой Let’s Encrypt.
- Gitea: лёгкий self-hosted Git-сервис.
Ресурсы и ссылки
- Официальная документация Gitea: https://docs.gitea.io/en-us/
- Traefik: https://traefik.io/
- PostgreSQL: https://www.postgresql.org/
Короткое объявление (100–200 слов)
Развернута лёгкая система хостинга Git — Gitea — с использованием Docker, PostgreSQL и Traefik на Ubuntu 18.04. Руководство содержит пошаговые инструкции по установке Docker и Docker Compose, созданию docker-compose.yml с сервисами db/traefik/server, настройке Traefik для автоматического получения сертификатов Let’s Encrypt, пост-инсталляции Gitea, созданию репозитория и выполнению первого коммита. Включены чек-листы по ролям, рекомендации по безопасности, отладка и план отката.
Итог
Gitea — быстрое и лёгкое решение для self-hosted Git. Развёртывание через Docker и Traefik даёт простоту управления и автоматическую выдачу SSL. Для production-окружений дополнительно планируйте бэкапы, мониторинг и стратегию обновлений.
Справочная литература
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента