Muchos desarrolladores y administradores de sistemas necesitan preparar un servidor VPS sencillo y seguro para aplicaciones basadas en contenedores. Este artículo explica cómo dejar un VPS basado en RedHat listo para producción usando Docker, Nginx y certificados Cloudflare SSL, con buenas prácticas de seguridad y despliegue.
Actualizar el sistema y preparar un usuario no root. Ejecuta sudo dnf update -y para actualizar paquetes. Crea un usuario no root por ejemplo mona con adduser mona y añade al grupo wheel con usermod -aG wheel mona. Opcionalmente establece una contraseña temporal con passwd mona pero lo recomendable es usar autenticación por clave SSH.
Configurar autenticación por clave SSH. En tu máquina local genera una clave con ssh-keygen -t ed25519 -C tuemail@example.com y copia el contenido del archivo id_rsa.pub al VPS creando la carpeta .ssh en el home del usuario y pegando la clave en authorized_keys. Ajusta permisos con chown -R mona:mona /home/mona/.ssh y chmod 700 /home/mona/.ssh y chmod 600 /home/mona/.ssh/authorized_keys. Edita /etc/ssh/sshd_config para deshabilitar PermitRootLogin no y PasswordAuthentication no y reinicia el servicio con systemctl restart sshd. Con esto el acceso quedará restringido a claves privadas, mejorando la ciberseguridad del servidor.
Instalar Docker y Docker Compose. Instala Docker con sudo dnf install -y docker, habilita y arranca el servicio con systemctl enable docker y systemctl start docker, y añade tu usuario al grupo docker con usermod -aG docker mona para poder ejecutar docker sin sudo. Para Docker Compose descarga el binario con curl -L https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose y hazlo ejecutable con chmod +x /usr/local/bin/docker-compose. Cierra sesión y vuelve a iniciar para aplicar cambios de grupo.
Conectar el dominio a Cloudflare. Registra el dominio en el panel de Cloudflare, añade un registro A que apunte al IP público del VPS y en la sección SSL TLS selecciona el modo Full Strict para forzar la conexión segura entre Cloudflare y tu servidor.
Configurar SSL en el VPS con certificados de origen Cloudflare. En Cloudflare ve a SSL TLS Origin Server y crea un certificado de origen, selecciona RSA si lo prefieres y descarga el certificado y la clave privada. En el VPS crea la carpeta sudo mkdir -p /etc/ssl/cloudflare y guarda el certificado en /etc/ssl/cloudflare/cert.pem y la clave en /etc/ssl/cloudflare/key.pem. Instala Nginx con sudo dnf install -y nginx, habilita y arranca con systemctl enable nginx y systemctl start nginx.
Configuración mínima de Nginx. Crea una configuración que redirija HTTP a HTTPS y que use los archivos de certificado guardados para el bloque HTTPS. En el bloque de servidor HTTPS configura ssl_certificate /etc/ssl/cloudflare/cert.pem y ssl_certificate_key /etc/ssl/cloudflare/key.pem y añade directivas proxy para pasar tráfico al contenedor de la aplicación en localhost puerto 3000, por ejemplo proxy_pass https://127.0.0.1:3000 y los encabezados proxy_set_header Host $host, proxy_set_header X-Real-IP $remote_addr, proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for y proxy_set_header X-Forwarded-Proto $scheme. Verifica la configuración con nginx -t y recarga con systemctl reload nginx.
Firewall y grupos de seguridad. Instala y activa firewalld con sudo dnf install -y firewalld y systemctl enable firewalld y systemctl start firewalld. Permite servicios esenciales con firewall-cmd --permanent --add-service=ssh y firewall-cmd --permanent --add-service=https y recarga con firewall-cmd --reload. Si no necesitas HTTP puedes removerlo con firewall-cmd --permanent --remove-service=http. En proveedores cloud como AWS o Azure configura el security group o reglas de red para permitir SSH en el puerto 22 solo desde tu IP, permitir HTTPS en 443 al público y dejar el puerto 80 cerrado salvo que necesites redirecciones.
Desplegar la aplicación con Docker Compose. Un docker-compose.yml sencillo puede exponer el servicio de la aplicación en el puerto interno 3000. Levanta los servicios con docker-compose up -d y monitorea con docker ps y docker logs para verificar que los contenedores corren correctamente.
Buenas prácticas y mantenimiento. Mantén el sistema actualizado periódicamente, realiza copias de seguridad de configuraciones y certificados, revisa logs de Nginx y Docker, y monitoriza el estado del servidor. Usa roles y permisos limitados para usuarios y considera herramientas de orquestación y backup automático para entornos más complejos.
Sobre Q2BSTUDIO. Q2BSTUDIO es una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones de software a medida, inteligencia artificial, ciberseguridad y servicios cloud AWS y Azure. Ofrecemos servicios de desarrollo de aplicaciones a medida, servicios inteligencia de negocio, implementaciones de power bi, ia para empresas, agentes ia y consultoría en inteligencia artificial para optimizar procesos. Nuestro equipo integra buenas prácticas de seguridad y despliegue para que sus proyectos en la nube sean robustos y escalables.
Servicios recomendados por Q2BSTUDIO. Si necesita una solución llave en mano podemos ayudar con desarrollo de software a medida, integraciones con Cloudflare y certificados SSL, despliegues en servicios cloud aws y azure, implementación de herramientas de inteligencia de negocio como power bi, desarrollos de agentes ia e integraciones de inteligencia artificial para empresas. También prestamos servicios de ciberseguridad para proteger infraestructuras y aplicaciones a medida.
Si necesita asistencia para implementar este flujo en su infraestructura, optimizar la seguridad o desarrollar una aplicación a medida, contacte con Q2BSTUDIO para recibir una propuesta que incluya despliegue, gestión de certificados, configuraciones de Nginx y docker, y servicios de inteligencia artificial y power bi adaptados a su negocio.