Установка Bitnami Redmine в 2026: Docker, AWS и VM
Бесплатный Redmine от Bitnami закончился. Ставьте Redmine из официального Docker-образа redmine с PostgreSQL. Сохраните в пустую папку файл compose.yaml:
services:
db:
image: postgres:18
restart: unless-stopped
environment:
POSTGRES_USER: redmine
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: redmine
volumes:
- pgdata:/var/lib/postgresql
healthcheck:
test: ["CMD-SHELL", "pg_isready -h 127.0.0.1 -U redmine -d redmine"]
interval: 5s
retries: 10
redmine:
image: redmine:7.0
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "8080:3000"
environment:
REDMINE_DB_POSTGRES: db
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: ${DB_PASSWORD}
REDMINE_DB_DATABASE: redmine
SECRET_KEY_BASE: ${SECRET_KEY_BASE}
volumes:
- files:/usr/src/redmine/files
volumes:
pgdata:
files:
Сгенерируйте пароли и запустите:
printf 'DB_PASSWORD=%s\nSECRET_KEY_BASE=%s\n' "$(openssl rand -hex 16)" "$(openssl rand -hex 64)" > .env
docker compose up -d
Когда в docker compose logs redmine появится Listening on http://0.0.0.0:3000, откройте http://ваш-сервер:8080 и войдите как admin / admin. Redmine сразу попросит сменить пароль. Я проверял этот файл на Redmine 7.0.3 и PostgreSQL 18.6.
Что стало с Bitnami Redmine
На ноябрь 2026 года:
- У bitnami/redmine на Docker Hub не осталось публичных тегов: образ доступен только по платной подписке Bitnami Secure Images. В бесплатном наборе
bitnamisecureRedmine нет. - bitnamilegacy/redmine — замороженная копия. Последний тег
6.0.6-debian-12-r7от 22 августа 2025 года. Обновлений и поддержки не будет (объявление), а на странице в Docker Hub Bitnami предупреждает, что репозиторий могут удалить. - AWS: образы Bitnami и шаблоны Lightsail убрали 10 июня 2026 года (Broadcom). Запущенные серверы работают, но обновлений не получают. Страница в AWS Marketplace отвечает «Page not found».
- VM и установщики: с июня 2025 года виртуалки Bitnami (OVA) скачивают только клиенты VMware (bitnami/vms#1831), а страницы Redmine на bitnami.com перекидывают на главную Bitnami Secure Images. Установщики для Windows, macOS и Linux закрыли в ноябре 2022 года.
Ваш сервер на Bitnami продолжит работать, но без заплаток. А сам Redmine уже дошёл до версий 7.0.3, 6.1.6 и 6.0.12 (загрузки).
Логин и пароль Bitnami Redmine по умолчанию
Логин — user, а не admin. Где взять пароль:
- VM или сервер EC2:
sudo cat /home/bitnami/bitnami_credentials. На EC2 пароль ещё первые сутки виден в системном логе инстанса. - Lightsail:
cat ~/bitnami_application_password. - Docker-образ
bitnamilegacy/redmine:bitnami1, если при первом запуске не задалиREDMINE_PASSWORD. - MariaDB на VM от Bitnami: пользователь
root, пароль тот же, что у приложения.
Забыли пароль? Сбросьте его одной командой.
Настройка почты
Настройки SMTP Redmine берёт из config/configuration.yml. Создайте его рядом с compose.yaml:
production:
email_delivery:
delivery_method: :smtp
smtp_settings:
address: smtp.example.com
port: 587
enable_starttls_auto: true
authentication: :login
user_name: "redmine@example.com"
password: "app-password"
Добавьте его в volumes сервиса redmine и выполните docker compose up -d:
volumes:
- files:/usr/src/redmine/files
- ./configuration.yml:/usr/src/redmine/config/configuration.yml
На сервере Bitnami правьте /opt/bitnami/redmine/config/configuration.yml и перезапускайте sudo /opt/bitnami/ctlscript.sh restart.
Чтобы отправить проверочное письмо:
- В разделе «Моя учётная запись» укажите свой настоящий адрес. Письмо уйдёт на него, а у свежего админа там заглушка (
admin@dummy.invalidв 7.0). - В разделе Администрирование → Настройки → Уведомления по email заполните «Исходящий email адрес».
- Нажмите «Послать email для проверки».
Адрес сайта для ссылок в письмах
Ссылки в письмах Redmine собирает из настроек. Заполните «Имя компьютера» и «Протокол» в разделе Администрирование → Настройки → Общее. Или из консоли:
docker compose exec redmine bundle exec rails runner \
'Setting.host_name = "redmine.example.com"; Setting.protocol = "https"'
Контейнер отдаёт обычный HTTP на порту 3000. HTTPS делайте на прокси перед ним: nginx, Caddy или Traefik.
Если Redmine стоит на сервере Bitnami, направьте домен на его IP и запустите sudo /opt/bitnami/bncert-tool. Утилита спросит имена доменов, получит сертификат Let's Encrypt, настроит его продление и редирект с HTTP на HTTPS. Виртуальные хосты Apache, в которых я в 2016 году прописывал ServerName и ServerAlias, теперь лежат в /opt/bitnami/apache/conf/vhosts/ (документация Bitnami).
secret_key_base: ошибка в Bitnami и разлогины
Если запустить rails или rake вручную в Bitnami Redmine, где ключа ещё нет, получите:
Missing `secret_key_base` for 'production' environment, set this string with `bin/rails credentials:edit` (ArgumentError)
Совет про credentials:edit пропустите. На виртуалке или облачном сервере Bitnami ключ создаёт задача самого Redmine:
cd /opt/bitnami/redmine
RAILS_ENV=production bundle exec rake generate_secret_token
Ключ подписывает cookie сессий, поэтому новый ключ после перезапуска разлогинит всех.
В контейнере bitnamilegacy/redmine вместо этого задайте SECRET_KEY_BASE в environment, как в compose.yaml выше. Без переменной контейнер генерирует новый ключ при каждом пересоздании. Официальный образ ведёт себя так же. Я проверил оба: с переменной сессия пережила пересоздание контейнера, без неё Redmine отправил меня на страницу входа.
Переезд с Bitnami на официальный образ
Ваши данные — база bitnami_redmine и папка files с вложениями. Дамп из MariaDB от Bitnami загружается в MySQL 8.4 после одной замены через sed, поэтому базу меняем на MySQL. В compose.yaml замените сервис db, REDMINE_DB_POSTGRES поменяйте на REDMINE_DB_MYSQL, а том pgdata переименуйте в dbdata:
db:
image: mysql:8.4
restart: unless-stopped
command: --transaction-isolation=READ-COMMITTED
environment:
MYSQL_DATABASE: redmine
MYSQL_USER: redmine
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
volumes:
- dbdata:/var/lib/mysql
healthcheck:
test: ["CMD-SHELL", "mysql -h 127.0.0.1 -u redmine -p$$MYSQL_PASSWORD -e 'SELECT 1' redmine"]
interval: 5s
retries: 20
Инструкция по установке Redmine требует для MySQL режим READ-COMMITTED.
На старом сервере:
mysqldump -u root -p bitnami_redmine > bitnami_redmine.sql
tar czf redmine_files.tar.gz -C /opt/bitnami/redmine files
mysqldump спросит пароль — он тот же, что у приложения. Нет команды mysqldump — берите mariadb-dump. Если Redmine работал в compose-проекте на bitnamilegacy/redmine:
docker compose exec -T mariadb mariadb-dump -u root bitnami_redmine > bitnami_redmine.sql
docker compose cp redmine:/bitnami/redmine/files ./files
Если у root там есть пароль, первая строка такая: docker compose exec -T mariadb sh -c 'mariadb-dump -u root -p"$MARIADB_ROOT_PASSWORD" bitnami_redmine' > bitnami_redmine.sql.
На новом сервере (tar пропустите, если папка files уже есть):
docker compose up -d --wait db
sed 's/utf8mb4_uca1400_ai_ci/utf8mb4_0900_ai_ci/g' bitnami_redmine.sql \
| docker compose exec -T db sh -c 'mysql -u redmine -p"$MYSQL_PASSWORD" redmine'
tar xzf redmine_files.tar.gz
docker compose create redmine
docker compose cp files/. redmine:/usr/src/redmine/files/
docker compose up -d
docker compose exec redmine chown -R redmine:redmine files
sed меняет правило сортировки utf8mb4_uca1400_ai_ci, которого в MySQL нет, на utf8mb4_0900_ai_ci. Его ставит на таблицы MariaDB 11.5 и новее, в том числе bitnamilegacy/mariadb:latest. Дамп из MariaDB постарше sed оставит как есть.
При запуске образ сам обновит базу с 6.0 до 7.0. Входите под старым логином Bitnami. chown не пропускайте: docker compose cp сохраняет прежних владельцев файлов, и загрузка вложений падает с Errno::EACCES: Permission denied. Я так перенёс Redmine из bitnamilegacy/redmine:6.0.6, вложения доехали.
Плагины, которые поддерживают 7.0, положите в папку ./plugins, примонтируйте её в /usr/src/redmine/plugins и задайте REDMINE_PLUGINS_MIGRATE: "1". Подробнее — в посте про плагины Redmine.
Обновление Redmine в Docker
Сначала бэкап:
docker compose exec -T db pg_dump -U redmine redmine > redmine-$(date +%F).sql
docker compose cp redmine:/usr/src/redmine/files ./files-backup
Если переехали на MySQL, дамп снимайте так: docker compose exec -T db sh -c 'mysqldump --no-tablespaces -u redmine -p"$MYSQL_PASSWORD" redmine' > redmine-$(date +%F).sql.
Поменяйте тег, например redmine:6.1 на redmine:7.0, и выполните:
docker compose pull
docker compose up -d
Миграции запустятся сами — так я обновил 6.1.6 до 7.0.3. Тег 7.0 при каждом pull подтягивает исправления 7.0.x.
С новой мажорной версией PostgreSQL так не выйдет. postgres:19rc1 на томе от 18-й версии падает с there appears to be PostgreSQL data in: /var/lib/postgresql/18/docker. Снимите дамп, запустите новую версию на пустом томе и загрузите дамп через psql.
Частые ошибки
- Том PostgreSQL 18 примонтирован в
/var/lib/postgresql/data, как в старых инструкциях. Контейнер падает сError: in 18+, these Docker images are configured to store database data in a format which is compatible with "pg_ctlcluster". Монтируйте/var/lib/postgresql. - Дамп из MariaDB 11.5 или новее загружен без
sed. Импорт падает сERROR 1273 (HY000) at line 26: Unknown collation: 'utf8mb4_uca1400_ai_ci'. - Healthcheck через
mysqladmin ping. Он проходит даже приAccess denied, а при первом запуске ему отвечает временный сервер, на котором MySQL готовит базу.--wait dbвозвращается раньше, чем поднимется настоящий сервер. Проверяйте вход по TCP, как вcompose.yamlвыше. - Дамп снят с
--databases, как в инструкции Bitnami по обновлению. Он переключается на базуbitnami_redmine, и загрузка падает сAccess denied for user 'redmine'@'%' to database 'bitnami_redmine'. $в.env: Compose читаетab$cdкакabплюс пустую переменную. Пароли изopenssl rand -hexтаких символов не содержат.- Старые пути из версии этого поста 2016 года:
/opt/bitnami/apps/redmineи правка Apache, чтобы убрать префикс/redmine. Нынешние сборки Bitnami держат Redmine в/opt/bitnami/redmineи открывают его с корня сайта.