Marzban Torrent Blocker — это приложение для блокировки использования торрентов пользователями панели Marzban. Приложение анализирует логи, обнаруживает использование торрентов и временно блокирует пользователя, отправляя уведомления в Telegram администратору и, опционально, пользователю. Возможна работа и с другими панелями. А также напрямую с Xray.
- Мониторинг логов нод и панели на предмет использования торрентов.
- Блокировка IP-адресов на уровне системы. Максимальная скорость блокировки (Абузы не придут!).
- Отправка уведомлений в Telegram как администратору, так и пользователю.
- Возможность настройки через конфигурационный файл.
- Использование UFW для блокировки.
- Настраиваемое время блокировки.
- Поддержка временной блокировки с последующей разблокировкой.
- Простая установка и настройка через systemd.
-
Включение логирования. Секция
log
"log": { "access": "/var/lib/marzban-node/access.log", "error": "/var/lib/marzban-node/error.log", "loglevel": "error", "dnsLog": false },
-
Настройка маркировки bittorrent трафика. Секция
routing
. Добавляем правило:{ "protocol": [ "bittorrent" ], "outboundTag": "TORRENT", "type": "field" },
Здесь
TORRENT
это маркировка, по которой приложение будет фильтровать логи. -
Настройка блокировки bittorrent трафика. Секция
outbounds
. Отправляем все в blackhole:{ "protocol": "blackhole", "tag": "TORRENT" },
К сожалению, эта блокировка эффективно блокирует только около 20% трафика bittorrent.
-
На сервере, где находится панель создайте папку
/var/lib/marzban-node
:mkdir -p /var/lib/marzban-node
-
Добавьте новый volume в файле
/opt/marzban/docker-compose.yml
:volumes: - /var/lib/marzban:/var/lib/marzban - /var/lib/marzban-node:/var/lib/marzban-node #новый volume
-
Перезапустите панель командой:
docker compose down --remove-orphans; docker compose up -d
Проверьте чтобы в docker-compose.yml был правильно смонтированный volume:
volumes:
- /var/lib/marzban-node:/var/lib/marzban-node
По умолчанию он там есть. Тем самым мы вынесем логи на хост.
Для автоматической установки приложения выполните следующие шаги:
- Запустите скрипт установки:
bash <(curl -fsSL git.new/install)
- Скрипт автоматически установит все зависимости, скачает последний релиз, спросит
Token
иChat ID
администратора и запустит сервис. - После завершения установки приложение можно контролировать через systemd:
systemctl start/status/stop torrent-blocker
После установки вы можете настроить поведение приложения через файл конфигурации, который находится по пути: /opt/torrent-blocker/config.yaml
.
Основные параметры конфигурации:
- LogFile — путь к файлу логов, который будет мониториться. По умолчанию:
/var/lib/marzban-node/access.log
- BlockDuration — продолжительность блокировки пользователя в минутах. По умолчанию:
10
- TorrentTag — тег, по которому приложение определяет строки лога, связанные с торрентами. По умолчанию:
TORRENT
- SendAdminMessage - отправлять ли уведомления администратору. Опционально. По умолчанию:
true
- AdminBotToken — токен административного бота для уведомлений. Опционально.
- AdminChatID — ID чата (или пользователя) администратора, куда будут отправляться уведомления. Опционально.
- SendUserMessage — отправлять ли уведомления пользователю. Опционально. По умолчанию:
false
- BotToken — токен бота для отправки сообщений пользователю в Telegram. Опционально.
- TidRegex — регулярное выражение для извлечения
CHAT_ID
пользователя из строки лога. Опционально. - UserMessageTemplate — шаблон сообщения для уведомления пользователя. Опционально.
- UsernameRegex — регулярное выражение для извлечения логина пользователя из строки лога. Опционально.
Пример файла конфигурации с подробными комментариями находится в /opt/torrent-blocker/config.yaml
Если в логине пользователя панели Marzban используется его CHAT_ID
, вы можете настроить приложение для отправки уведомлений непосредственно этому пользователю.
Например, если логин пользователя в Marzban выглядит так: kutovoys_tgid-1234111
, в config.yaml
необходимо задать следующие параметры:
- TidRegex:
tgid-(\\d+)
- UsernameRegex:
email: \\d+\\.(\\w+)_tgid-
В таком случае администратор будет получать уведомления с именем пользователя kutovoys
, а пользователь будет получать сообщения о блокировке напрямую через Telegram.
Мы приветствуем вклад от сообщества! Если у вас есть идеи для улучшений или вы нашли баг, пожалуйста, создайте issue или отправьте pull request на GitHub.