前回の続き、導入したAdGuardの管理画面を常時SSL化していく作業です。
自宅内NWに立てることを前提としていても
「SSL化しておかないと寝覚めが悪い」
という性分のため、これを実施します。
環境
- Ubuntu 26.04
- Apache 2.4
- AdGuard導入済み(ポートを8080に変更)
そもそもの問題として
「なんでリバースプロキシーなのにnginxじゃあないのか」
という方がいるかと思いますが、
「apacheでもこの設定は十分可能」
という例示のためです。
前提
- AdGuardの管理画面に紐付くDNS設定が完了している。
- そのドメインに即した証明書がある。
さっくりとした手順
- Apacheのプロキシモジュールを有効化します。
- Apacheのログディレクトリを作成します。
- AdGuard管理画面用のバーチャルサイトを作成します。
- ログのローテーション設定を行います。
- 設定を反映させます。
- 動作を確認します。
Apacheのプロキシモジュールを有効化する
まずはApacheがポート:8080を待ち受けてリバースプロキシサーバーとして動けるように、必要なモジュールを有効化します。
sudo a2enmod proxy
sudo a2enmod proxy_http
sudo a2enmod rewrite
sudo a2enmod ssl
有効化したら、一度Apacheを再起動しておきます。
sudo systemctl restart apache2
ログディレクトリの作成
この段階でログディレクトリを作成する理由は
「この段階でやっておかないと忘れるから」
に尽きます。ログは障害の切り分けとして極めて重要です。特にAdGuardは自宅内のNWをほぼ司ります。このときに何か異常が無いかを調べるためにも今の段階で作ります。
- ログディレクトリの作成
sudo mkdir /var/log/adguard
※名前は自分が管理しやすい者に変更してください。
- ログディレクトリの所有者変更
sudo chown -R www-data:www-data /var/log/adguard
これは筆者の好みの問題です。(ログローテートの際にwww-dataが参照できるようにするため)
- ログディレクトリの所有者変更確認
ls -ld /var/log/adguard
所有者とグループがwww-dataを確認します。
管理画面用のバーチャルサイト設定ファイル作成
/etc/apache2/sites-available 内に、adguard.conf等の分かりやすい名前のファイルを管理者権限で作成します。
※ドメイン名は確実に自分の環境に合わせてください
<VirtualHost *:80>
ServerName adguard.example.com
# HTTPでアクセスされた場合は自動的にHTTPSへリダイレクト
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</VirtualHost>
<VirtualHost *:443>
ServerName adguard.example.com
#ログ設定
ErrorLog /var/log/adguard/adguard_ssl_error.log
CustomLog /var/log/adguard/adguard_ssl_access.log combined
# SSL設定
SSLEngine on
SSLCertificateFile /etc/certs/あなたの証明書.crt
SSLCertificateKeyFile /etc/private/あなたの秘密鍵.key
# 中間証明書(CA Bundle)がある場合は、下の行のコメントアウトを解除してパスを指定してください
# SSLCertificateChainFile /etc/certs/中間証明書.crt
# プロキシ設定(Apacheが受けて後ろのAdGuardに流す)
ProxyPreserveHost On
ProxyPass / http://127.0.0.1:8080/
ProxyPassReverse / http://127.0.0.1:8080/
</VirtualHost>
ログローテーションファイルの作成
/etc/logrotate.d/配下にadguard等の名前をつけて、以下の通り設定します。
※ログディレクトリは設定したディレクトリです。以下は一例なので好みに合わせて設定ください。
/var/log/adguard/*.log {
daily
missingok
rotate 10
compress
copytruncate
notifempty
su www-data www-data
}
設定反映
- バーチャルサイト設定ファイルの登録
sudo a2ensite adguard.conf
※作成したファイル名です
- ファイルの整合性確認
sudo apache2ctl configtest
Syntax OKを確認します。
- Apache再起動
sudo systemctl restart apache2.service
- Apache再起動確認
systemctl status apache2.service
active(running)を確認します。
動作確認
自分のブラウザで
など、設定したURLにアクセスします。
- 設定した管理画面にドメインだけで入れること(ポート番号の付与などが必要ないこと)
- SSLで通信できること
を確認します。
ログの所有者変更
これは、筆者の設定の問題。www-dataにしている人向け。
なぜなら、サイトの設定反映後、基本的に/var/log/adguard配下で作成されたログはroot権限で作成されます。しかし、ログローテーションはwww-dataでローテーションするようになっています。これを合わせます。
sudo chown www-data:www-data /var/log/adguard/*.log
以上で「AdGuardを本格的に運用する準備」が整いました。