
Redmine es un gestor de proyectos y rastreador de errores en Ruby on Rails, libre, con Gantt, calendario, wiki, foro, control de tiempo e integración con repositorios (Git, Subversion, Mercurial y otros). Existe desde 2006, nunca se convirtió en SaaS y sigue siendo la elección correcta cuando quieres los datos del proyecto dentro de tu infraestructura, sin suscripción por usuario.
Qué versión instalar
El proyecto lanza cada seis meses y mantiene tres líneas al mismo tiempo. En septiembre de 2026:
| Versión | Situación | Rails | Ruby soportado |
|---|---|---|---|
| 7.0.x | Estable actual: recibe funcionalidades, correcciones y seguridad | 8.1 | 3.2, 3.3, 3.4 y 4.0 |
| 6.1.x | Estable: solo correcciones y seguridad | 7.2 | 3.2, 3.3, 3.4 |
| 6.0.x | Legado: solo seguridad importante | 7.2 | 3.1, 3.2, 3.3 |
| 5.x y anteriores | Sin soporte | — | — |
Instalación nueva: 7.0.x. Un detalle del upstream que ahorra dolores de cabeza: Ruby 4.0.0 a 4.0.3 tiene una regresión que hace que el renderizado del wiki sea muy lento, corregida en 4.0.4. Si usas Ruby 4, usa 4.0.4 o más nuevo, o quédate con 3.3/3.4, que es lo que ofrecen las distribuciones hoy en día.
¿Paquete de la distribución o instalación desde el tarball?
Debian empaqueta Redmine (apt install redmine-pgsql) y funciona, pero la versión del repositorio suele ir bastante por detrás de la actual, y los plugins y temas esperan el árbol de archivos estándar del proyecto. Para un servidor que vas a mantener durante años, el tarball oficial ofrece más control. Ese es el camino que se describe a continuación.
Dependencias
sudo apt update
sudo apt install -y ruby ruby-dev build-essential
libpq-dev zlib1g-dev libssl-dev libyaml-dev
imagemagick libmagickwand-dev ghostscript
git subversion curl postgresql
# confira a versão do Ruby: o Redmine 7.0 aceita de 3.2 a 4.0
ruby -v
Los opcionales merecen la pena: ImageMagick habilita miniaturas y la exportación del Gantt a PNG, Ghostscript genera la miniatura de un PDF adjunto, y el Pandoc (3.8.3 o más nuevo) habilita la vista previa de .docx, .xlsx, .pptx e .odt en Redmine 7.
Base de datos
PostgreSQL 14 o más nuevo es la recomendación del proyecto:
sudo -u postgres psql -c "CREATE ROLE redmine LOGIN ENCRYPTED PASSWORD 'troque-esta-senha' NOINHERIT VALID UNTIL 'infinity';"
sudo -u postgres psql -c "CREATE DATABASE redmine WITH ENCODING='UTF8' OWNER=redmine;"
Descargando y configurando Redmine
sudo adduser --system --group --disabled-password --home /opt/redmine redmine
cd /tmp
VER=7.0.1
curl -fLO https://www.redmine.org/releases/redmine-${VER}.tar.gz
# confira o SHA-256 publicado na página de download antes de extrair
sha256sum redmine-${VER}.tar.gz
sudo tar xzf redmine-${VER}.tar.gz --strip-components=1 -C /opt/redmine
sudo chown -R redmine:redmine /opt/redmine
Cree /opt/redmine/config/database.yml:
production:
adapter: postgresql
database: redmine
host: localhost
username: redmine
password: "troque-esta-senha"
encoding: utf8
Gemas, clave secreta y migración
cd /opt/redmine
sudo -u redmine bundle config set --local without 'development test'
sudo -u redmine bundle config set --local path 'vendor/bundle'
sudo -u redmine bundle install
sudo -u redmine bundle exec rake generate_secret_token
sudo -u redmine RAILS_ENV=production bundle exec rake db:migrate
sudo -u redmine RAILS_ENV=production REDMINE_LANG=pt-BR bundle exec rake redmine:load_default_data
O REDMINE_LANG=pt-BR carga trackers, roles, prioridades y estados ya en español — si lo dejas en blanco, lo pregunta interactivamente.
Permisos de los directorios en los que Redmine escribe en tiempo de ejecución:
sudo mkdir -p /opt/redmine/tmp/pdf /opt/redmine/public/plugin_assets
sudo chown -R redmine:redmine /opt/redmine/files /opt/redmine/log /opt/redmine/tmp /opt/redmine/public/plugin_assets
sudo chmod -R 755 /opt/redmine/files /opt/redmine/log /opt/redmine/tmp /opt/redmine/public/plugin_assets
Prueba antes de convertirlo en servicio:
sudo -u redmine RAILS_ENV=production bundle exec rails server -b 127.0.0.1 -p 3000
Abre http://127.0.0.1:3000 por un túnel SSH. El inicio de sesión inicial es admin / admin — cambia la contraseña en la primera entrada, antes de publicar el servicio.
Puma como servicio en systemd
Cree /opt/redmine/config/puma.rb:
directory "/opt/redmine"
environment "production"
bind "unix:///opt/redmine/tmp/puma.sock"
pidfile "/opt/redmine/tmp/puma.pid"
state_path "/opt/redmine/tmp/puma.state"
workers 2
threads 2, 8
preload_app!
Y /etc/systemd/system/redmine.service:
[Unit]
Description=Redmine (Puma)
After=network-online.target postgresql.service
Wants=network-online.target
[Service]
Type=simple
User=redmine
Group=redmine
WorkingDirectory=/opt/redmine
Environment=RAILS_ENV=production
ExecStart=/usr/bin/bundle exec puma -C /opt/redmine/config/puma.rb
Restart=always
RestartSec=5
TimeoutStartSec=120
NoNewPrivileges=true
PrivateTmp=false
ProtectSystem=full
[Install]
WantedBy=multi-user.target
Atención al PrivateTmp=false: el socket de Puma se encuentra en /opt/redmine/tmp, y el nginx debe poder verlo.
sudo systemctl daemon-reload
sudo systemctl enable --now redmine
journalctl -u redmine -f
Nginx delante, con TLS
upstream redmine {
server unix:///opt/redmine/tmp/puma.sock;
}
server {
listen 443 ssl;
http2 on;
server_name projetos.exemplo.com.br;
ssl_certificate /etc/letsencrypt/live/projetos.exemplo.com.br/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/projetos.exemplo.com.br/privkey.pem;
root /opt/redmine/public;
client_max_body_size 100m;
# arquivos estáticos direto pelo nginx
location ~ ^/(assets|plugin_assets)/ {
expires 1y;
add_header Cache-Control public;
}
location / {
try_files $uri @app;
}
location @app {
proxy_pass http://redmine;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
sudo usermod -aG redmine www-data # nginx precisa ler o socket
sudo certbot --nginx -d projetos.exemplo.com.br
sudo systemctl reload nginx
El camino corto: Docker
Si solo quieres tener Redmine en marcha sin montar la pila Ruby a mano:
services:
db:
image: postgres:17
restart: always
environment:
POSTGRES_DB: redmine
POSTGRES_USER: redmine
POSTGRES_PASSWORD: troque-esta-senha
volumes:
- ./pgdata:/var/lib/postgresql/data
redmine:
image: redmine:6
restart: always
depends_on: [db]
ports:
- "127.0.0.1:3000:3000"
environment:
REDMINE_DB_POSTGRES: db
REDMINE_DB_DATABASE: redmine
REDMINE_DB_USERNAME: redmine
REDMINE_DB_PASSWORD: troque-esta-senha
REDMINE_SECRET_KEY_BASE: gere-uma-chave-longa-e-aleatoria
volumes:
- ./files:/usr/src/redmine/files
- ./plugins:/usr/src/redmine/plugins
docker compose up -d
La imagen oficial en Docker Hub suele acompañar la línea estable anterior a la más reciente: comprueba la etiqueta disponible antes de fijar la versión, y sigue poniendo nginx delante para el TLS.
Backup
Tres cosas, y ninguna es opcional:
# 1. banco
sudo -u postgres pg_dump -Fc redmine > /var/backups/redmine-$(date +%F).dump
# 2. anexos enviados pelos usuários
sudo tar czf /var/backups/redmine-files-$(date +%F).tar.gz -C /opt/redmine files
# 3. configuração
sudo tar czf /var/backups/redmine-conf-$(date +%F).tar.gz -C /opt/redmine config
Restaurar solo la base de datos y olvidar el files/ es el error clásico: Redmine arranca bien y cada adjunto acaba siendo un enlace roto.
Actualizando
sudo systemctl stop redmine
# backup dos três itens acima ANTES de qualquer coisa
# extraia a nova versão por cima, preservando config/, files/ e plugins/
cd /opt/redmine
sudo -u redmine bundle install
sudo -u redmine RAILS_ENV=production bundle exec rake db:migrate
sudo -u redmine RAILS_ENV=production bundle exec rake tmp:cache:clear
sudo systemctl start redmine
Los plugins son la causa número uno de actualizaciones atascadas. Desactiva los que no sean compatibles con la nueva versión antes de ejecutar la migración y lee la guía oficial RedmineUpgrade cuando el salto sea de una línea mayor.
El post original (abril de 2017)
Conservado como registro. Los siguientes scripts instalaban Redmine 3.3.2 en Debian 8.7 y no deben usarse hoy:
## Redmine 3.3.2 integrado ao ISPConfig3 (Debian 8)
cd /tmp/
wget https://gist.githubusercontent.com/jniltinho/66c64a33d8b0a515c95ea9750f8f69d5/raw/5318d664f213155c7e5a5c5f55e4ef2e078a082c/install_redmine.sh
chmod +x install_redmine.sh
./install_redmine.sh
## Redmine 3.3.2 com nginx, em Debian 8.7 limpo
cd /tmp/
wget https://gist.githubusercontent.com/jniltinho/cb0743ed1ddc1544f644c223d1a0578e/raw/1ccfaba34095920d939b1db2461c52bddbab8ef3/install_redmine_nginx.sh
chmod +x install_redmine_nginx.sh
./install_redmine_nginx.sh
Las entradas citadas en la versión original siguen en línea: ISPConfig3 en Debian y la Serie Servidores Linux.
Enlaces
- Descarga oficial · RedmineInstall · RedmineUpgrade
- Aquí en el blog: La historia de Git · Instalando Gogs en Ubuntu