INOTrackбыстрота, надежность и ахуенность
статья · 8 мин чтения

Self-hosted трекер на своём VPS: требования, установка и бэкапы

Какой сервер взять, что спросит установщик, как проверить результат и настроить резервные копии так, чтобы из них действительно можно было восстановиться.

Self-hosted трекер — это трекер, который стоит на вашем сервере: клики, конверсии, офферы и ставки лежат в ваших базах, а не у вендора. За это приходится платить вниманием: сервер нужно выбрать, трекер — установить, а данные — бэкапить. Хорошая новость в том, что всё это делается один раз и почти целиком автоматизировано.

Ниже — практическая инструкция для inotrack: какой VPS взять, что спросит установщик, как проверить, что всё поднялось, и как настроить резервные копии так, чтобы они пригодились, когда понадобятся. О том, стоит ли вообще выбирать свой сервер, — отдельная статья о self-hosted и облачных трекерах.

Какой сервер нужен

Требования к системе:

  • Ubuntu или Debian, LTS-версия. На других дистрибутивах установщик остановится.
  • Свободные порты 80 и 443 — веб-сервер трекера сам получает TLS-сертификаты Let's Encrypt.
  • Root-доступ по SSH.
  • Docker и docker compose. Если их нет, установщик поставит сам.

Требования к железу:

Минимум Рекомендовано
CPU 2 vCPU 4 vCPU
Память 4 ГБ 8 ГБ
Диск 15 ГБ 160 ГБ NVMe

Рекомендованная конфигурация рассчитана на 1–10 миллионов кликов в сутки. На минимальной установщик предупредит, но продолжит. Исключение — диск: если свободно меньше 15 ГБ, установка без явного подтверждения не пойдёт.

Диск важнее процессора

Основной потребитель места — база событий: сырые клики, конверсии и постбеки. Ориентир из документации — 100–300 байт на клик после сжатия. Клики по умолчанию хранятся 13 месяцев.

Кликов в сутки ГБ в месяц За 13 месяцев
1 000 000 3–9 40–115
5 000 000 15–45 195–580
10 000 000 30–90 390–1170

Два практических вывода. Первый: на миллионе кликов в сутки база событий за весь срок хранения укладывается в 160 ГБ, на десяти миллионах этого диска хватит на несколько месяцев; дальше нужен диск больше или срок хранения короче. Второй: диск должен быть NVMe. На сетевом или HDD-диске база событий на пиках не успевает за записью.

Сколько нужно памяти

База событий, реляционная база, Redis и ядро трекера делят один сервер. Redis хранит ключи уникальности кликов, капы и ключи дедупликации постбеков — последние живут 30 дней и растут вместе с числом конверсий, а не кликов. Установщик сам выделяет Redis четверть памяти сервера, но не меньше гигабайта. При исчерпании лимита Redis не вытесняет ключи молча, а отказывает в записи: капы и дедупликацию нельзя терять тихо.

Домены и DNS

Трекеру нужны как минимум два домена: один под панель, один или несколько под приём кликов.

  • A-запись должна указывать на сервер до установки. Установщик это проверяет.
  • Только DNS, без проксирования. Домены приёма кликов должны вести прямо на IP сервера. Проксирующий CDN перед трекером мешает выпуску сертификата. Если прокси всё же нужен, проверку DNS можно пропустить флагом, но выпуск сертификата придётся настраивать отдельно.
  • Своих доменов нет — не проблема. Установщик может выдать два бесплатных домена: под панель и под клики. A-запись на ваш сервер ставится автоматически. Нужен публичный IPv4 у самого сервера.

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

Пул трекер-доменов: основной, резервы для failover, назначения и здоровье

Лицензия или пробный период

Для установки нужен лицензионный ключ. Его можно купить на странице тарифов — оплата в USDT, ключ показывается на странице заказа и приходит письмом.

Ключа нет — установщик оформит пробный период на 7 дней: на вопросе о ключе нажмите Enter и укажите e-mail, ключ придёт письмом. Пробный период один на адрес и один на сервер.

Установка

Одна команда:

curl -fsSL https://get.inotrack.run/install.sh -o install.sh && bash install.sh

Скрипт сначала скачивается в файл и только потом запускается — намеренно. Конструкция «скачать и сразу передать в интерпретатор» при сбое сети молча запускает пустой ввод, и вы не видите ошибки.

Установщик задаст вопросы:

  1. лицензионный ключ — или Enter для пробного периода;
  2. использовать ли бесплатные домены;
  3. домен панели и трекер-домены через запятую;
  4. e-mail для Let's Encrypt;
  5. роль инстанса — оставьте вариант по умолчанию, «всё на одном сервере»;
  6. часовой пояс отчётов — по умолчанию московский;
  7. базовая валюта — по умолчанию доллар;
  8. e-mail первого администратора.

Дальше он работает сам: проверяет систему, ресурсы и порты, ставит Docker, генерирует секреты, активирует лицензию, поднимает контейнеры, применяет миграции баз и создаёт первого администратора.

В конце выводится одноразовая сводка с логином и паролем администратора. Сохраните её сразу — второй раз пароль не покажут.

Для массовых развёртываний есть режим без вопросов: все ответы передаются флагами или файлом.

Проверка после установки

Трекером на сервере управляет утилита tracker-ctl. Две команды, которые нужно знать с первого дня:

tracker-ctl status
tracker-ctl doctor

Первая показывает состояние контейнеров. Вторая — диагностика одной командой: DNS и сертификаты каждого домена, связь с сервером лицензий, доступность баз, отставание буфера кликов, очередь постбеков, свободное место и свежесть последнего бэкапа. При любой проблеме начинайте с неё: она печатает конкретный список «что не так», а не общий лог.

Затем откройте домен панели и войдите под администратором из сводки. Панель сразу предложит подключить второй фактор — не откладывайте. На пустом дашборде вместо графика будет чек-лист запуска: источник, оффер, поток, домен, первые клики, постбек, первые конверсии.

Дашборд inotrack за 7 дней: клики, конверсии и профит на графиках

Быстрее всего пройти его мастером «Запустить кампанию» — он описан в быстром старте.

Типичные проблемы

  • A-запись не готова. Установщик остановится на предпроверке. Дождитесь обновления DNS.
  • Порты 80 или 443 заняты. На сервере уже работает другой веб-сервер. Освободите порты — иначе сертификат не выпустится.
  • Ключ не проходит активацию. Проверьте срок ключа и то, что сервер может ходить наружу по HTTPS.
  • Контейнеры в состоянии unhealthy после первого старта. На медленном диске базы стартуют дольше. Подождите и запустите проверку ещё раз.

Бэкапы

Это раздел, ради которого статью стоит дочитать. Свой сервер означает, что за сохранность данных отвечаете вы.

Что попадает в бэкап

Команда tracker-ctl backup собирает один архив:

  • полный дамп реляционной базы — офферы, потоки, пользователи, настройки;
  • дамп базы событий — клики, конверсии, расходы;
  • копию файла настроек;
  • загруженные ленды и файлы;
  • каталог лицензии.

Установщик сразу ставит ежедневное расписание на 03:00. Локальные архивы старше 14 дней удаляются сами.

Самые большие таблицы событий бэкапятся инкрементально: раз в неделю — полностью, в остальные дни — только то, что добавилось. Выбирать режим не нужно, команда решает сама. При восстановлении из инкремента вся цепочка находится и применяется автоматически.

Бэкап на том же сервере — не бэкап

Локальный архив лежит на том же диске, что и данные. Умер диск — пропало всё. Поэтому главный шаг — офсайт-копия в объектное хранилище другого провайдера:

tracker-ctl backup keygen
tracker-ctl backup schedule daily --to s3://бакет/префикс

Первая команда создаёт ключ шифрования, вторая ставит ежедневный таймер с выгрузкой. Подходит любое S3-совместимое хранилище; адрес и ключи доступа прописываются в файле настроек сервера, а не в командной строке.

Что происходит при выгрузке:

  • Шифрование. Архив шифруется до записи на диск. Без ключа шифрования выгрузка наружу не пойдёт: в архиве весь ваш бизнес.
  • Проверка. После выгрузки сверяются размер и контрольная сумма. Не прошедший проверку объект удаляется, команда завершается ошибкой.
  • Ротация. В бакете остаются 14 последних архивов. Полный бэкап, от которого зависят оставшиеся инкременты, не удаляется.

Ключ шифрования

Сохраните ключ отдельно от сервера и от бэкапов — в менеджере паролей. Он хранится в настройках сервера, то есть ровно там, что может умереть. В сам архив ключ не попадает. Потерянный ключ — это потерянный бэкап: расшифровать архив без него невозможно.

Восстановление

tracker-ctl restore --from s3://бакет/префикс

Команда возьмёт самый свежий архив, проверит контрольную сумму и попросит подтверждение: восстановление перезаписывает текущие данные. Файл настроек из архива автоматически не применяется — он кладётся рядом для ручной сверки.

Важная деталь про лицензию: бэкап несёт отпечаток инстанса, и восстановление на новом сервере его возвращает. Для сервера лицензий это та же установка, а не новая. Если вам нужна вторая копия рядом с работающей — например, тестовая, — добавьте флаг --new-instance, иначе копия будет выдавать себя за оригинал.

Проверяйте восстановление. Бэкап, который ни разу не разворачивали, — это предположение. Раз в квартал разверните свежий архив на тестовом сервере с --new-instance.

Обновления

tracker-ctl update

Команда показывает версии, спрашивает подтверждение, скачивает образы, применяет миграции и ждёт, пока ядро поднимется. Сбой на любом шаге — автоматический откат на прежнюю версию.

Автообновление настраивается на три режима: выключено, только уведомление о новой версии (по умолчанию) и установка с предварительным бэкапом. В последнем режиме трекер раз в сутки в заданное окно сам делает бэкап, обновляется и при сбое откатывается.

Итог

Чек-лист первого дня:

  • сервер с NVMe и запасом по диску под ваш объём кликов;
  • домены с A-записью напрямую на сервер;
  • установка одной командой, сводка с паролем сохранена;
  • tracker-ctl doctor без замечаний, второй фактор у администратора включён;
  • ключ шифрования бэкапов сохранён вне сервера, офсайт-копия по расписанию настроена;
  • пробное восстановление на тестовом сервере сделано.

Подробности — в документации: установка, обслуживание инстанса и ответы на частые вопросы. Что входит в эксплуатацию трекера, собрано на странице обслуживания, а зачем всё это — на странице о self-hosted.

Дальше

Другие статьи

статья

Как выбрать трекер для арбитража в 2026

Чек-лист из двенадцати пунктов: что проверить в трекере до того, как вести на него деньги, и как сделать это за неделю теста.

статья

Self-hosted трекер vs облачный: что выгоднее

Разбираем, из чего на самом деле состоит счёт за трекер, и при каких условиях свой сервер выгоднее облака — а при каких нет.

статья

Как настроить постбек Unicom24, Leads.su и Admitad в трекере

Пошагово: clickid в ссылке оффера, постбек-URL трекера в кабинете сети, статусы и суммы, проверка и сверка — на примере трёх CPA-сетей.

статья

Бот-фильтрация и защита лендов от скрейпинга

Боты съедают бюджет, портят статистику и уносят ленды. Разбираем, как трекер отличает их от людей и что безопасно с ними делать.

статья

Переезд с Keitaro за 10 минут

Импорт сам переносит настройки из Keitaro. Разбираем, что именно он забирает, что остаётся на тебе и в каком порядке переключать трафик.

статья

Сквозная аналитика расходов: FB, TikTok, Директ и push-сети

Расход из кабинетов, доход из постбеков и деньги в одном отчёте — без ежедневной таблицы. Как это устроено и где подводные камни.

статья

Как настроить постбек Leads.su, Admitad и CityAds в self-hosted трекере

Три сети — три степени готовности: пресет, пресет через интеграцию и свой маппинг. Разбираем каждую по коду трекера и говорим, что сверить в кабинете.

статья

Сверка конверсий по API: как находить потерянные постбеки

Потерянный постбек не виден изнутри трекера. Разбираем, как сверка с API сети находит такие заявки, дозаписывает их без дублей и что показывает отчёт.

статья

Расходы из VK Ads и Яндекс.Директа автоматически: подключение и сопоставление с потоками

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

статья

Переезд с Keitaro за вечер: импорт, домены и постбеки

Вечер на подготовку и несколько дней параллельной работы двух трекеров. План по часам: что делает импорт, что настраивать руками и когда выключать старый трекер.

Поставь inotrack на свой сервер

Установка одной командой на чистый VPS за 10–15 минут. Ключ — сразу после оплаты на сайте или бесплатный на 7 дней.

Вопросы — в Telegram @SmokeJung.

Поддержка