Cómo Configurar y Asegurar un VPS desde Cero
Cómo Configurar y Asegurar un VPS desde Cero
Un VPS (Servidor Privado Virtual) te da una máquina Linux real en la nube que controlas completamente. Sin vendor lock-in, sin facturas sorpresa por tráfico, y la libertad de ejecutar lo que quieras. Esta guía te lleva de cero a un servidor endurecido en el que puedes confiar.
Eligiendo un Proveedor
Cualquier proveedor importante funciona. Mis recomendaciones:
| Proveedor | Precio inicial | Notas |
|---|---|---|
| Hetzner | ~€4/mes | Mejor precio/rendimiento en Europa |
| DigitalOcean | $6/mes | Excelente UX y documentación |
| Vultr | $6/mes | Muchas regiones en todo el mundo |
| Linode (Akamai) | $5/mes | Sólido y con larga trayectoria |
Para la mayoría de proyectos, un plan con 2 GB RAM, 1 vCPU, 40 GB SSD es más que suficiente para empezar.
Elige Ubuntu 24.04 LTS como sistema operativo — tiene la ventana de soporte más larga y la documentación comunitaria más amplia.
Primer Acceso
Después de crear el servidor recibirás una contraseña root o se te pedirá agregar una clave SSH. Siempre prefiere las claves SSH.
Genera un par de claves localmente (si no tienes una):
ssh-keygen -t ed25519 -C "tu@email.com"
# Presiona enter para aceptar la ruta por defecto (~/.ssh/id_ed25519)
Agrega tu clave pública al panel del proveedor, luego conéctate:
ssh root@TU_IP_DEL_SERVIDOR
Deberías aterrizar en un shell root. Lo primero que hacemos es dejar de usar root directamente.
Crear un Usuario sin Privilegios Root
Ejecutar todo como root es peligroso — un error tipográfico puede borrar todo tu sistema. En su lugar, crea un usuario regular con acceso sudo.
# Crea el usuario
adduser heyson
# Agrégalo al grupo sudo
usermod -aG sudo heyson
# Copia las claves autorizadas de root para seguir usando tu clave SSH
rsutil_copy_ssh_keys() {
mkdir -p /home/heyson/.ssh
cp /root/.ssh/authorized_keys /home/heyson/.ssh/authorized_keys
chown -R heyson:heyson /home/heyson/.ssh
chmod 700 /home/heyson/.ssh
chmod 600 /home/heyson/.ssh/authorized_keys
}
rsutil_copy_ssh_keys
Ahora abre una nueva terminal y verifica que puedes iniciar sesión como el nuevo usuario antes de cerrar la sesión root:
ssh heyson@TU_IP_DEL_SERVIDOR
sudo whoami # debe imprimir: root
Endurecer SSH
Edita la configuración del daemon SSH para deshabilitar la autenticación por contraseña y el login como root:
sudo nano /etc/ssh/sshd_config
Encuentra y establece (o añade) estas líneas:
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Reinicia SSH:
sudo systemctl restart ssh
Importante: No cierres tu sesión actual hasta que hayas verificado que puedes abrir una nueva conexión SSH con la nueva configuración.
Configurar el Firewall (UFW)
Ubuntu viene con ufw (Uncomplicated Firewall). Por defecto bloquea todo — abramos solo lo que necesitamos:
# Permite SSH (crítico — hazlo antes de activar el firewall)
sudo ufw allow OpenSSH
# Si planeas servir HTTP/HTTPS
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# Activa el firewall
sudo ufw enable
# Verifica el estado
sudo ufw status verbose
Deberías ver algo como:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW IN Anywhere
80/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
Mantener el Sistema Actualizado
sudo apt update && sudo apt upgrade -y
# Activa las actualizaciones de seguridad automáticas
sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure --priority=low unattended-upgrades
Instalar Fail2ban (Opcional pero Recomendado)
Fail2ban monitorea tus logs de autenticación y banea IPs que fallen demasiados intentos de login:
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Verifica los baneos activos:
sudo fail2ban-client status sshd
Configurar Hostname y Zona Horaria
# Establece un hostname
sudo hostnamectl set-hostname mi-servidor
# Establece tu zona horaria
sudo timedatectl set-timezone America/Costa_Rica
timedatectl # verifica
Referencia Rápida: Comandos Esenciales
# Ver servicios en ejecución
sudo systemctl list-units --type=service --state=running
# Ver quién está conectado
w
# Monitorear uso de recursos en tiempo real
htop
# Ver puertos abiertos
sudo ss -tlnp
# Ver logs de autenticación recientes
sudo journalctl -u ssh --since "1 hour ago"
¿Qué Sigue?
Con un VPS endurecido en su lugar puedes:
- Instalar Docker y empezar a desplegar apps en contenedores
- Configurar Coolify para una experiencia PaaS auto-hospedada (ver el siguiente post)
- Apuntar un dominio y obtener un certificado TLS gratuito con Caddy o Nginx + Certbot
Un VPS puede parecer intimidante al principio, pero una vez que entiendes la capa básica de seguridad el resto es solo Linux — y Linux está increíblemente bien documentado.
Siguiente: Configurar Coolify en tu VPS — una alternativa self-hosted a Vercel.