Проект

Общее

Профиль

Действия

Установка 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 — обязательная зависимость для gem pg (драйвер 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 — иначе gem pg не соберётся.



🔧 Шаг 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

Раскомментируйте и настройте секцию productionemail_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:in load' /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 --help for 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'
end

local_gemfile = File.join(File.dirname(FILE), "Gemfile.local")
if File.exist?(local_gemfile)
eval_gemfile local_gemfile
end

Load 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=production Bundler игнорирует 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
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'
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 без стилей

все установилось но начальная страница 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?
Ассистент

Конечно! Ниже — полный листинг нашего диалога, оформленный в виде HTML-файла. Вы можете скопировать этот код в текстовый редактор (например, VS Code, Notepad++ или даже Блокнот), сохранить файл с расширением .html (например, redmine_install_guide.html) и открыть его в браузере.

... (здесь шёл сокращённый пример, но теперь вы видите полную версию!)


Полный листинг диалога
Дата: апрель 2025
Тема: Установка Redmine 6.1.0 (dev) на Ubuntu 22.04 с PostgreSQL

Обновлено Redmine Admin 10 месяца назад · 1 изменени(я, ий)