Adminer è una singola pagina PHP che permette di amministrare database MySQL, MariaDB, PostgreSQL, SQLite e altri motori supportati senza installare un pannello pesante. Su Ubuntu 22.04 il punto non è tanto “farlo partire”, quanto integrarlo in modo pulito nel web server, con PHP correttamente abilitato e con qualche precauzione minima di sicurezza. In pratica: meglio poche dipendenze, un alias chiaro, accesso limitato e un controllo rapido del comportamento prima di esporlo su Internet.
Qui sotto trovi una procedura lineare per Apache e, dove utile, una variante per Nginx. L’obiettivo è arrivare a un’installazione funzionante, verificabile e reversibile, senza introdurre configurazioni fragili o eccessive.
Prerequisiti su Ubuntu 22.04
Prima di tutto serve un web server già attivo e un runtime PHP funzionante. Se usi Apache, la combinazione più comune è Apache + PHP-FPM oppure Apache + mod_php. Se usi Nginx, in pratica serve PHP-FPM. Adminer non richiede database locale sul server: si collega a un DB remoto o locale tramite la schermata di login.
Per verificare lo stato del sistema, controlla almeno questi elementi:
php -vOutput atteso: una versione PHP installata, idealmente 8.1 o compatibile con i pacchetti del sistema. Se il comando non esiste, prima va installato PHP; se esiste ma il web server non lo interpreta, il problema è nel collegamento tra server e runtime.
Se vuoi una verifica più completa, controlla anche il servizio del web server:
systemctl status apache2systemctl status nginxNon devi avere entrambi per forza: il comando utile è quello coerente con il tuo stack.
Installazione con pacchetto Ubuntu
La via più pulita, quando disponibile nei repository, è installare Adminer come pacchetto. Su Ubuntu questo evita download manuali e ti lascia un file PHP già collocato in una posizione standard.
sudo apt updatesudo apt install adminerIn molte installazioni il pacchetto deposita il file in un percorso come /usr/share/adminer/adminer.php oppure in una directory equivalente gestita dal pacchetto. La posizione esatta conviene verificarla con il database dei file installati:
dpkg -L adminer | grep -E 'adminer.*php$'Se il pacchetto non è disponibile nel tuo mirror o preferisci una versione specifica, puoi usare il file PHP standalone scaricato dal progetto. In quel caso però devi occuparti tu del posizionamento, dei permessi e degli aggiornamenti. In un ambiente di produzione, il pacchetto di sistema resta di solito la scelta più ordinata.
Pubblicazione con Apache
Con Apache, la soluzione più semplice è creare un alias dedicato. In questo modo non devi spostare file dentro la document root principale e puoi mantenere Adminer in un percorso separato, più facile da rimuovere o disattivare in seguito.
Supponendo che il file sia disponibile in /usr/share/adminer/adminer.php, crea una configurazione dedicata, ad esempio /etc/apache2/conf-available/adminer.conf:
<IfModule mod_alias.c> Alias /adminer /usr/share/adminer/adminer.php <Directory /usr/share/adminer> Require all granted Options FollowSymLinks AllowOverride None </Directory>
</IfModule>Abilita la configurazione e ricarica Apache:
sudo a2enconf adminer
sudo systemctl reload apache2A questo punto verifica che la pagina risponda:
curl -I http://localhost/adminerOutput atteso: HTTP/1.1 200 OK oppure un redirect coerente con la tua configurazione. Se ottieni 404, il percorso del file o l’alias non corrispondono. Se ottieni 403, il blocco <Directory> o i permessi non consentono l’accesso.
Se preferisci usare una directory dedicata sotto la document root, puoi anche creare un link simbolico o copiare il file, ma l’alias resta più pulito: separa la logica applicativa dal contenuto del sito e riduce il rischio di confondere Adminer con il resto dell’hosting.
Pubblicazione con Nginx e PHP-FPM
Con Nginx l’approccio cambia leggermente perché il server web non esegue PHP da solo. Devi quindi creare una location che inoltri il file a PHP-FPM. La soluzione più semplice è esporre Adminer in una sottopercorso dedicato, ad esempio /adminer, oppure in un vhost separato.
Un esempio pratico, da adattare al tuo sito:
location = /adminer { alias /usr/share/adminer/adminer.php;
} location ~ ^/adminer$ { include snippets/fastcgi-php.conf; fastcgi_param SCRIPT_FILENAME /usr/share/adminer/adminer.php; fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}Qui il dettaglio importante è il socket di PHP-FPM: su Ubuntu 22.04 può essere /run/php/php8.1-fpm.sock, ma va verificato nella tua installazione. Se il socket non coincide, Nginx risponde male o non passa la richiesta al runtime.
Verifica la configurazione e ricarica Nginx:
sudo nginx -t
sudo systemctl reload nginxSe il test fallisce, non ricaricare nulla: correggi prima la sintassi. È il classico punto in cui una modifica minima può interrompere il sito se si forza il reload senza controllo.
Accesso sicuro: limitare chi può vedere Adminer
Adminer è comodo proprio perché espone una superficie di amministrazione unica. Per questo non conviene lasciarlo aperto a chiunque. Anche se il login richiede credenziali del database, l’endpoint va comunque protetto almeno con una restrizione di rete o con un controllo aggiuntivo lato web server.
Le opzioni più sensate sono tre, in ordine di praticità:
Su Apache, puoi restringere l’accesso a un IP specifico così:
<Directory /usr/share/adminer> Require ip 203.0.113.10
</Directory>Su Nginx, la logica equivalente è:
location = /adminer { allow 203.0.113.10; deny all;
}Se il tuo IP cambia spesso, l’accesso per IP può diventare scomodo. In quel caso è spesso più robusto metterlo dietro VPN o limitare il vhost a una rete privata. Evita di lasciare Adminer esposto su Internet senza almeno una barriera esterna: il login del database non è un sostituto del controllo di esposizione.
Configurazione PHP utile per evitare errori banali
Adminer in sé è leggero, ma dipende dai moduli PHP corretti. Se manca il supporto al database che ti interessa, la schermata di login può caricarsi ma poi fallire quando tenti la connessione.
Per MySQL/MariaDB, in genere servono i moduli comuni del pacchetto PHP. Controlla che siano presenti:
php -m | grep -E 'mysqli|pdo_mysql'Se non compare nulla, installa il modulo corrispondente alla tua versione PHP. Su Ubuntu 22.04 il nome pacchetto può variare in base alla release installata, ma la logica è sempre la stessa: il modulo deve essere attivo nel runtime usato dal web server, non solo nella CLI.
Se usi PHP-FPM, dopo l’installazione del modulo riavvia il servizio relativo, non solo Apache o Nginx:
sudo systemctl restart php8.1-fpmQuesto passaggio è spesso trascurato: la CLI di PHP può mostrare il modulo installato, ma il pool FPM continua a usare la vecchia configurazione finché non viene riavviato.
Verifica funzionale con un database reale
Una volta che la pagina è raggiungibile, la vera verifica è il login verso un database reale. Non basta vedere la schermata iniziale: devi controllare che il driver corretto, l’host e le credenziali funzionino davvero.
Per un test rapido, prepara i dati minimi del tuo server DB: host, porta, nome utente, password e nome del database. Se il database è locale, spesso l’host è localhost o 127.0.0.1; se è remoto, verifica anche la reachability dalla macchina Ubuntu:
nc -vz db.example.local 3306Output atteso: connessione riuscita sulla porta del database. Se la porta è chiusa o filtrata, Adminer non può risolvere il problema: devi prima sistemare rete, firewall o policy del server DB.
Se il login fallisce ma la porta risponde, le cause più comuni sono credenziali errate, plugin di autenticazione non compatibile o permessi lato database. In quel caso Adminer è utile perché ti mostra subito l’errore di connessione senza passaggi intermedi.
Hardening minimo consigliato
Adminer non è un’applicazione da blindare con dieci livelli di complessità. Basta poco, ma quel poco va fatto bene. La priorità è non lasciarlo esposto indiscriminatamente e non conservarlo in una posizione confusa dentro il sito pubblico.
/adminer, non una directory generica del sito.Se Adminer serve solo per manutenzione occasionale, valuta anche di abilitarlo temporaneamente e poi disattivarlo. In molti casi è la scelta più prudente: meno superficie esposta, meno manutenzione continua, meno possibilità di dimenticarselo online.
Disinstallazione e rollback
Il vantaggio di Adminer è che il rollback è semplice. Se hai usato il pacchetto e un alias dedicato, puoi tornare indietro in pochi minuti senza toccare il resto del sito.
Su Apache, disabilita la configurazione e ricarica il servizio:
sudo a2disconf adminer
sudo systemctl reload apache2Se hai creato un file dedicato in /etc/apache2/conf-available/adminer.conf, puoi conservarlo come backup o rimuoverlo dopo aver verificato che l’endpoint non risponda più. Il controllo finale è semplice:
curl -I http://localhost/adminerOutput atteso dopo il rollback: 404 o 403, a seconda di come hai rimosso l’esposizione. Se risponde ancora 200, c’è un’altra regola attiva, un alias residuo o una directory pubblica che continua a servire il file.
Su Nginx, il rollback consiste nel rimuovere il blocco di location o il vhost dedicato, poi testare la configurazione e ricaricare. Anche qui il punto chiave è verificare prima di applicare:
sudo nginx -t
sudo systemctl reload nginxSe hai installato Adminer via pacchetto e non ti serve più, puoi rimuoverlo con il gestore pacchetti. Fallo solo dopo aver rimosso l’esposizione web, così eviti di lasciare file residui pubblicabili in futuro.
Quando conviene usare Adminer invece di phpMyAdmin
La scelta non è ideologica. Adminer conviene quando vuoi una singola pagina leggera, facile da aggiornare e da togliere, oppure quando devi gestire più motori di database senza installare pannelli separati. È molto comodo per ambienti di staging, server di manutenzione e interventi rapidi su infrastrutture già presidiate da altri strumenti.
phpMyAdmin resta più ricco in alcune situazioni, ma anche più pesante e più articolato da mantenere. Se ti serve solo una console essenziale per operazioni amministrative, Adminer spesso è la scelta più pratica. Su Ubuntu 22.04, proprio perché si integra con poco, è uno strumento che vale la pena tenere nel cassetto: non sempre acceso, ma pronto quando serve.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.