Перейти к содержимому

Backup and Restore

Пункт Backup and Restore главного меню подключает инструмент distillium remnawave-backup-restore. Он снимает резервную копию всей панели Remnawave: базу PostgreSQL и директорию установки со всеми конфигурациями. Копию можно вернуть на тот же сервер или развернуть на новом, делать вручную или по расписанию, отправлять в Telegram, Google Drive или S3-хранилище. Старые копии подчищаются сами по политике хранения.

Backup & Restore

Резервные копии Remnawave: база данных и директория панели целиком, вручную и по расписанию, с восстановлением на тот же или новый сервер.

Версияv4.0.0ОтправкаTelegram, Google Drive, S3Расписаниеcron, время по UTC+0Восстановлениевсё, только база, только файлы
  • База данных. В режиме Docker дамп снимается командой pg_dumpall прямо внутри контейнера remnawave-db, поэтому в копию попадает и база, и роли с глобальными настройками. Для внешней PostgreSQL инструмент поднимает одноразовый контейнер postgres и снимает дамп по сети, SSL-режим настраивается.
  • Директория панели. Архивируется целиком, кроме временных файлов: *.log, *.tmp и .git исключаются.
  • Telegram-бот магазина (опционально). Если включён бэкап бота, его база и директория добавляются в тот же архив.

Всё складывается в один файл вида remnawave_backup_full_2026-10-04_12_00_00.tar.gz. Слово в имени (full, panel, bot) сразу показывает состав. Внутри архива дамп базы, архив директории и файл backup_meta.info с версией панели, версией скрипта и типом дампа: при восстановлении инструмент сверяет эти данные с текущим режимом и предупредит о несовпадении.

Выполните на сервере панели:

root@server: ~
remnawave_reverse
  1. В главном меню выберите пункт 8:

    root@server: ~
    REMNAWAVE REVERSE-PROXY by eGames
    Wiki: https://wiki.egam.es/
    
    5.Xray Checker: мониторинг подписки
    6.Кастомные расширения от legiz
    7.WARP Native
    8.Backup and Restore
    
    0.Выход
    
    Выберите действие (0-13):
  2. При первом запуске модуль скачивает backup-restore.sh с двух независимых зеркал и сверяет контрольные суммы: файл запускается только когда оба источника отдали одинаковые байты. Если проверки не сошлись, запуск отменяется с сообщением «Скрипт не подтверждён двумя независимыми источниками, возможна подмена. Запуск отменён».

  3. Дальше инструмент переносит сам себя в постоянный каталог и перезапускается уже оттуда:

    root@server: ~
    [INFO] Configuration not found. Script launched from temporary location.
    [INFO] Moving script to main install directory: /opt/rw-backup-restore/backup-restore.sh...
    [SUCCESS] Script successfully moved to /opt/rw-backup-restore/backup-restore.sh.
    [ACTION] Restarting script from new location to complete setup.

Повторные запуски пункта 8 сразу открывают установленную копию через команду rw-backup, скачивания не происходит.

  1. Выберите язык интерфейса:

    root@server: ~
    Select language / Выберите язык:
    1.Русский
    2.English
    
    [?]: 1
  2. Выберите режим работы. Полный копирует панель (бот добавляется позже по желанию), Только Бот нужен, когда панель живёт на другом сервере:

    root@server: ~
    [ACTION] Выберите режим работы скрипта:
    1.Полный (Панель Remnawave + Бот опционально)
    2.Только Бот (если панель установлена на другом сервере)
    
    [?] Ваш выбор: 1
  3. Настройка Telegram. Токен созданного в @BotFather бота и ваш ID можно оставить пустыми: уведомления легко включить позже в настройках, но без них вы не узнаете о результатах автоматических бэкапов:

    root@server: ~
    [INFO] Настройка уведомлений Telegram:
    [INFO] Создайте Telegram бота в @BotFather и получите API Token
    [INFO] Оставьте пустым чтобы пропустить, настроить можно позже в меню настроек.
    [WARN] Без Telegram вы не будете получать уведомления о бэкапах и обновлениях.
        Введите API Token: 1234567890:AA…
    [INFO] Введите Chat ID (для отправки в группу) или свой Telegram ID (для прямой отправки в бота)
           Chat ID/Telegram ID можно узнать у этого бота @username_to_id_bot
        Введите ID: 112233445
    [INFO] Опционально: для отправки в определенный топик группы, введите ID топика (Message Thread ID)
           Оставьте пустым для общего потока или отправки напрямую в бота
        Введите Message Thread ID: 
  4. Имя пользователя базы данных панели (обычно подходит значение по умолчанию):

    root@server: ~
    [INFO] Введите имя пользователя БД (по умолчанию postgres):
        Ввод: postgres
  5. Укажите, где установлена панель:

    root@server: ~
    [ACTION] Где установлена/устанавливается ваша панель Remnawave?
    1./opt/remnawave
    2./root/remnawave
    3./opt/stacks/remnawave
    4.Указать свой путь
    
     [?] Выберите вариант: 1
  6. Готово. Конфигурация сохраняется в /opt/rw-backup-restore/config.env, а для быстрого запуска создаётся команда rw-backup:

    root@server: ~
    [SUCCESS] Новая конфигурация сохранена в /opt/rw-backup-restore/config.env
    [INFO] Создание или обновление символической ссылки /usr/local/bin/rw-backup...
    [SUCCESS] Символическая ссылка успешно настроена.
root@server: ~
REMNAWAVE BACKUP & RESTORE by distillium
Версия: 4.0.0
БД: Docker контейнер

1.Создание бэкапа вручную
2.Восстановление из бэкапа

3.Настройка бэкапа Telegram бота
4.Настройка автоматической отправки и уведомлений
5.Настройка способа отправки
6.Настройка конфигурации скрипта

7.Обновление скрипта
8.Удаление скрипта

0.Выход
—  Быстрый запуск: rw-backup доступен из любой точки системы

[?] Выберите пункт: 

Строка БД: под версией показывает текущее подключение: контейнер remnawave-db или внешняя PostgreSQL с адресом. Команда rw-backup запускает инструмент из любой точки системы без открытия главного меню скрипта, а rw-backup backup сразу делает копию без меню: так работает расписание.

  1. Выберите пункт 1. Инструмент снимет дамп базы, заархивирует директорию панели и соберёт итоговый архив:

    root@server: ~
    [INFO] Начинаю процесс создания резервной копии...
    [INFO] Режим подключения к БД: Docker контейнер (remnawave-db)
    
    [INFO] Создание PostgreSQL дампа и сжатие в файл...
    [SUCCESS] Дамп PostgreSQL успешно создан.
    
    [INFO] Архивирование директории Remnawave...
    [INFO] Архивирование директории /opt/remnawave...
    [SUCCESS] Директория Remnawave успешно заархивирована.
    
    [SUCCESS] Итоговый архив бэкапа успешно создан: /opt/rw-backup-restore/backup/remnawave_backup_full_2026-10-04_12_00_00.tar.gz
    
    [INFO] Очистка промежуточных файлов бэкапа...
    [SUCCESS] Промежуточные файлы удалены.
    
    [INFO] Отправка бэкапа (telegram)...
    [SUCCESS] Бэкап успешно отправлен в Telegram.
    
    [INFO] Применение политики хранения бэкапов (оставляем за последние 7 дней)...
    [SUCCESS] Политика хранения применена. Старые бэкапы удалены.

Несколько деталей поведения:

  • Файл всегда остаётся на сервере в /opt/rw-backup-restore/backup, отправка в Telegram или облако происходит дополнительно.
  • Telegram не принимает файлы больше 50 МБ: такой бэкап остаётся только локально, а в чат приходит уведомление о превышении лимита.
  • Политика хранения по умолчанию держит локальные копии 7 дней, в S3 отдельно настраивается 30 дней.
  • После отправки инструмент проверяет обновление самого себя и при наличии свежей версии присылает уведомление в Telegram.

К копии прикладывается сообщение с составом, размером и версией панели:

Telegram
💾 #backup_success
➖➖➖➖➖➖➖➖➖
✅ Бэкап успешно создан
🌊 Remnawave: 3.7.0
🖥️ Только панель
🐳 БД: Docker
📁 БД + директория
📏 Размер: 24M
📅 Дата: 2026-10-04 12:00:00
  1. Выберите пункт 2 и источник копии: локальные файлы или скачивание из S3:

    root@server: ~
    Восстановление из бэкапа
    [INFO] Режим подключения к БД: Docker контейнер (remnawave-db)
    
    Выберите источник бэкапа:
    1.Локальные файлы
    2.Скачать из S3 Storage
    
    0.Вернуться в главное меню
    
    [?] Выберите пункт: 1
  2. Локальные копии ищутся в /opt/rw-backup-restore/backup: архив с другого сервера достаточно скопировать туда по SFTP. Из списка выбирается нужный файл:

    root@server: ~
    [INFO] Поместите файл бэкапа в папку: /opt/rw-backup-restore/backup
    
    Выберите файл для восстановления:
    1)remnawave_backup_full_2026-10-04_12_00_00.tar.gz
    2)remnawave_backup_full_2026-10-03_12_00_00.tar.gz
    
    0)Вернуться в главное меню
    
    [?] Введите номер файла (0 для выхода): 1
  3. Архив распаковывается, и инструмент показывает метаданные: тип дампа, версию скрипта и версию панели на момент копии:

    root@server: ~
    [INFO] Распаковка архива бэкапа...
    [SUCCESS] Архив распакован
    [INFO] Метаданные бэкапа: тип дампа = dumpall
    [INFO] Версия скрипта бэкапа = 4.0.0
    [INFO] Версия панели в бэкапе = 3.7.0
  4. Если в архиве есть и база, и файлы, инструмент спросит объём восстановления:

    root@server: ~
    [WARN] Найден бэкап панели. Восстановление перезапишет текущую БД.
    
    1.Всё (БД + файлы)
    2.Только база данных
    3.Только файлы
    0.Назад
    
    [?] Выберите пункт: 1
    [?] Восстановить панель? (Y/N): y
    [INFO] Введите имя БД (по умолчанию postgres):
    Ввод: postgres
  5. Ход восстановления: панель останавливается, база восстанавливается из дампа, контейнеры поднимаются заново:

    root@server: ~
    [INFO] Ожидание готовности БД...
    [INFO] Восстановление базы данных...
    [SUCCESS] База данных успешно восстановлена.
    
    [INFO] Запуск остальных контейнеров...
    [SUCCESS] Панель успешно запущена.
    [SUCCESS] Панель готова. Нажмите Enter для продолжения...
    
    [SUCCESS] Процесс восстановления завершен.

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

Пункт 3 подключает к копии магазин. Поддерживаются remnawave-telegram-shop, приватный rwp-shop, remnawave-tg-shop, remnashop и remnawave-minishop:

root@server: ~
Настройка бэкапа Telegram бота

  Бот:      Бот Minishop
  Путь:     /opt/remnawave-minishop
  Режим:    ПАНЕЛЬ + БОТ

1.Настроить / Изменить параметры бота
2.Полностью выключить бэкап бота
3.Исключить бэкап панели (Режим Только Бот)

0.Вернуться в главное меню

 [?] Выберите пункт: 

При настройке выбирается бот из списка, путь к его директории и пользователь базы. Режим Только Бот пригодится, когда панель и магазин живут на разных серверах: копия будет содержать один магазин. Имя файла в этом случае получит пометку bot.

Пункт 4 ставит cron-задачу, которая сама делает и отправляет копию. Время задаётся по UTC+0 в виде списка часов:

root@server: ~
Настройка автоматической отправки

[INFO] Автоматическая отправка выключена.

1.Включить/перезаписать автоматическую отправку бэкапов
2.Выключить автоматическую отправку бэкапов
0.Вернуться в главное меню

[?] Выберите пункт: 1
Выберите вариант автоматической отправки:
1)Ввести время (например: 08:00 12:00 18:00)
2)Ежечасно
3)Ежедневно
Ваш выбор: 1
Введите желаемое время отправки по UTC+0 (например, 08:00 12:00):
Время через пробел: 08:00

[INFO] Настройка cron-задачи для автоматической отправки...
[INFO] SHELL=/bin/bash добавлен в crontab.
[INFO] PATH переменная уже существует в crontab.
[SUCCESS] CRON-задача для автоматической отправки успешно установлена.
[SUCCESS] Автоматическая отправка установлена на: 08:00 по UTC+0.

Введённое время инструмент сам пересчитывает в часовой пояс сервера, поэтому копия приходит в ожидаемый час по вашему локальному времени. Вывод задачи пишется в /var/log/rw_backup_cron.log.

Пункт 5 выбирает, куда уходят копии:

root@server: ~
Настройка способа отправки бэкапов

[INFO] Текущий способ: TELEGRAM

1.Установить способ отправки: Telegram
2.Установить способ отправки: Google Drive
3.S3 Storage (S3-совместимое хранилище)

0.Вернуться в главное меню

[?] Выберите пункт: 
  • Telegram отправляет копию файлом в чат или топик группы. Лимит 50 МБ, крупные панели лучше отправлять в облако.
  • Google Drive требует создать Google API-приложение и получить Client ID, Client Secret и Refresh Token: инструмент проведёт по шагам, покажет ссылку авторизации и запросит код из браузера. Копии складываются в выбранную папку диска, а уведомления по-прежнему приходят в Telegram.
  • S3 Storage работает с любым S3-совместимым хранилищем. Понадобятся Endpoint URL, Region, имя бакета, Access Key и Secret Key, по желанию префикс (папка) и срок хранения в днях. AWS CLI устанавливается автоматически, подключение проверяется тестом в настройках.

Если настройка Google Drive или S3 не завершена, инструмент откатывает отправку на Telegram и сообщает об этом.

Пункт 6 открывает конфигурацию инструмента:

root@server: ~
Настройка конфигурации скрипта

1.Настройки Telegram
2.Настройки Google Drive
3.Настройки S3 Storage
4.Подключение к БД панели
5.Путь Remnawave
6.Политика хранения бэкапов
7.Язык / Language
8.Автообновление скрипта

0.Вернуться в главное меню

[?] Выберите пункт: 

Самое полезное внутри:

  • Настройки Telegram хранят токен, ID чата и топик, а также прокси для Telegram API с тестом: три попытки с выводом времени ответа и причин ошибок.
  • Подключение к БД панели переключает между контейнером remnawave-db и внешней PostgreSQL, хранит хост, порт, имя базы, SSL-режим и версию клиента, подключение проверяется кнопкой теста.
  • Политика хранения задаёт, сколько дней (или часов) живут локальные копии и копии в S3.
  • Автообновление разрешает инструменту обновлять себя при каждом бэкапе, о чём приходит уведомление со ссылкой на список изменений.

Пункт 7 сравнивает версию с GitHub и при наличии свежей предлагает обновление: перед заменой текущий файл сохраняется как резервная копия, а после установки скрипт перезапускается.

root@server: ~
[INFO] Начинаю процесс проверки обновлений...
[INFO] Получение информации о последней версии скрипта с GitHub...
[INFO] Текущая версия: 4.0.0
[INFO] Доступная версия: 4.1.0

[ACTION] Доступно обновление до версии 4.1.0.
Хотите обновить скрипт? Введите Y/N: y
[INFO] Загрузка обновления...
[INFO] Удаление старых резервных копий скрипта...
[INFO] Создание резервной копии текущего скрипта...
[SUCCESS] Скрипт успешно обновлен до версии 4.1.0.
[INFO] Для применения изменений скрипт будет перезапущен...

Пункт 8 удаляет инструмент, но перед этим даёт сохранить локальные копии в отдельный каталог /opt/rw-backup-restore-saved:

root@server: ~
[WARN] ВНИМАНИЕ! Будут удалены:
 - Скрипт
 - Каталог установки (бэкапы можно сохранить)
 - Символическая ссылка (если существует)
 - Задачи cron

Вы уверены, что хотите продолжить? Введите Y/N: y
Сохранить локальные бэкапы перед удалением? Y/N: y
[SUCCESS] Бэкапы сохранены в /opt/rw-backup-restore-saved
[INFO] Удаление cron-задач...
[SUCCESS] Задачи cron для автоматического бэкапа удалены.
[INFO] Удаление символической ссылки...
[SUCCESS] Символическая ссылка удалена.
[INFO] Удаление каталога установки и всех данных...
[SUCCESS] /opt/rw-backup-restore (включая скрипт, конфигурацию, бэкапы) удален.

Сохранённые копии легко вернуть: скопируйте нужные .tar.gz в /opt/rw-backup-restore/backup после новой установки и выберите «Восстановление из бэкапа».

Копия переносит панель целиком, поэтому для переезда достаточно восстановить её на новом сервере и поправить окружение:

  1. В Cloudflare смените IP поддомена панели (и поддомены остальных сервисов, если они переезжают вместе с ней).
  2. Восстановите директорию и базу из копии, как описано выше.
  3. Ссылка доступа и пароль панели останутся от старого сервера: их трогать не нужно.
  4. Если сервисный порт панели (по умолчанию 2222) на нодах открыт только для старого адреса, замените правило на каждой ноде:
root@server: ~
ufw delete allow from OLD_IP to any port 2222 && ufw allow from NEW_IP to any port 2222

При переезде связки «панель и нода на одном сервере» дополнительно поменяйте адрес корневой ноды в управлении нодами панели: она активируется сама. Сертификаты для домена восстанавливаются отдельно, например через Certwarden или пункт «Управление сертификатами домена» главного меню.

  • /opt/rw-backup-restore: каталог установки, внутри скрипт, config.env с настройками и переводы.
  • /opt/rw-backup-restore/backup: склад готовых копий, отсюда же идёт восстановление.
  • /opt/rw-backup-restore-saved: сюда сохраняются копии при удалении инструмента.