Instalar Redmine en Ubuntu 18.04 con Apache y MariaDB

Redmine es una aplicación web de gestión de proyectos, de código abierto, multiplataforma y basada en Ruby on Rails. Permite administrar varios proyectos y subproyectos, seguimiento de tiempo, wiki, gestión de documentos y control de versiones (Git, SVN, CVS). Soporta múltiples proyectos, control de acceso por roles (ACL) y notificaciones por correo.
Características principales
- Soporta múltiples idiomas.
- Permite varias bases de datos y seguimiento sencillo del tiempo.
- Se integra con noticias, gestión de documentos y ficheros.
- Ofrece feeds web y notificaciones por correo.
Importante: antes de empezar, asegúrate de tener acceso con un usuario con privilegios sudo y de que el servidor cumple los requisitos mínimos.
Requisitos previos
- Servidor Ubuntu 18.04 instalado.
- Un usuario no root con privilegios sudo.
- Conexión a Internet desde el servidor para instalar paquetes.
1. Instalar Apache y MariaDB
Redmine se ejecuta sobre un servidor web y guarda datos en MariaDB (compatible con MySQL). Instala Apache, MariaDB y Passenger con:
sudo apt-get install apache2 mariadb-server libapache2-mod-passenger -y
Inicia y habilita los servicios para que arranquen al iniciar el sistema:
sudo systemctl start apache2
sudo systemctl start mariadb
sudo systemctl enable apache2
sudo systemctl enable mariadb
Comprueba el estado de Apache con:
sudo systemctl status apache2
Si ves “active (running)” el servicio está en marcha.
2. Asegurar MariaDB
Por defecto MariaDB no está asegurada. Ejecuta el script interactivo para endurecer la instalación:
sudo mysql_secure_installation
Responde las preguntas de la siguiente forma si quieres seguir el ejemplo básico:
Enter current password for root (enter for none):
Set root password? [Y/n]: N
Remove anonymous users? [Y/n]: Y
Disallow root login remotely? [Y/n]: Y
Remove test database and access to it? [Y/n]: Y
Reload privilege tables now? [Y/n]: Y
Nota: si decides establecer contraseña para root, anótala en un gestor seguro.
3. Instalar Redmine desde repositorios
El paquete redmine está disponible en el repositorio de Ubuntu 18.04. Instálalo junto al paquete para MySQL/MariaDB:
sudo apt-get install redmine redmine-mysql -y
Durante la instalación aparecerá un asistente de configuración de paquetes. Selecciona “Yes” para configurar la base de datos desde el paquete.
Elige MySQL como tipo de base de datos cuando se muestre la opción:
Introduce la contraseña que Redmine usará para registrar la base de datos:
Al finalizar la instalación del paquete, instala Bundler (gestor de gemas) si no está presente:
sudo gem install bundler
Crea un enlace simbólico en el root web de Apache para exponer Redmine:
sudo ln -s /usr/share/redmine/public /var/www/html/redmine
Crea el archivo de bloqueo de gemas y ajusta permisos:
sudo touch /usr/share/redmine/Gemfile.lock
sudo chown www-data:www-data /usr/share/redmine/Gemfile.lock
sudo chown -R www-data:www-data /var/www/html/redmine
4. Configurar Apache y Passenger para Redmine
Edita la configuración de Passenger para asegurarte de que Apache ejecuta Rails con el usuario correcto:
sudo nano /etc/apache2/mods-available/passenger.conf
Ajusta o confirma que contiene:
PassengerDefaultUser www-data
PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini
PassengerDefaultRuby /usr/bin/ruby
Crea un VirtualHost para Redmine:
sudo nano /etc/apache2/sites-available/redmine.conf
Pega la siguiente configuración y reemplaza example.com por tu dominio real:
ServerAdmin [email protected]
DocumentRoot /var/www/html/redmine
ServerName example.com
ServerAlias www.example.com
RailsBaseURI /redmine
PassengerResolveSymlinksInDocumentRoot on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Habilita el sitio y el módulo rewrite, luego reinicia Apache:
sudo a2ensite redmine
sudo a2enmod rewrite
sudo systemctl restart apache2
Verifica el estado:
sudo systemctl status apache2
Ejemplo de salida esperada (texto de muestra del sistema):
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
Drop-In: /lib/systemd/system/apache2.service.d
??apache2-systemd.conf
Active: active (running) since Wed 2019-01-16 17:43:29 CET; 8s ago
Process: 7401 ExecStop=/usr/sbin/apachectl stop (code=exited, status=0/SUCCESS)
Process: 7407 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
Tasks: 77 (limit: 2313)
CGroup: /system.slice/apache2.service
??7455 /usr/sbin/apache2 -k start
??7456 Passenger watchdog
??7459 Passenger core
??7468 Passenger ust-router
??7482 /usr/sbin/apache2 -k start
??7483 /usr/sbin/apache2 -k start
Jan 16 17:43:29 server1 systemd[1]: Starting The Apache HTTP Server...
Jan 16 17:43:29 server1 systemd[1]: Started The Apache HTTP Server.
5. Acceder a la interfaz web de Redmine
Abre un navegador y visita tu dominio (por ejemplo http://example.com). Verás la página de inicio de Redmine:
Haz clic en “Sign In” para ir a la pantalla de login:
Credenciales iniciales por defecto:
- Usuario: admin
- Contraseña: admin
Se te pedirá cambiar la contraseña tras el primer acceso:
Una vez cambiado, accederás al tablero de Redmine:
¡Felicidades! Redmine está instalado y accesible.
Comprobaciones rápidas después de la instalación
- Accede con admin/admin y cambia la contraseña.
- Revisa /var/log/apache2/error.log para errores de Passenger o permisos.
- Asegúrate de que /var/www/html/redmine pertenece a www-data.
- Configura copias de seguridad de la base de datos y de los ficheros (attachments).
Mini-metodología: checklist de puesta en producción
- Instalar y asegurar MariaDB.
- Instalar Apache + Passenger y paquetes Redmine.
- Configurar VirtualHost y permisos (www-data).
- Probar acceso web y cambiar contraseña admin.
- Configurar correo saliente (SMTP) para notificaciones.
- Hacer copia de seguridad y plan de restauración.
- Configurar HTTPS con Certbot (Let’s Encrypt).
Nota: el tutorial usa HTTP en el ejemplo; para producción, instala HTTPS obligatoriamente.
Lista de verificación por rol
- Administrador del sistema:
- Crear usuario sudo seguro.
- Configurar firewall (ufw) y abrir puertos 80/443.
- Instalar y renovar certificados TLS.
- Administrador de Redmine:
- Cambiar contraseña del admin.
- Configurar correo SMTP.
- Crear proyectos y roles iniciales.
- Desarrollador/Integrador:
- Verificar integración con Git/SVN.
- Probar plugins en entorno de staging.
¿Qué puede fallar y soluciones rápidas?
- Problema: Error 500 al acceder a Redmine.
- Revisar /var/log/apache2/error.log y log de production en /usr/share/redmine/log.
- Verificar permisos (www-data) y Gemfile.lock presente.
- Problema: Passenger no arranca.
- Comprobar PassengerDefaultRuby apunta a la versión de Ruby instalada.
- Reinstalar libapache2-mod-passenger si es necesario.
- Problema: Conexión a la base de datos rechazada.
- Verificar credenciales en /etc/redmine/default/database.yml (o la configuración proporcionada por el paquete).
- Asegurar que MariaDB escucha en el socket adecuado y que el usuario tiene permisos.
Flujo de decisión para desplegar Redmine (Mermaid)
flowchart TD
A[¿Servidor Ubuntu 18.04 disponible?] -->|No| B[Instalar/actualizar SO]
A -->|Sí| C[Instalar Apache y MariaDB]
C --> D[¿MariaDB segura?]
D -->|No| E[Ejecutar mysql_secure_installation]
D -->|Sí| F[Instalar redmine y dependencias]
F --> G[Configurar Apache/Passenger]
G --> H[¿Acceso web OK?]
H -->|No| I[Revisar logs y permisos]
H -->|Sí| J[Configurar SMTP y HTTPS]
J --> K[Producción]
Criterios de aceptación
- Redmine responde en el navegador con el dominio configurado.
- Inicio de sesión con admin funciona y la contraseña ha sido modificada.
- Apache y MariaDB están activos y configurados para iniciar al arranque.
- Los permisos de ficheros permiten a www-data leer/escribir donde sea necesario.
Glosario (1 línea cada término)
- Passenger: módulo de Apache para ejecutar aplicaciones Ruby/Phusion.
- Bundler: gestor de dependencias Ruby (gems).
- VirtualHost: configuración de Apache para alojar un sitio/host virtual.
- Gemfile.lock: registro de versiones de gemas usadas por Redmine.
Recomendaciones finales
- Habilita HTTPS y configura renovación automática con Certbot.
- Automatiza backups (dump de base de datos y copia de /files y /public).
- Prueba el servidor en un entorno de staging antes de añadir plugins o cambios críticos.
Resumen:
- Redmine se puede instalar desde paquetes de Ubuntu 18.04 y requiere Apache, Passenger y MariaDB.
- Asegura la base de datos, configura permisos y habilita HTTPS para producción.
Importante: no uses las credenciales por defecto en servidores accesibles públicamente; cambia contraseñas y limita accesos.