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

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

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

  • На сервере должна быть установлена Docker и Docker Compose.
  • Для работы с Let's Encrypt понадобится интернет‑связь, а также валидный домен, у которого можно получить сертификаты.
  • Папки /opt/redmine и /data/nginx должны быть доступны для записи процессу установки.

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

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

/opt/redmine
├── docker-compose.yml          # Конфигурация Docker Compose
└── (другие файлы, создаваемые в процессе установки)

 /data/nginx
├── user_conf.d
│   └── <prefix><server_id>.<zone>.conf   # Конфигурация Nginx для Redmine
├── nginx-certbot.env           # Переменные окружения для certbot
└── (другие файлы, связанные с сертификатами и конфигурацией Nginx)

Кроме того, существует внешний Docker‑volume nginx_secrets, который хранит сертификаты Let’s Encrypt и ключи, созданные контейнером jonasal/nginx-certbot.

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

  • Папка /opt/redmine и её содержимое принадлежат пользователю root с правами 0644.
  • Конфигурационные файлы, такие как docker-compose.yml и конфигурация Nginx, также находятся под владельцем root и имеют права 0644.
  • Контейнеры запускаются под собственным пользователем внутри контейнера, а не как root на хосте, благодаря настройкам Docker Compose.
  • Внутри контейнера MySQL хранит пароль в переменной окружения MYSQL_ROOT_PASSWORD. Он передаётся в контейнер redmine через переменную REDMINE_DB_PASSWORD.

Базы данных

Контейнер redmine-mysql использует образ mysql:8.0:

Параметр Значение
MYSQL_ROOT_PASSWORD {{ REDMINE_MYSQL_PASSWORD }}
MYSQL_DATABASE redmine
healthcheck Проверка доступности MySQL через mysqladmin ping

Контейнер redmine подключается к базе по имени сервиса db и использует переменную REDMINE_DB_PASSWORD для аутентификации.

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

Список контейнеров

Сервис Образ Контейнер Перезапуск Зависимости
db mysql:8.0 redmine-mysql always
redmine redmine redmine always db
nginx jonasal/nginx-certbot:latest redmine-nginx unless-stopped redmine

Как запустить

  1. Перейти в каталог /opt/redmine:
cd /opt/redmine
  1. Запустить контейнеры в фоновом режиме:
docker compose up -d

При первом запуске контейнер redmine-nginx автоматически запросит сертификаты Let’s Encrypt, используя переменную CERTBOT_EMAIL=hkadm@hostkey.com.

Как остановить

cd /opt/redmine
docker compose down

Как обновить

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

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

Контейнер redmine-nginx основан на образе jonasal/nginx-certbot, который сочетает в себе Nginx и Certbot.

Конфигурация Nginx

Файл конфигурации размещается в /data/nginx/user_conf.d/<prefix><server_id>.<zone>.conf и содержит:

  • Прослушивание портов 80 и 443.
  • Использование сертификатов Let’s Encrypt, расположенных в /etc/letsencrypt/live/<prefix><server_id>.<zone>/.
  • Прокси‑переадресацию запросов, приходящих по пути {{ external_path }}, на контейнер redmine по адресу http://redmine:3000.
  • Поддержку WebSocket через заголовки Upgrade и Connection.

Сетевые настройки

  • Внутренний Docker‑сеть позволяет контейнерам redmine и nginx обращаться друг к другу по именам сервисов.
  • На хосте открыты порты 80 и 443, которые перенаправляются в контейнер redmine-nginx.

Настройки прав, запуск, остановка и обновление

Действие Команда Описание
Запустить сервисы docker compose up -d Поднимает все контейнеры в фоновом режиме.
Остановить сервисы docker compose down Останавливает и удаляет контейнеры, но сохраняет данные.
Обновить образы docker compose pull Загружает последние версии образов.
Переустановить сервисы docker compose up -d после pull Перезапускает контейнеры с новыми образами.

После выполнения команд docker compose up -d сервисы будут доступны по адресу, указанному в конфигурации Nginx ({{ prefix }}{{ server_id }}.{{ zone }}).

Заключение

Установка Redmine через Docker Compose обеспечивает изоляцию компонентов, автоматическое обновление и простую настройку HTTPS с Let’s Encrypt. Управление сервисами осуществляется простыми командами Docker Compose, а конфигурационные файлы находятся в удобных для правки местах на хосте.

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