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ť
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ája | Odkiaľ | Kam |
|---|---|---|
| Panel (zakladá databázy a používateľov) | z VPS, zdrojová adresa 172.18.0.1 | 172.18.0.1:3306 |
| Herný server (plugin) | z kontajnera, adresa 172.18.0.x | 172.18.0.1:3306 |
Overte, že rozhranie existuje (Wings musí aspoň raz bežať):
ip -4 addr show pterodactyl0ip -4 addr show pterodactyl0– vypíše IPv4 adresu rozhraniapterodactyl0.
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.
Vygenerujte silné heslo iba z písmen a číslic (generátor hesiel).
Prihláste sa do MariaDB:
bash mariadbVytvorte úč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. | 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/). 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.
Vytvorte súbor:
bash nano /etc/mysql/mariadb.conf.d/60-pterodactyl.cnfVložte obsah, uložte a zatvorte editor:
/etc/ mysql/ inimariadb.conf.d/ 60-pterodactyl.cnf [mysqld] bind-address = 0.0.0.0
| Nastavenie | Čo robí | Odporúčaná hodnota | Kedy zmeniť |
|---|---|---|---|
[mysqld] | Skupina volieb, ktorú číta databázový server (MariaDB 10.11 na Ubuntu aj 11.8 na Debiane). | – | Nikdy. |
bind-address | Na akých adresách MariaDB prijíma spojenia. 0.0.0.0 = na všetkých IPv4 adresách VPS. | 0.0.0.0 | Ak nechcete sieťový prístup, vráťte 127.0.0.1 (zmažte tento súbor). |
Reštartujte MariaDB a overte, kde počúva:
bash systemctl restart mariadb ss -tlnp | grep 3306ss -tlnp– vypíše počúvajúce TCP porty a programy;grep 3306vyberie riadok MariaDB.
Uvidíte
0.0.0.0:3306a názov procesumariadbd.
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:
ufw allow in on pterodactyl0 to any port 3306 proto tcpallow in on pterodactyl0– povolí prichádzajúcu prevádzku iba z rozhraniapterodactyl0(z kontajnerov herných serverov).to any port 3306 proto tcp– iba na TCP port 3306.
Databázový host v Paneli#
- V administrácii Panelu kliknite vľavo na Databases a potom na Create New.
- Vyplňte formulár:
| Pole | Čo zadať | Prečo |
|---|---|---|
| Name | Napríklad local-mariadb | Názov hostiteľa pre vás, 1–60 znakov. |
| Host | 172.18.0.1 | Adresa, na ktorú sa pripojí Panel a zároveň adresa, ktorú uvidia používatelia ako Endpoint svojej databázy. Preto nie 127.0.0.1. |
| Port | 3306 | Port MariaDB. |
| Username | pterodactyluser | Účet z kapitoly Účet pre Panel. |
| Password | <HESLO_DB_HOSTA> | Heslo k tomuto účtu. |
| Linked Node | Váš nod | Databá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ý. |
- 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.
- V administrácii otvorte Servers a kliknite na server.
- Prejdite na záložku Build Configuration.
- V časti Application Feature Limits nastavte Database Limit, napríklad
2. - Kliknite na Update Build Configuration.
Vytvorenie databázy zo servera#
Toto už robí používateľ servera:
- V Paneli otvorte server a záložku Databases.
- Kliknite na New Database.
- Vyplňte Database Name, napríklad
luckperms. Výsledný názov budes<ID>_luckperms. Povolené sú písmená, číslice,-a_, dĺžka 3–48 znakov. - 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. - Kliknite na Create Database.
- 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/:
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;MariaDBaleboMySQL.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:. 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:
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íkladu1_AbCdEfGhIj).-p– opýta sa na heslo.<NAZEV_DB>– databáza z Panelu (napríklads1_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
3306iba 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:
SELECT User, Host FROM mysql.user WHERE User = 'pterodactyluser';Ak je host iný, zmažte účet (DROP USER 'pterodactyluser'@'<STARY_) 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 hlási Communications link failure alebo časový limit spojenia#
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 na127.0.0.1. - Účet pre Panel má
WITH GRANT OPTIONa smie sa prihlásiť iba z172.18.0.1. - MariaDB počúva na
0.0.0.0vďaka súboru60-pterodactyl.cnf; port3306je 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.