Tutoriales de VPS
Montar un panel de servidores de juegos Pterodactyl en un VPS (2026): tutorial completo de Panel, Wings, Docker, HTTPS y copias de seguridad
Despliega Pterodactyl Panel y Wings en un VPS: cubre la configuración del servidor, nodos Docker, HTTPS con dominio, Eggs, asignación de puertos, creación de servidores de juegos, copias de seguridad, refuerzo de seguridad y resolución de problemas comunes.

Montar un panel de servidores de juegos Pterodactyl en un VPS (2026): tutorial completo de Panel, Wings, Docker, HTTPS y copias de seguridad
Si quieres gestionar varios servidores de juegos como Minecraft, Rust, Palworld y CS2 desde un solo VPS, Pterodactyl es una solución de código abierto con un volumen de búsquedas y una adopción real muy altos. No es que "una vez instalado el panel obtengas rendimiento automáticamente"; más bien unifica usuarios, instancias de juego, límites de recursos, archivos, consolas y copias de seguridad. Lo que realmente ejecuta los procesos del juego siguen siendo tu CPU, memoria, disco y red.
Este artículo sigue el flujo oficial de Pterodactyl 1.x para explicar la división de tareas entre Panel y Wings, cómo elegir un VPS, cómo configurar dominios y HTTPS, y qué revisar cuando un nodo está desconectado, los puertos no responden o las copias de seguridad no se pueden restaurar.
Pterodactyl consta de dos partes:
- Panel: panel de administración web en Laravel que guarda usuarios, servidores, Eggs, nodos y datos de permisos.
- Wings: servicio en Go instalado en los nodos de juego que inicia y detiene los contenedores de juego mediante Docker.
Un Node en el Panel corresponde a un servidor que ejecuta Wings; una Allocation es una combinación de IP y puerto asignada a un servidor de juego; un Egg define la imagen del juego, el comando de inicio, las variables y el script de instalación.
Panel y Wings se pueden instalar en el mismo VPS KVM, lo que encaja en servidores personales y pruebas a pequeña escala. Cuando necesites alojar varios usuarios o varios nodos, es mejor separar el Panel, la base de datos y los nodos de juego, para que un servidor de juego que sature la CPU no deje inaccesible el panel de administración.
El Panel en sí no es pesado; los servidores de juego son los que consumen recursos. Antes de comprar, calcula según el juego, el número de jugadores, los plugins y el tamaño del mapa.
| Escenario | Configuración inicial sugerida | Notas |
|---|---|---|
| Solo Panel | 2 núcleos 2GB, 30GB SSD | Panel, MariaDB, Redis, Nginx |
| Servidor Minecraft pequeño | 4 núcleos 8GB, 80GB NVMe | Adecuado para pocos jugadores y plugins ligeros |
| Varias instancias de juego | 6–8 núcleos, 16GB+, 160GB NVMe | Hay que reservar recursos para cada instancia |
| Juegos pesados como Rust, Palworld | CPU de alta frecuencia, 16GB+, NVMe | Prioriza el rendimiento por núcleo, el disco y la protección DDoS |
La documentación oficial indica claramente: Wings necesita Linux capaz de ejecutar Docker correctamente. KVM funciona de forma fiable; OpenVZ, Virtuozzo y algunos entornos LXC suelen carecer de las capacidades necesarias. Antes de comprar puedes ejecutar:
systemd-detect-virt
Si el resultado es openvz o lxc, confirma primero con el proveedor la compatibilidad con Docker y contenedores anidados. Para recomendaciones más completas sobre cómo elegir para juegos, consulta Recomendaciones de VPS para servidores de juegos.
La documentación oficial actual admite Ubuntu 22.04/24.04, Debian 11/12/13, así como RHEL, Rocky Linux y AlmaLinux 8/9. El ejemplo siguiente usa Ubuntu 24.04.
Se recomienda preparar dos dominios:
panel.example.com: panel de administración;node.example.com: nodo Wings.
Los puertos públicos habituales incluyen:
- 80/443: web del Panel y HTTPS;
- 8080 o 8443: API HTTP/HTTPS de Wings;
- 2022: SFTP de Wings;
- Puertos de juego: por ejemplo, Minecraft suele usar 25565, pero deben prevalecer el Egg y la Allocation real.
Comprueba primero si hay conflictos:
sudo ss -lntup | grep -E ':(80|443|8080|8443|2022)\b' || true
Si encuentras un puerto ocupado, no detengas sin más un proceso desconocido; primero confirma a qué servicio pertenece con la Guía de resolución de puertos ocupados en VPS.
Pterodactyl Panel requiere actualmente PHP 8.2 u 8.3, MySQL 5.7.22+ o MariaDB 10.2+, Redis, un servidor web, Composer 2, y Git, curl, tar, unzip. En Ubuntu 24.04 puedes instalar PHP 8.3:
sudo apt update
sudo apt install -y \
php8.3 php8.3-{common,cli,gd,mysql,mbstring,bcmath,xml,fpm,curl,zip} \
mariadb-server nginx redis-server tar unzip git curl
curl -sS https://getcomposer.org/installer \
| sudo php -- --install-dir=/usr/local/bin --filename=composer
Crea la base de datos y un usuario dedicado; la contraseña debe sustituirse por una contraseña fuerte aleatoria:
CREATE USER 'pterodactyl'@'127.0.0.1' IDENTIFIED BY '替换为强密码';
CREATE DATABASE panel;
GRANT ALL PRIVILEGES ON panel.* TO 'pterodactyl'@'127.0.0.1' WITH GRANT OPTION;
EXIT;
sudo mkdir -p /var/www/pterodactyl
cd /var/www/pterodactyl
sudo curl -Lo panel.tar.gz \
https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
sudo tar -xzvf panel.tar.gz
sudo chmod -R 755 storage/* bootstrap/cache/
sudo cp .env.example .env
sudo COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev --optimize-autoloader
sudo php artisan key:generate --force
APP_KEY se usa para descifrar datos sensibles como las API Keys. Si solo haces copia de la base de datos y pierdes .env, tras restaurar aún pueden aparecer Invalid MAC, así que guarda esta línea de inmediato en un gestor de contraseñas o en una copia cifrada aparte:
grep APP_KEY /var/www/pterodactyl/.env
Continúa configurando el entorno, la base de datos y el correo:
sudo php artisan p:environment:setup
sudo php artisan p:environment:database
sudo php artisan p:environment:mail
sudo php artisan migrate --seed --force
sudo php artisan p:user:make
sudo chown -R www-data:www-data /var/www/pterodactyl/*
Para el correo se recomienda SMTP. No interrumpas migrate --seed --force durante la inicialización; crea las tablas de datos y escribe los Nests y Eggs.
La configuración de Nginx del Panel debe seguir la plantilla oficial de Webserver Configuration que coincida con tu sistema, y la raíz del sitio debe apuntar a:
/var/www/pterodactyl/public
Primero apunta panel.example.com al VPS y luego solicita un certificado Let's Encrypt. Una vez que el Panel usa HTTPS, Wings también debe usar HTTPS que coincida con el FQDN del Node; de lo contrario, el navegador y el Panel bloquearán las conexiones inseguras.
Añade una tarea programada que se ejecute cada minuto:
* * * * * php /var/www/pterodactyl/artisan schedule:run >> /dev/null 2>&1
El comando de inicio principal del worker de colas es:
/usr/bin/php /var/www/pterodactyl/artisan queue:work --queue=high,standard,low --sleep=3 --tries=3
Coloca el pteroq.service oficial en /etc/systemd/system/ y actívalo:
sudo systemctl enable --now redis-server
sudo systemctl enable --now pteroq.service
Si las tareas programadas no se ejecutan, revisa en orden systemctl status pteroq, journalctl -xeu pteroq, la versión de PHP y la zona horaria del sistema.
Wings solo depende oficialmente de curl y Docker. En producción se recomienda instalar desde el repositorio oficial de Docker; para una verificación rápida puedes usar:
curl -sSL https://get.docker.com/ | CHANNEL=stable bash
sudo systemctl enable --now docker
sudo mkdir -p /etc/pterodactyl
sudo curl -L -o /usr/local/bin/wings \
"https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_$([[ "$(uname -m)" == "x86_64" ]] && echo "amd64" || echo "arm64")"
sudo chmod u+x /usr/local/bin/wings
En el panel de administración, entra en Admin → Nodes → Create New para crear un nodo y luego abre la Configuration de ese nodo y guarda la configuración en:
/etc/pterodactyl/config.yml
Primero inicia en modo de depuración:
sudo wings --debug
Tras confirmar que no hay errores, crea el servicio systemd siguiendo el wings.service oficial y actívalo:
sudo systemctl enable --now wings
sudo systemctl status wings
Entra en Nodes → 节点 → Allocation y rellena la IP real de la interfaz de red del servidor y el rango de puertos de juego. La documentación oficial exige explícitamente no usar 127.0.0.1 como Allocation. Puedes ver las direcciones con el siguiente comando:
hostname -I | awk '{print $1}'
Después:
- En Admin, selecciona Servers y crea un servidor;
- Selecciona el Node, la Allocation, el Nest y el Egg;
- Define memoria, disco, CPU y número de copias de seguridad;
- Confirma la imagen Docker y las variables de inicio;
- Tras crearlo, observa la salida de instalación en la consola.
No asignes toda la memoria del nodo. El sistema anfitrión, Docker, Wings, el Panel y la base de datos necesitan margen. Si ofreces alojamiento público, también deberías limitar CPU, disco y número de procesos para evitar que un usuario tumbe toda la máquina.
Abre solo los puertos realmente necesarios:
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw allow 8080/tcp
sudo ufw allow 2022/tcp
sudo ufw allow 25565/tcp
sudo ufw enable
Si Wings usa 8443, no abras también el 8080 sin usar. Los puertos de juego deben abrirse con precisión según las Allocations; no abras todos los puertos por comodidad.
Cuando un nodo muestra un corazón rojo o "Cannot connect to server", revisa en orden:
sudo systemctl status wings
sudo journalctl -u wings -n 100 --no-pager
sudo wings --debug
dig +short node.example.com
curl -vk https://node.example.com:8443
Puntos clave a comprobar:
- Si la Node Configuration del Panel coincide con
/etc/pterodactyl/config.yml; - Si Wings también usa un certificado válido cuando el Panel usa HTTPS;
- Si 8080/8443 y 2022 están bloqueados por firewall, grupo de seguridad o NAT;
- Si el FQDN del Node resuelve a la IP correcta;
- Si el proxy de Cloudflare cambia puertos o el modo SSL.
Cloudflare no puede ocultar la IP del nodo para el tráfico de juego. Aunque Wings pase por un proxy, los jugadores seguirán conectándose directamente a los puertos de juego; la protección DDoS real debe venir del centro de datos, del scrubbing del proveedor o de un proxy dedicado.
Respalda al menos cuatro partes:
- La base de datos MariaDB/MySQL del Panel;
/var/www/pterodactyl/.env, especialmenteAPP_KEY;/etc/pterodactyl/config.yml;- Los datos de juego y el directorio de copias de seguridad de Wings.
Por defecto, las copias locales se guardan mediante Wings, pero tenerlas en el mismo disco del VPS que los datos de juego no protege frente a un fallo de toda la máquina. En producción puedes usar copias compatibles con S3 en el Panel .env:
APP_BACKUP_DRIVER=s3
AWS_DEFAULT_REGION=auto
AWS_ACCESS_KEY_ID=替换为访问密钥
AWS_SECRET_ACCESS_KEY=替换为秘密密钥
AWS_BACKUPS_BUCKET=替换为存储桶
AWS_ENDPOINT=https://你的S3兼容端点
Después de configurar las copias, debes hacer un simulacro de restauración para confirmar que la base de datos, APP_KEY, la configuración de Eggs y las partidas guardadas se restauran juntas. Puedes combinarlo con la Guía de simulacros de copia y restauración en VPS.
| Solución | Ventajas | Más adecuada para |
|---|---|---|
| Pterodactyl | Ecosistema maduro, Eggs abundantes, multinodo y permisos completos | Varios juegos, varios usuarios, escenarios de alojamiento |
| Pelican | Continúa una arquitectura similar, proyecto más reciente | Usuarios dispuestos a evaluar un ecosistema nuevo |
| PufferPanel | Despliegue y uso relativamente directos | Servidores domésticos, autohospedaje a pequeña escala |
| Paneles de proveedor | Mínimo esfuerzo operativo | Quienes no quieren gestionar Linux y Docker |
Si Pterodactyl ya funciona de forma estable, no migres con prisas solo por cambios de interfaz. Las copias de seguridad, la monitorización, la protección DDoS y la capacidad de los nodos suelen ser más importantes que cambiar de panel.
No es obligatorio. Los servidores personales pueden desplegarse en la misma máquina; para multinodo o alojamiento comercial es mejor separarlos, para que la carga de juego no afecte al panel de administración.
En la mayoría de los casos no es fiable. La documentación oficial indica que OpenVZ, Virtuozzo y algunos LXC pueden no ejecutar las funciones de Docker necesarias; prioriza KVM.
Normalmente porque Wings no está en ejecución, las configuraciones no coinciden, hay un error de DNS, el certificado no es válido o 8080/8443 está bloqueado por el firewall.
No. Gestiona contenedores de juego; no sustituye el scrubbing a nivel de centro de datos, la protección Anycast ni los proxies de tráfico de juego.
Porque los datos cifrados dependen también del APP_KEY original. La base de datos, el .env del Panel, la configuración de Wings y los datos de juego deben respaldarse juntos.
La dificultad de Pterodactyl no está en descargar el Panel, sino en conectar la web, la base de datos, Redis, las colas, Wings, Docker, el DNS, los certificados y los puertos de juego en una cadena fiable. Los despliegues pequeños pueden empezar con un único VPS KVM de 4 núcleos y 8GB; si vas a alojar varios jugadores o juegos pesados, prioriza CPU de alta frecuencia, NVMe, memoria suficiente y líneas con protección DDoS real.
Antes de publicar, haz tres cosas finales: guarda APP_KEY, verifica que las copias en S3 o en otra máquina se pueden restaurar, y prueba desde la red externa el Panel, el SFTP de Wings y cada puerto de Allocation de juego.