Самохостинг (часть 4) - AdGuard

Самохостинг (часть 4) - AdGuard

AdGuard Home: Что это и для чего?

AdGuard Home — это бесплатное программное обеспечение, которое работает как локальный DNS-сервер, фильтрующий рекламу и блокирующий вредоносные сайты. Его основные преимущества:

  • Блокировка рекламы на уровне всей сети, а не только на одном устройстве.
  • Защита от вредоносных сайтов , таких как фишинговые ресурсы или сайты с вирусами.
  • Семейная защита : возможность ограничить доступ к нежелательному контенту (например, для детей).
  • Логирование запросов для анализа активности в сети.
  • Простота использования : удобный веб-интерфейс для управления настройками.

AdGuard Home особенно полезен для домашних сетей, где несколько устройств подключены к одному Wi-Fi. Он позволяет централизованно контролировать трафик и повышать безопасность всех устройств в сети.

Запускаем AdGuard Home в Docker

Для развертывания AdGuard Home будем добавлять в уже существующий файлик docker-compose.yaml, в котором у нас уже есть Traefik.

  adguard-home:
    <<: *defaults
    image: adguard/adguardhome
    container_name: "adguard"
    volumes:
      - "/opt/docker/adguard/work:/opt/adguardhome/work"
      - "/opt/docker/adguard/confdir:/opt/adguardhome/conf"
    ports:
      - 53:53/udp
      - 53:53/tcp
      - 192.168.1.2:8002:80/tcp
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.adguard.rule=Host(`adguard.home.example.com`)"
      - "traefik.http.routers.adguard.entrypoints=https"
      - "traefik.http.routers.adguard.tls.certresolver=myresolver"
      - "traefik.http.services.adguard-opt.loadbalancer.server.port=80"

Объяснение конфигурации:

  1. image: adguard/adguardhome
    Используется официальный образ AdGuard Home из Docker Hub.
  2. volumes
    • /opt/docker/adguard/work:/opt/adguardhome/work — рабочая директория для хранения данных AdGuard Home.
    • /opt/docker/adguard/confdir:/opt/adguardhome/conf — директория для конфигурационных файлов.
  3. ports
    • 53:53/udp и 53:53/tcp — стандартные порты для DNS-запросов.
    • 192.168.1.2:8002:80/tcp — порт для веб-интерфейса AdGuard Home. Замените 192.168.1.2 на IP вашего сервера.
  4. labels
    Эти метки используются для интеграции с Traefik (прокси-сервер). Они обеспечивают HTTPS-защиту через Let's Encrypt и маршрутизацию запросов.

Запуск AdGuard Home

  1. Сохраните файл docker-compose.yaml.
  2. Откройте терминал и выполните команду:
  docker-compose up -d
  1. После запуска откройте браузер и перейдите по адресу http://192.168.1.2:8002 (или используйте указанный вами IP-адрес).

На странице настройки укажите пароль администратора и настройте базовые параметры работы AdGuard Home.

Интеграция с DNS RouteSync Navigator

Если вы запускали DNS RouteSync Navigator, то у вас AdGuard не запустится, т.к. 53 порт будет занят. Давайте заставим их работать в связке.

Для начала исправим конфигурацию DNS RouteSync Navigator'a. Для этого вам нужно перейти в его рабочий каталог и остановить его:

cd~/projects/DNS-RouteSync-Navigator
./start.sh

Теперь правим в config.ini IP адрес, который он будет слушать. Для этого в параметр server_ip пропиши адрес вашего сервера. В моем случае это будет 192.168.1.2. В качестве public_dns_1 и public_dns_2 указываем 127.0.0.1 и 127.0.0.2 соответственно. И запускаем сервис назад.

./start.sh

Дальше исправляем конфиг AdGuard в docker-compose.yaml:

  adguard-home:
    <<: *defaults
    image: adguard/adguardhome
    container_name: "adguard"
    volumes:
      - "/opt/docker/adguard/work:/opt/adguardhome/work"
      - "/opt/docker/adguard/confdir:/opt/adguardhome/conf"
    ports:
      - 127.0.0.1:53:53/udp
      - 127.0.0.1:53:53/tcp
      - 127.0.0.2:53:53/udp
      - 127.0.0.2:53:53/tcp
      - 192.168.1.2:8002:80/tcp
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.adguard.rule=Host(`adguard.home.exapmple.com`)"
      - "traefik.http.routers.adguard.entrypoints=https"
      - "traefik.http.routers.adguard.tls.certresolver=myresolver"
      - "traefik.http.services.adguard-opt.loadbalancer.server.port=80"

Поднимаем AdGuard:

docker compose up -d

Теперь DNS RouteSync Navigator будет использовать AdGuard в качестве апстрима, что позволит резать рекламу и немного поднять уровень защиты домашней сети.

Кстати, в AdGuard можно настроить подмену адресов для доменных имен вашей сети, чтоб не ходить на ваш сервер через внешний канал.

Заходим в "Фильтры" - "Перезапись DNS-запросов" и добавляем домены, которые вам нужны. Маски он тоже понимает. Т.е. можно просто отправить "*.home.example.com" на 192.168.1.2 и все поддомены "home.example.com" из дома будут ходить сразу на сервер. Удобно.

Read more

🔄 Своя Dropbox-альтернатива: Syncthing

🔄 Своя Dropbox-альтернатива: Syncthing

🧠 Зачем? Облачные сервисы — удобно, но: * не хочется платить Google/Dropbox за хранение своих файлов * хочется моментально синхронизировать фото, документы и заметки между устройствами * и делать это на своём сервере, без отправки данных «в облако» 👉 Решение — Syncthing: децентрализованный, зашифрованный, open source-синк между любыми устройствами. 🚀 Что ты получишь? * 📂 Автосинк папок между сервером,

🎧 Свой подкаст-сервер за 5 минут: Podgrab

🎧 Свой подкаст-сервер за 5 минут: Podgrab

✨ Зачем? Подкасты — отличный способ учиться, развлекаться и быть в курсе мира. Но что, если: * Хочется слушать подкасты офлайн * Хочется архивировать любимые шоу * Не устраивают сторонние сервисы, реклама и трекеры Решение: Podgrab — простой подкаст-граббер, который автоматически скачивает новые выпуски с любого RSS. А в связке с Audiobookshelf ты получаешь полноценный медиасервер.

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Безопасное управление конфигурациями в Ansible: Полное руководство по использованию rescue и always

Введение: Почему это важно В мире DevOps и системного администрирования существует простое правило: всё ломается. Особенно в самый неподходящий момент. Когда вы изменяете конфигурацию критического сервиса (например, Nginx), цена ошибки может быть очень высока — от простого даунтайма до потери данных. Ansible предлагает элегантное решение для безопасного внесения изменений через механизм

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Использование ~/.ssh/authorized_keys для управления входящими SSH-соединениями

Файл ~/.ssh/authorized_keys позволяет настроить команды, которые будут выполняться при входящих SSH-соединениях. Это полезный инструмент для управления доступом и обеспечения безопасности, особенно при работе с резервным копированием данных. Настройка резервного копирования с использованием authorized_keys В данном примере рассматривается использование authorized_keys для настройки резервного копирования базы данных Bacula