Přejít na hlavní obsah
Sleva 50% všechny plány, omezený čas. Od $2.48/mo
10 min left
Databáze a analytika

Jak nainstalovat Adminer na Linux VPS (s Nginx a správným zabezpečením)

H Autor: Haze 10 min čtení
Adminer login screen served by Nginx on a Linux VPS

Spuštěná instance Adminer na otevřené adrese je jedním z nejtišších způsobů, jak přijít o databázi. Někdo nasadí jediný PHP soubor, aby zkontroloval tabulku, URL funguje a soubor tam zůstane měsíce, dokud se zastaralá kopie nestane útokovým vektorem. Proto tento průvodce instalací Admineru na Linux VPS věnuje stejně místa zabezpečení nástroje jako jeho spuštění.

Adminer je jediný PHP soubor (přibližně 503 KB v plné sestavě), který podporuje MySQL, MariaDB, PostgreSQL, SQLite a další databáze. Jeho nasazení je triviálně jednoduché, což je přesně důvod, proč bývá nasazen nedbale.

Nainstalujete jej na moderní Ubuntu nebo Debian VPS s Nginx a PHP-FPM, přidáte HTTP autentizaci, seznam povolených IP adres a HTTPS s Let's Encrypt, a zakončíte jasným pravidlem, kdy zcela přeskočit veřejné nastavení a přistupovat k Admineru přes SSH tunel.

Stručně

  • Adminer je jeden PHP soubor, který stáhnete do kořenového adresáře webu pomocí wget do webového kořene stáhnete; Nginx a PHP-FPM jej obsluhují.
  • Veřejná instance Adminer potřebuje všechny tři: vrstvu HTTP autentizace, seznam povolených IP adres a HTTPS. Žádný z nich samostatně nestačí.
  • U nejcitlivějších databází Adminer vůbec nevystavujte: přiřaďte ho k localhost a přistupovat k němu přes SSH tunel.
  • Aktualizace je jediný příkaz: spusťte znovu wget příkaz stahování. Nedávné bezpečnostní verze dělají z udržování aktuálnosti skutečný provozní úkol, nikoli jen luxus.

Předpoklady: Co budete potřebovat před instalací

Tento průvodce cílí na Ubuntu 26.04 a 24.04 plus Debian 13, s poznámkami o kompatibilitě pro Ubuntu 22.04 a Debian 12. Výchozí verze PHP-FPM jsou 8.5 na Ubuntu 26.04, 8.3 na Ubuntu 24.04, 8.4 na Debian 13, 8.2 na Debian 12 a 8.1 na Ubuntu 22.04.

  • Linux VPS se systémem Ubuntu 22.04, Ubuntu 24.04, Ubuntu 26.04, Debian 12 nebo Debian 13, s uživatelem, který má sudo přístup.
  • Databázový server (MySQL, MariaDB nebo PostgreSQL) již spuštěný, buď na tomto VPS, nebo na takovém, který Adminer dosáhne přes síť. Tento průvodce neinstaluje databázi; instaluje nástroj, který použijete ke správě databáze.
  • PHP-FPM z repozitářů podporovaných operačním systémem. Ačkoliv zkompilovaný soubor Admineru podporuje PHP 5.3+, použijte aktuální verzi poskytovanou distribucí uvedenou výše místo instalace zastaralé verze PHP.
  • Pro veřejné nastavení HTTPS potřebujete název hostitele překládající se na VPS a dostupné příchozí TCP porty 80 a 443. pracovní postup Certbot Nginx používá validaci HTTP-01 na portu 80. Let's Encrypt nyní podporuje krátkodobé certifikáty IP adres, ale Certbot je neprovádí automaticky přes svůj pracovní postup Nginx, takže tento průvodce používá název hostitele.

Poznámka: Tento průvodce záměrně používá Nginx. Pokud používáte Apache, logika stahování a zabezpečení stále platí, ale níže uvedená konfigurace serverového bloku nikoli.

Instalace Nginx a PHP-FPM

Začněte aktualizací indexu balíčků a instalací Nginx a PHP-FPM spolu s rozšířením databáze PHP, které váš server potřebuje:

sudo apt update
sudo apt install -y nginx php-fpm php-mysql

Pro PostgreSQL backend nainstalujte php-pgsql místo nebo vedle php-mysql:

sudo apt install -y php-pgsql

Ověřte, že soket PHP-FPM existuje:

ls /run/php/

Přiřaďte název souboru soketu k výše uvedené verzi, například php8.5-fpm.sock na Ubuntu 26.04, php8.3-fpm.sock na Ubuntu 24.04, nebo php8.4-fpm.sock na Debianu 13. Pokud očekávaný soket chybí, zkontrolujte odpovídající službu příkazem systemctl status php8.5-fpm, přičemž nahraďte 8.5 verzí nainstalovanou ve vašem operačním systému.

Tip pro profíky: Neshoda soketu je jednou z možných příčin 502 Bad Gateway. Přiřaďte fastcgi_pass k názvu souboru v adresáři /run/php/, ověřte, že odpovídající služba PHP-FPM běží, a zkontrolujte /var/log/nginx/error.log pokud chyba přetrvává.

Stáhnutí Adminer

Vytvořte adresář pro Adminer a stáhněte do něj jediný soubor. latest.php URL vždy odkazuje na aktuální stabilní verzi:

sudo mkdir -p /var/www/adminer
sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php

Pokud pracujete pouze s MySQL nebo MariaDB, je sestavení pouze pro MySQL menší (přibližně 406 KB) a stáhne se stejným způsobem:

sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest-mysql.php

Ponechte adresář Adminer vlastněný rootem a zároveň dejte PHP-FPM přístup pro čtení:

sudo chown -R root:root /var/www/adminer
sudo chmod 755 /var/www/adminer
sudo chmod 644 /var/www/adminer/adminer.php

You do not need to track the version number: the latest.php URL znamená, že opětovné spuštění stahování je také vaše aktualizační cesta, ke které se sekce údržby vrací.

Konfigurace serverového bloku Nginx

Vytvořte serverový blok, který obsluhuje adresář Adminer a předává požadavky .php k soketu PHP-FPM, který jste dříve identifikovali. Otevřete nový soubor webu:

sudo nano /etc/nginx/sites-available/adminer

Vložte následující a nahraďte db.example.com názvem hostitele již odkazující na váš VPS a ověřte, že fastcgi_pass soket odpovídá vaší verzi PHP:

# /etc/nginx/sites-available/adminer
server {
    listen 80;
    server_name db.example.com;
    root /var/www/adminer;

    location = / {
        return 302 /adminer.php;
    }

    location = /adminer.php {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location / {
        return 404;
    }
}

Povolte web vytvořením symlinku v adresáři sites-enabled, poté otestujte konfiguraci bez opětovného načtení Nginx:

sudo ln -s /etc/nginx/sites-available/adminer /etc/nginx/sites-enabled/
sudo nginx -t

nginx -t by měl hlásit, že syntaxe je platná a test úspěšný. Zatím Nginx nerestartujte, protože web nemá autentizaci ani omezení IP. Pokračujte těmito dvěma kroky zpevnění; krok omezení IP provede první restart po zavedení obou ochran.

Uzamknout přístup: Autentizace, omezení IP a HTTPS

Veřejná instance Adminer stojí přímo před přihlašovacími údaji vaší databáze, takže potřebuje vrstvená obranná opatření, nikoli jediný zámek. Tři níže uvedené vrstvy plní různé funkce: HTTP autentizace zastaví každého bez hesla na webovém serveru, seznam povolených IP adres zablokuje přístup z neschválené adresy a HTTPS zamezí, aby zadávané přihlašovací údaje přecházely sítí v čistém textu. Přidejte všechny tři. Žádná z nich nenahrazuje ostatní.

Přidání HTTP základní autentizace

Nainstalujte htpasswd nástroj, který je součástí balíčku apache2-utils na Ubuntu a Debian:

sudo apt install -y apache2-utils

Vytvořte soubor s heslem a uživatele (budete vyzváni k zadání hesla):

sudo htpasswd -B -C 10 -c /etc/nginx/.htpasswd adminuser
sudo chown root:www-data /etc/nginx/.htpasswd
sudo chmod 640 /etc/nginx/.htpasswd

Přidejte direktivy do přesného umístění Adminer PHP, aby byl samotný PHP požadavek chráněn:

location = /adminer.php {
    auth_basic           "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

Obě direktivy jsou zdokumentovány v referenci modulu Nginx HTTP auth_basic. Spustit sudo nginx -t pro ověření konfigurace, ale zatím Nginx nerestartujte; dále bude přidán seznam povolených IP adres. Neodesílejte přihlašovací údaje pro základní autentizaci přes nešifrované HTTP; počkejte, až bude níže povoleno HTTPS.

Omezení přístupu podle IP adresy

Základní autentizace blokuje neověřené uživatele, ale Nginx stále přijímá požadavky z každého zdroje. Nahraďte stávající umístění PHP Adminera následujícím kombinovaným blokem, aby pravidla IP a direktivy základní autentizace zůstaly na jednom místě:

location = /adminer.php {
    satisfy all;

    allow                203.0.113.10;
    allow                203.0.113.0/28;
    deny                 all;

    auth_basic           "Restricted";
    auth_basic_user_file /etc/nginx/.htpasswd;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock;
}

Nahraďte ukázkové adresy vaší skutečnou veřejnou IP adresou nebo rozsahem důvěryhodné sítě. Ponechte pouze allow které potřebujete, a odstraňte nepoužívané příklady. První položka demonstruje jednu adresu, zatímco druhá demonstruje rozsah CIDR. Nginx vrací 403 Forbidden adresám, které neodpovídají žádnému allow pravidlu allow. referenci modulu přístupu Nginx dokumentuje syntaxi direktiv. Otestujte a znovu načtěte Nginx:

sudo nginx -t && sudo systemctl reload nginx

Povolení HTTPS s Let's Encrypt

S doménou namířenou na VPS nainstalujte Certbot a jeho plugin pro Nginx, poté vyžádejte certifikát:

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d db.example.com

Certbot upraví váš serverový blok tak, aby sloužil HTTPS na portu 443, a nabídne přesměrování HTTP na HTTPS; přijměte přesměrování. Také nainstaluje časovač obnovy, takže certifikát se automaticky obnoví před vypršením platnosti. Cestu obnovení můžete potvrdit pomocí sudo certbot renew --dry-run, které by mělo proběhnout bez chyb.

Nyní navštivte https://db.example.com/adminer.php z povolené adresy a ověřte, že Nginx žádá přihlašovací údaje pro základní autentizaci před načtením Admineru.

Adminer login screen after first successful load, showing the database system dropdown and server and username fields

Volba přístupového modelu: Veřejné HTTPS nebo SSH tunel

Výše popsané nastavení je vhodné, když potřebujete přístup z prohlížeče k databázi z několika počítačů nebo když otevření SSH relace není praktické. Není to jediný model, a pro citlivou databázi to není nejdefensivnější.

Pro citlivá nastavení Adminer veřejně nevystavujte. Oficiální bezpečnostní doporučení Adminer doporučuje znemožnit přístup z veřejného internetu kdykoli je to možné. Pokud zvolíte přístup pouze přes tunel, nahraďte veřejný serverový blok Nginx touto konfigurací pouze pro loopback a přeskočte veřejné nastavení HTTPS:

# /etc/nginx/sites-available/adminer
server {
    listen 127.0.0.1:8080 default_server;
    server_name _;
    root /var/www/adminer;

    location = / {
        return 302 /adminer.php;
    }

    location = /adminer.php {
        auth_basic           "Restricted";
        auth_basic_user_file /etc/nginx/.htpasswd;
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.3-fpm.sock;
    }

    location / {
        return 404;
    }
}

Otestujte a znovu načtěte náhradní konfiguraci:

sudo nginx -t && sudo systemctl reload nginx

Poté otevřete tunel z vašeho vlastního stroje:

ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip

S běžícím tunelem otevřete http://127.0.0.1:8080/adminer.php. Nginx přijímá připojení Adminer pouze přes loopback rozhraní VPS, zatímco SSH přenáší provoz přes své šifrované připojení. To využívá chování popsané v dokumentaci lokálního přesměrování OpenSSH.

Používejte veřejné HTTPS, základní autentizaci a nastavení seznamu povolených IP adres, když potřebujete přímý přístup prohlížeče z více počítačů. Upřednostňujte nastavení SSH pouze pro loopback, když veřejný přístup není nutný.

Klíčový poznatek: Nejbezpečnější Adminer je ten, který není nikdy dostupný z veřejného internetu.

Udržování Adminer aktualizovaného

Zapomenutá instance je skutečným rizikem a je vhodné ji považovat za plánovanou úlohu, nikoli za dodatečný nápad. Aktualizace Admineru je jeden příkaz, stejný wget příkaz, který jste použili k instalaci, protože latest.php vždy stáhne aktuální verzi:

sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php

Toto není teoretická obava. Adminer 5.4.3, vydaný 9. července 2026, adresoval sedm bezpečnostních poradců GitHubu v jednom vydání. Dřívější poradce pro CVE-2026-25892 ukázal, že i endpoint kontroly verze Adminer může být přeměněn na neautentizovaný vektor odmítnutí služby; problém byl opraven ve verzi 5.4.2. Zastaralá kopie hromadí veřejně zdokumentované zranitelnosti, takže její aktualizace by měla být rutinní údržbou.

Poznámka: Zůstaňte na aktuálním upstream vydání Adminer. repozitář AdminerEvo byl archivován v lednu 2025 a není aktivně udržovanou alternativou.

Nasazení na VPS

Pokud chcete přeskočit ruční kroky, Adminer je k dispozici jako jedno-kliknutí deployment v marketplace Cloudzy na Cloudzy Linux VPS. Obraz z marketplace používá Apache, Basic Auth a certifikát podepsaný sám sebou, takže se liší od výše popsaného zásobníku Nginx, seznamu povolených IP a Let's Encrypt. Před zadáním produkčních databázových přihlašovacích údajů tyto bezpečnostní rozdíly zkontrolujte.

Adminerův vlastní otisk je zanedbatelný; databáze určuje vaše dimenzování. Vybírejte CPU, paměť a úložiště na základě velikosti dat a indexů databáze, zátěže dotazů, počtu připojení, záloh a očekávaného růstu, nikoli samotného Admineru.

Časté dotazy

Je bezpečné veřejně vystavit Adminer na VPS?

Ne sám o sobě. Pokud musíte Adminer veřejně vystavit, umístěte ho za HTTP Basic Authentication, seznam povolených IP adres a HTTPS dohromady. Tyto kontroly snižují riziko, ale nevylučují ho zcela. Pro citlivé databáze svažte Adminer s localhost a přistupujte k němu místo toho přes SSH tunel.

Jak přistupuji k Admineru, aniž bych ho vystavoval internetu?

Nakonfigurujte výše ukázaný pouze loopback Nginx serverový blok, aby Adminer naslouchal na 127.0.0.1:8080, pak spusťte ssh -N -L 127.0.0.1:8080:127.0.0.1:8080 user@your-server-ip na vašem vlastním počítači. Otevřete http://127.0.0.1:8080/adminer.php zatímco tunel běží.

Může se Adminer připojit k PostgreSQL i MySQL?

Ano. Adminer podporuje MySQL, MariaDB, PostgreSQL, SQLite, MS SQL a Oracle hned po instalaci, s dalšími databázemi dostupnými přes pluginy. Nainstalujte odpovídající rozšíření PHP pro vaši databázi, například php-pgsql pro PostgreSQL, aby PHP mohlo s ním komunikovat.

Jak udržím Adminer aktualizovaný?

Znovu spusťte příkaz stahování: sudo wget -O /var/www/adminer/adminer.php https://www.adminer.org/latest.php. The latest.php URL vždy vrací aktuální stabilní verzi, takže to přepíše vaši kopii nejnovější verzí. Nedávné bezpečnostní vydání to dělá hodnotné provádět podle plánu, nikoli pouze když si vzpomenete.

Mám nainstalovat Adminer přes apt balíček nebo přímo stáhnout?

Stáhněte soubor přímo. Dá vám aktuální verzi okamžitě a aktualizace jsou jednořádkovým příkazem, zatímco distribuční balíček může zaostávat za oficiálním vydáním. Přímý soubor je stejný nástroj s kratší cestou k nejnovějším opravám zabezpečení.

Sdílet

Další z blogu

Pokračuj ve čtení.

Hotov k nasazení? Od 2,48 $/měs.

Nezávislý cloud od roku 2008. AMD EPYC, NVMe, 40 Gbps. Vrácení peněz do 14 dnů.