cPanel: Guía Completa para Administrar tu Hosting como un Experto
cPanel es el panel de control más usado en hosting compartido mundial, pero la mayoría de los usuarios solo conoce el 20 % de sus funciones. Esta guía técnica cubre desde la gestión de cuentas hasta las herramientas avanzadas de administración WHM que todo administrador de hosting en México debe dominar.
Arquitectura de cPanel: cómo funciona internamente
cPanel opera en tres capas: WHM (WebHost Manager, puerto 2086/2087) para resellers y administradores de servidor, cPanel (puerto 2082/2083) para propietarios de cuentas de hosting, y Webmail (puerto 2095/2096) para usuarios finales de correo. Cada capa tiene su propio conjunto de APIs y permisos.
En un servidor con CloudLinux, cada cuenta cPanel vive dentro de un LVE (Lightweight Virtual Environment) con límites de CPU, RAM y E/S asignados en WHM → CloudLinux Manager. Esto garantiza que un sitio con tráfico viral no afecte a los otros.
Gestión de cuentas desde WHM
Crear una cuenta nueva desde línea de comandos con la API de WHM es más rápido que la GUI cuando hay que crear varias cuentas:
# Crear cuenta vía API de WHM (desde root en el servidor)
whmapi1 createacct username=micliente domain=micliente.com.mx plan=hosting_basico password='Passw0rd!Seguro' contactemail=cliente@email.com ip=n cgi=y frontpage=n hasshell=n
# Ver detalles de una cuenta
whmapi1 accountsummary user=micliente
# Suspender cuenta por falta de pago
whmapi1 suspendacct user=micliente reason="Pago_vencido"
# Listar todas las cuentas con su plan y uso de disco
whmapi1 listaccts | python3 -c "
import sys, json
data = json.load(sys.stdin)
for acc in data['data']['acct']:
print(f"{acc['user']:15} {acc['plan']:20} {acc['diskused']}MB / {acc['disklimit']}MB")
"
Gestión de bases de datos MySQL desde cPanel
El prefijo de usuario MySQL en cPanel sigue el formato usuario_nombrebd (máximo 8 caracteres del nombre de cuenta + guion bajo). Esto es importante al conectar aplicaciones:
# Desde SSH en la cuenta del cliente
# Ver todas las bases de datos de la cuenta
mysql -e "SHOW DATABASES;" 2>/dev/null | grep "^${USER}_"
# Crear BD y usuario vía UAPI (cPanel API v2)
uapi Mysql create_database name="${USER}_produccion"
uapi Mysql create_user name="${USER}_appuser" password='DB_Pass!2025'
uapi Mysql set_privileges_on_database user="${USER}_appuser" database="${USER}_produccion" privileges='ALL PRIVILEGES'
# Exportar toda la BD (backup manual)
mysqldump -u "${USER}_appuser" -p "${USER}_produccion" --single-transaction --routines --triggers > backup_$(date +%Y%m%d).sql
# Importar desde backup
mysql -u "${USER}_appuser" -p "${USER}_produccion" < backup_20250315.sql
MYSQL_HOST debe ser localhost, no 127.0.0.1, para que el tráfico pase por el socket Unix en vez de TCP. El socket suele estar en /var/lib/mysql/mysql.sock.
Configurar correo profesional con anti-spam
cPanel usa Exim como MTA y SpamAssassin para filtrado. La configuración crítica para evitar que tu correo llegue como spam:
# Verificar que SPF, DKIM y DMARC estén activos para el dominio
# Desde WHM → Email → Email Deliverability
# Revisar la cola de correo desde SSH
exim -bp | head -50
# Ver el log de entregas recientes
exim -bp | exiqsumm
# Forzar entrega de mensajes en cola
exim -qff
# Ver por qué un correo específico falló
exim -Mvl
# Bloquear dominio remitente específico en Exim
# WHM → Exim Configuration Manager → Advanced Editor
# Agregar en "ACL to run after the DATA command":
# deny senders = *@dominiomalicioso.com
Manejo de PHP con MultiPHP y PHP-FPM
cPanel con EasyApache 4 permite tener múltiples versiones de PHP en el mismo servidor. La configuración correcta por dominio:
# Ver versiones PHP disponibles en el servidor
/usr/local/cpanel/bin/rebuild_phpconf --current
# Listar versión de PHP por dominio desde WHM
whmapi1 php_get_vhost_versions
# Cambiar versión PHP de un dominio específico vía UAPI
uapi LangPHP php_set_vhost_versions vhost=midominio.com php_version=ea-php82
# Ver configuración PHP activa
php -i | grep -E "^(PHP Version|memory_limit|upload_max|max_execution)"
# Editar php.ini por dominio (crea override local)
cat >> ~/public_html/.user.ini << 'EOF'
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120
opcache.enable = 1
opcache.memory_consumption = 128
EOF
# Recargar PHP-FPM para aplicar cambios
# (WHM → Service Manager → PHP-FPM → Restart)
.user.ini solo funciona con PHP-FPM. Si tu hosting usa PHP como módulo de Apache (mod_php), necesitas .htaccess con directivas php_value o php_flag.
Backups automáticos con R1Soft o JetBackup
En VacaWeb usamos JetBackup 5 integrado en cPanel. Desde la cuenta del cliente puedes restaurar archivos individuales sin depender del soporte técnico:
# Restaurar un archivo específico desde backup (vía cPanel → JetBackup)
# También se puede desde SSH si tienes acceso al servidor
# Verificar que los backups de cPanel estén activos (desde WHM)
whmapi1 backup_config_get
# Configurar retención de 30 días (desde WHM → Backup Configuration)
whmapi1 backup_config_set backupdays="1,2,3,4,5,6,7" retentiontype="days" retention="30"
# Disparar backup manual de una cuenta
/usr/local/cpanel/scripts/pkgacct micliente /backup/manual/
Monitoreo y optimización del servidor desde WHM
# Ver el top 10 de procesos más pesados
ps aux --sort=-%cpu | head -12
# Revisar cargas de CPU/MySQL en tiempo real con mytop
mytop -u root -p$(cat /root/.my.cnf | grep password | cut -d= -f2)
# Ver todas las conexiones MySQL activas
mysqladmin processlist | grep -v Sleep | head -30
# Analizar slow queries de las últimas 24h
mysqldumpslow -s t -t 10 /var/lib/mysql/$(hostname)-slow.log
# Revisar el uso de inodos por cuenta (crítico en hosting compartido)
repquota -as | sort -rh | head -20
| Tarea | Ubicación en cPanel | Equivalente SSH |
|---|---|---|
| Crear BD MySQL | Bases de Datos → Asistente MySQL | uapi Mysql create_database |
| Gestionar DNS | Dominios → Editor de Zona DNS | whmapi1 adddns |
| Instalar SSL | Seguridad → SSL/TLS → AutoSSL | /usr/local/cpanel/bin/autossl_check |
| Ver logs de error | Métricas → Errores | tail -f ~/logs/error_log |
| Gestionar crons | Avanzado → Cron Jobs | crontab -e |
| Gestionar PHP | Software → MultiPHP Manager | uapi LangPHP php_set_vhost_versions |
Escenarios Prácticos: cPanel en Producción
Escenario 1 — Agencia de diseño con 30 clientes en reseller hosting: WHM (WebHost Manager) permite crear cuentas de cPanel individuales por cliente. El script de aprovisionamiento automatizado:
#!/bin/bash
# Crear cuenta cPanel via WHM API
curl -sk -u "root:PASSWORD" "https://servidor.vacaweb.mx:2087/json-api/createacct" --data-urlencode "username=cliente01" --data-urlencode "domain=cliente01.com.mx" --data-urlencode "plan=basico" --data-urlencode "contactemail=cliente@email.com"
Escenario 2 — Desarrollador configurando WordPress multisite:
cPanel permite modificar el archivo php.ini por dominio y crear subdominios
para un multisite de WordPress. La configuración de memoria por dominio:
# En .htaccess del dominio principal
php_value memory_limit 256M
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
Errores Comunes en cPanel
| Error | Síntoma | Causa | Solución |
|---|---|---|---|
| Cuota de disco excedida | Sitio deja de funcionar | Emails o backups acumulados | Limpiar papelera de correo y backups viejos |
| Error 500 interno | Sitio muestra error blanco | php.ini mal configurado | Revisar error_log en File Manager |
| Subdominio no resuelve | 404 en subdominio | DNS no propagado | Esperar 24h o verificar zona DNS en cPanel |
| SSL no aplica | Advertencia "No seguro" | AutoSSL falló | Correr AutoSSL manualmente en SSL/TLS |
| Backup falla | Sin respaldo disponible | Disco lleno | Definir destino externo FTP/S3 para backups |
Preguntas Frecuentes sobre cPanel
¿Cuál es la diferencia entre cPanel y WHM?
cPanel es la interfaz del usuario final (gestiona su propia cuenta: correos, bases de datos, dominios). WHM (WebHost Manager) es la interfaz del administrador del servidor: crea cuentas cPanel, gestiona recursos, instala software a nivel del SO y configura el servidor. Los revendedores tienen acceso a WHM pero solo para su espacio asignado.
¿Cómo accedo a los logs de error de mi sitio en cPanel?
Dos formas: 1) cPanel > Métricas > Errores (muestra últimas 300 líneas de error_log).
2) File Manager > navegar a public_html/ o la raíz del dominio y buscar el
archivo error_log. También puedes activar el log en tu .htaccess con
php_flag log_errors On y php_value error_log /home/usuario/error.log.
¿Cómo cambiar la versión de PHP en cPanel?
cPanel > Software > Select PHP Version (MultiPHP Manager). Puedes cambiar la versión por dominio específico sin afectar otras cuentas. Las versiones disponibles dependen de lo que el proveedor de hosting tenga instalado; VacaWeb soporta PHP 7.4, 8.0, 8.1, 8.2 y 8.3.
¿Cómo crear una base de datos MySQL en cPanel?
cPanel > Bases de datos MySQL > Crear base de datos. Luego crea un usuario MySQL,
asígnale todos los privilegios sobre la base de datos. Para WordPress, estos datos
van en wp-config.php: DB_NAME, DB_USER, DB_PASSWORD, DB_HOST (generalmente
localhost). Si usas conexión remota, especifica la IP permitida en MySQL remoto.
¿Cómo hacer un backup completo del sitio desde cPanel?
cPanel > Files > Backup Wizard > Full Backup. El archivo .tar.gz incluye todos
los archivos del home directory y las bases de datos. Para restaurar, sube el
archivo vía File Manager o FTP y usa la opción "Restaurar" en Backup. Para backups
automáticos, configura JetBackup (si disponible) o el cron de backups en WHM.
📚 Profundiza en estos temas
- CloudLinux: aislamiento de cuentas y LVE en servidores cPanel
- Configurar correo profesional en cPanel con SPF, DKIM y DMARC
- Instalar WordPress en cPanel en menos de 5 minutos
- LiteSpeed vs Apache vs Nginx: rendimiento en servidores cPanel
- Backup completo de sitio web: archivos, bases de datos y correo
Fundador de VacaWeb con más de 15 años administrando infraestructura Linux en producción. Especialista en LiteSpeed, CloudLinux, cPanel/WHM y arquitectura de hosting de alto rendimiento para el mercado mexicano. Ha diseñado y migrado la infraestructura de más de 1,200 sitios web empresariales.