【2025年版】Ubuntu 24 ServerにAdGuard Homeを導入し、CertbotでSSL化と自動更新を設定する完全ガイド
この記事では、Ubuntu 24 ServerにクリーンインストールしたAdGuard Homeの管理画面を、Let's Encryptの証明書を使ってSSL化(HTTPS化)し、さらにその証明書を完全に自動で更新し続けるための設定手順を、誰でも再現できるように詳しく解説します。
1. はじめに:前提条件
このガイドを進めるにあたり、以下の環境が整っていることを前提とします。
- Ubuntu 24 Serverがインストールされ、SSHでアクセスできる状態。
- 独自ドメインを取得済みであること。(例:
adguard.your-domain.com
) - 上記ドメインのAレコード(またはAAAAレコード)が、お使いのサーバーのグローバルIPアドレスを指すように設定済みであること。
- ルーター等で、ポート80(TCP)とポート443(TCP)がサーバーのローカルIPアドレスに転送(ポートフォワーディング)されていること。
2. Step 1: AdGuard Homeのインストール
まず、AdGuard Homeをサーバーにインストールします。公式サイトで推奨されている以下のコマンドを実行するのが最も簡単です。
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s
インストールが完了すると、AdGuard Homeの初期設定を行うためのURLが表示されます。ブラウザで http://<サーバーのIPアドレス>:3000
にアクセスし、画面の指示に従って管理画面のユーザー名とパスワードを設定してください。
[情報] 初期設定が完了すると、AdGuard Homeの管理画面はポート80で、DNSサーバーはポート53で待ち受け状態になります。
3. Step 2: Certbotのインストール
次に、Let's Encryptの証明書を管理するためのクライアント「Certbot」をインストールします。Ubuntu 24ではsnapパッケージを利用するのが標準的です。
# snapのコアパッケージを最新に
sudo snap install core; sudo snap refresh core
# Certbotをインストール
sudo snap install --classic certbot
# certbotコマンドをどこからでも使えるようにシンボリックリンクを作成
sudo ln -s /snap/bin/certbot /usr/bin/certbot
4. Step 3: 証明書の取得と自動更新の設定(最重要)
ここがこのガイドの核心部分です。AdGuard Homeが管理画面のためにポート80を使用しているため、Certbotが証明書を更新しようとするとポートの競合が発生します。これを解決するため、証明書の更新処理の直前にAdGuard Homeを一時停止し、処理が終わったら再開させる「フック」を仕込みます。
以下のコマンド一発で、証明書の新規取得と、自動更新のためのフック設定が同時に完了します。
[注意] 以下のコマンドの adguard.your-domain.com
の部分は、ご自身のドメイン名に書き換えてください。
sudo certbot certonly --standalone -d adguard.your-domain.com \
--pre-hook "systemctl stop AdGuardHome.service" \
--post-hook "systemctl start AdGuardHome.service"
コマンドの解説
certonly --standalone
: WebサーバーがなくてもCertbot単体で証明書を取得するモード。-d adguard.your-domain.com
: 証明書を発行するドメイン名を指定。--pre-hook "..."
: 証明書処理の前に実行するコマンド。AdGuard Homeを停止させます。--post-hook "..."
: 証明書処理の後に実行するコマンド。AdGuard Homeを再開させます。
このコマンドが成功すると、Certbotはフックの設定を記憶します。そのため、タイマーによって将来certbot renew
が実行される際も、自動でAdGuard Homeの停止と再開が行われ、更新がスムーズに進みます。
5. Step 4: AdGuard Homeへの証明書設定
証明書が取得できたら、AdGuard Homeにその証明書を使うよう設定します。ブラウザでAdGuard Homeの管理画面にログインしてください。
- メニューから「設定」→「暗号化設定」に進みます。
- 「暗号化を有効にする」にチェックを入れます。
- 「サーバー名」に、証明書を取得したドメイン名(例:
adguard.your-domain.com
)が入力されていることを確認します。 - 「証明書のソース」で「証明書のパスを設定する」を選択します。
- 以下のパスをそれぞれコピー&ペーストします。(ドメイン名はご自身のものに読み替えてください)
- 証明書のパス:
/etc/letsencrypt/live/adguard.your-domain.com/fullchain.pem
- 秘密鍵のパス:
/etc/letsencrypt/live/adguard.your-domain.com/privkey.pem
- 証明書のパス:
- 画面下部の「構成を保存する」ボタンをクリックします。
保存後、AdGuard Homeは自動的に再起動し、設定が反映されます。
6. Step 5: 動作確認と最終テスト
すべての設定が完了したら、最後に動作確認を行います。
A. HTTPSアクセスの確認
ブラウザで https://adguard.your-domain.com
にアクセスしてみてください。ブラウザのアドレスバーに鍵マークが表示され、安全な接続として管理画面が開けば成功です。
B. 自動更新のリハーサル
次に、証明書の自動更新プロセスが正しく機能するかをテストします。以下の「お試し実行」コマンドを実行します。
sudo certbot renew --dry-run
このコマンドは、実際の証明書には影響を与えずに、更新プロセス(フックの実行を含む)全体をシミュレーションします。実行後、エラーが出ずに以下のようなメッセージが表示されれば、テストは成功です。
Congratulations, all simulated renewals succeeded!
この確認が取れれば、将来の証明書更新も全自動で行われることが保証されます。
7. まとめ
お疲れ様でした。これで、セキュアなHTTPSでアクセスでき、かつ証明書の有効期限を気にすることなく運用できるAdGuard Home環境が完成しました。
ポート80の競合という一見すると厄介な問題も、Certbotのフック機能を使うことで、非常にスマートに解決できます。この記事が、あなたの快適な自宅サーバーライフの一助となれば幸いです。
コメント
コメントを投稿