Резервные копии
Справочник по вкладке Настройки → Резервные копии: автоматическая зашифрованная копия базы по расписанию в 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, по умолчанию 30 | 30 |
«Проверить подключение» записывает, читает и удаляет пробный файл: «Хранилище отвечает: запись, чтение и удаление работают». При сохранении с включённым 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Если старый сервер ещё жив, переезжайте не через копию, а через Перенос сервера: он переносит и файлы установки, и сертификаты.