Обзор развертывания Redmine на сервере¶
Предварительные требования и базовые условия¶
Перед доступом к развернутому приложению на сервере должны быть выполнены следующие требования:
-
Операционная система: Дистрибутив Linux, совместимый с Docker Engine.
-
Привилегии: Для управления контейнерами Docker и системными службами требуются права root или привилегии
sudo. -
Домен: Приложение настроено для работы в зоне
hostkey.in. -
Порты: Внешний доступ предоставляется через порт
443(HTTPS) и порт80(HTTP для перенаправления SSL).
FQDN финальной панели¶
Приложение доступно по следующему формату полного доменного имени (FQDN):
redmine<Server ID>.hostkey.in:443
Замените <Server ID> на конкретный идентификатор, назначенный экземпляру сервера.
Структура файлов и каталогов¶
Развертывание использует следующую структуру каталогов для конфигурации, данных и сертификатов:
-
/opt/redmine: Содержит файл конфигурации Docker Compose. -
/data/nginx/user_conf.d: Хранит файлы конфигурации блоков сервера Nginx. -
/etc/letsencrypt: Хранит SSL-сертификаты и ключи, управляемые Certbot. -
/data/nginx/nginx-certbot.env: Файл окружения для конфигурации Nginx-Certbot.
Процесс установки приложения¶
Приложение развертывается с использованием контейнеров Docker, оркестрируемых через Docker Compose. Установка включает следующие компоненты:
-
База данных: MySQL версии
8.0. -
Приложение: Redmine (образ по умолчанию).
-
Прокси: Nginx с интеграцией Certbot (
jonasal/nginx-certbot:latest).
Развертывание инициируется запуском команды Docker Compose в каталоге /opt/redmine.
Контейнеры Docker и их развертывание¶
Система состоит из трех основных контейнеров, определенных в файле docker-compose.yml, расположенном по пути /opt/redmine/docker-compose.yml.
| Имя контейнера | Образ | Описание |
|---|---|---|
redmine-mysql | mysql:8.0 | Служба базы данных для Redmine. |
redmine | redmine | Основная служба приложения Redmine. |
redmine-nginx | jonasal/nginx-certbot:latest | Обратный прокси и завершение SSL-соединений. |
Контейнеры настроены со следующими политиками перезапуска:
-
redmine-mysql:always -
redmine:always -
redmine-nginx:unless-stopped
Зависимости настроены так, что контейнер redmine запускается только после того, как redmine-mysql станет здоровым, а redmine-nginx — только после того, как redmine станет здоровым.
Прокси-серверы¶
Приложение использует контейнер обратного прокси Nginx (redmine-nginx) для обработки входящего трафика.
-
SSL/TLS: Включено через сертификаты Let's Encrypt, управляемые Certbot.
-
Путь к сертификату: Сертификаты монтируются из тома
nginx_secretsв/etc/letsencrypt. -
Конфигурация: Блок сервера определен в файле
/data/nginx/user_conf.d/redmine<Server ID>.hostkey.in.conf. -
Настройки прокси:
-
Слушает порты
443(SSL) и80. -
Пересылает трафик в контейнер Redmine по адресу
http://redmine:3000. -
Поддерживает апгрейд WebSocket.
-
Заголовки
X-Forwarded-Host,X-Forwarded-Server,X-Real-IPиX-Forwarded-Forпередаются на бэкенд.
Базы данных¶
Приложение использует базу данных MySQL для хранения данных.
-
Метод подключения: Внутренняя сетевая коммуникация Docker.
-
Имя базы данных:
redmine -
Хост:
db(внутреннее имя контейнера) -
Аутентификация: Управляется через переменные окружения (
MYSQL_ROOT_PASSWORD,REDMINE_DB_PASSWORD). -
Проверка состояния (Health Check): Контейнер базы данных выполняет проверку состояния с помощью команды
mysqladmin pingкаждые 30 секунд.
Доступные порты для подключения¶
Следующие порты открыты для внешнего и внутреннего взаимодействия:
-
Порт 443: Трафик HTTPS (основной доступ).
-
Порт 80: Трафик HTTP (используется для перенаправления SSL и валидации Let's Encrypt).
-
Порт 3000: Внутренний порт, используемый контейнером Redmine (не открыт для внешнего доступа).
Запуск, остановка и обновление¶
Управление службами осуществляется с помощью команд Docker Compose, выполняемых в каталоге /opt/redmine.
-
Запуск/Перезапуск служб:
-
Остановка служб:
-
Просмотр логов:
-
Обновление образов: Для обновления приложения загрузите последние образы и перезапустите контейнеры:
Расположение файлов конфигурации и данных¶
Ключевые файлы конфигурации и места хранения данных указаны ниже:
-
Docker Compose:
/opt/redmine/docker-compose.yml -
Конфигурация Nginx:
/data/nginx/user_conf.d/redmine<Server ID>.hostkey.in.conf -
SSL-сертификаты:
/etc/letsencrypt/live/redmine<Server ID>.hostkey.in/ -
Окружение Nginx:
/data/nginx/nginx-certbot.env
Настройки прав доступа¶
Каталоги развертывания и файлы принадлежат пользователю и группе root со следующими правами доступа:
-
/opt/redmine:0644(Каталог создан с правами владельца root). -
/opt/redmine/docker-compose.yml:0644. -
/data/nginx/user_conf.d/*.conf:0644.