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

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

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

Для успешного развертывания приложения необходимо наличие следующих компонентов и условий: - Операционная система на базе Ubuntu. - Установленный пакетный менеджер apt. - Доступ к серверу с правами root или возможность выполнения команд через sudo. - Наличие свободного порта для веб-интерфейса (по умолчанию 3000 внутри контейнера, маппится на внешний порт, указанный в конфигурации). - Наличие свободного порта для SSH-доступа к репозиториям (по умолчанию 22 внутри контейнера, маппится на внешний порт). - Доступ к интернету для загрузки образов Docker и получения SSL-сертификатов.

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

Приложение и его компоненты размещаются в следующих директориях: - /opt/gitea — каталог для хранения конфигурации Docker Compose самого приложения Gitea. - {{ gitea_data_dir }} — каталог для хранения данных приложения (репозитории, базы данных, файлы сессий). Владелец каталога — пользователь {{ gitea_user }}. - /root/nginx — каталог для конфигурации прокси-сервера и сертификатов. - /data/nginx/user_conf.d — каталог для пользовательских конфигурационных файлов Nginx. - /data/nginx/nginx-certbot.env — файл переменных окружения для настройки Certbot. - /etc/timezone и /etc/localtime — файлы настройки часового пояса сервера.

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

Установка выполняется в два этапа: подготовка окружения и запуск контейнеров.

  1. Устанавливаются необходимые пакеты:
  2. docker (через роль docker-managed-install).
  3. docker-compose.

  4. Создается каталог /opt/gitea с правами доступа 0755 для пользователя root.

  5. Создается каталог для данных приложения {{ gitea_data_dir }} с правами доступа 0755 для пользователя {{ gitea_user }}.

  6. Генерируется файл конфигурации /opt/gitea/docker-compose.yml со следующими параметрами:

  7. Используется образ gitea/gitea:{{ gitea_version }}.
  8. Имя контейнера: gitea.
  9. Переменные окружения: USER_UID=1000, USER_GID=1000.
  10. Политика перезапуска: always.
  11. Монтирование тома данных: {{ gitea_data_dir }}:/data.
  12. Монтирование файлов часового пояса: /etc/timezone и /etc/localtime.
  13. Открытие портов: {{ gitea_port }}:3000 и {{ gitea_ssh_port }}:22.

  14. Настраивается часовой пояс сервера на Europe/Moscow путем записи в файл /etc/timezone и создания символической ссылки /etc/localtime.

  15. Запускается контейнер Gitea с помощью команды docker-compose up -d в директории /opt/gitea.

Контейнеры Docker и их запуск

В системе развертываются два основных набора контейнеров:

Контейнер Gitea: - Запускается через docker-compose из файла /opt/gitea/docker-compose.yml. - Образ: gitea/gitea:{{ gitea_version }}. - Сеть: gitea (внутренняя сеть Docker). - Данные сохраняются в томе, смонтированном в /data внутри контейнера.

Контейнер Nginx с Certbot: - Запускается через docker compose up -d в директории /root/nginx. - Используется файл конфигурации /root/nginx/compose.yml. - Образ: jonasal/nginx-certbot:latest. - Политика перезапуска: unless-stopped. - Режим сети: host. - Переменная окружения CERTBOT_EMAIL установлена в hkadm@hostkey.com. - Монтируется внешний том nginx_secrets в /etc/letsencrypt для хранения сертификатов. - Монтируется каталог /data/nginx/user_conf.d в /etc/nginx/user_conf.d для конфигураций.

Прокси серверы

Для обработки входящего трафика и получения SSL-сертификатов используется контейнер Nginx с Certbot.

  • Конфигурация прокси генерируется в файле /root/nginx/compose.yml.
  • В конфигурационный файл /data/nginx/user_conf.d/{{ prefix }}{{ server_id }}.hostkey.in.conf добавляется правило проксирования:
  • Удаление существующей строки proxy_pass.
  • Добавление новой строки proxy_pass http://127.0.0.1:3000; внутри блока location /.
  • Сертификаты хранятся в томе nginx_secrets, смонтированном в /etc/letsencrypt.
  • Электронная почта для уведомлений от Let's Encrypt: hkadm@hostkey.com.

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

Права на файлы и директории устанавливаются следующим образом: - Директория /root/nginx имеет владельца root:root и права 0755. - Файл /root/nginx/compose.yml имеет владельца root:root и права 0644. - Директория /opt/gitea имеет владельца root:root и права 0755. - Директория данных {{ gitea_data_dir }} имеет владельца {{ gitea_user }}:{{ gitea_user }} и права 0755. - Контейнер Gitea запускается с фиксированными UID и GID (1000), что обеспечивает изоляцию процессов внутри контейнера.

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

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

Для Gitea: - Запуск: docker-compose up -d в директории /opt/gitea. - Проверка статуса: команда docker_container с параметром state: started для контейнера gitea. - Обновление: требуется обновление образа gitea/gitea:{{ gitea_version }} и перезапуск контейнера.

Для Nginx и Certbot: - Запуск: docker compose up -d в директории /root/nginx. - Команда выполняется с повторными попытками (до 5 раз с интервалом 10 секунд) в случае неудачи. - Обновление конфигурации требует регенерации файла /root/nginx/compose.yml и перезапуска контейнеров.

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