Dockerを使ってAdGuardHomeをインストールする ついでにTailscale上で広告ブロックできるようにする

たくさん失敗した記録です。

失敗

DockerHubのAdGuardHomeのページの案内に従って試みる。

sudo docker pull adguard/adguardhome
sudo docker run --name adguardhome\
    --restart unless-stopped\
    -v /home/<username>/adguardhome/work:/opt/adguardhome/work\
    -v /home/<username>/adguardhome/conf:/opt/adguardhome/conf\
    -p 53:53/tcp -p 53:53/udp\
    -p 67:67/udp -p 68:68/udp\
    -p 80:80/tcp -p 443:443/tcp -p 443:443/udp -p 3000:3000/tcp\
    -p 853:853/tcp\
    -p 784:784/udp -p 853:853/udp -p 8853:8853/udp\
    -p 5443:5443/tcp -p 5443:5443/udp\
    -d adguard/adguardhome -u <uid>

次のエラーメッセージが出て失敗

Error starting userland proxy: listen tcp4 0.0.0.0:443: bind: address already in use

Portainerでデプロイしようとしてもdeployment error - request failed with status code 500が出てしまう。(これもポートがらみのエラーコードらしい)

Port53の場合のエラーの回避方法はFAQにあった。

Port443を何が使っているか確かめる。

sudo lsof -i :443

Tailscaleが使っていた。多分VaultwardenのHTTPS化あたりが影響しているのだろう。
443はDNS-over-HTTPSサーバーとして使う場合は追加しろとDockerHubのページには書いてあるので、443を無視してもう一度docker runする。
53番でもエラーが出たので上記FAQに沿って対処する。

sudo mkdir -p /etc/systemd/resolved.conf.d
sudo nano /etc/systemd/resolved.conf.d/adguardhome.conf

adguardhome.confの内容は以下の通り

[Resolve]
DNS=127.0.0.1
DNSStubListener=no
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved

lsofで53番が使われていないことを確認して終了。

デプロイ

-u <uid>を指定するとなぜか管理画面に繋がらない。

sudo docker run --name adguardhome\
    --restart unless-stopped\
    -v /home/<username>/adguardhome/work:/opt/adguardhome/work\
    -v /home/<username>/adguardhome/conf:/opt/adguardhome/conf\
    -p 53:53/tcp -p 53:53/udp\
    -p 67:67/udp -p 68:68/udp\
    -p 80:80/tcp -p 3000:3000/tcp\
    -d adguard/adguardhome

Docker networkがbridgeになっているのでhostにしたい。docker run --network hostを試すがうまくいかない

Portainerでデプロイする際にhostネットワークを指定したらうまくいった。

Volumeをあらかじめ作っておく

Dockerは何度失敗しても気にしなくていいのがよい。

Tailscaleで広告ブロックできるようにする

AdminConsoleからDNSページに行き、NameserversのAdd nameserverでCustomを選択、AdGuardHomeをインストールしたサーバーのTailnet上のIPアドレスを指定。Override local DNSをオンにする。


設定前


設定後 広告が消えている

上流DNSやフィルタの設定

上流DNSはAdGuardの公開している既知のDNSプロバイダー一覧から選ぶとよい。

DNSフィルタについてはFirebogのリストがある。

日本語関係のフィルタリストについてはなんJ AdGuard部が一番詳しくまとまっている。

DNSのセキュリティについてはCloudflareのページで確認ができる。

参考にした記事


この記事が気に入ったらサポートをしてみませんか?