Skip to content

Latest commit

 

History

History
135 lines (100 loc) · 7.85 KB

README.ru.md

File metadata and controls

135 lines (100 loc) · 7.85 KB

Marzban Torrent Blocker

en ru

Marzban Torrent Blocker — это приложение для блокировки использования торрентов пользователями панели Marzban. Приложение анализирует логи, обнаруживает использование торрентов и временно блокирует пользователя, отправляя уведомления в Telegram администратору и, опционально, пользователю. Возможна работа и с другими панелями. А также напрямую с Xray.

Возможности:

  • Мониторинг логов нод и панели на предмет использования торрентов.
  • Блокировка IP-адресов на уровне системы. Максимальная скорость блокировки (Абузы не придут!).
  • Отправка уведомлений в Telegram как администратору, так и пользователю.
  • Возможность настройки через конфигурационный файл.
  • Использование UFW для блокировки.
  • Настраиваемое время блокировки.
  • Поддержка временной блокировки с последующей разблокировкой.
  • Простая установка и настройка через systemd.

Подготовка

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

  • Включение логирования. Секция 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.

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

  • На сервере, где находится панель создайте папку /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.

Contributing

Мы приветствуем вклад от сообщества! Если у вас есть идеи для улучшений или вы нашли баг, пожалуйста, создайте issue или отправьте pull request на GitHub.