Hosting Equipo Avantys 4 min

VPS para Agencias: Gestionar Múltiples Clientes

Cómo configurar un VPS para agencias web. Multi-sitio, aislamiento de clientes, facturación, paneles y mejores prácticas.

// Compartir

VPS para Agencias: Gestionar Múltiples Clientes
VPS para agencias - gestionar múltiples clientes

Gestionas webs de múltiples clientes. ¿Cómo organizar tu VPS de forma profesional, segura y rentable?

Esta guía cubre todo lo que necesitas.

¿VPS propio o reseller hosting?

OpciónProsContras
VPS propioControl total, mayor margenMás trabajo
ResellerGestión fácil, soporte incluidoMenos control, menor margen

Recomendación: VPS propio si tienes +5 clientes y conocimientos técnicos.

Estructura recomendada

Estructura VPS para agencias

Organización de archivos

/var/www/
├── cliente1.com/
│   └── public_html/
├── cliente2.com/
│   └── public_html/
├── cliente3.com/
│   └── public_html/
└── tuagencia.com/
    └── public_html/

Un usuario por cliente (recomendado)

# Crear usuario para cliente
sudo adduser cliente1 --disabled-password
sudo usermod -aG www-data cliente1

# Crear directorio
sudo mkdir -p /var/www/cliente1.com/public_html
sudo chown -R cliente1:www-data /var/www/cliente1.com
sudo chmod -R 750 /var/www/cliente1.com

Ventajas de usuarios separados

  • Aislamiento de permisos
  • Acceso SFTP individual
  • Fácil identificar quién hace qué
  • Un cliente comprometido no afecta a otros

Panel de control: opciones

Panel de control para agencias

CyberPanel (gratis, recomendado)

sh <(curl https://cyberpanel.net/install.sh || wget -O - https://cyberpanel.net/install.sh)

Incluye:

  • Crear sitios fácilmente
  • SSL automático
  • Gestión de emails
  • Backups
  • LiteSpeed (rápido)

CloudPanel (gratis)

curl -sSL https://installer.cloudpanel.io/ce/v2/install.sh | sudo bash

Incluye:

  • Interfaz moderna
  • Nginx optimizado
  • Sin email (usar externo)

Plesk/cPanel (pago)

Si prefieres panel comercial con más soporte:

  • Plesk: ~€10-15/mes
  • cPanel: ~€15-25/mes

Configuración Nginx multi-sitio

Virtual host por cliente

# /etc/nginx/sites-available/cliente1.com
server {
    listen 80;
    server_name cliente1.com www.cliente1.com;
    root /var/www/cliente1.com/public_html;
    index index.php index.html;

    access_log /var/log/nginx/cliente1.access.log;
    error_log /var/log/nginx/cliente1.error.log;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/run/php/php8.2-fpm-cliente1.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

PHP-FPM pool por cliente

# /etc/php/8.2/fpm/pool.d/cliente1.conf
[cliente1]
user = cliente1
group = www-data
listen = /run/php/php8.2-fpm-cliente1.sock
listen.owner = www-data
listen.group = www-data

pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3

php_admin_value[open_basedir] = /var/www/cliente1.com/:/tmp/

Ventaja: Si un sitio tiene problemas o consume mucho, no afecta a otros.

Base de datos por cliente

# Crear base de datos
mysql -u root -p
CREATE DATABASE cliente1_wp;
CREATE USER 'cliente1'@'localhost' IDENTIFIED BY 'password_seguro';
GRANT ALL PRIVILEGES ON cliente1_wp.* TO 'cliente1'@'localhost';
FLUSH PRIVILEGES;

Convención de nombres

Bases de datos: cliente1_wp, cliente1_tienda
Usuarios DB: cliente1, cliente2, etc.

Acceso SFTP por cliente

Configurar SFTP chroot

# /etc/ssh/sshd_config
Match Group sftp-users
    ChrootDirectory /var/www/%u
    ForceCommand internal-sftp
    AllowTcpForwarding no
    X11Forwarding no
# Añadir cliente al grupo
sudo groupadd sftp-users
sudo usermod -aG sftp-users cliente1

# Permisos correctos para chroot
sudo chown root:root /var/www/cliente1
sudo chmod 755 /var/www/cliente1
# El cliente escribe en public_html, no en el directorio raíz

Credenciales para cliente

Host: tuservidor.com
Puerto: 22 (o personalizado)
Usuario: cliente1
Contraseña: [la que asignaste]
Directorio: /public_html/

Backups por cliente

Script de backup individual

#!/bin/bash
# /root/scripts/backup-cliente.sh

CLIENTE=$1
DATE=$(date +%Y%m%d)
BACKUP_DIR="/backups/clientes/$CLIENTE"

mkdir -p $BACKUP_DIR

# Base de datos
mysqldump ${CLIENTE}_wp > $BACKUP_DIR/db_$DATE.sql

# Archivos
tar -czf $BACKUP_DIR/files_$DATE.tar.gz /var/www/$CLIENTE.com/

# Limpiar antiguos (30 días)
find $BACKUP_DIR -mtime +30 -delete

echo "Backup $CLIENTE completado"

Programar para todos los clientes

# crontab -e
0 2 * * * /root/scripts/backup-cliente.sh cliente1
0 2 * * * /root/scripts/backup-cliente.sh cliente2
0 2 * * * /root/scripts/backup-cliente.sh cliente3

Monitorización

Por cliente

# Ver recursos por sitio
# Logs de acceso
tail -f /var/log/nginx/cliente1.access.log

# Uso de disco por cliente
du -sh /var/www/*/

# Uso de BD por cliente
mysql -e "SELECT table_schema, 
    ROUND(SUM(data_length + index_length) / 1024 / 1024, 2) AS 'Size (MB)' 
    FROM information_schema.tables 
    GROUP BY table_schema;"

Alertas

Configura alertas para:

  • Disco >80% por cliente
  • Sitio caído
  • Certificado SSL por expirar

Facturación y rentabilidad

Modelo de precios sugerido

Tipo de clienteCoste tuyoPrecio clienteMargen
Web simple~€5/mes€15-25/mes200-400%
WordPress medio~€10/mes€30-50/mes200-400%
WooCommerce~€15/mes€50-100/mes230-560%

Calcular coste por cliente

VPS €40/mes ÷ 10 clientes = €4/cliente base
+ Backup externo: €1/cliente
+ Tu tiempo: €5-10/cliente
= Coste real: €10-15/cliente

Dimensionamiento del VPS

ClientesRAMCPUDisco
5-104GB2 cores80GB
10-208GB4 cores160GB
20-5016GB6 cores300GB
50+32GB+8+ cores500GB+

Onboarding de nuevo cliente

Checklist

□ Crear usuario sistema
□ Crear directorio web
□ Crear base de datos
□ Configurar virtual host Nginx
□ Configurar pool PHP-FPM
□ Instalar SSL (Let's Encrypt)
□ Configurar DNS del cliente
□ Crear acceso SFTP
□ Añadir a script de backup
□ Documentar credenciales
□ Enviar datos al cliente

Script de onboarding

#!/bin/bash
# /root/scripts/nuevo-cliente.sh

DOMINIO=$1
USUARIO=$2

# Crear usuario
adduser $USUARIO --disabled-password

# Crear estructura
mkdir -p /var/www/$DOMINIO/public_html
chown -R $USUARIO:www-data /var/www/$DOMINIO

# Crear BD
mysql -e "CREATE DATABASE ${USUARIO}_wp;"
mysql -e "CREATE USER '${USUARIO}'@'localhost' IDENTIFIED BY 'CAMBIAR';"
mysql -e "GRANT ALL ON ${USUARIO}_wp.* TO '${USUARIO}'@'localhost';"

# Crear virtual host (template)
cp /root/templates/nginx-site.conf /etc/nginx/sites-available/$DOMINIO
sed -i "s/DOMINIO/$DOMINIO/g" /etc/nginx/sites-available/$DOMINIO
sed -i "s/USUARIO/$USUARIO/g" /etc/nginx/sites-available/$DOMINIO
ln -s /etc/nginx/sites-available/$DOMINIO /etc/nginx/sites-enabled/

# SSL
certbot --nginx -d $DOMINIO -d www.$DOMINIO --non-interactive --agree-tos -m [email protected]

nginx -t && systemctl reload nginx

echo "Cliente $DOMINIO creado"

Preguntas frecuentes

¿Cuántos sitios puedo alojar en un VPS?

Depende del tipo de sitios. WordPress simples: 20-30 en 4GB RAM. WooCommerce: 5-10. La clave es monitorizar recursos y escalar cuando sea necesario.

¿Debo usar panel de control o configurar manualmente?

Para agencias, un panel gratuito como CyberPanel ahorra mucho tiempo. La configuración manual da más control pero requiere más trabajo. Evalúa tu tiempo vs complejidad.

¿Cómo aíslo a los clientes entre sí?

Usuarios separados, pools PHP-FPM individuales, bases de datos separadas, y open_basedir configurado. Así un cliente comprometido no afecta a otros.

¿Qué hago si un cliente consume demasiados recursos?

Configura límites en su pool PHP-FPM, revisa si hay problemas en su código, o considera moverlo a su propio VPS si es persistente.

¿Es legal revender hosting así?

Sí, es legal. Eres responsable del servicio que ofreces a tus clientes. Asegúrate de tener términos de servicio claros y backups fiables.

Nuestra recomendación

Para empezar (5-15 clientes):

  • VPS 4-8GB
  • CyberPanel o CloudPanel
  • Usuarios y pools separados
  • Backups diarios

Para escalar (15+ clientes):

  • VPS 16GB+ o múltiples VPS
  • Automatización con scripts
  • Monitorización activa
  • Considerar administración gestionada

¿Buscas VPS para tu agencia? Explora los VPS de Avantys con recursos garantizados y soporte técnico en español.


Conclusión

Un VPS bien organizado puede alojar decenas de clientes de forma rentable. La clave es aislamiento, automatización y monitorización.

Empieza con estructura sólida y escala según crezca tu agencia.


¿Quieres que lo hagamos por ti?

En Avantys gestionamos tu web, hosting y crecimiento digital de punta a punta. Tú a lo importante.

Hablar con Avantys
// Boletín

Suscríbete al boletín

Guías nuevas, sin spam. Cancela cuando quieras.