Prejsť na obsah
Aktuálny kupón:zľava 10 %Uplatniť v objednávke

Databázy pre herné servery v Pterodactyle (database host)

Pripravíte MariaDB, aby si herné servery v Pterodactyle zakladali vlastné databázy pre pluginy: účet pre Panel, bind-address, firewall a Database Host v Paneli.

  • expert
  • ~20 min
  • Aktualizované 9. 10. 2026

Pluginy ako LuckPerms alebo CoreProtect ukladajú dáta do MySQL databázy. Nastavíme MariaDB ako databázový host Pterodactylu, aby si používatelia mohli databázu pre svoj server založiť jedným kliknutím v Paneli.

Čo budete potrebovať

  • Pterodactyl Panel (návod) a Wings (návod) na rovnakom VPS
  • MariaDB z inštalácie Panelu
  • Pripojenie cez SSH ako root
  • Približne 20 minút

Ako to funguje#

Keď používateľ v záložke Databases svojho servera klikne na New Database, Panel sa pripojí k databázovému hostiteľovi a založí na ňom databázu s<ID servera>_<názov> a používateľa u<ID servera>_<náhodné znaky> s náhodným heslom. Herný server sa potom k tejto databáze pripája zo svojho kontajnera.

Kľúčový je kontajner. Adresa 127.0.0.1 vnútri kontajnera znamená kontajner samotný, nie VPS. Herný server preto MariaDB na 127.0.0.1 nenájde. Na rovnakom VPS však kontajnery vidia samotný server cez adresu 172.18.0.1 (rozhranie pterodactyl0, ktoré vytvoril Wings). Tú použijeme ako adresu databázového hostiteľa:

Kto sa pripájaOdkiaľKam
Panel (zakladá databázy a používateľov)z VPS, zdrojová adresa 172.18.0.1172.18.0.1:3306
Herný server (plugin)z kontajnera, adresa 172.18.0.x172.18.0.1:3306

Overte, že rozhranie existuje (Wings musí aspoň raz bežať):

bash
ip -4 addr show pterodactyl0
  • ip -4 addr show pterodactyl0 – vypíše IPv4 adresu rozhrania pterodactyl0.

Vo výpise uvidíte riadok inet 172.18.0.1/16. Ak príkaz hlási Device "pterodactyl0" does not exist, Wings ešte nebežal, dokončite najprv jeho inštaláciu.

Účet pre Panel#

Panel potrebuje v MariaDB účet, ktorý smie zakladať databázy a používateľov a odovzdávať im práva. Nepoužívajte účet pterodactyl z inštalácie Panelu, ten má práva iba k databáze panel.

  1. Vygenerujte silné heslo iba z písmen a číslic (generátor hesiel).

  2. Prihláste sa do MariaDB:

    bash
    mariadb
  3. Vytvorte účet. Za <HESLO_DB_HOSTA> dosaďte heslo z kroku 1:

    SQL
    CREATE USER 'pterodactyluser'@'172.18.0.1' IDENTIFIED BY '<HESLO_DB_HOSTA>';
    GRANT ALL PRIVILEGES ON *.* TO 'pterodactyluser'@'172.18.0.1' WITH GRANT OPTION;
    exit
ČasťČo znamená
'pterodactyluser'@'172.18.0.1'Používateľ sa smie prihlásiť iba z adresy 172.18.0.1, teda iba z tohto VPS cez rozhranie Dockeru. Z internetu sa týmto účtom neprihlási nikto, ani so správnym heslom.
ALL PRIVILEGES ON *.*Všetky práva ku všetkým databázam. Panel potrebuje zakladať a mazať databázy a používateľov.
WITH GRANT OPTIONÚčet smie udeľovať práva ďalším používateľom. Bez toho by Panel novému databázovému používateľovi nemohol dať prístup k novej databáze a zakladanie by zlyhalo.

Tento účet je prakticky správca databázy

Kto pozná jeho heslo a dostane sa na VPS, môže čítať a mazať všetky databázy vrátane databázy Panelu. Preto má účet povolený iba host 172.18.0.1 a heslo nikam inam než do Panelu nezadávajte. Panel heslo ukladá zašifrované kľúčom APP_KEY.

Počúvanie MariaDB na sieti#

Po inštalácii MariaDB počúva iba na 127.0.0.1 (nastavenie bind-address v súbore /etc/mysql/mariadb.conf.d/50-server.cnf). Kontajnery sa k nej tak nedostanú. Nastavenie zmeníte vlastným súborom, ktorý sa načíta po predvolenom a prepíše ho. Predvolený súbor tak zostane bez zmeny aj po aktualizáciách balíka.

  1. Vytvorte súbor:

    bash
    nano /etc/mysql/mariadb.conf.d/60-pterodactyl.cnf
  2. Vložte obsah, uložte a zatvorte editor:

    /etc/mysql/mariadb.conf.d/60-pterodactyl.cnfini
    [mysqld]
    bind-address = 0.0.0.0
NastavenieČo robíOdporúčaná hodnotaKedy zmeniť
[mysqld]Skupina volieb, ktorú číta databázový server (MariaDB 10.11 na Ubuntu aj 11.8 na Debiane).–Nikdy.
bind-addressNa akých adresách MariaDB prijíma spojenia. 0.0.0.0 = na všetkých IPv4 adresách VPS.0.0.0.0Ak nechcete sieťový prístup, vráťte 127.0.0.1 (zmažte tento súbor).
  1. Reštartujte MariaDB a overte, kde počúva:

    bash
    systemctl restart mariadb
    ss -tlnp | grep 3306
    • ss -tlnp – vypíše počúvajúce TCP porty a programy; grep 3306 vyberie riadok MariaDB.

    Uvidíte 0.0.0.0:3306 a názov procesu mariadbd.

Prečo nie iba bind-address = 172.18.0.1

MariaDB dokáže počúvať aj na konkrétnej adrese. Rozhranie pterodactyl0 však vytvára Docker až po svojom štarte. Keby MariaDB pri štarte VPS nabehla skôr, adresu by nenašla a nespustila by sa. Bezpečnejšie je 0.0.0.0 a prístup zvonku zavrieť firewallom.

Firewall#

MariaDB teraz počúva aj na verejnej IP adrese VPS. Port 3306 musí zostať z internetu zatvorený. Databázoví používatelia herných serverov majú v predvolenom stave povolený prístup odkiaľkoľvek (%), takže by sa k nim dalo zvonku prihlásiť.

Firewall v zákazníckom účte (návod):

  • Režim Blokovať všetko okrem povoleného: pre port 3306 žiadne pravidlo nepridávajte. Je zatvorený.
  • Režim Povoliť všetko: pridajte pravidlo Prichádzajúce · Zahodiť · TCP · port 3306.

Spojenie z kontajnerov do VPS ide iba vnútri servera a firewall zákazníckeho účtu ho neovplyvní.

UFW vo VPS: ak ho máte zapnutý, blokuje aj spojenia z kontajnerov. Povoľte port 3306 iba z rozhrania Dockeru:

bash
ufw allow in on pterodactyl0 to any port 3306 proto tcp
  • allow in on pterodactyl0 – povolí prichádzajúcu prevádzku iba z rozhrania pterodactyl0 (z kontajnerov herných serverov).
  • to any port 3306 proto tcp – iba na TCP port 3306.

Databázový host v Paneli#

  1. V administrácii Panelu kliknite vľavo na Databases a potom na Create New.
  2. Vyplňte formulár:
PoleČo zadaťPrečo
NameNapríklad local-mariadbNázov hostiteľa pre vás, 1–⁠60 znakov.
Host172.18.0.1Adresa, na ktorú sa pripojí Panel a zároveň adresa, ktorú uvidia používatelia ako Endpoint svojej databázy. Preto nie 127.0.0.1.
Port3306Port MariaDB.
UsernamepterodactyluserÚčet z kapitoly Účet pre Panel.
Password<HESLO_DB_HOSTA>Heslo k tomuto účtu.
Linked NodeVáš nodDatabázy, ktoré si používatelia serverov na tomto node založia sami, sa vytvoria na tomto hostiteľovi. Bez prepojenia Panel vyberie náhodne ktoréhokoľvek hostiteľa. V administrácii sa hostiteľ pri serveroch z tohto nodu ponúkne ako predvolený.
  1. Kliknite na Create. Panel sa k hostiteľovi hneď skúsi pripojiť. Keď sa to nepodarí, zobrazí chybu a hostiteľa neuloží (pozri Keď niečo nefunguje).

Limit databáz servera#

Používateľ si môže založiť iba toľko databáz, koľko mu povolíte. V predvolenom stave je limit 0, záložka Databases potom hlási Databases cannot be created for this server.

  1. V administrácii otvorte Servers a kliknite na server.
  2. Prejdite na záložku Build Configuration.
  3. V časti Application Feature Limits nastavte Database Limit, napríklad 2.
  4. Kliknite na Update Build Configuration.

Vytvorenie databázy zo servera#

Toto už robí používateľ servera:

  1. V Paneli otvorte server a záložku Databases.
  2. Kliknite na New Database.
  3. Vyplňte Database Name, napríklad luckperms. Výsledný názov bude s<ID>_luckperms. Povolené sú písmená, číslice, - a _, dĺžka 3–⁠48 znakov.
  4. Pole Connections From určuje, odkiaľ sa smie databázový používateľ pripojiť. Bezpečná hodnota pre herné servery na tomto node je 172.18.0.% (všetky kontajnery). Prázdne pole znamená %, teda odkiaľkoľvek.
  5. Kliknite na Create Database.
  6. Pri novej databáze kliknite na ikonu oka. Zobrazí sa Endpoint (172.18.0.1:3306), Connections from, Username, Password a JDBC Connection String.

Údaje zadajte do konfigurácie pluginu. Väčšina pluginov chce adresu, názov databázy, používateľa a heslo zvlášť. Napríklad LuckPerms v súbore plugins/LuckPerms/config.yml:

plugins/LuckPerms/config.ymlYAML
storage-method: MariaDB
data:
  address: 172.18.0.1:3306
  database: s1_luckperms
  username: u1_AbCdEfGhIj
  password: '<HESLO_Z_PANELU>'
  • storage-method – typ úložiska; MariaDB alebo MySQL.
  • address – Endpoint z Panelu (adresa a port).
  • database, username – presné hodnoty z Panelu (v ukážke vymyslené).
  • password – heslo z Panelu, v apostrofoch kvôli špeciálnym znakom.

Pluginy, ktoré chcú jeden reťazec (JDBC URL), dostanú hodnotu z poľa JDBC Connection String v tvare jdbc:mysql://uživatel:heslo@172.18.0.1:3306/databáze. Podrobne o databázach pre Minecraft pluginy: MySQL pre pluginy.

Overenie#

Skontrolujte z VPS, že sa používateľ servera pripojí cez adresu, ktorú používajú kontajnery:

bash
mariadb -h 172.18.0.1 -u <UZIVATEL_DB> -p <NAZEV_DB> -e "SELECT 1;"
  • -h 172.18.0.1 – pripojenie cez TCP na rozhranie Dockeru.
  • -u <UZIVATEL_DB> – používateľ z Panelu (napríklad u1_AbCdEfGhIj).
  • -p – opýta sa na heslo.
  • <NAZEV_DB> – databáza z Panelu (napríklad s1_luckperms).
  • -e "SELECT 1;" – spustí jednoduchý dopyt a skončí.

Uvidíte tabuľku s číslom 1. Ak ste do Connections From zadali 172.18.0.%, tento test z VPS prejde, pretože spojenie na 172.18.0.1 má zdrojovú adresu 172.18.0.1.

Nakoniec reštartujte herný server a v jeho konzole skontrolujte, že sa plugin k databáze pripojil bez chyby.

Pre pokročilých: databáza na inom serveri#

Ak MariaDB beží na inom VPS než Panel a Wings:

  • Účet pre Panel založte s IP adresou VPS s Panelom ('pterodactyluser'@'203.0.113.10').
  • Do poľa Host zadajte IP adresu databázového servera. Tú musí vidieť Panel aj kontajnery na nodoch.
  • Vo firewalle databázového servera povoľte port 3306 iba z IP adries Panelu a nodov (pravidlo s vyplnenou Zdrojovou IP).
  • Databázovým používateľom serverov nastavujte Connections From na IP adresu nodu.

Keď niečo nefunguje#

Panel pri vytváraní hostiteľa hlási Access denied for user 'pterodactyluser'@'172.18.0.1'#

Nesedí heslo, alebo používateľ nemá host 172.18.0.1. Skontrolujte účty:

SQL
SELECT User, Host FROM mysql.user WHERE User = 'pterodactyluser';

Ak je host iný, zmažte účet (DROP USER 'pterodactyluser'@'<STARY_HOST>';) a vytvorte ho znova podľa kapitoly Účet pre Panel.

Connection refused alebo Can't connect to … server on '172.18.0.1'#

MariaDB na tejto adrese nepočúva. Skontrolujte ss -tlnp | grep 3306 (musí byť 0.0.0.0:3306) a súbor 60-pterodactyl.cnf. Po zmene MariaDB reštartujte.

Plugin sa k databáze nedostal. Najčastejšie je v konfigurácii pluginu localhost alebo 127.0.0.1 namiesto 172.18.0.1, alebo spojenie z kontajnera blokuje UFW (pozri Firewall).

Plugin hlási Access denied for user 'u1_…'@'172.18.0.x'#

V Connections From je zadaná adresa, z ktorej sa kontajner nepripája. Databázu zmažte a vytvorte znova s hodnotou 172.18.0.%, alebo v Paneli pri databáze vygenerujte nové heslo, ak ste ho zadali nesprávne.

Používateľ nevidí tlačidlo New Database#

Server má Database Limit 0, alebo už limit vyčerpal. Upravte ho podľa kapitoly Limit databáz servera.

Zhrnutie

  • Kontajnery herných serverov vidia VPS na adrese 172.18.0.1, nie na 127.0.0.1.
  • Účet pre Panel má WITH GRANT OPTION a smie sa prihlásiť iba z 172.18.0.1.
  • MariaDB počúva na 0.0.0.0 vďaka súboru 60-pterodactyl.cnf; port 3306 je z internetu zatvorený firewallom.
  • Database Host v Paneli má adresu 172.18.0.1, ktorú používatelia uvidia ako Endpoint.
  • Serverom nastavte Database Limit, inak si databázu nezaložia.

Bol návod užitočný?

Platí pre

  • Ubuntu 24.04
  • Debian 13
  • Pterodactyl Panel 1.x

Služby

Nahlásiť chybu v návode

Hľadanie v návodoch