VPN·HUB·CRACK
MultiShop - бэкапы и обслуживание · VPN HUB CRACK
MultiShop - бэкапы и обслуживание
Обновление
Если при установке вы указали свой Telegram ID, бот раз в 6 часов сам проверяет, вышла ли новая версия, и присылает сообщение с кнопкой «🔄 Обновить». По нажатию бот снимает бэкап базы, скачивает новую версию и перезапускается на ней - занимает пару минут. То же действие вручную: /admin → 🔄 Обновление, или на сервере:
cd /opt/multishop && ./scripts/update.sh
Порядок фиксированный: сначала бэкап базы в backups/, потом загрузка новой версии, миграции, перезапуск. Если новая версия не поднялась, скрипт откатывается на прежнюю сам и пишет вам в Telegram, что откатился, - данные при этом не теряются. Автообновление кнопкой обеспечивает служебный процесс updater (включён по умолчанию); отключить его можно, убрав updater из COMPOSE_PROFILES в .env - тогда кнопка только подскажет команду для ручного запуска.
Бэкапы
Раздел «Обслуживание», блок «💾 Бэкапы»: список копий, кнопки «Сделать сейчас», «Скачать», «Проверить целостность» и переход к настройкам расписания.
Есть ли копия на самом деле смотрите на Дашборде, блок «Система», строка «Последняя копия»: когда реально снята, сколько весит, куда выгружена. Расписание («бэкап в 04:00») само по себе ничего не доказывает - фоновая задача могла упасть, а копий не оказаться. Если строка красная или там написано «не знаю», идите в «Обслуживание» и жмите «Сделать сейчас».
Что лежит в архиве: дамп PostgreSQL, файл .env, папка uploads (картинки бота, иконка сайта, шрифты, загруженный свой сайт), manifest.json с контрольными суммами - всё это в одном zip-архиве, зашифрованном AES-256.
.env в архиве - критичная часть, а не формальность: в нём лежит ключ шифрования APP__CRYPT_KEY, без которого ключи ваших касс, сохранённые в базе, не расшифровать никаким другим способом. Восстановленный без .env магазин поднимется без работающих платежей. Поэтому настройку BACKUP_INCLUDE_ENV не выключайте.
Настройки бэкапа - кабинет → «Настройки бота» → «Бэкапы»: включён ли автобэкап, время BACKUP_TIME (по умолчанию 04:00), сколько копий хранить BACKUP_KEEP_LAST, пароль шифрования BACKUP_ENCRYPTION_PASSWORD.
Пароль бэкапа храните отдельно от сервера - в менеджере паролей или на бумаге в сейфе, но не в переписке и не только на самом сервере. Без него архив не восстановить ничем и никак. Установщик печатает пароль в конце установки; если свой не задавали, это первые 16 символов APP__JWT_SECRET из .env.
Куда выгружать копии - тот же раздел, кнопка «Куда выгружать»:
| Куда | Что вписать | Особенность |
|---|---|---|
| Telegram | ничего | приходит в топик «Бэкапы» и в личку администраторам; файл больше 50 МБ режется на части .part01, .part02… |
| S3-хранилище | адрес, бакет, ключи доступа | Selectel, Yandex Object Storage, Backblaze B2, MinIO. Старые копии удаляются автоматически по BACKUP_KEEP_LAST |
| SFTP (второй сервер) | адрес, пользователь, приватный ключ, папка | ключ надёжнее пароля; пароль вместо ключа требует установленного sshpass на сервере |
Пока пароль шифрования не задан, архив никуда не отправляется вовсе - это защита: полная база и .env не должны улетать без сильного ключа шифрования.
Если сервер погиб
Держите под рукой архив, пароль шифрования и новый VPS с SSH-доступом. Порядок:
- Выключите старый сервер, если он ещё жив (
./scripts/dc.sh down) - два бота с одним токеном будут спорить за сообщения, и клиенты увидят хаос. - Положите архив на новый сервер (
scpили дайте скрипту прямую ссылку--url, если бэкап в S3). - На новом сервере выполните:
bash <(curl -fsSL https://get.vpn-hub.pro/multishop/restore.sh) --file /root/backup_20260806_040000.zip
Скрипт спросит лицензионный ключ (по нему скачается продукт) и пароль шифрования архива (ввод не отображается на экране - это нормально), проверит архив, скачает продукт, поднимет базу, вернёт картинки и убедится, что магазин ожил. Восстановится та версия продукта, на которой снимали бэкап - это не недосмотр: свежая версия прогнала бы миграции по старой схеме базы и разошлась с ней. Обновиться до текущей версии нужно отдельным шагом, ./scripts/update.sh, уже после того как убедитесь, что магазин работает.
- Переключите A-запись домена на IP нового сервера в панели регистратора. Пока DNS не обновится (обычно от 5 до 60 минут), мини-приложение и вебхуки касс работать не будут - это ожидаемая задержка, не поломка.
- Проверьте:
/healthотдаёт200,/health/deep- тоже200(а не503, это значит фон или панель не отвечают), бот отвечает на/start, кабинет открывается прежним логином и паролем, касса проходит «Тест».
Токен бота менять не нужно - он восстановится вместе с .env.
Переезд с другого бота
Кабинет → «Обслуживание» → «Миграция»: загрузите users.db из папки старого бота - клиенты с балансами, подписки с ключами панели (подписчики не заметят переезда), история платежей и промокоды переедут сами. Поддерживается переезд с нескольких распространённых ботов-конкурентов и панели 3x-ui напрямую. Повторный импорт того же файла безопасен - дубликатов не создаст.
На что обратить внимание
Наличие файла архива не доказывает, что из него можно восстановиться: пароль мог потеряться, а сама архивация - копировать битые данные несколько недель подряд, оставаясь незамеченной. Раз в пару месяцев поднимите копию на дешёвом тестовом VPS по этой же инструкции и убедитесь, что магазин из неё действительно поднимается.