Обновление, бэкап и восстановление
Команды rivo update, rivo rollback, rivo backup и rivo restore, ключ бэкапов, ротация, выгрузка в S3 и переезд на новый сервер.
Статья для своей установки (Self-host и Свой VPS). Облако обновляется и бэкапится само.
CLI rivo
rivo status # контейнеры, домен, здоровье API, последний бэкап, размер данных
rivo logs api -f # логи сервиса (api, web, db, caddy)
rivo update # обновление (перед ним автоматически снимается бэкап)
rivo rollback # откат обновления: прежняя версия и данные на момент обновления
rivo backup # резервная копия прямо сейчас
rivo restore --latest # восстановление из последнего архива
rivo start | stop | restart
Если команды rivo нет в системе — то же самое через /opt/rivo/infra/rivo.
Обновление
sudo rivo update # последняя версия
sudo rivo update --version 1.4.2 # конкретная версия
Перед обновлением снимается бэкап. Затем скачиваются образы новой версии и стек перезапускается; миграции базы API накатывает сам при старте. Данные, сертификаты и секреты обновление не трогает.
Перед обновлением унесите BACKUP_PASSPHRASE с сервера (см. ниже) и проверьте, что на диске есть место ещё на одну копию: без копии обновление не начнётся.
Откат обновления
sudo rivo rollback # последняя копия перед обновлением
sudo rivo rollback backups/rivo-20261007-031500.tar.gz.enc # конкретный архив
Новая версия могла обновить схему базы, а прежняя такой схемы не знает. Поэтому откат возвращает и версию, и данные — к копии, снятой перед обновлением. Всё, что внесено после неё, пропадёт. Команда попросит напечатать ОТКАТИТЬ (для скриптов — --yes) и до заливки снимет страховочный дамп текущей базы.
Порядок такой: закрепляются образы прежней версии, API останавливается, затем копия восстанавливается и стек поднимается уже на прежней версии. Прежняя версия берётся из самого архива.
rivo update --version <прежняя> поверх обновлённой базы не сработает: команда откажет, не меняя версию, и предложит rivo rollback. Исключение — версия с той же схемой базы.
Если инстанс обновлялся версией до октября 2026, копия перед обновлением называется как обычная (rivo-<дата>-<время>). Укажите её явно: это последний архив до времени обновления.
Если обновления закончились
Лицензия Self-host бессрочная, а обновления оплачены на срок: 12 месяцев с покупки, дальше — продление на год. Версия, собранная после конца обновлений, не ставится:
Ошибка: обновления закончились 2026-11-01, продлить — https://me.rivo.day
Ничего не ломается: установленная версия продолжает работать без ограничений, версии, собранные до конца срока, ставятся через --version. Чтобы получить новые, продлите обновления в кабинете, затем Настройки → Лицензия → «Проверить» (иначе инстанс сверит лицензию сам в течение суток) и повторите rivo update. У подписок (Облако, Свой VPS) такого ограничения нет.
Резервные копии
rivo backup # копия сейчас → backups/rivo-<дата>-<время>.tar.gz.enc
rivo backup --to /mnt/usb # разовая копия в другой каталог
sudo rivo backup --schedule # ежедневно в 03:30 (включает и установщик)
В архиве — дамп базы, загруженные файлы (они и так зашифрованы), deploy/.env с ключами инстанса и служебные отметки. Архив зашифрован ключом BACKUP_PASSPHRASE.
Унесите
BACKUP_PASSPHRASEс сервера — например, в менеджер паролей. Установщик печатает его в конце установки, он же лежит в/opt/rivo/deploy/.env. С ним архив восстанавливается на любом новом сервере вместе с ключами шифрования. Без него архив не открыть ничем.
Настройки — в deploy/.env:
BACKUP_DIR— куда класть архивы;BACKUP_KEEP_DAILY=7,BACKUP_KEEP_WEEKLY=4— ротация «по копии за последние 7 дней и за 4 недели до них»;S3_BUCKET,S3_ENDPOINT,S3_REGION,S3_PREFIX,S3_ACCESS_KEY_ID,S3_SECRET_ACCESS_KEY— если заполнены, архив уезжает ещё и в S3-совместимое хранилище (нуженawscliилиmc). Срок хранения там задаётся политикой бакета.
Проверить расписание: systemctl list-timers rivo-backup.timer, ошибки — journalctl -u rivo-backup.service -n 50. Таймера нет — sudo rivo backup --schedule.
Восстановление
sudo rivo restore --latest
sudo rivo restore backups/rivo-20261006-033000.tar.gz.enc
Пока не пройдены все проверки, база не тронута:
- Архив расшифровывается и проверяется на целостность.
- Ключи шифрования архива сверяются с инстансом: под чужими ключами пароли и файлы не расшифровались бы, поэтому — отказ.
- Сверяется версия схемы: архив старше программы восстанавливается (недостающие миграции API накатит сам), архив новее — отказ, сначала
rivo update. - Нужно напечатать
ВОССТАНОВИТЬ(для скриптов —--yes). - Снимается страховочный дамп текущей базы, база заливается одной транзакцией, прежние файлы откладываются рядом, стек поднимается.
Переезд на новый сервер
- Поставьте Rivo на новый сервер — Установка на свой сервер.
- Положите архив в
/opt/rivo/backups/(с флешки или из S3). - Выполните с явным путём к архиву:
sudo rivo restore backups/<архив старого сервера> --with-keys
--with-keys берёт из архива ключи старого инстанса (APP_SECRET, VAULT_KEY, BACKUP_PASSPHRASE). Команда спросит старый BACKUP_PASSPHRASE — у новой установки свой, к старому архиву он не подходит.

