Instalación de Redmine en un VPS para la gestión de proyectos y el seguimiento de tareas
TL;DR
En esta guía detallada, configuraremos Redmine paso a paso —un sistema potente, flexible y de código abierto para la gestión de proyectos y el seguimiento de tareas— en su propio servidor VPS. Aprenderá a preparar el servidor, instalar todos los componentes necesarios (PostgreSQL, Ruby, Nginx, Puma), configurarlos para que trabajen juntos, garantizar la seguridad con HTTPS y organizar copias de seguridad periódicas. Como resultado, obtendrá una plataforma totalmente controlada para la gestión eficaz de los proyectos de su equipo.
- Instalación completa de Redmine 5.x en Ubuntu 24.04 LTS utilizando Nginx, Puma y PostgreSQL.
- Configuración de acceso seguro a través de HTTPS con Certbot para certificados SSL/TLS gratuitos.
- Instrucciones detalladas para la preparación del servidor, incluyendo la configuración de SSH, firewall y utilidades básicas.
- Recomendaciones para elegir la configuración óptima de VPS y escalabilidad.
- Scripts para la copia de seguridad automática de la base de datos y los archivos de Redmine.
- Sección de resolución de problemas comunes y preguntas frecuentes.
Qué configuramos y por qué
En esta guía, nos centraremos en la instalación y configuración de Redmine —un sistema de gestión de proyectos de código abierto y flexible, basado en Ruby on Rails. Redmine ofrece una amplia gama de funciones para equipos de cualquier tamaño: seguimiento de tareas (issue tracking), diagramas de Gantt, calendario, gestión de documentos, foros, wikis, gestión del tiempo, así como integración con sistemas de control de versiones como Git y Subversion.
Al elegir Redmine, obtendrá una potente herramienta para organizar el trabajo que le ayudará a:
- Centralizar la gestión de proyectos: Todas las tareas, documentos, discusiones y planes estarán en un solo lugar, accesible para todo el equipo.
- Seguir las tareas de forma eficaz: Cree tareas, asigne responsables, establezca prioridades y plazos, y siga el progreso y los estados.
- Mejorar la comunicación: Utilice los foros y wikis integrados para compartir conocimientos y debatir proyectos.
- Obtener control total sobre los datos: A diferencia de las soluciones en la nube, sus datos se almacenan en su VPS, lo que garantiza la máxima confidencialidad y seguridad.
- Flexibilidad y personalización: El código fuente abierto de Redmine permite adaptarlo a las necesidades únicas de su equipo, instalar plugins y personalizar la apariencia.
Alternativas: Cloud-Managed vs. Self-Hosted
Existen numerosas soluciones de gestión de proyectos en el mercado. Se pueden dividir condicionalmente en dos categorías:
-
Servicios en la nube (Cloud-Managed): Son plataformas como Jira, Asana, Trello, Monday.com. Ofrecen una solución "lista para usar" que no requiere conocimientos técnicos de configuración del servidor. Simplemente se registra, paga una suscripción mensual y empieza a trabajar.
- Ventajas: Facilidad de inicio, administración mínima, soporte del proveedor.
- Desventajas: Dependencia de un proveedor externo, falta de control total sobre los datos, opciones de personalización limitadas, costes potencialmente más altos a largo plazo, especialmente para equipos grandes.
-
Soluciones autoalojadas (Self-Hosted) en un VPS: Estas incluyen Redmine, GitLab, Mattermost, Nextcloud. Usted alquila un VPS, instala y configura el software por su cuenta.
- Ventajas: Control total sobre los datos y la seguridad, alto grado de personalización, a menudo costes a largo plazo más bajos, especialmente si ya tiene experiencia en la administración de servidores.
- Desventajas: Requiere conocimientos técnicos para la instalación y el mantenimiento, la responsabilidad de las copias de seguridad y las actualizaciones recae en usted.
La elección de Redmine en un VPS es ideal para aquellos que valoran el control, la privacidad y desean tener la capacidad de ajustar finamente el sistema a sus necesidades, sin querer pagar de más por los servicios en la nube, especialmente a medida que el equipo crece. Esta guía le ayudará a dominar todos los pasos necesarios para una implementación exitosa.
Qué configuración de VPS se necesita para esta tarea
Elegir la configuración de VPS correcta es clave para garantizar un funcionamiento estable y rápido de Redmine. Los requisitos pueden variar según el tamaño de su equipo, el número de proyectos, la intensidad de uso y el volumen de archivos almacenados.
Requisitos mínimos para un equipo pequeño (hasta 10 usuarios)
- CPU: 2 núcleos. Aunque Redmine puede funcionar con 1 núcleo, 2 núcleos proporcionarán una mejor capacidad de respuesta, especialmente cuando varios usuarios trabajan simultáneamente o se realizan operaciones que consumen muchos recursos (por ejemplo, generación de informes o indexación).
- RAM: 4 GB. Ruby on Rails (en el que se ejecuta Redmine), la base de datos (PostgreSQL) y el servidor web (Nginx + Puma) son bastante exigentes en cuanto a memoria RAM. 4 GB es el mínimo cómodo para un funcionamiento estable.
- Disco: 80 GB SSD. Las unidades SSD aceleran significativamente el funcionamiento de la base de datos y la carga de la aplicación. 80 GB serán suficientes para el sistema operativo, Redmine, la base de datos y una cierta cantidad de archivos adjuntos. Si planea almacenar muchos archivos o usar Redmine para gestionar una gran cantidad de proyectos con imágenes y documentos, considere 100-120 GB.
- Red: 100 Mbps. Para la mayoría de las tareas, esto será suficiente. Si planea usar Redmine activamente con muchos usuarios que trabajan con archivos grandes, considere 1 Gbps.
Plan de VPS recomendado para equipos medianos (10-30 usuarios)
Para un uso más activo y equipos de tamaño mediano, se deben considerar las siguientes características:
- CPU: 4 núcleos
- RAM: 8 GB
- Disco: 160 GB SSD
- Red: 1 Gbps
Esta configuración garantizará un excelente rendimiento y un margen de seguridad para el crecimiento. Puede considerar un VPS con las características indicadas para alquilar.
Cuándo se necesita un Dedicated, no un VPS
Un servidor Dedicated (servidor dedicado) es preferible a un VPS en los siguientes casos:
- Equipos muy grandes (más de 50 usuarios) o alta carga en el sistema.
- Proyectos críticamente importantes, donde se requiere el máximo rendimiento y mínimas latencias.
- Requisitos de aislamiento: Si no desea compartir recursos con otros usuarios en el mismo servidor físico.
- Requisitos especiales de seguridad o cumplimiento de estándares: Algunas regulaciones pueden requerir aislamiento físico.
- Se planea ejecutar muchos otros servicios en el mismo servidor además de Redmine.
Para tales escenarios, un servidor dedicated adecuado le proporcionará todos los recursos físicos de la máquina sin virtualización.
Ubicación del VPS: qué factores influyen
La elección de la ubicación del servidor VPS es importante por varias razones:
- Latencia: Cuanto más cerca esté el servidor de su equipo y usuarios finales, menor será la latencia y más rápida la respuesta de Redmine. Elija un centro de datos ubicado geográficamente cerca del lugar de trabajo principal de su equipo.
- Legislación sobre datos: En algunas jurisdicciones existen leyes estrictas sobre el almacenamiento de datos (por ejemplo, GDPR en Europa). La elección de una ubicación de servidor que cumpla con estas leyes puede ser de vital importancia.
- Disponibilidad y fiabilidad: Los grandes proveedores suelen tener centros de datos en diferentes regiones con alta disponibilidad y fiabilidad de los canales de red.
Tenga en cuenta estos factores al elegir un proveedor y un centro de datos específico para su VPS.
Preparación del servidor
Antes de instalar Redmine, es necesario realizar la configuración y preparación básica de su VPS. Utilizaremos Ubuntu Server 24.04 LTS, como sistema operativo actual y estable para el año 2026.
1. Conexión al servidor y actualización del sistema
Primero, conéctese a su VPS a través de SSH, utilizando las credenciales proporcionadas por el proveedor. Normalmente, se trata del usuario root y una contraseña.
ssh root@ВАШ_IP_АДРЕС
Después de conectarse, actualice la lista de paquetes e instale todas las actualizaciones disponibles. Esto garantizará la actualidad de todos los componentes y la corrección de vulnerabilidades conocidas.
sudo apt update # Actualizar la lista de paquetes
sudo apt upgrade -y # Instalar todas las actualizaciones disponibles
2. Creación de un nuevo usuario con permisos sudo
Trabajar como usuario root no es seguro. Cree un nuevo usuario y concédale permisos sudo.
adduser redmineuser # Crear un nuevo usuario llamado redmineuser
usermod -aG sudo redmineuser # Añadir el usuario al grupo sudo
Establezca una contraseña segura para el nuevo usuario cuando el sistema se lo solicite. Después de esto, salga de la sesión de root e inicie sesión con el nuevo usuario.
exit # Salir de la sesión de root
ssh redmineuser@ВАШ_IP_АДРЕС # Iniciar sesión con el nuevo usuario
3. Configuración de claves SSH (recomendado)
Para mejorar la seguridad y la comodidad, se recomienda utilizar claves SSH en lugar de contraseñas. Si aún no tiene un par de claves, genérelas en su máquina local:
ssh-keygen -t rsa -b 4096 # Generar un nuevo par de claves SSH en la máquina local
Luego, copie la clave pública a su VPS:
ssh-copy-id redmineuser@ВАШ_IP_АДРЕС # Copiar la clave pública al servidor
Después de esto, puede deshabilitar la autenticación por contraseña para SSH (editando /etc/ssh/sshd_config: PasswordAuthentication no y reiniciando sudo systemctl restart sshd), pero hágalo solo después de asegurarse de que el inicio de sesión con clave funciona.
4. Configuración del firewall (UFW)
Instale y configure UFW (Uncomplicated Firewall) para restringir el acceso al servidor solo a los puertos necesarios.
sudo apt install ufw -y # Instalar UFW
sudo ufw allow OpenSSH # Permitir conexiones SSH (puerto 22)
sudo ufw allow http # Permitir tráfico HTTP (puerto 80)
sudo ufw allow https # Permitir tráfico HTTPS (puerto 443)
sudo ufw enable # Habilitar el firewall
sudo ufw status # Comprobar el estado del firewall
Asegúrese de que SSH está permitido antes de habilitar el firewall, de lo contrario, podría perder el acceso al servidor.
5. Instalación de Fail2Ban
Fail2Ban ayuda a protegerse contra ataques de fuerza bruta bloqueando las direcciones IP desde las que se producen demasiados intentos fallidos de inicio de sesión.
sudo apt install fail2ban -y # Instalar Fail2Ban
sudo systemctl enable fail2ban # Habilitar el inicio automático de Fail2Ban
sudo systemctl start fail2ban # Iniciar Fail2Ban
Fail2Ban protege SSH por defecto. Para una configuración más fina, puede copiar el archivo de configuración /etc/fail2ban/jail.conf a /etc/fail2ban/jail.local y realizar los cambios allí.
6. Instalación de utilidades básicas
Instale algunas utilidades útiles que pueden ser de ayuda durante el proceso de instalación y administración.
sudo apt install git curl wget htop build-essential -y # Instalar Git, Curl, Wget, Htop y herramientas de compilación
Ahora su servidor está preparado para la instalación de Redmine y sus componentes.
Instalación de software — paso a paso
En esta sección, instalaremos todo el software necesario para ejecutar Redmine: la base de datos PostgreSQL, el entorno de ejecución Ruby, el servidor web Nginx y el servidor de aplicaciones Puma.
1. Instalación de PostgreSQL 16
Redmine funciona bien con PostgreSQL. Instalaremos la versión actual.
sudo apt install postgresql postgresql-contrib -y # Instalación de PostgreSQL y utilidades adicionales
Crearemos un usuario de base de datos y la base de datos para Redmine. Reemplace redmine_user y your_strong_password con sus propios valores.
sudo -u postgres psql -c "CREATE USER redmine_user WITH PASSWORD 'your_strong_password';" # Creación de usuario de BD
sudo -u postgres psql -c "CREATE DATABASE redmine_db OWNER redmine_user ENCODING 'UTF8';" # Creación de base de datos
sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE redmine_db TO redmine_user;" # Otorgar permisos al usuario
2. Instalación de RVM para gestionar Ruby (alternativa: rbenv)
Utilizaremos RVM (Ruby Version Manager) para instalar y gestionar las versiones de Ruby. Esto permitirá instalar fácilmente la versión de Ruby necesaria y evitar conflictos con la versión del sistema.
sudo apt install software-properties-common gnupg2 -y # Instalación de dependencias para añadir repositorios
gpg --keyserver hkp://keyserver.ubuntu.com --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB # Importación de claves GPG de RVM
curl -sSL https://get.rvm.io | bash -s stable --ruby # Instalación de RVM y la última versión estable de Ruby
Después de instalar RVM, es necesario cargarlo en la sesión actual. Es posible que deba cerrar y volver a iniciar sesión en SSH o ejecutar:
source /home/redmineuser/.rvm/scripts/rvm # Cargar RVM en la sesión actual
rvm install ruby-3.4.0 # Instalación de Ruby 3.4.0 (actual para 2026)
rvm use ruby-3.4.0 --default # Establecer Ruby 3.4.0 como versión predeterminada
ruby -v # Comprobar la versión de Ruby instalada
Instale Bundler — el gestor de dependencias de Ruby.
gem install bundler -v 2.5.1 # Instalación de Bundler versión 2.5.1
3. Descarga de Redmine
Cree un directorio para Redmine y descargue la última versión estable (por ejemplo, 5.1.x o 5.2.x, actual para 2026) desde el sitio web oficial o GitHub. Utilizaremos /var/www/redmine.
sudo mkdir -p /var/www/redmine # Creación de directorio para Redmine
sudo chown -R redmineuser:redmineuser /var/www/redmine # Cambio de propietario del directorio
cd /var/www/redmine # Ir al directorio de Redmine
wget https://www.redmine.org/releases/redmine-5.1.2.tar.gz # Descarga de Redmine 5.1.2 (ejemplo)
tar -xvzf redmine-5.1.2.tar.gz # Descomprimir el archivo
mv redmine-5.1.2/ . # Mover el contenido al directorio actual
rmdir redmine-5.1.2 # Eliminar el directorio vacío
rm redmine-5.1.2.tar.gz # Eliminar el archivo
4. Instalación de dependencias de Redmine
Vaya al directorio de Redmine e instale todas las gemas (bibliotecas Ruby) necesarias utilizando Bundler.
cd /var/www/redmine # Ir al directorio de Redmine
bundle install --without development test # Instalación de dependencias, excluyendo dev y test
Es posible que deba instalar bibliotecas del sistema adicionales para algunas gemas:
sudo apt install libpq-dev libmagickwand-dev imagemagick -y # Instalación de dependencias para PostgreSQL e ImageMagick
Después de instalar estas dependencias, si bundle install finalizó con errores, intente ejecutarlo de nuevo.
5. Configuración de la base de datos de Redmine
Copie el archivo de configuración de ejemplo de la base de datos y edítelo, especificando los datos de su base de datos PostgreSQL.
cp config/database.yml.example config/database.yml # Copiar archivo de configuración
nano config/database.yml # Abrir archivo para editar
En el archivo config/database.yml, encuentre la sección production: y ajústela al siguiente formato (reemplace los datos con los suyos):
production:
adapter: postgresql
database: redmine_db
host: localhost
username: redmine_user
password: "your_strong_password"
encoding: utf8
pool: 5
Guarde y cierre el archivo (Ctrl+X, Y, Enter).
6. Generación de token secreto
Redmine requiere un token secreto para proteger las sesiones y otras operaciones criptográficas.
bundle exec rake generate_secret_token # Generación de token secreto
7. Migración de la base de datos y carga de datos predeterminados
Ejecute las migraciones de la base de datos para crear todas las tablas necesarias de Redmine.
bundle exec rake db:migrate RAILS_ENV=production # Ejecución de migraciones de la base de datos
Cargue los datos predeterminados (idiomas, roles, estados de tareas). Seleccione el idioma predeterminado (por ejemplo, ru para ruso).
bundle exec rake redmine:load_default_data RAILS_ENV=production # Carga de datos predeterminados
Cuando el sistema solicite el idioma, ingrese ru y presione Enter.
8. Configuración de permisos
Asegúrese de que Redmine tenga los permisos necesarios para escribir en los directorios files, log y tmp.
sudo chown -R redmineuser:redmineuser files log tmp public/plugin_assets # Establecer propietario
chmod -R 755 files log tmp public/plugin_assets # Establecer permisos de acceso
9. Ejecución de prueba de Puma
Para verificar el funcionamiento de Redmine, ejecútelo en modo de desarrollo con Puma.
bundle exec puma -e production -b tcp://127.0.0.1:3000 # Iniciar Puma en el puerto 3000
Si todo está configurado correctamente, verá mensajes sobre el inicio de Puma. Puede verificar la disponibilidad de Redmine desde el servidor usando curl http://127.0.0.1:3000. Debería ver el código HTML de la página. Presione Ctrl+C para detener Puma. En la siguiente sección, lo configuraremos como un servicio del sistema.