No description
Find a file
2026-04-24 10:11:46 +03:00
adguardvpn-watcher.conf init commit 2026-04-24 10:11:46 +03:00
adguardvpn-watcher.service init commit 2026-04-24 10:11:46 +03:00
adguardvpn-watcher.sh init commit 2026-04-24 10:11:46 +03:00
countries.conf init commit 2026-04-24 10:11:46 +03:00
install.sh init commit 2026-04-24 10:11:46 +03:00
README.md init commit 2026-04-24 10:11:46 +03:00
test.sh init commit 2026-04-24 10:11:46 +03:00
uninstall.sh init commit 2026-04-24 10:11:46 +03:00

AdGuard VPN Watcher

Скрипт и сервис systemd для мониторинга AdGuard VPN и автоматического переподключения.

Возможности

  • Мониторинг статуса: Проверка подключения как системного VPN, так и SOCKS5 прокси
  • Проверка трафика: Автоматическая проверка доступности сайтов через curl
  • Ротация стран: При проблемах переподключение к другим странам с настраиваемым приоритетом
  • Экспоненциальный backoff: Увеличение задержек между попытками переподключения
  • Автообновление: При запуске проверяется наличие новой версии и выполняется обновление при необходимости
  • Гибкая конфигурация: Все настройки вынесены в отдельный конфиг-файл
  • User-режим: Сервис запускается от пользователя (не системный)

Установка (для пользователя)

1. Скопируйте файлы

# Скрипт
cp adguardvpn-watcher.sh ~/.local/bin/

# Конфиг
cp adguardvpn-watcher.conf ~/.config/

# Сервис systemd (user-режим)
cp adguardvpn-watcher.service ~/.config/systemd/user/

2. Настройте конфиг

Отредактируйте ~/.config/adguardvpn-watcher.conf для настройки:

  • Приоритетные страны — список стран для переподключения (приоритет по порядку)
  • Список локаций — получается автоматически из adguardvpn-cli list-locations
  • Порт SOCKS5
  • Интервалы проверки
  • Таймауты переподключения

3. Включите сервис

systemctl --user daemon-reload
systemctl --user enable --now adguardvpn-watcher.service

4. Просмотр логов

# Журнал systemd (user-режим)
journalctl --user -u adguardvpn-watcher.service -f

# Локальный файл лога
tail -f ~/.cache/adguardvpn-watcher/adguardvpn-watcher.log

Конфигурация

Конфигурационный файл ~/.config/adguardvpn-watcher.conf содержит:

# Режим работы: "vpn", "socks5" или "both"
ADGUARD_MODE=both

# Приоритетные страны (если недоступны, пробуются из списка локаци)
declare -a PRIORITY_COUNTRIES=(
    "fi"
    "se"
    "de"
    "nl"
    "fr"
    "cz"
    "bg"
    "hu"
)

# Настройки проверки трафика
CHECK_INTERVAL=30
CHECK_TIMEOUT=10

# Порт SOCKS5
SOCKS5_PORT=1080

Режимы работы

VPN Mode (системный VPN)

Проверяет статус подключения через adguardvpn-cli status.

SOCKS5 Mode (прокси)

Запускает SOCKS5 прокси на указанном порту и проверяет его доступность.

Both Mode (оба режима)

Ожидает, что оба режима работают корректно.

Как это работает

  1. Старт: Запускается adguardvpn-watcher.sh
  2. Автообновление: Проверяется наличие новой версии и выполняется обновление (если включено AUTO_UPDATE=true)
  3. Проверка: Каждые 30 секунд проверяются:
    • Статус VPN/SOCKS5 (из adguardvpn-cli status)
    • Доступность сайтов через curl
  4. Ротация: Если что-то не так:
    • Выбирается случайная страна из списка (приоритетные страны имеют больший шанс)
    • Выполняется переподключение
    • Если не удалось — ждем и пробуем снова (с экспоненциальной задержкой)

Примеры

Проверка статуса вручную

~/.local/bin/adguardvpn-watcher.sh status

Переподключение вручную

~/.local/bin/adguardvpn-watcher.sh reconnect

Ручной запуск с конкретной страной

ADGUARD_MODE=socks5 \
ADGUARD_CLI=/usr/local/bin/adguardvpn-cli \
~/.local/bin/adguardvpn-watcher.sh

Логирование

Логи сохраняются в ~/.cache/adguardvpn-watcher/adguardvpn-watcher.log с форматом:

[2024-04-07 10:30:15] [INFO] Starting AdGuard VPN Watcher
[2024-04-07 10:30:16] [INFO] CLI version: adguardvpn-cli v1.2.3
[2024-04-07 10:30:17] [INFO] Checking for AdGuard VPN updates...
[2024-04-07 10:30:18] [INFO] New version available: 1.7.12
[2024-04-07 10:30:19] [INFO] Performing auto-update to 1.7.12...
[2024-04-07 10:30:20] [INFO] Checking both modes...
[2024-04-07 10:30:21] [INFO] Traffic check: 4/5 sites reachable (80%)

Зависимости

  • adguardvpn-cli (должен быть в /usr/local/bin/ или настроен в конфиге)
  • curl или wget для проверки трафика
  • systemd для сервиса (user-режим)

Troubleshooting

Сервис не стартует

systemctl --user status adguardvpn-watcher.service
journalctl --user -u adguardvpn-watcher.service -n 50

Проверка CLI

/usr/local/bin/adguardvpn-cli --version
/usr/local/bin/adguardvpn-cli status
/usr/local/bin/adguardvpn-cli list-locations

Ручной тест переподключения

systemctl --user stop adguardvpn-watcher.service
~/.local/bin/adguardvpn-watcher.sh

Лицензия

MIT License