🧑⚕️
ミニPCでマルチサーバー構築 [AdGuard Homeコンテナ]
ミニPCでマルチサーバー構築シリーズのAdGuard Homeコンテナ構築の記録メモです。
シリーズ
- N100搭載ミニPCでマルチサーバーの構想と構築準備
- ミニPCでマルチサーバー構築 [OS等インストール]
- ミニPCでマルチサーバー構築 [Sambaコンテナ]
- ミニPCでマルチサーバー構築 [PostgreSQLコンテナ]
- ミニPCでマルチサーバー構築 [Nginxコンテナ]
- ミニPCでマルチサーバー構築 [Immichコンテナ]
- ミニPCでマルチサーバー構築 [VaultwardenコンテナとTailscale]
- ミニPCでマルチサーバー構築 [AdGuard Homeコンテナ] この記事
- ミニPCでマルチサーバー構築 [GUI環境整備]
簡単な要件
- セルフホスト可能
- DNSフィルタリングができる
- DNSキャッシュが利用可能
- DHCPは使用しない
検討事項とコンテナ化
- 記事も多くあるので比較検討はせずAdGuard Homeに決定
- Webサイトの記事を見てやってみるか感が出たため
- 公式のDocker imageが存在するためそれを使用する
Docker Compose周り作成
ディレクトリ構成
$ tree .
.
├── adgrd
│ └── conf
│ └── AdGuardHome.yaml
└── compose.yaml
compose.yaml
compose.yaml
services:
adgrd:
image: adguard/adguardhome:latest
restart: unless-stopped
ports:
- "53:53/tcp"
- "53:53/udp"
- "853:853/tcp"
- "8080:8080/tcp"
- "3000:3000/tcp"
environment:
- TZ=Asia/Tokyo
volumes:
- /srv/adgrd/work:/opt/adguardhome/work
- ./adgrd/conf:/opt/adguardhome/conf
- /var/log/adgrd:/var/log/adgrd
networks:
- adgnet
networks:
adgnet:
設定
実際の設定ファイル
- コンテナ内の位置:
/opt/adguardhome/conf/AdGuardHome.yaml
AdGuardHome.yaml
AdGuardHome.yaml
http:
pprof:
port: 6060
enabled: false
address: 0.0.0.0:8080
session_ttl: 720h
users:
- name: user1
password: [password_hash]
auth_attempts: 5
block_auth_min: 15
http_proxy: ""
language: ""
theme: auto
dns:
bind_hosts:
- 0.0.0.0
port: 53
anonymize_client_ip: false
ratelimit: 20
ratelimit_subnet_len_ipv4: 24
ratelimit_subnet_len_ipv6: 56
ratelimit_whitelist: []
refuse_any: true
upstream_dns:
- tls://dns.google:853
- tls://one.one.one.one:853
- tls://dns.quad9.net
- https://dns10.quad9.net/dns-query
- https://doh.opendns.com/dns-query
upstream_dns_file: ""
bootstrap_dns:
- 1.1.1.1
- 1.0.0.1
- 2606:4700:4700::1111
- 2606:4700:4700::1001
- 8.8.8.8
- 8.8.4.4
- 2001:4860:4860::8888
- 2001:4860:4860::8844
- 9.9.9.10
- 149.112.112.10
- 2620:fe::10
- 2620:fe::fe:10
fallback_dns: []
upstream_mode: parallel
fastest_timeout: 1s
allowed_clients: []
disallowed_clients: []
blocked_hosts:
- version.bind
- id.server
- hostname.bind
trusted_proxies:
- 127.0.0.0/8
- ::1/128
cache_size: 4194304
cache_ttl_min: 3600
cache_ttl_max: 84600
cache_optimistic: true
bogus_nxdomain: []
aaaa_disabled: false
enable_dnssec: true
edns_client_subnet:
custom_ip: ""
enabled: false
use_custom: false
max_goroutines: 300
handle_ddr: true
ipset: []
ipset_file: ""
bootstrap_prefer_ipv6: false
upstream_timeout: 10s
private_networks: []
use_private_ptr_resolvers: false
local_ptr_upstreams: []
use_dns64: false
dns64_prefixes: []
serve_http3: false
use_http3_upstreams: false
serve_plain_dns: true
hostsfile_enabled: true
tls:
enabled: false
server_name: ""
force_https: false
port_https: 443
port_dns_over_tls: 853
port_dns_over_quic: 853
port_dnscrypt: 0
dnscrypt_config_file: ""
allow_unencrypted_doh: false
certificate_chain: ""
private_key: ""
certificate_path: ""
private_key_path: ""
strict_sni_check: false
querylog:
dir_path: ""
ignored: []
interval: 2160h
size_memory: 1000
enabled: true
file_enabled: true
statistics:
dir_path: ""
ignored: []
interval: 2160h
enabled: true
filters:
- enabled: true
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_1.txt
name: AdGuard DNS filter
id: 1
- enabled: false
url: https://adguardteam.github.io/HostlistsRegistry/assets/filter_2.txt
name: AdAway Default Blocklist
id: 2
- enabled: true
url: https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt
name: tofukko filter
id: 1715188882
whitelist_filters: []
user_rules: []
dhcp:
enabled: false
interface_name: ""
local_domain_name: lan
dhcpv4:
gateway_ip: ""
subnet_mask: ""
range_start: ""
range_end: ""
lease_duration: 86400
icmp_timeout_msec: 1000
options: []
dhcpv6:
range_start: ""
lease_duration: 86400
ra_slaac_only: false
ra_allow_slaac: false
filtering:
blocking_ipv4: ""
blocking_ipv6: ""
blocked_services:
schedule:
time_zone: UTC
ids: []
protection_disabled_until: null
safe_search:
enabled: false
bing: true
duckduckgo: true
google: true
pixabay: true
yandex: true
youtube: true
blocking_mode: default
parental_block_host: family-block.dns.adguard.com
safebrowsing_block_host: standard-block.dns.adguard.com
rewrites: []
safebrowsing_cache_size: 1048576
safesearch_cache_size: 1048576
parental_cache_size: 1048576
cache_time: 30
filters_update_interval: 24
blocked_response_ttl: 10
filtering_enabled: true
parental_enabled: false
safebrowsing_enabled: false
protection_enabled: true
clients:
runtime_sources:
whois: true
arp: true
rdns: true
dhcp: true
hosts: true
persistent: []
log:
file: /var/log/adgrd/log
max_backups: 3
max_size: 100
max_age: 365
compress: false
local_time: true
verbose: false
os:
group: ""
user: ""
rlimit_nofile: 0
schema_version: 28
各設定値
変更点抜粋
-
upstream_dns
: 有名どころのパブリックDNSを設定 -
bootstrap_dns
:upstream_dns
の名前解決するDNSを指定 -
upstream_mode
: 反応速度のためにparallel
-
enable_dnssec
: 念のためtrue
-
cache_size
: 大き目に確保するため4MiB -
cache_optimistic
: 反応速度のためにtrue
-
filters
: 日本の広告に有効らしいtofukko filterを追加https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt
-
log
: 保存場所とローカル時間を指定- コンテナ内クエリログ保存場所は以下
/opt/adguardhome/work/data/querylog.json
- コンテナ内クエリログ保存場所は以下
ポート53競合解決
参考文献
- adguard/adguardhome
- Configuration
- Why do I get bind: address already in use error when trying to install on Ubuntu?
- Ubuntu 18.04 の systemd-resolved で local DNS stub listener の利用をやめる
- 自宅サーバにAdGuard HomeとTailsclaeを導入してあらゆる環境で広告ブロックする
- Dockerを使ってAdGuardHomeをインストールする ついでにTailscale上で広告ブロックできるようにする
- Ubuntu に AdGuard Homeを導入してキッズへのフィルタリングを実現する。
- How to optimise speed up AdGuard Home?
Discussion