Используете Сторожевую башню? См. примечание к Сторожевой башне внизу этого файла readme.
Начиная с версии 2023.01
, если у вас есть какие-либо изменения для Lighttpd через файл external.conf
, этот файл теперь необходимо сопоставить с /etc/lighttpd/conf-enabled/whateverfile.conf
.
Из-за известной проблемы с Docker и libseccomp <2.5 вы можете столкнуться с проблемами при работе 2022.04
и более поздних версий на хост-системах со более старой версией libseccomp2
(например, Debian/Raspbian buster или Ubuntu 20.04 и, возможно, CentOS 7).
Первая рекомендация — обновить вашу хостовую ОС, которая будет включать более свежую (и исправленную) версию libseccomp
.
Если вы абсолютно не можете этого сделать, некоторые пользователи сообщают об успешном обновлении libseccomp2
через резервные порты в Debian или аналогичном обновлении в Ubuntu. Вы можете попробовать этот обходной путь на свой страх и риск (Обратите внимание, вы также можете обнаружить, что вам нужна последняя версия docker.io
(подробнее здесь).
Некоторые пользователи сообщали о проблемах с использованием флага --privileged
в 2022.04
и выше. TL;DR, не используйте этот режим, а вместо этого укажите разрешенные ограничения (при необходимости).
# 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
сети Docker по умолчанию. (Этого также можно добиться, установив для переменной среды DNSMASQ_LISTENING
значение all
)Вот эквивалентный скрипт запуска Docker.
Проект Docker по созданию легкого контейнера x86 и ARM с функциональностью Pi-hole.
Этот контейнер использует два популярных порта: порт 53 и порт 80, поэтому может конфликтовать с портами существующих приложений . Если у вас нет других служб или контейнеров докеров, использующих порт 53/80 (если есть, продолжайте читать ниже, чтобы увидеть пример обратного прокси), минимальные аргументы, необходимые для запуска этого контейнера, находятся в скрипте docker_run.sh.
Если вы используете дистрибутив на основе Red Hat с политикой SELinux Enforcement, добавьте :z
к строке с томами следующим образом:
-v "$(pwd)/etc-pihole:/etc/pihole:z"
-v "$(pwd)/etc-dnsmasq.d:/etc/dnsmasq.d:z"
Тома рекомендуются для сохранения данных при повторном создании контейнера для обновления образов. Переменные поиска IP могут работать не для всех. При необходимости проверьте их значения и жестко закодируйте IP и IPv6.
Вы можете настроить место хранения постоянных данных, задав переменную среды PIHOLE_BASE
при вызове docker_run.sh
(например, PIHOLE_BASE=/opt/pihole-storage ./docker_run.sh
). Если PIHOLE_BASE
не установлен, файлы сохраняются в вашем текущем каталоге при вызове сценария.
Автоматические обновления списков объявлений . Начиная с версии 3.0+, cron
встроен в контейнер и будет получать новейшие версии ваших списков и очищать ваши журналы. Установите переменную среды TZ , чтобы обеспечить синхронизацию полуночной ротации журнала с полуночью вашего часового пояса.
Существует несколько различных способов запуска DHCP из контейнера Docker Pi-hole, но он немного более продвинут, и один размер не подходит всем. Несколько сетевых режимов DHCP и Docker подробно описаны на нашем сайте документации: Docker DHCP и сетевые режимы.
Существуют и другие переменные среды, если вы хотите настроить различные параметры внутри Docker-контейнера:
Переменная | По умолчанию | Ценить | Описание |
---|---|---|---|
TZ | универсальное глобальное время | <Timezone> | Установите часовой пояс, чтобы журналы обновлялись в полночь по местному времени, а не в полночь по всемирному координированному времени. |
WEBPASSWORD | случайный | <Admin password> | http://pi.hole/пароль администратора. Запустить docker logs pihole | grep random чтобы найти случайный проход. |
FTLCONF_LOCAL_IPV4 | не установлен | <Host's IP> | Установите IP-адрес локальной сети вашего сервера, используемый в режимах веб-блокировки. |
Переменная | По умолчанию | Ценить | Описание |
---|---|---|---|
PIHOLE_DNS_ | 8.8.8.8;8.8.4.4 | IP-адреса, разделенные ; | Вышестоящие DNS-серверы, на которые Pi-hole будет пересылать запросы, разделенные точкой с запятой. (поддерживает нестандартные порты с #[port number] ), например 127.0.0.1#5053;8.8.8.8;8.8.4.4 (поддерживает имена и ссылки служб Docker вместо IP-адресов), например upstream0;upstream1 , где upstream0 и upstream1 — это имена служб или ссылки на службы Docker.Примечание. Наличие этой переменной среды предполагает единоличное управление восходящим DNS. Восходящий DNS, добавленный через веб-интерфейс, будет перезаписан при перезапуске/воссоздании контейнера. |
DNSSEC | false | <"true"|"false"> | Включить поддержку DNSSEC |
DNS_BOGUS_PRIV | true | <"true"|"false"> | Никогда не пересылайте обратный поиск для частных диапазонов. |
DNS_FQDN_REQUIRED | true | <"true"|"false"> | Никогда не пересылайте неполные доменные имена |
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> | Начало диапазона IP-адресов, раздаваемых DHCP-сервером (обязательно, если DHCP-сервер включен). |
DHCP_END | не установлен | <End IP> | Конец диапазона IP-адресов, выдаваемых DHCP-сервером (обязательно, если DHCP-сервер включен). |
DHCP_ROUTER | не установлен | <Router's IP> | IP-адрес маршрутизатора (шлюза), отправленный DHCP-сервером (обязательно, если 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> | Что такое «виртуальный хост» вашего веб-сервера, доступ к администратору через это имя хоста/IP позволяет вам вносить изменения в белый/черный список в дополнение к адресу по умолчанию «http://pi.hole/admin/». |
IPv6 | true | <"true"|"false"> | Для совместимости с unraid удаляет всю конфигурацию IPv6 из DNS/веб-служб, если установлено значение false. |
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. Если вы пытаетесь использовать DHCP с режимом --net host , вам, возможно, придется настроить это или DNSMASQ_LISTENING. |
DNSMASQ_LISTENING | не установлен | <local|all|single> | local прослушивает все локальные подсети, all разрешает прослушивание в исходных подсетях Интернета в дополнение к локальным, single прослушивание только на указанном интерфейсе. |
WEB_PORT | не установлен | <PORT> | Это нарушит функцию Pi-hole «блокировка веб-страницы», однако может помочь в расширенных настройках, таких как те, которые используют Synology или аргумент --net=host docker. В этом руководстве объясняется, как восстановить заблокированную функциональность веб-страницы с помощью правила DNAT маршрутизатора Linux: альтернативный метод установки 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 имеет значение «истина», этот параметр игнорируется. |
FTL_CMD | no-daemon | no-daemon -- <dnsmasq option> | Настройте параметры запуска dnsmasq. например, no-daemon -- --dns-forward-max 300 чтобы увеличить макс. количество одновременных DNS-запросов при настройках с высокой нагрузкой. |
FTLCONF_[SETTING] | не установлен | Согласно документации | Настройте pihole-FTL.conf с настройками, описанными на странице конфигурации FTLDNS. Например, чтобы настроить LOCAL_IPV4, убедитесь, что у вас установлена переменная среды FTLCONF_LOCAL_IPV4 . |
Переменная | По умолчанию | Ценить | Описание |
---|---|---|---|
DNSMASQ_USER | не установлен | <pihole|root> | Позволяет изменить пользователя, от имени которого работает FTLDNS. По умолчанию: pihole , некоторые системы, такие как Synology NAS, могут потребовать изменить это значение на root (см. № 963). |
PIHOLE_UID | 999 | Число | Переопределяет идентификатор пользователя pihole по умолчанию для изображения, чтобы он соответствовал идентификатору пользователя хоста. ВАЖНО : идентификатор не должен уже использоваться внутри контейнера! |
PIHOLE_GID | 999 | Число | Переопределяет идентификатор группы pihole по умолчанию для изображения, чтобы он соответствовал идентификатору группы хостов. ВАЖНО : идентификатор не должен уже использоваться внутри контейнера! |
WEB_UID | 33 | Число | Переопределяет идентификатор пользователя www-data по умолчанию, чтобы он соответствовал идентификатору пользователя хоста. ВАЖНО : идентификатор не должен уже использоваться внутри контейнера! (Убедитесь, что он отличается от PIHOLE_UID , если вы его также используете) |
WEB_GID | 33 | Число | Переопределяет идентификатор группы www-данных изображения по умолчанию, чтобы он соответствовал идентификатору группы хостов. ВАЖНО : идентификатор не должен уже использоваться внутри контейнера! (Убедитесь, что он отличается от 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. no , если следует использовать только один DNS. | PIHOLE_DNS_ |
ServerIP | Установите IP-адрес локальной сети вашего сервера, используемый режимами веб-блокировки и адрес привязки Lighttpd. | FTLCONF_LOCAL_IPV4 |
ServerIPv6 | Если в вашей сети v6 настроен IPv6 локальной сети вашего сервера, чтобы полностью заблокировать рекламу IPv6. | FTLCONF_LOCAL_IPV6 |
FTLCONF_REPLY_ADDR4 | Установите IP-адрес локальной сети вашего сервера, используемый режимами веб-блокировки и адрес привязки Lighttpd. | FTLCONF_LOCAL_IPV4 |
FTLCONF_REPLY_ADDR6 | Если в вашей сети v6 настроен IPv6 локальной сети вашего сервера, чтобы полностью заблокировать рекламу IPv6. | FTLCONF_LOCAL_IPV6 |
Чтобы использовать эти переменные окружения в формате запуска Docker, настройте их следующим образом: -e DNS1=1.1.1.1
Вот краткое изложение других аргументов для вашего запуска docker-compose/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 Необязательный | Альтернатива аргументам -p <port>:<port> (невозможно использовать одновременно с -p), если вы не запускаете какое-либо другое веб-приложение. DHCP лучше всего работает с --net=host, в противном случае ваш маршрутизатор должен поддерживать настройки DHCP-реле. |
--cap-add=NET_ADMIN Рекомендуется | Обычно добавляемая возможность DHCP; другие возможности см. в примечании к возможностям ниже. |
--dns=127.0.0.1 Необязательный | Устанавливает настройки разрешения вашего контейнера на localhost, чтобы он мог разрешать имена хостов DHCP из DNSMasq Pi-hole, может исправить ошибки разрешения при перезапуске контейнера. |
--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
, если вы используете режим блокировки по умолчанию. Если вы используете устаревший режим блокировки IP, вам не следует переназначать этот порт.DEFAULT_HOST
в nginxproxy/nginx-proxy, и вам необходимо установить соответствующий VIRTUAL_HOST
для контейнера Pi-hole. Если у вас возникнут проблемы, прочтите файл readme nginxproxy/nginx-proxy для получения дополнительной информации.bridge
сетевого режима Docker по умолчанию изолирует контейнер от сети хоста. Это более безопасный параметр, но для него необходимо установить для параметра Pi-hole DNS параметра «Поведение прослушивания интерфейса» значение «Прослушивать на всех интерфейсах, разрешать все источники». Современные выпуски Ubuntu (17.10+) и Fedora (33+) включают systemd-resolved
, который по умолчанию настроен на реализацию кэширующего преобразователя заглушки DNS. Это предотвратит прослушивание 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'
После внесения этих изменений вам следует перезапустить systemd-resolved с помощью systemctl restart systemd-resolved
После установки pi-hole вам нужно будет настроить своих клиентов для его использования (см. здесь). Если вы использовали приведенную выше символическую ссылку, ваш хост докера будет использовать либо все, что обслуживается DHCP, либо любой статический параметр, который вы настроили. Если вы хотите явно указать серверы имен вашего хоста докера, вы можете отредактировать сетевые планы, найденные в /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 (см. отчет об ошибке). Это также отключает функциональность netplan, поскольку systemd-resolved используется в качестве средства рендеринга по умолчанию (см. man netplan
). Если вы решите отключить службу, вам нужно будет вручную настроить серверы имен, например, создав новый файл /etc/resolv.conf
.
Пользователям более старых версий Ubuntu (около 17.04) необходимо отключить dnsmasq.
@Rikj000 подготовил руководство, которое поможет пользователям установить Pi-hole на Dokku.
Основные теги Docker описаны в следующей таблице. Нажмите здесь, чтобы увидеть полный список тегов. См. примечания к выпуску GitHub, чтобы узнать конкретную версию Pi-hole Core, Web и FTL, включенную в выпуск.
Основанные на дате (включая увеличенные версии «Patch») не связаны с каким-либо семантическим номером версии, скорее дата используется для различения новой версии и старой версии, не более того. Примечания к выпуску всегда будут содержать полную информацию об изменениях в контейнере, включая изменения в основных компонентах Pi-hole.
ярлык | описание |
---|---|
latest | Всегда последний выпуск |
2022.04.0 | Релиз по дате |
2022.04.1 | Второй выпуск за месяц |
dev | Похож на latest , но для ветки разработки (иногда выдвигается) |
*beta | Ранние бета-версии будущих версий — здесь будут драконы |
nightly | Как dev , но обновляется каждую ночь и извлекается из последних ветвей development основных компонентов Pi-hole (Pi-hole, web, FTL). |
К этому докеру применимы стандартные возможности настройки Pi-hole, но с некоторыми особенностями докера, такими как использование монтирования томов докера для сопоставления конфигураций хранимых на хосте файлов со значениями контейнера по умолчанию. Однако следует избегать установки этих файлов конфигурации только для чтения. Тома также важны для сохранения конфигурации в случае удаления контейнера Pi-hole, что является типичным шаблоном обновления докера.
Не пытайтесь обновить ( pihole -up
) или перенастроить ( pihole -r
). Новые образы будут выпущены для обновлений, обновление путем замены старого контейнера новым обновленным образом — это «способ докера». Долгоживущие докер-контейнеры не подходят для докеров, поскольку они стремятся быть переносимыми и воспроизводимыми, поэтому почему бы не создавать их почаще! Просто чтобы доказать, что ты можешь.
docker pull pihole/pihole
docker rm -f pihole
docker run <args> pihole/pihole
( <args>
— ваши предпочтительные тома запуска и переменные окружения)Чем хорош этот стиль обновления? Несколько причин: все начинают с одного и того же базового образа, который был протестирован и признан работоспособным. При развертывании обновлений не нужно беспокоиться об обновлении с A на B, с B на C или с A на C, это снижает сложность и просто позволяет каждый раз «начинать заново», сохраняя при этом настройки томов. По сути, я поощряю принципы сервера Phoenix для ваших контейнеров.
Чтобы перенастроить Pi-hole, вам нужно будет либо использовать существующие переменные среды контейнера, либо, если нужная вам переменная отсутствует, используйте веб-интерфейс или команды CLI.
Вот несколько соответствующих вики-страниц из документации Pi-hole. Для внесения изменений в 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
Веб-сервер и службу DNS внутри контейнера при необходимости можно настроить. Любые файлы конфигурации, которые вы монтируете в /etc/dnsmasq.d/
будут загружаться dnsmasq при запуске или перезапуске контейнера или, если вам нужно изменить конфигурацию Pi-hole, она находится в /etc/dnsmasq.d/01-pihole.conf
. Сценарии запуска Docker перед запуском запускают тест конфигурации, чтобы сообщить вам о любых ошибках в журнале Docker.
Аналогично для веб-сервера вы можете настроить конфигурации в /etc/lighttpd.
Пока ваша системная служба Docker автоматически запускается при загрузке и вы запускаете контейнер с --restart=unless-stopped
ваш контейнер всегда должен запускаться при загрузке и перезапускаться при сбоях. Если вы предпочитаете, чтобы ваш Docker-контейнер работал как служба systemd, добавьте файл pihole.service в «/etc/systemd/system»; настройте любое имя вашего контейнера и удалите --restart=unless-stopped
из запуска докера. Затем, после того как вы изначально создали Docker-контейнер с помощью приведенной выше команды docker run, вы можете управлять им с помощью «systemctl start pihole» или «systemctl stop pihole» (вместо docker start
/ docker stop
). Вы также можете включить его автоматический запуск при загрузке с помощью «systemctl Enable pihole» (в отличие от --restart=unless-stopped
и обеспечения автоматического запуска службы Docker при загрузке).
ПРИМЕЧАНИЕ. После первоначального запуска вам может потребоваться вручную остановить Docker-контейнер с помощью «docker stop pihole», прежде чем systemctl сможет начать управлять контейнером.
DNSMasq/FTLDNS предполагает наличие следующих возможностей:
CAP_NET_BIND_SERVICE
: разрешает привязку FTLDNS к сокетам TCP/UDP ниже 1024 (в частности, служба DNS на порту 53).CAP_NET_RAW
: использовать необработанные и пакетные сокеты (необходимы для обработки запросов DHCPv6 и проверки того, что IP-адрес не используется, прежде чем сдавать его в аренду)CAP_NET_ADMIN
: изменение таблиц маршрутизации и других операций, связанных с сетью (в частности, вставка записи в таблицу соседей для ответа на запросы DHCP с использованием одноадресных пакетов).CAP_SYS_NICE
: FTL назначает себя важным процессом, чтобы получить больше времени обработки, если последнее заканчивается.CAP_CHOWN
: нам нужно иметь возможность менять владельца файлов журналов и баз данных в случае, если FTL запускается от имени другого пользователя, чем pihole
Этот образ автоматически предоставляет эти возможности, если они доступны, процессу FTLDNS, даже если он запущен от имени пользователя без полномочий root.
По умолчанию Docker не включает возможность NET_ADMIN
для непривилегированных контейнеров, и рекомендуется явно добавить ее в контейнер с помощью --cap-add=NET_ADMIN
.
Однако, если объявления маршрутизатора DHCP и IPv6 не используются, можно безопасно пропустить их. Для самых параноиков должна быть возможность даже явно отключить возможность NET_RAW
, чтобы предотвратить ее автоматическое получение FTLDNS.
Мы заметили, что многие люди используют Watchtower для обновления своих контейнеров Pi-hole. По той же причине, по которой мы не предоставляем функцию автоматического обновления при установке на «голое железо», у вас не должно быть системы, автоматически обновляющей ваш контейнер Pi-hole. Особенно без присмотра. Как бы мы ни старались гарантировать, что ничего не пойдет не так, иногда что-то идет не так, и вам нужно выделить время, чтобы вручную извлечь и обновить версию контейнера, который вы хотите запустить. Процесс обновления должен осуществляться следующим образом:
Pi-hole — неотъемлемая часть вашей сети, не позволяйте ей выйти из строя из-за автоматического обновления посреди ночи.
Пожалуйста, сообщайте о проблемах в проекте GitHub, если вы подозреваете, что что-то связано с Docker. На вопросы о Pi-hole или общих вопросах о докере лучше всего отвечать на наших форумах пользователей.