Redmine
Установка в Docker и эксплуатация версии 7.0.1. Трекеру задач двадцать лет, и летом 2026 он переехал на Rails 8, научился вебхукам и перерисовал навигацию. Ставим из официального образа, меряем аппетит и собираем грабли, на которые наступили сами.
Вердикт
- команде от 20 человек, где подписка за пользователя стала заметной строкой бюджета
- тем, кому нужны вики и форум на каждый проект в одном продукте с задачами
- разработке: встроенный обозреватель Git и Subversion, привязка коммитов к задачам
- кому важна неотзываемость - вендора нет, лицензию переписать некому
- если нужен канбан из коробки - в ядре его нет, только плагинами
- госзаказчикам: Redmine не в реестре отечественного ПО
- командам до 10 человек - бесплатных тарифов у конкурентов хватит
- кто не готов держать сервер и обновлять его сам
Трекер, которому двадцать лет
Первый коммит - 28 июня 2006 года. Юбилей апстрим отметил выпуском 7.0.
Redmine - веб-приложение для управления проектами на Ruby on Rails. Проекты и подпроекты, ролевой доступ, настраиваемые трекеры и рабочие процессы, диаграмма Ганта, календарь.
Сверх задач в ядро входит то, за что у других берут отдельные деньги: вики и форум на каждый проект, учет затраченного времени, пользовательские поля, LDAP и создание задач письмом.
Отдельная редкость - интеграция с системами контроля версий. Встроенный обозреватель репозитория показывает дифы и связывает коммиты с задачами, поддержаны Subversion, Git, Mercurial, Bazaar и CVS.
Компании за проектом нет вовсе. Разработку ведут волонтеры, деньги приходят от донатов и рекламы на сайте. Платной редакции, облака вендора и enterprise-лицензии не существует - весь продукт под GPL v2.
Важно: GitHub у Redmine - зеркало. Разработка идет в Subversion на svn.redmine.org, поэтому раздел Releases там пуст, а 6 тысяч звезд и три открытых issue ничего не говорят о продукте. Трекер живет на redmine.org.
Что принес мажор 7.0
Релиз вышел 30 июня 2026 года и закрыл 122 задачи.
Главная фича - вебхуки. Раньше Redmine наружу событий штатно не отдавал, и это был основной довод против него: трекер не во что воткнуть. Теперь есть, и мы их проверили живьем.
Под капотом переезд на Rails 8 и поддержка Ruby 4.0. Выброшены Raphael.js в пользу нативного SVG и гем html-pipeline, ChartJs переведен на ES-модули. Для двадцатилетнего Rails-приложения это главный признак, что оно живое.
Интерфейс продолжает меняться: переделаны шапка и навигация, улучшена поддержка RTL. Превью офисных документов через Pandoc расширены на xlsx и pptx.
Ставить надо именно 7.0.1, а не 7.0.0. В точечном релизе от 26 августа закрыты четыре уязвимости, включая хранимый XSS в форматтере Textile и обход проверки видимости задач через вложенные issue-relations.
Чем отличается от платных
Главная разница не в фичах, а в единице оплаты: сервер против человека.
| Продукт | Модель | Порог входа |
|---|---|---|
| Redmine на своем сервере | плата за сервер | от 500 руб/мес на всю команду |
| Яндекс Трекер | за пользователя | от 258 руб/польз./мес |
| Kaiten | за пользователя | 250-420 руб/польз./мес |
| YouGile | за пользователя | бесплатно до 10, далее 594 руб |
| Jira Cloud | за пользователя | от $7,91/польз./мес |
Точка окупаемости против Яндекс Трекера - два пользователя. На команде в 30 человек разрыв уже кратный: 500 рублей против 7740.
У такого счета есть вторая сторона. В подписку входит обслуживание, а свой сервер обновляете, бэкапите и чините вы. На пяти сотрудниках разница меньше часа работы админа, и SaaS там разумнее. Экономика Redmine начинает выигрывать примерно с двадцати человек.
Контекст. Купить Jira на свое железо с 30 марта 2026 года нельзя: Atlassian закрыл продажи Data Center новым клиентам. У существующих лицензии истекают 28 марта 2029 года, после чего продукт становится read-only. Для рынка on-prem трекеров это не подорожание, а исчезновение опции.
Что измерили на стенде
Апстрим требований к памяти и процессору не публикует вовсе, так что цифры только наши.
| Стенд | CPU2-RAM4-DISK50, Ubuntu 24.04.4 LTS |
| Версия и дата | Redmine 7.0.1, 27.09.2026 |
| Docker | 29.8.1, compose v5.5.1 |
| RAM в простое, весь стек | 267 MiB |
| - приложение (Puma) | 220 MiB |
| - PostgreSQL | 35 MiB |
| - Caddy | 12 MiB |
| Образы суммарно | 1,56 GB |
| Занято на диске | 3,9 GB из 48 |
| Pull образов | 92 с |
| Старт до первого ответа | 30 с |
| Итого с чистой машины | ~3,5 минуты |
| Перезапуск стека | 32 с |
| Ответ страницы, локально | 30 мс |
| Ответ через Caddy по HTTPS | 67 мс |
267 мегабайт - это мало. Репутация тяжелого ветерана на Rails замерами не подтверждается: Redmine легче Mattermost втрое и легче Zammad вдесятеро. Процессов Puma всего один, отсюда и аппетит.
Тарифа CPU2-RAM4-DISK50 хватает с большим запасом. В следующий уводят три вещи: Sidekiq с Redis, десяток плагинов и обзор крупных git-репозиториев - вот там нужен процессор.
Проверено на версии 7.0.1, 27 сентября 2026 года. На новых версиях результаты могут отличаться.
В маркетплейсе Fatmetal
Не хотите ставить руками?
Этот стек есть в маркетплейсе Fatmetal - можно не повторять установку из этого разбора вручную. Заказываете сервер, за пару минут получаете рабочий домен, валидный TLS и файл с доступами.
Рекомендуемая конфигурация:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe от 450 ₽/мес
Развертывание
Официальная инструкция апстрима - одиннадцать шагов вручную. Но контейнер есть, и он не сторонний.
В репозитории продукта нет ни Dockerfile, ни compose-файла: это чистое Rails-приложение. Зато на Docker Hub лежит library/redmine - Docker Official Image с 74 миллионами загрузок. Ставим из него.
Docker из официального репозитория
Образ Ubuntu приходит чистым, Docker на нем нет.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \ sudo tee /etc/apt/keyrings/docker.asc > /dev/null echo "deb [signed-by=/etc/apt/keyrings/docker.asc] \ https://download.docker.com/linux/ubuntu noble stable" | \ sudo tee /etc/apt/sources.list.d/docker.list sudo apt-get update && sudo apt-get install -y \ docker-ce docker-ce-cli containerd.io docker-compose-pluginСекреты - генерируем, не придумываем
Пароль базы и ключ сессий должны быть случайными.
DB_PASS=$(openssl rand -hex 16) SECRET=$(openssl rand -hex 64)compose.yaml с закрепленными тегами
Не latest: через месяц статья описывала бы не то, что ставится.
services: db: image: postgres:16.15-alpine environment: POSTGRES_USER: redmine POSTGRES_DB: redmine POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} volumes: [pgdata:/var/lib/postgresql/data] healthcheck: test: ["CMD-SHELL", "pg_isready -U redmine"] interval: 5s retries: 20 redmine: image: redmine:7.0.1 depends_on: db: { condition: service_healthy } environment: REDMINE_DB_POSTGRES: db REDMINE_DB_USERNAME: redmine REDMINE_DB_DATABASE: redmine REDMINE_DB_PASSWORD: ${POSTGRES_PASSWORD} SECRET_KEY_BASE: ${SECRET_KEY_BASE} volumes: [files:/usr/src/redmine/files] ports: ["127.0.0.1:3000:3000"]Запуск и первый вход
Схема базы накатывается сама при старте контейнера.
sudo docker compose up -d # через 30 секунд UI отвечает, логин admin / admin
Наружу приложение смотрит через обратный прокси - у нас это Caddy, он же берет сертификат Let's Encrypt. Порт 3000 остается на localhost.
Где может сломаться
Три случая, на которые мы наступили сами. Все три диагностируются плохо.
Причина. Энтрипоинт официального образа при каждом старте делает chown на каталог config. Если смонтировать туда файл с флагом :ro, chown падает и контейнер уходит в цикл перезапусков.
Решение. Монтировать конфиг без :ro. Заодно учтите: энтрипоинт меняет и права файла, с 600 на 644. Пароль SMTP внутри configuration.yml станет читаемым для любого локального пользователя.
Причина. Если не передать ни одной переменной с адресом базы, образ молча уходит на SQLite. Ошибки нет, контейнер поднимается, UI работает - а база лежит файлом внутри контейнера. Апстрим SQLite для многопользовательской работы прямо запрещает.
Решение. Задавать REDMINE_DB_POSTGRES явно и проверять результат: в config/database.yml у секции production должен стоять adapter postgresql.
Причина. Вебхук в Redmine привязывается к проектам. Без назначенного проекта он не сработает ни на одном событии - выборка делает INNER JOIN по таблице связи. При этом запись сохраняется, флаг активности стоит, список событий заполнен, и все выглядит рабочим.
Решение. Назначить вебхуку хотя бы один проект. Отдельно помните, что доставка идет фоновой задачей внутри веб-процесса: событие, вызванное из консоли, не доедет вовсе.
Про Ruby. Апстрим предупреждает, что на Ruby 4.0.0-4.0.3 заметно тормозит рендер вики - это регрессия самого рантайма, починена в 4.0.4. В официальном образе 7.0.1 лежит Ruby 4.0.7, так что при установке из контейнера проблемы нет.
Почта и вебхуки: что проверили живьем
Оба сценария прогнали на стенде, а не прочитали в документации.
SMTP настраивается только файлом config/configuration.yml - переменных окружения у образа для этого нет. Письмо до ящика дошло за секунду.
Отдельно померили среднее состояние, которое клиент получает при опечатке в адресе сервера. Почта настроена, но недостижима: интерфейс висит 30 секунд и отдает Net::OpenTimeout. Полминуты замершего экрана человек читает как сломанный продукт, а не как ненастроенную почту.
Вебхуки выключены по умолчанию и включаются администратором на новой вкладке Integrations. Доступно 15 типов событий. В полезной нагрузке приходит не только состояние задачи, но и дифф изменения, а подпись HMAC лежит в заголовке X-Redmine-Signature-256 в формате, совместимом с GitHub.
Русский интерфейс работает из коробки: в образе 50 локалей, русский файл весит 113 килобайт. Стартовые данные тоже ставятся на русском - трекеры, статусы и роли приходят переведенными.
Что закрыть перед продом
Четыре пункта, из которых три не видны, пока не наступишь.
| Что | По умолчанию | Чем грозит |
|---|---|---|
| Учетная запись админа | admin / admin | открытый сервер с угадываемой парой |
| SECRET_KEY_BASE | генерируется заново | сессии рвутся при пересоздании контейнера |
| Адрес отправителя писем | redmine@example.net | домена не существует, письма уедут в спам |
| Имя хоста и протокол | localhost:3000, HTTP | ссылки внутри писем ведут в никуда |
Два последних пункта коварнее прочих. Они не мешают продукту работать и всплывают только тогда, когда сотрудник получает уведомление и не может по нему перейти.
Проверяйте смену пароля результатом, а не сообщением об успехе. Мы на этом обожглись: скрипт отрапортовал, что пароль сменен, а пара admin/admin продолжала пускать - Redmine молча игнорирует попытку записать пустой пароль.
Дальше обычное: TLS снаружи, порт приложения на localhost, том под каталог files, резервная копия базы и того же каталога. Редакция 7.0.1 уже содержит исправления четырех уязвимостей, так что на 7.0.0 задерживаться незачем.
Плагины - главный риск при апгрейде
Все, чего нет в ядре, приходит от третьих лиц. И ломается вместе с мажором.
В официальном каталоге около 1340 плагинов. Ими закрывают канбан-доску, хелпдеск, CRM и развитую отчетность - в ядре этого нет.
Инструкция апстрима по обновлению о поломке плагинов не предупреждает: скопируйте папки и накатите миграции. Но в 7.0 выброшены две библиотеки, на которые плагины опирались, а из ядра удалены устаревшие CSS-классы.
Косвенное подтверждение проблемы - существование отдельного плагина Plugin Compatibility Check, совместимого с 7.0. Такой инструмент не пишут для проблемы, которой нет. Мы плагины не ставили и совместимость не проверяли, поэтому не выдаем свои догадки за факт.
Практический вывод. Бизнес-критичную функциональность лучше не вешать на плагин одного автора. Перед мажорным обновлением поднимайте ядро без плагинов, убеждайтесь, что стабильно, и добавляйте их по одному.
Само ядро при этом обновляется предсказуемо. Мажор выходит раз в полгода, одновременно поддерживаются три ветки, и 26 августа 2026 года все три получили релиз в один день.
Связь с другими стеками
- Gitea или GitLab - Redmine умеет показывать их репозитории внутри проекта и связывать коммиты с задачами.
- Plane - современная доска с циклами и роадмапами. Если нужен канбан в центре продукта, а не вики и учет времени, смотрите туда.
- Vikunja - заметно легче, 58 MiB против 267. Но без вики, форумов и обозревателя репозиториев.
- Сервер входящей почты - Redmine умеет заводить задачи из писем, это закрывает сценарий простого хелпдеска без отдельного продукта.
Когда это НЕ ваш выбор
Вам нужен канбан из коробки
В ядре Redmine доски нет. Есть список задач, Гант и календарь. Канбан ставится плагином, а плагин - это то, что ломается при каждом мажорном обновлении.
Вы обязаны закупать из реестра отечественного ПО
Redmine - французский community-проект, в реестре его нет и быть не может. Формальное импортозамещение он не закрывает. Локализация данных - другое дело: сервер ваш и стоит где скажете.
Команда меньше десяти человек
У конкурентов есть бесплатные тарифы на такой размер. Экономия от своего сервера начнется позже, а обслуживать его придется с первого дня.
Вам важен современный интерфейс
Навигацию в 7.0 перерисовали, но продукт остается утилитарным. Если команда выбирает трекер глазами, Redmine проиграет почти любому конкуренту.
Короткие ответы
Хватит ли тарифа CPU2-RAM4-DISK50?
Да, с запасом. Весь стек в простое занимает 267 MiB из 4 GB и 3,9 GB диска из 48.
Redmine на русском?
Да, локализация в образе, включается одной настройкой. Не переведены только вкладка Integrations и пункт про вебхуки - новая фича 7.0.
Нужен ли Sidekiq?
Не обязателен. Без него фоновые задачи выполняет веб-процесс, и перезапуск контейнера теряет незавершенные. Апстрим рекомендует Sidekiq для продакшена.
Можно ли обновиться с 5.x сразу на 7.0?
Ядро - да, по штатной процедуре с миграциями. Риск не в ядре, а в плагинах: 7.0 сменил Rails и выбросил библиотеки, на которые они опирались.
Что с бэкапом?
Дамп PostgreSQL плюс каталог files с вложениями. База с рабочими данными занимает единицы мегабайт.
Итог
Redmine 7.0.1 ставится из официального образа за три с половиной минуты и занимает 267 MiB в простое - для двадцатилетнего Rails-приложения неожиданно скромно. Тарифа CPU2-RAM4-DISK50 хватает с запасом, вики и учет времени идут в ядре, а вебхуки наконец делают трекер интегрируемым. Взамен придется смириться с отсутствием канбана и помнить, что плагины переживут не каждый мажор.
Рекомендуемая конфигурация для установки:
2 vCPU · 4 ГБ RAM · 50 ГБ NVMe
Не хотите устанавливать вручную?
Запустите Redmine на этой конфигурации автоматически - от 450 ₽/мес.
Этот стек у нас запущен на тарифе CPU2-RAM4-DISK50. Нашли неточность в гайде - напишите, поправим в течение дня.