Обзор развертывания 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.
Скрипт развертывания выполняет следующие действия:
-
Устанавливает Docker и необходимые пакеты, включая
docker-compose. -
Создает каталог
/opt/giteaдля определения приложения. -
Создает каталог
/srv/giteaдля постоянного хранения данных. -
Генерирует файл
docker-compose.ymlв директории/opt/gitea. -
Настраивает системный часовой пояс.
-
Запускает контейнер 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:
-
Остановка Gitea:
-
Запуск прокси Nginx:
-
Остановка прокси Nginx:
-
Обновление Gitea: Для обновления версии Gitea измените переменную
gitea_versionв конфигурации, обновите тег образа в/opt/gitea/docker-compose.ymlдо требуемой версии (например,gitea/gitea:<new_version>), а затем перезапустите сервис: