サーバー設定 · 12 min read · Nov 03, 2025

完璧なサーバー - Debian 10 (Buster) と Apache、BIND、Dovecot、PureFTPD、ISPConfig 3.2

このチュートリアルでは、ISPConfig 3.2 のインストールのために Debian 10 サーバー (Apache2、BIND、Dovecot を使用) を準備する方法と、ISPConfig のインストール方法を示します。ウェブホスティングコントロールパネル ISPConfig 3 は、以下のサービスをウェブブラウザを通じて構成することを可能にします: Apache または nginx ウェブサーバー、Postfix メールサーバー、Courier または Dovecot IMAP/POP3 サーバー、MySQL、BIND または MyDNS ネームサーバー、PureFTPd、SpamAssassin、ClamAV など。今回のセットアップでは、Apache (nginx の代わりに)、BIND、および Dovecot をカバーします。

1 前提条件

このチュートリアルでは、ホスト名 server1.example.com と IP アドレス 192.168.0.100、ゲートウェイ 192.168.0.1 を使用します。これらの設定はあなたの環境によって異なる場合があるため、適宜置き換えてください。さらに進む前に、Debian 10 の最小インストールが必要です。これは、ホスティングプロバイダーからの Debian ミニマルイメージであるか、Minimal Debian Server チュートリアルを使用してベースシステムをセットアップすることができます。

以下のすべてのコマンドは root ユーザーとして実行されます。直接 root ユーザーとしてログインするか、通常のユーザーとしてログインしてから次のコマンドを使用して、サーバー上で root ユーザーになります。

su -

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

2 SSH サーバーのインストール (オプション)

システムインストール中に OpenSSH サーバーをインストールしていない場合は、今すぐインストールできます:

apt-get install ssh openssh-server

これ以降は、PuTTY などの SSH クライアントを使用して、ワークステーションから Debian 9 サーバーに接続し、このチュートリアルの残りの手順に従うことができます。

3 シェルテキストエディタのインストール (オプション)

このチュートリアルでは nano テキストエディタを使用します。一部のユーザーは古典的な vi エディタを好むため、ここでは両方のエディタをインストールします。デフォルトの vi プログラムは Debian および Ubuntu で奇妙な動作をするため、これを修正するために vim-nox をインストールします:

apt-get install nano vim-nox

vi が好みのエディタである場合は、以下のコマンドでファイルを編集する際に nano を vi に置き換えてください。

4 ホスト名の設定

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

nano /etc/hosts
127.0.0.1       localhost.localdomain   localhost
192.168.0.100   server1.example.com     server1

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

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

nano /etc/hostname

そこにはサブドメイン部分のみが含まれるべきで、私たちの場合は:

server1

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

systemctl reboot

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

hostname  
hostname -f

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

root@server1:/tmp# hostname  
server1  
root@server1:/tmp# hostname -f  
server1.example.com

5 Debian インストールの更新

まず、/etc/apt/sources.list に buster/updates リポジトリが含まれていることを確認してください (これにより、常に最新のセキュリティ更新が受け取れます)。また、必要なパッケージの一部がメインリポジトリにないため、contrib および non-free リポジトリが有効になっていることを確認してください。

nano /etc/apt/sources.list
deb http://deb.debian.org/debian/ buster main contrib non-free  
deb-src http://deb.debian.org/debian/ buster main contrib non-free  
  
deb http://security.debian.org/debian-security buster/updates main contrib non-free  
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

次に実行します:

apt-get update

apt パッケージデータベースを更新するために

apt-get upgrade

最新の更新をインストールします (もしあれば)。

6. デフォルトシェルの変更

/bin/sh は /bin/dash へのシンボリックリンクですが、/bin/bash が必要です。したがって、次のようにします:

dpkg-reconfigure dash

デフォルトのシステムシェルとして dash を使用しますか (/bin/sh)? <– いいえ

これを行わないと、ISPConfig のインストールが失敗します。

7 システムクロックの同期

システムクロックをインターネット上の NTP ( n etwork t ime p rotocol) サーバーと同期させるのは良い考えです。単に次を実行します:

apt-get -y install ntp

これでシステム時間は常に同期されます。

8 Postfix、Dovecot、MariaDB、rkhunter、および Binutils のインストール

Postfix、Dovecot、MySQL の代替としての MariaDB、rkhunter、および Binutils を単一のコマンドでインストールできます:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

次の質問が表示されます:

一般的なメール構成のタイプ: <– インターネットサイト
システムメール名: <– server1.example.com

MariaDB のインストールを安全にし、テストデータベースを無効にするには、次のコマンドを実行します:

mysql_secure_installation

質問には次のように答えます:

root パスワードを変更しますか? [Y/n] <-- y  
新しいパスワード: <-- 新しい MariaDB root パスワードを入力  
新しいパスワードを再入力: <-- MariaDB root パスワードを繰り返す  
匿名ユーザーを削除しますか? [Y/n] <-- y  
リモートからの root ログインを禁止しますか? [Y/n] <-- y  
テストデータベースとそのアクセスを削除しますか? [Y/n] <-- y  
特権テーブルを再読み込みしますか? [Y/n] <-- y

次に、Postfix で TLS/SSL および送信ポートを開きます:

nano /etc/postfix/master.cf

送信および smtps セクションのコメントを外し、必要に応じて行を追加して、この master.cf ファイルのこのセクションが以下のものと正確に一致するようにします。重要: smtps および送信で始まる行の前の # を削除し、これらの行の後の -o 行だけでなく、これらの行の前の行からも削除してください!

[...]
submission inet n - - - - smtpd  
 -o syslog_name=postfix/submission  
 -o smtpd_tls_security_level=encrypt  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING  
smtps inet n - - - - smtpd  
 -o syslog_name=postfix/smtps  
 -o smtpd_tls_wrappermode=yes  
 -o smtpd_sasl_auth_enable=yes  
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject  
# -o smtpd_reject_unlisted_recipient=no  
# -o smtpd_client_restrictions=$mua_client_restrictions  
# -o smtpd_helo_restrictions=$mua_helo_restrictions  
# -o smtpd_sender_restrictions=$mua_sender_restrictions  
# -o smtpd_recipient_restrictions=  
# -o smtpd_relay_restrictions=permit_sasl_authenticated,reject  
# -o milter_macro_daemon_name=ORIGINATING
[...]

その後、Postfix を再起動します:

systemctl restart postfix

MySQL が localhost だけでなくすべてのインターフェースでリッスンするようにしたいので、/etc/mysql/mariadb.conf.d/50-server.cnf を編集し、bind-address = 127.0.0.1 の行の前に # を追加してコメントアウトします。

nano /etc/mysql/mariadb.conf.d/50-server.cnf
[...]
# skip-networking の代わりに、デフォルトは現在 localhost のみでリッスンすることです。これはより互換性があり、セキュリティが低下することはありません。
#bind-address           = 127.0.0.1  
[...]

MariaDB のパスワード認証方法をネイティブに設定し、後で PHPMyAdmin から root ユーザーとして接続できるようにします:

echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

ファイル /etc/mysql/debian.cnf を編集し、MYSQL / MariaDB root パスワードをそこに 2 回設定します。

nano /etc/mysql/debian.cnf

追加する必要がある MySQL root パスワードは赤で示されています。この例では、パスワードは「howtoforge」です。

# Debian スクリプト用に自動生成されました。触らないでください!  
[client]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
[mysql_upgrade]  
host = localhost  
user = root  
password = howtoforge  
socket = /var/run/mysqld/mysqld.sock  
basedir = /usr

Error in accept: Too many open files ‘ エラーを防ぐために、MariaDB のオープンファイル制限を高く設定します。

エディタでファイル /etc/security/limits.conf を開きます:

nano /etc/security/limits.conf

ファイルの最後に次の行を追加します。

mysql soft nofile 65535  
mysql hard nofile 65535

次に、mkdir コマンドで新しいディレクトリ /etc/systemd/system/mysql.service.d/ を作成します。

mkdir -p /etc/systemd/system/mysql.service.d/

その中に新しいファイルを追加します:

nano /etc/systemd/system/mysql.service.d/limits.conf

次の行をそのファイルに貼り付けます:

[Service]  
LimitNOFILE=infinity

ファイルを保存して nano エディタを閉じます。

次に systemd をリロードし、MariaDB を再起動します:

systemctl daemon-reload  
systemctl restart mariadb

ネットワーキングが有効になっているか確認します。次を実行します:

netstat -tap | grep mysql

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

root@server1:/home/administrator# netstat -tap | grep mysql  
tcp6 0 0 [::]:mysql [::]:* LISTEN 16623/mysqld

9 Amavisd-new、SpamAssassin、および ClamAV のインストール

amavisd-new、SpamAssassin、および ClamAV をインストールするには、次を実行します:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop cabextract p7zip p7zip-full unrar lrzip apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perl libdbd-mysql-perl postgrey

ISPConfig 3 のセットアップでは amavisd を使用し、内部で SpamAssassin フィルタライブラリを読み込むため、RAM を解放するために SpamAssassin を停止できます:

systemctl stop spamassassin  
systemctl disable spamassassin

10 Apache ウェブサーバーと PHP のインストール

Apache2、PHP、FCGI、suExec、Pear、および mcrypt は次のようにインストールできます:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid apache2-suexec-pristine php-pear mcrypt imagemagick libruby libapache2-mod-python php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

次に、次のコマンドを実行して、Apache モジュール suexec、rewrite、ssl、actions、および include (WebDAV を使用する場合は dav、dav_fs、auth_digest も) を有効にします:

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

サーバーが HTTPOXY 脆弱性を通じて攻撃されないように、apache で HTTP_PROXY ヘッダーをグローバルに無効にします。設定ファイル /etc/apache2/conf-available/httpoxy.conf を追加します。

*注意: 脆弱性は httpoxy (「r」なし) と呼ばれ、そのため、これを防ぐために設定を追加するファイルは httpoxy.conf と呼ばれ、ファイル名に「r」はありません。*

nano /etc/apache2/conf-available/httpoxy.conf

次の内容をファイルに貼り付けます:


    RequestHeader unset Proxy early

次に、次のコマンドを実行してモジュールを有効にします:

a2enconf httpoxy  
systemctl restart apache2

11 Let’s Encrypt のインストール

ISPConfig は現在、Let’s Encrypt クライアントとして acme.sh を使用しています。次のコマンドを使用して acme.sh をインストールします:

curl https://get.acme.sh | sh -s

12 Mailman のインストール

ISPConfig を使用すると、Mailman メーリングリストを管理 (作成/変更/削除) できます。この機能を利用したい場合は、次のように Mailman をインストールします:

apt-get install mailman

少なくとも 1 つの言語を選択します。例:

サポートする言語: <-- en (英語)  
不足しているサイトリスト <-- Ok

Mailman を開始する前に、最初のメーリングリスト mailman を作成する必要があります:

newlist mailman
root@server1:~# newlist mailman  
リストを運営する人のメールアドレスを入力してください: <-- 管理者のメールアドレス、例: [email protected]  
初期の mailman パスワード: <-- mailman リストの管理者パスワード  
メーリングリストを作成するには、次の行を /etc/aliases (または同等の) ファイルに追加し、`newaliases` プログラムを実行する必要があります:
  
## mailman メーリングリスト  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"  

mailman の所有者に通知するには Enter を押してください... <-- ENTER  

root@server1:~#

その後、/etc/aliases を開きます…

nano /etc/aliases

… 次の行を追加します:

[...]
## mailman メーリングリスト  
mailman:              "|/var/lib/mailman/mail/mailman post mailman"  
mailman-admin:        "|/var/lib/mailman/mail/mailman admin mailman"  
mailman-bounces:      "|/var/lib/mailman/mail/mailman bounces mailman"  
mailman-confirm:      "|/var/lib/mailman/mail/mailman confirm mailman"  
mailman-join:         "|/var/lib/mailman/mail/mailman join mailman"  
mailman-leave:        "|/var/lib/mailman/mail/mailman leave mailman"  
mailman-owner:        "|/var/lib/mailman/mail/mailman owner mailman"  
mailman-request:      "|/var/lib/mailman/mail/mailman request mailman"  
mailman-subscribe:    "|/var/lib/mailman/mail/mailman subscribe mailman"  
mailman-unsubscribe:  "|/var/lib/mailman/mail/mailman unsubscribe mailman"

次を実行します:

newaliases

そして Postfix を再起動します:

systemctl restart postfix

最後に、Mailman の Apache 設定を有効にする必要があります:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

これにより、すべての Apache vhosts に対して /cgi-bin/mailman/ のエイリアスが定義され、メーリングリストの管理インターフェースには http://server1.example.com/cgi-bin/mailman/admin/ でアクセスでき、メーリングリストのユーザー用のウェブページは http://server1.example.com/cgi-bin/mailman/listinfo/ で見つけることができます。

http://server1.example.com/pipermail ではメーリングリストのアーカイブを見つけることができます。

その後、Apache を再起動します:

systemctl restart apache2

次に、Mailman デーモンを開始します:

systemctl restart mailman

13 PureFTPd と Quota のインストール

PureFTPd と quota は次のコマンドでインストールできます:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

PureFTPd 用の dhparam ファイルを作成します:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

ファイル /etc/default/pure-ftpd-common を編集します…

nano /etc/default/pure-ftpd-common

… スタートモードがスタンドアロンに設定され、VIRTUALCHROOT=true に設定されていることを確認します:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

次に、PureFTPd を設定して FTP および TLS セッションを許可します。FTP は非常に安全でないプロトコルであり、すべてのパスワードとすべてのデータが平文で転送されます。TLS を使用することで、通信全体を暗号化できるため、FTP をはるかに安全にすることができます。

FTP および TLS セッションを許可する場合は、次を実行します:

echo 1 > /etc/pure-ftpd/conf/TLS

TLS を使用するために、SSL 証明書を作成する必要があります。私はそれを /etc/ssl/private/ に作成するため、最初にそのディレクトリを作成します:

mkdir -p /etc/ssl/private/

その後、次のように SSL 証明書を生成できます:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
国名 (2 文字コード) [AU]: <-- あなたの国名を入力してください (例: "DE").  
州または県名 (フルネーム) [Some-State]: <-- あなたの州または県名を入力してください.  
市名 (例: city) []: <-- あなたの市を入力してください.  
組織名 (例: company) [Internet Widgits Pty Ltd]: <-- あなたの組織名を入力してください (例: あなたの会社名).  
組織単位名 (例: section) []: <-- あなたの組織単位名を入力してください (例: "IT 部門").  
共通名 (例: あなたの名前) []: <-- システムの完全修飾ドメイン名を入力してください (例: "server1.example.com").  
メールアドレス []: <-- あなたのメールアドレスを入力してください.

SSL 証明書の権限を変更します:

chmod 600 /etc/ssl/private/pure-ftpd.pem

次に、PureFTPd を再起動します:

systemctl restart pure-ftpd-mysql

/etc/fstab を編集します。私のは次のようになっています (マウントポイント / のパーティションに usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 を追加しました):

nano /etc/fstab
# /etc/fstab: 静的ファイルシステム情報.  
#  
# 'blkid' を使用してデバイスのユニバーサルユニーク識別子を印刷します; これは、UUID= を使用してデバイスを名前付けするより堅牢な方法として使用できます  
# ディスクが追加または削除されても機能します。 fstab(5) を参照してください.  
#  
# <ファイルシステム> <マウントポイント> <タイプ> <オプション> <ダンプ> <パス>  
# / はインストール中に /dev/sda1 にありました  
UUID=45576b38-39e8-4994-b8c1-ea4870e2e614 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# スワップはインストール中に /dev/sda5 にありました  
UUID=8bea0d1e-ec37-4b20-9976-4b7daaa3eb69 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

クォータを有効にするには、次のコマンドを実行します:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 BIND DNS サーバーのインストール

BIND は次のようにインストールできます:

apt-get install bind9 dnsutils

サーバーが仮想マシンの場合、DNSSEC 署名のためのエントロピーを高めるために haveged デーモンをインストールすることを強くお勧めします。非仮想サーバーでも haveged をインストールできますが、問題はありません。

apt-get install haveged

このトピックに関する説明はここにあります。

15 Webalizer、AWStats、および GoAccess のインストール

Webalizer と AWStats は次のようにインストールできます:

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-perl

その後、/etc/cron.d/awstats を開き…

nano /etc/cron.d/awstats

… そのファイルのすべての行をコメントアウトします:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# 静的レポートを生成:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

最新の GoAccess バージョンを GoAccess リポジトリから直接インストールします:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list  
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -  
apt-get update  
apt-get install goaccess

16 Jailkit のインストール

Jailkit は、SSH ユーザーを chroot したい場合にのみ必要です。次のようにインストールできます:

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.20.tar.gz  
tar xvfz jailkit-2.20.tar.gz  
cd jailkit-2.20  
echo 5 > debian/compat  
./debian/rules binary

次のように Jailkit.deb パッケージをインストールできます:

cd ..  
dpkg -i jailkit_2.20-1_*.deb  
rm -rf jailkit-2.20*

17 fail2ban と UFW ファイアウォールのインストール

これはオプションですが推奨されます。なぜなら、ISPConfig モニターがログを表示しようとするからです:

apt-get install fail2ban

PureFTPd と Dovecot を監視するために fail2ban を作成するには、ファイル /etc/fail2ban/jail.local を作成します:

nano /etc/fail2ban/jail.local

次の設定を追加します。

[pure-ftpd]  
enabled = true  
port = ftp  
filter = pure-ftpd  
logpath = /var/log/syslog  
maxretry = 3  
  
[dovecot]  
enabled = true  
filter = dovecot  
logpath = /var/log/mail.log  
maxretry = 5  
  
[postfix-sasl]  
enabled = true  
port = smtp  
filter = postfix[mode=auth]  
logpath = /var/log/mail.log  
maxretry = 3

その後、fail2ban を再起動します:

systemctl restart fail2ban

UFW ファイアウォールをインストールするには、次の apt コマンドを実行します:

apt-get install ufw

18 PHPMyAdmin データベース管理ツールのインストール

Debian 10 以降、PHPMyAdmin はもはや .deb パッケージとして利用できません。したがって、ソースからインストールします。

PHPMyAdmin 用のフォルダを作成します:

mkdir /usr/share/phpmyadmin  
mkdir /etc/phpmyadmin  
mkdir -p /var/lib/phpmyadmin/tmp  
chown -R www-data:www-data /var/lib/phpmyadmin  
touch /etc/phpmyadmin/htpasswd.setup

/tmp ディレクトリに移動し、PHPMyAdmin ソースをダウンロードします:

cd /tmp  
wget https://files.phpmyadmin.net/phpMyAdmin/4.9.0.1/phpMyAdmin-4.9.0.1-all-languages.tar.gz

ダウンロードしたアーカイブファイルを解凍し、ファイルを /usr/share/phpmyadmin フォルダに移動し、/tmp ディレクトリをクリーンアップします。

tar xfz phpMyAdmin-4.9.0.1-all-languages.tar.gz  
mv phpMyAdmin-4.9.0.1-all-languages/* /usr/share/phpmyadmin/  
rm phpMyAdmin-4.9.0.1-all-languages.tar.gz  
rm -rf phpMyAdmin-4.9.0.1-all-languages

提供されたサンプルファイルに基づいて PHPMyAdmin の新しい設定ファイルを作成します:

cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

nano エディタで設定ファイルを開きます:

nano /usr/share/phpmyadmin/config.inc.php

セキュアなパスワード (ブローフィッシュシークレット) を設定します。これは 32 文字の長さでなければなりません:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* COOKIE 認証のためにこれを入力する必要があります! */

私の例のブローフィッシュシークレットを使用せず、自分のものを設定してください!

次に、PHPMyAdmin が一時ファイルを保存するために使用するディレクトリを設定する行を追加します:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

次に、nano エディタで PHPMyAdmin の Apache 設定ファイルを作成します:

nano /etc/apache2/conf-available/phpmyadmin.conf

次の設定をファイルに貼り付けて保存します。

# phpMyAdmin デフォルトの Apache 設定  
  
Alias /phpmyadmin /usr/share/phpmyadmin  
  
  
 Options FollowSymLinks  
 DirectoryIndex index.php  
  
   
 AddType application/x-httpd-php .php  
  
 php_flag magic_quotes_gpc Off  
 php_flag track_vars On  
 php_flag register_globals Off  
 php_value include_path .  
   
  
  
  
# セットアップのための認証  
  
   
 AuthType Basic  
 AuthName "phpMyAdmin Setup"  
 AuthUserFile /etc/phpmyadmin/htpasswd.setup  
   
 Require valid-user  
  
  
# 不要なディレクトリへのウェブアクセスを禁止  
  
 Order Deny,Allow  
 Deny from All  
  
  
 Order Deny,Allow  
 Deny from All  

設定を有効にし、Apache を再起動します。

a2enconf phpmyadmin  
systemctl restart apache2

次のステップでは、phpMyAdmin 設定ストア (データベース) を構成します。

MariaDB に root ユーザーとしてログインします:

mysql -u root -p

MariaDB シェルで、PHPMyAdmin 用の新しいデータベースを作成します:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

次に、新しいユーザーを作成します:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

上記および以下のコマンドで mypassword を安全なパスワードに置き換え、同じパスワードを両方で使用します。次に、ユーザーにこのデータベースへのアクセスを付与し、データベース権限を再読み込みします。

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;  
MariaDB [(none)]> FLUSH PRIVILEGES;  
MariaDB [(none)]> EXIT;

最後に、SQL テーブルをデータベースにロードします:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

要求されたら MariaDB root パスワードを入力します。

今やるべきことは、設定ファイルで phpmyadmin ユーザーの詳細を設定することだけです。再度ファイルを nano エディタで開きます:

nano /usr/share/phpmyadmin/config.inc.php

下にスクロールして、以下の行を見つけて編集します:

/* ストレージを操作するために使用されるユーザー */  
$cfg['Servers'][$i]['controlhost'] = 'localhost';  
$cfg['Servers'][$i]['controlport'] = '';  
$cfg['Servers'][$i]['controluser'] = 'pma';  
$cfg['Servers'][$i]['controlpass'] = 'mypassword';  
  
/* ストレージデータベースとテーブル */  
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';  
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';  
$cfg['Servers'][$i]['relation'] = 'pma__relation';  
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';  
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';  
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';  
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';  
$cfg['Servers'][$i]['history'] = 'pma__history';  
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';  
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';  
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';  
$cfg['Servers'][$i]['recent'] = 'pma__recent';  
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';  
$cfg['Servers'][$i]['users'] = 'pma__users';  
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';  
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';  
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';  
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';  
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';  
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

編集した行を赤でマークしました。mypassword を phpmyadmin ユーザーのために選んだパスワードに置き換えます。行の前の // が削除されていることに注意してください!

19 RoundCube Webmail のインストール (オプション)

この章では、RoundCube ウェブメールクライアントをインストールします。まず、Roundcube 用のデータベースを手動で作成する必要があります。現在、RoundCube Debian インストーラーには自動的にデータベースを作成する問題があります。このコマンドを実行してデータベースを作成します:

echo "CREATE DATABASE roundcube;" | mysql --defaults-file=/etc/mysql/debian.cnf

次に、次のコマンドで RoundCube をインストールします:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

インストーラーは次の質問をします:

roundcube 用のデータベースを dbconfig.common で構成しますか? <-- はい  
roundcube 用の MySQL アプリケーションパスワード: <-- Enter を押す

次に、RoundCube の /etc/roundcube/config.inc.php ファイルを編集し、いくつかの設定を調整します:

nano /etc/roundcube/config.inc.php

default_host を localhost に、smtp_server を設定します。

$config['default_host'] = 'localhost';  
$config['smtp_server'] = 'localhost';  
$config['smtp_port']  = 25;

次に、Apache RoundCube 設定ファイル /etc/apache2/conf-enabled/roundcube.conf を編集します:

nano /etc/apache2/conf-enabled/roundcube.conf

Apache /webmail エイリアスと /roundcube 用のエイリアス行を追加します。ファイルの最初に行を追加できます。注意: /mail をエイリアスとして使用しないでください。そうしないと、ispconfig メールモジュールが機能しなくなります!

Alias /roundcube /var/lib/roundcube  
Alias /webmail /var/lib/roundcube

次に、Apache をリロードします:

systemctl reload apache2

次のように RoundCube にアクセスできます:

http://192.168.0.100/webmail
http://www.example.com/webmail
http://server1.example.com:8080/webmail (ISPConfig をインストールした後、次の章を参照)

ISPConfig と RoundCube Webmail を統合するためのいくつかのプラグインが存在します。ISPConfig RoundCube プラグインのインストール手順については、こちらをご覧ください。

20 ISPConfig 3 のダウンロード

20 ISPConfig の安定版をダウンロード (推奨)

最新リリース版の ISPConfig 3 をインストールするには、次のようにします:

cd /tmp  
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz  
tar xfz ISPConfig-3-stable.tar.gz  
cd ispconfig3_install/install/

21 ISPConfig のインストール

次のステップは、ISPConfig インストーラーを実行することです。

php -q install.php

これにより、ISPConfig 3 インストーラーが開始されます。インストーラーは、Postfix、Dovecot などのすべてのサービスを自動的に構成します。ISPConfig 2 に必要な手動セットアップは必要ありません。

# php -q install.php
  
--------------------------------------------------------------------------------  
_____ ___________ _____ __ _ ____  
|_ _/ ___| ___ \ / __ \ / _(_) /__ \  
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /  
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |  
_| |_\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \  
\___/\____/\_| \____/\___/|_| |_|_| |_\__, | \____/  
__/ |  
|___/  
--------------------------------------------------------------------------------
  
>> 初期設定
オペレーティングシステム: Debian 10.0 (Buster) または互換性のあるもの
これからいくつかの質問が行われるので、注意してください。  
デフォルト値は [ブラケット] 内にあり、 で受け入れることができます。  
インストーラーを停止するには、「quit」と入力してください (引用符なしで)。
  
言語を選択 (en,de) [en]: <-- Enter を押す
インストールモード (standard,expert) [standard]: <-- Enter を押す
サーバーの完全修飾ホスト名 (FQDN)、例: server1.domain.tld [server1.example.com]: <-- Enter を押す
MySQL サーバーのホスト名 [localhost]: <-- Enter を押す
MySQL サーバーのポート [3306]: <-- Enter を押す
MySQL root ユーザー名 [root]: <-- Enter を押す
MySQL root パスワード []: <-- あなたの MySQL root パスワードを入力
作成する MySQL データベース [dbispconfig]: <-- Enter を押す
MySQL 文字セット [utf8]: <-- Enter を押す
Postgrey の構成  
Postfix の構成  
4096 ビット RSA プライベートキーを生成中  
.......................................................................++  
........................................................................................................................................++  
新しいプライベートキーを 'smtpd.key' に書き込んでいます  
-----  
証明書要求に組み込まれる情報を入力するよう求められます。  
入力する内容は、識別名または DN と呼ばれます。  
いくつかのフィールドがありますが、いくつかは空白のままにできます。  
いくつかのフィールドにはデフォルト値があります。  
'.' を入力すると、そのフィールドは空白のままにされます。  
-----  
国名 (2 文字コード) [AU]: <-- 2 文字の国コードを入力  
州または県名 (フルネーム) [Some-State]: <-- 州名を入力  
市名 (例: city) []: <-- あなたの市を入力  
組織名 (例: company) [Internet Widgits Pty Ltd]: <-- 会社名を入力するか、Enter を押します  
組織単位名 (例: section) []: <-- Enter を押す  
共通名 (例: サーバー FQDN またはあなたの名前) []: <-- サーバーのホスト名を入力します。私の場合: server1.example.com  
メールアドレス []: <-- Enter を押す  
Mailman の構成  
Dovecot の構成  
Spamassassin の構成  
Amavisd の構成  
Getmail の構成  
BIND の構成  
Jailkit の構成  
Pureftpd の構成  
Apache の構成  
vlogger の構成  
[INFO] サービス Metronome XMPP サーバーが検出されませんでした  
Ubuntu ファイアウォールの構成  
Fail2ban の構成  
[INFO] サービス OpenVZ が検出されませんでした  
アプリ vhost の構成  
ISPConfig のインストール  
ISPConfig ポート [8080]:
管理者パスワード [admin]:
ISPConfig ウェブインターフェースへの安全な (SSL) 接続が必要ですか (y,n) [y]: <-- Enter を押す
4096 ビットの RSA プライベートキーを生成中  
.......................++  
................................................................................................................................++  
e は 65537 (0x10001)  
証明書要求に組み込まれる情報を入力するよう求められます。  
入力する内容は、識別名または DN と呼ばれます。  
いくつかのフィールドがありますが、いくつかは空白のままにできます。  
いくつかのフィールドにはデフォルト値があります。  
'.' を入力すると、そのフィールドは空白のままにされます。  
-----  
国名 (2 文字コード) [AU]: <-- 2 文字の国コードを入力  
州または県名 (フルネーム) [Some-State]: <-- 州名を入力  
市名 (例: city) []: <-- あなたの市を入力  
組織名 (例: company) [Internet Widgits Pty Ltd]: <-- 会社名を入力するか、Enter を押します  
組織単位名 (例: section) []: <-- Enter を押す  
共通名 (例: サーバー FQDN またはあなたの名前) []: <-- サーバーのホスト名を入力します。私の場合: server1.example.com  
メールアドレス []: <-- Enter を押す
次の 'extra' 属性を入力してください  
証明書要求と共に送信されます  
チャレンジパスワード []: <-- Enter を押す  
オプションの会社名 []: <-- Enter を押す  
RSA キーを書き込み中
  
DBServer の構成  
ISPConfig crontab のインストール  
root 用の crontab はありません  
getmail 用の crontab はありません  
IP アドレスを検出中  
サービスを再起動しています ...  
インストールが完了しました。

インストーラーはすべての基盤となるサービスを自動的に構成するため、手動構成は必要ありません。

その後、http(s)://server1.example.com:8080/ または http(s)://192.168.0.100:8080/ で ISPConfig 3 にアクセスできます (http または https は、インストール中に選択したものに依存します)。ユーザー名 admin とパスワード admin でログインします (初回ログイン後にデフォルトのパスワードを変更する必要があります):

Debian 10 での ISPConfig ログイン

Debian 10 での ISPConfig ダッシュボード

システムは今や使用可能です。

21.1 ISPConfig 3 マニュアル

ISPConfig 3 の使い方を学ぶために、ISPConfig 3 マニュアルをダウンロードすることを強くお勧めします。

300 ページ以上にわたり、ISPConfig の背後にある概念 (管理者、リセラー、クライアント) を説明し、ISPConfig 3 のインストールと更新方法を説明し、ISPConfig のすべてのフォームとフォームフィールドのリファレンスを有効な入力の例と共に含み、ISPConfig 3 の最も一般的なタスクのチュートリアルを提供します。また、サーバーをより安全にする方法を説明し、最後にトラブルシューティングセクションを提供します。

22 このチュートリアルの仮想マシンイメージのダウンロード

このチュートリアルは、VMWare および Virtualbox と互換性のある ovf/ova 形式のすぐに使用できる仮想マシンイメージとして利用可能です。仮想マシンイメージは次のログイン詳細を使用します:

SSH / シェルログイン

ユーザー名: administrator
パスワード: howtoforge

ユーザー名: root
パスワード: howtoforge

ISPConfig ログイン

ユーザー名: admin
パスワード: admin

MySQL ログイン

ユーザー名: root
パスワード: howtoforge

VM の IP は 192.168.0.100 で、/etc/network/interfaces ファイルで変更できます。上記のすべてのパスワードを変更して、仮想マシンを保護してください。

23 リンク

Share: X/Twitter LinkedIn

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

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