Loading...

2023-12-08(金) 15:00

🍺 UbuntuにAdGuard Homeをインストールする

Ubuntu
広告ブロック機能やDNSサーバーとして使えるAdGuard HomeをUbuntuにインストールする手順について解説します。

目次

前提と注意事項

この記事では以下を前提としています。

  • Ubuntu22.04
  • AdGuard Home についての詳しい解説はありません。

この記事のゴール

AdGuard Home を Ubuntu にインストールして、ブラウザから AdGuard Home のダッシュボードを開くところまでがこの記事のゴールです。
AdGuard Home では、以下のようにダッシュボードにブロックした広告や DNS クエリの簡単な統計情報や、アクセス元端末の IP アドレスなどを確認できます。

AdGuard Homeのダッシュボード

以下が AdGuard Home の公式サイトとリポジトリのリンクになります。

AdGuard Home

AdGuard Home is a network-wide software for blocking ads & tracking.

adguard.com

AdGuard Home

Privacy protection center for you and your devices

github.com

AdGuard Home をインストールする

公式リポジトリに記載されている手順に従い、以下を実行します。以下はインストール用のスクリプトを取得して実行しています。

ターミナル
$ wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

実行すると以下のようにインストールが開始されますが、途中で root 権限の使用のためパスワードを入力するよう求められます。

ターミナル
$ wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
2023-12-07 15:12:29 URL:https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh [13133/13133] -> "-" [1]
starting AdGuard Home installation script
channel: release
operating system: linux
cpu type: arm64
AdGuard Home will be installed into /opt/AdGuardHome
checking tar
note that AdGuard Home requires root privileges to install using this script
restarting with root privileges
[sudo] password for username:

パスワードを入力してインストールを継続すると以下のように表示されてインストールが完了します。

ターミナル
$ wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
 
# 途中省略
 
2023/11/07 15:12:55 [info] go to http://[sa19::w03q:23ff:fe61:12eb%veth671dd99]:3000
2023/11/07 15:12:55 [info] service: action install has been done successfully on linux-systemd
AdGuard Home is now installed and running
you can control the service status with the following commands:
sudo /opt/AdGuardHome/AdGuardHome -s start|stop|restart|status|install|uninstall

以上でインストールが完了し、また同時にすでに AdGuar Home が起動している状態になります。次にブラウザから AdGuard Home にアクセスして設定などを行います。

AdGuard Home のダッシュボードにアクセスする

適当なブラウザを開いてhttp://AdGuard Homeをインストールした端末のIP:3000にアクセスしてみると、以下のように表示されます。AdGuard Home をインストールした端末の IP アドレスが192.168.0.1の場合は、http://192.168.0.1:3000でアクセスできます。

AdGuard HomeのWelcom画面

Get Startedをクリックすると以下のように表示されます。

AdGuard Homeの初期設定画面

上記では、AdGuard Home が DNS サーバとして Listen するインターフェースの指定になります。ここでは、All interfacesのままとして使用します。 同じページ内には以下のように DNS サーバの設定項目もあります。以下の画像を見て分かる通り、validating ports: listen tcp 0.0.0.0:53: bind: address already in useというエラーが表示されています。

AdGuard HomeのDNSサーバ設定画面

このエラーは、AdGuard Home が使いたい 53 番のポートがすでに他のサービスによって使われているため使用できないという内容になります。
従って、53 番のポートを使用しているサービスを停止するか、別のポートを使用する必要があります。ここでは、53 番のポートを使用しているサービスを確認して停止します。 なお、DNS サーバーが使用するポートです。

53 番ポートを使っている他のサービスを停止する

53 番ポートを使用しているサービスを停止する手順は公式 Wikiにある手順に従いました。 以下のようにどのサービスが 53 番を使用しているか確認します。

lsofコマンドで53番ポートを使用しているサービスを確認する
$ sudo lsof -i :53

実行結果は以下です。

ターミナル
# sudo lsof -i :53
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 841 systemd-resolve   13u  IPv4  21423      0t0  UDP localhost:domain
systemd-r 841 systemd-resolve   14u  IPv4  21424      0t0  TCP localhost:domain (LISTEN)

上記から、systemd-resolvedというサービスが 53 番を使用していることが分かります。systemd-resolvedは、Ubuntu ではデフォルトで使われている DNS クライアントになります。ここでは、これを無効化して AdGuard Home に 53 番ポートを使用させます。


そのために以下を実行してまず/etc/systemd/resolved.conf.dディレクトリを作成し(すでに存在する場合はそれを使います。)、その中にadguardhome.confというファイルを作成します。 ここでは全てroot権限で行います。

ターミナル
$ sudo su -
# cd /etc/systemd/
# mkdir resolved.conf.d
# cd resolved.conf.d
# vi adguardhome.conf

/etc/systemd/resolved.conf.d/adguardhome.confの中身は以下のようにします。

/etc/systemd/resolved.conf.d/adguardhome.conf
[Resolve]
DNS=127.0.0.1
DNSStubListener=no

以下を実行してresolv.confを有効化します。

ターミナル
$ sudo mv /etc/resolv.conf /etc/resolv.conf.backup
$ sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

以下を実行して DNS クライアントを再起動します。

Terminal
$ sudo systemctl reload-or-restart systemd-resolved

再度 53 番ポートを使用しているサービスを確認すると今度は表示されないはずです。

ターミナル
$ sudo lsof -i :53

これで 53 番ポートを開放することができました。

AdGuard Home の初期設定を完了する

一度初期設定画面をリロードすると、53 番を使用しているサービスがない状態だとエラーが消えていると思います。Nextをクリックして進みます。

53番ポートが空いている場合

AdGuard Home のダッシュボードにアクセスする管理ユーザーの設定フォームが表示されるので好きなユーザー名とパスワードを入力してNextをクリックします。

AdGuard Homeのユーザー設定画面

以下のように各端末の DNS サーバーを AdGuard Home に設定するように表示されます。ここでは、Nextをクリックして進みます。

AdGuard Homeのガイド画面1 AdGuard Homeのガイド画面2

以下のように表示されて初期設定が完了します。Open Dashboardでダッシュボードへ移動します。

AdGuard Homeの設定完了画面

ログイン画面表示されるので、先ほど設定した管理ユーザーのアカウントでログインします。

AdGuard Homeのログイン画面

ログインすると以下のようなダッシュボードが表示されます。

AdGuard Homeのダッシュボード

以上で完了です。

AdGuard Home を停止したい場合

以下のコマンドを実行することで AdGuard Home を停止できます。

停止
$ sudo /opt/AdGuardHome/AdGuardHome -s stop

また、ステータスを確認したい場合は以下です。

ステータス確認
$ sudo /opt/AdGuardHome/AdGuardHome -s stop

その他以下のコマンドが使用できます。

他のコマンド
# 再起動
$ sudo /opt/AdGuardHome/AdGuardHome -s restart
 
# アンインストール
$ sudo /opt/AdGuardHome/AdGuardHome -s uninstall

あとはルーターや WiFi のアクセスポイントなど、DNS サーバの設定を管理している端末で DNS サーバとして AdGuard Home が動いている端末の IP アドレスを設定すれば、同じネットワーク内の端末は名前解決のために AdGuard Home を使うことになり、それによって広告ブロックや DNS サーバを利用することができます。

Tailscale で使う場合

Tailscale で使う場合は、Tailscale の設定画面から DNS サーバーの設定を行うことができます。

TailscaleのDNS設定画面

上記のように、DNSのページでAdd nameserverをクリックして AdGuard Home が動いている端末の Tailscale 上の IP アドレスを指定します。
また、Override local DNSにチェックを入れると、同じ Tailscale ネットワークに参加している全ての端末の全てのトラフィックが AdGuard Home を経由するようになります。

まとめ

AdGuard Home を Ubuntu にインストールする手順を解説しました。インストール自体も非常に簡単で初期設定を完了すればすぐに使い始めることができます。