Přejít na obsah
Aktuální kupón:sleva 10 %Uplatnit v objednávce

Databáze pro herní servery v Pterodactylu (database host)

Připravíte MariaDB, aby si herní servery v Pterodactylu zakládaly vlastní databáze pro pluginy: účet pro Panel, bind-address, firewall a Database Host v Panelu.

  • expert
  • ~20 min
  • Aktualizováno 1. 10. 2026

Pluginy jako LuckPerms nebo CoreProtect ukládají data do MySQL databáze. Nastavíme MariaDB jako databázový host Pterodactylu, aby si uživatelé mohli databázi pro svůj server založit jedním kliknutím v Panelu.

Co budete potřebovat

  • Pterodactyl Panel (návod) a Wings (návod) na stejné VPS
  • MariaDB z instalace Panelu
  • Připojení přes SSH jako root
  • Asi 20 minut

Jak to funguje#

Když uživatel v záložce Databases svého serveru klikne na New Database, Panel se připojí k databázovému hostiteli a založí na něm databázi s<ID serveru>_<název> a uživatele u<ID serveru>_<náhodné znaky> s náhodným heslem. Herní server se pak k této databázi připojuje ze svého kontejneru.

Klíčový je kontejner. Adresa 127.0.0.1 uvnitř kontejneru znamená kontejner samotný, ne VPS. Herní server proto MariaDB na 127.0.0.1 nenajde. Na stejné VPS ale kontejnery vidí samotný server přes adresu 172.18.0.1 (rozhraní pterodactyl0, které vytvořil Wings). Tu použijeme jako adresu databázového hostitele:

Kdo se připojujeOdkudKam
Panel (zakládá databáze a uživatele)z VPS, zdrojová adresa 172.18.0.1172.18.0.1:3306
Herní server (plugin)z kontejneru, adresa 172.18.0.x172.18.0.1:3306

Ověřte, že rozhraní existuje (Wings musí aspoň jednou běžet):

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

Ve výpisu uvidíte řádek inet 172.18.0.1/16. Pokud příkaz hlásí Device "pterodactyl0" does not exist, Wings ještě neběžel, dokončete nejdřív jeho instalaci.

Účet pro Panel#

Panel potřebuje v MariaDB účet, který smí zakládat databáze a uživatele a předávat jim práva. Nepoužívejte účet pterodactyl z instalace Panelu, ten má práva jen k databázi panel.

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

  2. Přihlaste se do MariaDB:

    bash
    mariadb
  3. Vytvořte úč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
ČástCo znamená
'pterodactyluser'@'172.18.0.1'Uživatel se smí přihlásit jen z adresy 172.18.0.1, tedy jen z této VPS přes rozhraní Dockeru. Z internetu se tímto účtem nepřihlásí nikdo, ani se správným heslem.
ALL PRIVILEGES ON *.*Všechna práva ke všem databázím. Panel potřebuje zakládat a mazat databáze a uživatele.
WITH GRANT OPTIONÚčet smí udělovat práva dalším uživatelům. Bez toho by Panel novému databázovému uživateli nemohl dát přístup k nové databázi a zakládání by selhalo.

Tento účet je prakticky správce databáze

Kdo zná jeho heslo a dostane se na VPS, může číst a mazat všechny databáze včetně databáze Panelu. Proto má účet povolený jen host 172.18.0.1 a heslo nikam jinam než do Panelu nezadávejte. Panel heslo ukládá zašifrované klíčem APP_KEY.

Naslouchání MariaDB na síti#

Po instalaci MariaDB naslouchá jen na 127.0.0.1 (nastavení bind-address v souboru /etc/mysql/mariadb.conf.d/50-server.cnf). Kontejnery se k ní tak nedostanou. Nastavení změníte vlastním souborem, který se načte po výchozím a přepíše ho. Výchozí soubor tak zůstane beze změny i po aktualizacích balíčku.

  1. Vytvořte soubor:

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

    /etc/mysql/mariadb.conf.d/60-pterodactyl.cnfini
    [mysqld]
    bind-address = 0.0.0.0
NastaveníCo děláDoporučená hodnotaKdy změnit
[mysqld]Skupina voleb, kterou čte databázový server (MariaDB 10.11 na Ubuntu i 11.8 na Debianu).–Nikdy.
bind-addressNa jakých adresách MariaDB přijímá spojení. 0.0.0.0 = na všech IPv4 adresách VPS.0.0.0.0Pokud nechcete síťový přístup, vraťte 127.0.0.1 (smažte tento soubor).
  1. Restartujte MariaDB a ověřte, kde naslouchá:

    bash
    systemctl restart mariadb
    ss -tlnp | grep 3306
    • ss -tlnp – vypíše naslouchající TCP porty a programy; grep 3306 vybere řádek MariaDB.

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

Proč ne jen bind-address = 172.18.0.1

MariaDB umí naslouchat i na konkrétní adrese. Rozhraní pterodactyl0 ale vytváří Docker až po svém startu. Kdyby MariaDB při startu VPS naběhla dřív, adresu by nenašla a nespustila by se. Bezpečnější je 0.0.0.0 a přístup zvenku zavřít firewallem.

Firewall#

MariaDB teď naslouchá i na veřejné IP adrese VPS. Port 3306 musí zůstat z internetu zavřený. Databázoví uživatelé herních serverů mají ve výchozím stavu povolený přístup odkudkoli (%), takže by se k nim šlo zvenku přihlásit.

Firewall v zákaznické zóně (návod):

  • Režim Blokovat vše kromě povoleného: pro port 3306 žádné pravidlo nepřidávejte. Je zavřený.
  • Režim Povolit vše: přidejte pravidlo Příchozí · Zahodit · TCP · port 3306.

Spojení z kontejnerů do VPS jde jen uvnitř serveru a firewall zákaznické zóny ho neovlivní.

UFW ve VPS: pokud ho máte zapnutý, blokuje i spojení z kontejnerů. Povolte port 3306 jen z rozhraní Dockeru:

bash
ufw allow in on pterodactyl0 to any port 3306 proto tcp
  • allow in on pterodactyl0 – povolí příchozí provoz jen z rozhraní pterodactyl0 (z kontejnerů herních serverů).
  • to any port 3306 proto tcp – jen na TCP port 3306.

Databázový host v Panelu#

  1. V administraci Panelu klikněte vlevo na Databases a pak na Create New.
  2. Vyplňte formulář:
PoleCo zadatProč
NameNapříklad local-mariadbNázev hostitele pro vás, 1–⁠60 znaků.
Host172.18.0.1Adresa, na kterou se připojí Panel a zároveň adresa, kterou uvidí uživatelé jako Endpoint své databáze. Proto ne 127.0.0.1.
Port3306Port MariaDB.
UsernamepterodactyluserÚčet z kapitoly Účet pro Panel.
Password<HESLO_DB_HOSTA>Heslo k tomuto účtu.
Linked NodeVáš nodDatabáze, které si uživatelé serverů na tomto nodu založí sami, se vytvoří na tomto hostiteli. Bez propojení Panel vybere náhodně kteréhokoli hostitele. V administraci se hostitel u serverů z tohoto nodu nabídne jako výchozí.
  1. Klikněte na Create. Panel se k hostiteli hned zkusí připojit. Když se to nepovede, zobrazí chybu a hostitele neuloží (viz Když něco nefunguje).

Limit databází serveru#

Uživatel si může založit jen tolik databází, kolik mu povolíte. Ve výchozím stavu je limit 0, záložka Databases pak hlásí Databases cannot be created for this server.

  1. V administraci otevřete Servers a klikněte na server.
  2. Přejděte na záložku Build Configuration.
  3. V části Application Feature Limits nastavte Database Limit, například 2.
  4. Klikněte na Update Build Configuration.

Vytvoření databáze ze serveru#

Tohle už dělá uživatel serveru:

  1. V Panelu otevřete server a záložku Databases.
  2. Klikněte na New Database.
  3. Vyplňte Database Name, například luckperms. Výsledný název bude s<ID>_luckperms. Povolená jsou písmena, číslice, - a _, délka 3–⁠48 znaků.
  4. Pole Connections From určuje, odkud se smí databázový uživatel připojit. Bezpečná hodnota pro herní servery na tomto nodu je 172.18.0.% (všechny kontejnery). Prázdné pole znamená %, tedy odkudkoli.
  5. Klikněte na Create Database.
  6. U nové databáze klikněte na ikonu oka. Zobrazí se Endpoint (172.18.0.1:3306), Connections from, Username, Password a JDBC Connection String.

Údaje zadejte do konfigurace pluginu. Většina pluginů chce adresu, název databáze, uživatele a heslo zvlášť. Například LuckPerms v souboru 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žiště; MariaDB nebo MySQL.
  • address – Endpoint z Panelu (adresa a port).
  • database, username – přesné hodnoty z Panelu (v ukázce smyšlené).
  • password – heslo z Panelu, v apostrofech kvůli speciálním znakům.

Pluginy, které chtějí jeden řetězec (JDBC URL), dostanou hodnotu z pole JDBC Connection String ve tvaru jdbc:mysql://uživatel:heslo@172.18.0.1:3306/databáze. Podrobně o databázích pro Minecraft pluginy: MySQL pro pluginy.

Ověření#

Zkontrolujte z VPS, že se uživatel serveru připojí přes adresu, kterou používají kontejnery:

bash
mariadb -h 172.18.0.1 -u <UZIVATEL_DB> -p <NAZEV_DB> -e "SELECT 1;"
  • -h 172.18.0.1 – připojení přes TCP na rozhraní Dockeru.
  • -u <UZIVATEL_DB> – uživatel z Panelu (například u1_AbCdEfGhIj).
  • -p – zeptá se na heslo.
  • <NAZEV_DB> – databáze z Panelu (například s1_luckperms).
  • -e "SELECT 1;" – spustí jednoduchý dotaz a skončí.

Uvidíte tabulku s číslem 1. Pokud jste do Connections From zadali 172.18.0.%, tento test z VPS projde, protože spojení na 172.18.0.1 má zdrojovou adresu 172.18.0.1.

Nakonec restartujte herní server a v jeho konzoli zkontrolujte, že se plugin k databázi připojil bez chyby.

Pro pokročilé: databáze na jiném serveru#

Pokud MariaDB běží na jiné VPS než Panel a Wings:

  • Účet pro Panel založte s IP adresou VPS s Panelem ('pterodactyluser'@'203.0.113.10').
  • Do pole Host zadejte IP adresu databázového serveru. Tu musí vidět Panel i kontejnery na nodech.
  • Ve firewallu databázového serveru povolte port 3306 jen z IP adres Panelu a nodů (pravidlo s vyplněnou Zdrojovou IP).
  • Databázovým uživatelům serverů nastavujte Connections From na IP adresu nodu.

Když něco nefunguje#

Panel při vytváření hostitele hlásí Access denied for user 'pterodactyluser'@'172.18.0.1'#

Nesedí heslo, nebo uživatel nemá host 172.18.0.1. Zkontrolujte účty:

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

Pokud je host jiný, smažte účet (DROP USER 'pterodactyluser'@'<STARY_HOST>';) a vytvořte ho znovu podle kapitoly Účet pro Panel.

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

MariaDB na této adrese nenaslouchá. Zkontrolujte ss -tlnp | grep 3306 (musí být 0.0.0.0:3306) a soubor 60-pterodactyl.cnf. Po změně MariaDB restartujte.

Plugin se k databázi nedostal. Nejčastěji je v konfiguraci pluginu localhost nebo 127.0.0.1 místo 172.18.0.1, nebo spojení z kontejneru blokuje UFW (viz Firewall).

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

V Connections From je zadaná adresa, ze které se kontejner nepřipojuje. Databázi smažte a vytvořte znovu s hodnotou 172.18.0.%, nebo v Panelu u databáze vygenerujte nové heslo, pokud jste ho zadali špatně.

Uživatel nevidí tlačítko New Database#

Server má Database Limit 0, nebo už limit vyčerpal. Upravte ho podle kapitoly Limit databází serveru.

Shrnutí

  • Kontejnery herních serverů vidí VPS na adrese 172.18.0.1, ne na 127.0.0.1.
  • Účet pro Panel má WITH GRANT OPTION a smí se přihlásit jen z 172.18.0.1.
  • MariaDB naslouchá na 0.0.0.0 díky souboru 60-pterodactyl.cnf; port 3306 je z internetu zavřený firewallem.
  • Database Host v Panelu má adresu 172.18.0.1, kterou uživatelé uvidí jako Endpoint.
  • Serverům nastavte Database Limit, jinak si databázi nezaloží.

Hledání v návodech