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. Процесс создания:

  1. Перейди в Cloud Storage ? Settings (шестерёнка в левом меню).
  2. Открой вкладку Interoperability.
  3. В разделе User Account HMAC нажми Create a key.
  4. Сразу скопируй и сохрани 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 в один клик.

Добавить комментарий