ものみの塔を使用していますか?この Readme の下部にある Watchtower に関する注記を参照してください。
2023.01
以降、 external.conf
ファイル経由で lighttpd を変更した場合、このファイルは代わりに/etc/lighttpd/conf-enabled/whateverfile.conf
にマップされる必要があります。
Docker および libseccomp <2.5 に関する既知の問題により、古いバージョンのlibseccomp2
(Debian/Raspbian Buster または Ubuntu 20.04、および場合によっては CentOS 7 など) を使用するホスト システムで2022.04
以降を実行すると問題が発生する可能性があります。
最初の推奨事項は、ホスト OS をアップグレードすることです。これには、より最新の (修正された) バージョンのlibseccomp
が含まれます。
これを絶対に実行できない場合、一部のユーザーは、debian のバックポート経由でlibseccomp2
更新したり、Ubuntu のアップデート経由で同様に成功したと報告しています。この回避策はご自身の責任で試すことができます(最新のdocker.io
必要になる場合もあります (詳細はこちら))
一部のユーザーから、 2022.04
以降での--privileged
フラグの使用に関する問題が報告されています。注意: そのモードは使用せず、代わりに許可される上限を (必要に応じて) 明示的に指定してください。
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services :
pihole :
container_name : pihole
image : pihole/pihole:latest
# For DHCP it is recommended to remove these ports and instead add: network_mode: "host"
ports :
- " 53:53/tcp "
- " 53:53/udp "
- " 67:67/udp " # Only required if you are using Pi-hole as your DHCP server
- " 80:80/tcp "
environment :
TZ : ' America/Chicago '
# WEBPASSWORD: 'set a secure password here or it will be random'
# Volumes store your data between container upgrades
volumes :
- ' ./etc-pihole:/etc/pihole '
- ' ./etc-dnsmasq.d:/etc/dnsmasq.d '
# https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
cap_add :
- NET_ADMIN # Required if you are using Pi-hole as your DHCP server, else not needed
restart : unless-stopped
docker compose up -d
実行して pi-hole をビルドして開始します (古いシステムでは構文がdocker-compose
になる場合があります)bridge
ネットワーク設定を使用している場合は、Pi-hole Web UI を使用して、DNS 設定インターフェイスのリスニング動作を「すべてのインターフェイスでリッスンし、すべてのオリジンを許可する」に変更します。 (これは、環境変数DNSMASQ_LISTENING
all
に設定することによっても実現できます)以下は同等の docker run スクリプトです。
Pi-hole 機能を備えた軽量の x86 および ARM コンテナーを作成する Docker プロジェクト。
このコンテナは、ポート 53 とポート 80 の 2 つの一般的なポートを使用するため、既存のアプリケーションのポートと競合する可能性があります。ポート 53/80 を使用する他のサービスや Docker コンテナがない場合 (ある場合は、以下のリバース プロキシの例を読み続けてください)、このコンテナを実行するために必要な最小限の引数はスクリプト docker_run.sh にあります。
SELinux Enforcing ポリシーを備えた Red Hat ベースのディストリビューションを使用している場合は、次のようにボリュームの行に:z
を追加します。
-v "$(pwd)/etc-pihole:/etc/pihole:z"
-v "$(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d:z"
イメージを更新するためにコンテナーを再作成してもデータを保持するには、ボリュームを使用することをお勧めします。 IP ルックアップ変数はすべての人に機能するとは限りません。値を確認し、必要に応じて IP と IPv6 をハードコードしてください。
docker_run.sh
の呼び出し時にPIHOLE_BASE
環境変数を設定することで、永続データの保存場所をカスタマイズできます (例: PIHOLE_BASE=/opt/pihole-storage ./docker_run.sh
)。 PIHOLE_BASE
が設定されていない場合、スクリプトを呼び出すと、ファイルは現在のディレクトリに保存されます。
広告リストの自動更新- 3.0 以降のリリースでは、 cron
がコンテナに組み込まれ、リストの最新バージョンを取得してログをフラッシュします。 TZ 環境変数を設定して、午前 0 時のログ ローテーションがタイムゾーンの午前 0 時と同期するようにします。
Docker Pi-hole コンテナー内から DHCP を実行するには複数の異なる方法がありますが、それは少し高度であり、1 つの方法ですべてに適合するわけではありません。 DHCP と Docker の複数のネットワーク モードについては、ドキュメント サイト「Docker DHCP とネットワーク モード」で詳しく説明されています。
Docker コンテナー内でさまざまなことをカスタマイズしたい場合は、他の環境変数もあります。
変数 | デフォルト | 価値 | 説明 |
---|---|---|---|
TZ | UTC | <Timezone> | ログが UTC の午前 0 時ではなく現地の午前 0 時にローテーションされるようにタイムゾーンを設定します。 |
WEBPASSWORD | ランダム | <Admin password> | http://pi.hole/管理者のパスワード。 docker logs pihole | grep random て、ランダムなパスを見つけます。 |
FTLCONF_LOCAL_IPV4 | 設定を解除する | <Host's IP> | Web ブロック モードで使用される、サーバーの LAN IP に設定します。 |
変数 | デフォルト | 価値 | 説明 |
---|---|---|---|
PIHOLE_DNS_ | 8.8.8.8;8.8.4.4 | ; で区切られた IP | Pi-hole がクエリを転送するアップストリーム DNS サーバー (セミコロンで区切る) ( #[port number] の非標準ポートをサポート) 例: 127.0.0.1#5053;8.8.8.8;8.8.4.4 (IP の代わりに Docker サービス名とリンクをサポート) 例: upstream0;upstream1 ここで、 upstream0 とupstream1 Docker サービスのサービス名または Docker サービスへのリンクです。注: この環境変数の存在は、これが上流 DNS の唯一の管理であることを前提としています。 Web インターフェイス経由で追加されたアップストリーム DNS はコンテナの再起動/再作成時に上書きされます |
DNSSEC | false | <"true"|"false"> | DNSSEC サポートを有効にする |
DNS_BOGUS_PRIV | true | <"true"|"false"> | プライベート範囲の逆引き参照を決して転送しないでください |
DNS_FQDN_REQUIRED | true | <"true"|"false"> | 非 FQDN を転送しない |
REV_SERVER | false | <"true"|"false"> | デバイス名解決のために DNS 条件付き転送を有効にする |
REV_SERVER_DOMAIN | 設定を解除する | ネットワークドメイン | 条件付き転送が有効な場合は、ローカル ネットワーク ルーターのドメインを設定します |
REV_SERVER_TARGET | 設定を解除する | ルーターのIP | 条件付き転送が有効な場合は、ローカル ネットワーク ルーターの IP を設定します。 |
REV_SERVER_CIDR | 設定を解除する | 逆引きDNS | 条件付き転送が有効な場合は、逆引き DNS ゾーン (例: 192.168.0.0/24 ) を設定します。 |
DHCP_ACTIVE | false | <"true"|"false"> | DHCPサーバーを有効にします。静的 DHCP リースは、カスタム/etc/dnsmasq.d/04-pihole-static-dhcp.conf を使用して構成できます。 |
DHCP_START | 設定を解除する | <Start IP> | DHCP サーバーによって配布される IP アドレス範囲の開始 (DHCP サーバーが有効な場合は必須)。 |
DHCP_END | 設定を解除する | <End IP> | DHCP サーバーによって配布される IP アドレス範囲の終わり (DHCP サーバーが有効な場合は必須)。 |
DHCP_ROUTER | 設定を解除する | <Router's IP> | DHCP サーバーによって送信されるルーター (ゲートウェイ) IP アドレス (DHCP サーバーが有効な場合は必須)。 |
DHCP_LEASETIME | 24 | <hours> | DHCP リース時間 (時間単位)。 |
PIHOLE_DOMAIN | lan | <domain> | DHCP サーバーによって送信されるドメイン名。 |
DHCP_IPv6 | false | <"true"|"false"> | DHCP サーバーの IPv6 サポート (SLAAC + RA) を有効にします。 |
DHCP_rapid_commit | false | <"true"|"false"> | DHCPv4 高速コミット (高速アドレス割り当て) を有効にします。 |
VIRTUAL_HOST | ${HOSTNAME} | <Custom Hostname> | Web サーバーの「仮想ホスト」とは、このホスト名/IP を通じて admin にアクセスすると、デフォルトの「http://pi.hole/admin/」アドレスに加えて、ホワイトリスト/ブラックリストを変更できるようになります。 |
IPv6 | true | <"true"|"false"> | RAID との互換性を確保するため、false の場合、DNS/Web サービスからすべての IPv6 構成を削除します。 |
TEMPERATUREUNIT | c | <c|k|f> | 優先温度単位をc : 摂氏、 k : ケルビン、またはf 華氏単位に設定します。 |
WEBUIBOXEDLAYOUT | boxed | <boxed|traditional> | ボックス化されたレイアウトを使用する (大きな画面で作業する場合に役立ちます) |
QUERY_LOGGING | true | <"true"|"false"> | クエリログを有効にするかどうか。 |
WEBTHEME | default-light | <"default-dark"|"default-darker"|"default-light"|"default-auto"|"high-contrast"|"high-contrast-dark"|"lcars"> | 使用するユーザー インターフェイスのテーマ。 |
WEBPASSWORD_FILE | 設定を解除する | <Docker secret path> | Docker シークレットを使用して管理者パスワードを設定します。 WEBPASSWORD が設定されている場合、 WEBPASSWORD_FILE は無視されます。 WEBPASSWORD が空で、 WEBPASSWORD_FILE が有効な読み取り可能なファイル パスに設定されている場合、 WEBPASSWORD WEBPASSWORD_FILE の内容に設定されます。 |
変数 | デフォルト | 価値 | 説明 |
---|---|---|---|
INTERFACE | 設定を解除する | <NIC> | デフォルトは、基本的な docker run コマンドの例で正常に機能します。 --net host モードで DHCP を使用しようとしている場合は、これまたは DNSMASQ_LISTENING をカスタマイズする必要がある場合があります。 |
DNSMASQ_LISTENING | 設定を解除する | <local|all|single> | local すべてのローカル サブネットでリッスンし、 all ローカルに加えてインターネット起点サブネットでのリッスンを許可し、 single 指定されたインターフェイスでのみリッスンします。 |
WEB_PORT | 設定を解除する | <PORT> | これにより、Pi-hole の「Web ページのブロック」機能が無効になりますが、Synology または--net=host docker 引数を実行するような高度なセットアップには役立つ可能性があります。このガイドでは、Linux ルーター DNAT ルールを使用して Web ページのブロックされた機能を復元する方法について説明します: 代替 Synology インストール方法 |
WEB_BIND_ADDR | 設定を解除する | <IP> | Lighttpd のバインド アドレス。設定しないままにすると、lighttpd はすべてのインターフェイスにバインドされます。ただし、ホスト ネットワーキング モードで実行している場合は例外で、代わりにFTLCONF_LOCAL_IPV4 使用されます。 |
SKIPGRAVITYONBOOT | 設定を解除する | <unset|1> | コンテナーの起動時に Gravity データベースの更新をスキップするには、このオプションを使用します。デフォルトでは、この環境変数は設定されていないため、コンテナーの起動時に Gravity データベースが更新されます。この環境変数を 1 (または任意の値) に設定すると、コンテナーの起動時に Gravity データベースが更新されなくなります。 |
CORS_HOSTS | 設定を解除する | <FQDNs delimited by ,> | CORS が許可されるドメイン/サブドメインのリスト。ワイルドカードはサポートされていません。例: CORS_HOSTS: domain.com,home.domain.com,www.domain.com 。 |
CUSTOM_CACHE_SIZE | 10000 | 番号 | dnsmasqのキャッシュサイズを設定します。デフォルトのキャッシュ サイズを増やすか、0 に設定する場合に便利ですDNSSEC が「true」の場合、この設定は無視されることに注意してください。 |
FTL_CMD | no-daemon | no-daemon -- <dnsmasq option> | dnsmasq を開始するオプションをカスタマイズします。たとえば、 no-daemon -- --dns-forward-max 300 を指定すると、最大値が増加します。高負荷セットアップでの同時 DNS クエリの数。 |
FTLCONF_[SETTING] | 設定を解除する | ドキュメントによると | 「FTLDNS 構成」ページで説明されている設定を使用して、pihole-FTL.conf をカスタマイズします。たとえば、LOCAL_IPV4 をカスタマイズするには、 FTLCONF_LOCAL_IPV4 環境変数が設定されていることを確認してください。 |
変数 | デフォルト | 価値 | 説明 |
---|---|---|---|
DNSMASQ_USER | 設定を解除する | <pihole|root> | FTLDNS を実行するユーザーを変更できます。デフォルト: pihole 、Synology NAS などの一部のシステムでは、これをroot に変更する必要がある場合があります (#963 を参照) |
PIHOLE_UID | 999 | 番号 | ホストのユーザー ID と一致するようにイメージのデフォルトの pihole ユーザー ID をオーバーライドします。 重要: ID がコンテナ内ですでに使用されていてはなりません。 |
PIHOLE_GID | 999 | 番号 | ホスト グループ ID と一致するようにイメージのデフォルトのパイホール グループ ID をオーバーライドします。 重要: ID がコンテナ内ですでに使用されていてはなりません。 |
WEB_UID | 33 | 番号 | イメージのデフォルトの www-data ユーザー ID をオーバーライドして、ホスト ユーザー ID と一致させます。 重要: ID がコンテナ内ですでに使用されていてはなりません。 (PIHOLE_UID を使用している場合は、 PIHOLE_UID とは異なることを確認してください) |
WEB_GID | 33 | 番号 | イメージのデフォルトの www-data グループ ID をオーバーライドして、ホスト グループ ID と一致させます。 重要: ID がコンテナ内ですでに使用されていてはなりません。 (PIHOLE_GID を使用している場合は、 PIHOLE_GID とは異なることを確認してください) |
WEBLOGS_STDOUT | 0 | 0|1 | 定義されたファイルへのログ 0、標準出力へのアクセスおよびエラー ログのリダイレクト 1 |
これらはまだ機能する可能性がありますが、将来のバージョンでは削除される可能性があります。該当する場合は、代替変数名が示されています。代替変数の使用法については、上の表を確認してください。
Docker 環境変数。 | 説明 | 置換者 |
---|---|---|
CONDITIONAL_FORWARDING | デバイス名解決のために DNS 条件付き転送を有効にする | REV_SERVER |
CONDITIONAL_FORWARDING_IP | 条件付き転送が有効な場合は、ローカル ネットワーク ルーターの IP を設定します。 | REV_SERVER_TARGET |
CONDITIONAL_FORWARDING_DOMAIN | 条件付き転送が有効な場合は、ローカル ネットワーク ルーターのドメインを設定します | REV_SERVER_DOMAIN |
CONDITIONAL_FORWARDING_REVERSE | 条件付き転送が有効な場合は、ローカル ネットワーク ルーターの逆引き DNS を設定します (例: 0.168.192.in-addr.arpa )。 | REV_SERVER_CIDR |
DNS1 | プライマリアップストリーム DNS プロバイダー、デフォルトは Google DNS | PIHOLE_DNS_ |
DNS2 | セカンダリ上流 DNS プロバイダー、デフォルトは Google DNS、使用する DNS が 1 つだけの場合はno | PIHOLE_DNS_ |
ServerIP | Web ブロック モードと lighttpd バインド アドレスによって使用される、サーバーの LAN IP に設定します。 | FTLCONF_LOCAL_IPV4 |
ServerIPv6 | IPv6 広告を完全にブロックするためにv6 ネットワークをサーバーの LAN IPv6 に設定している場合 | FTLCONF_LOCAL_IPV6 |
FTLCONF_REPLY_ADDR4 | Web ブロック モードと lighttpd バインド アドレスによって使用される、サーバーの LAN IP に設定します。 | FTLCONF_LOCAL_IPV4 |
FTLCONF_REPLY_ADDR6 | IPv6 広告を完全にブロックするためにv6 ネットワークをサーバーの LAN IPv6 に設定している場合 | FTLCONF_LOCAL_IPV6 |
これらの環境変数を docker run 形式で使用するには、次のような形式にします: -e DNS1=1.1.1.1
docker-compose / docker run のその他の引数の概要を次に示します。
Docker の引数 | 説明 |
---|---|
-p <port>:<port> 推奨 | 公開するポート (53、80、67)、Pi-holes HTTP および DNS サービスに必要な最低限のポート |
--restart=unless-stopped 推奨 | 起動時またはクラッシュ時にPi-holeを自動的に(再)開始します。 |
-v $(pwd)/etc-pihole:/etc/pihole 推奨 | Pi-hole 構成のボリュームは、Docker イメージの更新後も変更を保持するのに役立ちます |
-v $(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d 推奨 | dnsmasq 構成のボリュームは、Docker イメージの更新後も変更を保持するのに役立ちます |
--net=host オプション | 他の Web アプリケーションを実行しない場合は、 -p <port>:<port> 引数の代替 (-p と同時に使用することはできません)。 DHCP は --net=host を使用すると最適に動作します。それ以外の場合は、ルーターが dhcp-relay 設定をサポートしている必要があります。 |
--cap-add=NET_ADMIN 推奨 | DHCP に一般的に追加される機能。他の機能については、以下の機能に関する注意を参照してください。 |
--dns=127.0.0.1 オプション | コンテナーの解決設定を localhost に設定すると、Pi-hole の DNSMasq から DHCP ホスト名を解決できるようになり、コンテナーの再起動時に解決エラーが修正される可能性があります。 |
--dns=1.1.1.1 オプション | DNSMasq の起動に問題がある場合に備えて、選択したバックアップ サーバーを設定します。 |
--env-file .env オプション | Docker が-e key=value 設定を置き換えるための環境変数を保存するファイル。便宜上ここにあります |
docker exec -it pihole_container_name pihole -a -p
- プロンプトにパスワードを入力します-p 8080:80
のように Docker のポート転送を使用して、他のポートを Pi ホール ポート 80 にマップできます。レガシー IP ブロッキング モードを使用している場合は、このポートを再マップしないでください。DEFAULT_HOST
環境である必要があり、Pi ホールのコンテナーに一致するVIRTUAL_HOST
設定する必要があります。問題が発生した場合は、nginxproxy/nginx-proxy readme を読んで詳細を確認してください。bridge
コンテナをホストのネットワークから分離します。これはより安全な設定ですが、インターフェイス リスニング動作の Pi-hole DNS オプションを「すべてのインターフェイスでリッスンし、すべての発信元を許可する」に設定する必要があります。Ubuntu (17.10 以降) および Fedora (33 以降) の最新リリースには、キャッシュ DNS スタブリゾルバーを実装するようにデフォルトで構成されたsystemd-resolved
が含まれています。これにより、pi-hole がポート 53 でリッスンできなくなります。スタブ リゾルバーはsudo sed -r -i.orig 's/#?DNSStubListener=yes/DNSStubListener=no/g' /etc/systemd/resolved.conf
これによりネームサーバー設定は変更されず、ネームサーバー設定はスタブリゾルバーを指すため、DNS 解決が妨げられます。 /etc/resolv.conf
シンボリックリンクを/run/systemd/resolve/resolv.conf
を指すように変更します。これはシステムのnetplan
に従って自動的に更新されます: sudo sh -c 'rm /etc/resolv.conf && ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf'
これらの変更を行った後、 systemctl restart systemd-resolved
を使用して systemd-resolved を再起動する必要があります。 systemctl restart systemd-resolved
pi-hole がインストールされたら、それを使用するようにクライアントを構成する必要があります (ここを参照)。上記のシンボリックリンクを使用した場合、Docker ホストは DHCP によって提供されるもの、または構成した静的設定を使用します。 Docker ホストのネームサーバーを明示的に設定したい場合は、 /etc/netplan
にあるネットプランを編集し、 sudo netplan apply
を実行します。ネットプランの例:
network :
ethernets :
ens160 :
dhcp4 : true
dhcp4-overrides :
use-dns : false
nameservers :
addresses : [127.0.0.1]
version : 2
systemd-resolved
完全に無効にすることも可能であることに注意してください。ただし、これにより、VPN での名前解決で問題が発生する可能性があります (バグ レポートを参照)。また、 systemd-resolved がデフォルトのレンダラーとして使用されるため、 netplan の機能も無効になります ( man netplan
を参照)。サービスを無効にすることを選択した場合は、新しい/etc/resolv.conf
を作成するなどして、ネームサーバーを手動で設定する必要があります。
古い Ubuntu リリース (17.04 頃) のユーザーは、dnsmasq を無効にする必要があります。
@Rikk000 は、ユーザーが Dokku に Pi-hole をインストールするのを支援するガイドを作成しました。
主要な Docker タグについては、次の表で説明します。タグの完全なリストを表示するには、ここをクリックしてください。リリースに含まれる Pi-hole Core、Web、および FTL の特定のバージョンを確認するには、GitHub リリース ノートを参照してください。
日付ベース (増分された「パッチ」バージョンを含む) は、いかなる種類のセマンティック バージョン番号にも関係せず、日付は新しいバージョンと古いバージョンを区別するために使用されるだけであり、それ以上のものではありません。リリース ノートには、コア Pi-hole コンポーネントへの変更を含む、コンテナ内の変更の完全な詳細が常に含まれます。
タグ | 説明 |
---|---|
latest | 常に最新リリース |
2022.04.0 | 日付ベースのリリース |
2022.04.1 | 特定の月の 2 番目のリリース |
dev | latest の に似ていますが、開発ブランチ用です (時々プッシュされます) |
*beta | 今後のバージョンの初期ベータ リリース - ここにドラゴンがあります |
nightly | dev と似ていますが、毎晩プッシュされ、コア Pi-hole コンポーネント (Pi-hole、Web、FTL) の最新のdevelopment ブランチからプルされます。 |
標準の Pi-hole カスタマイズ機能はこの Docker に適用されますが、Docker ボリューム マウントを使用してホストに保存されたファイル構成をコンテナーのデフォルトにマッピングするなど、Docker に工夫が加えられています。ただし、これらの構成ファイルを読み取り専用としてマウントすることは避けてください。ボリュームは、典型的な Docker アップグレード パターンである Pi-hole コンテナーを削除した場合に構成を永続化するためにも重要です。
アップグレード ( pihole -up
) または再構成 ( pihole -r
) を試みないでください。新しいイメージはアップグレード用にリリースされます。古いコンテナーを新しいアップグレードされたイメージに置き換えてアップグレードするのが「Docker 方法」です。寿命の長い Docker コンテナは、移植可能で再現可能であることを目的としているため、Docker のやり方ではありません。頻繁に再作成してはいかがでしょうか。それができることを証明するためだけに。
docker pull pihole/pihole
docker rm -f pihole
docker run <args> pihole/pihole
( <args>
は優先実行ボリュームと環境変数です)なぜこのスタイルのアップグレードが良いのでしょうか?理由はいくつかあります。誰もが、動作することがテスト済みである同じベース イメージから開始しています。更新をロールアウトするときに、A から B、B から C、または A から C へのアップグレードを心配する必要はありません。複雑さが軽減され、ボリュームのカスタマイズを維持しながら、毎回「新たに開始」することが可能になります。基本的に、私はコンテナーに対してフェニックスサーバーの原則を推奨しています。
Pi-hole を再構成するには、既存のコンテナ環境変数を使用するか、必要な変数がない場合は Web UI または CLI コマンドを使用する必要があります。
ここでは、Pi-hole のドキュメントからの関連する Wiki ページをいくつか紹介します。 Web インターフェイスまたはコマンド ライン ツールを使用して、pihole への変更を実装できます。
すべての pihole ユーティリティをインストールすると、組み込みの pihole コマンドが次のようにdocker exec <container> <command>
経由で機能するようになります。
docker exec pihole_container_name pihole updateGravity
docker exec pihole_container_name pihole -w spclient.wg.spotify.com
docker exec pihole_container_name pihole -wild example.com
コンテナ内の Web サーバーと DNS サービスは、必要に応じてカスタマイズできます。 /etc/dnsmasq.d/
にボリュームマウントした構成ファイルは、コンテナーの起動時または再起動時に、または/etc/dnsmasq.d/01-pihole.conf
にある Pi ホール構成を変更する必要がある場合に、dnsmasq によってロードされます。 /etc/dnsmasq.d/01-pihole.conf
。 docker 開始スクリプトは開始前に構成テストを実行するため、docker ログ内のエラーが通知されます。
ウェブサーバーについても同様に、/etc/lighttpd で構成をカスタマイズできます。
Docker システム サービスが起動時に自動で開始され、 --restart=unless-stopped
を指定してコンテナを実行している限り、コンテナは常に起動時に起動し、クラッシュ時に再起動する必要があります。代わりに Docker コンテナを systemd サービスとして実行したい場合は、ファイル pihole.service を「/etc/systemd/system」に追加します。コンテナー名をカスタマイズし、Docker の実行から--restart=unless-stopped
を削除します。上記の docker run コマンドを使用して docker コンテナを最初に作成した後、( docker start
/ docker stop
の代わりに) "systemctl start pihole" または "systemctl stop pihole" を使用してコンテナを制御できます。 「systemctl Enable pihole」を使用して、起動時に自動起動するように有効にすることもできます ( --restart=unless-stopped
使用して起動時に Docker サービスが自動起動するようにするのとは対照的です)。
注: 最初の実行後、systemctl がコンテナーの制御を開始する前に、「docker stop pihole」を使用して Docker コンテナーを手動で停止する必要がある場合があります。
DNSMasq / FTLDNS は、次の機能を利用できることを期待しています。
CAP_NET_BIND_SERVICE
: 1024 未満の TCP/UDP ソケット (特にポート 53 の DNS サービス) への FTLDNS バインディングを許可します。CAP_NET_RAW
: raw ソケットとパケット ソケットを使用します (DHCPv6 リクエストを処理し、IP をリースする前に使用されていないことを確認するために必要です)CAP_NET_ADMIN
: ルーティング テーブルおよびその他のネットワーク関連操作を変更します (特に、ユニキャスト パケットを使用して DHCP 要求に応答するために近隣テーブルにエントリを挿入します)。CAP_SYS_NICE
: FTL が自身を重要なプロセスとして設定し、後者の処理時間が不足している場合に処理時間をさらに確保します。CAP_CHOWN
: FTL がpihole
とは異なるユーザーとして開始された場合に備えて、ログ ファイルとデータベースの所有権を変更できる必要があります。このイメージは、非 root として実行されている場合でも、これらの機能が利用可能な場合は FTLDNS プロセスに自動的に付与します。
デフォルトでは、docker には非特権コンテナーのNET_ADMIN
機能が含まれていないため、 --cap-add=NET_ADMIN
使用してコンテナーに明示的に追加することをお勧めします。
ただし、DHCP および IPv6 ルーター アドバタイズメントが使用されていない場合は、スキップしても安全です。最も偏執的な人にとっては、FTLDNS が自動的にNET_RAW
機能を明示的に削除できるはずです。
多くの人が Watchtower を使用して Pi-hole コンテナーを最新の状態に維持していることに気づきました。同じ理由で、ベア メタル インストールには自動更新機能が提供されていないため、システムに Pi-hole コンテナーを自動的に更新させるべきではありません。特に無人。何も問題が起こらないように努めていますが、場合によっては問題が発生することもあります。そのため、実行するコンテナーのバージョンを手動で取得して更新する時間を確保する必要があります。アップグレード プロセスは次のように行う必要があります。
Pi-hole はネットワークの不可欠な部分です。真夜中に無人の更新が原因で Pi-hole がダウンしないようにしてください。
Docker 関連の疑いがある場合は、GitHub プロジェクトの問題を報告してください。 Pi ホールまたは Docker に関する一般的な質問については、ユーザー フォーラムで最もよく回答されます。