Как установить плагин в Redmine (Bitnami, Docker)

Чтобы установить плагин в Redmine, положите его в plugins/<ID плагина>, запустите bundle install и миграции плагина, затем перезапустите Redmine. Пример с View Customize — выполните в папке Redmine, где лежит config/database.yml:

cd /path/to/redmine
git clone https://github.com/onozaty/redmine-view-customize.git plugins/view_customize
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production

Потом перезапустите Redmine: под Passenger хватит touch tmp/restart.txt, на сервере Bitnami — sudo /opt/bitnami/ctlscript.sh restart, в Docker — docker compose restart redmine. Иначе перезапустите сервер приложений, например Puma. Плагин появится в разделе «Администрирование → Модули».

Я проверил это на Redmine 7.0.3, 6.1.6 и 5.1.12 в официальном Docker-образе и на образе Bitnami с Redmine 6.0.6.

Что делает каждая команда

  • Папка в plugins/ называется по ID плагина, а не по имени репозитория. Правильную команду git clone обычно дают в README.
  • bundle install ставит гемы плагина. Без него Redmine не запустится: Could not find gem 'write_xlsx' in locally installed gems.
  • redmine:plugins:migrate создаёт таблицы плагина. Перед миграцией сделайте бэкап базы. Если её пропустить, страницы отдают ошибку 500: relation "view_customizes" does not exist.
  • Перезапуск подключает плагин: Redmine читает плагины только при старте.

Проверить из консоли:

bundle exec bin/about

Плагин будет в списке Redmine plugins:.

Имя папки должно совпадать с ID плагина

ID записан в init.rb: Redmine::Plugin.register :view_customize. Обычный git clone этого репозитория создаст папку redmine-view-customize, а ZIP-архив с GitHub распакуется в redmine_drawio-master. С такой папкой Redmine не запустится:

Redmine::PluginNotFound: Plugin not found. The directory for plugin view_customize should be /usr/src/redmine/plugins/view_customize.

Переименуйте папку и повторите шаги.

Как удалить плагин Redmine

cd /path/to/redmine
bundle exec rake redmine:plugins:migrate NAME=view_customize VERSION=0 RAILS_ENV=production
rm -rf plugins/view_customize

Затем перезапустите Redmine. VERSION=0 откатывает все миграции плагина и удаляет его таблицы вместе с данными, поэтому сначала сделайте бэкап. Соблюдайте порядок: если папку уже удалили, задача остановится с Plugin view_customize was not found, а таблицы останутся в базе.

Как установить плагин в Bitnami Redmine

В виртуальных машинах и облачных образах Bitnami Redmine лежит в /opt/bitnami/redmine. В инструкции Bitnami те же шаги:

cd /opt/bitnami/redmine/plugins
git clone https://github.com/onozaty/redmine-view-customize.git view_customize
cd ..
bundle install
bundle exec rake redmine:plugins:migrate RAILS_ENV=production
sudo /opt/bitnami/ctlscript.sh restart

В старых стеках с Redmine 3.x, как у меня в 2017 году, Redmine лежит в /opt/bitnami/apps/redmine/htdocs. Выполните те же команды там и перезапустите Apache: sudo /opt/bitnami/ctlscript.sh restart apache. У моего инсталлятора ctlscript.sh был в /opt/redmine-3.3.2-2.

Чтобы открыть «Администрирование → Модули», войдите под user: так в Bitnami называется администратор (если забыли пароль).

Bundler в Bitnami работает в режиме deployment. Если плагин добавляет гемы, bundle install падает с ошибкой the lockfile can't be updated because frozen mode is set. Снимите заморозку и повторите bundle install:

bundle config set --local frozen false
bundle install

Если гем не собирается с ошибкой make failedNo such file or directory - make или extconf.rb failed, поставьте компилятор и заголовки zlib и снова запустите bundle install:

sudo apt-get install build-essential zlib1g-dev

Флаг --no-deployment из инструкции Bitnami в Bundler 2.6 устарел: ошибка про frozen остаётся, а из .bundle/config пропадает путь vendor/bundle. После этого deployment false ставит все гемы заново, а frozen false по-прежнему работает.

Docker-образ Bitnami

Плагины лежат на томе в /bitnami/redmine/plugins, и при каждом старте контейнер прогоняет их миграции. А вот гемы на томе не сохраняются. Когда я пересоздал контейнер, он упал на шаге «Executing database migrations» с той же ошибкой про frozen lockfile. Её видно только с BITNAMI_DEBUG=true. Компилятора в образе тоже нет.

Bitnami сворачивает бесплатные образы

Бесплатные образы Bitnami, в том числе на AWS, больше не обновляются. Что случилось и как уйти с Bitnami — в посте Установка Bitnami Redmine в 2026. Новый сервер поднимайте на официальном образе redmine, плагины с гемами ставьте туда же.

Как установить плагин в Docker

При каждом старте официальный образ ставит недостающие гемы (bundle check || bundle install), а если задана REDMINE_PLUGINS_MIGRATE, ещё и прогоняет миграции плагинов. В compose.yaml:

services:
  redmine:
    build: .
    environment:
      # плюс ваши настройки REDMINE_DB_*
      SECRET_KEY_BASE: "a-long-random-string"
      REDMINE_PLUGINS_MIGRATE: "1"
    volumes:
      - ./plugins:/usr/src/redmine/plugins

В стандартном образе нет компилятора. Если гемам плагина он нужен, контейнер падает при старте с ошибкой вроде make failedNo such file or directory - make или extconf.rb failed. Поэтому рядом с compose.yaml кладём Dockerfile:

FROM redmine:7.0
RUN apt-get update \
 && apt-get install -y --no-install-recommends build-essential \
 && rm -rf /var/lib/apt/lists/*
git clone https://github.com/onozaty/redmine-view-customize.git plugins/view_customize
# первый запуск; дальше: docker compose restart redmine
docker compose up -d --build
docker compose exec redmine bundle exec bin/about

Последнюю команду запускайте, когда в docker compose logs redmine появится Listening on. Плагин будет в списке Redmine plugins:.

Удаление:

docker compose exec redmine bundle exec rake redmine:plugins:migrate NAME=view_customize VERSION=0
rm -rf plugins/view_customize
docker compose restart redmine

Ключ задавайте в SECRET_KEY_BASE, а не в REDMINE_SECRET_KEY_BASE. Из второй переменной entrypoint передаёт ключ только серверу, и docker compose exec падает с Missing `secret_key_base` . При пересоздании контейнера гемы плагинов ставятся заново, так что на этом старте нужен интернет.

Совместимость с Redmine 6 и 7

Сейчас поддерживаются три ветки: 7.0 (Rails 8.1), 6.1 (Rails 7.2, исправления ошибок и безопасности) и 6.0 (Rails 7.2, только исправления безопасности). Ветки 5.x больше не поддерживаются. Плагины ломаются на мажорных обновлениях. В 6.0 появились Rails 7.2, Propshaft для статики и SVG-иконки. В 7.0 — Rails 8.1, а старые CSS-классы icon-* удалили.

requires_redmine в init.rb задаёт только минимальную версию. Плагин redmine_banner заброшен с 2020 года и заявляет совместимость с 4.0 и выше, но на 7.0.3 Redmine с ним не запускается: LoadError: cannot load such file -- banners/application_hooks. Один сломанный плагин роняет весь Redmine: удалите его папку и перезапустите. Если плагину нужна версия новее, он скажет сам: additionals plugin requires Redmine 7.0 or higher but current is 6.1.6.stable.

Перед установкой посмотрите дату последнего коммита и требования в README. Каталог плагинов фильтрует по версии, но совместимость там отмечают сами авторы: с 7.0 заявлено 149 плагинов из 1370.

Полезные плагины для Redmine 6.1 и 7.0

Каждый я поставил на 6.1.6 и 7.0.3: гемы установились, миграции прошли, Redmine запустился. Additionals проверял только на 7.0.3. В скобках — имя папки.

  • View Customize 3.6.0 (view_customize): свой JavaScript, CSS или HTML на выбранных страницах.
  • Additionals 4.6.0 (additionals): дашборды, вики-макросы, правила для задач. Ветка stable, для 6.1 — тег 4.5.0. С SQLite не работает.
  • Issue Templates 1.2.3 (redmine_issue_templates): шаблоны задач для каждого проекта.
  • Drawio 1.5.6 (redmine_drawio): диаграммы draw.io в вики и задачах.
  • Wiki Extensions 1.3.0 (redmine_wiki_extensions): вики-макросы, комментарии, теги.
  • XLSX format issue exporter 0.3.0 (redmine_xlsx_format_issue_exporter): выгрузка списка задач в Excel. В Docker нужен компилятор.
  • Redmine OAuth 4.2.3 (redmine_oauth): вход через Google, GitHub, GitLab, Azure AD, Okta, Keycloak или OpenID Connect. На 6.1 в Docker нужен компилятор.
  • Redmine Dashboard (redmine_dashboard): доски задач и планирования. Клонируйте ветку main: релиз 2.16.0 вышел раньше Redmine 7.
Консультирую по продукту, собираю MVP и учу делать продукты самостоятельно. Поработать со мной →