
WireHole — это комбинация WireGuard, Pi-hole и Unbound в рамках проекта docker-compose, предназначенная для быстрого и лёгкого создания персонально управляемого полного или разделённого WireGuard VPN с возможностью блокировки рекламы благодаря Pi-hole, а также кэширования DNS, дополнительных опций приватности и вышестоящих провайдеров через Unbound.
WireHole — это docker-compose проект, объединяющий WireGuard, PiHole и Unbound для создания полного или раздельного VPN-туннеля, который легко развернуть и управлять. Эта настройка позволяет получить VPN с блокировкой рекламы через PiHole и улучшенной конфиденциальностью DNS и кэшированием через Unbound.
👤 Devin Stokes
Приветствуются вклады, вопросы и запросы новых функций! Не стесняйтесь обращаться к странице issues.
Поставьте ⭐, если этот проект помог вам!
Образ поддерживает несколько архитектур, таких как x86-64, arm64 и armhf. Образ linuxserver/wireguard автоматически выбирает правильный образ для вашей архитектуры.
Архитектуры, поддерживаемые этим образом:
| Архитектура | Тег |
|---|---|
| x86-64 | amd64-latest |
| arm64 | arm64v8-latest |
| armhf | arm32v7-latest |
Для начала работы с WireHole клонируйте репозиторий и запустите контейнеры:
#!/bin/bash
# Клонируем репозиторий WireHole с GitHub
git clone https://github.com/IAmStoxe/wirehole.git
# Переходим в клонированный репозиторий
cd wirehole
# Обновляем файл .env вашей конфигурацией
cp .env.example .env
nano .env # Или используйте любой текстовый редактор для редактирования .env
# Заменяем placeholder общедоступного IP в docker-compose.yml
sed -i "s/REPLACE_ME_WITH_YOUR_PUBLIC_IP/$(curl -s ifconfig.me)/g" docker-compose.yml
# Запускаем Docker контейнеры
docker compose up
Не забудьте установить безопасные пароли для WGUI_SESSION_SECRET, WGUI_PASSWORD и WEBPASSWORD в вашем файле .env.
Файл .env содержит ряд переменных окружения, необходимых для настройки сервисов WireHole внутри Docker контейнеров. Ниже приведено подробное описание каждой переменной:
TIMEZONE: Устанавливает часовой пояс для всех сервисов. Важно для логирования и операций, зависящих от времени. Пример: America/Los_Angeles.PUID и PGID: Обеспечивают правильные разрешения для сервисов при доступе и изменении файлов на хост-системе. Должны совпадать с идентификатором пользователя и группы хост-системы.UNBOUND_IPV4_ADDRESS: Статический IP-адрес, назначенный Unbound, обеспечивающий его доступность для Pi-hole.PIHOLE_IPV4_ADDRESS: Статический IP-адрес, назначенный Pi-hole, позволяющий ему обрабатывать DNS-запросы для сети.WIREGUARD_SERVER_PORT: Порт, на котором будет слушать сервер WireGuard для входящих подключений.WIREGUARD_PEER_DNS: DNS-сервер, который будут использовать клиенты WireGuard; обычно устанавливается в адрес Pi-hole.WIREGUARD_PEERS: Указывает количество конфигураций пиров/клиентов для генерации в WireGuard.WGUI_SESSION_SECRET: Секретный ключ, используемый для шифрования данных сессии WireGuard-UI. Должен быть установлен в безопасное случайное значение.WGUI_USERNAME и WGUI_PASSWORD: Учётные данные для доступа к интерфейсу WireGuard-UI.WGUI_MANAGE_START: При значении true WireGuard-UI будет управлять запуском сервиса WireGuard.WGUI_MANAGE_RESTART: При значении true WireGuard-UI будет управлять перезапуском сервиса WireGuard.WEBPASSWORD: Пароль для доступа к веб-интерфейсу Pi-hole. Должен быть установлен в безопасное значение для предотвращения несанкционированного доступа.PIHOLE_DNS: IP-адрес сервера Unbound, используемый Pi-hole для разрешения DNS-запросов.Не забудьте заменить любые значения по умолчанию или placeholder на безопасные уникальные значения перед развертыванием сервисов.
Для раздельного VPN-туннеля настройте параметр AllowedIps вашего WireGuard клиента на 10.2.0.0/24, что будет маршрутизировать через VPN только трафик веб-панели и DNS.
Управляйте вашим VPN WireGuard через WireGuard-UI по адресу:
http://{YOUR_SERVER_IP}:5000
Войдите, используя WGUI_USERNAME и WGUI_PASSWORD, которые вы задали в файле .env.
Подключитесь к WireGuard и откройте панель администрирования Pi-hole по адресу http://10.2.0.100/admin. Пароль для входа — тот, который указан как WEBPASSWORD в вашем файле .env.
Настройте DDNS, установив WG_HOST в вашем файле .env на URL вашего DDNS.
wireguard:
environment:
- WG_HOST=my.ddns.net
Объясните все переменные окружения из вашего файла .env. (См. предыдущий раздел, где мы предоставили таблицу с пояснениями каждой переменной.)
Обсудите любые дополнительные настройки, такие как секреты Docker, настройки umask, идентификаторы пользователя/группы, добавление клиентов, изменение DNS-провайдеров и сетевые соображения. Убедитесь, что все инструкции обновлены в соответствии с текущей конфигурацией.
Предоставьте информацию о том, как получить доступ к оболочке при запущенном контейнере, просмотреть логи, обновить контейнеры и ответить на часто задаваемые вопросы. Убедитесь, что все команды и шаги обновлены в соответствии с текущими версиями и практиками.
Благодарность LinuxServer.io за поддержку образа Wireguard и другие вклады в проект.