MultiRoller Web Panel

Инструкция по панели

Эта инструкция описывает только работу в веб-панели: запуск парсеров, аккаунты, прокси, IP-диапазоны, настройки и типовые ошибки. Установка на сервер вынесена в файл deploy/README_UBUNTU.md.

Главное

Все включённые аккаунты могут запускаться одновременно. Каждый аккаунт работает отдельной задачей.

Безопасность

При первом открытии создайте администратора. Не отдавайте никому пароль, cookies, токены и полный config.json.

Прокси

Прокси можно включить глобально, назначить по аккаунтам или задать прямой прокси в конкретном аккаунте.

Первый вход

Откройте адрес панели в браузере. Если администратор ещё не создан, появится экран регистрации. Укажите логин и пароль от 8 символов. После этого обычный вход будет через страницу логина.

Для VDS обязательно используйте сложный пароль. Панель имеет rate-limit: после нескольких неверных попыток входа она временно блокирует новые попытки с этого IP.

Как работает доступ покупателя

Покупатель работает только через веб-панель. SSH-доступ к VPS, ручное редактирование файлов, установка CLI провайдеров и команды в терминале для обычной работы не нужны.

Что делает покупательЧто делает MultiRoller
Открывает URL панели и входит по логину/паролюПроверяет сессию и даёт доступ к управлению парсерами.
Добавляет аккаунт провайдера и вставляет токены/cookies/IDСохраняет данные в конфиг, маскирует секреты в интерфейсе и запускает задачи через API.
Нажимает запуск одного аккаунта или всех аккаунтовСоздаёт отдельную задачу на каждый включённый аккаунт и выполняет rolling без доступа пользователя к VPS.
Настраивает прокси и IP-диапазоныПрименяет эти настройки при следующих запусках парсеров.
Смотрит найденные IP и журналПоказывает результат, последние события, ошибки провайдера и логи.

Панель не создаёт облачные аккаунты за пользователя. У покупателя уже должны быть доступы к Yandex Cloud, Timeweb, Beget, Selectel, VK Cloud, Reg.ru, RUVDS, IHC, МТС (MWS Cloud / MWS VI) или Masterhost: токены, cookies, project ID, billing/organization ID и нужные права.

Один экземпляр панели рассчитан на одного покупателя или одну команду. Не продавайте один общий URL разным клиентам: они смогут видеть общие аккаунты, токены, прокси, IP и журнал. Для нескольких покупателей поднимайте отдельные VPS, контейнеры, порты или домены.

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

MultiRoller — это IP-роллер для облачных провайдеров. Он последовательно создаёт и удаляет облачные ресурсы (Floating IP, временные серверы, адреса VPC), проверяет полученный IP по белому списку CIDR и сохраняет совпадение как «найденный IP».

ШагЧто происходит
1. Запуск аккаунтаДля каждого включённого аккаунта запускается отдельная задача (job). Все задачи работают параллельно.
2. Создание ресурсаПровайдер создаёт Floating IP / временный сервер / VPC-адрес. Yandex создаёт полное облако, Timeweb — Floating IP или VPS, Beget — дополнительный публичный IP, Selectel — Floating IP, VK Cloud — нейтронный Floating IP, Reg.ru — VPS или дополнительный IP на существующий VPS, RUVDS — VPS, IHC — VDS через BILLmanager, МТС Cloud (MWS) — внешний IP без виртуальной машины, МТС VI — Floating IP в VDC или пересоздание VDC, Masterhost — KVM-сервер.
3. Проверка IPПолученный IP проверяется по списку целевых CIDR (target_cidrs). Если IP попадает в любой диапазон — он считается «найденным».
4а. IP подходитIP сохраняется в базу, появляется карточка в панели, отправляется уведомление в Telegram. Ресурс не удаляется — IP продолжает «держаться» у провайдера.
4б. IP не подходитЕсли включено «Удалять неподходящие ресурсы» — ресурс удаляется, цикл повторяется.
5. ОстановкаАккаунт останавливается когда набрано нужное количество IP (target_count), или вручную через кнопку, или по флагу «Остановить после первого IP».

Ресурсы, которые роллер нашёл и сохранил, остаются в облаке и тарифицируются провайдером до тех пор, пока вы их не удалите вручную или не нажмёте «Блокировать» в карточке IP.

Yandex Cloud создаёт для каждого цикла полное облако (ip-pool-*), папку, сеть, подсеть, статический адрес VPC. При нахождении IP — ресурс остаётся. При удалении — роллер удаляет облако целиком (асинхронно, занимает до 30 секунд).

Рабочий стол

ЭлементЧто делает
Запустить всёСтартует все включённые аккаунты всех включённых сервисов.
Новый аккаунтОткрывает форму добавления парсера. Слева выберите сервис, справа заполните сгруппированные поля и нажмите сохранить.
Таблица парсеровПоказывает статус, попытки, последний IP, количество найденных IP и кнопки запуска/остановки/редактирования.
Журнал активностиПоказывает последние события: лимиты, ошибки авторизации, создание ресурсов, найденные IP.
Найденные IPКарточки всех подходящих IP. У каждой карточки три кнопки действий — см. раздел Найденные IP.
Скачать диагностикуСкачивает JSON-файл со всей информацией о состоянии роллера для отправки техническому специалисту.

Найденные IP — управление карточками

Панель «Найденные IP» показывает все найденные адреса за всё время. При большом количестве карточек панель прокручивается. У каждой карточки три действия:

КнопкаЧто происходит
🚫 Блокировать Удаляет облачный ресурс у провайдера (Floating IP / облако / сервер) → заносит IP в локальный blocklist и, если настроен GitHub token, в общий blocklist → карточка исчезает навсегда.
В чёрный список: после этого адрес больше не будет считаться подходящим в этой панели.
Используйте когда: IP занятой, не нужен, или вы хотите немедленно освободить ресурс в облаке и не давать роллеру снова брать этот адрес.
Скрыть Прячет карточку только в вашем браузере (localStorage). IP остаётся в базе, ресурс у провайдера не трогается.
Кнопка «Показать скрытые (N)» вверху панели возвращает все скрытые карточки.
Используйте когда: IP рабочий, вы его уже скопировали и просто хотите прибраться в интерфейсе.
Удалить Удаляет IP из базы данных панели. Ресурс у провайдера не трогается, IP не заносится в чёрный список — роллер может найти его снова.
Используйте когда: вы хотите очистить историю, но оставить возможность снова найти этот IP.

Кнопка «Блокировать» тратит API-вызовы провайдера на удаление ресурса. Не нажимайте её на IP, которые уже нужны и работают — это удалит облачный ресурс за которым держится этот адрес.

Если в настройках задан GitHub token, кнопка Блокировать дополнительно коммитит IP в общий blocklist репозитория. После синхронизации все панели, использующие тот же репозиторий, перестанут брать этот адрес. Без токена IP попадает только в локальный файл blocked_ips.txt на сервере.

Настройки

НастройкаРекомендация
Целевое количество IPСколько подходящих адресов нужно набрать. Для теста ставьте 1–3, для работы — своё значение.
Остановить после первого IPВключайте, если по каждому аккаунту нужен только один подходящий адрес.
Удалять неподходящие ресурсыОбычно включено. Так временные серверы и floating IP не зависают в облаке.
Паузы после лимита и ошибокНе ставьте слишком маленькие значения. Провайдеры могут усиливать ограничения при частых запросах.
IP диапазоны (WL_CIDR)Глобальный список целевых подсетей. Если в аккаунте поле target_cidrs пустое, используется этот список. Подсети 51.250.* всегда игнорируются автоматически — они принадлежат серым зонам Yandex и не пропускаются операторами.
Синхронизация с GitHub (локальный режим)Главный переключатель синхронизации списков — тумблер в разделе «IP диапазоны». Когда включён (по умолчанию) — панель периодически подтягивает с GitHub целевые подсети (wl_cidr.txt) и общий блок-лист. Когда выключен — панель работает только с вашим локальным списком: авто-обновление не запускается, кнопка «Обновить с GitHub» ничего не перезаписывает, а дефолтные списки не домерживаются при старте.
Обновить с GitHubПодтягивает свежий wl_cidr.txt и blocked_ips.txt из репозитория qwe8nxtroud/multiroller без перезапуска панели. Нужен доступ в интернет с сервера. Если в Настройках задан github_token, запрос идёт с авторизацией и не упирается в rate limit GitHub API. Не работает, если синхронизация выключена (локальный режим).
GitHub tokenПерсональный токен GitHub (PAT) с правом repo или contents:write. Нужен для двух функций: 1) синхронизация пула с защищённого репозитория без лимитов; 2) кнопка Блокировать в карточке найденного IP коммитит плохой адрес в общий GitHub blocklist. Без токена кнопка «Блокировать» всё равно удаляет ресурс и вносит IP в локальный blocked_ips.txt, но не публикует в GitHub.
Тема панелиМеняет только внешний вид в текущем браузере. На работу парсеров не влияет.

При каждой синхронизации с GitHub адреса из blocked_ips.txt добавляются в локальный чёрный список. Адреса из подсети 51.250.* фильтруются при загрузке и не попадают в WL_CIDR даже если присутствуют в файле.

Локальный режим (тумблер «Синхронизация с GitHub» выключен). Включайте, если ведёте свой вайтлист/блок-лист вручную и не хотите, чтобы обновление их перезаписывало. Типичный случай: вы удалили подсеть из списка (например 158.160.x), а после синхронизации она вернулась — выключите тумблер, и ваш список останется ровно таким, каким вы его оставили. Снова включите — и панель опять начнёт подтягивать общий список с GitHub.

Прокси

Proxy Manager нужен, чтобы распределять запросы разных аккаунтов по разным прокси. Поддерживаются форматы:

http://user:pass@host:port
socks5://user:pass@host:port
host:port
host:port:user:pass
proxy-name,http://host:port
ПолеКак использовать
Включить пул проксиЕсли выключено, глобальный пул не используется, но прямой прокси в аккаунте всё равно работает.
Ротация stickyОдин аккаунт стабильно получает один и тот же живой прокси.
Ротация round_robinПри стартах задач прокси выбираются по кругу.
Проверить всёПроверяет живость прокси через URL проверки и временно банит плохие.
Прокси из пула в аккаунтеauto - выбрать из пула, none - не использовать пул, имя прокси - закрепить конкретный.
Прямой проксиИмеет приоритет над пулом. Удобно для отдельного аккаунта.

Добавление аккаунтов

Откройте Новый аккаунт, выберите сервис в левой части формы и заполните поля справа. Форма разделена на блоки: Доступ, Регионы и ресурсы, Прокси, Лимиты и поведение. Это только новый внешний вид, логика работы парсеров остаётся прежней.

В левой части формы показаны краткие подсказки по выбранному сервису. Они помогают понять формат cookies, token, project ID или proxy, но не заменяют права и доступы в личном кабинете провайдера.

Секретные поля при редактировании показываются пустыми: если оставить поле пустым, сохранённый токен, пароль или cookies не перезатрётся.

Если у аккаунта есть свой target_cidrs, он перекрывает глобальный список только для этого аккаунта.

Yandex Cloud

Yandex Cloud CLI устанавливать не нужно. Парсер не использует локальный yc и не требует файл ~/.config/yandex-cloud. Все действия идут напрямую через REST API Yandex Cloud.

По документации Yandex Cloud OAuth token можно обменять на IAM token через IAM API. Поэтому в MultiRoller основной и самый простой способ — OAuth token. Service Account JSON оставлен как второй вариант для тех, кто специально работает через сервисный аккаунт.

СпособЧто заполнитьКогда выбирать
OAuth token (рекомендуется)auth_type=oauth и поле OAuth tokenОбычный пользовательский аккаунт. Самый простой и понятный вариант.
Service Account JSONauth_type=sa_key и полный JSON авторизованного ключаЕсли вы создали сервисный аккаунт и выдали ему роли на организацию/облако/биллинг.
IAM tokenauth_type=iam и готовый IAM tokenТолько для быстрой проверки, потому что IAM token временный (~12ч).

Дополнительные поля аккаунта Yandex

ПолеОписание
organization_idЕсли не определился автоматически — скопируйте из Yandex Cloud → Организации. Обязателен для создания облаков.
billing_account_idЕсли не определился автоматически — скопируйте из Billing. Без него новые облака будут без биллинга и их нельзя будет использовать.
Существующие Cloud IDСписок ID облаков через запятую. Если заполнено — MultiRoller работает внутри этих облаков и не создаёт новые. Квоту облаков не расходует. Облака без нужного префикса в этом режиме удаляться не будут.
Лимит облаковСколько облаков с нужным префиксом MultiRoller может создать на этот аккаунт. По умолчанию — 3. После достижения лимита задача ставится на паузу.
Префикс облакаОблака получают имя префикс-метка-времени. По умолчанию — ip-pool. Если поле пустое, используется случайное имя для большей незаметности.

Ссылки: OAuth token в Yandex Cloud, получение IAM token, авторизованные ключи сервисного аккаунта.

Для создания облаков, сетей, ВМ и привязки биллинга у токена должны быть права. Если видите PermissionDenied — проблема в ролях аккаунта в Yandex Cloud, а не в форме. Нужные роли: resource-manager.editor, vpc.publicAdmin, billing.accounts.editor.

Если Yandex пишет Clouds creation quota exceeded, квота облаков в организации исчерпана. Решения: 1) удалите лишние облака через консоль Yandex Cloud; 2) запросите повышение квоты у поддержки Yandex; 3) укажите Существующие Cloud ID — тогда MultiRoller будет крутить внутри нужного облака без создания новых. При запросе квоты обычно нужно указать use-case и ожидаемое количество облаков.

После создания нового облака IAM-права могут распространяться до 3 минут. В этот период MultiRoller будет видеть 403 PermissionDenied при попытках создать адреса — это нормально, панель автоматически ждёт propagation и продолжает работу. Сообщение «⚠ IAM не синхронизировался» в журнале означает, что ожидание истекло — обычно это временная ситуация.

В фоне каждый час запускается reconcile-поток, который ищет и удаляет «осиротевшие» облака (созданные роллером, но брошенные из-за краша). Их признак — метка managed-by: ip-roller и имя с нужным префиксом, при этом в них нет активных адресов. Это безопасный процесс, он не трогает облака без метки бота.

Timeweb Cloud

ПолеЧто указать
API tokenТокен из панели Timeweb Cloud (Профиль → API-ключи). Обычно одного токена достаточно.
Режим autoСначала пробует Floating IP; если получает ошибку лимита или баланса — переходит на временный сервер. Рекомендуемый режим.
Режим serverТолько временные серверы. Полезно когда Floating IP недоступны на аккаунте.
Режим floating_ipТолько Floating IP API. Самый быстрый, но чаще упирается в лимиты.
Запрашивать IPv4 для сервераОставьте включённым. Новые серверы Timeweb иногда создаются только с IPv6. При включённой опции панель отдельно запрашивает дополнительный IPv4 через API после создания сервера.
Конфигурация сервераЕсли поле config_id не заполнено, панель выберет самый дешёвый доступный тариф сервера. Для ускорения можно задать конкретный ID конфигурации.

Ссылки: API keys в панели Timeweb Cloud, документация Timeweb по токенам.

Дневной лимит Floating IP. Timeweb ограничивает количество Floating IP в сутки на аккаунт. Когда лимит достигнут, в ответе API появляется маркер типа daily limit exceeded или too many requests in 24h. MultiRoller распознаёт этот ответ и переводит аккаунт в паузу на 24 часа — не создаёт ни Floating IP, ни серверы до окончания cooldown. Это защищает аккаунт от бана за частые попытки. Статус задачи в панели будет cooldown.

No balance for month. Сообщение появляется когда текущий баланс меньше стоимости следующего месяца выбранного ресурса. Это не означает нулевой баланс — Timeweb резервирует средства наперёд. Пополните счёт до суммы, покрывающей месячную стоимость Floating IP или минимального сервера.

Если сервер создался без IPv4 (только IPv6) и включена опция Запрашивать IPv4 — панель дополнительно вызывает API добавления IPv4. При неудаче сервер удаляется, аккаунт ставится на короткую паузу. Это нормальное поведение при временной недоступности IPv4 у провайдера.

Beget Cloud

Beget работает через API облачных серверов и крутит дополнительные публичные IP. MultiRoller заказывает свободный IP в регионе, проверяет его по CIDR и удаляет неподходящий адрес без создания VPS.

ПолеЧто указать
JWT tokenГотовый токен Beget API. Это самый удобный вариант для постоянной работы, особенно если на аккаунте включена 2FA.
Логин / парольМожно указать вместо token. MultiRoller получит JWT через /v1/auth с saveMe=true.
2FA кодНужен только для разового получения JWT, если Beget требует двухфакторный код. После этого лучше сохранить готовый token.
РегионыПо умолчанию ru1. Если список очистить, панель попробует получить доступные регионы через API.

Ссылки: документация Beget API, настройки API в панели Beget.

Перед работой разрешите API-доступ в панели Beget. Если API возвращает CODE_REQUIRED_*, аккаунт требует 2FA — укажите одноразовый код или используйте заранее полученный JWT token.

Selectel

В Selectel есть два режима. Slow + Safe использует старый Resell API — проще всего в настройке, нужен только номер аккаунта и API key. Fast использует Keystone + Neutron и крутит быстрее, но требует отдельного сервисного пользователя и настроенного роутера в проекте.

Режим Slow + Safe — быстрый старт

ПолеЧто указать
Режим круткиВыберите Slow + Safe: старый Resell API (по умолчанию).
Номер аккаунта SelectelЧисловой ID, например 589619. Виден в правом верхнем углу панели Selectel. Не путайте с UID — это короткое число, не hex-строка.
API key / X-TokenКлюч из Аккаунт (правый верхний угол) → Доступ → API-ключи → Создать ключ.
Project IDОставьте auto — панель найдёт первый проект сама. Если не сработало — скопируйте ID из Облако → Проекты.

Режим Fast — пошаговая настройка

Шаг 1. Создать сервисного пользователя

Перейдите: my.selectel.ru → Управление → Пользователи → Сервисные пользователи → Создать

Поле при созданииЧто заполнить
Имя пользователяЛюбое, например roller-user. Это и есть OS USERNAME для роллера.
ПарольСгенерируйте или задайте вручную. Сохраните сразу — после создания пароль больше не показывается. Это OS PASSWORD.
Область доступаВыберите Проекты (не «Аккаунт»).
ПроектВыберите нужный проект, например My First Project. Его имя — это OS PROJECT NAME.
РольНайдите и выберите member (отображается как «Все сервисы»). Эта роль даёт доступ к Neutron API для создания Floating IP.

Роль admin в поиске показывает только узкоспециализированные роли вроде compute.image.admin — они не подходят. Нужна именно member из категории «Все сервисы».

Шаг 2. Включить интернет на роутере проекта

Floating IP выдаются только если в проекте есть роутер с подключённым внешним шлюзом. Без этого Neutron вернёт ошибку «нет внешних сетей».

Перейдите: Облачная платформа → Сеть → Облачные роутеры

Если видите роутеры со статусом «Интернет отключен» — нажмите (три точки) справа → «Подключить интернет». Сделайте это для каждого региона, который будете использовать (ru-1, ru-3, ru-7 и т.д.).

Если роутеров нет совсем — нажмите «Создать роутер», выберите регион и подключите внешний шлюз.

Роутеры типа router-nat создаются Selectel автоматически при создании приватной сети. Они уже есть в проекте, нужно только включить на них интернет.

Шаг 3. Заполнить форму в роллере

Поле в роллереЧто вписать
Режим круткиFast: новый Neutron API
Номер аккаунта SelectelЧисловой ID аккаунта, например 589619. Используется как домен в Keystone-авторизации.
OS usernameИмя сервисного пользователя из шага 1.
OS passwordПароль из шага 1 (сохранённый при создании).
OS project nameИмя проекта — то, что выбрали при создании пользователя, например My First Project.
РегионыВыберите регионы с включённым интернетом на роутере: ru-1, ru-3, ru-7 и т.д.
Попытки в минутуНачните с 30. Не ставьте выше 60 — Selectel может временно заблокировать проект.

Ссылки: авторизация API Selectel, API keys в панели Selectel, сервисные пользователи Selectel.

Рекомендуемые настройки и защита от бана

Selectel ведёт мониторинг аномальной активности в API. Основная причина блокировок — агрессивный churn: создать сотни Floating IP и сразу удалить большую часть из них. Чем больше бесполезных create/delete за короткое время, тем выше вероятность бана проекта.

НастройкаРекомендуемое значениеПочему
Попытки в минуту (RPM)20–30Оптимальный баланс скорости и безопасности. Значения выше 30 могут давать 429 и агрессивный паттерн запросов, который Selectel расценивает как abuse.
Пауза при 429, сек60При меньшей паузе после 429 Selectel продолжает блокировать — требуется выдержать время остывания. Ставить меньше 60 не имеет смысла.
Пауза после ошибки, сек15Даёт API время восстановиться после временных сбоев. Слишком малая пауза создаёт шторм повторных запросов.
Timeout запроса, сек120При работе через прокси API отвечает медленнее. При timeout < 60 роллер получает ложные ошибки и делает лишние попытки создания IP.
Batch size (Slow+Safe)1Пакетное создание IP нескольких штук сразу повышает количество ненужных адресов и delete-операций. Оставьте 1.

Главная причина банов — постоянный churn. Если роллер за день создаёт и удаляет тысячи IP, Selectel видит это как злоупотребление API. Оптимальная стратегия: медленно, без спешки. Один-два аккаунта с RPM 20–30 работают стабильно месяцами; десять аккаунтов с RPM 60 — блокируются за несколько дней.

Rate limit Selectel Fast. При превышении частоты запросов Neutron возвращает HTTP 429. MultiRoller автоматически делает паузу и замедляется. Уменьшите «Попытки в минуту» если 429 повторяется часто.

Slow + Safe rate limit. При ошибке 429 Too Many Requests панель делает линейный backoff. Уменьшите количество параллельных аккаунтов или увеличьте паузы.

В фоне работает поток очистки «осиротевших» Floating IP: если роллер создал Floating IP, но не успел удалить его до перезапуска, фоновый поток найдёт такие IP и удалит автоматически.

VK Cloud

VK Cloud парсер работает через OpenStack Keystone и Neutron Floating IP. Самый надёжный источник значений — файл openrc v3 из VK Cloud → Настройки проекта → Доступ по API. В форме выбирайте один метод авторизации, лишние поля будут скрыты.

СпособЧто заполнить
Логин + парольOS_USERNAME, OS_PASSWORD, OS_PROJECT_ID, OS_REGION_NAME, OS_USER_DOMAIN_NAME из openrc v3. Project ID лучше указывать явно: VK Cloud может не выдавать unscoped token для auto-поиска проекта.
Application Credentialapplication_credential_id и application_credential_secret. Удобно для серверного доступа без основного пароля.
Готовый OpenStack tokentoken и network_url. Token временный, поэтому вариант больше для диагностики.

Если floating_network_id=auto, MultiRoller попробует найти внешнюю сеть сам. Если появится ошибка про external network, укажите ID сети вручную.

Если Keystone вернул ошибку credentials, проверьте, что API включён, двухфакторная аутентификация настроена, а значения взяты из openrc v3 выбранного проекта. MultiRoller при OS_USER_DOMAIN_NAME=auto пробует users и Default, но Project ID всё равно лучше указать явно.

Ссылки: OpenStack CLI / openrc v3 VK Cloud, получение Keystone token, OpenStack Application Credentials.

Reg.ru

Reg.ru работает через CloudVPS API token. Основной режим создаёт временные reglet-серверы. Режим floating_ip крутит только дополнительные IPv4 на уже существующем reglet и не создаёт/не удаляет серверы.

ПолеЧто указать
API TokenBearer token из панели Reg.ru Cloud (Личный кабинет → API). Нужен полный token с правами на создание и удаление серверов/IP.
Режим serverСоздаёт временный reglet, ждёт появления IPv4 и удаляет сервер если IP не подошёл. Самый надёжный режим.
Режим floating_ipДобавляет дополнительные IPv4 к уже существующему reglet. Не создаёт и не удаляет серверы — только крутит IP. Значительно дешевле и быстрее режима server.
holder_reglet_idОбязательно для режима floating_ip. ID существующего reglet, к которому добавляются дополнительные IP. Возьмите числовой ID из URL в панели Reg.ru или через API GET /v1/servers.
IPv4 за запросДля режима floating_ip: сколько IPv4 запрашивать за один вызов API. Можно от 1 до 4. Больше — быстрее, но выше риск abuse-флага.
Запрашивать Floating IPТолько для режима server. По умолчанию выключено. Включайте только если в аккаунте нет других признаков abuse — Reg.ru может заблокировать за частые запросы.
РегионРегион создания reglet. По умолчанию msk. Другие возможные значения: spb, novosibirsk. Уточните через GET /v1/locations.

Режим floating_ip: сервер-держатель (holder_reglet_id) не трогается MultiRoller никогда — ни при нахождении IP, ни при ошибках. Удаляются только неподходящие дополнительные IP через DELETE /v1/ips/<ip>. Убедитесь, что reglet-держатель работает и у него достаточно лимита на дополнительные IPv4.

Floating IP abuse detected. Reg.ru фиксирует подозрительную частоту запросов Floating IP. Если видите эту ошибку: немедленно остановите аккаунт, подождите от 30 минут до суток, переключитесь на режим floating_ip с существующим reglet или уберите опцию Запрашивать Floating IP. Повторные обращения усугубляют ситуацию.

Ссылки: панель Reg.ru Cloud, поддержка Reg.ru.

RUVDS

RUVDS работает через актуальный API v2. Парсер создаёт временный VPS, ждёт IPv4 через /v2/servers/{id}/networks, проверяет адрес и удаляет неподходящий сервер.

ПолеЧто указать
API tokenТокен из настроек API RUVDS. Для создания нужен token role write, для удаления и кнопки «Блокировать» — дополнительно роль remove.
DatacentersID датацентров из /v2/datacenters. Можно оставить 1 (Москва) или указать несколько через запятую. При нескольких датацентрах задача чередует их для разнообразия IP-диапазонов.
tariff_id / drive_tariff_idauto — панель выберет самый дешёвый активный VPS-тариф и диск в выбранном датацентре. Конкретный ID укажите для фиксации конфигурации.
os_idauto — панель выберет Ubuntu или Debian из /v2/os. Впишите конкретный ID если нужна другая ОС.
payment_periodПериод оплаты: 2 = 1 месяц, 3 = 3 месяца и т.д. RUVDS списывает деньги сразу при создании VPS за весь указанный период. Рекомендуется 2 (минимальный период, минимальное списание).

Списание при создании VPS. RUVDS списывает оплату за payment_period сразу в момент создания сервера. При роллинге каждый неподходящий VPS стоит денег. Рекомендуется: 1) установить payment_period=2 (месяц — минимальный период); 2) держать небольшой баланс и пополнять по мере необходимости; 3) следить за журналом на предмет ошибок баланса. При нехватке баланса RUVDS отклоняет создание сервера — аккаунт ставится на паузу.

Если RUVDS отвечает, что токену не хватает прав на удаление — выпустите новый токен с ролью remove в личном кабинете. Токены, выданные через API, не автоматически получают роль remove.

Ссылки: документация RUVDS API v2, токены RUVDS API.

IHC

Экспериментальный провайдер. IHC (my.ihc.ru) работает через BILLmanager API: панель заказывает VDS, ждёт выдачи IPv4, проверяет адрес и удаляет неподходящий сервер. Удаление VDS протестировано не на всех тарифах — следите за журналом и балансом, чтобы не накапливались платные серверы.

ПолеЧто указать
Логин / пароль BILLmanagerУчётные данные от панели my.ihc.ru/billmgr.
Код тарифа (pricelist)Код тарифа VDS. Узнайте через API-иконку (out=json) в форме заказа BILLmanager.
Шаблон ОС (ostempl)Код шаблона ОС из формы заказа, например ISPsystem__Ubuntu-22-04-amd64.
ДатацентрыКоды datacenter из BILLmanager через запятую. Пусто = по умолчанию.
Период оплатыОбычно 1 = 1 месяц.

Если API возвращает HTML вместо JSON — обычно это страница входа: проверьте логин/пароль и что у учётки есть доступ к API BILLmanager.

МТС Cloud (MWS)

MWS Cloud Platform (облако МТС) крутит IP через официальный VPC API: создаётся только внешний IP-адрес (externalAddress) — без виртуальной машины. Это быстро и дёшево: вы платите за публичный IP, а не за сервер.

ПолеЧто указать
Способ авторизацииauthorized_key (JSON авторизованного ключа сервисного аккаунта, рекомендуется) или iam_token (готовый временный токен).
Authorized Key JSONВесь JSON авторизованного ключа (алгоритм ES256). IAM-токен панель обновляет сама по мере истечения. Формат keyId: projects/.../serviceAccounts/.../authorizedKeys/....
IAM tokenТолько для режима iam_token: временный токен (mws iam create-token). Живёт ограниченное время.
Project IDauto — в режиме JSON-ключа берётся из keyId. Для iam_token укажите явно.
NAT GatewayОбычно пусто — MWS применит шлюз выхода в интернет по умолчанию.
Префикс ресурсовПо умолчанию multiroller. Фоновая уборка удаляет только внешние IP с этим префиксом — ваши ручные адреса не трогает.

Так как создаётся только внешний IP (без ВМ), цикл роллинга быстрый, а уборка дешёвая. Неподходящие адреса панель удаляет сама; при сбое посреди создания адрес тоже подчищается.

Если API отвечает Token is inactive или 401 — активируйте/перевыпустите ключ в личном кабинете МТС Cloud. При нехватке прав на проект MWS вернёт 403.

МТС Virtual Infrastructure (MWS VI)

MWS VI — это VMware Cloud Director в облаке МТС. Поддерживаются два режима. ip_space — берёт Floating IP из IP Space, привязанного к Edge Gateway существующего VDC (быстро, без создания VDC). vdc_recreate — пересоздаёт виртуальные дата-центры (VDC), чтобы перебирать выданные им пулы IP.

Токены берутся из DevTools браузера (вкладка Network в кабинете Cloud Director) — у МТС VI нет долгоживущего API-ключа, поэтому значения нужно периодически обновлять.

ПолеЧто указать
Режимip_space (крутить Floating IP в существующем VDC) или vdc_recreate (пересоздавать VDC).
x-vcloud-authorization (Cloud API)Значение заголовка из запроса /cloudapi/ в DevTools.
x-vcloud-authorization (Task API) + Authorization BearerЗначения из запроса /api/query или /api/task — нужны для ожидания задач выдачи IP.
Edge Gateway IDДля режима ip_space: UUID или полный urn:vcloud:gateway:... из URL страницы Edge.
Заголовки портала vmcloud.mws.ruДля режима vdc_recreate: вставьте блок Request Headers запроса /api/vi/.../vdcs — панель сама возьмёт Authorization/Cookie.
Project ID портала / префикс VDCДля vdc_recreate. Удаляются только VDC с указанным префиксом — не используйте префикс своих ручных VDC.

Квота Floating IP. У организации МТС обычно один слот Floating IP. Панель освобождает неиспользованный адрес перед запросом следующего. В режиме vdc_recreate есть защита: после нескольких повторов одного и того же IP пересоздание ставится на длинную паузу, чтобы не платить впустую.

VDC и Floating IP — платные ресурсы. Режим vdc_recreate создаёт и удаляет VDC (до 4 одновременно) — следите за балансом. Фоновая уборка удаляет «осиротевшие» VDC с вашим префиксом.

Masterhost

Masterhost крутит IP, создавая временные KVM-серверы в личном кабинете cp.masterhost.ru. У провайдера нет публичного API, поэтому авторизация идёт по cookie авторизованной сессии кабинета.

ПолеЧто указать
CookieПолная строка Cookie из авторизованного запроса (DevTools → Network). После выхода из кабинета сессия перестанет работать — тогда вставьте свежие cookie.
Client IDНомер клиента без начальной буквы c.
Plan ID / Image IDID минимального тарифа и образа ОС из запроса POST /requests/create_kvm в DevTools.
Лицевой счёт ID (lbill_id)ID лицевого счёта, с которого оплачивается сервер.
SSH Key IDНеобязательно. ID SSH-ключа из формы создания VM.

Cookie-сессия живёт ограниченное время. Если панель пишет «Cookie устарели, войдите в кабинет заново» — обновите строку Cookie в аккаунте. Неподходящие серверы панель удаляет сама.

Telegram

Виджет Telegram вверху панели показывает статус. Нажмите Настроить, включите бота, вставьте Bot Token и Chat ID. Если Chat ID пустой и включена автопривязка, напишите боту /start первым нужным чатом.

Один Telegram bot token может слушать команды только в одном процессе. Если один и тот же бот подключён на нескольких VPS, включите Команды в Telegram только на одном сервере, а на остальных используйте режим уведомлений с заполненным Chat ID. При ошибке 409 Conflict панель автоматически отключит polling команд, но продолжит отправлять уведомления.

Команды: /services, /accounts, /run all, /stop all, /status, /ips, /logs.

Диагностика — «Скачать диагностику»

Кнопка «Скачать диагностику» в боковом меню скачивает файл multiroller-debug-ДАТА.json. Этот файл содержит полную картину состояния панели и нужен техническому специалисту для диагностики проблем.

Что внутри файла:

БлокСодержимое
panel_versionВерсия MultiRoller
summaryКоличество найденных IP, чёрный список, статус задач, время старта
found_ipsВсе найденные IP: адрес, сервис, аккаунт, регион, время находки
blacklisted_ipsСписок заблокированных IP
jobsСтатус каждого аккаунта: попытки, ошибки, последний IP, время последнего события
recent_eventsПоследние 100 событий из журнала (без токенов и паролей)
config_summaryНастройки роллера, список включённых сервисов и аккаунтов, параметры прокси — без секретных полей
log_tailПоследние 300 строк лога

Файл безопасен для передачи: пароли, токены, cookies и ключи API не включаются. Передавайте только этот файл — без config.json и без доступа к серверу.

Если вы хотите убедиться что в файле нет лишнего — откройте его в текстовом редакторе и проверьте блок config_summary перед отправкой.

Типовые ошибки и решения

Панель и авторизация

ОшибкаЧто делать
Снова просит логинСессия истекла (cookie сброшен при перезапуске панели) или вы открыли другой браузер/режим инкогнито. Войдите заново — данные роллера не теряются.
Неверный пароль / слишком много попытокПроверьте раскладку клавиатуры. После 5 неверных попыток подряд панель блокирует вход с вашего IP на 5 минут. Дождитесь сброса или зайдите с другого IP.
Панель не открывается (ERR_CONNECTION_REFUSED)Сервис остановился. Подключитесь к серверу SSH и выполните sudo systemctl status multiroller и sudo systemctl restart multiroller. Смотрите логи командой journalctl -u multiroller -n 50.
Панель работает медленно или не отвечаетПроверьте нагрузку на сервер: возможно, запущено слишком много параллельных аккаунтов или исчерпана память. Остановите часть аккаунтов через панель.

Yandex Cloud

ОшибкаЧто делать
PermissionDenied / 403 при создании облака или адресаТокену не хватает ролей. Для OAuth нужны роли resource-manager.editor, vpc.publicAdmin, billing.accounts.editor на организацию/биллинг. Назначьте роли в IAM Yandex Cloud и дождитесь (~2 минуты) propagation.
403 сразу после создания облака (IAM не синхронизировался)Нормальное явление: IAM-привязки распространяются до 3 минут. Панель ждёт автоматически. Если ошибка держится дольше 5 минут — проверьте, что SA или OAuth-пользователь получил роль на новое облако.
⏳ Org-квота Yandex / Квота облаков заполненаВсе допустимые облачные слоты заняты. Роллер автоматически ждёт освобождения слота, повторяя попытку каждые 15 минут — останавливать аккаунт не нужно. Telegram-уведомление придёт только один раз. Чтобы ускорить: удалите лишние облака в консоли Yandex Cloud, запросите повышение квоты у поддержки Yandex, или укажите поле Существующие Cloud ID — тогда роллер работает внутри готовых облаков и новые не создаёт.
Clouds creation quota exceeded (быстрое решение)Заполните поле Существующие Cloud ID в форме аккаунта — вставьте ID одного или нескольких своих облаков. Роллер будет крутить внутри них, не расходуя квоту на создание новых облаков.
Organization not found / organization_id пустойЗаполните organization_id вручную. Его видно в Yandex Cloud Console → Организации → ID. Автодетект не работает при ограниченных правах на Organization API.
Billing account not foundЗаполните billing_account_id вручную. Его видно в Yandex Billing Console → Платёжные аккаунты. Без биллинга новые облака не активируются.
externalAddressesCreation.rate exceededRate limit на создание статических адресов. MultiRoller автоматически замедляется (адаптивный rate limiter). Подождите несколько минут — задача продолжится сама.
Yandex пишет, что IP уже заблокированIP в blocklist — это нормально. Адрес занесён раньше. Роллер пропустит его и возьмёт следующий.

Timeweb Cloud

ОшибкаЧто делать
No balance for monthПополните баланс Timeweb. Требуется сумма, покрывающая полную месячную стоимость ресурса (не только текущий остаток). Обычно нужно от 100–300 ₽ запасом сверх текущих расходов.
Дневной лимит Floating IP / задача на 24-часовой паузеTimeweb исчерпал суточный лимит Floating IP на аккаунт. Статус аккаунта в панели — cooldown. Лимит сбросится в полночь по Москве. Ждите — роллер автоматически возобновится.
Timeweb не принимает Floating IP (лимит аккаунта)Переключитесь в режим auto — роллер сам перейдёт на временные серверы. Или временно остановите аккаунт до следующих суток.
Timeweb создал сервер без IPv4 (только IPv6)Баланс не покрывает платный IPv4, или IPv4 недоступен в выбранном тарифе. Включите опцию Запрашивать IPv4 для сервера — панель дополнительно запросит его через API. Если не помогло — пополните баланс.
Unauthorized 401 TimewebAPI token протух или скопирован неверно. Зайдите в панель Timeweb Cloud → API-ключи, создайте новый и обновите аккаунт в MultiRoller.

Beget Cloud

ОшибкаЧто делать
CODE_REQUIRED_EMAIL / CODE_REQUIRED_SMS / CODE_REQUIRED_TOTPBeget требует двухфакторный код при получении JWT. Укажите одноразовый код в поле 2FA код или вставьте готовый JWT token.
INCORRECT_CREDENTIALS / 401Неверный логин, пароль или token. Проверьте, что API-доступ разрешён в панели Beget и token скопирован полностью.
INSUFFICIENT_FUNDS / CUSTOMER_IP_LIMIT_REACHEDНедостаточно баланса или достигнут лимит дополнительных IP. Пополните счёт, удалите лишние IP или запросите увеличение лимита.
REGION_MISMATCHВыбранный регион не подходит для операции. Оставьте ru1 или очистите список регионов, чтобы панель получила доступные регионы через API.

Selectel

ОшибкаЧто делать
Selectel X-Auth-Token 401 (Slow + Safe)API key устарел или скопирован с ошибкой. Зайдите в Selectel → Аккаунт → API-ключи, скопируйте актуальный ключ.
Selectel Keystone 401 (Fast)Неверный OS_USERNAME или OS_PASSWORD. Пересоздайте сервисного пользователя в Selectel Cloud → Сервисные пользователи и обновите пароль в форме аккаунта.
Project not found (Fast, OS_PROJECT_NAME=auto)Сервисный пользователь не имеет доступа ни к одному проекту. Назначьте роль reader или admin на нужный проект в Selectel → Облако → Проекты. Или укажите имя проекта вручную.
429 Too Many Requests / rate limit SelectelСлишком высокая частота запросов к Neutron API. Уменьшите «Попытки в минуту» в аккаунте. Панель делает автоматический backoff, но если ошибка повторяется — снизьте интенсивность.
Номер аккаунта Selectel — длинная строка не работаетResell API принимает только числовой ID аккаунта (6–7 цифр), а не UUID/UID. Числовой ID виден в верхнем правом углу панели Selectel или в URL.

VK Cloud

ОшибкаЧто делать
Keystone authentication failedНеверный логин/пароль или неправильный домен. Значения берите из openrc v3 файла в VK Cloud. Проверьте поле OS_USER_DOMAIN_NAME — обычно это users.
Двухфакторная аутентификация мешает входуVK Cloud требует 2FA при входе через сайт, но Application Credentials не требуют 2FA. Создайте Application Credential в VK Cloud и используйте метод application_credential в форме аккаунта.
Не найден внешний network / floating_network_idАвтопоиск внешней сети не сработал. В VK Cloud Console → Сети найдите сеть с типом External и скопируйте её ID. Укажите в поле floating_network_id.
Quota exceeded для Floating IPЛимит Floating IP в проекте исчерпан. Удалите неиспользуемые адреса в VK Cloud Console или запросите увеличение квоты в поддержке.

Reg.ru

ОшибкаЧто делать
HTTP 401 / Invalid tokenAPI token неверный или скопирован с пробелами. Перейдите в личный кабинет Reg.ru → API и скопируйте token заново.
holder_reglet_id не указан (режим floating_ip)В режиме floating_ip поле holder_reglet_id обязательно. Возьмите ID сервера из URL в панели Reg.ru или через GET /v1/servers.
Floating IP abuse detectedReg.ru зафиксировал подозрительную активность. Остановите аккаунт. Подождите от 30 минут до суток. Переключитесь на режим floating_ip с существующим reglet или совсем отключите опцию Запрашивать Floating IP в режиме server.
Reglet not found (несуществующий holder_reglet_id)Сервер удалён или ID скопирован неверно. Создайте новый reglet вручную в панели Reg.ru и укажите его ID.
No available IPv4 / IP limit reachedНа аккаунте Reg.ru достигнут лимит дополнительных IPv4. Удалите неиспользуемые IP через панель или запросите увеличение лимита у поддержки.

RUVDS

ОшибкаЧто делать
Нет права на удаление / insufficient permissionsТокен создан только с ролью write. Выпустите токен с добавленной ролью remove в Личный кабинет → Настройки → API.
Недостаточно средств / insufficient fundsRUVDS списывает полную стоимость за payment_period при создании VPS. Пополните баланс. Помните: каждый неподходящий VPS тоже списывается.
Тариф не найден / tariff unavailableВ выбранном датацентре нет тарифа с tariff_id=auto. Смените датацентр или укажите конкретный tariff_id из GET /v2/tariffs.
VPS создан, но IP не получен долгое времяRUVDS иногда медленно выдаёт IP новому VPS. Панель ожидает через /v2/servers/{id}/networks. Если ждать долго — возможно, проблема на стороне датацентра. Остановите аккаунт и попробуйте позже.

IHC

ОшибкаЧто делать
Ответ не JSON / пришла HTML-страницаОбычно это страница входа BILLmanager: проверьте логин/пароль и что у учётки разрешён доступ к API.
Тариф/шаблон не найденПроверьте коды pricelist и ostempl — возьмите их через API-иконку (out=json) в форме заказа BILLmanager.

МТС Cloud (MWS)

ОшибкаЧто делать
Token is inactive / 401API-ключ неактивен или истёк. Активируйте либо перевыпустите авторизованный ключ (или IAM-токен) в личном кабинете МТС Cloud.
403 / нет прав на проектСервисному аккаунту не хватает прав в проекте MWS. Выдайте роль на проект и обновите ключ.
quota / лимитДостигнут лимит внешних адресов. Панель делает паузу; удалите лишние адреса в кабинете МТС или дождитесь освобождения.

МТС VI (MWS VI)

ОшибкаЧто делать
Сессия недействительна / 401 (vcloud)Токены x-vcloud-authorization истекли. Откройте кабинет Cloud Director, скопируйте через DevTools свежие значения заголовков и обновите аккаунт.
Недостаточно доступных Floating IPУ организации исчерпан слот Floating IP. Панель освобождает неиспользованные адреса сама; подождите или освободите адреса в кабинете.
IP повторяется, пересоздание остановленоВ режиме vdc_recreate пул закреплён за организацией и выдаёт один и тот же адрес. Это защитная пауза от платного зацикливания — нормальное поведение.

Masterhost

ОшибкаЧто делать
Cookie устарели, войдите в кабинет зановоСессия кабинета истекла. Войдите в cp.masterhost.ru, скопируйте свежую строку Cookie из DevTools и обновите поле Cookie в аккаунте.
Недостаточно средств / создание отклоненоПополните лицевой счёт (lbill_id). Проверьте, что указаны верные plan_id и image_id.

GitHub и пул IP

ОшибкаЧто делать
Кнопка «Блокировать» не публикует IP в GitHubВ Настройках не задан github_token или он просрочен. IP всё равно заносится в локальный blocked_ips.txt. Добавьте/обновите GitHub PAT с правом contents:write на репозиторий.
Обновить с GitHub: rate limit 403Превышен лимит GitHub API для анонимных запросов (60 в час). Задайте github_token в Настройках — с токеном лимит 5000 запросов в час.
После синхронизации WL_CIDR пустойФайл wl_cidr.txt в репозитории пуст или недоступен. Проверьте доступность репозитория и содержимое файла. Временно вернитесь к локальному редактированию WL_CIDR в Настройках.
Удалил подсеть из списка, а после обновления она вернуласьСинхронизация с GitHub перезаписывает локальный список целевых подсетей. Если ведёте список вручную — выключите тумблер «Синхронизация с GitHub» в разделе «IP диапазоны» (локальный режим): ваш вайтлист и блок-лист больше не будут перезаписываться ни автообновлением, ни кнопкой «Обновить с GitHub».
Подсети 51.250.* не попадают в списокЭто ожидаемое поведение. Подсети Yandex 51.250.* фильтруются автоматически при загрузке — они не белые у мобильных операторов и не помогают в роллинге.

Прокси и сеть

ОшибкаЧто делать
Прокси в ban-listНажмите «Проверить всё» в разделе Прокси. Если прокси ожил — кнопка «Разбанить» станет доступной. Или замените прокси в пуле.
Все прокси недоступны, задача остановленаПроверьте соединение с прокси-провайдером. Временно отключите глобальный пул прокси в Настройках — парсер пойдёт напрямую через IP сервера.
Connection timeout / SSL errorСкорее всего, проблема с сетью сервера или прокси. Проверьте прокси. Если ошибка без прокси — проверьте DNS и маршрутизацию на VPS.
IP не подходит / нет совпадений CIDRПроверьте WL_CIDR в Настройках. Убедитесь, что нужные подсети добавлены. Проверьте поле target_cidrs в конкретном аккаунте — если оно заполнено, глобальный список для этого аккаунта не применяется.

Telegram

ОшибкаЧто делать
Telegram API HTTP 409 ConflictBot token уже слушает другой процесс (другой VPS или локальная копия). Включите Команды в Telegram только на одном сервере. На остальных — режим уведомлений с заполненным Chat ID. Панель автоматически отключит polling команд при 409, но уведомления продолжат работать.
Уведомления не приходятПроверьте Bot Token и Chat ID. Напишите боту /start в нужном чате. Если автопривязка включена, Chat ID определится автоматически. Проверьте блокировку портов (443) на сервере.
Неверный Bot TokenСкопируйте token из @BotFather → /mybots → API Token заново. Token должен быть в формате 123456:ABC-DEF....

Для поддержки отправляйте файл диагностики из кнопки «Скачать диагностику» и скриншот журнала с ошибкой. Никогда не отправляйте config.json целиком — он содержит все токены и пароли.