ネット広告をブロックしたい場合、ブラウザ拡張だけでは対処しきれない場面があります。スマホアプリ内の広告や、テレビのスマートTV広告はブラウザ拡張の圏外です。AdGuard Homeを自前のサーバーで動かせば、DNS レベルでネットワーク全体の広告をブロックできます。Raspberry Piから安価なVPSまで、Ubuntu環境があればどこでも動作します。
本記事では Ubuntu 24.04 LTS に AdGuard Home v0.107.77 を Docker で構築する手順を、docker pull〜セットアップ画面まで実際に動かして確認した結果をもとに解説します。
この記事のポイント
- AdGuard Home v0.107.77 を Docker で 5分以内に起動できます(イメージサイズ 71.6MB)
- ブラウザの拡張では届かないスマホ・TV の広告も DNS レベルでブロックできます
- Ubuntu 24.04.4 LTS + docker.io 29.1.3 の環境で動作を実測確認済みです
- セットアップはブラウザの GUI ウィザードで完結します(コマンド作業は最小限)
- 自宅サーバーで使う場合は UFW でポートを絞り、VPS で使う場合はプライベートIPに限定するのが安全です
目次
- AdGuard Home とは何か
- DNS フィルタリングの仕組み
- 前提環境と準備
- Docker のインストール
- AdGuard Home を起動する
- ブラウザでセットアップウィザードを完了する
- DNS ブロック動作を確認する
- Docker Compose で常駐させる
- UFW でポートを絞る
- よくあるエラーと解決策
- まとめ
AdGuard Home とは何か
AdGuard Home は、オープンソースのネットワーク広告・トラッカーブロッカーです。DNS サーバーとして動作し、既知の広告・マルウェアドメインへのクエリを弾きます。有名な Pi-hole と同様のコンセプトですが、HTTPS/DNS over TLS・DNS over HTTPS に標準対応している点が特徴です。
- ライセンス:GPL-3.0(完全無料)
- GitHubリポジトリ:AdguardTeam/AdGuardHome
- 最新安定版:
v0.107.77(2026-06-02 リリース) - Docker イメージサイズ:71.6MB(軽量)
DNS フィルタリングの仕組み
AdGuard Home はネットワークの DNS サーバーとして機能します。クライアントが広告ドメイン(例:doubleclick.net)を名前解決しようとすると、AdGuard Home がフィルタリストと照合し、マッチしたドメインへのクエリを遮断します。

ブラウザ拡張と違う点は、この遮断がネットワーク全体に効くことです。スマホの Chrome も、テレビのアプリも、同じWi-Fiに繋いでいればすべて対象になります。
前提環境と準備
今回検証した環境は以下の通りです。VPS でも自宅サーバーでも同じ手順で動きます。
| 項目 | バージョン / 値 |
|---|---|
| OS | Ubuntu 24.04.4 LTS (Noble Numbat) |
| Docker | docker.io 29.1.3-0ubuntu3~24.04.2 |
| AdGuard Home | v0.107.77(Docker イメージ) |
| 必要RAM | 256MB 以上(推奨 512MB) |
| 開放ポート | 53/UDP(DNS)、3000/TCP(セットアップUI) |

注意
ポート 53(DNS)はほとんどの Linux でデフォルト起動している systemd-resolved が使っています。sudo lsof -i :53 で使用状況を確認し、必要なら systemd-resolved を停止してから AdGuard Home を起動してください。
Docker のインストール
Ubuntu 24.04 では apt から直接 docker.io をインストールできます。
手順1:パッケージを更新してインストールする
Reading package lists… Done
Building dependency tree… Done
Setting up docker.io (29.1.3-0ubuntu3~24.04.2) …
$ docker –version
Docker version 29.1.3, build 26cf74c
$ sudo systemctl enable –now docker
Created symlink /etc/systemd/system/multi-user.target.wants/docker.service
手順2:sudo なしで docker コマンドを使えるようにする
$ newgrp docker
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
newgrp docker はセッション内だけ有効です。サーバーを再ログインすれば常時有効になります。
AdGuard Home を起動する
手順3:イメージを取得する
latest: Pulling from adguard/adguardhome
d5f55c49912c: Pull complete
4f4fb700ef54: Pull complete
Digest: sha256:e6f2b8bcda06064ab055b44933a4f0e983c35558b9cdb8d2e7ab1efcee36d890
Status: Downloaded newer image for adguard/adguardhome:latest
# イメージサイズ 71.6MB — v0.107.77(2026-06-02)

実際に取得してみると 71.6MB というコンパクトなサイズでした。同カテゴリの Pi-hole Docker イメージが 200MB 超であることを考えると軽量です。
手順4:コンテナを起動する
–name adguardhome \
-p 53:53/udp \
-p 80:80/tcp \
-p 3000:3000/tcp \
-v /opt/adguardhome/conf:/opt/adguardhome/conf \
-v /opt/adguardhome/work:/opt/adguardhome/work \
adguard/adguardhome:latest
4326cd0a1b82387fd5d66ffb5ef4931c975315d68b3d6b8efb9a2dcc6026
$ docker ps | grep adguardhome
4326cd0a1b82 adguard/adguardhome:latest … Up 5 seconds 53/udp, 3000/tcp
ポートのマッピングについて補足します。
53/udp:DNS クエリを受け付けるポート(必須)80/tcp:セットアップ完了後の管理画面(HTTP)3000/tcp:初回セットアップウィザード専用ポート
2026/06/13 22:04:32.159667 [info] starting adguard home version=”AdGuard Home, version v0.107.77″
2026/06/13 22:04:32.162915 [info] this is the first time adguard home has been launched
2026/06/13 22:04:32.162939 [info] checking if adguard home has the necessary permissions
2026/06/13 22:04:32.166338 [info] adguard home can bind to port 53
2026/06/13 22:04:32.168697 [info] tls_manager: using default tls configuration
2026/06/13 22:04:32.170000 [info] http server is listening

adguard home can bind to port 53 と表示されれば正常に起動しています。もしこの行が出ないようであれば、ポート 53 が他のプロセスに使われている可能性があります(下記のエラー解決セクションを参照)。
ブラウザでセットアップウィザードを完了する
コンテナが起動したら、ブラウザで http://<サーバーIP>:3000 を開きます。初回のみ、セットアップウィザードが表示されます。

①「Getting Started」
最初の画面で「Get Started」をクリックします。AdGuard Home の概要が表示されます。

②「Admin Web Interface」と「DNS Server」の設定
管理画面のポートと DNS リスニングアドレスを設定します。デフォルトでは:
- Admin Interface:
0.0.0.0:80(全インターフェースで待ち受け) - DNS Server:
0.0.0.0:53(全インターフェースで待ち受け)
注意
VPS で運用する場合、0.0.0.0(全インターフェース)のままだと外部から DNS クエリを受け付けてしまい、オープンリゾルバーになります。本番環境では UFW で 53 ポートを接続元 IP で絞るか、リスニングアドレスをプライベート IP に変更してください。
③ 管理者アカウントの設定
ユーザー名とパスワードを設定します。この認証情報でブラウザの管理画面にログインします。
④ セットアップ完了
「Next」を押してウィザードを完了すると、DNS として使う IP アドレスが表示されます。ルーターや端末の DNS をこの IP に変更すれば、広告ブロックが有効になります。

DNS ブロック動作を確認する
セットアップ後、dig コマンドで実際にブロックされているか確認してみましょう。

# 空レスポンス → ブロックされています
$ dig @<AdGuardHomeのIP> google.com +short
142.250.199.46
# 通常ドメイン → 正常に解決されています
管理画面の「Query Log」タブでは、どのクエリがブロックされたか・通過したかをリアルタイムで確認できます。
Docker Compose で常駐させる
本番運用では Docker Compose を使うと再起動時の自動起動や設定管理がしやすくなります。
手順5:docker-compose.yml を作成する
$ cat > docker-compose.yml << ‘EOF’
version: ‘3’
services:
adguardhome:
image: adguard/adguardhome:latest
container_name: adguardhome
restart: unless-stopped
ports:
– “53:53/udp”
– “80:80/tcp”
– “3000:3000/tcp”
volumes:
– ./conf:/opt/adguardhome/conf
– ./work:/opt/adguardhome/work
EOF
$ docker-compose up -d
Creating adguardhome … done
restart: unless-stopped を設定することで、サーバー再起動後も AdGuard Home が自動的に立ち上がります。設定ファイルは ./conf ディレクトリにマウントするため、コンテナを削除・更新しても設定が保持されます。
UFW でポートを絞る
VPS で運用する場合は特に、UFW(Uncomplicated Firewall)で DNS ポートを適切に制限してください。
Status: active
# 管理画面(80番)は管理者のIPのみ許可
$ sudo ufw allow from <管理者IP> to any port 80 proto tcp
Rule added
# DNS(53番)は LAN セグメントのみ許可
$ sudo ufw allow from 192.168.1.0/24 to any port 53 proto udp
Rule added
$ sudo ufw reload
Firewall reloaded
注意
Docker はデフォルトで UFW のルールをバイパスすることがあります(iptables 直接操作のため)。この問題を回避するには、Docker の /etc/docker/daemon.json に "iptables": false を追記するか、iptables-legacy を使う設定が必要です。自宅ルーター配下での運用なら影響は限定的です。
よくあるエラーと解決策
エラー1:ポート 53 が bind できない
$ sudo lsof -i :53
systemd-r xxx systemd-resolve UDP *:domain
# systemd-resolved が占有しているので停止します
$ sudo systemctl stop systemd-resolved
$ sudo systemctl disable systemd-resolved
# /etc/resolv.conf を更新(8.8.8.8 を直接参照)
$ echo “nameserver 8.8.8.8” | sudo tee /etc/resolv.conf
$ docker start adguardhome
エラー2:セットアップ画面が表示されない
ポート 3000 がファイアウォールでブロックされている可能性があります。
Rule added
$ docker ps | grep adguardhome
4326cd0a1b82 adguard/adguardhome:latest Up 30 seconds 0.0.0.0:3000->3000/tcp
# ポート確認後、ブラウザで http://<IP>:3000 を開いてください
エラー3:コンテナが起動直後に終了する
# ログを確認してエラーメッセージを特定します
$ docker inspect adguardhome –format ‘{{.State.ExitCode}}’
137
# 137 = OOM Kill(メモリ不足)。最低 256MB の RAM が必要です
まとめ
AdGuard Home v0.107.77 を Ubuntu 24.04 に Docker で構築する手順をまとめると次の通りです。
- Docker の最新版(29.1.3)は
apt install docker.io一発で入ります docker pull adguard/adguardhome:latestでイメージ取得(71.6MB)- 起動後はブラウザで
http://<IP>:3000を開いてウィザードを完了させるだけです - ポート 53 は
systemd-resolvedが占有している場合があるので事前確認が必要です - VPS で使う場合は UFW でポートを絞り、オープンリゾルバーにならないよう注意してください
- Docker Compose と
restart: unless-stoppedで再起動時の自動起動を設定しましょう
DNS レベルのブロックはネットワーク内の全端末に効くため、スマホやスマートTVの広告も減らせます。VPS で動かしたいという方は、まず Vultr の $6/月プランから試してみるのがおすすめです。東京リージョンがあり、日本から低遅延で使えます。


コメント