Перейти к содержанию

Обзор развертывания Gitea на сервере

Предварительные требования и базовые условия

Для успешного развертывания Gitea на сервере должны быть выполнены следующие требования:

  • Операционная система: Ubuntu (совместимая с менеджером пакетов apt).

  • Привилегии: Для установки и настройки требуется доступ с правами root или sudo.

  • Домен: Развертывание использует зону hostkey.in.

  • Сеть: На хосте должны быть установлены и работать Docker и Docker Compose.

  • Порты: Система открывает порты для HTTP, HTTPS и SSH, как определено в конфигурации.

FQDN итоговой панели

Экземпляр Gitea доступен по полностью квалифицированному доменному имени (FQDN) в следующем формате:

  • gitea<Server ID>.hostkey.in:443

Порт внешнего доступа настроен на 443 для защищенных соединений HTTPS, в то время как внутренний порт приложения — 3000.

Структура файлов и каталогов

Развертывание организует файлы конфигурации, данные и сертификаты в специфические директории файловой системы хоста:

  • Данные приложения: /srv/gitea (содержит репозитории Gitea, пользовательские данные и логи).

  • Бинарные файлы и конфигурация приложения: /opt/gitea (хранит определение Docker Compose для Gitea).

  • Конфигурация Nginx и SSL: /root/nginx (хранит файл Docker Compose для прокси и Certbot).

  • Пользовательская конфигурация Nginx: /data/nginx/user_conf.d (содержит специфические настройки сайтов для прокси).

  • Настройки системного часового пояса:

  • /etc/timezone

  • /etc/localtime (символическая ссылка на /usr/share/zoneinfo/Europe/Moscow)

Процесс установки приложения

Gitea разворачивается с помощью контейнеров Docker, управляемых Docker Compose. Установка включает настройку структуры каталогов и запуск сервиса со следующими спецификациями:

  • Версия ПО: Gitea версии 1.22.2.

  • Образ контейнера: gitea/gitea:1.22.2.

  • Имя контейнера: gitea.

  • Конфигурация пользователя:

  • USER_UID установлен в 1000.

  • USER_GID установлен в 1000.

  • Часовой пояс: Контейнер и хост настроены на использование Europe/Moscow.

Скрипт развертывания выполняет следующие действия:

  1. Устанавливает Docker и необходимые пакеты, включая docker-compose.

  2. Создает каталог /opt/gitea для определения приложения.

  3. Создает каталог /srv/gitea для постоянного хранения данных.

  4. Генерирует файл docker-compose.yml в директории /opt/gitea.

  5. Настраивает системный часовой пояс.

  6. Запускает контейнер Gitea в отсоединенном режиме (detached mode).

Права доступа и безопасность

Безопасность и контроль доступа управляются через сеть Docker и конфигурации уровня хоста:

  • Сеть контейнера: Gitea работает в изолированной сети Docker с именем gitea.

  • Политика перезапуска: Контейнер Gitea настроен с параметром restart: always для обеспечения высокой доступности.

  • Права доступа к директориям хоста:

  • /opt/gitea: Владелец root с правами 0755.

  • /srv/gitea: Владелец root (как определено gitea_user в исходном коде) с правами 0755.

  • /root/nginx: Владелец root с правами 0755.

Базы данных

Gitea по умолчанию использует внутреннюю базу данных SQLite внутри контейнера приложения, хранящуюся в постоянном томе (persistent volume), смонтированном в /srv/gitea на хосте. Параметры подключения к внешней базе данных в предоставленной конфигурации не определены.

Контейнеры Docker и их развертывание

Развертываются два основных сервиса Docker: приложение Gitea и прокси Nginx с Certbot.

Контейнер Gitea

Контейнер Gitea определен в файле /opt/gitea/docker-compose.yml.

  • Образ: gitea/gitea:1.22.2

  • Тома (Volumes):

  • /srv/gitea смонтирован в /data внутри контейнера.

  • Файлы часового пояса хоста смонтированы только для чтения в /etc/timezone и /etc/localtime.

  • Порты:

  • 3000:3000 (Веб-интерфейс).

  • 222:22 (SSH-интерфейс для операций Git).

Контейнер прокси Nginx

Сервис прокси определен в файле /root/nginx/compose.yml (генерируется из шаблона).

  • Образ: jonasal/nginx-certbot:latest

  • Политика перезапуска: unless-stopped.

  • Окружение:

  • CERTBOT_EMAIL: hkadm@hostkey.com.

  • Тома (Volumes):

  • nginx_secrets (внешний том) смонтирован в /etc/letsencrypt.

  • /data/nginx/user_conf.d смонтирован в /etc/nginx/user_conf.d.

  • Режим сети: host (использует сетевой стек хоста напрямую).

Серверы прокси

Для завершения SSL-сессий (SSL termination) и работы в качестве обратного прокси развертывание использует Nginx с Certbot.

  • Файл конфигурации: /data/nginx/user_conf.d/<prefix><server_id>.hostkey.in.conf.

  • Логика прокси: Конфигурация направляет трафик из корневого пути / на внутренний сервис Gitea по адресу http://127.0.0.1:3000.

  • SSL: Управляется автоматически контейнером nginx-certbot с использованием сертификатов Let's Encrypt, хранящихся в томе nginx_secrets.

  • Внешний путь: /.

  • Внутренний путь: /.

Настройки разрешений

Права доступа к файловой системе явно задаются в процессе развертывания для обеспечения корректного доступа:

Каталог/Путь Владелец Группа Режим
/opt/gitea root root 0755
/srv/gitea root root 0755
/root/nginx root root 0755
/root/nginx/compose.yml root root 0644

Расположение файлов конфигурации и данных

Ключевые файлы конфигурации и расположение данных указаны ниже:

  • Docker Compose для Gitea: /opt/gitea/docker-compose.yml.

  • Данные Gitea: /srv/gitea.

  • Compose для прокси Nginx: /root/nginx/compose.yml.

  • Конфигурация сайта Nginx: /data/nginx/user_conf.d/gitea<Server ID>.hostkey.in.conf.

  • Переменные окружения для Nginx: /data/nginx/nginx-certbot.env.

Доступные порты для подключения

Для подключения клиентов открываются следующие порты:

  • HTTPS (Веб-интерфейс): 443 (Внешний).

  • HTTP (Внутренний): 3000 (Используется внутренне Nginx для доступа к Gitea).

  • SSH (Операции Git): 222 (Внешний).

Запуск, остановка и обновление

Управление сервисами осуществляется через команды Docker и Docker Compose.

  • Запуск Gitea:

    cd /opt/gitea
    docker-compose up -d
    

  • Остановка Gitea:

    cd /opt/gitea
    docker-compose down
    

  • Запуск прокси Nginx:

    cd /root/nginx
    docker compose up -d
    

  • Остановка прокси Nginx:

    cd /root/nginx
    docker compose down
    

  • Обновление Gitea: Для обновления версии Gitea измените переменную gitea_version в конфигурации, обновите тег образа в /opt/gitea/docker-compose.yml до требуемой версии (например, gitea/gitea:<new_version>), а затем перезапустите сервис:

    cd /opt/gitea
    docker-compose pull
    docker-compose up -d
    

question_mark
Я могу вам чем-то помочь?
question_mark
ИИ Помощник ×