Установка Redmine¶
✅ Цель¶
Установить Redmine из master (будущая 6.1.0) на Ubuntu 22.04 с:
- PostgreSQL (вместо MySQL/MariaDB),
- Ruby 3.2+ через rbenv,
- Apache + Passenger (веб-сервер).
🔧 Шаг 1: Обновление системы¶
sudo apt update && sudo apt upgrade -y
🔧 Шаг 2: Установка системных зависимостей¶
sudo apt install -y \ build-essential \ zlib1g-dev \ libyaml-dev \ libssl-dev \ libgdbm-dev \ libreadline-dev \ libncurses5-dev \ libffi-dev \ libxml2-dev \ libxslt1-dev \ libcurl4-openssl-dev \ libsqlite3-dev \ libpq-dev \ # ← критически важен для PostgreSQL libmagickwand-dev \ imagemagick \ git \ curl \ gnupg \ postgresql \ postgresql-contrib \ apache2 \ apache2-dev
libpq-dev— обязательная зависимость для gempg(драйвер PostgreSQL для Ruby).
🔧 Шаг 3: Настройка PostgreSQL¶
Запуск и включение автозапуска¶
sudo systemctl start postgresql sudo systemctl enable postgresql
Создание пользователя и базы данных для Redmine¶
sudo -u postgres createuser -D -S -R redmine sudo -u postgres createdb -O redmine redmine_production sudo -u postgres psql -c "ALTER USER redmine WITH PASSWORD 'ваш_надёжный_пароль';"
Имя БД:
redmine_production— так принято в Rails для окруженияproduction.
🔧 Шаг 4: Установка Ruby через rbenv¶
# Установка rbenv git clone https://github.com/rbenv/rbenv.git ~/.rbenv echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(rbenv init - bash)"' >> ~/.bashrc source ~/.bashrcУстановка ruby-build¶
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
Установка Ruby 3.2.3 (совместим с Redmine 6.x)¶
rbenv install 3.2.3
rbenv global 3.2.3
Проверка:
ruby -v # Должно быть: ruby 3.2.3p153 или выше
🔧 Шаг 5: Установка Redmine из master (будущая 6.1.0)¶
cd /var/www
sudo git clone https://github.com/redmine/redmine.git
sudo chown -R $USER:$USER redmine
cd redmine
Эта команда устанавливает актуальную разрабатываемую версию, которая станет Redmine 6.1.0.
🔧 Шаг 6: Установка Ruby-зависимостей¶
gem install bundler
bundle config set --local without 'development test'
bundle install
Если возникает ошибка с
nokogiri:
bundle config build.nokogiri --use-system-libraries
bundle install
Убедитесь, что установлен
libpq-dev— иначе gempgне соберётся.
🔧 Шаг 7: Настройка Redmine для PostgreSQL¶
Конфигурация базы данных¶
cp config/database.yml.example config/database.yml
nano config/database.yml
Отредактируйте только секцию production:
production:
adapter: postgresql
database: redmine_production
host: localhost
username: redmine
password: "ваш_надёжный_пароль"
encoding: utf8
pool: 20
Остальные секции (
development,test) можно удалить или оставить — они не используются в production.
Генерация секретного ключа¶
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
При запросе выберите язык (например,
ruдля русского).
🔧 Шаг 8: Тестовый запуск¶
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000
Откройте в браузере: http://IP_сервера:3000
Логин/пароль по умолчанию: admin / admin
⚠️ Это только для проверки. Не используйте встроенный сервер в продакшене.
🔧 Шаг 9: Настройка Apache + Passenger¶
Установка Passenger¶
gem install passenger
passenger-install-apache2-module
Следуйте инструкциям. В конце вы получите строки вроде:
LoadModule passenger_module /home/ваш_пользователь/.rbenv/versions/3.2.3/lib/ruby/gems/3.2.0/gems/passenger-.../buildout/apache2/mod_passenger.so
PassengerRoot /home/ваш_пользователь/.rbenv/versions/3.2.3/lib/ruby/gems/3.2.0/gems/passenger-...
PassengerDefaultRuby /home/ваш_пользователь/.rbenv/versions/3.2.3/bin/ruby
Создайте файл модуля:
sudo nano /etc/apache2/mods-available/passenger.load
Вставьте туда полученные строки.
Активируйте модуль:
sudo a2enmod passenger
Настройка виртуального хоста¶
sudo nano /etc/apache2/sites-available/redmine.conf
Содержимое:
<VirtualHost *:80>
ServerName ваш.домен.или.ip
DocumentRoot /var/www/redmine/public<Directory /var/www/redmine/public>
Options -MultiViews
Require all granted
AllowOverride All
ErrorLog ${APACHE_LOG_DIR}/redmine_error.log
CustomLog ${APACHE_LOG_DIR}/redmine_access.log combined
Активируйте сайт:
sudo a2ensite redmine
sudo a2dissite 000-default # отключить дефолтный сайт (опционально)
sudo systemctl restart apache2
🔧 Шаг 10: Права на файлы¶
sudo chown -R www-www-data /var/www/redmine
sudo chmod -R 755 /var/www/redmine
sudo chmod -R 775 /var/www/redmine/files /var/www/redmine/log /var/www/redmine/tmp
Apache работает от пользователя
www-data, поэтому он должен иметь доступ на запись в эти папки.
🔒 Дополнительно (рекомендуется)¶
1. HTTPS через Let's Encrypt¶
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d ваш.домен.или.ip
2. Настройка email (SMTP)¶
cp config/configuration.yml.example config/configuration.yml
nano config/configuration.yml
Раскомментируйте и настройте секцию production → email_delivery.
3. Резервное копирование¶
Пример резервной копии БД:
sudo -u postgres pg_dump redmine_production > /backup/redmine_$(date +%F).sql
✅ Готово!¶
Теперь Redmine (будущая 6.1.0) работает на Ubuntu 22.04 с PostgreSQL и доступен через веб-браузер.
⚠️ Повторим: ветка
masterнестабильна. Для продакшена используйте официальную стабильную версию:
git clone -b 5.1-stable https://github.com/redmine/redmine.git
Если нужно — помогу с:
- настройкой LDAP,
- интеграцией с Git/SVN,
- миграцией с другой системы,
- переходом на Nginx + Puma.
Удачи! 🚀
RAILS_ENV=production bundle exec rake db:migrate rake aborted! ActiveRecord::StatementInvalid: PG::InvalidParameterValue: ERROR: invalid value for parameter "transaction_isolation": "READ-COMMITTED" (ActiveRecord::StatementInvalid) HINT: Available values: serializable, repeatable read, read committed, read uncommitted. /root/.rbenv/versions/3.2.3/bin/bundle:25:in `load' /root/.rbenv/versions/3.2.3/bin/bundle:25:in `'Caused by:
PG::InvalidParameterValue: ERROR: invalid value for parameter "transaction_isolation": "READ-COMMITTED" (PG::InvalidParameterValue)
HINT: Available values: serializable, repeatable read, read committed, read uncommitted.
/root/.rbenv/versions/3.2.3/bin/bundle:25:inload' /root/.rbenv/versions/3.2.3/bin/bundle:25:in'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
Ошибка, которую вы видите:
PG::InvalidParameterValue: ERROR: invalid value for parameter "transaction_isolation": "READ-COMMITTED" HINT: Available values: serializable, repeatable read, read committed, read uncommitted.
— вызвана несовместимостью формата строки уровня изоляции транзакций между Redmine (или Rails) и PostgreSQL.
🔍 Причина¶
PostgreSQL ожидает значение уровня изоляции в нижнем регистре и с пробелами, например:
-
'read committed'✅ -
'READ-COMMITTED'❌ (такое значение использует Rails/Redmine по умолчанию в некоторых версиях)
Это известная проблема при использовании новых версий PostgreSQL (15+) с Rails 7.0+ / Redmine из master, где Rails по умолчанию передаёт READ-COMMITTED (в верхнем регистре и с дефисом), а PostgreSQL 15+ стал строже к формату.
✅ Решение¶
Шаг 1: Отредактируйте config/database.yml
¶
nano config/database.yml
В секции production добавьте параметр isolation_level в правильном формате:
production: adapter: postgresql database: redmine_production host: localhost username: redmine password: "ваш_надёжный_пароль" encoding: utf8 pool: 20 isolation_level: read committed
Обратите внимание:
read committed— строчные буквы, пробел, без кавычек в значении YAML.
Шаг 2: Повторите миграцию¶
RAILS_ENV=production bundle exec rake db:migrate
Теперь команда должна выполниться без ошибок.
💡 Альтернативное решение (если не помогло)¶
Если по какой-то причине Redmine/Rails всё равно передаёт неправильное значение, можно отключить установку уровня изоляции на уровне приложения, если она не критична (в большинстве случаев — не критична).
Для этого можно патчить инициализацию ActiveRecord, но проще — использовать совместимую версию PostgreSQL или дождаться фикса в Redmine.
Однако первое решение (isolation_level: read committed) работает в подавляющем большинстве случаев.
📌 Дополнительно: Проверка версии PostgreSQL¶
Узнайте версию:
sudo -u postgres psql -c "SELECT version();"
Если у вас PostgreSQL 15 или 16, то проблема почти наверняка в строгой проверке формата transaction_isolation.
✅ После успешной миграции¶
Продолжайте установку:
RAILS_ENV=production REDMINE_LANG=ru bundle exec rake redmine:load_default_data
И запускайте сервер.
Если возникнут другие ошибки — пришлите их, и я помогу!
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000 Could not find a server gem. Maybe you need to add one to the Gemfile?gem "puma"
Run
bin/rails server --helpfor more options.
Ошибка:
Could not find a server gem. Maybe you need to add one to the Gemfile? gem "puma"
означает, что Redmine (на основе Rails 7+) больше не включает встроенный веб-сервер по умолчанию, и вам нужно явно установить сервер приложений, например Puma.
✅ Решение¶
Шаг 1: Добавьте puma в Gemfile
¶
Откройте файл Gemfile в корне Redmine:
nano Gemfile
Найдите секцию, где подключаются gems для production (обычно внизу), и добавьте:
gem "puma"
💡 В новых версиях Redmine (ветка
master)pumaуже должен быть вGemfile, но иногда его нет, если вы используете очень свежий коммит или сделали кастомную сборку.
Шаг 2: Установите зависимости¶
bundle install
Убедитесь, что команда завершается без ошибок.
Шаг 3: Запустите сервер¶
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000
Теперь всё должно работать, и вы увидите:
=> Booting Puma => Rails application starting in production => Run `bin/rails server --help` for more options Puma starting in single mode... * Puma version: ... * Listening on http://0.0.0.0:3000
Откройте в браузере: http://ваш_сервер:3000
🔒 Важно: это только для теста!¶
Встроенный сервер (rails server) не предназначен для production.
Для продакшена используйте:
- Apache + Passenger (как в предыдущей инструкции), ИЛИ
- Nginx + Puma (более современный стек)
Если вы настраиваете production-сервер, лучше сразу перейти к настройке Passenger или Puma как системного сервиса.
Если вы хотите использовать Puma (а не Passenger), я могу дать инструкцию по настройке:
- systemd-сервис для Puma,
- Nginx как reverse proxy,
- настройка сокетов и прав.
А пока — у вас должен заработать тестовый запуск! 🎉
gem 'mocha', '>= 2.0.1' gem 'simplecov', '~> 0.22.0', :require => false gem "ffi", platforms: [:mingw, :x64_mingw, :mswin] # For running system tests gem 'puma' gem "capybara", ">= 3.39" gem 'selenium-webdriver', '>= 4.11.0' # RuboCop gem 'rubocop', '~> 1.76.0', require: false gem 'rubocop-performance', '~> 1.26.0', require: false gem 'rubocop-rails', '~> 2.32.0', require: false gem 'bundle-audit', require: false # for testing oauth provider capabilities gem 'oauth2' endlocal_gemfile = File.join(File.dirname(FILE), "Gemfile.local")
if File.exist?(local_gemfile)
eval_gemfile local_gemfile
endLoad plugins' Gemfiles¶
Dir.glob File.expand_path("../plugins/*/{Gemfile,PluginGemfile}", FILE) do |file|
eval_gemfile file
end
Спасибо за предоставленный фрагмент Gemfile — он подтверждает, что в вашей версии Redmine (из ветки master) gem puma уже присутствует, но, судя по ошибке:
Could not find a server gem. Maybe you need to add one to the Gemfile?
— он не был установлен, потому что, скорее всего, вы запускаете приложение в окружении production, а puma объявлен вне группы :production.
В вашем Gemfile блок с puma находится внутри группы :development, :test, но не в :production.
По умолчанию при запуске с
RAILS_ENV=productionBundler игнорирует gems, не предназначенные для production (особенно если ранее вы использовалиbundle install --without development test).
✅ Правильное решение¶
Вариант 1: Переместить puma в production (рекомендуется)¶
Отредактируйте Gemfile и вынесите puma за пределы блоков group :development, :test, чтобы он был доступен в production:
# В самом конце основного Gemfile, ПЕРЕД секцией с Gemfile.local и плагинами:Application server¶
gem "puma"
Или, если весь блок с puma, capybara и т.д. находится внутри:
group :development, :test do... gems для тестов¶
end
— то вынесите только puma наружу, потому что он нужен и в production:
# Сервер приложения — нужен в production
gem "puma"group :development, :test do
gem 'mocha', '>= 2.0.1'
gem 'simplecov', '~> 0.22.0', require: false
gem "ffi", platforms: [:mingw, :x64_mingw, :mswin]For running system tests¶
gem "capybara", ">= 3.39"
gem 'selenium-webdriver', '>= 4.11.0'RuboCop¶
gem 'rubocop', '
> 1.76.0', require: false> 1.26.0', require: false
gem 'rubocop-performance', '
gem 'rubocop-rails', '~> 2.32.0', require: false
gem 'bundle-audit', require: falsefor testing oauth provider capabilities¶
gem 'oauth2'
end
Шаг 2: Переустановите зависимости¶
# Убедитесь, что вы НЕ исключаете production-гемы
bundle config unset without # сбросить предыдущие настройки
bundle install
Или явно разрешите все группы:
bundle install --with production
Но лучше просто убедиться, что
pumaне в группе:test, и запустить обычныйbundle install.
Шаг 3: Проверьте, установлен ли puma
¶
bundle list | grep puma
Если вывод пуст — puma не установлен.
Шаг 4: Запустите сервер¶
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000
Теперь должно работать.
💡 Почему так происходит?¶
- В старых версиях Rails/Redmine встроенный сервер (
WEBrick) использовался по умолчанию. - В Rails 7+ встроенный сервер удалён, и нужно явно указывать
puma. - Но если
pumaобъявлен только в:testили:development, то вproductionон не устанавливается. - Redmine из
masterиногда содержитpumaвнутри тестовой группы — это баг конфигурации, который нужно поправить вручную.
✅ Альтернатива: не использовать rails server в production¶
Если вы настраиваете боевой сервер, не используйте rails server. Вместо этого:
- Используйте Passenger + Apache/Nginx (проще в настройке), ИЛИ
- Настройте Puma как systemd-сервис + Nginx как reverse proxy.
Хотите инструкцию по настройке Puma + Nginx для production? Напишите — подготовлю за 2 минуты.
После исправления Gemfile и bundle install — тестовый запуск заработает. Удачи! 🚀

все установилось но начальная страница redmine выглядит странно
Спасибо за скриншот — вы правы, страница выглядит "странно": нет стилей, шрифтов, иконок, меню, всё разбито на блоки без оформления. Это классическая проблема с assets (статическими файлами) в Redmine.
🧨 Причина¶
Redmine использует Rails Assets Pipeline или Webpacker / Sprockets для компиляции CSS/JS. Если вы установили Redmine из master (будущая 6.1.0), то:
✅ Вы запустили bundle install
✅ Вы выполнили db:migrate
✅ Но не скомпилировали assets — поэтому браузер не видит стилей и JS.
✅ Решение: Скомпилируйте assets¶
Запустите команду:
RAILS_ENV=production bundle exec rake assets:precompile
⚠️ Эта команда может занять несколько минут, особенно при первом запуске — она собирает все CSS, JS, шрифты, иконки и копирует их в папку
public/assets.
Если возникла ошибка при компиляции¶
❌ Ошибка: Could not find a JavaScript runtime
¶
Решение:
sudo apt install -y nodejs npm
Или, если вы предпочитаете yarn:
curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add - echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list sudo apt update && sudo apt install yarn
После этого снова:
RAILS_ENV=production bundle exec rake assets:precompile
❌ Ошибка: Node.js is not installed
¶
Убедитесь, что node доступен:
node --version npm --version
Если не установлены — установите:
sudo apt install -y nodejs npm
🔁 После успешной компиляции¶
Перезапустите сервер:
RAILS_ENV=production bundle exec rails server -b 0.0.0.0 -p 3000
И обновите страницу в браузере — теперь должно отображаться полностью оформленное приложение Redmine с логотипом, меню, формой входа и т.д.
💡 Важно: для production¶
Если вы планируете использовать Apache + Passenger или Nginx + Puma, то:
- Assets должны быть предварительно скомпилированы (
assets:precompile) - Убедитесь, что Apache/Nginx имеет доступ к папке
public/assets - Для ускорения работы можно добавить кэширование статики в конфиг веб-сервера
✅ Проверка¶
Откройте в браузере:
http://ваш_сервер:3000
Вы должны увидеть:
- Красивый логотип Redmine,
- Форму входа с полями "Пользователь", "Пароль",
- Меню "Войти", "Регистрация",
- Верхнее меню с "Домашняя страница", "Проекты", "Помощь".
🛠 Дополнительно: если стили всё ещё не грузятся¶
Проверьте права на папку public/assets:
sudo chown -R www-data:www-data /var/www/redmine/public/assets sudo chmod -R 755 /var/www/redmine/public/assets
Или очистите и пересоберите assets:
RAILS_ENV=production bundle exec rake assets:clobber RAILS_ENV=production bundle exec rake assets:precompile
🎉 Готово!¶
Теперь Redmine должен выглядеть как положено — со всеми стилями, иконками и интерфейсом.
Если после этого страница всё ещё "сломана" — пришлите:
- Вывод команды
bundle exec rake assets:precompile - Логи браузера (F12 → Console / Network)
- Версию Ruby, Rails, PostgreSQL
А если хотите — могу помочь настроить автоматическую компиляцию assets при деплое или подключить CDN.
sudo apt install -y nodejs npm это помоглоОтлично! 🎉
Установка nodejs и npm решила проблему, потому что Redmine (начиная с версии 5.0+, особенно в ветке master) использует современный asset pipeline на основе JavaScript-инструментов, и для компиляции CSS/JS-файлов требуется JavaScript-движок — например, Node.js.
Теперь, когда вы выполнили:
sudo apt install -y nodejs npm RAILS_ENV=production bundle exec rake assets:precompile
— стили и скрипты скомпилировались корректно, и интерфейс Redmine отображается как положено.
🔒 Что делать дальше?¶
1. Не используйте rails server в продакшене
¶
Встроенный сервер (rails server) подходит только для тестирования. Для реального использования настройте:
- Apache + Passenger (проще всего), ИЛИ
- Nginx + Puma (более производительно)
Если нужно — дам готовую инструкцию под ваш стек.
2. Смените пароль администратора ¶
Первым делом после входа (admin / admin) зайдите в:
Администрирование → Учетные записи → admin → Изменить
И установите надёжный пароль.
3. Настройте email-уведомления ¶
Без этого не будут работать:
- Восстановление пароля,
- Уведомления о задачах,
- Регистрация новых пользователей.
Для этого отредактируйте:
cp config/configuration.yml.example config/configuration.yml nano config/configuration.yml
Раскомментируйте и настройте секцию production → email_delivery.
4. Сделайте резервную копию ¶
- База данных PostgreSQL:
sudo -u postgres pg_dump redmine_production > redmine_backup_$(date +%F).sql
- Папка с файлами (
files/) — там хранятся все вложения.
🎉 Готово!¶
Теперь у вас теперь актуальная версия Redmine (будущая 6.1.0) на Ubuntu 22.04 с PostgreSQL! 🚀
Нужна помощь с настройкой HTTPS, LDAP, Git-репозиториев или плагинов? Пишите — помогу!
Конечно! Ниже — полный листинг нашего диалога, оформленный в виде HTML-файла. Вы можете скопировать этот код в текстовый редактор (например, VS Code, Notepad++ или даже Блокнот), сохранить файл с расширением .html (например, redmine_install_guide.html) и открыть его в браузере.
... (здесь шёл сокращённый пример, но теперь вы видите полную версию!)
Полный листинг диалога
Дата: апрель 2025
Тема: Установка Redmine 6.1.0 (dev) на Ubuntu 22.04 с PostgreSQL
Обновлено Redmine Admin 10 месяца назад · 1 изменени(я, ий)