Guía de tecnologías

Instalar Redmine en Ubuntu 18.04 con Apache y MariaDB

5 min read Tutorial Actualizado 27 Sep 2025
Instalar Redmine en Ubuntu 18.04 con Apache y MariaDB
Instalar Redmine en Ubuntu 18.04 con Apache y MariaDB

Captura de pantalla: página de instalación de Redmine mostrando la pregunta de configuración del paquete

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.

Asistente: elegir Yes para configurar la base de datos durante la instalación del paquete de Redmine

Elige MySQL como tipo de base de datos cuando se muestre la opción:

Asistente: seleccionar la base de datos MySQL para Redmine

Introduce la contraseña que Redmine usará para registrar la base de datos:

Asistente: introducir la contraseña de MySQL para Redmine

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:

Página de inicio de Redmine mostrando la interfaz de bienvenida

Haz clic en “Sign In” para ir a la pantalla de login:

Pantalla de inicio de sesión de Redmine solicitando usuario y contraseña

Credenciales iniciales por defecto:

  • Usuario: admin
  • Contraseña: admin

Se te pedirá cambiar la contraseña tras el primer acceso:

Pantalla para cambiar la contraseña del administrador de Redmine

Una vez cambiado, accederás al tablero de Redmine:

Panel principal o tablero de Redmine mostrando proyectos y actividad

¡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

  1. Instalar y asegurar MariaDB.
  2. Instalar Apache + Passenger y paquetes Redmine.
  3. Configurar VirtualHost y permisos (www-data).
  4. Probar acceso web y cambiar contraseña admin.
  5. Configurar correo saliente (SMTP) para notificaciones.
  6. Hacer copia de seguridad y plan de restauración.
  7. 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.

Autor
Edición

Materiales similares

Cómo escanear y asegurar un sitio WordPress
Seguridad

Cómo escanear y asegurar un sitio WordPress

Hilos de foro a RSS con Blogger
Guías

Hilos de foro a RSS con Blogger

Instalar OCS Inventory NG 2 en CentOS 5.5
Linux

Instalar OCS Inventory NG 2 en CentOS 5.5

Función CHAR en Google Sheets: símbolos y saltos
Hojas de cálculo

Función CHAR en Google Sheets: símbolos y saltos

Mejorar calidad de fotos en iPhone
Fotografía

Mejorar calidad de fotos en iPhone

Protección contra inyección SQL
Seguridad

Protección contra inyección SQL