ISPConfig Setup · 6 min read · Sep 08, 2025
Configurazione perfetta di ISPConfig Multiserver su Ubuntu 20.04 e Debian 10

Questo tutorial ti guiderà nell’installazione della tua configurazione multiserver ISPConfig 3 con server dedicati per il pannello, web, DNS, mail e webmail. Sia il server DNS che quello mail avranno un server mirror per la ridondanza. Puoi facilmente aggiungere più server di un certo tipo in seguito.
Verrà utilizzato l’auto-installatore ufficiale di ISPConfig per configurare i server. Debian 10 sarà utilizzato come sistema operativo. La guida è stata testata anche con Ubuntu 20.04.2.
Puoi leggere di più sull’auto-installatore qui.
1. Nota preliminare
Questi saranno gli host che stiamo installando:
host FQDN IP
panel panel.example.com 10.0.64.12
web01 web01.example.com 10.0.64.13
mx1 mx1.example.com 10.0.64.14
mx2 mx2.example.com 10.0.64.15
ns1 ns1.example.com 10.0.64.16
ns2 ns2.example.com 10.0.64.17
webmail webmail.example.com 10.0.64.18Utilizzeremo nomi host, indirizzi IP e intervalli IP di esempio. Assicurati di cambiarli di conseguenza nei tuoi comandi/configurazioni.
Tutti i server sono sulla stessa rete privata ma hanno il proprio IP pubblico. Se i tuoi server non hanno una rete locale condivisa, utilizza i loro indirizzi IPv4 pubblici.
Prima di iniziare l’installazione di un server, imposta un record A e eventuale record AAAA che punta all’indirizzo IP pubblico del tuo server. Ad esempio, se il nome host è panel.example.com e l’IP pubblico è 11.22.33.44, dovresti impostare un record A per panel.example.com che punta a 11.22.33.44. Ogni server dovrebbe avere il proprio IP pubblico e nome host. **
2. Installazione del server master
Accedi come root o esegui
su -per diventare l’utente root sul tuo server prima di procedere. IMPORTANTE: Devi usare ‘su -‘ e non solo ‘su’, altrimenti la tua variabile PATH è impostata in modo errato da Debian.
2.1 Configurare il nome host e gli host
Il nome host del tuo server dovrebbe essere un sottodominio come “panel.example.com”. Non utilizzare un nome di dominio senza una parte di sottodominio come “example.com” come nome host poiché questo causerà problemi in seguito con la tua configurazione mail. Prima, dovresti controllare il nome host in /etc/hosts e cambiarlo quando necessario. La riga dovrebbe essere: “Indirizzo IP - spazio - nome host completo incl. dominio - spazio - parte del sottodominio”. Per il nostro nome host panel.example.com, il file dovrebbe apparire così (alcune righe potrebbero essere diverse, può variare a seconda del fornitore di hosting):
nano /etc/hosts127.0.0.1 localhost.localdomain localhost
# Questa riga dovrebbe essere cambiata su ogni nodo al nome server corretto:
127.0.1.1 panel.example.com panel
# Queste righe sono le stesse su ogni nodo:
10.0.64.12 panel.example.com panel
10.0.64.13 web01.example.com web01
10.0.64.14 mx1.example.com mx1
10.0.64.15 mx2.example.com mx2
10.0.64.16 ns1.example.com ns1
10.0.64.17 ns2.example.com ns2
10.0.64.18 webmail.example.com webmail
# Le seguenti righe sono desiderabili per host compatibili con IPv6
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersCome puoi vedere, abbiamo aggiunto anche i nomi host dei nostri altri server, in modo che possano comunicare sulla rete interna in seguito.
Poi modifica il file /etc/hostname:
nano /etc/hostnameDovrebbe contenere solo la parte del sottodominio, nel nostro caso:
panelInfine, riavvia il server per applicare la modifica:
systemctl rebootAccedi di nuovo e controlla se il nome host è corretto ora con questi comandi:
hostname
hostname -fL’output dovrebbe essere simile a questo:
root@panel:~$ hostname
panel
root@panel:~$ hostname -f
panel.example.comOra possiamo eseguire l’auto-installatore per installare tutti i pacchetti necessari e ISPConfig:
wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=systemDopo un po’, vedrai:
WARNING! Questo script riconfigurerà completamente il tuo server!
Dovrebbe essere eseguito su un server appena installato e tutta la configurazione attuale che hai fatto andrà molto probabilmente persa!
Digita 'yes' se vuoi davvero continuare:Rispondi “yes” e premi invio. L’installatore ora inizierà.
Quando l’installatore è finito, ti mostrerà la password dell’amministratore di ISPConfig e la password root di MySQL in questo modo:
[INFO] La tua password admin di ISPConfig è: 5GvfSSSYsdfdYC
[INFO] La tua password root di MySQL è: kkAkft82d!kafMwqxdtYsAssicurati di annotare queste informazioni, insieme al server per cui sono, poiché ne avrai bisogno in seguito.
2.2 Configurazione degli utenti MySQL remoti per i nostri server slave
Accederemo a MySQL per consentire agli altri server di connettersi al database ISPConfig su questo nodo durante l’installazione, aggiungendo record dell’utente root di MySQL nel database master per ogni nome host e indirizzo IP del server slave.
Nel terminale, esegui
mysql -u root -pInserisci la tua password MySQL e poi esegui i seguenti comandi:
CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;CREATE USER 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;Nei comandi SQL sopra, sostituisci gli indirizzi IP (10.0.64.12 - 10.0.64.18) con gli indirizzi IP dei tuoi server, web01.example.com, mx1.example.com, mx2.example.com, ns1.example.com, ns2.example.com e webmail.example.com con i nomi host dei tuoi server e myrootpassword con la password root desiderata (è buona pratica utilizzare una password diversa per ogni host. Annotale, poiché ne avrai bisogno in seguito quando installerai o aggiornerai i tuoi server slave).
Quando questo è fatto, puoi uscire da MySQL con:
EXIT;Ora puoi accedere a ISPConfig su https://panel.example.com:8080 con il nome utente admin e la password che l’installatore ti ha mostrato.
2.3 Configurazione del firewall
L’ultima cosa da fare è configurare il nostro firewall.
Accedi all’interfaccia di ISPConfig e vai su Sistema -> Firewall. Poi clicca su “Aggiungi nuovo record firewall”.
Per il server del pannello, dobbiamo aprire le seguenti porte:
TCP:
22,80,443,8080,8081Nessuna porta UDP deve essere aperta tramite l’interfaccia.
Apriremo anche la porta 3306, che è utilizzata per MySQL, ma solo dalla nostra rete locale per motivi di sicurezza. Per farlo, esegui il seguente comando dalla CLI, dopo che la modifica dal pannello ISPConfig è stata propagata (quando il punto rosso è scomparso):
ufw allow from 10.0.64.0/24 to any port 3306 proto tcpIl tuo pannello è ora configurato e pronto per l’uso.
Nel prossimo passo, installeremo il server web.
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.