Estos últimos días me he dedicado a hacer algunos cambios en mi servidor VPS.
Lo primero que he hecho ha sido instalar portainer como contenedor, posteriormente he movido mi aplicación de gestión de bookmarks al vps. Esta última operación ha tenido la dificultad de poder acceder desde el proxy-manager, que es una aplicación corriendo en un contenedor, a una aplicación node corriendo en el host.
Y por último he configurado la aplicación para que arranque automáticamente cuando se inicia el servidor.
A continuación podéis encontrar un breve resumen de cada una de las acciones.
1. Gestión de Contenedores (Portainer)
- Instalación: Primero instalamos Portainer CE para gestionar Docker visualmente.
- Método: Pasamos del comando docker run inicial a un archivo docker-compose.yml, lo que permite una gestión más limpia y profesional.
- Acceso: Lo configuramos en el puerto 9443 (HTTPS) con volúmenes persistentes para no perder datos.
2. Firewall y Red (UFW e Iptables)
- Transición: Explicamos que UFW es un frontal de iptables. Vimos cómo ver reglas (status numbered), borrarlas y cómo Docker a veces se salta a UFW.
- Reglas Específicas:
- Aprendimos a abrir puertos (como el 3000) específicamente para el protocolo TCP.
- Restricción de Seguridad: Modificamos la regla para que el puerto 3000 no esté abierto al público, sino que solo sea accesible desde las redes internas de Docker (usando la interfaz docker0 o el rango 172.17.0.0/16).
- Persistencia: Instalamos iptables-persistent y usamos netfilter-persistent save para que tus reglas no se borren al reiniciar el VPS.
3. Aplicaciones Node.js (PM2)
- Automatización: Configuramos PM2 para gestionar aplicaciones que arrancan con npm start.
- Resurrección: Usamos los comandos pm2 startup y pm2 save para que, si el VPS se reinicia por un corte de luz o mantenimiento, tu aplicación se levante sola automáticamente sin que tengas que entrar por SSH.
4. Utilidades de Docker
- Inspección: Vimos cómo ejecutar comandos dentro de contenedores (docker exec) y cómo averiguar la IP interna de un contenedor para configurar las reglas de red correctamente.