Google Cloud Storage + Coolify: дешёвые бекапы за 10 минут настройки
Google Cloud Storage поддерживает S3-совместимый API, что позволяет использовать его в Coolify как хранилище для бекапов баз данных — без сторонних инструментов и сложных настроек. Разбираемся, сколько это стоит, какие нюансы есть у HMAC-аутентификации и какие ошибки возникают при первом подключении.
Сколько стоит хранить бекапы в Google Cloud Storage
Google Cloud Storage тарифицируется по принципу pay-as-you-go — платишь только за фактический объём и операции. Для бекапов небольшого блога цифры получаются минимальные:
| Класс хранения | Цена за ГБ/месяц | Когда использовать |
|---|---|---|
| Standard | $0.023 | Нужен быстрый доступ к бекапам |
| Nearline | $0.010 | Бекапы, которые достают раз в месяц |
| Coldline | $0.007 | Архивные копии, доступ раз в квартал |
Бекап базы PostgreSQL для личного блога обычно весит 5–50 МБ. Тридцать ежедневных бекапов по 20 МБ — это около 600 МБ, то есть меньше $0.02 в месяц на классе Nearline. Даже с учётом операций записи и чтения итоговая сумма вряд ли превысит $0.05 в месяц.
Для сравнения: AWS S3 стоит примерно столько же, но Google Cloud даёт $300 бесплатного кредита новым аккаунтам. Этого хватит на несколько лет хранения бекапов небольшого проекта. Стартовый кредит покрывает и операции — стоимость чтения и записи в GCS начинается от $0.005 за 10 000 операций класса Nearline.
Что понадобится для подключения
Для настройки нужен аккаунт Google Cloud с активным проектом, созданный бакет в Cloud Storage и установленный Coolify версии 4.x с хотя бы одной базой данных. Никаких дополнительных инструментов — ни gsutil, ни rclone, ни aws-cli — не потребуется. Всё настраивается через веб-интерфейс Google Cloud Console и панель Coolify.
Ключевой момент: Google Cloud Storage поддерживает S3-совместимый API через HMAC-ключи. Это значит, что любой инструмент, работающий с Amazon S3, может работать и с GCS — достаточно поменять endpoint на https://storage.googleapis.com и подставить HMAC-ключи вместо AWS-доступа.
Создание бакета: регион имеет значение
В Google Cloud Console перейди в Cloud Storage ? Buckets и нажми Create. При создании бакета есть три параметра, на которые стоит обратить внимание:
- Название — глобально уникальное, запомни его, оно понадобится в Coolify.
- Location type — выбери Region и укажи регион поближе к серверу. Для Европы подойдёт
europe-north1(Финляндия) илиeurope-west4(Нидерланды). Регион важен: он должен точно совпадать с тем, что будет указан в настройках Coolify. - Access control — оставь Uniform (значение по умолчанию). Fine-grained доступ для бекапов не нужен.
Выбор региона влияет не только на стоимость хранения (разница между регионами — до 30%), но и на задержку при восстановлении из бекапа. Если сервер Coolify расположен в Хельсинки, а бакет — в Огайо, восстановление базы объёмом 500 МБ займёт на 2–3 минуты больше из-за трансатлантического трансфера.
HMAC-ключи: аналог AWS IAM для Google Cloud
Google Cloud Storage поддерживает S3-совместимую аутентификацию через HMAC-ключи. Это пара из Access Key и Secret, аналогичная ключам AWS IAM. Процесс создания:
- Перейди в Cloud Storage ? Settings (шестерёнка в левом меню).
- Открой вкладку Interoperability.
- В разделе User Account HMAC нажми Create a key.
- Сразу скопируй и сохрани Access Key и Secret — секрет показывается только один раз.
Предупреждение «You haven’t set a default project» на этой странице можно игнорировать. Оно относится только к созданию и листингу бакетов через S3-совместимый API, а не к записи объектов в уже существующий бакет. Coolify работает именно с объектами — загрузка, чтение, удаление файлов бекапов — поэтому default project не нужен.
Если секрет утерян — в интерфейсе Google Cloud его больше не покажешь. Придётся удалить старый HMAC-ключ и создать новый, затем обновить данные в настройках S3 Storage в Coolify.
Выдача прав: шаг, который часто пропускают
HMAC-ключ привязывается к конкретному Google-аккаунту. Этому аккаунту нужно явно выдать права на бакет — без этого шага Coolify получит ошибку AccessDenied при попытке верификации подключения.
В Cloud Storage ? Buckets ? [твой бакет] открой вкладку Permissions, нажми Grant Access. В поле New principals введи email своего Google-аккаунта (того, под которым создавался HMAC-ключ). В поле Role выбери Storage Object Admin и нажми Save.
Роль Storage Object Admin даёт права на создание, чтение, перезапись и удаление объектов в бакете — ровно то, что нужно для бекапов. Более широкая роль Storage Admin даёт ещё и управление настройками бакета, что для Coolify избыточно. Минимальная достаточная роль — Storage Object Creator + Storage Object Viewer, но Storage Object Admin проще и покрывает удаление старых бекапов при ротации.
Подключение хранилища к Coolify
В боковом меню Coolify перейди в S3 Storages и нажми Add. Заполни форму:
| Поле | Значение |
|---|---|
| Name | Любое, например gcs-backups |
| Endpoint | https://storage.googleapis.com |
| Bucket | Название бакета из шага 1 |
| Region | Регион бакета, например europe-north1 |
| Access Key | HMAC Access Key |
| Secret Key | HMAC Secret |
Нажми Verify — Coolify выполнит тестовый запрос к бакету. Если всё настроено правильно, появится сообщение об успехе. Если нет — две самые частые причины: неверный регион (ошибка InvalidLocationConstraint) или не выданы права на бакет (ошибка AccessDenied).
Настройка расписания бекапов
После добавления хранилища перейди в нужную базу данных в Coolify, открой вкладку Backups и включи переключатель S3 Enabled. В выпадающем списке выбери созданное хранилище.
Расписание задаётся cron-выражением. Два типичных варианта:
0 2 * * *— каждый день в 2:00 ночи. Достаточно для блога с небольшой нагрузкой.0 */6 * * *— каждые 6 часов. Имеет смысл для продакшн-проектов, где потеря 6 часов данных критична.
Параметр Save backups определяет количество хранимых копий. Для личного блога 7–14 ежедневных бекапов — разумный баланс между надёжностью и стоимостью. Каждый бекап PostgreSQL базы объёмом 20 МБ на классе Nearline обходится в $0.0002, так что 30 копий стоят менее $0.01 в месяц.
Возможные проблемы и их решения
AccessDenied при верификации — аккаунт, для которого создан HMAC-ключ, не имеет прав на бакет. Проверь, что роль Storage Object Admin выдана именно тому email, который использовался при создании ключа.
InvalidLocationConstraint — регион в настройках Coolify не совпадает с регионом бакета. Открой бакет в Google Cloud Console и проверь точное значение в разделе Configuration ? Location. Мультирегиональные бакеты (EU, US) тоже работают, но регион в Coolify нужно указать явно — например, EU или US.
Бекапы создаются, но не загружаются в S3 — проверь, что в настройках базы данных включён переключатель S3 Enabled и выбрано правильное хранилище. Coolify хранит локальные копии отдельно от S3, и отсутствие ошибки при создании бекапа не означает, что загрузка в облако прошла успешно.
Итог
Google Cloud Storage — полноценная замена AWS S3 для бекапов в Coolify. Подключение занимает 10 минут: создать бакет, сгенерировать HMAC-ключи, выдать права, добавить S3 Storage в Coolify. Для личного блога или pet-проекта это несколько центов в месяц, а с учётом стартового кредита $300 — фактически бесплатно на старте. Бекапы хранятся в выбранном регионе и доступны через Google Cloud Console или напрямую из панели Coolify в один клик.