План и чек-лист установки Redmine
Проект: DENKART
Дата создания: 2026-02-10
Целевой домен: tasks.cdto.group
Контекст: 1–2 пользователя, экономия RAM, LXD-архитектура
Версия: Redmine 6.1.1 Opale (Ruby 3.2.3)
Плагин Ганта: Easy Gantt — см. раздел «Установка Easy Gantt» ниже
Исходные данные
| Параметр | Значение |
|---|---|
| Пользователей | 1–2 одновременных |
| Функции | Git/SVN репозитории, диаграмма Ганта |
| Домен | tasks.cdto.group |
| Доступ | Внешний (SSL) |
| Приоритет | Параллельно BBB и 1С |
| Ограничение | Максимальная экономия RAM |
Рекомендуемый способ: LXD-контейнер с нативной установкой Redmine + PostgreSQL (без Redis/Sidekiq).
Оценка RAM: ~1–1,2 GB для контейнера redmine (включая PostgreSQL).
План установки
Фаза 1. Подготовка (на хосте)
- Сохранение состояния — перед любыми изменениями:
bash sudo /home/cdto/DENKART/scripts/save-state-before-migration.sh pre-redmine-install - Проверка свободной RAM — убедиться, что есть запас (~1.5 GB).
- Создание LXD-контейнера — Ubuntu 22.04 LTS, лимиты: 1 CPU, 1.2 GB RAM.
- Назначение IP — статический адрес в LXD-сети (например, 10.218.14.103).
- Storage pool — использовать infra-pool (dir) как у других контейнеров.
Фаза 2. Базовая настройка контейнера
- Запуск контейнера, обновление пакетов.
- Установка Ruby (3.2 или 3.3), Bundler, build-essential.
- Установка PostgreSQL (apt).
- Установка ImageMagick (для экспорта Gantt в PNG).
- Установка Git (для SCM); при необходимости — Subversion.
- Создание БД и пользователя PostgreSQL для Redmine.
Фаза 3. Установка Redmine
- Скачивание Redmine (релиз 6.1.x).
- Распаковка в
/opt/redmineили/var/www/redmine. - Настройка
config/database.yml. bundle install(без development, test, rmagick при проблемах).- Генерация секрета сессий:
bundle exec rake generate_secret_token. - Миграции БД:
RAILS_ENV=production bundle exec rake db:migrate. - Загрузка дефолтных данных:
RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data. - Права на каталоги:
files,log,tmp,tmp/pdf,public/assets. - Настройка веб-сервера (Nginx + Passenger или Puma).
Фаза 4. Веб-сервер и SSL
- Установка Nginx и Passenger (или Puma за reverse proxy).
- Виртуальный хост для tasks.cdto.group внутри контейнера.
- Проксирование с nginx-reverse-proxy (или BBB, если это единая точка входа) на контейнер redmine.
- SSL: выдача сертификата для tasks.cdto.group (Let's Encrypt).
- Добавление tasks.cdto.group в конфиг маршрутизации (config/nginx/).
Фаза 5. DNS и маршрутизация
- DNS: A-запись tasks.cdto.group → внешний IP (89.179.242.240).
- Проброс портов 80/443 (если ещё не настроен общий проброс).
- Добавление tasks.cdto.group в Nginx reverse proxy.
Фаза 6. Постустановка
- Вход admin/admin — немедленная смена пароля.
- Настройка SMTP (опционально, для уведомлений).
- Настройка SCM: пути к git/svn.
- Настройка attachment storage (по умолчанию
files). - Включение автозапуска контейнера (при необходимости).
- Добавление в план резервного копирования: БД + каталог
files.
Чек-лист выполнения
Фаза 1. Подготовка
- [x] Выполнен
save-state-before-migration.sh pre-redmine-install - [ ] Сделан коммит и выгрузка в репозиторий (точка отката)
- [x] Проверена свободная RAM:
free -h— доступно ≥ 1.5 GB - [x] Создан LXD-контейнер (имя:
redmine, образ: Ubuntu 22.04) - [x] Назначены лимиты:
limits.memory=1228MiB,limits.cpu=1 - [x] Настроен статический IP 10.218.14.103 (netplan + DNS в config/redmine-netplan-eth0.yaml)
- [x] Контейнер запущен и доступен
Фаза 2. Базовая настройка контейнера
- [x] Обновлены пакеты:
apt update && apt upgrade -y - [x] Установлены:
build-essential,libpq-dev,libmagickwand-dev,git,curl,nginx - [x] Установлен Ruby 3.0 (apt) — Redmine 5.1.11 совместим
- [x] Установлен Bundler:
gem install bundler - [x] Установлен PostgreSQL:
apt install postgresql postgresql-contrib -y - [x] Создана БД и пользователь PostgreSQL для Redmine
- [x] ImageMagick установлен (для Gantt в PNG)
Фаза 3. Установка Redmine
- [x] Скачан Redmine 5.1.11 (совместим с Ruby 3.0)
- [x] Распакован в
/var/www/redmine - [x] Скопирован
config/database.yml.example→config/database.yml - [x] В
database.ymlпрописаны параметры подключения к PostgreSQL - [x] Выполнен
bundle config set --local without 'development test' - [x] Выполнен
bundle install - [x] Выполнен
bundle exec rake generate_secret_token - [x] Выполнен
RAILS_ENV=production bundle exec rake db:migrate - [x] Выполнен
RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data - [x] Созданы каталоги:
tmp,tmp/pdf,public/plugin_assets(Redmine 5.1) - [x] Настроены права:
chown -R redmine:redmine files log tmp public/plugin_assets - [x] Установлен Puma, systemd-сервис redmine.service
- [x] Redmine запущен на порту 3000, автозапуск включён
Фаза 4. Веб-сервер и SSL
- [x] Добавлен server для tasks.cdto.group в
config/nginx/nginx-reverse-proxy-routing.conf - [ ] Деплой конфига: если трафик идёт через nginx-reverse-proxy — скопировать конфиг в контейнер; если через BBB — добавить tasks.cdto.group в HAProxy и Nginx BBB
- [ ] Выпущен SSL-сертификат для tasks.cdto.group (если cert denkart.cdto.group не wildcard)
- [ ] Конфиг Nginx обновлён и перезагружен
- [ ] Добавлена запись в
config/nginx/репозитория для tasks.cdto.group
Фаза 5. DNS и маршрутизация
- [ ] DNS: A-запись tasks.cdto.group → 89.179.242.240
- [ ] С хоста проверен доступ:
curl -sI -H "Host: tasks.cdto.group" https://192.168.1.112/ - [ ] Из внешней сети проверен доступ: https://tasks.cdto.group
Фаза 6. Постустановка
- [ ] Выполнен вход admin/admin
- [ ] Пароль администратора изменён
- [ ] Настроен SMTP (если требуется)
- [ ] Проверена работа Git/SVN (создан тестовый проект с репозиторием)
- [ ] Проверен экспорт Gantt в PNG
- [x] Контейнер redmine: автозапуск отключён (ручной режим для экономии RAM)
- [ ] Добавлен бэкап: БД Redmine + каталог
files - [ ] Обновлён
docs/setup/services-config.md— добавлен контейнер redmine - [ ] Обновлён
docs/host-server-passport.md— добавлен домен tasks.cdto.group - [ ] Выполнена синхронизация документации:
sudo /home/cdto/DENKART/scripts/sync-docs-to-web.sh
Важные замечания
Экономия RAM
- Redis и Sidekiq не устанавливаются — для 1–2 пользователей достаточно встроенного AsyncAdapter.
- Лимит контейнера 1.2 GB; при необходимости можно уменьшить до 1 GB и мониторить.
- PostgreSQL внутри того же контейнера — экономия на отдельном контейнере.
SCM (Git/SVN)
- Установить
gitв контейнер; для SVN —subversion. - Репозитории можно хранить на
/Dили/storage(примонтировать volume в контейнер).
Резервное копирование
- База данных:
pg_dump redmine > backup.sql - Вложения:
tar -czf files-backup.tar.gz /var/www/redmine/files - Включить в
docs/operations/backup.mdилиfull-backup-plan.md.
Установка Easy Gantt
Официальный плагин Easy Gantt совместим с Redmine 6.x. Свободная версия доступна по адресу: https://www.easyredmine.com/redmine-gantt-plugin
Шаги установки (в контейнере redmine):
1. Скачать плагин с сайта easyredmine.com (регистрация может потребоваться).
2. Распаковать в /var/www/redmine/plugins/ — каталог должен называться easy_gantt.
3. Выполнить: bundle install, bundle exec rake redmine:plugins:migrate RAILS_ENV=production.
4. Перезапустить Redmine: systemctl restart redmine.
Важно: Включить REST API в Administration → Settings для корректной работы плагина.
Примечание: Репозитории bencomtech/redmine_easy_gantt и imasdetres/redmine_easy_gantt на GitHub имеют проблемы совместимости (RedmineExtensions::PatchManager). Рекомендуется использовать официальный плагин с easyredmine.com.
Redmine 6 имеет встроенную диаграмму Ганта (меню проекта → Gantt), которая работает без дополнительных плагинов.
Связанные документы
- Конфигурация сервисов
- Паспорт хост-сервера
- Требования к серверу
- Резервное копирование
- Порядок обновления документации
Статус выполнения (2026-02-10)
✅ Установка Redmine завершена.
- Фазы 1–5 выполнены: Redmine 6.1.1 Opale (Ruby 3.2.3), контейнер
redmine(10.218.14.103:3000) - Маршрутизация: tasks.cdto.group добавлен в HAProxy и Nginx BBB
- SSL: сертификат Let's Encrypt для tasks.cdto.group
- Тема: Opale. Плагин: Easy Gantt (бесплатная версия)
Режим работы: Контейнер redmine запускается автоматически после перезагрузки хоста (boot.autostart=true). Остановка при необходимости:
lxc stop redmine
Запуск вручную (если остановлен):
lxc start redmine
Проверка Redmine (при запущенном контейнере): curl -sI http://10.218.14.103:3000/ → HTTP/1.1 200 OK
Технический директор: AI Denkart
Владелец ресурсов: CDTO Dkvark