Loading...

Командная строка

Справочник cdnctl

Полный справочник по cdnctl (v0.12.x). Все команды выводят JSON. Токен аутентификации хранится в ~/.cdnctl/config.json или считывается из переменных окружения CDNCTL_TOKEN и CDNCTL_ENDPOINT.

Разрушительные команды — любая команда, в имени которой есть delete или revoke, требует явного флага --yes. Без него команда завершается с ошибкой и не вносит никаких изменений.
← Platform Help

Установка и обновление

cdnctl поставляется в виде статического бинарного файла для Linux, macOS и Windows (amd64/arm64). Не требует PHP, Python, Node.js или kubectl.

install — package managers

# macOS and Linux (Homebrew)
brew install mediatriple/tap/cdnctl

# Debian / Ubuntu (signed APT repository)
curl -fsSL https://cdn.com.tr/downloads/cdn-com-tr.gpg \
  | sudo gpg --dearmor -o /usr/share/keyrings/cdn-com-tr.gpg
echo "deb [signed-by=/usr/share/keyrings/cdn-com-tr.gpg] \
https://cdn.com.tr/downloads/deb stable main" \
  | sudo tee /etc/apt/sources.list.d/cdn-com-tr.list
sudo apt-get update && sudo apt-get install cdnctl

# RHEL / Fedora / Rocky (signed YUM repository)
sudo tee /etc/yum.repos.d/cdn-com-tr.repo >/dev/null <<'EOF'
[cdn-com-tr]
name=cdn.com.tr
baseurl=https://cdn.com.tr/downloads/rpm
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://cdn.com.tr/downloads/cdn-com-tr.gpg
EOF
sudo dnf install cdnctl

# Go toolchain
go install github.com/mediatriple/cdnctl@latest

Installed through a package manager, cdnctl upgrades with that package manager (brew upgrade cdnctl, apt-get install --only-upgrade cdnctl, dnf upgrade cdnctl) and cdnctl update deliberately steps aside, so it never overwrites a file dpkg, rpm or Homebrew owns.

install — script or direct download

curl -fsSL https://cdn.com.tr/downloads/cdnctl/install.sh | sh

# pin a specific version
CDNCTL_VERSION=0.17.2 curl -fsSL https://cdn.com.tr/downloads/cdnctl/install.sh | sh

Загружает последний релиз для вашей платформы, проверяет его по опубликованным контрольным суммам и устанавливает бинарный файл.

Archives for linux (amd64/arm64), macOS (amd64/arm64) and Windows (amd64), each with a SHA256 checksums file, are published at /downloads/cdnctl/ and on the GitHub releases page. cdnctl is open source: github.com/mediatriple/cdnctl (MIT).

update

cdnctl update --check
cdnctl update --yes
cdnctl update --version <version> --yes

Самостоятельно обновляет установленный бинарный файл из публичного канала релизов. Перед заменой бинарного файла загруженный архив проверяется по опубликованному файлу контрольных сумм.

ФлагОписание
--checkнеобязательныйТолько сообщить, доступна ли более новая версия, ничего не изменяя
--yesнеобязательныйПрименить обновление без подтверждения
--versionнеобязательныйОбновить (или откатить) до конкретной версии вместо последней
--bin-dirнеобязательныйКаталог установки, если путь к текущему бинарному файлу недоступен для записи. Резервное значение по умолчанию: $HOME/.local/bin. Переменная окружения: CDNCTL_BIN_DIR

Аутентификация и конфигурация

login

cdnctl login [--password-login] [--email <email>] [--password <password>] [--endpoint <url>]

Выполняет вход и сохраняет токен в ~/.cdnctl/config.json. По умолчанию открывается браузер, и ваш аккаунт подтверждает этот терминал — пароль в CLI не вводится. Добавьте --password-login, чтобы войти по e-mail и паролю (этот путь также выбирается автоматически, когда терминала нет, например в CI). Делается один раз на машину; токен используется в последующих командах.

ФлагОписание
--password-loginнеобязательныйВход по e-mail и паролю вместо браузера (выбирается автоматически, когда терминала нет, например в CI)
--emailнеобязательныйАдрес электронной почты аккаунта
--passwordнеобязательныйПароль аккаунта
--endpointнеобязательныйБазовый URL API. По умолчанию https://cdn.com.tr

configure

cdnctl configure [--endpoint <url>] [--token <token>]

Вручную задаёт эндпоинт или токен без входа в систему. Полезно для сред CI или автоматизации на основе токенов.

ФлагОписание
--endpointнеобязательныйБазовый URL API
--tokenнеобязательныйBearer-токен. Также можно задать переменную окружения CDNCTL_TOKEN
Переменные окружения: CDNCTL_TOKEN и CDNCTL_ENDPOINT переопределяют файл конфигурации и полезны для CI-конвейеров, где запись на диск нежелательна.

Аккаунты

accounts list

cdnctl accounts list

Выводит список всех аккаунтов CDN, доступных аутентифицированному пользователю (полный JSON). Поле uuid используется как значение --account во всех остальных командах.

accounts ls

cdnctl accounts ls

Краткая, удобочитаемая версия списка — по одной строке на аккаунт, содержащей только uuid, домен и тип. Удобно для поиска uuid, который нужно сохранить по умолчанию.

accounts use / current / clear

cdnctl accounts use <uuid>
cdnctl accounts current
cdnctl accounts clear

Сохраните аккаунт по умолчанию один раз, чтобы не передавать --account <uuid> в каждой команде. После accounts use команды, привязанные к аккаунту, автоматически используют сохранённый аккаунт (они выводят (using saved account <uuid>), чтобы вы знали, какой именно); в любой момент передайте --account, чтобы переопределить его. current показывает его, clear сбрасывает.

Доступ к файлам (загрузка и управление файлами)

Загружайте, просматривайте и удаляйте файлы вашего управляемого сайта WordPress прямо из командной строки — без FTP и без ограничения на размер загрузки. Используйте эту команду вместо загрузки через браузер, если вы столкнулись с ошибкой 413 Request Entity Too Large. Пути указываются относительно wp-content вашего сайта, поэтому вы можете обращаться к uploads/, plugins/, themes/ и так далее. Вы видите только файлы своего собственного аккаунта.

Set your account once

cdnctl accounts use <uuid>

Чтобы приведённым ниже командам для работы с файлами не требовался --account каждый раз. (Выполните cdnctl accounts ls, чтобы найти свой uuid.)

List files — files ls

cdnctl files ls                       # lists wp-content (uploads, plugins, themes, …)
cdnctl files ls --path uploads
cdnctl files ls --path uploads/2026

Без указания --path выводится содержимое корня wp-content.

Upload files — cp

cdnctl cp ./photo.jpg /uploads/photo.jpg
cdnctl cp ./backup.zip /uploads/backup.zip
cdnctl cp ./my-plugin.php /plugins/my-plugin/my-plugin.php

# upload a whole folder as one archive (structure is preserved):
cdnctl cp -r ./my-folder /uploads/my-folder

Добавьте -r, чтобы загрузить папку целиком. Она передаётся одним архивом, а не по файлу, поэтому даже тысячи файлов занимают секунды; структура папок воссоздаётся в месте назначения, включая пустые папки, и каждый файл проверяется на сервере по SHA-256, прежде чем занять своё место. Существующие файлы не перезаписываются без --force. Аккаунт можно указать и прямо в пути: <uuid>:/uploads/photo.jpg, вместо сохранения аккаунта по умолчанию.

ФлагОписание
-rРекурсивно загрузить каталог.
--forceПерезаписывать уже существующие файлы.

Download files — cp

cdnctl cp :/uploads/photo.jpg ./                      # into the current folder
cdnctl cp :/plugins/my-plugin/my-plugin.php ./backup.php
cdnctl cp <account_uuid>:/uploads/photo.jpg ./          # a specific account

# download a whole folder recursively (its contents land in ./backup):
cdnctl cp -r :/uploads/2026 ./backup

# the same single-file download as an explicit sub-command:
cdnctl files get --path /uploads/photo.jpg --out ./photo.jpg

Сначала укажите удалённый путь с двоеточием впереди — в том же порядке, что и scp. Одно : означает аккаунт по умолчанию; для другого пишите <account_uuid>:путь. Файл попадает в указанную папку (или под указанным именем). С -r удалённая папка скачивается одним архивом в локальную; -r с пустым путём (<account_uuid>:) забирает всё хранилище. Каждая загрузка проверяется по размеру и SHA-256 до того, как что-либо записано; существующий локальный файл заменяется только с --force. Отдельный файл (без -r) — до 10 МБ.

Keep a folder in sync — sync

# upload what changed in ./my-theme (rsync-style, one direction):
cdnctl sync ./my-theme :/themes/my-theme

# download what changed on the server:
cdnctl sync :/uploads ./uploads-backup

# mirror, deleting what the source no longer has — look at the plan first:
cdnctl sync --delete --dry-run ./my-theme :/themes/my-theme
cdnctl sync --delete --exclude '*.log' ./my-theme :/themes/my-theme

# compare by SHA-256 instead of size and modification time:
cdnctl sync -c :/uploads ./uploads-backup

Работает как rsync, в одном направлении: ИСТОЧНИК и НАЗНАЧЕНИЕ, ровно одно из них удалённое. Передаётся только то, что отличается, — по размеру и времени изменения или по SHA-256 с -c, — а время изменения сохраняется, так что повторный запуск ничего не передаёт. --delete также удаляет то, чего больше нет в источнике (никогда саму папку и исключённые имена, и ничего, если в запуске что-то не удалось); --dry-run показывает план (+ новое, ~ изменённое, - удаляемое, ! пропущенное), ничего не меняя; --exclude исключает имена (*.log, /cache/). Косая черта в конце не важна: содержимое ИСТОЧНИКА всегда попадает в НАЗНАЧЕНИЕ. Символические ссылки отмечаются в отчёте и не трогаются.

Create a folder — files mkdir

cdnctl files mkdir --path /uploads/2026/07

Delete a file — files rm

cdnctl files rm --path /uploads/photo.jpg --yes

Требует --yes. Удалять можно только файлы (каталоги отклоняются).

Container Apps

container apps list

cdnctl container apps list --account <uuid>

Выводит список всех контейнерных приложений в аккаунте.

ФлагОписание
--accountобязательныйUUID аккаунта

container apps create

cdnctl container apps create \
  --account <uuid> \
  --name <name> \
  --image <registry/image> \
  [--tag <tag>] \
  [--port <port>] \
  [--healthcheck <path>] \
  [--healthcheck-type http|tcp|none] \
  [--metrics-port <port>] \
  [--metrics-path <path>] \
  [--replicas <n>] \
  [--plan <code>] \
  [--domain <domain>] \
  [--env-json '{"KEY":"value"}'] \
  [--secrets-json '{"SECRET":"value"}'] \
  [--registry-credential <uuid>] \
  [--persistent-mount-path <path>] \
  [--persistent-storage-gb <n>]

Создаёт новую запись контейнерного приложения и первую ревизию. Не выполняет развёртывание — после создания выполните deploy.

ФлагОписание
--accountобязательныйUUID аккаунта
--nameобязательныйИмя приложения (совместимое со slug)
--imageобязательныйПуть к образу контейнера, например registry.example.com/acme/api
--tagнеобязательныйТег образа. По умолчанию: пустая строка
--portнеобязательныйПорт контейнера, который прослушивает приложение. По умолчанию: 8080
--healthcheckнеобязательныйПуть HTTP-проверки работоспособности. По умолчанию: /health
--healthcheck-typeнеобязательныйТип проверки работоспособности: http, tcp или none
--metrics-portнеобязательныйПорт, на котором публикуются метрики Prometheus
--metrics-pathнеобязательныйПуть, по которому публикуются метрики Prometheus, например /metrics
--replicasнеобязательныйКоличество реплик. По умолчанию: 1
--planнеобязательныйКод тарифного плана. По умолчанию: starter
--domainнеобязательныйПользовательский домен для привязки
--env-jsonнеобязательныйJSON-объект переменных окружения. Значения видны в ответах GET.
--secrets-jsonнеобязательныйJSON-объект секретов. Значения шифруются и после создания больше не возвращаются.
--registry-credentialнеобязательныйUUID учётных данных реестра для приватных образов
--persistent-mount-pathнеобязательныйПуть монтирования постоянного тома, например /app/data
--persistent-storage-gbнеобязательныйРазмер постоянного тома в ГБ
Секреты: значения, переданные через --secrets-json, хранятся зашифрованными и не возвращаются ни в одном GET-ответе. Сохраните их перед выполнением этой команды.

container apps update

cdnctl container apps update \
  --account <uuid> \
  --app <uuid> \
  [--image <registry/image>] \
  [--tag <tag>] \
  [--port <port>] \
  [--replicas <n>] \
  [--healthcheck <path>] \
  [--healthcheck-type http|tcp|none] \
  [--metrics-port <port>] \
  [--metrics-path <path>] \
  [--domain <domain>] \
  [--env-json '{"KEY":"value"}'] \
  [--secrets-json '{"SECRET":"value"}'] \
  [--registry-credential <uuid>] \
  [--persistent-mount-path <path>]

Обновляет настройки приложения. Изменяются только переданные флаги. После обновления выполните deploy, чтобы опубликовать новую ревизию.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--imageнеобязательныйНовый путь к образу
--tagнеобязательныйНовый тег образа
--portнеобязательныйПорт контейнера
--replicasнеобязательныйКоличество реплик
--healthcheckнеобязательныйПуть проверки работоспособности
--healthcheck-typeнеобязательныйТип проверки работоспособности: http, tcp или none
--metrics-portнеобязательныйПорт, на котором публикуются метрики Prometheus
--metrics-pathнеобязательныйПуть, по которому публикуются метрики Prometheus
--domainнеобязательныйДомен для привязки. Передайте пустую строку, чтобы удалить.
--env-jsonнеобязательныйЗаменяет все переменные окружения этим JSON-объектом
--secrets-jsonнеобязательныйЗаменяет все секреты этим JSON-объектом. Значения никогда не возвращаются.
--registry-credentialнеобязательныйUUID учётных данных реестра. Передайте пустую строку, чтобы удалить.
--persistent-mount-pathнеобязательныйПуть монтирования постоянного тома. Передайте пустую строку, чтобы отключить.

container apps deploy

cdnctl container apps deploy --account <uuid> --app <uuid>

Публикует текущую конфигурацию как новую ревизию. После этого используйте wait, чтобы дождаться достижения развёртыванием целевого статуса.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps expose

cdnctl container apps expose --account <uuid> --app <uuid>

Создаёт постоянный, неизменяемый субдомен <uid>.cdn.com.tr для приложения. Субдомен никогда не меняется, даже при обновлении пользовательского домена.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps restart

cdnctl container apps restart --account <uuid> --app <uuid>

Выполняет плавный перезапуск всех работающих реплик без создания новой ревизии.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps scale

cdnctl container apps scale --account <uuid> --app <uuid> --replicas <n>

Немедленно изменяет количество реплик без создания новой ревизии. Передайте 0, чтобы масштабировать приложение до нуля.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--replicasобязательныйЦелевое количество реплик (используйте 0, чтобы приостановить приложение)

container apps show

cdnctl container apps show --account <uuid> --app <uuid>

Возвращает полную конфигурацию приложения, включая список ревизий. Используйте UUID ревизий из этого вывода с командой rollback.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps rollback

cdnctl container apps rollback --account <uuid> --app <uuid> --revision <revision_uuid>

Повторно развёртывает предыдущую ревизию. Используйте show, чтобы получить список доступных UUID ревизий.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--revisionобязательныйUUID ревизии, к которой выполняется откат (из show)

container apps operations

cdnctl container apps operations --account <uuid> --app <uuid>

Выводит список всех операций платформы, зафиксированных для приложения, таких как развёртывания, перезапуски и события масштабирования.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps status

cdnctl container apps status --account <uuid> --app <uuid>

Возвращает текущий статус выполнения и результат последней операции приложения.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container apps wait

cdnctl container apps wait \
  --account <uuid> \
  --app <uuid> \
  --status <target> \
  [--timeout <seconds>] \
  [--interval <seconds>]

Опрашивает статус приложения, пока он не достигнет значения --status или не истечёт время ожидания. Завершается с кодом 0 при успехе и 1 при ошибке или истечении времени. При ошибке автоматически включает вывод diagnose.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--statusобязательныйСтрока целевого статуса, например running
--timeoutнеобязательныйМаксимальное время ожидания в секундах. По умолчанию: 300
--intervalнеобязательныйИнтервал опроса в секундах. По умолчанию: 5

container apps logs

cdnctl container apps logs --account <uuid> --app <uuid> [--tail <n>]

Возвращает последние строки лога контейнера.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--tailнеобязательныйКоличество возвращаемых строк лога. По умолчанию: 100

container apps diagnose

cdnctl container apps diagnose --account <uuid> --app <uuid> [--tail <n>]

Возвращает объединённый снимок статуса и лога. Автоматически используется командой wait при ошибке. Запускайте эту команду в первую очередь, если приложение зависло или завершается с ошибкой.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--tailнеобязательныйКоличество включаемых строк лога. По умолчанию: 120

container apps delete

cdnctl container apps delete --account <uuid> --app <uuid> --yes

Безвозвратно удаляет приложение и все его ревизии. Эта операция необратима.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--yesобязательныйТребуется явное подтверждение для деструктивных операций

Container Preflight

Запустите preflight перед созданием приложений, чтобы убедиться, что аккаунт удовлетворяет всем требованиям платформы (квоты, сетевые политики, доступ к реестру и т. д.).

container preflight

cdnctl container preflight --account <uuid>

Проверяет готовность аккаунта к запуску контейнерных нагрузок и возвращает список обнаруженных проблем.

ФлагОписание
--accountобязательныйUUID аккаунта

Учётные данные Registry

Учётные данные реестра привязаны к аккаунту и могут использоваться повторно в разных приложениях. Пароль хранится в зашифрованном виде и после создания больше не возвращается.

container registry-credentials list

cdnctl container registry-credentials list --account <uuid>
ФлагОписание
--accountобязательныйUUID аккаунта

container registry-credentials create

cdnctl container registry-credentials create \
  --account <uuid> \
  --name <name> \
  --password <token> \
  [--registry-url <url>] \
  [--username <user>]
ФлагОписание
--accountобязательныйUUID аккаунта
--nameобязательныйПонятное имя для этих учётных данных
--passwordобязательныйПароль реестра или токен доступа
--registry-urlнеобязательныйURL реестра. По умолчанию: https://index.docker.io/v1/
--usernameнеобязательныйИмя пользователя реестра

container registry-credentials delete

cdnctl container registry-credentials delete \
  --account <uuid> \
  --credential <credential_uuid> \
  --yes

Безвозвратно удаляет учётные данные реестра. Любые приложения, ссылающиеся на эти учётные данные, не смогут загрузить образы при следующем развёртывании.

ФлагОписание
--accountобязательныйUUID аккаунта
--credentialобязательныйUUID учётных данных из registry-credentials list
--yesобязательныйТребуется явное подтверждение для деструктивных операций

Управляемые аддоны

Дополнения создаются и подключаются к приложению автоматически. Учётные данные внедряются как переменные окружения — вручную указывать хост, порт или пароль не требуется. После включения или отключения дополнения выполните deploy.

container addons list

cdnctl container addons list --account <uuid> --app <uuid>

Выводит список всех дополнений, подключённых к приложению в данный момент.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container addons enable-database

cdnctl container addons enable-database \
  --account <uuid> \
  --app <uuid> \
  [--plan <code>] \
  [--env-prefix <prefix>] \
  [--storage-mb <n>] \
  [--url-scheme <scheme>]
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--planнеобязательныйКод тарифного плана. По умолчанию: starter
--env-prefixнеобязательныйПрефикс переменных окружения для внедряемых учётных данных. По умолчанию: DB
--storage-mbнеобязательныйРазмер хранилища в МБ
--url-schemeнеобязательныйСхема URL базы данных для переменной DATABASE_URL, например mysql+pymysql. По умолчанию: mysql

container addons disable-database

cdnctl container addons disable-database --account <uuid> --app <uuid>
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container addons enable-redis

cdnctl container addons enable-redis \
  --account <uuid> \
  --app <uuid> \
  [--plan <code>] \
  [--env-prefix <prefix>]
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--planнеобязательныйКод тарифного плана. По умолчанию: starter
--env-prefixнеобязательныйПрефикс переменных окружения. По умолчанию: REDIS

container addons disable-redis

cdnctl container addons disable-redis --account <uuid> --app <uuid>
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container addons enable-postgres

cdnctl container addons enable-postgres \
  --account <uuid> \
  --app <uuid> \
  [--plan <code>] \
  [--env-prefix <prefix>] \
  [--storage-mb <n>]
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--planнеобязательныйКод тарифного плана. По умолчанию: starter
--env-prefixнеобязательныйПрефикс переменных окружения для внедряемых учётных данных. По умолчанию: DATABASE
--storage-mbнеобязательныйРазмер хранилища в МБ. По умолчанию: 10240

container addons disable-postgres

cdnctl container addons disable-postgres \
  --account <uuid> \
  --app <uuid> \
  [--delete-data --confirmation <app_name>]

Отключает дополнение Postgres. По умолчанию данные сохраняются. Передайте --delete-data вместе с --confirmation, чтобы безвозвратно удалить все данные.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--delete-dataнеобязательныйБезвозвратно удалить все данные Postgres
--confirmationнеобязательныйИмя приложения для подтверждения удаления данных при указании --delete-data

container addons enable-nats

cdnctl container addons enable-nats \
  --account <uuid> \
  --app <uuid> \
  [--plan <code>] \
  [--env-prefix <prefix>] \
  [--storage-mb <n>]
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--planнеобязательныйКод тарифного плана. По умолчанию: starter
--env-prefixнеобязательныйПрефикс переменных окружения для внедряемых учётных данных. По умолчанию: NATS
--storage-mbнеобязательныйРазмер хранилища JetStream в МБ. По умолчанию: 5120

container addons disable-nats

cdnctl container addons disable-nats \
  --account <uuid> \
  --app <uuid> \
  [--delete-data]

Отключает дополнение NATS. Передайте --delete-data, чтобы безвозвратно удалить все данные JetStream.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--delete-dataнеобязательныйБезвозвратно удалить все данные NATS JetStream

Compose Import

Импортируйте существующий docker-compose.yml как управляемые контейнерные приложения. Сервисы с готовым образом становятся приложениями; сервисы Redis, MySQL/MariaDB, Postgres и NATS преобразуются в управляемые дополнения, подключённые к зависящим от них приложениям. Всегда сначала запускайте preview — он показывает итоговый план, предупреждения, неподдерживаемые сервисы и укладывается ли импорт в квоту приложений, ничего при этом не создавая.

container compose preview

cdnctl container compose preview --account <uuid> --file docker-compose.yml

Разбирает файл compose на стороне сервера и возвращает план импорта: приложения, которые будут созданы, сопоставления дополнений, классификацию ключей переменных окружения/секретов, предупреждения, неподдерживаемые сервисы и проверку прав. Ничего не создаёт. Значения секретов никогда не возвращаются — только имена ключей.

ФлагОписание
--accountобязательныйUUID аккаунта
--fileобязательныйПуть к файлу compose (не более 256 КБ)

container compose apply

cdnctl container compose apply --account <uuid> --file docker-compose.yml --yes

Выполняет импорт: создаёт приложения в порядке зависимостей и включает сопоставленные дополнения. Всё или ничего — если имя какого-либо приложения конфликтует с существующим или какой-либо сервис не поддерживается (например, использует build:), ничего не создаётся. После этого разверните каждое созданное приложение командой container apps deploy.

ФлагОписание
--accountобязательныйUUID аккаунта
--fileобязательныйПуть к файлу compose (не более 256 КБ)
--yesобязательныйПодтверждает создание ресурсов
Не поддерживается в v1: сервисы с build: (вместо этого запушьте заранее собранный образ), переопределения command/entrypoint (встройте в образ), env_file, файловые compose-secrets, а также более одного постоянного монтирования на сервис. Номера портов со стороны хоста игнорируются — публичный доступ использует домен платформы и поток apps expose.

Импорты

Импорт должен завершиться до того, как развёртывание откроет публичную маршрутизацию. Используйте apps status или apps wait, чтобы отслеживать готовность после завершения импорта.

container imports list

cdnctl container imports list --account <uuid> --app <uuid>

Выводит список всех импортов и их текущий статус для приложения.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container imports database

cdnctl container imports database \
  --account <uuid> \
  --app <uuid> \
  --file <path/to/dump.sql.gz>

Загружает и ставит в очередь сжатый gzip дамп SQL для импорта в управляемую базу данных.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--fileобязательныйЛокальный путь к файлу .sql.gz

container imports files

cdnctl container imports files \
  --account <uuid> \
  --app <uuid> \
  --file <path/to/archive.tar.gz> \
  [--target-path <path>]

Загружает и распаковывает архив tar.gz в постоянный том.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--fileобязательныйЛокальный путь к архиву .tar.gz
--target-pathнеобязательныйПуть назначения внутри контейнера. По умолчанию: /app/data

container imports cancel

cdnctl container imports cancel \
  --account <uuid> \
  --app <uuid> \
  --import <import_uuid>

Отменяет импорт, находящийся в очереди или выполняющийся. Не действует, если импорт уже завершён.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--importобязательныйUUID импорта из imports list

Запланированные задачи

Задачи — это HTTP-вызовы, выполняемые по расписанию cron к эндпоинту внутри приложения. Создавайте их выключенными, проверяйте с помощью run, а затем включайте.

container jobs list

cdnctl container jobs list --account <uuid> --app <uuid>
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения

container jobs create

cdnctl container jobs create \
  --account <uuid> \
  --app <uuid> \
  --name <name> \
  --schedule "<cron expression>" \
  --path </endpoint/path> \
  [--method <POST|GET>] \
  [--secret-header-name <header>] \
  [--secret-source <ENV_VAR>] \
  [--enabled]
ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--nameобязательныйИмя задачи
--scheduleобязательныйCron-выражение, например */30 * * * *
--pathобязательныйHTTP-путь для вызова, например /jobs/run
--methodнеобязательныйHTTP-метод. По умолчанию: POST
--secret-header-nameнеобязательныйИмя заголовка для передачи токена, например X-Token
--secret-sourceнеобязательныйИмя секрета приложения или переменной окружения, значение которой отправляется как значение заголовка
--enabledнеобязательныйСоздать задачу включённой. Не указывайте, чтобы создать выключенной (рекомендуется при первой настройке)

container jobs run

cdnctl container jobs run \
  --account <uuid> \
  --app <uuid> \
  --job <job_uuid> \
  [--wait] \
  [--timeout <seconds>] \
  [--interval <seconds>]

Запускает немедленное разовое выполнение задачи. Используйте --wait, чтобы дождаться завершения или ошибки выполнения.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--jobобязательныйUUID задачи из jobs list
--waitнеобязательныйБлокировать выполнение до завершения запуска
--timeoutнеобязательныйМаксимальное время ожидания в секундах при указании --wait. По умолчанию: 180
--intervalнеобязательныйИнтервал опроса в секундах. По умолчанию: 5

container jobs delete

cdnctl container jobs delete \
  --account <uuid> \
  --app <uuid> \
  --job <job_uuid> \
  --yes

Безвозвратно удаляет запланированную задачу.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--jobобязательныйUUID задачи из jobs list
--yesобязательныйТребуется явное подтверждение для деструктивных операций

Object Storage

Используйте cdnctl для управляющей плоскости: создания бакетов, ключей доступа и привязок. Для чтения и записи объектов используйте любой S3-совместимый клиент, указывающий на https://s3.cdn.com.tr. См. руководство Object Storage с AWS CLI.

object-storage buckets list

cdnctl object-storage buckets list --account <uuid>
ФлагОписание
--accountобязательныйUUID аккаунта

object-storage buckets create

cdnctl object-storage buckets create \
  --account <uuid> \
  --name <bucket-name> \
  [--visibility private|public]
ФлагОписание
--accountобязательныйUUID аккаунта
--nameобязательныйИмя бакета (глобально уникальное в рамках платформы)
--visibilityнеобязательныйprivate или public. По умолчанию: private

object-storage buckets usage

cdnctl object-storage buckets usage --account <uuid> --bucket <bucket_uuid>

Возвращает текущую статистику использования хранилища для бакета.

ФлагОписание
--accountобязательныйUUID аккаунта
--bucketобязательныйUUID бакета из buckets list

object-storage buckets delete

cdnctl object-storage buckets delete --account <uuid> --bucket <bucket_uuid> --yes

Безвозвратно удаляет бакет и все объекты внутри него. Эта операция необратима.

ФлагОписание
--accountобязательныйUUID аккаунта
--bucketобязательныйUUID бакета из buckets list
--yesобязательныйТребуется явное подтверждение для деструктивных операций

object-storage access-keys create

cdnctl object-storage access-keys create \
  --account <uuid> \
  [--bucket <uuid>] \
  [--name <name>]

Создаёт S3-совместимый ключ доступа. Поле secret_key в ответе показывается один раз и больше никогда не возвращается. Скопируйте его, прежде чем закрыть терминал.

ФлагОписание
--accountобязательныйUUID аккаунта
--bucketнеобязательныйUUID бакета, к которому привязывается ключ
--nameнеобязательныйПонятное имя для ключа

object-storage access-keys rotate

cdnctl object-storage access-keys rotate --account <uuid> --key <key_uuid>

Генерирует новый секрет для ключа доступа, сохраняя тот же UUID ключа и область действия бакета. Новый secret_key возвращается один раз и больше никогда. Обновите все клиенты перед ротацией в продакшене.

ФлагОписание
--accountобязательныйUUID аккаунта
--keyобязательныйUUID ключа доступа из access-keys create

object-storage access-keys revoke

cdnctl object-storage access-keys revoke --account <uuid> --key <key_uuid> --yes

Безвозвратно отзывает и удаляет ключ доступа. Любые клиенты, всё ещё использующие этот ключ, сразу же начнут получать ошибки аутентификации.

ФлагОписание
--accountобязательныйUUID аккаунта
--keyобязательныйUUID ключа доступа для отзыва
--yesобязательныйТребуется явное подтверждение для деструктивных операций

object-storage bindings create

cdnctl object-storage bindings create \
  --account <uuid> \
  --app <uuid> \
  --bucket <uuid> \
  [--access-key <uuid>] \
  [--env-prefix <prefix>]

Привязывает бакет к приложению. Учётные данные S3 и эндпоинт внедряются как переменные окружения при следующем развёртывании.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--bucketобязательныйUUID бакета
--access-keyнеобязательныйUUID ключа доступа для использования в привязке
--env-prefixнеобязательныйПрефикс переменных окружения. По умолчанию: S3

object-storage bindings delete

cdnctl object-storage bindings delete \
  --account <uuid> \
  --app <uuid> \
  --binding <binding_uuid> \
  --yes

Удаляет привязку бакета от приложения. Сам бакет и ключ доступа не затрагиваются; при следующем развёртывании удаляется только внедрение переменных окружения.

ФлагОписание
--accountобязательныйUUID аккаунта
--appобязательныйUUID приложения
--bindingобязательныйUUID привязки из bindings list или ответа app show
--yesобязательныйТребуется явное подтверждение для деструктивных операций

Операции CDN: очистка кэша, WAF и журналы доступа

Для сайтов, которые отдаёт CDN: очищайте закэшированные пути, смотрите, что заблокировал файрвол, скачивайте и ищите журналы доступа вашего аккаунта. Включите журналы доступа в панели (Журналы доступа), иначе logs pull и logs grep ничего не найдут.

purge

cdnctl purge --account <uuid> --path /sitemap.xml [--path /other] [--type exact|prefix|variants] [--save]
cdnctl purge --account <uuid> --paths "/a,/b,/c" [--type prefix]
ФлагОписание
--accountобязательныйUUID аккаунта.
--pathнеобязательныйПуть для очистки, например /sitemap.xml. Для нескольких путей повторите флаг.
--pathsнеобязательныйНесколько путей одним списком через запятую.
--typeнеобязательныйexact (по умолчанию): только этот URL. prefix: путь и всё под ним. variants: все сохранённые варианты ключа кэша.
--saveнеобязательныйДополнительно сохраняет пути как очистку, которую можно повторить из панели.

purge all

cdnctl purge all --account <uuid> --yes
cdnctl purge all status --account <uuid>

Очищает весь edge-кэш аккаунта; следующие запросы идут на ваш origin. purge all status показывает, завершилась ли последняя полная очистка на всех edge.

ФлагОписание
--accountобязательныйUUID аккаунта.
--yesобязательныйОбязательно: purge all очищает весь кэш аккаунта.

waf logs

cdnctl waf logs [--account <uuid>] [--range 1h|1d|7d|30d] [--format table|json]

Что WAF поймал за период: правила, страны, IP клиентов и коды ответов — те же цифры, что на странице WAF в панели.

ФлагОписание
--accountнеобязательныйUUID аккаунта. По умолчанию — аккаунт, сохранённый через cdnctl accounts use.
--rangeнеобязательныйПериод: 1h (по умолчанию), 1d, 7d или 30d.
--formatнеобязательныйtable (по умолчанию) или json.

waf show

cdnctl waf show <ref> [--account <uuid>] [--format table|json]

Подробности одного заблокированного запроса. <ref> — Reference ID со страницы блокировки, которую увидел посетитель (32 символа), или хотя бы его первые 12 символов, как в таблице панели. Ищет за последние 30 дней по сайтам этого аккаунта и выводит запрос, каждое сработавшее правило с совпавшими данными и вывод — например, был ли файл заблокирован только потому, что оказался больше той части тела запроса, которую проверяет WAF. Если совпадений нет, завершается с кодом 1.

ФлагОписание
--accountнеобязательныйUUID аккаунта. По умолчанию — аккаунт, сохранённый через cdnctl accounts use.
--formatнеобязательныйtable (по умолчанию) или json.

logs status / logs list

cdnctl logs status [--account <uuid>]
cdnctl logs list [--account <uuid>] [--day YYYY-MM-DD] [--format table|json]

logs status показывает, включена ли доставка, маскируются ли IP и сколько дней хранятся файлы. logs list выводит файлы одного дня UTC — по файлу на каждый edge каждые пять минут.

ФлагОписание
--accountнеобязательныйUUID аккаунта. По умолчанию — аккаунт, сохранённый через cdnctl accounts use.
--dayнеобязательныйДень UTC, YYYY-MM-DD. По умолчанию: сегодня (UTC).
--formatнеобязательныйtable (по умолчанию) или json.

logs pull

cdnctl logs pull [--account <uuid>] [--day YYYY-MM-DD] [--out <dir>]

Скачивает все файлы дня UTC в папку. Повторный запуск забирает только новые; эта папка — кэш, который использует logs grep.

ФлагОписание
--accountнеобязательныйUUID аккаунта. По умолчанию — аккаунт, сохранённый через cdnctl accounts use.
--dayнеобязательныйДень UTC, YYYY-MM-DD. По умолчанию: сегодня (UTC).
--outнеобязательныйПапка назначения. По умолчанию: cdntr-logs/<день>.

logs grep

cdnctl logs grep --from "2026-09-25 14:00" --to "2026-09-25 15:00" \
  --status 5xx --path /api/ --format table
cdnctl logs grep --from 14:00 --ip 203.0.113.0/24 --count

Ищет по интервалу времени на вашем компьютере: скачивает только пятиминутные файлы, пересекающиеся с интервалом (пропуская уже закэшированные), и фильтрует каждую строку. Фильтры объединяются; без фильтров выводится каждая строка интервала. Вывод — исходные строки JSON, готовые для jq.

ФлагОписание
--fromобязательныйНачало интервала: 2026-09-25T14:00, "2026-09-25 14:00", 14:00 (сегодня) или RFC 3339. Время без пояса — местное время вашего компьютера.
--toнеобязательныйКонец интервала (не включительно), те же форматы. По умолчанию: сейчас.
--ipнеобязательныйАдрес клиента или блок CIDR, например 203.0.113.7 или 203.0.113.0/24.
--statusнеобязательныйКод или класс ответа через запятую: 404, 5xx, 429,503.
--hostнеобязательныйТочное имя хоста, например www.example.com.
--pathнеобязательныйТекст, который должен содержать путь запроса, например /api/.
--methodнеобязательныйHTTP-метод, например POST.
--cacheнеобязательныйРезультат кэша: HIT, MISS, EXPIRED, STALE, BYPASS…
--countryнеобязательныйДвухбуквенный код страны клиента, например TR.
--textнеобязательныйЛюбой текст, который должна содержать строка (user agent, referer…).
--formatнеобязательныйjson (по умолчанию, строка на запрос) или table.
--countнеобязательныйВыводит только число совпавших строк.
--cache-dirнеобязательныйЛокальная папка кэша. По умолчанию: cdntr-logs, общая с logs pull.