Командная строка
Справочник cdnctl
Полный справочник по cdnctl (v0.12.x). Все команды выводят JSON. Токен аутентификации хранится в ~/.cdnctl/config.json или считывается из переменных окружения CDNCTL_TOKEN и CDNCTL_ENDPOINT.
delete или revoke, требует явного флага --yes. Без него команда завершается с ошибкой и не вносит никаких изменений.
Установка и обновление
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) |
| необязательный | Адрес электронной почты аккаунта | |
| --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 | обязательный | Подтверждает создание ресурсов |
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. |