bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Instalación de Redmine en VPS

calendar_month Jul 22, 2026 schedule 21 min de lectura visibility 21 vistas
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

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.

Configuración

Después de instalar los componentes principales, es necesario configurarlos para un funcionamiento estable y seguro de Redmine. Esto incluye la configuración de Nginx como proxy inverso, el inicio de Puma como servicio del sistema y la habilitación de HTTPS.

1. Configuración de Puma como servicio del sistema (systemd)

Para que Redmine se inicie automáticamente al arrancar el servidor y funcione en segundo plano, configuraremos Puma como un servicio de systemd.

Cree un archivo de servicio para Puma:


sudo nano /etc/systemd/system/redmine.service # Creación de un nuevo archivo de servicio

Pegue el siguiente contenido, reemplazando redmineuser por el nombre de su usuario y /var/www/redmine por la ruta de su instalación de Redmine:


[Unit]
Description=Puma HTTP Server for Redmine
After=network.target postgresql.service

[Service]
Type=simple
User=redmineuser
Group=redmineuser
WorkingDirectory=/var/www/redmine
Environment=RAILS_ENV=production
ExecStart=/home/redmineuser/.rvm/bin/rvm-auto-ruby bundle exec puma -C /var/www/redmine/config/puma.rb
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=15
RestartSec=2
Restart=on-failure

[Install]
WantedBy=multi-user.target

Guarde y cierre el archivo.

Ahora cree el archivo de configuración de Puma config/puma.rb:


nano /var/www/redmine/config/puma.rb # Creación del archivo de configuración de Puma

Pegue el siguiente contenido:


# config/puma.rb
# Reemplace 'redmineuser' con el nombre de su usuario
# Reemplace '/var/www/redmine' con la ruta de su instalación de Redmine

workers Integer(ENV['WEB_CONCURRENCY'] || 2)
threads_count = Integer(ENV['RAILS_MAX_THREADS'] || 5)
threads threads_count, threads_count

rackup DefaultRackup
port        ENV['PORT']     || 3000
environment ENV['RACK_ENV'] || 'production'

pidfile    "/var/www/redmine/tmp/pids/puma.pid"
state_path "/var/www/redmine/tmp/pids/puma.state"
stdout_redirect "/var/www/redmine/log/puma.stdout.log", "/var/www/redmine/log/puma.stderr.log", true

# On workers boot
on_worker_boot do
  ActiveRecord::Base.establish_connection if defined?(ActiveRecord)
end

# Allow puma to be restarted by rails restart command.
plugin :tmp_restart

Guarde y cierre el archivo.

Recargue systemd, habilite e inicie el servicio Redmine:


sudo systemctl daemon-reload           # Recargar configuración de systemd
sudo systemctl enable redmine.service  # Habilitar inicio automático del servicio Redmine
sudo systemctl start redmine.service   # Iniciar servicio Redmine
sudo systemctl status redmine.service  # Comprobar estado del servicio

Asegúrese de que el servicio esté en ejecución y no contenga errores. La salida debe ser "active (running)" en verde.

2. Configuración de Nginx como proxy inverso

Instale Nginx, si aún no está instalado:


sudo apt install nginx -y # Instalación de Nginx

Cree un nuevo archivo de configuración de Nginx para Redmine:


sudo nano /etc/nginx/sites-available/redmine.conf # Creación del archivo de configuración de Nginx

Pegue el siguiente contenido, reemplazando your_domain.com por su dominio:


upstream redmine {
    server unix:///var/www/redmine/tmp/sockets/puma.sock fail_timeout=0;
    # O, si Puma escucha en un puerto TCP:
    # server 127.0.0.1:3000;
}

server {
    listen 80;
    server_name your_domain.com; # Reemplace con su dominio
    return 301 https://$host$request_uri; # Redirección HTTP a HTTPS
}

server {
    listen 443 ssl http2;
    server_name your_domain.com; # Reemplace con su dominio

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem; # Será creado por Certbot
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem; # Será creado por Certbot
    ssl_session_timeout 1d;
    ssl_session_cache shared:SSL:10m;
    ssl_session_tickets off;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';
    ssl_prefer_server_ciphers on;

    root /var/www/redmine/public; # Ruta al directorio public de Redmine

    access_log /var/log/nginx/redmine_access.log;
    error_log /var/log/nginx/redmine_error.log;

    location / {
        try_files $uri @redmine;
    }

    location @redmine {
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_redirect off;
        proxy_pass http://redmine; # Usamos upstream redmine
    }

    error_page 500 502 503 504 /500.html;
    client_max_body_size 100M; # Tamaño máximo de archivos a subir
    keepalive_timeout 10;
}

Guarde y cierre el archivo. Active la configuración creando un enlace simbólico y eliminando el predeterminado:


sudo ln -s /etc/nginx/sites-available/redmine.conf /etc/nginx/sites-enabled/ # Creación de enlace simbólico
sudo rm /etc/nginx/sites-enabled/default # Eliminación de la configuración predeterminada de Nginx
sudo nginx -t                          # Comprobación de la sintaxis de la configuración de Nginx
sudo systemctl restart nginx           # Reinicio de Nginx

Si Puma está configurado para un socket, entonces en config/puma.rb debe añadir la línea bind "unix:///var/www/redmine/tmp/sockets/puma.sock" y asegurarse de que el directorio tmp/sockets exista y tenga los permisos correctos.


mkdir -p /var/www/redmine/tmp/sockets
chmod 777 /var/www/redmine/tmp/sockets # Temporalmente para pruebas, más tarde se puede restringir

3. Configuración de TLS/HTTPS con Certbot

Se recomienda encarecidamente utilizar HTTPS para proteger el tráfico. Utilizaremos Certbot para obtener certificados SSL/TLS gratuitos de Let's Encrypt.


sudo apt install certbot python3-certbot-nginx -y # Instalación de Certbot y el plugin para Nginx
sudo certbot --nginx -d your_domain.com           # Obtención e instalación del certificado (reemplace el dominio)

Certbot modificará automáticamente su configuración de Nginx para usar HTTPS y configurará la renovación automática de certificados. Siga las instrucciones en pantalla. Asegúrese de que su dominio ya apunte a la dirección IP de su VPS.

4. Verificación de funcionamiento

Abra su dominio (https://your_domain.com) en el navegador. Debería ver la página de inicio de sesión de Redmine. Por defecto, el nombre de usuario es: admin, la contraseña es: admin. Asegúrese de cambiarla en el primer inicio de sesión.

También puede verificar la disponibilidad usando curl:


curl -I https://your_domain.com # Verificación de encabezados HTTP

Asegúrese de que el estado HTTP sea 200 OK. Si surgen problemas, revise los registros de Nginx (/var/log/nginx/error.log) y Puma/Redmine (/var/www/redmine/log/puma.stderr.log o /var/www/redmine/log/production.log).

Copias de seguridad y mantenimiento

Las copias de seguridad regulares y el mantenimiento oportuno son críticos para cualquier sistema en producción, incluyendo Redmine. Esto evitará la pérdida de datos y asegurará un funcionamiento estable.

1. Qué respaldar

Para una recuperación completa de Redmine, necesitará tres componentes principales:

  1. Base de datos de Redmine: Contiene todas las tareas, proyectos, usuarios, configuraciones y otros datos estructurados.
  2. Directorio files: Almacena todos los archivos adjuntos, imágenes y documentos subidos por los usuarios.
  3. Archivos de configuración de Redmine: Archivos clave, como config/database.yml, config/configuration.yml (para la configuración de correo y otras opciones) y config/initializers/secret_token.rb.

2. Script simple de copia de seguridad automática

Crearemos un script Bash simple que realizará la copia de seguridad de estos componentes. Cree un directorio para las copias de seguridad y el script en sí.


sudo mkdir -p /var/backups/redmine # Creación del directorio para almacenar las copias de seguridad
sudo chown redmineuser:redmineuser /var/backups/redmine # Cambio de propietario
nano /home/redmineuser/redmine_backup.sh # Creación del script de copia de seguridad

Pegue el siguiente contenido en el script, reemplazando redmine_user, redmine_db, /var/www/redmine y /var/backups/redmine con sus propios valores.


#!/bin/bash

# Variables
DB_USER="redmine_user"
DB_NAME="redmine_db"
REDMINE_ROOT="/var/www/redmine"
BACKUP_DIR="/var/backups/redmine"
TIMESTAMP=$(date +%Y%m%d%H%M%S)

# Creación del directorio para la copia de seguridad actual
CURRENT_BACKUP_DIR="$BACKUP_DIR/$TIMESTAMP"
mkdir -p "$CURRENT_BACKUP_DIR"

echo "Iniciando la copia de seguridad de Redmine en $CURRENT_BACKUP_DIR..."

# 1. Copia de seguridad de la base de datos PostgreSQL
echo "Volcado de la base de datos..."
sudo -u postgres pg_dump -Fc "$DB_NAME" > "$CURRENT_BACKUP_DIR/redmine_db.dump"
if [ $? -eq 0 ]; then
    echo "Volcado de la base de datos creado con éxito."
else
    echo "Error al crear el volcado de la base de datos."
fi

# 2. Copia de seguridad del directorio files
echo "Copiando archivos..."
rsync -a "$REDMINE_ROOT/files" "$CURRENT_BACKUP_DIR/"
if [ $? -eq 0 ]; then
    echo "Archivos copiados con éxito."
else
    echo "Error al copiar archivos."
fi

# 3. Copia de archivos de configuración
echo "Copiando archivos de configuración..."
cp "$REDMINE_ROOT/config/database.yml" "$CURRENT_BACKUP_DIR/"
cp "$REDMINE_ROOT/config/configuration.yml" "$CURRENT_BACKUP_DIR/"
cp "$REDMINE_ROOT/config/initializers/secret_token.rb" "$CURRENT_BACKUP_DIR/"
if [ $? -eq 0 ]; then
    echo "Archivos de configuración copiados con éxito."
else
    echo "Error al copiar archivos de configuración."
fi

# 4. Eliminación de copias de seguridad antiguas (por ejemplo, más de 7 días)
echo "Eliminando copias de seguridad antiguas (más de 7 días)..."
find "$BACKUP_DIR" -maxdepth 1 -mtime +7 -exec rm -rf {} \;
echo "Copia de seguridad completada."

Haga el script ejecutable:


chmod +x /home/redmineuser/redmine_backup.sh # Hacemos el script ejecutable

3. Configuración de Cron para el inicio automático de la copia de seguridad

Agregue el script al programador Cron para que se ejecute automáticamente, por ejemplo, diariamente a las 3:00 de la madrugada.


crontab -e # Apertura de crontab para el usuario actual

Agregue la siguiente línea al final del archivo:


0 3 * * * /home/redmineuser/redmine_backup.sh >> /var/log/redmine_backup.log 2>&1

Esta línea significa: "Cada día a las 3 horas y 0 minutos, ejecutar el script y redirigir su salida a un archivo de registro".

4. Dónde almacenar las copias de seguridad

Almacenar las copias de seguridad en el mismo servidor que el sistema en producción es arriesgado. Si el servidor falla, perderá tanto el sistema como las copias de seguridad. Se recomienda utilizar almacenamiento externo:

  • Almacenamiento compatible con S3: Servicios como AWS S3, Backblaze B2, DigitalOcean Spaces. Puede usar utilidades como s3cmd o rclone para la carga automática de copias de seguridad.
  • VPS separado: Alquile un pequeño VPS exclusivamente para almacenar copias de seguridad y sincronícelas allí a través de SSH/rsync.
  • NAS/servidor local: Si tiene su propia infraestructura, puede configurar la sincronización con ella.

Por ejemplo, para enviar a S3, puede agregar una línea al script que utilice aws cli o rclone después de crear la copia de seguridad local.

5. Actualizaciones: Rolling vs. Ventana de mantenimiento

Mantener Redmine y el software base actualizados es importante para la seguridad y para obtener nuevas funciones.

  • Actualizaciones del SO y paquetes del sistema: Se recomienda aplicar actualizaciones de seguridad regularmente (una vez a la semana/mes) en una "ventana de mantenimiento" (maintenance window), cuando la carga del servidor es mínima.
    
    sudo apt update && sudo apt upgrade -y # Actualización de paquetes del sistema
    sudo apt autoremove -y # Eliminación de paquetes innecesarios
    
  • Actualizaciones de Ruby: Las actualizaciones de Ruby deben probarse cuidadosamente, ya que pueden afectar el funcionamiento de Redmine. Use RVM para instalar una nueva versión de Ruby, pruebe Redmine con ella y luego cambie.
  • Actualizaciones de Redmine:
    • Siempre realice una copia de seguridad completa antes de actualizar Redmine.
    • Detenga el servicio de Redmine (sudo systemctl stop redmine.service).
    • Descargue la nueva versión de Redmine, descomprímala, copie los archivos (excepto files, config, plugins).
    • Actualice los gems (bundle install --without development test).
    • Ejecute las migraciones de la base de datos (bundle exec rake db:migrate RAILS_ENV=production).
    • Inicie el servicio de Redmine (sudo systemctl start redmine.service).

Planifique las actualizaciones de Redmine como proyectos separados, preferiblemente probándolas primero en un servidor de staging.

Solución de problemas + FAQ

Esta sección contiene respuestas a preguntas frecuentes y soluciones a problemas típicos que pueden surgir durante la instalación y operación de Redmine en un VPS.

1. Redmine no se inicia o muestra un error 502 Bad Gateway con Nginx. ¿Qué debo verificar?

El error 502 Bad Gateway generalmente significa que Nginx no puede comunicarse con la aplicación backend (Puma). Esto puede ser causado por varias razones:

  • Puma no está iniciado: Verifique el estado del servicio Puma: sudo systemctl status redmine.service. Si está inactivo, revise los logs de Puma: journalctl -u redmine.service o /var/www/redmine/log/puma.stderr.log.
  • Configuración incorrecta de Nginx: Asegúrese de que proxy_pass en la configuración de Nginx apunte a la dirección/socket correcto de Puma (por ejemplo, http://127.0.0.1:3000 o unix:///var/www/redmine/tmp/sockets/puma.sock). Verifique la sintaxis de Nginx: sudo nginx -t.
  • Problemas de permisos: Asegúrese de que el usuario de Nginx (normalmente www-data) tenga acceso al socket de Puma, si está usando un socket.
  • Problemas con la base de datos: Si Puma se inicia pero falla inmediatamente, es posible que Redmine no pueda conectarse a la base de datos. Verifique config/database.yml y asegúrese de que PostgreSQL esté en ejecución (sudo systemctl status postgresql).

2. ¿Cómo configurar el envío de correo desde Redmine?

Para enviar notificaciones desde Redmine (por ejemplo, sobre nuevas tareas o comentarios), debe configurar los parámetros SMTP. Edite el archivo config/configuration.yml (si no existe, copie configuration.yml.example):


# config/configuration.yml
default:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: "smtp.your-email-provider.com" # Por ejemplo, smtp.mail.ru, smtp.gmail.com
      port: 587 # O 465 para SSL
      authentication: :plain
      domain: "your_domain.com" # Su dominio
      user_name: "noreply@your_domain.com" # Su email
      password: "your_email_password" # Contraseña del correo
      enable_starttls_auto: true

Después de guardar el archivo, reinicie el servicio de Redmine (Puma): sudo systemctl restart redmine.service. Verifique el envío de un correo electrónico de prueba en la configuración de Redmine (Administración -> Configuración -> Notificaciones por email).

3. ¿Qué configuración mínima de VPS es adecuada para Redmine?

Para Redmine y un equipo pequeño (hasta 10 usuarios), se recomienda un VPS mínimo con 2 núcleos de CPU, 4 GB de RAM y 80 GB de disco SSD. Esto asegurará un funcionamiento bastante cómodo sin retrasos notables. Para equipos más grandes o uso intensivo, se debe considerar 4 núcleos de CPU y 8 GB de RAM.

4. ¿Qué elegir: VPS o dedicado para esta tarea?

Para la mayoría de los escenarios de uso de Redmine (equipos pequeños y medianos, hasta 50 usuarios activos), un VPS será la solución óptima y económicamente ventajosa. Un servidor dedicado debe elegirse si tiene un equipo muy grande, una carga extremadamente alta, requisitos estrictos de rendimiento y aislamiento de recursos, o si planea alojar muchos otros servicios que consumen muchos recursos en el mismo hardware físico.

5. ¿Cómo actualizar Redmine a una nueva versión?

El proceso de actualización de Redmine incluye varios pasos:

  1. Copia de seguridad: Realice una copia de seguridad completa de la base de datos y del directorio files.
  2. Detención de Redmine: sudo systemctl stop redmine.service.
  3. Descarga de la nueva versión: Descargue el nuevo archivo de Redmine, descomprímalo en un nuevo directorio.
  4. Copia de archivos: Copie sus config/database.yml, config/configuration.yml, config/initializers/secret_token.rb, así como el directorio files y plugins de la instalación antigua a la nueva.
  5. Instalación de gems: Vaya al nuevo directorio de Redmine y ejecute bundle install --without development test.
  6. Migración de la base de datos: bundle exec rake db:migrate RAILS_ENV=production.
  7. Inicio de Redmine: sudo systemctl start redmine.service.

Siempre lea las instrucciones oficiales de actualización para la versión específica de Redmine, ya que puede haber pasos específicos.

6. ¿Por qué no se muestran las imágenes/archivos o surgen errores al cargarlos?

Este problema suele estar relacionado con permisos de acceso incorrectos al directorio files o la ausencia de ImageMagick. Verifique lo siguiente:

  • Permisos de acceso: Asegúrese de que el directorio /var/www/redmine/files y todo su contenido sean escribibles por el usuario bajo el cual se ejecuta Puma (redmineuser) y Nginx (www-data). Ejecute: sudo chown -R redmineuser:redmineuser /var/www/redmine/files y sudo chmod -R 755 /var/www/redmine/files.
  • ImageMagick: Redmine utiliza ImageMagick para procesar imágenes (por ejemplo, para previsualizaciones). Asegúrese de que esté instalado: sudo apt install imagemagick libmagickwand-dev -y.
  • Tamaño de los archivos: Verifique client_max_body_size en la configuración de Nginx. Si intenta cargar un archivo de mayor tamaño del permitido, Nginx puede rechazar la solicitud.

7. ¿Cómo cambiar el puerto en el que se ejecuta Puma?

Por defecto, Puma escucha en el puerto 3000. Para cambiarlo, edite el archivo /var/www/redmine/config/puma.rb y cambie la línea port ENV['PORT'] || 3000 al puerto deseado, por ejemplo: port 3001. Luego, reinicie el servicio de Redmine: sudo systemctl restart redmine.service. No olvide actualizar la configuración de Nginx si está utilizando un puerto TCP en lugar de un socket.

Conclusiones y próximos pasos

¡Felicidades! Ha instalado y configurado Redmine con éxito en su VPS, creando una plataforma confiable y totalmente controlada para la gestión de proyectos y el seguimiento de tareas. Ahora su equipo puede colaborar de manera efectiva, seguir el progreso y alcanzar objetivos, teniendo control total sobre sus datos y herramientas.

Para aprovechar al máximo el potencial de su nuevo sistema, considere los siguientes pasos:

  • Integración con sistemas de control de versiones: Configure la integración de Redmine con sus repositorios Git o SVN para vincular automáticamente los commits con las tareas y ver los cambios directamente desde Redmine.
  • Instalación de plugins: Explore la extensa biblioteca de plugins de Redmine para ampliar la funcionalidad, como informes adicionales, diagramas, integraciones con otros servicios o mejoras en la interfaz de usuario.
  • Monitoreo del rendimiento: Implemente herramientas de monitoreo (por ejemplo, Prometheus + Grafana) para rastrear la carga del servidor, el uso de memoria y disco, así como el rendimiento de Redmine, para responder a tiempo a posibles problemas.

¿Te fue útil esta guía?

Tus comentarios nos ayudan a mejorar nuestras guías.

Compartir esta publicación:

Envía esta guía a alguien a quien pueda resultarle útil.

Telegram VKVK WhatsApp Facebook LinkedIn XX

instalación Redmine en VPS para gestión de proyectos y seguimiento de tareas
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.