Эта инструкция описывает только работу в веб-панели: запуск парсеров, аккаунты, прокси, 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» показывает все найденные адреса за всё время. При большом количестве карточек панель прокручивается. У каждой карточки три действия:
| Кнопка | Что происходит |
|---|---|
| 🚫 Блокировать |
Удаляет облачный ресурс у провайдера (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 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 JSON | auth_type=sa_key и полный JSON авторизованного ключа | Если вы создали сервисный аккаунт и выдали ему роли на организацию/облако/биллинг. |
| IAM token | auth_type=iam и готовый IAM token | Только для быстрой проверки, потому что IAM token временный (~12ч). |
| Поле | Описание |
|---|---|
| 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 и имя с нужным префиксом, при этом в них нет активных адресов. Это безопасный процесс, он не трогает облака без метки бота.
| Поле | Что указать |
|---|---|
| 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 работает через 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 есть два режима. Slow + Safe использует старый Resell API — проще всего в настройке, нужен только номер аккаунта и API key. Fast использует Keystone + Neutron и крутит быстрее, но требует отдельного сервисного пользователя и настроенного роутера в проекте.
| Поле | Что указать |
|---|---|
| Режим крутки | Выберите Slow + Safe: старый Resell API (по умолчанию). |
| Номер аккаунта Selectel | Числовой ID, например 589619. Виден в правом верхнем углу панели Selectel. Не путайте с UID — это короткое число, не hex-строка. |
| API key / X-Token | Ключ из Аккаунт (правый верхний угол) → Доступ → API-ключи → Создать ключ. |
| Project ID | Оставьте auto — панель найдёт первый проект сама. Если не сработало — скопируйте ID из Облако → Проекты. |
Шаг 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 парсер работает через 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 Credential | application_credential_id и application_credential_secret. Удобно для серверного доступа без основного пароля. |
| Готовый OpenStack token | token и 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 работает через CloudVPS API token. Основной режим создаёт временные reglet-серверы. Режим floating_ip крутит только дополнительные IPv4 на уже существующем reglet и не создаёт/не удаляет серверы.
| Поле | Что указать |
|---|---|
| API Token | Bearer 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 работает через актуальный API v2. Парсер создаёт временный VPS, ждёт IPv4 через /v2/servers/{id}/networks, проверяет адрес и удаляет неподходящий сервер.
| Поле | Что указать |
|---|---|
| API token | Токен из настроек API RUVDS. Для создания нужен token role write, для удаления и кнопки «Блокировать» — дополнительно роль remove. |
| Datacenters | ID датацентров из /v2/datacenters. Можно оставить 1 (Москва) или указать несколько через запятую. При нескольких датацентрах задача чередует их для разнообразия IP-диапазонов. |
| tariff_id / drive_tariff_id | auto — панель выберет самый дешёвый активный VPS-тариф и диск в выбранном датацентре. Конкретный ID укажите для фиксации конфигурации. |
| os_id | auto — панель выберет 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 (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.
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 ID | auto — в режиме JSON-ключа берётся из keyId. Для iam_token укажите явно. |
| NAT Gateway | Обычно пусто — MWS применит шлюз выхода в интернет по умолчанию. |
| Префикс ресурсов | По умолчанию multiroller. Фоновая уборка удаляет только внешние IP с этим префиксом — ваши ручные адреса не трогает. |
Так как создаётся только внешний IP (без ВМ), цикл роллинга быстрый, а уборка дешёвая. Неподходящие адреса панель удаляет сама; при сбое посреди создания адрес тоже подчищается.
Если API отвечает Token is inactive или 401 — активируйте/перевыпустите ключ в личном кабинете МТС Cloud. При нехватке прав на проект MWS вернёт 403.
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 крутит IP, создавая временные KVM-серверы в личном кабинете cp.masterhost.ru. У провайдера нет публичного API, поэтому авторизация идёт по cookie авторизованной сессии кабинета.
| Поле | Что указать |
|---|---|
| Cookie | Полная строка Cookie из авторизованного запроса (DevTools → Network). После выхода из кабинета сессия перестанет работать — тогда вставьте свежие cookie. |
| Client ID | Номер клиента без начальной буквы c. |
| Plan ID / Image ID | ID минимального тарифа и образа ОС из запроса POST /requests/create_kvm в DevTools. |
| Лицевой счёт ID (lbill_id) | ID лицевого счёта, с которого оплачивается сервер. |
| SSH Key ID | Необязательно. ID SSH-ключа из формы создания VM. |
Cookie-сессия живёт ограниченное время. Если панель пишет «Cookie устарели, войдите в кабинет заново» — обновите строку Cookie в аккаунте. Неподходящие серверы панель удаляет сама.
Виджет 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. |
| Панель работает медленно или не отвечает | Проверьте нагрузку на сервер: возможно, запущено слишком много параллельных аккаунтов или исчерпана память. Остановите часть аккаунтов через панель. |
| Ошибка | Что делать |
|---|---|
| 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 exceeded | Rate limit на создание статических адресов. MultiRoller автоматически замедляется (адаптивный rate limiter). Подождите несколько минут — задача продолжится сама. |
| Yandex пишет, что IP уже заблокирован | IP в blocklist — это нормально. Адрес занесён раньше. Роллер пропустит его и возьмёт следующий. |
| Ошибка | Что делать |
|---|---|
| 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 Timeweb | API token протух или скопирован неверно. Зайдите в панель Timeweb Cloud → API-ключи, создайте новый и обновите аккаунт в MultiRoller. |
| Ошибка | Что делать |
|---|---|
| CODE_REQUIRED_EMAIL / CODE_REQUIRED_SMS / CODE_REQUIRED_TOTP | Beget требует двухфакторный код при получении JWT. Укажите одноразовый код в поле 2FA код или вставьте готовый JWT token. |
| INCORRECT_CREDENTIALS / 401 | Неверный логин, пароль или token. Проверьте, что API-доступ разрешён в панели Beget и token скопирован полностью. |
| INSUFFICIENT_FUNDS / CUSTOMER_IP_LIMIT_REACHED | Недостаточно баланса или достигнут лимит дополнительных IP. Пополните счёт, удалите лишние IP или запросите увеличение лимита. |
| REGION_MISMATCH | Выбранный регион не подходит для операции. Оставьте ru1 или очистите список регионов, чтобы панель получила доступные регионы через API. |
| Ошибка | Что делать |
|---|---|
| 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. |
| Ошибка | Что делать |
|---|---|
| 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 или запросите увеличение квоты в поддержке. |
| Ошибка | Что делать |
|---|---|
| HTTP 401 / Invalid token | API 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 detected | Reg.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 через панель или запросите увеличение лимита у поддержки. |
| Ошибка | Что делать |
|---|---|
| Нет права на удаление / insufficient permissions | Токен создан только с ролью write. Выпустите токен с добавленной ролью remove в Личный кабинет → Настройки → API. |
| Недостаточно средств / insufficient funds | RUVDS списывает полную стоимость за payment_period при создании VPS. Пополните баланс. Помните: каждый неподходящий VPS тоже списывается. |
| Тариф не найден / tariff unavailable | В выбранном датацентре нет тарифа с tariff_id=auto. Смените датацентр или укажите конкретный tariff_id из GET /v2/tariffs. |
| VPS создан, но IP не получен долгое время | RUVDS иногда медленно выдаёт IP новому VPS. Панель ожидает через /v2/servers/{id}/networks. Если ждать долго — возможно, проблема на стороне датацентра. Остановите аккаунт и попробуйте позже. |
| Ошибка | Что делать |
|---|---|
| Ответ не JSON / пришла HTML-страница | Обычно это страница входа BILLmanager: проверьте логин/пароль и что у учётки разрешён доступ к API. |
| Тариф/шаблон не найден | Проверьте коды pricelist и ostempl — возьмите их через API-иконку (out=json) в форме заказа BILLmanager. |
| Ошибка | Что делать |
|---|---|
| Token is inactive / 401 | API-ключ неактивен или истёк. Активируйте либо перевыпустите авторизованный ключ (или IAM-токен) в личном кабинете МТС Cloud. |
| 403 / нет прав на проект | Сервисному аккаунту не хватает прав в проекте MWS. Выдайте роль на проект и обновите ключ. |
| quota / лимит | Достигнут лимит внешних адресов. Панель делает паузу; удалите лишние адреса в кабинете МТС или дождитесь освобождения. |
| Ошибка | Что делать |
|---|---|
| Сессия недействительна / 401 (vcloud) | Токены x-vcloud-authorization истекли. Откройте кабинет Cloud Director, скопируйте через DevTools свежие значения заголовков и обновите аккаунт. |
| Недостаточно доступных Floating IP | У организации исчерпан слот Floating IP. Панель освобождает неиспользованные адреса сама; подождите или освободите адреса в кабинете. |
| IP повторяется, пересоздание остановлено | В режиме vdc_recreate пул закреплён за организацией и выдаёт один и тот же адрес. Это защитная пауза от платного зацикливания — нормальное поведение. |
| Ошибка | Что делать |
|---|---|
| Cookie устарели, войдите в кабинет заново | Сессия кабинета истекла. Войдите в cp.masterhost.ru, скопируйте свежую строку Cookie из DevTools и обновите поле Cookie в аккаунте. |
| Недостаточно средств / создание отклонено | Пополните лицевой счёт (lbill_id). Проверьте, что указаны верные plan_id и image_id. |
| Ошибка | Что делать |
|---|---|
| Кнопка «Блокировать» не публикует 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 API HTTP 409 Conflict | Bot 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 целиком — он содержит все токены и пароли.