bolt Valebyte VPS от $4/мес — NVMe, запуск за 60 секунд.

Получить VPS arrow_forward
eco Начальный Туториал

Установка Redmine на VPS для управления проектами и отслеживания задач

calendar_month Jul 22, 2026 schedule 21 мин. чтения visibility 15 просмотров
info

Нужен сервер для этого гайда? Мы предлагаем выделенные серверы и VPS в 50+ странах с мгновенной настройкой.

Нужен сервер для этого гайда?

Разверните VPS или выделенный сервер за минуты.

Установка Redmine на VPS для управления проектами и отслеживания задач

TL;DR

В этом подробном гайде мы шаг за шагом настроим Redmine — мощную, гибкую и открытую систему управления проектами и отслеживания задач — на вашем собственном VPS-сервере. Вы научитесь подготавливать сервер, устанавливать все необходимые компоненты (PostgreSQL, Ruby, Nginx, Puma), настраивать их для совместной работы, обеспечивать безопасность с помощью HTTPS и организовывать регулярное резервное копирование. В результате вы получите полностью контролируемую платформу для эффективного управления проектами вашей команды.

  • Полная установка Redmine 5.x на Ubuntu 24.04 LTS с использованием Nginx, Puma и PostgreSQL.
  • Настройка безопасного доступа через HTTPS с помощью Certbot для бесплатных SSL/TLS сертификатов.
  • Подробные инструкции по подготовке сервера, включая настройку SSH, фаервола и базовых утилит.
  • Рекомендации по выбору оптимального VPS-конфига и масштабированию.
  • Скрипты для автоматического резервного копирования базы данных и файлов Redmine.
  • Раздел устранения типичных проблем и часто задаваемых вопросов.

Что мы настраиваем и зачем

В этом руководстве мы сосредоточимся на установке и настройке Redmine — открытой и гибкой системы управления проектами, основанной на Ruby on Rails. Redmine предоставляет широкий спектр функций для команд любого размера: отслеживание задач (issue tracking), диаграммы Ганта, календарь, управление документами, форумы, вики, управление временем, а также интеграцию с системами контроля версий, такими как Git и Subversion.

Выбрав Redmine, вы получите мощный инструмент для организации работы, который поможет вам:

  • Централизовать управление проектами: Все задачи, документы, обсуждения и планы будут находиться в одном месте, доступном для всей команды.
  • Эффективно отслеживать задачи: Создавайте задачи, назначайте исполнителей, устанавливайте приоритеты и сроки, отслеживайте прогресс и статусы.
  • Улучшить коммуникацию: Используйте встроенные форумы и вики для обмена знаниями и обсуждений по проектам.
  • Получить полный контроль над данными: В отличие от облачных решений, ваши данные хранятся на вашем VPS, обеспечивая максимальную конфиденциальность и безопасность.
  • Гибкость и кастомизация: Открытый исходный код Redmine позволяет адаптировать его под уникальные потребности вашей команды, устанавливать плагины и настраивать внешний вид.

Альтернативы: Cloud-Managed vs. Self-Hosted

На рынке существует множество решений для управления проектами. Их можно условно разделить на две категории:

  • Облачные (Cloud-Managed) сервисы: Это такие платформы, как Jira, Asana, Trello, Monday.com. Они предлагают готовое решение "из коробки", не требующее от вас технических знаний по настройке сервера. Вы просто регистрируетесь, платите ежемесячную подписку и начинаете работать.
    • Плюсы: Простота начала работы, минимальное администрирование, поддержка от провайдера.
    • Минусы: Зависимость от стороннего провайдера, отсутствие полного контроля над данными, ограниченные возможности кастомизации, потенциально более высокие затраты в долгосрочной перспективе, особенно для больших команд.
  • Самостоятельно размещаемые (Self-Hosted) решения на VPS: К ним относятся Redmine, GitLab, Mattermost, Nextcloud. Вы арендуете VPS, устанавливаете и настраиваете ПО самостоятельно.
    • Плюсы: Полный контроль над данными и безопасностью, высокая степень кастомизации, часто более низкие долгосрочные затраты, особенно если у вас уже есть опыт администрирования серверов.
    • Минусы: Требуются технические знания для установки и обслуживания, ответственность за бэкапы и обновления лежит на вас.

Выбор Redmine на VPS идеален для тех, кто ценит контроль, конфиденциальность и хочет иметь возможность тонкой настройки системы под свои нужды, не желая при этом переплачивать за облачные сервисы, особенно по мере роста команды. Этот гайд поможет вам освоить все необходимые шаги для успешного развертывания.

Какой VPS-конфиг нужен под эту задачу

Выбор правильного VPS-конфига является ключевым для обеспечения стабильной и быстрой работы Redmine. Требования могут варьироваться в зависимости от размера вашей команды, количества проектов, интенсивности использования и объема хранимых файлов.

Минимальные требования для небольшой команды (до 10 пользователей)

  • CPU: 2 ядра. Хотя Redmine может работать и на 1 ядре, 2 ядра обеспечат лучшую отзывчивость, особенно при одновременной работе нескольких пользователей или выполнении ресурсоемких операций (например, генерации отчетов или индексации).
  • RAM: 4 ГБ. Ruby on Rails (на котором работает Redmine), база данных (PostgreSQL) и веб-сервер (Nginx + Puma) довольно требовательны к оперативной памяти. 4 ГБ — это комфортный минимум для стабильной работы.
  • Диск: 80 ГБ SSD. SSD-накопители значительно ускоряют работу базы данных и загрузку приложения. 80 ГБ будет достаточно для операционной системы, Redmine, базы данных и некоторого объема прикрепленных файлов. Если вы планируете хранить много файлов или использовать Redmine для управления большим количеством проектов с изображениями и документами, рассмотрите 100-120 ГБ.
  • Сеть: 100 Мбит/с. Для большинства задач этого будет достаточно. Если вы планируете активно использовать Redmine с большим количеством пользователей, работающих с большими файлами, рассмотрите 1 Гбит/с.

Рекомендуемый VPS-план для средних команд (10-30 пользователей)

Для более активного использования и команд среднего размера стоит рассмотреть следующие характеристики:

  • CPU: 4 ядра
  • RAM: 8 ГБ
  • Диск: 160 ГБ SSD
  • Сеть: 1 Гбит/с

Такой конфиг обеспечит отличную производительность и запас прочности для роста. Вы можете рассмотреть VPS с указанными характеристиками для аренды.

Когда нужен Dedicated, а не VPS

Dedicated сервер (выделенный сервер) становится предпочтительнее VPS в следующих случаях:

  • Очень большие команды (от 50+ пользователей) или высокая нагрузка на систему.
  • Критически важные проекты, где требуется максимальная производительность и минимальные задержки.
  • Требования к изоляции: Если вы не хотите делить ресурсы с другими пользователями на одном физическом сервере.
  • Особые требования к безопасности или соответствию стандартам: Некоторые регуляции могут требовать физической изоляции.
  • Планируется запуск множества других сервисов на том же сервере помимо Redmine.

Для таких сценариев подойдет подходящий dedicated сервер, который предоставит вам все физические ресурсы машины без виртуализации.

Локация VPS: на что влияет

Выбор локации VPS-сервера важен по нескольким причинам:

  • Задержка (Latency): Чем ближе сервер к вашей команде и конечным пользователям, тем ниже будет задержка и быстрее отклик Redmine. Выбирайте дата-центр, расположенный географически близко к основному месту работы вашей команды.
  • Законодательство о данных: В некоторых юрисдикциях действуют строгие законы о хранении данных (например, GDPR в Европе). Выбор локации сервера, соответствующей этим законам, может быть критически важен.
  • Доступность и надежность: Крупные провайдеры обычно имеют дата-центры в разных регионах с высокой доступностью и надежностью сетевых каналов.

Учитывайте эти факторы при выборе провайдера и конкретного дата-центра для вашего VPS.

Подготовка сервера

Перед установкой Redmine необходимо выполнить базовую настройку и подготовку вашего VPS. Мы будем использовать Ubuntu Server 24.04 LTS, как актуальную и стабильную операционную систему на 2026 год.

1. Подключение к серверу и обновление системы

Первым делом подключитесь к вашему VPS через SSH, используя учетные данные, предоставленные провайдером. Обычно это пользователь root и пароль.


ssh root@ВАШ_IP_АДРЕС

После подключения обновите список пакетов и установите все доступные обновления. Это обеспечит актуальность всех компонентов и исправление известных уязвимостей.


sudo apt update             # Обновление списка пакетов
sudo apt upgrade -y         # Установка всех доступных обновлений

2. Создание нового пользователя с правами sudo

Работа под пользователем root небезопасна. Создайте нового пользователя и предоставьте ему права sudo.


adduser redmineuser         # Создание нового пользователя с именем redmineuser
usermod -aG sudo redmineuser # Добавление пользователя в группу sudo

Задайте надежный пароль для нового пользователя, когда система запросит его. После этого выйдите из сессии root и войдите под новым пользователем.


exit                        # Выход из сессии root
ssh redmineuser@ВАШ_IP_АДРЕС # Вход под новым пользователем

3. Настройка SSH-ключей (рекомендуется)

Для повышения безопасности и удобства рекомендуется использовать SSH-ключи вместо паролей. Если у вас еще нет пары ключей, сгенерируйте их на локальной машине:


ssh-keygen -t rsa -b 4096   # Генерация новой пары SSH-ключей на локальной машине

Затем скопируйте публичный ключ на ваш VPS:


ssh-copy-id redmineuser@ВАШ_IP_АДРЕС # Копирование публичного ключа на сервер

После этого вы можете отключить аутентификацию по паролю для SSH (редактируя /etc/ssh/sshd_config: PasswordAuthentication no и перезапустив sudo systemctl restart sshd), но делайте это только убедившись, что вход по ключу работает.

4. Настройка фаервола (UFW)

Установите и настройте UFW (Uncomplicated Firewall) для ограничения доступа к серверу только необходимыми портами.


sudo apt install ufw -y     # Установка UFW
sudo ufw allow OpenSSH      # Разрешить SSH-подключения (порт 22)
sudo ufw allow http         # Разрешить HTTP-трафик (порт 80)
sudo ufw allow https        # Разрешить HTTPS-трафик (порт 443)
sudo ufw enable             # Включение фаервола
sudo ufw status             # Проверка статуса фаервола

Убедитесь, что SSH разрешен, прежде чем включать фаервол, иначе вы можете потерять доступ к серверу.

5. Установка Fail2Ban

Fail2Ban помогает защититься от атак подбора паролей (brute-force) путем блокировки IP-адресов, с которых поступает слишком много неудачных попыток входа.


sudo apt install fail2ban -y # Установка Fail2Ban
sudo systemctl enable fail2ban # Включение автозапуска Fail2Ban
sudo systemctl start fail2ban  # Запуск Fail2Ban

Fail2Ban по умолчанию защищает SSH. Для более тонкой настройки можно скопировать файл конфигурации /etc/fail2ban/jail.conf в /etc/fail2ban/jail.local и внести изменения там.

6. Установка базовых утилит

Установите некоторые полезные утилиты, которые могут пригодиться в процессе установки и администрирования.


sudo apt install git curl wget htop build-essential -y # Установка Git, Curl, Wget, Htop и инструментов для сборки

Теперь ваш сервер подготовлен к установке Redmine и его компонентов.

Установка ПО — пошагово

В этом разделе мы установим все необходимое программное обеспечение для запуска Redmine: базу данных PostgreSQL, среду выполнения Ruby, веб-сервер Nginx и сервер приложений Puma.

1. Установка PostgreSQL 16

Redmine хорошо работает с PostgreSQL. Установим актуальную версию.


sudo apt install postgresql postgresql-contrib -y # Установка PostgreSQL и дополнительных утилит

Создадим пользователя базы данных и саму базу данных для Redmine. Замените redmine_user и your_strong_password на свои значения.


sudo -u postgres psql -c "CREATE USER redmine_user WITH PASSWORD 'your_strong_password';" # Создание пользователя БД
sudo -u postgres psql -c "CREATE DATABASE redmine_db OWNER redmine_user ENCODING 'UTF8';" # Создание базы данных
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE redmine_db TO redmine_user;" # Выдача прав пользователю

2. Установка RVM для управления Ruby (альтернатива: rbenv)

Мы будем использовать RVM (Ruby Version Manager) для установки и управления версиями Ruby. Это позволит легко установить нужную версию Ruby и избежать конфликтов с системной версией.


sudo apt install software-properties-common gnupg2 -y # Установка зависимостей для добавления репозиториев
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # Импорт GPG ключей RVM
curl -sSL https://get.rvm.io | bash -s stable --ruby # Установка RVM и последней стабильной версии Ruby

После установки RVM необходимо загрузить его в текущую сессию. Вам может потребоваться выйти и снова войти в SSH или выполнить:


source /home/redmineuser/.rvm/scripts/rvm # Загрузка RVM в текущую сессию
rvm install ruby-3.4.0                    # Установка Ruby 3.4.0 (актуальная на 2026 год)
rvm use ruby-3.4.0 --default              # Установка Ruby 3.4.0 как версии по умолчанию
ruby -v                                   # Проверка установленной версии Ruby

Установите Bundler — менеджер зависимостей Ruby.


gem install bundler -v 2.5.1               # Установка Bundler версии 2.5.1

3. Загрузка Redmine

Создайте директорию для Redmine и загрузите последнюю стабильную версию (например, 5.1.x или 5.2.x, актуальную на 2026 год) с официального сайта или GitHub. Мы будем использовать /var/www/redmine.


sudo mkdir -p /var/www/redmine          # Создание директории для Redmine
sudo chown -R redmineuser:redmineuser /var/www/redmine # Изменение владельца директории
cd /var/www/redmine                     # Переход в директорию Redmine
wget https://www.redmine.org/releases/redmine-5.1.2.tar.gz # Загрузка Redmine 5.1.2 (пример)
tar -xvzf redmine-5.1.2.tar.gz          # Распаковка архива
mv redmine-5.1.2/ .                    # Перемещение содержимого в текущую директорию
rmdir redmine-5.1.2                     # Удаление пустой директории
rm redmine-5.1.2.tar.gz                 # Удаление архива

4. Установка зависимостей Redmine

Перейдите в директорию Redmine и установите все необходимые гемы (библиотеки Ruby) с помощью Bundler.


cd /var/www/redmine                     # Переход в директорию Redmine
bundle install --without development test # Установка зависимостей, исключая dev и test

Возможно, потребуется установить дополнительные системные библиотеки для некоторых гемов:


sudo apt install libpq-dev libmagickwand-dev imagemagick -y # Установка зависимостей для PostgreSQL и ImageMagick

После установки этих зависимостей, если bundle install завершился с ошибками, попробуйте выполнить его снова.

5. Настройка базы данных Redmine

Скопируйте пример файла конфигурации базы данных и отредактируйте его, указав данные вашей PostgreSQL базы.


cp config/database.yml.example config/database.yml # Копирование файла конфигурации
nano config/database.yml                          # Открытие файла для редактирования

В файле config/database.yml найдите секцию production: и приведите ее к следующему виду (замените данные на свои):


production:
  adapter: postgresql
  database: redmine_db
  host: localhost
  username: redmine_user
  password: "your_strong_password"
  encoding: utf8
  pool: 5

Сохраните и закройте файл (Ctrl+X, Y, Enter).

6. Генерация секретного токена

Redmine требует секретный токен для защиты сессий и других криптографических операций.


bundle exec rake generate_secret_token    # Генерация секретного токена

7. Миграция базы данных и загрузка данных по умолчанию

Выполните миграции базы данных для создания всех необходимых таблиц Redmine.


bundle exec rake db:migrate RAILS_ENV=production # Выполнение миграций базы данных

Загрузите данные по умолчанию (языки, роли, статусы задач). Выберите язык по умолчанию (например, ru для русского).


bundle exec rake redmine:load_default_data RAILS_ENV=production # Загрузка данных по умолчанию

Когда система запросит язык, введите ru и нажмите Enter.

8. Настройка разрешений

Убедитесь, что Redmine имеет необходимые разрешения для записи в директории files, log и tmp.


sudo chown -R redmineuser:redmineuser files log tmp public/plugin_assets # Установка владельца
chmod -R 755 files log tmp public/plugin_assets # Установка прав доступа

9. Тестовый запуск Puma

Для проверки работоспособности Redmine, запустите его в режиме разработки с помощью Puma.


bundle exec puma -e production -b tcp://127.0.0.1:3000 # Запуск Puma на порту 3000

Если все настроено правильно, вы увидите сообщения о запуске Puma. Вы можете проверить доступность Redmine с сервера с помощью curl http://127.0.0.1:3000. Вы должны увидеть HTML-код страницы. Нажмите Ctrl+C, чтобы остановить Puma. В следующем разделе мы настроим его как системный сервис.

Конфигурация

После установки основных компонентов необходимо настроить их для стабильной и безопасной работы Redmine. Это включает настройку Nginx как обратного прокси, запуск Puma как системного сервиса и включение HTTPS.

1. Настройка Puma как системного сервиса (systemd)

Чтобы Redmine запускался автоматически при старте сервера и работал в фоновом режиме, мы настроим Puma как сервис systemd.

Создайте файл сервиса для Puma:


sudo nano /etc/systemd/system/redmine.service # Создание нового файла сервиса

Вставьте следующее содержимое, заменив redmineuser на имя вашего пользователя, а /var/www/redmine на путь к вашей установке Redmine:


[Unit]
Description=Puma HTTP Server for Redmine
After=network.target postgresql.service

[Service]
Type=simple
User=redmineuser
Group=redmineuser
WorkingDirectory=/var/www/redmine
Environment=RAILS_ENV=production
ExecStart=/home/redmineuser/.rvm/bin/rvm-auto-ruby bundle exec puma -C /var/www/redmine/config/puma.rb
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=15
RestartSec=2
Restart=on-failure

[Install]
WantedBy=multi-user.target

Сохраните и закройте файл.

Теперь создайте файл конфигурации Puma config/puma.rb:


nano /var/www/redmine/config/puma.rb # Создание файла конфигурации Puma

Вставьте следующее содержимое:


# config/puma.rb
# Замените 'redmineuser' на имя вашего пользователя
# Замените '/var/www/redmine' на путь к вашей установке Redmine

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

rackup DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'production'

pidfile    "/var/www/redmine/tmp/pids/puma.pid"
state_path "/var/www/redmine/tmp/pids/puma.state"
stdout_redirect "/var/www/redmine/log/puma.stdout.log", "/var/www/redmine/log/puma.stderr.log", true

# On workers boot
on_worker_boot do
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end

# Allow puma to be restarted by rails restart command.
plugin :tmp_restart

Сохраните и закройте файл.

Перезагрузите systemd, включите и запустите сервис Redmine:


sudo systemctl daemon-reload           # Перезагрузка конфигурации systemd
sudo systemctl enable redmine.service  # Включение автозапуска сервиса Redmine
sudo systemctl start redmine.service   # Запуск сервиса Redmine
sudo systemctl status redmine.service  # Проверка статуса сервиса

Убедитесь, что сервис запущен и не содержит ошибок. Вывод должен быть зеленым "active (running)".

2. Настройка Nginx как обратного прокси

Установите Nginx, если он еще не установлен:


sudo apt install nginx -y # Установка Nginx

Создайте новый файл конфигурации Nginx для Redmine:


sudo nano /etc/nginx/sites-available/redmine.conf # Создание файла конфигурации Nginx

Вставьте следующее содержимое, заменив your_domain.com на ваш домен:


upstream redmine {
    server unix:///var/www/redmine/tmp/sockets/puma.sock fail_timeout=0;
    # Или, если Puma слушает TCP-порт:
    # server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name your_domain.com; # Замените на ваш домен
    return 301 https://$host$request_uri; # Перенаправление HTTP на HTTPS
}

server {
    listen 443 ssl http2;
    server_name your_domain.com; # Замените на ваш домен

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # Будет создан Certbot
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; # Будет создан Certbot
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    root /var/www/redmine/public; # Путь к public директории Redmine

    access_log /var/log/nginx/redmine_access.log;
    error_log /var/log/nginx/redmine_error.log;

    location / {
        try_files $uri @redmine;
    }

    location @redmine {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://redmine; # Используем upstream redmine
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 100M; # Максимальный размер загружаемых файлов
    keepalive_timeout 10;
}

Сохраните и закройте файл. Активируйте конфигурацию, создав символическую ссылку и удалив стандартную:


sudo ln -s /etc/nginx/sites-available/redmine.conf /etc/nginx/sites-enabled/ # Создание символической ссылки
sudo rm /etc/nginx/sites-enabled/default # Удаление стандартной конфигурации Nginx
sudo nginx -t                          # Проверка синтаксиса конфигурации Nginx
sudo systemctl restart nginx           # Перезапуск Nginx

Если Puma настроен на сокет, то в config/puma.rb нужно добавить строку bind "unix:///var/www/redmine/tmp/sockets/puma.sock" и убедиться, что директория tmp/sockets существует и имеет нужные права.


mkdir -p /var/www/redmine/tmp/sockets
chmod 777 /var/www/redmine/tmp/sockets # Временно для тестирования, позже можно ограничить

3. Настройка TLS/HTTPS с помощью Certbot

Настоятельно рекомендуется использовать HTTPS для защиты трафика. Мы воспользуемся Certbot для получения бесплатных SSL/TLS сертификатов от Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Установка Certbot и плагина для Nginx
sudo certbot --nginx -d your_domain.com           # Получение и установка сертификата (замените домен)

Certbot автоматически изменит вашу конфигурацию Nginx для использования HTTPS и настроит автоматическое продление сертификатов. Следуйте инструкциям на экране. Убедитесь, что ваш домен уже указывает на IP-адрес вашего VPS.

4. Проверка работоспособности

Откройте ваш домен (https://your_domain.com) в браузере. Вы должны увидеть страницу входа в Redmine. По умолчанию имя пользователя: admin, пароль: admin. Обязательно измените его при первом входе.

Вы также можете проверить доступность с помощью curl:


curl -I https://your_domain.com # Проверка HTTP-заголовков

Убедитесь, что статус HTTP 200 OK. Если возникли проблемы, проверьте логи Nginx (/var/log/nginx/error.log) и Puma/Redmine (/var/www/redmine/log/puma.stderr.log или /var/www/redmine/log/production.log).

Бэкапы и обслуживание

Регулярное резервное копирование и своевременное обслуживание являются критически важными для любой production-системы, включая Redmine. Это позволит избежать потери данных и обеспечить стабильную работу.

1. Что бэкапить

Для полного восстановления Redmine вам потребуются три основных компонента:

  1. База данных Redmine: Содержит все задачи, проекты, пользователей, настройки и другие структурированные данные.
  2. Директория files: Хранит все прикрепленные файлы, изображения и документы, загруженные пользователями.
  3. Файлы конфигурации Redmine: Ключевые файлы, такие как config/database.yml, config/configuration.yml (для настроек почты и других опций) и config/initializers/secret_token.rb.

2. Простой скрипт автобэкапа

Создадим простой Bash-скрипт, который будет выполнять бэкап этих компонентов. Создайте директорию для бэкапов и сам скрипт.


sudo mkdir -p /var/backups/redmine # Создание директории для хранения бэкапов
sudo chown redmineuser:redmineuser /var/backups/redmine # Изменение владельца
nano /home/redmineuser/redmine_backup.sh # Создание скрипта бэкапа

Вставьте следующее содержимое в скрипт, заменив redmine_user, redmine_db, /var/www/redmine и /var/backups/redmine на свои значения.


#!/bin/bash

# Переменные
DB_USER="redmine_user"
DB_NAME="redmine_db"
REDMINE_ROOT="/var/www/redmine"
BACKUP_DIR="/var/backups/redmine"
TIMESTAMP=$(date +%Y%m%d%H%M%S)

# Создание директории для текущего бэкапа
CURRENT_BACKUP_DIR="$BACKUP_DIR/$TIMESTAMP"
mkdir -p "$CURRENT_BACKUP_DIR"

echo "Начинаем резервное копирование Redmine в $CURRENT_BACKUP_DIR..."

# 1. Бэкап базы данных PostgreSQL
echo "Дамп базы данных..."
sudo -u postgres pg_dump -Fc "$DB_NAME" > "$CURRENT_BACKUP_DIR/redmine_db.dump"
if [ $? -eq 0 ]; then
    echo "Дамп базы данных успешно создан."
else
    echo "Ошибка при создании дампа базы данных."
fi

# 2. Бэкап директории files
echo "Копирование файлов..."
rsync -a "$REDMINE_ROOT/files" "$CURRENT_BACKUP_DIR/"
if [ $? -eq 0 ]; then
    echo "Файлы успешно скопированы."
else
    echo "Ошибка при копировании файлов."
fi

# 3. Копирование файлов конфигурации
echo "Копирование конфигурационных файлов..."
cp "$REDMINE_ROOT/config/database.yml" "$CURRENT_BACKUP_DIR/"
cp "$REDMINE_ROOT/config/configuration.yml" "$CURRENT_BACKUP_DIR/"
cp "$REDMINE_ROOT/config/initializers/secret_token.rb" "$CURRENT_BACKUP_DIR/"
if [ $? -eq 0 ]; then
    echo "Конфигурационные файлы успешно скопированы."
else
    echo "Ошибка при копировании конфигурационных файлов."
fi

# 4. Удаление старых бэкапов (например, старше 7 дней)
echo "Удаление старых бэкапов (старше 7 дней)..."
find "$BACKUP_DIR" -maxdepth 1 -mtime +7 -exec rm -rf {} \;
echo "Резервное копирование завершено."

Сделайте скрипт исполняемым:


chmod +x /home/redmineuser/redmine_backup.sh # Делаем скрипт исполняемым

3. Настройка Cron для автоматического запуска бэкапа

Добавьте скрипт в планировщик Cron, чтобы он запускался автоматически, например, ежедневно в 3:00 ночи.


crontab -e # Открытие crontab для текущего пользователя

Добавьте следующую строку в конец файла:


0 3    /home/redmineuser/redmine_backup.sh >> /var/log/redmine_backup.log 2>&1

Эта строка означает: "Каждый день в 3 часа 0 минут запускать скрипт и перенаправлять его вывод в лог-файл".

4. Куда складывать бэкапы

Хранить бэкапы на том же сервере, что и рабочая система, рискованно. Если сервер выйдет из строя, вы потеряете и систему, и бэкапы. Рекомендуется использовать внешние хранилища:

  • S3-совместимое хранилище: Такие сервисы, как AWS S3, Backblaze B2, DigitalOcean Spaces. Вы можете использовать утилиты типа s3cmd или rclone для автоматической загрузки бэкапов.
  • Отдельный VPS: Арендуйте небольшой VPS исключительно для хранения бэкапов и синхронизируйте их туда по SSH/rsync.
  • Локальный NAS/сервер: Если у вас есть собственная инфраструктура, можно настроить синхронизацию с ней.

Например, для отправки на S3 можно добавить в скрипт строку, использующую aws cli или rclone после создания локального бэкапа.

5. Обновления: Rolling vs. Maintenance Window

Поддержание Redmine и базового ПО в актуальном состоянии важно для безопасности и получения новых функций.

  • Обновления ОС и системных пакетов: Рекомендуется применять обновления безопасности регулярно (раз в неделю/месяц) в "окно обслуживания" (maintenance window), когда нагрузка на сервер минимальна.
    
    sudo apt update && sudo apt upgrade -y # Обновление системных пакетов
    sudo apt autoremove -y # Удаление ненужных пакетов
    
  • Обновления Ruby: Обновления Ruby должны быть тщательно протестированы, так как они могут повлиять на работу Redmine. Используйте RVM для установки новой версии Ruby, протестируйте Redmine с ней, затем переключитесь.
  • Обновления Redmine:
    • Всегда делайте полный бэкап перед обновлением Redmine.
    • Остановите сервис Redmine (sudo systemctl stop redmine.service).
    • Загрузите новую версию Redmine, распакуйте ее, скопируйте файлы (кроме files, config, plugins).
    • Обновите гемы (bundle install --without development test).
    • Выполните миграции базы данных (bundle exec rake db:migrate RAILS_ENV=production).
    • Запустите сервис Redmine (sudo systemctl start redmine.service).

Планируйте обновления Redmine как отдельные проекты, желательно сначала протестировав их на стейджинг-сервере.

Troubleshooting + FAQ

В этом разделе собраны ответы на часто задаваемые вопросы и решения типичных проблем, которые могут возникнуть при установке и эксплуатации Redmine на VPS.

1. Redmine не запускается или выдает ошибку 502 Bad Gateway с Nginx. Что проверять?

Ошибка 502 Bad Gateway обычно означает, что Nginx не может связаться с бэкенд-приложением (Puma). Это может быть вызвано несколькими причинами:

  • Puma не запущен: Проверьте статус сервиса Puma: sudo systemctl status redmine.service. Если он неактивен, посмотрите логи Puma: journalctl -u redmine.service или /var/www/redmine/log/puma.stderr.log.
  • Неправильная конфигурация Nginx: Убедитесь, что proxy_pass в конфигурации Nginx указывает на правильный адрес/сокет Puma (например, http://127.0.0.1:3000 или unix:///var/www/redmine/tmp/sockets/puma.sock). Проверьте синтаксис Nginx: sudo nginx -t.
  • Проблемы с разрешениями: Убедитесь, что пользователь Nginx (обычно www-data) имеет доступ к сокету Puma, если вы используете сокет.
  • Проблемы с базой данных: Если Puma запускается, но сразу падает, возможно, Redmine не может подключиться к базе данных. Проверьте config/database.yml и убедитесь, что PostgreSQL запущен (sudo systemctl status postgresql).

2. Как настроить отправку почты из Redmine?

Для отправки уведомлений из Redmine (например, о новых задачах или комментариях) необходимо настроить параметры SMTP. Отредактируйте файл config/configuration.yml (если его нет, скопируйте configuration.yml.example):


# config/configuration.yml
default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "smtp.your-email-provider.com" # Например, smtp.mail.ru, smtp.gmail.com
      port: 587 # Или 465 для SSL
      authentication: :plain
      domain: "your_domain.com" # Ваш домен
      user_name: "noreply@your_domain.com" # Ваш email
      password: "your_email_password" # Пароль от почты
      enable_starttls_auto: true

После сохранения файла перезапустите сервис Redmine (Puma): sudo systemctl restart redmine.service. Проверьте отправку тестового письма в настройках Redmine (Администрирование -> Настройки -> Уведомления по email).

3. Какой VPS-конфиг минимально подойдёт для Redmine?

Для Redmine и небольшой команды (до 10 пользователей) минимально рекомендуется VPS с 2 ядрами CPU, 4 ГБ оперативной памяти и 80 ГБ SSD-диска. Это обеспечит достаточно комфортную работу без заметных задержек. Для более крупных команд или интенсивного использования стоит рассмотреть 4 ядра CPU и 8 ГБ RAM.

4. Что выбрать — VPS или dedicated для этой задачи?

Для большинства сценариев использования Redmine (небольшие и средние команды, до 50 активных пользователей) VPS будет оптимальным и экономически выгодным решением. Dedicated сервер стоит выбирать, если у вас очень большая команда, крайне высокая нагрузка, строгие требования к производительности и изоляции ресурсов, или если вы планируете размещать множество других ресурсоемких сервисов на том же физическом оборудовании.

5. Как обновить Redmine до новой версии?

Процесс обновления Redmine включает несколько шагов:

  1. Бэкап: Сделайте полный бэкап базы данных и директории files.
  2. Остановка Redmine: sudo systemctl stop redmine.service.
  3. Загрузка новой версии: Скачайте новый архив Redmine, распакуйте его в новую директорию.
  4. Копирование файлов: Скопируйте ваши config/database.yml, config/configuration.yml, config/initializers/secret_token.rb, а также директорию files и plugins из старой установки в новую.
  5. Установка гемов: Перейдите в новую директорию Redmine и выполните bundle install --without development test.
  6. Миграция базы данных: bundle exec rake db:migrate RAILS_ENV=production.
  7. Запуск Redmine: sudo systemctl start redmine.service.

Всегда читайте официальные инструкции по обновлению для конкретной версии Redmine, так как могут быть специфические шаги.

6. Почему не отображаются изображения/файлы или возникают ошибки при их загрузке?

Эта проблема чаще всего связана с неправильными правами доступа к директории files или отсутствием ImageMagick. Проверьте следующее:

  • Права доступа: Убедитесь, что директория /var/www/redmine/files и все ее содержимое доступны для записи пользователем, под которым работает Puma (redmineuser) и Nginx (www-data). Выполните: sudo chown -R redmineuser:redmineuser /var/www/redmine/files и sudo chmod -R 755 /var/www/redmine/files.
  • ImageMagick: Redmine использует ImageMagick для обработки изображений (например, для превью). Убедитесь, что он установлен: sudo apt install imagemagick libmagickwand-dev -y.
  • Размер файлов: Проверьте client_max_body_size в конфигурации Nginx. Если пытаетесь загрузить файл большего размера, чем разрешено, Nginx может отклонить запрос.

7. Как изменить порт, на котором работает Puma?

По умолчанию Puma прослушивает порт 3000. Чтобы изменить его, отредактируйте файл /var/www/redmine/config/puma.rb и измените строку port ENV['PORT'] || 3000 на желаемый порт, например: port 3001. Затем перезапустите сервис Redmine: sudo systemctl restart redmine.service. Не забудьте обновить конфигурацию Nginx, если вы используете TCP-порт вместо сокета.

Выводы и следующие шаги

Поздравляем! Вы успешно установили и настроили Redmine на вашем VPS, создав надежную и полностью контролируемую платформу для управления проектами и отслеживания задач. Теперь ваша команда может эффективно сотрудничать, отслеживать прогресс и достигать целей, имея полный контроль над своими данными и инструментами.

Чтобы максимально использовать потенциал вашей новой системы, рассмотрите следующие шаги:

  • Интеграция с системами контроля версий: Настройте интеграцию Redmine с вашими репозиториями Git или SVN для автоматического связывания коммитов с задачами и просмотра изменений прямо из Redmine.
  • Установка плагинов: Изучите обширную библиотеку плагинов Redmine для расширения функциональности, такой как дополнительные отчеты, диаграммы, интеграции с другими сервисами или улучшения пользовательского интерфейса.
  • Мониторинг производительности: Внедрите инструменты мониторинга (например, Prometheus + Grafana) для отслеживания загрузки сервера, использования памяти и диска, а также производительности самого Redmine, чтобы своевременно реагировать на потенциальные проблемы.

Был ли этот гайд полезен?

Ваш отзыв помогает нам улучшать гайды.

Поделиться записью:

Отправьте гайд тому, кому он может пригодиться.

Telegram VKVK WhatsApp Facebook LinkedIn XX

установка redmine на vps для управления проектами и отслеживания задач
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.