LAZARUS — продвинутая система резервного копирования для Remnawave Telegram Shop Bot с поддержкой шифрования, облачных хранилищ и умной автоматизацией.
Одна команда — установка и запуск:
bash <(curl -sSL https://raw.githubusercontent.com/UnderGut/LAZARUS-Backup-Manager/main/lazarus-backup)Или установить в систему:
curl -sSL https://raw.githubusercontent.com/UnderGut/LAZARUS-Backup-Manager/main/lazarus-backup -o /usr/local/bin/lazarus && chmod +x /usr/local/bin/lazarus && lazarus💡 Скрипт автоматически установится в
/opt/lazarus-backup/и создаст symlink/usr/local/bin/lazarus
Если автоматическая проверка обновлений не работает (кэширование CDN), обновите вручную:
# Обновить через jsDelivr CDN (быстрее)
curl -sSL "https://cdn.jsdelivr.net/gh/UnderGut/LAZARUS-Backup-Manager@main/lazarus-backup?t=$(date +%s)" -o /opt/lazarus-backup/lazarus && chmod +x /opt/lazarus-backup/lazarus
# Или через GitHub напрямую (надёжнее)
curl -sSL "https://raw.githubusercontent.com/UnderGut/LAZARUS-Backup-Manager/main/lazarus-backup" -o /opt/lazarus-backup/lazarus && chmod +x /opt/lazarus-backup/lazarus💡 Параметр
?t=$(date +%s)добавляет timestamp для обхода кэша CDN
- Smart Scan — автоматически находит бота в Docker (поддержка
rwp_shop,telegram-shop,shopbot) - 3 типа бэкапов — Full (БД + файлы), DB Only, Files Only
- AES-256 шифрование — защита архивов паролем (PBKDF2, 100k итераций)
- Версионирование — каждый бэкап содержит версию бота на момент создания
- Умная фильтрация — исключение больших файлов и папок (logs, node_modules, .git)
- Автоматическая миграция — полный перенос данных из Bedolaga в RWP-Shop в 10 шагов
- Пользователи — telegram_id, username, реферальные коды (~95% покрытие)
- Подписки — все активные подписки с датами и статусами (~90% покрытие)
- Транзакции — история платежей и промокоды (~85% покрытие)
- Настройки — токен бота, каналы, админы из .env
- Сохранение несовместимых данных — балансы, промокоды на баланс сохраняются в NOT_MIGRATED
- 📖 Полная документация миграции
- Telegram — отправка файлов и уведомлений (раздельно настраивается)
- FTP / FTPS / WebDAV / Rclone — облачные хранилища с retry и пошаговой настройкой
- Умная ротация — по времени (дни) или количеству файлов
- Cron интеграция — настройка расписания из меню
- Блокировка параллельного запуска — предотвращение конфликтов при запуске из cron
- Авто-обновление — проверка и установка новых версий скрипта
- Восстановление — Full / DB / Files из любого бэкапа
- Обновление бота — установка новой версии из tar-файла с автобэкапом
- Health-check — проверка контейнеров перед операциями
- Debug режим — полное логирование всех операций (
--debug) - Dry-run — предпросмотр действий без выполнения (
--dry-run)
- Linux (Debian/Ubuntu/CentOS)
- Bash 5+, root права
- Docker Compose v2 (
docker compose, неdocker-compose) - tar, gzip, curl/wget, openssl
📸 Полная галерея скриншотов: screenshots/README.md
Файл конфигурации: /opt/lazarus-backup/config.env (chmod 600)
💡 Настройки Telegram опциональны. Если не настроены, скрипт покажет уведомление в меню, но будет работать без отправки уведомлений.
| Параметр | Описание | Пример |
|---|---|---|
BOT_TOKEN |
Токен Telegram бота | 123456:ABC-DEF1234... |
CHAT_ID |
ID чата для уведомлений | -1001234567890 |
TG_MESSAGE_THREAD_ID |
ID топика (для групп с темами) | 12345 или пусто |
SEND_TO_TELEGRAM |
Уведомления в TG | true / false |
TG_SEND_FILE |
Отправлять архив в TG | true / false |
| Параметр | Описание | Пример |
|---|---|---|
BOT_PATH |
Путь к docker-compose бота | /opt/private-remnawave-telegram-shop-bot |
BOT_CONTAINER_NAME |
Имя контейнера бота | rwp_shop |
DB_CONTAINER_NAME |
Имя контейнера БД | rwp_shop_db |
DB_USER |
Пользователь PostgreSQL | postgres |
IGNORE_MISMATCH |
Игнорировать несоответствие контейнера | true / false |
💡 Скрипт автоматически читает
POSTGRES_USERиPOSTGRES_DBиз.envфайла бота
| Параметр | Описание | Пример |
|---|---|---|
DELETE_MODE |
Режим удаления | time (по дням) / count (по количеству) |
RETENTION_DAYS |
Хранить N дней (если mode=time) | 7 |
MAX_BACKUPS_COUNT |
Макс. количество (если mode=count) | 100 |
MAX_BACKUP_SIZE_MB |
Лимит общего размера бэкапов в MB | 0 (без лимита) |
| Параметр | Описание | Пример |
|---|---|---|
SCHEDULE_FULL |
Расписание полного бэкапа | 0 4 * * * (ежедневно 04:00) |
SCHEDULE_DB |
Расписание бэкапа БД | */15 * * * * (каждые 15 мин) |
SCHEDULE_FILES |
Расписание бэкапа файлов | пусто (отключено) |
| Параметр | Описание | Пример |
|---|---|---|
REMOTE_STORAGE_TYPE |
Тип хранилища | off / ftp / ftps / webdav / rclone |
REMOTE_STORAGE_URL |
URL сервера с папкой | ftp://backup.server.com/backups/ |
REMOTE_STORAGE_USER |
Логин | backup_user |
REMOTE_STORAGE_PASS |
Пароль | secret123 |
SEND_TO_REMOTE |
Отправлять на удалённый сервер | true / false |
| Параметр | Описание | Пример |
|---|---|---|
BACKUP_PASSWORD |
Пароль AES-256 шифрования | MySecretPass123 или пусто |
MAX_FILE_SIZE_MB |
Макс. размер файла в архиве (MB) | 1 (пропуск больших) |
EXCLUDE_DIRS |
Исключить папки (через пробел) | node_modules .git cache |
lazarus # Интерактивное меню
lazarus restore # Меню восстановления
lazarus migrate # 🆕 Миграция с Bedolaga (BETA)
lazarus cleanup # Очистка старых бэкапов
lazarus check_update # Проверка обновлений скриптаlazarus backup create # Полный бэкап (БД + файлы)
lazarus backup db # Только база данных
lazarus backup files # Только файлы
lazarus backup list # Список бэкапов
# Короткие флаги
lazarus -B -c # = lazarus backup create
lazarus -B -d # = lazarus backup db
lazarus -B -f # = lazarus backup files
# Legacy команды (совместимость)
lazarus backup_full # = lazarus backup create
lazarus backup_db # = lazarus backup db
lazarus backup_files # = lazarus backup fileslazarus upgrade # Авто-обновление бота (non-interactive)
lazarus bot up # Запустить контейнеры бота
lazarus bot down # Остановить контейнеры бота
lazarus bot status # Статус контейнеров
lazarus bot upgrade # Авто-обновление бота
# Короткие флаги
lazarus -b -u # = lazarus bot upgrade
lazarus -b -s # = lazarus bot status| Флаг | Описание |
|---|---|
--yes, -y |
Автоподтверждение (для cron) |
--dry-run, -n |
Предпросмотр без выполнения |
--debug, -d |
Режим отладки (подробное логирование) |
--report-tg |
Отправить отчёт в Telegram |
# Автоматический бэкап из cron
lazarus --yes backup_full
# Предпросмотр очистки
lazarus --dry-run cleanup
# Отладка с полным выводом
lazarus --debug backup_db
# Очистка с отчётом в Telegram
lazarus --yes --report-tg cleanupftp://backup.example.com/backups
ftps://secure.example.com:990/folder
https://webdav.yandex.ru/backups
https://cloud.example.com/remote.php/dav/files/user/
gdrive:backups
s3:bucket/backups
dropbox:backup-folder
⚠️ Тестовая функция! Используйте на свой страх и риск. Обязательно делайте бэкапы!
LAZARUS включает модуль миграции данных из Telegram-бота Bedolaga в RWP-Shop:
| Данные | Покрытие | Примечание |
|---|---|---|
| 👤 Пользователи | ~95% | telegram_id, username, реф. коды |
| 📋 Подписки | ~90% | Все активные с датами |
| 💳 Транзакции | ~85% | История платежей |
| 🎟️ Промокоды | ~100% | Дни и скидки |
| 👥 Рефералы | ~80% | Связи referrer → referred |
| ⚙️ Настройки | ~85% | Токен, каналы, админы |
- Денежные балансы — RWP-Shop не поддерживает (сохраняются в CSV)
- Промокоды на баланс — только дни/скидки (сохраняются в CSV)
- Индивидуальные autopay — в RWP-Shop глобальная настройка
lazarus migrate
# или через меню: 5 → Миграция📖 Полная документация: migration/README.md
LAZARUS включает функцию обновления Remnawave Telegram Shop Bot:
- Проверка Docker images — если образ уже загружен в Docker, предлагает обновиться сразу без поиска tar-файлов
- Проверка требований — для версий 3.25.5+ показывает статус LICENSE_KEY и machine-id volume
- Предупреждения — красные уведомления если LICENSE_KEY или machine-id отсутствуют
lazarus upgrade # Авто-обновление бота без интерактивного меню
lazarus bot upgrade # То же самое
lazarus -b -u # Короткая формаСкрипт использует jsDelivr CDN для проверки обновлений (быстрее чем raw.githubusercontent.com).
lazarus check_update # Проверить и обновить скрипт- Проверка загруженных образов в Docker
- Поиск tar-файлов в
/opt/,/root/,/home/,/tmp/, папке бота - Отображение доступных версий с подсветкой новых
- Автоматический бэкап перед обновлением (Full + DB)
- Загрузка образа (если не загружен) и обновление
compose.yaml - Проверка и добавление LICENSE_KEY / machine-id volume
- Health-check контейнеров после обновления
- Предложение удалить установочные tar-файлы
📖 Полная документация: bot-update/README.md
Поддерживаемые форматы образов:
rwp_shop_X.Y.Z.tar(рекомендуемый)rwp_shop-X.Y.Z-amd64.tarprivate-remnawave-telegram-shop-bot-X.Y.Z.tar
При запуске с --debug выводится полная информация:
lazarus --debug backup_fullЧто отображается:
- Системная информация (версия bash, пользователь, hostname)
- Конфигурация (пути, контейнеры, настройки)
- Настройки Telegram и удалённого хранилища
- Ход выполнения каждой операции с метками времени
- HTTP-коды ответов API
Категории логов: BACKUP, LOCK, DISK, HEALTH, DB, TAR, ENC, VERIFY, UPLOAD, TG, REMOTE, SCAN, RESTORE, MIGRATE
/opt/lazarus-backup/
├── config.env # Конфигурация (chmod 600)
├── lazarus-backup # Основной скрипт
└── backup/ # Папка с архивами
├── lazarus_full_2025-01-01_04_00_00.tar.gz
├── lazarus_full_2025-01-01_04_00_00.tar.gz.version
├── lazarus_db_2025-01-01_12_00_00.tar.gz
└── lazarus_db_2025-01-01_12_00_00.tar.gz.enc # Зашифрованный
/opt/rwp-shop/MIGRATION/ # Рабочая папка миграции (создаётся в папке бота)
├── 20250101_120000/ # Сессия миграции
│ ├── export/ # Экспортированные данные
│ ├── import/ # Трансформированные данные
│ ├── NOT_MIGRATED/ # Несовместимые данные
│ └── migration_report.txt # Отчёт о миграции
/usr/local/bin/lazarus # Symlink на скрипт
/var/log/lazarus_backup.log # Лог-файл (ротация при >10MB)
/var/run/lazarus_backup.lock # Lock-файл (предотвращение параллельного запуска)
lazarus_{full|db|files}_YYYY-MM-DD_HH_MM_SS.tar.gz # Обычный
lazarus_{full|db|files}_YYYY-MM-DD_HH_MM_SS.tar.gz.enc # Зашифрованный
*.version # Кэш версии бота
Для полного удаления LAZARUS используйте пункт меню 666:
lazarus
# Выбрать: 666. Удалить скрипт (Uninstall)Будут удалены:
/opt/lazarus-backup/(скрипт и конфигурация)/usr/local/bin/lazarus(symlink)- Cron-задачи LAZARUS
⚠️ Папка с бэкапами (/opt/lazarus-backup/backup/) НЕ удаляется автоматически
Основано на: https://github.com/distillium/remnawave-backup-restore
MIT License — см. LICENSE
Developed with ❤️ by UnderGut