サーバー設定 · 3 min read · Sep 08, 2025

ISPConfigの完璧なマルチサーバーセットアップ(Ubuntu 20.04およびDebian 10)

このチュートリアルでは、パネル、ウェブ、DNS、メール、ウェブメール用の専用サーバーを使用して、独自のISPConfig 3マルチサーバーセットアップをインストールする手順を説明します。DNSサーバーとメールサーバーには冗長性のためにミラーサーバーがあります。後で特定のタイプのサーバーを簡単に追加できます。

ISPConfigの公式自動インストーラーを使用してサーバーをセットアップします。オペレーティングシステムにはDebian 10を使用します。このガイドはUbuntu 20.04.2でもテストされています。

自動インストーラーの詳細については、こちらをお読みください。

1. 予備ノート

これがインストールするホストです:

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.18

例のホスト名、IPアドレス、およびIP範囲を使用します。コマンド/設定でそれに応じて変更してください。

すべてのサーバーは同じプライベートネットワーク上にありますが、それぞれ独自のパブリックIPを持っています。サーバーが共有ローカルネットワークを持っていない場合は、パブリックIPv4アドレスを使用してください。

サーバーのインストールを開始する前に、サーバーのパブリックIPアドレスを指すAおよび必要に応じてAAAAレコードを設定してください。たとえば、ホスト名がpanel.example.comでパブリックIPが11.22.33.44の場合、panel.example.comが11.22.33.44を指すAレコードを設定する必要があります。すべてのサーバーは独自のパブリックIPとホスト名を持つ必要があります。 **

2. マスターサーバーのインストール

rootとしてログインするか、次のコマンドを実行して

su -

サーバーでrootユーザーになります。重要:’su -‘を使用し、単に’su’を使用しないでください。そうしないと、DebianによってPATH変数が誤って設定されます。

2.1 ホスト名とホストの設定

サーバーのホスト名は「panel.example.com」のようなサブドメインである必要があります。「example.com」のようなサブドメイン部分のないドメイン名をホスト名として使用しないでください。そうしないと、後でメール設定に問題が発生します。まず、/etc/hostsでホスト名を確認し、必要に応じて変更してください。行は次のようになります:「IPアドレス - スペース - ドメインを含む完全なホスト名 - スペース - サブドメイン部分」。ホスト名panel.example.comの場合、ファイルは次のようになります(いくつかの行は異なる場合があります。ホスティングプロバイダーによって異なることがあります):

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# この行はすべてのノードで正しいサーバー名に変更する必要があります:  
127.0.1.1 panel.example.com panel  
# これらの行はすべてのノードで同じです:
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

# 次の行はIPv6対応ホストにとって望ましいです
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

ご覧のとおり、他のサーバーのホスト名も追加しましたので、後で内部ネットワークを介して通信できます。

次に、/etc/hostnameファイルを編集します:

nano /etc/hostname

それにはサブドメイン部分のみが含まれている必要があります。私たちの場合:

panel

最後に、変更を適用するためにサーバーを再起動します:

systemctl reboot

再度ログインし、次のコマンドでホスト名が正しいかどうかを確認します:

hostname  
hostname -f

出力は次のようになります:

root@panel:~$ hostname  
panel  
root@panel:~$ hostname -f  
panel.example.com

これで、必要なすべてのパッケージとISPConfigをインストールするために自動インストーラーを実行できます:

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=system

しばらくすると、次のように表示されます:

WARNING! このスクリプトはサーバー全体を再構成します!  
これは新しくインストールされたサーバーで実行する必要があり、現在行ったすべての設定はおそらく失われます!  
本当に続行したい場合は「yes」と入力してください:

「yes」と答えてEnterを押します。インストーラーが開始されます。

インストーラーが完了すると、次のようにISPConfig管理者とMySQLルートパスワードが表示されます:

[INFO] あなたのISPConfig管理者パスワードは:5GvfSSSYsdfdYC  
[INFO] あなたのMySQLルートパスワードは:kkAkft82d!kafMwqxdtYs

これらの情報をメモしておき、どのサーバーに対するものかを記録してください。後で必要になります。

2.2 スレーブサーバー用のリモートMySQLユーザーの設定

他のサーバーがインストール中にこのノードのISPConfigデータベースに接続できるようにするために、MySQLにログインして、マスターデータベースに各スレーブサーバーのホスト名とIPアドレスのMySQLルートユーザーのレコードを追加します。

ターミナルで次のコマンドを実行します:

mysql -u root -p

MySQLパスワードを入力し、次のコマンドを実行します:

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 ;

上記のSQLコマンドでは、IPアドレス(10.0.64.12 - 10.0.64.18)をサーバーのIPアドレスに、web01.example.com、mx1.example.com、mx2.example.com、ns1.example.com、ns2.example.com、webmail.example.comをサーバーのホスト名に、myrootpasswordを希望するルートパスワードに置き換えます(各ホストに異なるパスワードを使用することは良い習慣です。メモしておいてください。スレーブサーバーをインストールまたは更新する際に必要になります)。

これが完了したら、次のコマンドでMySQLを終了できます:

EXIT;

これで、https://panel.example.com:8080にadminというユーザー名とインストーラーが表示したパスワードでISPConfigにログインできます。

2.3 ファイアウォールの設定

最後に、ファイアウォールを設定する必要があります。

ISPConfig UIにログインし、システム -> ファイアウォールに移動します。次に、「新しいファイアウォールレコードを追加」をクリックします。

パネルサーバーの場合、次のポートを開く必要があります:

TCP:

22,80,443,8080,8081

UIを介して開く必要のあるUDPポートはありません。

また、MySQLに使用されるポート3306も開きますが、セキュリティ上の理由からローカルネットワークからのみ開きます。そのためには、ISPConfigパネルからの変更が伝播した後(赤い点が消えたとき)に、CLIから次のコマンドを実行します:

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp

これで、パネルが設定され、使用する準備が整いました。

次のステップでは、ウェブサーバーをインストールします。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。