Перейти к содержимому
CivoCloudManager

Civo Object Storage по S3 на macOS.

Региональный endpoint, рабочая конфигурация для s3cmd, rclone и AWS CLI и то, что нативный клиент делает иначе.

Civo Object Storage говорит на S3, поэтому подключиться может почти любой клиент S3, как только сойдутся две вещи: endpoint того региона, где живёт store, и доступ, созданный в том же регионе. Документация Civo проводит вас через s3cmd, а остальной инструментарий оставляет вам. Здесь голая конфигурация для s3cmd, rclone и AWS CLI, а следом путь CivoCloudManager, который читает endpoint и ключи доступа прямо из Civo API, так что настраивать руками нечего.

Настройка клиента S3 под Civo

  1. 01

    Найдите endpoint своего региона.

    Civo собирает endpoint object store как https://objectstore.<region>.civo.com с кодом региона в нижнем регистре, поэтому store в Лондоне доступен по https://objectstore.lon1.civo.com, а во Франкфурте по https://objectstore.fra1.civo.com. Каждый store к тому же печатает собственный endpoint в дашборде Civo и возвращает его в поле objectstore_endpoint в REST API. По обзору возможностей регионов у Civo, object stores есть в LON1, FRA1, NYC1 и MUM1, и нет в PHX1.

  2. 02

    Создайте доступ в том же регионе.

    Каждый Civo object store приватный, ему нужны access key ID и secret key. Создайте доступ в дашборде Civo в разделе Object Stores, пока селектор региона стоит на регионе этого store, либо через Civo CLI. Команда civo objectstore credential export -a <access_key> печатает пару как AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_DEFAULT_REGION и AWS_HOST, готовые к вставке в шелл.

  3. 03

    s3cmd: host_base и host_bucket.

    В ~/.s3cfg, в секции [default], задайте host_base = objectstore.fra1.civo.com, host_bucket = objectstore.fra1.civo.com, bucket_location = fra1, use_https = True, signature_v2 = False, плюс access_key и secret_key. Одинаковый хост в host_bucket и host_base удерживает s3cmd на path style адресации, а именно на неё Civo и отвечает. Дальше s3cmd ls перечисляет ваши stores, s3cmd ls s3://STORENAME содержимое одного, s3cmd put file.tar s3://STORENAME/backups/ загружает, а s3cmd get -r s3://STORENAME/backups/ тянет вниз целый префикс. Без файла конфигурации те же два значения уходят в командную строку как --host= и --host-bucket=.

  4. 04

    rclone: remote типа s3, provider Other.

    Запустите rclone config и выберите s3 или впишите блок прямо в ~/.config/rclone/rclone.conf: под [civo] задайте type = s3, provider = Other, env_auth = false, access_key_id и secret_access_key из доступа, region = fra1, endpoint = https://objectstore.fra1.civo.com и acl = private. После этого rclone lsd civo: перечисляет stores, rclone ls civo:STORENAME объекты, rclone copy ./dir civo:STORENAME/dir -P синхронизирует папку наверх с прогрессом, а rclone ncdu civo:STORENAME даёт текстовый браузер. Те же настройки работают разовыми флагами: --s3-provider Other --s3-endpoint https://objectstore.fra1.civo.com --s3-region fra1.

  5. 05

    AWS CLI: --endpoint-url в каждом вызове.

    AWS CLI не нужен плагин под Civo, нужен только endpoint в каждой команде: aws s3 ls --endpoint-url https://objectstore.fra1.civo.com, затем aws s3 ls s3://STORENAME --endpoint-url ... и aws s3 cp file.tar s3://STORENAME/ --endpoint-url ... . Доступы берутся из AWS_ACCESS_KEY_ID и AWS_SECRET_ACCESS_KEY или из именованного профиля, а AWS_DEFAULT_REGION ставится в код региона Civo, чтобы совпала область действия Signature V4. Сноска про свежие версии: начиная с AWS CLI 2.23 к загрузкам по умолчанию добавляется контрольная сумма CRC64NVME, которую принимает не каждый S3-совместимый endpoint, поэтому если put падает с ошибкой контрольной суммы, выставьте AWS_REQUEST_CHECKSUM_CALCULATION=when_required и AWS_RESPONSE_CHECKSUM_VALIDATION=when_required.

Ловушка ценой в час: ключи привязаны к одному региону

Документация Civo говорит об этом прямо, двумя предложениями, которые легко проскочить: object stores привязаны к региону, и доступы для управления ими и подключения к ним привязаны к региону, в котором были созданы. Ключ, сделанный, пока дашборд стоял на FRA1, не пройдёт аутентификацию на endpoint LON1, хотя аккаунт тот же и счёт тот же. Симптом это ошибка аутентификации или подписи, похожая на опечатку в секрете, поэтому первым делом хочется перевыпустить ключ, а получается ещё один ключ в том же неверном регионе. Сначала проверьте селектор региона, создайте доступ рядом со store и только потом подозревайте конфигурацию.

Чего командная строка не закрывает

Для скриптов, бэкапов и CI правильный ответ это s3cmd, rclone и AWS CLI, и ничто здесь их не заменяет. Чего они не дают, так это взгляда на store: дерева папок, размеров одним взглядом, выделения, которое можно вытащить наружу. Обычные клиенты S3 для Mac вроде Cyberduck или Transmit эту дыру закрывают, но про Civo они не знают ничего, поэтому endpoint вы вводите сами, оба ключа вставляете на каждый store и после каждой ротации приводите их в порядок руками.

Путь приложения: endpoint вводить негде

CivoCloudManager один раз аутентифицируется вашим Civo API key и читает список object stores из Civo REST API v2, а тот уже несёт и endpoint, и связанный доступ для каждого store. Из этого и собирается клиент S3, поэтому нет ни поля endpoint, ни вставки ключей, ни файла конфигурации. Слой S3 написан на чистом Swift: AWS Signature V4 считается через HMAC-SHA256 из CryptoKit, без AWS SDK и без Electron. Он умеет ListObjects v2 с continuation tokens, навигацию по хлебным крошкам поверх общих префиксов, множественное выделение и рекурсивное скачивание папки со строкой прогресса. Если честно про форму: браузер читает и скачивает. Загрузка и удаление остаются за s3cmd или rclone. Приложению нужна macOS 15 или новее.

Ключи доступа под Touch ID вместо dotfile

Ради этого стоит поставить приложение, даже если CLI вы не бросаете. Рабочая настройка s3cmd означает, что secret key лежит открытым текстом в ~/.s3cfg, и то же верно для rclone.conf и ~/.aws/credentials. Любой процесс от вашего пользователя прочитает все три, как и всё, что пройдётся по домашней папке. CivoCloudManager держит Civo API key в macOS Keychain, а чтобы показать в интерфейсе secret access key от object store, сначала спросит Touch ID или системный пароль. Ограничение очевидно, и его стоит проговорить: в ту секунду, когда вы копируете ключ в терминал, это снова файл открытым текстом.

Пауза и возврат для store, которыми вы не пользуетесь

Простаивающий store всё равно тарифицируется по выделенному размеру. Пауза копирует все объекты в центральный object store с именем civo-cloud-manager, при нехватке места сперва наращивая это хранилище, сверяет скопированные ключи и размеры с источником и удаляет исходный store только при совпадении. Строка исчезает из счёта Civo. Возврат пересоздаёт store под тем же именем с тем же доступом, копирует объекты назад, снова сверяет ключи и размеры, а потом чистит хранилище. Одновременно переносится до четырёх объектов. Честные ограничения: проверка сравнивает имена и размеры, а не хеши содержимого, объекты при переносе буферизуются в памяти целиком, а удалённый manifest пишется уже после удаления источника, с локальным manifest как запасным вариантом.

Какой клиент под какую задачу

Все четверо говорят с одним и тем же S3 API на одном и том же endpoint. Разница в том, где лежит конфигурация, куда попадает секрет и что вы можете увидеть.

Задача s3cmdrcloneAWS CLICivoCloudManager
Настройка endpoint host_base и host_bucket в ~/.s3cfgendpoint в самом remote--endpoint-url в каждом вызовечитается из Civo API
Куда попадает secret key ~/.s3cfg, открытым текстомrclone.conf, открытым текстом~/.aws/credentials, открытым текстомmacOS Keychain, показ под Touch ID
Визуальный просмотр store нетrclone ncdu, текстовый режимнетда, браузер с хлебными крошками
Загрузка и удаление объектов дададане в браузере
Рекурсивное скачивание папки s3cmd get -rrclone copyaws s3 cp --recursiveда, с прогрессом
Пауза простаивающего store, чтобы не платить нетнетнетда, хранилище с проверкой перед удалением
Работает в CI дададанет, это приложение для Mac

Civo Object Storage по S3: ответы

Какой endpoint URL у Civo object storage?
Endpoint object store у Civo строится по шаблону https://objectstore.<region>.civo.com с кодом региона в нижнем регистре, например https://objectstore.lon1.civo.com в Лондоне или https://objectstore.fra1.civo.com во Франкфурте. Endpoint зависит от региона, в котором store был создан. Каждый store к тому же показывает свой endpoint в дашборде Civo и возвращает его в поле objectstore_endpoint в Civo REST API.
Можно ли использовать s3cmd или rclone с Civo Object Storage?
Да, работают оба, как и AWS CLI и любой другой S3-совместимый клиент. Для s3cmd задайте host_base и host_bucket в ~/.s3cfg на региональный хост вроде objectstore.fra1.civo.com и заполните access_key и secret_key. Для rclone создайте remote с type = s3, provider = Other, endpoint = https://objectstore.fra1.civo.com и той же парой ключей. Для AWS CLI передавайте --endpoint-url https://objectstore.fra1.civo.com в каждой команде.
Почему мой ключ доступа к Civo object storage не работает?
Обычная причина это регион. Civo пишет, что object stores привязаны к региону и что доступы привязаны к региону, в котором были созданы, поэтому ключ, созданный в FRA1, не пройдёт аутентификацию на endpoint LON1, хотя принадлежит тому же аккаунту. Создавайте доступ, когда дашборд стоит на регионе этого store. Вторая частая причина это клиент, которому endpoint так и не передали, или host_bucket в s3cmd, оставленный по умолчанию, из-за чего запрос уходит в Amazon вместо Civo.
Есть ли GUI для Civo object storage на Mac?
CivoCloudManager это нативное приложение macOS, macOS 15 или новее, из Mac App Store, и оно знает про Civo: endpoint и ключи доступа для каждого store оно читает из Civo API, так что настраивать нечего. Просмотр идёт по хлебным крошкам, скачать можно отдельный файл, выделенную группу или целую папку рекурсивно, а загрузка и удаление остаются за CLI. Обычные клиенты S3 вроде Cyberduck или Transmit тоже подключаются к Civo, если вписать endpoint и вставить оба ключа на каждый store.
Что пауза делает с данными в Civo object store?
Пауза копирует все объекты в центральный object store с именем civo-cloud-manager внутри вашего же аккаунта Civo, сверяет скопированные ключи и размеры с источником и только после этого удаляет исходный store, чтобы он перестал стоить денег. Возврат пересоздаёт store под тем же именем с тем же доступом, копирует объекты назад и снова сверяет ключи и размеры, прежде чем очистить хранилище. Данные не покидают ваш аккаунт Civo, а проверка идёт по именам и размерам, а не по хешу содержимого.

Пропустите настройку endpoint.

CivoCloudManager читает endpoint и ключи доступа из вашего же аккаунта Civo, поэтому store просто открывается, файл конфигурации для этого не нужен. Бесплатный уровень строки меню, полный дашборд за разовую покупку в Mac App Store.

Скачать в Mac App Store

Требуется macOS 15 (Sequoia) или новее.

Вернуться на главную