Files
remnawave-minishop/docs/migrations/remnashop.md
T

3.6 KiB
Raw Blame History

Миграция из Remnashop

Remnashop импортируется через общий скрипт импорта backend/scripts/import_legacy.py. Самый удобный путь - интерактивный install wizard:

curl -fsSL https://raw.githubusercontent.com/3252a8/remnawave-minishop/main/scripts/install.sh -o install.sh
sh install.sh

В меню выберите Install new stack and run migration для нового сервера или Run migration only, если compose-папка и .env уже готовы.

Что переносится

  • пользователи Telegram, username, email, Remnawave UUID и метаданные профиля;
  • старые referral codes и связи рефералов;
  • подписки, сроки, лимиты трафика, HWID/device limit и UUID подписок панели;
  • платежи и статусы платежей;
  • промокоды на дни подписки и их активации, если таблицы есть в source DB;
  • служебные mappings, чтобы повторный запуск мог работать в режиме merge;
  • настройки совместимости Remnashop в админке: старые ref-ссылки и promo codes.

Данные, которые не имеют прямого аналога, сохраняются в служебных таблицах миграции или message logs как заметки, чтобы администратор мог проверить их после переноса.

Flow wizard

  1. Wizard скачивает compose-профиль и backend/scripts/import_legacy.py через raw.githubusercontent.com, без клонирования репозитория.
  2. Вы указываете source PostgreSQL DSN Remnashop и schema, обычно public.
  3. Вы выбираете целевую БД: текущую compose-БД или ручной target DSN.
  4. При необходимости указываете JSON map тарифов Remnashop в локальные tariff_key, например {"basic": "standard_month"}.
  5. Wizard запускает dry-run и показывает JSON-сводку.
  6. После подтверждения y importer применяет изменения и перезапускает backend/worker, чтобы настройки совместимости перечитались.

Если source DB находится на том же Docker host, помните, что DSN выполняется из backend-контейнера. Для подключения к сервису вне compose-сети может понадобиться host name вроде host.docker.internal, внешний адрес сервера или ручное подключение контейнеров к общей Docker network.

Ручной запуск

Если нужно запустить importer без wizard:

docker compose run --rm backend \
  python backend/scripts/import_legacy.py \
    --source-type remnashop \
    --source-dsn 'postgresql://old_user:old_password@old_host:5432/remnashop' \
    --source-schema public \
    --dry-run

После успешного dry-run повторите команду без --dry-run. По умолчанию режим конфликтов merge: существующие пользователи и платежи сопоставляются, а новые записи добавляются. Для узкого импорта используйте --only, например --only users,referrals,promocodes.