Гид по технологиям

Установка Gitea в Docker на Ubuntu 18.04 — пошаговое руководство

• 7 min read • DevOps • Обновлено 18 Nov 2025
Gitea в Docker на Ubuntu 18.04 — пошагово
Gitea в Docker на Ubuntu 18.04 — пошагово

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

Введение

Обложка: логотип и интерфейс 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.

Что мы сделаем

  1. Установим Docker-CE
  2. Установим Docker Compose
  3. Развернём Gitea в контейнере Docker
  4. Проведём пост-инсталляцию Gitea
  5. Создадим первый репозиторий
  6. Выполним первый коммит и 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"

Добавление репозитория Docker для Ubuntu

Команда add-apt-repository автоматически обновит список репозиториев. Далее установим конкретную версию Docker CE, использованную в исходном руководстве:

sudo apt policy docker-ce  
sudo apt install docker-ce=18.06.1~ce~3-0~ubuntu

Установка пакета Docker CE

После установки запустите и включите службу Docker:

sudo systemctl start docker  
sudo systemctl enable docker

Проверьте установку:

docker version

Проверка версии Docker

Или выполните тестовый контейнер:

docker run hello-world

Результат 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 version

Docker 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

Проверка списка docker network

Подготовка каталога и файлов развертывания

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

Просмотр логов docker-compose

Контейнеры db (5432), gitea (3000) и traefik (80/443) должны быть запущены.


Шаг 4 — Пост-инсталляция Gitea

Откройте браузер и перейдите по адресу вашего Gitea, например:

https://git.hakase-labs.io/

Запущенный Gitea в Docker

Перейдите к странице установки:

https://git.hakase-labs.io/install

Конфигурация базы данных

На странице установки укажите параметры PostgreSQL — хост: db, имя базы, пользователя и пароль (в примере — gitea/gitea).

Инсталлятор Gitea: настройка БД

Общая конфигурация Gitea

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

Общие настройки Gitea

Переведённые UI-поля в инсталляторе:

  • Site title -> Заголовок сайта
  • SSH Server Domain -> Домен SSH-сервера
  • Gitea Base URL -> Базовый URL Gitea

Администратор

Создайте учётную запись администратора: имя пользователя, пароль, email.

Настройки администратора Gitea

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

Дашборд пользователя 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 успешно установлен

Поздравляем — 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 для уменьшения операционной нагрузки.

Мини‑методология развёртывания (быстрая чек‑листа)

  1. Подготовить сервер Ubuntu (с обновлениями, минимальная защита).
  2. Установить Docker и Docker Compose.
  3. Создать сеть hakasenet и структуру каталогов deployment.
  4. Подготовить traefik.toml и acme.json (правильный email и права).
  5. Запустить docker-compose up -d и проверить состояние.
  6. Пройти установщик Gitea через веб-интерфейс.
  7. Настроить резервное копирование каталогов ./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-сервис.

Ресурсы и ссылки


Короткое объявление (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-окружений дополнительно планируйте бэкапы, мониторинг и стратегию обновлений.


Справочная литература

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро