Dashboard panou de game server Pterodactyl
Gaming

Pterodactyl: panoul de game server care te scapa de conectarea prin SSH de fiecare data cand cineva vrea sa restarteze Minecraft-ul

Cunosti scenariul. Cineva din Discord vrea un mod nou pe serverul de Minecraft. Altcineva vrea mai mult RAM pentru ca modpack-ul s-a ingreunat. Un prieten vrea sa restarteze serverul de Rust pentru ca a inghetat la 3 dimineata. Fiecare cerere de rutina se transforma in “hei, poti sa te conectezi prin SSH sa faci X”, iar la un moment dat ajungi administratorul de sistem neplatit pentru sase oameni si hobby-ul lor.

Exact aceasta problema a fost gandit sa o rezolve Pterodactyl. Este un panou de administrare pentru servere de jocuri, gratuit si open source, licentiat MIT , cu codul pe GitHub si documentatia pe pterodactyl.io . Il rulam si noi: hosting-ul de servere dedicate pentru gaming al DreamServer este construit pe Pterodactyl, tocmai ca clientii sa primeasca un panou self-service real in loc de o coada de tichete de suport pentru sarcini de rutina precum restartarea unui server sau schimbarea unui mod pack.

Ce este, mai exact, Pterodactyl

Pterodactyl se imparte in doua componente, iar intelegerea acestei separari este cheia pentru tot restul.

Panel-ul este aplicatia web, construita pe PHP si Laravel. E ceea ce tu si utilizatorii tai vedeti: dashboard-ul, conturile de utilizatori, lista de servere, integrarea de billing daca o conectezi la ceva de genul WHMCS. Panel-ul nu ruleaza niciun server de joc el insusi, e planul de control: stie ce servere exista, cine le detine, ce resurse le sunt alocate, si vorbeste cu masinile care fac efectiv treaba.

Acele masini ruleaza Wings, un daemon scris in Go care traieste pe fiecare nod de game server. Wings porneste, opreste si gestioneaza procesele serverelor de joc, lansand fiecare in propriul container Docker. Acesta e detaliul care conteaza cel mai mult din punct de vedere operational: fiecare server de joc este izolat. Un server de Rust care s-a stricat nu poate darama serverul de Minecraft de langa el pe aceeasi masina, pentru ca nu impart acelasi spatiu de procese, iar limitele de resurse (CPU, RAM, disk) sunt impuse per container, nu sunt doar o sugestie politicoasa.

A treia componenta este sistemul de eggs: un sistem de sabloane care descrie cum se instaleaza, configureaza si ruleaza un anumit tip de server de joc. Un egg pentru Paper Minecraft stie cum sa descarce jar-ul potrivit, sa genereze comanda de pornire si sa expuna variabilele de configurare corecte in interfata Panel-ului. Exista eggs oficiale si de comunitate pentru sute de jocuri: Minecraft in toate variantele (Vanilla, Paper, Forge, Fabric), Rust, ARK: Survival Evolved, Valheim, Terraria, CS2 si alte titluri pe motor Source, si multe altele. Cand vrei sa adaugi suport pentru un joc nou, nu modifici Pterodactyl-ul insusi, scrii sau importi un egg.

De ce conteaza

Beneficiul evident este self-service-ul. Un restart, o schimbare de mod, o privire in consola sa vezi de ce a picat serverul: nimic din toate astea nu mai are nevoie de un administrator cu acces SSH. Exact acesta e modelul din spatele hosting-ului nostru de servere dedicate pentru gaming : serverele sunt gestionate prin Pterodactyl astfel incat un client care ruleaza un server de Minecraft sau Rust primeste control complet self-service fara sa aiba nevoie de acces shell la host.

Beneficiul mai putin evident este siguranta. Izolarea Docker inseamna ca un container care consuma toata memoria alocata este oprit de Docker, nu ia cu el toata masina gazda. Limitele de resurse per server inseamna ca un vecin galagios nu poate saraci de resurse serverele celorlalti de pe acelasi nod, indiferent daca faci asta pentru sase prieteni sau sase sute de clienti platitori.

Ce primesti din cutie

  • Eggs pentru sute de jocuri: variantele de Minecraft, Rust, ARK, Valheim, Terraria, CS2 si o multime de titluri de nisa, mentinute de comunitate.
  • Limite de resurse per server: cote de CPU, RAM si disk impuse prin Docker, alocari care sunt garantii reale, nu intelegeri de gentlemen.
  • Acces SFTP per server, ca utilizatorii sa gestioneze lumi, configuratii si mod-uri direct, fara acces shell la host.
  • Consola live in browser, cu streaming stdin/stdout, ca sa urmaresti pornirea unui server sau sa depanezi o cadere fara terminal.
  • Subusers, ca sa dai unui prieten sau unui moderator de comunitate permisiuni limitate pe un singur server, fara sa-i dai cheile intregului panou.
  • Sarcini programate si backup-uri, ca restart-urile si backup-urile de lumi sa ruleze la un interval de timp, nu cand isi aminteste cineva.
  • Un REST API, pentru oricine vrea sa scripteze gestiunea serverelor sau sa o lege de un bot de Discord.
  • Scalare multi-nod: un singur Panel poate gestiona mai multe noduri Wings, raspandite pe masini fizice sau chiar locatii diferite.

Instalare Pterodactyl pe un VPS

O instalare realista are doua componente mobile care pot sta pe aceeasi masina (perfect pentru un setup mic) sau pe masini separate (ce vrei odata ce rulezi mai mult decat cateva servere).

Panel-ul vrea un stack web destul de standard: PHP, MariaDB sau MySQL, Redis, si un server web in fata (Nginx sau Caddy). Calea oficiala de instalare este un instalator web dupa ce descarci codul si pui la punct dependentele Composer. Exista si setup-uri Docker Compose mentinute de comunitate, daca preferi sa rulezi tot stack-ul Panel-ului ca containere.

Un setup tipic de Panel, in stil bare-metal, arata cam asa:

# Dependinte de sistem (exemplu Debian/Ubuntu)
apt update && apt install -y php8.3 php8.3-{cli,gd,mysql,mbstring,bcmath,xml,curl,zip,intl} \
  mariadb-server nginx redis-server curl tar unzip git composer

# Descarca panel-ul si instaleaza dependintele PHP
mkdir -p /var/www/pterodactyl && cd /var/www/pterodactyl
curl -Lo panel.tar.gz https://github.com/pterodactyl/panel/releases/latest/download/panel.tar.gz
tar -xzvf panel.tar.gz && chmod -R 755 storage/* bootstrap/cache/
composer install --no-dev --optimize-autoloader

# Environment + migrarea bazei de date (interactiv)
cp .env.example .env
php artisan key:generate --force
php artisan p:environment:setup
php artisan p:environment:database
php artisan migrate --seed --force
php artisan p:user:make

Wings, daemon-ul care ruleaza efectiv serverele de joc, se instaleaza separat si se bazeaza pe Docker pentru a lansa containerele. Calea standard e sa-l rulezi ca serviciu systemd pe fiecare nod pe care vrei sa gazduiesti servere:

# Pe fiecare nod Wings (necesita Docker instalat in prealabil)
mkdir -p /etc/pterodactyl
curl -L -o /usr/local/bin/wings \
  "https://github.com/pterodactyl/wings/releases/latest/download/wings_linux_amd64"
chmod u+x /usr/local/bin/wings

# Ia un token de nod din interfata de admin a Panel-ului, apoi:
wings configure --panel-url https://panel.exemplu.ro \
  --token <token-nod> --node <id-nod>

systemctl enable --now wings

Pentru un setup mic, Panel si Wings pe acelasi VPS merg perfect. Odata ce contentia de CPU devine o problema reala, mutarea Wings pe propria masina dedicata (sau mai multe, cate una per regiune) e pasul urmator firesc, iar Panel-ul gestioneaza mai multe noduri fara nicio schimbare arhitecturala.

Porturile depind de ce ruleaza unde. Panel-ul are nevoie de porturile web standard, Wings expune propriul port de API, iar fiecare server de joc are nevoie de intervalul de porturi pe care il alocati:

ufw allow 80/tcp        # Panel HTTP (redirect catre HTTPS)
ufw allow 443/tcp       # Panel HTTPS
ufw allow 8080/tcp      # portul default de API/SFTP al Wings (ajusteaza dupa config)
ufw allow 25565:25665/tcp   # exemplu interval de porturi pentru game server (stil Minecraft)
ufw allow 25565:25665/udp   # daca jocurile au nevoie si de UDP

Acesta este exact genul de sarcina care se potriveste bine pe un VPS DreamServer sau pe un server dedicat: CPU si I/O predictibile, suport Docker din start, si suficient spatiu de manevra ca sa rulezi Panel, Wings si cateva servere de joc unul langa altul fara sa se calce pe picioare.

Tipare de configurare care merita stiute

Separa Panel si Wings pe noduri din timp

Daca te astepti ca asta sa creasca dincolo de un proiect de hobby, nu astepta pana esti sarac in CPU ca sa separi Panel si Wings. Pune Panel-ul pe o masina mica, cu resurse putine (e in mare parte PHP si o baza de date), si lasa nodurile Wings sa fie dimensionate pentru sarcina reala de joc. Regiuni diferite pot rula propriile noduri Wings indreptate catre acelasi Panel, asa se ofera, sa zicem, o locatie EU si una US dintr-o singura interfata de administrare.

Alege eggs-urile cu grija

Calitatea eggs-urilor variaza. Eggs-urile oficiale tind sa fie solide si mentinute la zi; cele de comunitate variaza de la excelente la abandonate. Inainte sa dai drumul unui joc in productie, chiar citeste scriptul de instalare al egg-ului si comanda de pornire. Pentru ceva neobisnuit (o versiune specifica de mod loader, plugin-uri custom bagate direct in imagine), s-ar putea sa ajungi sa faci un fork sau sa scrii propriul egg in loc sa te increzi intr-unul gasit la intamplare.

Seteaza limite de resurse cu marja

Un container care atinge limita de memorie este oprit de mecanismul OOM al Docker, ceea ce pentru un server de joc inseamna de obicei o cadere brusca, nu o oprire eleganta. Dimensioneaza limitele de RAM cu o marja peste ce are nevoie in mod normal procesul jocului (Minecraft cu un modpack mare e cazul clasic in care lumea seteaza -Xmx exact la limita containerului si apoi se intreaba de ce pica sub sarcina). Limitele de CPU sunt mai blande: Docker va incetini, nu va opri, deci o limita de CPU putin cam stransa inseamna doar lag.

Foloseste subusers, si tine backup-urile in afara nodului

Da acces subuser comunitatii de incredere la serverul lor specific in loc sa impartasesti login-ul proprietarului: permisiunile sunt suficient de granulare cat sa permita acces la consola si gestiunea fisierelor fara sa cedezi si billing-ul sau posibilitatea de a sterge serverul. Si decide deliberat unde traiesc backup-urile: cele locale te protejeaza de “s-a corupt fisierul lumii”, nu de “a murit discul”. Pterodactyl suporta backup catre storage compatibil S3 ca destinatie, alegerea sensibila implicita pentru orice pe care chiar se bazeaza o comunitate.

Securizeaza Panel-ul ca interfata de admin care este

Panel-ul are control total asupra fiecarui server pe care il gestioneaza, deci trateaza accesul corespunzator: autentificare in doi factori pentru conturile de admin, un numar mic de utilizatori cu drepturi depline, si HTTPS cu un certificat real, nu unul self-signed pe care utilizatorii trebuie sa dea click sa-l accepte.

Unde Pterodactyl nu e raspunsul potrivit

Daca rulezi exact un singur server de Minecraft doar pentru tine, fara ca altcineva sa aiba nevoie de acces si fara nevoie de interfata web, Pterodactyl e exagerat. Un binar de server de joc intr-o unitate systemd sau o sesiune tmux/screen, cu cateva alias-uri de shell pentru start/stop/backup, are practic zero overhead si nimic de intretinut in afara jocului insusi. Panel plus Wings plus MariaDB plus Redis inseamna infrastructura reala care are nevoie de update-uri, monitorizare si patch-uri. E un compromis corect cand gestionezi servere pentru alti oameni, si un compromis prost cand vrei doar lumea ta de Valheim sus in weekend-uri.

Nu se potriveste nici universal cu orice binar de server de joc existent. Orice nu se containerizeaza curat, sau se asteapta la acces direct la hardware, poate fi greu de impachetat intr-un egg. Si calitatea eggs-urilor e inegala: jocurile populare sunt bine acoperite, cele obscure pot avea un egg subtire sau nementinut, sau deloc, ceea ce inseamna ca il scrii tu insuti.

Alternative pe care le-am luat in calcul

Crafty Controller : mai simplu si mai concentrat strict pe Minecraft. Daca Minecraft chiar e singurul joc pe care il vei rula vreodata, complexitatea mai mica a Crafty e un avantaj real fata de stack-ul mai larg al Pterodactyl.

AMP (Application Management Panel) : prietenos comercial, suport larg de jocuri, si o experienta ingrijita din start, de la CubeCoders. Nu e complet open source cum e Pterodactyl, iar costurile de licenta cresc cu scara, dar e o optiune legitima daca vrei un produs comercial cu suport.

Pelican Panel : un fork mai nou, inspirat de Pterodactyl, cu propria directie de dezvoltare. Merita urmarit, desi e mai putin testat in productie, pur si simplu pentru ca e mai tanar.

systemd sau tmux/screen simplu: pentru cazul cu un singur server si un singur admin, acesta e chiar raspunsul corect. Fara stack web, fara strat Docker, doar procesul jocului si shell-ul tau.

Deci, sa-l rulezi?

Daca gestionezi mai mult de unul sau doua servere de joc, sau daca altcineva in afara de tine trebuie sa le atinga, Pterodactyl isi merita locul. Arhitectura Panel plus Wings, izolarea Docker si sistemul de eggs acopera o gama chiar larga de jocuri cu garantii reale de siguranta in jurul limitelor de resurse, iar modelul self-service inseamna ca nu mai esti tu blocajul pentru cererile de rutina.

Daca preferi sa sari peste construirea acestui stack, hosting-ul nostru de servere dedicate pentru gaming ruleaza deja pe Pterodactyl: primesti Panel-ul, consola, SFTP si acces subuser fara sa ridici tu infrastructura. Daca vrei sa iti rulezi propria instalare, un VPS DreamServer e un loc solid unde sa pui Panel si Wings, iar serviciul nostru de administrare servere poate sa il tina actualizat cat timp tu te concentrezi pe serverele de joc propriu-zise.

Avem Incredere & Suntem Membri

Suntem membri ai principalelor organizatii de infrastructura internet.

RIPE NCC MANRS PeeringDB RoTLD DSIX SBIX 4IXP LOCIX Euro-IX RIPE NCC MANRS PeeringDB RoTLD DSIX SBIX 4IXP LOCIX Euro-IX