Esta página es tu referencia rápida para todo lo relacionado con VPS. Guárdala en favoritos.
Comandos esenciales
Sistema
# Actualizar sistema
sudo apt update && sudo apt upgrade -y
# Reiniciar
sudo reboot
# Ver uso de recursos
htop
# Espacio en disco
df -h
# Memoria
free -h
# Carga del sistema
uptime
Servicios
# Estado de servicio
sudo systemctl status nginx
# Reiniciar servicio
sudo systemctl restart nginx
# Ver logs
sudo journalctl -u nginx -f
# Habilitar al arranque
sudo systemctl enable nginx
Archivos
# Editar archivo
sudo nano /etc/nginx/nginx.conf
# Buscar archivo
find / -name "archivo.conf"
# Ver final de archivo
tail -f /var/log/nginx/error.log
# Permisos
sudo chown -R www-data:www-data /var/www/
sudo chmod -R 755 /var/www/
Red
# Ver puertos abiertos
sudo ss -tulpn
# Firewall
sudo ufw status
sudo ufw allow 80/tcp
sudo ufw enable
# Test de conexión
curl -I https://tudominio.com
Configuración mínima de seguridad
# 1. Actualizar sistema
sudo apt update && sudo apt upgrade -y
# 2. Crear usuario no-root
adduser miusuario
usermod -aG sudo miusuario
# 3. Configurar SSH
sudo nano /etc/ssh/sshd_config
# Port 2222
# PermitRootLogin no
# PasswordAuthentication no
sudo systemctl restart sshd
# 4. Firewall
sudo ufw default deny incoming
sudo ufw allow 2222/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
# 5. Fail2ban
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
Stack LEMP rápido
# Nginx
sudo apt install nginx -y
# MySQL
sudo apt install mariadb-server -y
sudo mysql_secure_installation
# PHP
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl \
php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip -y
# Verificar
sudo systemctl status nginx php8.2-fpm mariadb
Configuraciones clave
Nginx básico
server {
listen 80;
server_name tudominio.com;
root /var/www/tudominio;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
PHP-FPM
# /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 20
pm.start_servers = 5
pm.min_spare_servers = 3
pm.max_spare_servers = 10
MySQL
# /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_buffer_pool_size = 512M
max_connections = 100
Backup rápido
#!/bin/bash
# /root/scripts/backup.sh
DATE=$(date +%Y%m%d)
# Base de datos
mysqldump --all-databases > /backups/db_$DATE.sql
# Archivos
tar -czf /backups/www_$DATE.tar.gz /var/www/
# Limpiar antiguos (30 días)
find /backups -mtime +30 -delete
# Programar diario a las 3am
crontab -e
0 3 * * * /root/scripts/backup.sh
Troubleshooting rápido
Sitio no carga
# 1. ¿Nginx funcionando?
sudo systemctl status nginx
# 2. ¿PHP funcionando?
sudo systemctl status php8.2-fpm
# 3. ¿Errores en logs?
sudo tail -20 /var/log/nginx/error.log
# 4. ¿Permisos correctos?
ls -la /var/www/tudominio/
Error 502
# PHP-FPM caído o mal configurado
sudo systemctl restart php8.2-fpm
sudo tail -f /var/log/php8.2-fpm.log
Error 500
# Error en código o permisos
sudo tail -f /var/log/nginx/error.log
# Verificar permisos de archivos
Servidor lento
# 1. Ver recursos
htop
# 2. Si RAM alta
free -h
# Considerar más RAM o optimizar
# 3. Si CPU alta
top -c
# Identificar proceso consumidor
# 4. Si disco lento
iostat -x 1
No puedo conectar SSH
# Desde otro equipo/consola de emergencia:
# 1. Verificar servicio
sudo systemctl status sshd
# 2. Verificar puerto
sudo ss -tulpn | grep ssh
# 3. Verificar firewall
sudo ufw status
Métricas a monitorizar
| Métrica | Comando | Alerta si |
|---|---|---|
| RAM | free -h | >85% usado |
| CPU | uptime | load > cores |
| Disco | df -h | >80% |
| TTFB | curl -w "%{time_starttransfer}" | >600ms |
Recursos recomendados por RAM
| RAM | Uso típico |
|---|---|
| 1GB | Blog simple, desarrollo |
| 2GB | WordPress medio, app pequeña |
| 4GB | WooCommerce, múltiples sitios |
| 8GB | Alto tráfico, aplicaciones pesadas |
| 16GB+ | Multi-tenant, bases de datos grandes |
Checklist pre-producción
□ SSH seguro (puerto, claves, no root)
□ Firewall activo
□ Fail2ban instalado
□ SSL configurado
□ Backup automático
□ Backup externo
□ Monitorización activa
□ Logs configurados
□ OPcache activo
□ MySQL optimizado
URLs útiles
- SSL gratis: certbot.eff.org
- Test SSL: ssllabs.com/ssltest
- Test velocidad: gtmetrix.com
- Uptime: uptimerobot.com
- DNS: mxtoolbox.com
Preguntas frecuentes
¿Cuál es el primer comando que debo ejecutar en un VPS nuevo?
sudo apt update && sudo apt upgrade -y para actualizar el sistema. Luego configura seguridad: usuario no-root, SSH con claves, firewall y fail2ban.
¿Cómo sé si mi VPS tiene suficientes recursos?
Usa htop para ver CPU y RAM en tiempo real. Si RAM está constantemente >85% o load average supera el número de cores, considera escalar.
¿Cada cuánto debo hacer backup?
Mínimo diario para bases de datos. Archivos pueden ser diarios o semanales según frecuencia de cambios. Siempre backup externo además del local.
¿Cómo reinicio todo si algo falla?
sudo systemctl restart nginx php8.2-fpm mariadb reinicia los servicios principales. Si el problema persiste, revisa logs con journalctl -u servicio.
¿Necesito saber Linux para usar un VPS?
Conocimientos básicos sí. Esta guía cubre lo esencial. Para gestión avanzada o si prefieres no aprender, considera administración gestionada.
Conclusión
Esta guía es tu referencia rápida. Los comandos y configuraciones aquí cubren el 90% de las tareas diarias con un VPS.
Guarda esta página y consúltala cuando necesites recordar un comando o configuración.
¿Quieres un VPS ya configurado? Explora los VPS de Avantys con configuración base de seguridad incluida y soporte en español.
¿Quieres que lo hagamos por ti?
En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.