Хранилище S3 для резервных копий
Как с нуля завести хранилище для резервных копий в Yandex Object Storage или у другого S3-провайдера и подключить его в Reefox Panel.
Reefox Panel делает зашифрованную копию всей базы по расписанию и может отправлять её в S3-хранилище — облачное хранилище файлов. Это второе место для копий рядом с Telegram: если сервер пропадёт, копия останется в облаке. Telegram принимает файлы только до 50 МБ, а S3 — без такого ограничения.
Справочник по вкладке — Настройки → Резервные копии. Ниже подробно для Yandex Object Storage и кратко для других провайдеров.
Сколько стоит
По тарифам Yandex Object Storage в стандартном хранилище каждый месяц не тарифицируются первый 1 ГБ хранения, первые 10 000 операций записи и просмотра списка и первые 100 000 операций чтения. Копия базы небольшого сервиса весит мегабайты, а Reefox Panel хранит только последние копии (по умолчанию 30), поэтому на старте счёт обычно нулевой или копеечный. Точные цены — в тарифах Object Storage.
Что понадобится
- Яндекс ID — обычный аккаунт Яндекса. Для регистрации нужен номер телефона.
- Банковская карта для платёжного аккаунта. Для резидентов России — карта российского банка (Мир, Visa или Mastercard), расчёты в рублях. При привязке на карте временно заблокируют 11 ₽ и потом вернут.
- 15–20 минут.
Если Яндекс Облако у вас уже есть, например после настройки Yandex Postbox, пропустите шаги 1 и 2.
Шаг 1. Войдите в Яндекс Облако
Откройте console.yandex.cloud и войдите через Яндекс ID. Если аккаунта нет — нажмите регистрацию и подтвердите номер телефона.
При первом входе консоль предложит создать организацию и облако. Следуйте подсказкам: введите любое имя организации. Облако и каталог default создадутся сами.
Шаг 2. Платёжный аккаунт
Без платёжного аккаунта Object Storage не работает, даже в пределах бесплатного объёма.
Откройте сервис Yandex Cloud Billing. На вкладке «Аккаунт» нажмите «Создать аккаунт».
В поле «Тип аккаунта» выберите «Физическое лицо» (или юрлицо/ИП, если платите от компании). Укажите страну, почту и телефон.
Привяжите банковскую карту.
Дождитесь, пока платёжный аккаунт станет активным (статус ACTIVE). Обычно это несколько минут.
Новым клиентам после привязки карты начисляется стартовый грант на 60 дней. Для резидентов России, по документации Яндекса, — от 6 400 ₽. Пробного периода у физлиц нет: после гранта услуги оплачиваются с карты.
Шаг 3. Создайте бакет
Бакет — это «папка верхнего уровня» в хранилище, куда будут падать копии.
В консоли выберите каталог default и откройте сервис Object Storage.
Нажмите «Создать бакет».
Имя бакета — например myvpn-backups. Правила: от 3 до 63 символов, строчная латиница, цифры и дефисы, начинается и заканчивается буквой или цифрой. Имя должно быть уникальным среди всех бакетов Object Storage, поэтому добавьте что-то своё. Точки в имени не используйте.
«Доступ на чтение объектов», «Доступ к списку объектов» и «Доступ на чтение настроек» — везде «С авторизацией». Копии не должны быть доступны по ссылке.
«Класс хранилища» — «Стандартное». Размер можно не ограничивать. Нажмите «Создать бакет».
Шаг 4. Создайте сервисный аккаунт
Сервисный аккаунт — отдельная «учётка» для программы. Reefox Panel будет входить в хранилище от его имени, а не от вашего.
Откройте сервис Identity and Access Management и нажмите «Создать сервисный аккаунт».
Имя — например reefox-backups (строчная латиница, цифры и дефисы). Нажмите «Создать».
Шаг 5. Выдайте роль
Reefox Panel загружает новые копии, смотрит список и удаляет старые. Для этого нужна роль storage.editor. Роли storage.uploader не хватит — она не даёт удалять, и старые копии будут копиться.
Откройте каталог default и перейдите на вкладку «Права доступа».
Нажмите «Настроить доступ», перейдите в раздел «Сервисные аккаунты» и выберите reefox-backups.
Нажмите «Добавить роль», найдите storage.editor и нажмите «Сохранить».
Строже: роль только на бакет
Роль на каталог даёт доступ ко всем бакетам в нём. Если в каталоге есть другие бакеты, роль можно назначить на один бакет — через его настройки доступа в Object Storage. Сервисный аккаунт и бакет должны быть в одном каталоге.
Шаг 6. Создайте статический ключ доступа
В Identity and Access Management → «Сервисные аккаунты» откройте reefox-backups.
Нажмите «Создать новый ключ» → «Создать статический ключ доступа». Описание — например reefox panel. Нажмите «Создать».
Яндекс покажет идентификатор ключа и секретный ключ. Скопируйте оба: после закрытия окна секретный ключ больше не показать.

Шаг 7. Подключите хранилище в Reefox Panel
Откройте Настройки → Резервные копии и включите переключатель «В S3-хранилище».
Нажмите кнопку «Yandex Cloud» — адрес и регион подставятся сами.
Заполните поля по таблице ниже.
Нажмите «Проверить подключение». Должно появиться «Хранилище отвечает: запись, чтение и удаление работают».
Выберите, как часто делать копию («Делать копию»), и нажмите «Сохранить». Первая копия появится в течение минуты, или нажмите «Сделать копию сейчас».
| Поле в админке | Что вставить |
|---|---|
| Адрес хранилища | https://storage.yandexcloud.net |
| Регион | ru-central1 — у Яндекса только он, другой регион даст ошибку авторизации |
| Бакет | Имя бакета из шага 3, например myvpn-backups |
| Папка в бакете | Можно оставить tmavpn-backups/ |
| Ключ доступа | Идентификатор ключа из шага 6 |
| Секретный ключ | Секретный ключ из шага 6 |
| Сколько копий хранить | От 1 до 365, по умолчанию 30 |
Пароль от копий храните отдельно
Копии зашифрованы паролем со вкладки «Резервные копии», блок «Пароль от копий». Без него копия бесполезна. Сохраните пароль в менеджере паролей — не на сервере и не в том же облаке.
Проверка
- В админке в блоке «Последняя копия» статус «Сохранена», указаны размер и время следующей копии.
- В консоли Яндекса откройте бакет: в папке
tmavpn-backups/лежит файл копии. - Через пару дней проверьте, что копий не больше, чем указано в «Сколько копий хранить»: старые удаляются сами.
Другие S3-хранилища
Reefox Panel работает с любым S3-совместимым хранилищем. У кнопок «Selectel», «Cloud.ru» и «Timeweb» адрес и регион уже заданы. Порядок везде один: зарегистрироваться, создать бакет, получить пару ключей с правом записи, чтения списка и удаления.
| Провайдер | Адрес хранилища | Регион | Где взять ключи |
|---|---|---|---|
| Selectel | https://s3.ru-1.storage.selcloud.ru | ru-1 | Создайте сервисного пользователя с ролью для S3 и выпустите ему S3-ключ. Access key — в «Ключ доступа», Secret key — в «Секретный ключ» |
| Timeweb Cloud | https://s3.twcstorage.ru | ru-1 | В панели управления бакетом, на его вкладке с ключами S3 (Access Key и Secret Access Key) |
| Cloud.ru | https://s3.cloud.ru | ru-central-1 | Ключ доступа вводится в формате tenant_id:key_id |
Нюансы:
- Имя бакета копируйте из панели провайдера целиком, в точности как показано.
- Reefox Panel обращается к хранилищу по адресу вида
адрес/бакет/файл(path-style). Если провайдер при создании бакета спрашивает тип адресации, выберите Path-Style, если он доступен. - Для «любого S3-совместимого» нужны: адрес по
https://, регион, бакет и пара ключей с правами на загрузку, просмотр списка и удаление файлов.
Частые ошибки
| Что видите | Причина | Что сделать |
|---|---|---|
| «адрес хранилища должен начинаться с https://» | В адресе нет https:// | Нажмите кнопку провайдера или впишите адрес целиком |
| «не заполнено поле: …» | Пустое поле | Заполните указанное поле |
HTTP 403: AccessDenied | У сервисного аккаунта нет роли, роль в другом каталоге или неверный бакет | Проверьте роль storage.editor (шаг 5) и имя бакета |
HTTP 403: SignatureDoesNotMatch | Ошибка в секретном ключе или неверный регион | Вставьте ключ заново, регион ru-central1 |
HTTP 404: NoSuchBucket | Опечатка в имени бакета | Скопируйте имя из консоли |
| «хранилище недоступно: …» | Сервер не достучался до адреса хранилища | Проверьте адрес и исходящий HTTPS с сервера |
| Запись работает, но старые копии не удаляются | Роль без права удаления, например storage.uploader | Выдайте storage.editor |
| Копии перестали сохраняться через несколько месяцев | Закончился грант или платёжный аккаунт заблокирован за долг | Проверьте баланс в Billing и включите уведомления о балансе |
Если копия не сохранилась, бот сам напишет администратору с причиной — не чаще раза в 6 часов.
Источники
- Yandex Cloud: регистрация физического лица
- Yandex Cloud Billing: создание платёжного аккаунта
- Yandex Cloud: стартовый грант
- Object Storage: создание бакета
- Object Storage: правила именования бакетов
- Object Storage: роли и управление доступом
- IAM: создание сервисного аккаунта
- IAM: назначение роли сервисному аккаунту
- IAM: статические ключи доступа
- Object Storage: адрес и регион для S3-инструментов
- Object Storage: тарифы
- Selectel: типы адресации бакетов
- Timeweb Cloud: S3 и rclone