Reefox

Резервные копии

Справочник по вкладке Настройки → Резервные копии: автоматическая зашифрованная копия базы по расписанию в Telegram администратору и в S3-хранилище, пароль от копий и восстановление.

Вкладка Настройки → Резервные копии делает копию всей базы по расписанию и отправляет её в Telegram администратору и в S3-хранилище. Копия зашифрована паролем. В ней клиенты, подписки, оплаты, серверы и настройки. Ноды копировать не нужно: они собираются из базы.

Резервные копии: куда и как часто

Если на сервере нет pg_dump

Плашка «Копии пока не сделать» значит, что установка старая. Обновите проект — после обновления копии заработают.

Последняя копия

ПоказательЧто значит
Статус справаСохранена, Частично (ушла не во все места), Ошибка или Ещё не было
КогдаВремя последней копии по Москве и сколько прошло
РазмерРазмер файла копии
СледующаяКогда будет следующая. «выключено», если не выбрано ни одно место

Если что-то не получилось, ниже блок «Что не получилось» с причиной для каждого места.

Кнопка «Сделать копию сейчас» запускает копию вне расписания. Она недоступна, пока не выбрано ни одно место или есть несохранённые изменения: «Сначала сохраните настройки ниже».

Куда отправлять

Лучше в два места: если пропадёт одно, останется другое.

В Telegram администратору

Бот присылает файл без звука. Бесплатно, файл до 50 МБ. Переключатель недоступен, пока во вкладке Telegram бот не заполнены бот и Telegram ID администратора. Если копия вырастет больше 50 МБ, Telegram её не примет: включите S3.

В S3-хранилище

Yandex Cloud, Selectel, Cloud.ru, Timeweb или любое S3-совместимое. Кнопки с названиями провайдеров сами подставляют адрес и регион.

ПолеЧто вводитьПример
Адрес хранилищаАдрес S3 провайдераhttps://storage.yandexcloud.net
РегионРегион хранилищаru-central1
БакетИмя бакета. Создайте его заранее в панели хранилищаmy-backups
Папка в бакетеКуда класть файлы. По умолчанию tmavpn-backups/tmavpn-backups/
Ключ доступаИдентификатор ключа. У Cloud.ru в формате tenant_id:key_id—
Секретный ключСекрет ключа—
Сколько копий хранитьСколько последних копий держать, старые удаляются сами. От 1 до 365, по умолчанию 3030

«Проверить подключение» записывает, читает и удаляет пробный файл: «Хранилище отвечает: запись, чтение и удаление работают». При сохранении с включённым S3 настройки хранилища тоже проверяются.

Как часто

Поле «Делать копию»: каждый час, каждые 3, 6 или 12 часов, раз в сутки (по умолчанию), раз в 3 дня или раз в неделю.

Нажмите «Сохранить», рядом есть «Отменить». Если включено хотя бы одно место, первая копия появится в течение минуты.

Если копия не сохранилась

Бот напишет администратору «Резервная копия не сохранилась» или «…сохранилась не везде» с причиной — не чаще раза в 6 часов. После ошибки следующая попытка будет через 30 минут.

Пароль от копий

Копии зашифрованы, открыть их можно только этим паролем.

  • «Показать» / «Скрыть» и «Скопировать» — пароль появляется только по нажатию.
  • «Новый пароль» — новые копии будут с новым паролем. Копии, сделанные раньше, открываются только старым.

Сохраните пароль не на этом сервере

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

Как восстановить

Если основной сервер пропал. VPN у клиентов всё это время работает. У каждой команды в админке есть кнопка копирования.

Поставьте проект на новый сервер тем же установщиком и с тем же доменом.

Загрузите файл копии на сервер:

scp копия.tmbackup root@IP-сервера:/root/backup.tmbackup

Передайте его приложению:

docker cp /root/backup.tmbackup vpn-app:/tmp/backup.tmbackup

Восстановите базу. Скрипт спросит пароль от копий:

docker exec -it vpn-app python /app/server/scripts/backup_restore.py restore /tmp/backup.tmbackup

Перезапустите приложение и направьте домен на новый IP. Ноды и подписки подключатся сами.

docker restart vpn-app

Если старый сервер ещё жив, переезжайте не через копию, а через Перенос сервера: он переносит и файлы установки, и сертификаты.