Как перенести Keitaro на другой сервер: Полное пошаговое руководство (2025)
Перенос трекера Keitaro на новый сервер — ответственная задача, которая может понадобиться при смене хостинга, апгрейде оборудования или масштабировании. Неправильные действия могут привести к потере данных, простою трафика и финансовым убыткам. Это руководство объединяет официальный метод переноса с помощью утилиты kctl
, ручной подход для сложных случаев и решения всех известных проблем, чтобы ваш переезд прошел безболезненно.
Требования к новому серверу
Перед началом убедитесь, что новый сервер соответствует требованиям Keitaro:
- Операционная система: CentOS 9 Stream (официально рекомендованная для максимальной совместимости).
- ОЗУ: Минимум 2 ГБ, рекомендуется 4 ГБ для стабильной работы.
- Диск: SSD или NVMe, минимум 20–30 ГБ свободного места.
- Виртуализация: Только KVM (OpenVZ и другие не поддерживаются).
- Доступ: Root-доступ через SSH (логин/пароль или SSH-ключ).
- Сеть: Стабильное интернет-соединение для установки и активации лицензии.
Рекомендация: Используйте проверенных провайдеров (DigitalOcean, Hetzner, Vultr), чтобы избежать проблем с настройкой окружения.
Часть 1: Подготовка к переносу
Правильная подготовка минимизирует риски и время простоя.
1. Обновление Keitaro
Обновите трекер на старом сервере до последней версии:
- Войдите в админ-панель (Maintenance → Update Keitaro).
- Выберите канал stable (рекомендуется) или beta.
- Нажмите Yes, install и дождитесь завершения.
- Очистите кэш браузера.
Проблема: Обновление не выполняется из-за устаревшей ОС.
Решение: Если сервер работает на CentOS 7/8, свяжитесь с поддержкой Keitaro для инструкций по обновлению или переустановке ОС. Перед этим создайте резервную копию.
2. Снижение TTL домена
Чтобы минимизировать простой трафика:
- За 24–48 часов до переноса зайдите в панель управления DNS вашего домена.
- Уменьшите TTL для A-записи до 300 секунд (5 минут).
- Проверьте текущий TTL командой:
dig +nocmd ваш.домен A +noall +answer
3. Отключение трафика
- Приостановите все кампании в админ-панели.
- Проверьте отсутствие новых кликов в Maintenance → Status.
- Если используется Cloudflare, включите режим "Under Attack" или отключите компрессию.
Проблема: Трафик продолжает поступать.
Решение: Проверьте логи (Maintenance → Logs → System Log). Убедитесь, что все потоки приостановлены.
4. Генерация SSH-ключа (рекомендуется)
Для безопасного и удобного переноса настройте доступ по SSH-ключу:
- На новом сервере выполните:
ssh-keygen -t rsa ssh-copy-id root@<IP_СТАРОГО_СЕРВЕРА>
- Проверьте подключение:
ssh root@<IP_СТАРОГО_СЕРВЕРА>
.
5. Создание резервной копии
Создайте дамп базы данных и сохраните файлы:
- Через kctl (рекомендуемый способ):
SSH_USER=root kctl transfers dump local /var/lib/kctl-transfers
УкажитеSSH_PASSWORD
илиSSH_PATH_TO_KEY
, если требуется. - Через phpMyAdmin (альтернатива):
- Войдите в phpMyAdmin (
http://старый_сервер_IP/phpmyadmin
). - Найдите имя базы данных в
/var/www/keitaro/application/config/config.ini.php
. - Экспортируйте базу в формате SQL (интерфейс должен быть на английском).
- Сохраните файлы:
Проблема: Ошибка "Could not detect TRACKER_POSTBACK_KEY".
Решение: Игнорируйте предупреждение, если ключ не настроен. Убедитесь, что SALT
скопирован корректно.
Проблема: Дамп не создается из-за нехватки места.
Решение: Проверьте место (df -h
). Оптимизируйте базу (Maintenance → Optimize Database) или удалите старые логи (Maintenance → Logs).
Часть 2: Перенос с помощью kctl (официальный метод)
Этот метод переносит базу данных, настройки, статистику, лендинги и системные конфигурации. Все команды выполняются на новом сервере.
1. Установка Keitaro
Установите трекер на новом сервере:
curl https://keitaro.io/kctl.sh | bash -s -- install
Выберите канал stable для надежности.
Проблема: Ошибка "kctl: command not found".
Решение: Проверьте интернет-соединение и права root. Повторите команду или обратитесь в поддержку Keitaro.
2. Перенос данных
Запустите процесс в сессии screen
для защиты от обрыва связи:
screen
- С SSH-ключом:
kctl transfers copy-from <IP_СТАРОГО_СЕРВЕРА>
- С паролем:
SSH_PASSWORD=<ВАШ_ПАРОЛЬ> kctl transfers copy-from <IP_СТАРОГО_СЕРВЕРА>
- С нестандартным портом:
SSH_PORT=2222 SSH_PASSWORD=<ВАШ_ПАРОЛЬ> kctl transfers copy-from <IP_СТАРОГО_СЕРВЕРА>
Процесс может занять от минут до часов, в зависимости от объема данных. Дождитесь сообщения Everything is restored
.
Проблема: Ошибка соединения с SSH.
Решение: Проверьте доступность старого сервера (ping <IP_СТАРОГО_СЕРВЕРА>
), порт SSH и настройки файрвола.
Часть 3: Ручной перенос (альтернатива)
Если kctl
не сработал (например, из-за отсутствия root-доступа или кастомизаций), используйте ручной метод.
1. Бэкап на старом сервере
- Создайте дамп базы данных:
mysqldump keitaro | gzip > /root/dump.sql.gz
- Проверьте целостность дампа:
gunzip -c /root/dump.sql.gz | head -n 10
- Заархивируйте файлы лендингов и ботов:
tar -czvf /root/landers.tar.gz /var/www/keitaro/lander tar -czvf /root/bots.tar.gz /var/www/keitaro/var/bots
2. Перенос и восстановление
- Установите Keitaro на новом сервере (см. выше).
- Перенесите файлы
dump.sql.gz
,landers.tar.gz
иbots.tar.gz
на новый сервер (например, через SCP или FTP). - Разверните файлы:
tar -xzvf /root/landers.tar.gz -C /var/www/keitaro/ tar -xzvf /root/bots.tar.gz -C /var/www/keitaro/
- Восстановите базу данных:
SALT=<ВАШ_SALT> POSTBACK_KEY=<ВАШ_KEY> kctl transfers restore-from-sql local /root/dump.sql.gz
Проблема: Ошибка "Incorrect table definition".
Решение: Проверьте совместимость версий MySQL/MariaDB между серверами. Если версии различаются, обновите новый сервер до той же версии, что на старом (mysql --version
).
Часть 4: Действия после переноса
1. Сброс лицензии
- Войдите в личный кабинет на https://keitaro.io.
- В разделе Licenses нажмите Unlink для старого сервера.
- В админ-панели нового трекера (
https://новый_сервер_IP/admin
) введите лицензионный ключ.
Проблема: Лицензия не активируется.
Решение: Проверьте исходящие соединения (curl https://keitaro.io
). Сбросьте кастомные настройки /etc/resolv.conf
или обратитесь в поддержку.
2. Обновление DNS
3. Настройка Cron
- На старом сервере проверьте задачи:
crontab -l
. - На новом сервере добавьте их:
crontab -e
. Пример задачи:* * * * * /var/www/keitaro/bin/kctl.sh
Проблема: Cron не работает.
Решение: Проверьте логи (tail -f /var/log/cron
) и убедитесь, что путь к kctl.sh
верный.
4. Проверка SSL
Проблема: Ошибка Let’s Encrypt.
Решение: Проверьте, открыт ли порт 80 (telnet ваш.домен 80
). Убедитесь, что домен указывает на новый IP.
Часть 5: Устранение проблем
- Белый экран или ошибка 500:
- Исправьте права:
kctl system-permissions
. - Проверьте версию PHP (
php -v
) и сравните с требованиями Keitaro. - Изучите логи:
/var/log/nginx/error.log
и/var/www/keitaro/var/log/system.log
. - Ошибка подключения к базе данных:
- Проверьте
/var/www/keitaro/application/config/db.php
. Убедитесь, что логин, пароль и хост совпадают с настройками нового сервера. - Медленная работа трекера:
- Лендинги не работают (404):
- Статистика не обновляется:
Финальный чек-лист
- Админ-панель открывается по новому IP.
- Лицензия активирована.
- Домен указывает на новый IP (
ping ваш.домен
). - Тестовый клик регистрируется в статистике.
- Логи не содержат ошибок (Maintenance → Logs).
- Cron работает (проверьте
/var/log/cron
).
Заключение
Перенос Keitaro — это как пересадка сердца для вашего бизнеса. Следуя этому руководству, вы минимизируете риски и простои. Если возникнут сложности, обратитесь в поддержку Keitaro (support@keitaro.io, Telegram или live-чат с 06:00 до 16:00 GMT). Успешного переезда!