Все для домашнего медиа - Отзывы | Советы по покупке | Дизайн | Новости технологий

Как запустить PiHole в Docker на Ubuntu, без обратного прокси-сервера?

4 519

Docker облегчает запуск нескольких приложений. Но как (и почему) вы запускаете PiHole в Docker в системе Ubuntu с обратным прокси-сервером Traefik впереди? Есть несколько преимуществ для этого, и не так много информации о том, как это сделать. Поэтому в этом руководстве я поделюсь инструкциями по настройке PiHole Docker, и мы сделаем это с помощью docker-compose для простоты. Если вы не используете Docker Compose, проверьте эту страницу на наличие команд Docker .

Недавно я опубликовал свой полный учебник PiHole, в котором содержится вся информация, необходимая для настройки экземпляра PiHole на Raspberry Pi для блокировки всей домашней рекламы. Работая над этим руководством, я также попытался настроить PiHole на Docker, который станет отличным дополнением к моему медиа-серверу Docker. Проблема заключалась в том, что мой док- сервер находился за обратным прокси- сервером Traefik с SSL-сертификатами Let’s Encrypt. Я не смог найти никакой информации о том, как настроить PiHole с обратным прокси-сервером Traefik. Вчера я разобрался, как это сделать. Итак, вот мое руководство по PiHole Docker для систем Ubuntu / Debian с обратным прокси-сервером Traefik. Обратите внимание, что мы используем прокси WebUI (порт 80), а не сам PiHole, который использует порт 53.

Changelog:

  • 27 ноября 2018 г. – Первоначальная публикация.
  • 6 июня 2019 г. – добавлен шаг 0.

Я опускаю много основной информации, которая была рассмотрена в моем предыдущем руководстве. Поэтому я настоятельно рекомендую прочитать его, даже если все, что там не относится к вам, прежде чем следовать этому руководству.

Преимущества запуска PiHole на Docker

Pi-Hole – это приложение для блокировки рекламы в сети. Если вы не знаете, что такое PiHole, обязательно прочитайте мое предыдущее руководство по PiHole. Docker чрезвычайно упрощает настройку нескольких приложений. В начале этого года я переместил все свои приложения для домашнего сервера, включая Home Assistant, в Docker с обратным прокси-сервером Traefik, и все прошло гладко с автоматическими SSL-сертификатами Let’s Encrypt. Вот некоторые основные преимущества запуска PiHole в Docker:

  • Простая, простая в настройке и обслуживании. Docker Compose делает вещи еще проще.
  • Долговечность – я говорю это потому, что, если у вас включено ведение журнала запросов, вы можете прожечь свою SD-карту на Raspberry Pi. Это означает, что вам придется все заново настроить. Шансы на что-то подобное на сервере меньше.
  • Расширьте свой существующий домашний сервер и устраните необходимость в отдельном устройстве (например, Raspberry Pi).

Но есть еще одно большое преимущество. PiHole требует, чтобы порты 80 и 443 были свободны для использования. Однако эти порты могут требоваться другими приложениями (например, веб-сервером). И если вы следовали моему руководству по обратному прокси-серверу Traefik для настройки вашего сервера Docker Media, то для Traefik требуются порты 80 и 443. Поэтому невозможно установить PiHole непосредственно в системах Ubuntu или Linux. Обратный прокси-сервер – это путь в таких ситуациях, и Docker делает это намного проще. Итак, давайте посмотрим, как запустить PiHole в Docker на сервере Ubuntu с обратным прокси-сервером Traefik.

Требования

Вот что вам нужно, чтобы успешно следовать этому руководству по Pi Hole Docker:

Кроме того, вам понадобится доступ к вашему серверу Ubuntu напрямую или через SSH. [ Читать: 10 лучших клиентов SSH для Windows: бесплатные альтернативы PuTTY ]

Руководство по настройке PiHole Docker


Как запустить PiHole в Docker на Ubuntu, без обратного прокси-сервера?

PiHole Docker – Панель инструментов

Прежде чем мы продолжим, страница PiHole в Docker Hub – отличный ресурс для чтения. Некоторые переменные и настройки, используемые в этом руководстве, подробно описаны на этой странице.

Шаг 0: вытянуть изображение PiHole

На следующем шаге (шаг 1) вы убьете свой сервер DNS resolver. Когда это будет сделано, docker-compose не сможет добраться до док-серверов, чтобы получить последний образ для PiHole. Поэтому сначала вытяните последнее изображение PiHole с помощью следующей команды:

docker pull pihole/pihole:latest

Вывод должен выглядеть примерно так:

Как запустить PiHole в Docker на Ubuntu, без обратного прокси-сервера?

Docker Pull PiHole Последнее изображение

После того, как вытащил, вы можете перейти к шагу 1.

Шаг 1: Изменить конфигурацию сети Ubuntu

Поскольку PiHole делает себя DNS-сервером и использует порт 53, возникают конфликты с сетью Ubuntu Server (docker host). На самом деле, это была самая большая проблема, из-за которой я не запускал PiHole в Docker. PiHole работал успешно, но мой сервер Ubuntu не смог получить доступ к интернет-ресурсам. Итак, вот изменения конфигурации сети, которые необходимо внести на вашем сервере Ubuntu, прежде чем приступить к настройке док-станции PiHole.

Сначала отключите и остановите преобразователь DNS Ubuntu, используя следующие две команды:

sudo systemctl disable systemd-resolved.service sudo systemctl stop systemd-resolved.service

Затем откройте конфигурацию диспетчера сети, используя следующую команду для редактирования:

sudo nano /etc/NetworkManager/NetworkManager.conf

Добавьте dns = default в [main], чтобы содержимое файла выглядело так, как показано ниже:

[main] plugins=ifupdown,keyfile dns=default ... ... ...

Затем удалите или даже лучше переименуйте файл /etc/resolv.conf (это символическая ссылка), используя следующую команду:

sudo mv /etc/resolv.conf /etc/resolv.conf.bak

В случае возникновения проблемы вы можете переименовать файл обратно в /etc/resolv.conf. Наконец, перезапустите сетевой менеджер, используя следующую команду.

sudo service network-manager restart

Теперь, когда ваша система подготовлена, давайте перейдем к настройке PiHole в Docker с обратным прокси-сервером Traefik.

Рекомендуемые руководства:

Шаг 2а: Запустите PiHole в Docker с обратным прокси

Если вы не знакомы с Docker и Docker compose, просмотрите мой учебник, прежде чем продолжить. На данный момент, я предполагаю, что у вас уже есть рабочий файл создания докера.

В Докер примере создания сообщения кодового блока PiHole ниже, ${$USERDIR}, ${SERVER_IP}, ${TZ}, ${DOMAINNAME}и т.д., будут автоматически заполняться с помощью файла из создания сообщения файла среды (/ и т.д. / окружающей среды ). Если у вас его еще нет, проверьте это руководство, чтобы создать файл среды. Кроме того, вы можете заменить переменные окружения в блоке docker-compose ниже фактическими значениями.

Вот код, который нужно добавить (копировать-вставить) в файл docker-compose (обратите внимание на пробелы в начале каждой строки). Обратите внимание, что некоторые строки закомментированы с # перед. Эти строки можно включить, удалив # перед, чтобы настроить состав докера PiHole. Если вы раскомментируете, обратите внимание на выравнивание линий, что очень важно для работы YAML.

pihole: container_name: pihole domainname: docker hostname: pihole image: pihole/pihole:latest ports: - '53:53/tcp' - '53:53/udp' # - '67:67/udp' - 'XXXX:80' - 'YYYY:443' restart: unless-stopped volumes: - ${USERDIR}/docker/pihole/pihole:/etc/pihole # - ${USERDIR}/docker/pihole/pihole.log:/var/log/pihole.log - ${USERDIR}/docker/pihole/dnsmasq.d:/etc/dnsmasq.d cap_add: - NET_ADMIN environment: - ServerIP=${SERVER_IP} - PROXY_LOCATION=pihole - VIRTUAL_HOST=pihole.${DOMAINNAME} - VIRTUAL_PORT=80 - TZ=${TZ} - WEBPASSWORD=PIHOLEWEBPASSWORD - DNS1=127.0.0.1 - DNS2=1.1.1.1 labels: - "traefik.enable=true" - "traefik.backend=pihole" - "traefik.port=80" - "traefik.frontend.rule=HostRegexp:pihole.${DOMAINNAME},{catchall:.*}" - "traefik.frontend.priority=1" - traefik.frontend.headers.SSLRedirect=true - traefik.frontend.headers.STSSeconds=315360000 - traefik.frontend.headers.browserXSSFilter=true - traefik.frontend.headers.contentTypeNosniff=true - traefik.frontend.headers.forceSTSHeader=true - traefik.frontend.headers.SSLHost=${DOMAINNAME} - traefik.frontend.headers.STSIncludeSubdomains=true - traefik.frontend.headers.STSPreload=true - traefik.frontend.headers.frameDeny=true

Заменить / Настроить:

  1. XXXX– номер порта на хост-машине, который свободен и будет подключаться к порту 80 контейнера PiHole. Например, я использую 8182.
  2. YYYY– номер порта на хост-машине, который свободен и будет подключаться к порту 443 контейнера PiHole. Порт 443 предназначен для того, чтобы обеспечить место для рекламы, использующей SSL. Например, я использую 8183.
  3. 67:67/udp– Я это закомментировал. Если вы хотите, чтобы PiHole выступал в качестве вашего DHCP-сервера, вам нужно раскомментировать это. Я позволил моему маршрутизатору обрабатывать DHCP. Есть некоторые незначительные неудобства в том, чтобы позволить вашему маршрутизатору быть сервером DHCP вместо PiHole. Однако это не влияет на типичного домашнего пользователя.
  4. pihole.log– Я это закомментировал. Но если вы хотите, чтобы ваши журналы PiHole сохранялись (не терялись при воссоздании / обновлении док-контейнеров), то вы должны раскомментировать это. Кроме того, вам придется бежать touch pihole.logвнутрь ${USERDIR}/docker/pihole/. Это создаст пустой файл журнала для использования PiHole.
  5. cap_add– Я прокомментировал эту и следующую строку. Чтобы PiHole действовал как DHCP-сервер, эти две строки должны быть некомментированы.
  6. PIHOLEWEBPASSWORD – Пароль для PiHole WebUI.
  7. DNS1 and DNS2– Я в списке Cloudflare DNS IP 1.1.1.1 и 1.0.0.1 (я рекомендую это для конфиденциальности). Вы можете использовать все, что вам подходит.

Сохраните и запустите docker-compose.ymlи проверьте журналы на наличие ошибок:

docker-compose -f ${USERDIR}/docker/docker-compose.yml up -d ; docker-compose logs -tf --tail="50" pihole

Если вы не видите сообщений об ошибках, нажмите Ctrl C для выхода. Веб-интерфейс администратора PiHole должен быть доступен по адресу https://pihole.example.com/admin/.

Шаг 2b: PiHole на Docker без обратного прокси

Так что, если у вас нет обратного прокси и порты 80 и 443 свободны (без веб-сервера). Вы все еще можете использовать Docker для настройки PiHole. В этом случае самым большим преимуществом является простота и изоляция PiHole от хост-машины.

Некоторая предварительная информация, представленная на шаге 2а, применима и здесь.

Вот фрагмент кода для настройки докера, чтобы запустить PiHole без обратного прокси-сервера.

pihole: container_name: pihole domainname: docker hostname: pihole image: pihole/pihole:latest ports: - '53:53/tcp' - '53:53/udp' # - '67:67/udp' - '80:80' - '443:443' restart: unless-stopped volumes: - ${USERDIR}/docker/pihole/pihole:/etc/pihole # - ${USERDIR}/docker/pihole/pihole.log:/var/log/pihole.log - ${USERDIR}/docker/pihole/dnsmasq.d:/etc/dnsmasq.d cap_add: - NET_ADMIN environment: - ServerIP=${SERVER_IP} - TZ=${TZ} - WEBPASSWORD=PIHOLEWEBPASSWORD - DNS1=127.0.0.1 - DNS2=1.1.1.1

Заменить / Настроить:

  1. 67:67/udp– Я это закомментировал. Если вы хотите, чтобы PiHole выступал в качестве вашего DHCP-сервера, вам нужно раскомментировать это. Я позволил моему маршрутизатору обрабатывать DHCP. Есть некоторые незначительные неудобства в том, чтобы позволить вашему маршрутизатору быть сервером DHCP вместо PiHole. Однако это не влияет на типичного домашнего пользователя.
  2. pihole.log– Я это закомментировал. Но если вы хотите, чтобы ваши журналы PiHole сохранялись (не терялись при воссоздании / обновлении док-контейнеров), то вы должны раскомментировать это. Кроме того, вам придется бежать touch pihole.logвнутрь ${USERDIR}/docker/pihole/. Это создаст пустой файл журнала для использования PiHole.
  3. cap_add– Я прокомментировал эту и следующую строку. Чтобы PiHole действовал как DHCP-сервер, эти две строки должны быть некомментированы.
  4. PIHOLEWEBPASSWORD – Пароль для PiHole WebUI.
  5. DNS1 and DNS2– Я в списке Cloudflare DNS IP 1.1.1.1 и 1.0.0.1 (я рекомендую это для конфиденциальности). Вы можете использовать все, что вам подходит.

Сохраните и запустите docker-compose.ymlи проверьте журналы на наличие ошибок:

docker-compose -f ${USERDIR}/docker/docker-compose.yml up -d ; docker-compose logs -tf --tail="50" pihole

Если вы не видите сообщений об ошибках, нажмите Ctrl C для выхода. В этом случае, если вы не настроите переадресацию портов на маршрутизаторе, вы не сможете получить доступ к веб-интерфейсу администратора PiHole из-за пределов вашей домашней сети. В вашей домашней сети веб-интерфейс администратора PiHole должен быть доступен по адресу https: // SERVER-IP-ADDRESS / admin /.

Шаг 3: Конфигурация PiHole и настройки

Я уже рассмотрел конфигурацию и настройки PiHole:

Шаг 4: Доступ к PiHole с помощью командной строки (при необходимости)

Это довольно легко получить доступ к PiHole, работающему на отдельной системе, используя SSH. Как вы получаете доступ к PiHole по командной строке, когда он запускается в докере? Вы можете сделать это с помощью следующей команды:

docker exec -ti pihole /bin/bash

Вы должны быть на терминале внутри контейнера докера. Отсюда вы сможете запускать все команды PiHole, перечисленные в моем предыдущем руководстве по PiHole.

Заключительные мысли о запуске PiHole в Docker

В этом руководстве по PiHole Docker я предполагаю, что у вас есть собственное доменное имя. Вы также можете выполнить то же самое, используя бесплатный динамический DNS. Это было подробно описано в моем предыдущем уроке Traefik.

Я использовал только один экземпляр PiHole в своей сети, и это был Raspberry Pi. Теперь я установил второй экземпляр PiHole в Docker. На моем маршрутизаторе я указал IP-адреса моего сервера Raspberry Pi и Ubuntu в качестве IP-адресов для DNS-серверов имен. Обычно рекомендуется минимум 2 DNS-сервера. С моей установкой Docker PiHole, выступающей в качестве второго сервера PiHole, я теперь могу предоставить два DNS-сервера для распределения нагрузки.

Если вы хотите запустить PiHole в докере, зайдите и сделайте это. Вы будете удивлены, насколько легко это сделать, если вы это сделаете. И вы решили подключиться, надеюсь, это руководство по настройке PiHole Docker окажется полезным.

Источник записи: https://www.smarthomebeginner.com

Этот веб-сайт использует файлы cookie для улучшения вашего опыта. Мы предполагаем, что вы согласны с этим, но вы можете отказаться, если хотите. Принимаю Подробнее