Ligne de commande
Référence cdnctl
Référence complète de cdnctl (v0.12.x). Toutes les commandes produisent du JSON. Le token d'authentification est stocké dans ~/.cdnctl/config.json ou lu depuis les variables d'environnement CDNCTL_TOKEN et CDNCTL_ENDPOINT.
delete ou revoke nécessite un flag --yes explicite. Sans lui, la commande se termine en erreur et n'effectue aucun changement.
Installation et mise à jour
cdnctl est distribué sous forme de binaire statique pour Linux, macOS et Windows (amd64/arm64). Il ne nécessite ni PHP, ni Python, ni Node.js, ni 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
Télécharge la dernière version pour votre plateforme, la vérifie par rapport aux sommes de contrôle publiées, puis installe le binaire.
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
Met à jour automatiquement le binaire installé depuis le canal de publication public. L'archive téléchargée est vérifiée par rapport au fichier de somme de contrôle publié avant que le binaire ne soit remplacé.
| Indicateur | Description | |
|---|---|---|
| --check | optionnel | Signale uniquement si une version plus récente existe ; ne modifie rien |
| --yes | optionnel | Applique la mise à jour sans demander de confirmation |
| --version | optionnel | Met à jour (ou revient) vers une version spécifique au lieu de la dernière |
| --bin-dir | optionnel | Répertoire d'installation lorsque le chemin du binaire actuel n'est pas accessible en écriture. Repli par défaut : $HOME/.local/bin. Variable d'environnement : CDNCTL_BIN_DIR |
Authentification et configuration
login
cdnctl login [--password-login] [--email <email>] [--password <password>] [--endpoint <url>]
Ouvre la session et enregistre un jeton dans ~/.cdnctl/config.json. Par défaut, un navigateur s’ouvre et votre compte approuve ce terminal : aucun mot de passe n’est saisi dans la CLI. Ajoutez --password-login pour vous connecter avec e-mail et mot de passe (c’est aussi ce qui se produit automatiquement sans terminal, par exemple en CI). À faire une fois par machine ; le jeton est réutilisé ensuite.
| Indicateur | Description | |
|---|---|---|
| --password-login | optionnel | Se connecter avec e-mail et mot de passe au lieu du navigateur (choisi automatiquement sans terminal, p. ex. CI) |
| optionnel | Adresse e-mail du compte | |
| --password | optionnel | Mot de passe du compte |
| --endpoint | optionnel | URL de base de l'API. Par défaut : https://cdn.com.tr |
configure
cdnctl configure [--endpoint <url>] [--token <token>]
Définit manuellement l'endpoint ou le jeton sans se connecter. Utile pour les environnements CI ou l'automatisation basée sur des jetons.
| Indicateur | Description | |
|---|---|---|
| --endpoint | optionnel | URL de base de l'API |
| --token | optionnel | Jeton Bearer. Vous pouvez aussi définir la variable d'environnement CDNCTL_TOKEN |
CDNCTL_TOKEN et CDNCTL_ENDPOINT écrasent le fichier de configuration et sont utiles pour les pipelines CI où écrire sur disque n'est pas idéal.
Comptes
accounts list
cdnctl accounts list
Liste tous les comptes CDN accessibles à l'utilisateur authentifié (JSON complet). Le champ uuid est utilisé comme --account dans toutes les autres commandes.
accounts ls
cdnctl accounts ls
Une version courte et lisible de la liste — une ligne par compte avec seulement l'uuid, le domaine et le type. Pratique pour trouver l'uuid à enregistrer comme valeur par défaut.
accounts use / current / clear
cdnctl accounts use <uuid>
cdnctl accounts current
cdnctl accounts clear
Enregistrez un compte par défaut une fois pour ne pas avoir à passer --account <uuid> à chaque commande. Après accounts use, les commandes associées à un compte utilisent automatiquement le compte enregistré (elles affichent (using saved account <uuid>) pour que vous sachiez lequel) ; passez --account à tout moment pour le remplacer. current l'affiche, clear l'oublie.
Accès aux fichiers (envoyez & gérez vos fichiers)
Envoyez, listez et supprimez des fichiers de votre site WordPress géré directement depuis la ligne de commande — sans FTP, et sans limite de taille d'envoi. Utilisez ceci à la place d'un envoi via le navigateur si vous rencontrez l'erreur 413 Request Entity Too Large. Les chemins sont relatifs au dossier wp-content de votre site, vous pouvez donc accéder à uploads/, plugins/, themes/, etc. Vous ne voyez que les fichiers de votre propre compte.
Set your account once
cdnctl accounts use <uuid>
Ainsi, les commandes de fichiers ci-dessous n'ont pas besoin de --account à chaque fois. (Exécutez cdnctl accounts ls pour trouver votre 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
Sans --path, elle liste la racine de 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
Ajoutez -r pour envoyer un dossier entier. Il part en une seule archive, pas fichier par fichier : même des milliers de fichiers ne prennent que quelques secondes. L’arborescence est recréée sous la destination, dossiers vides compris, et chaque fichier est vérifié par son SHA-256 sur le serveur avant d’être mis en place. Les fichiers existants ne sont pas écrasés sauf avec --force. Vous pouvez aussi indiquer le compte directement, <uuid>:/uploads/photo.jpg, au lieu d’en enregistrer un par défaut.
| Indicateur | Description | |
|---|---|---|
-r | Envoie un dossier de manière récursive. | |
--force | Écrase les fichiers déjà existants. |
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
Placez d’abord le chemin distant, précédé de deux-points — le même ordre que scp. : seul désigne votre compte par défaut ; écrivez <account_uuid>:chemin pour un autre. Le fichier arrive dans le dossier indiqué (ou sous le nom donné). Avec -r, un dossier distant descend en une seule archive dans le dossier local ; -r avec un chemin vide (<account_uuid>:) rapatrie tout le stockage. Chaque téléchargement est vérifié par sa taille et son SHA-256 avant toute écriture ; un fichier local existant n’est remplacé qu’avec --force. Un fichier isolé (sans -r) peut faire jusqu’à 10 Mo.
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
Fonctionne comme rsync, dans un seul sens : SOURCE et DESTINATION, exactement l’une des deux distante. Seul ce qui diffère est transféré — selon la taille et la date de modification, ou le SHA-256 avec -c — et les dates de modification sont conservées : une deuxième exécution ne transfère rien. --delete supprime aussi ce que la source n’a plus (jamais le dossier lui-même ni les noms exclus, et rien du tout si quelque chose a échoué) ; --dry-run affiche le plan (+ nouveau, ~ modifié, - supprimé, ! ignoré) sans rien changer ; --exclude écarte des noms (*.log, /cache/). La barre oblique finale ne change rien : le contenu de SOURCE va toujours dans DESTINATION. Les liens symboliques sont signalés et laissés tels quels.
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
Nécessite --yes. Seuls les fichiers peuvent être supprimés (les dossiers sont refusés).
Container Apps
container apps list
cdnctl container apps list --account <uuid>
Liste toutes les applications conteneurisées du compte.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
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>]
Crée un nouvel enregistrement d'application conteneurisée et sa première révision. Ne déploie pas — exécutez deploy après la création.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --name | obligatoire | Nom de l'application (compatible slug) |
| --image | obligatoire | Chemin de l'image du conteneur, par ex. registry.example.com/acme/api |
| --tag | optionnel | Tag de l'image. Par défaut : chaîne vide |
| --port | optionnel | Port du conteneur sur lequel l'application écoute. Par défaut : 8080 |
| --healthcheck | optionnel | Chemin de vérification de santé HTTP. Par défaut : /health |
| --healthcheck-type | optionnel | Type de vérification de santé : http, tcp ou none |
| --metrics-port | optionnel | Port exposant les métriques Prometheus |
| --metrics-path | optionnel | Chemin exposant les métriques Prometheus, par ex. /metrics |
| --replicas | optionnel | Nombre de réplicas. Par défaut : 1 |
| --plan | optionnel | Code du plan de ressources. Par défaut : starter |
| --domain | optionnel | Domaine personnalisé à associer |
| --env-json | optionnel | Objet JSON des variables d'environnement. Les valeurs sont visibles dans les réponses GET. |
| --secrets-json | optionnel | Objet JSON des secrets. Les valeurs sont chiffrées et ne sont jamais renvoyées après la création. |
| --registry-credential | optionnel | UUID d'un identifiant de registre pour les images privées |
| --persistent-mount-path | optionnel | Chemin de montage du volume persistant, par ex. /app/data |
| --persistent-storage-gb | optionnel | Taille du volume persistant en Go |
--secrets-json sont stockées chiffrées et ne sont retournées dans aucune réponse GET. Sauvegardez-les avant d'exécuter cette commande.
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>]
Met à jour les paramètres de l'application. Seuls les indicateurs (flags) passés sont modifiés. Exécutez deploy après la mise à jour pour publier la nouvelle révision.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --image | optionnel | Nouveau chemin d'image |
| --tag | optionnel | Nouveau tag d'image |
| --port | optionnel | Port du conteneur |
| --replicas | optionnel | Nombre de réplicas |
| --healthcheck | optionnel | Chemin de vérification de santé |
| --healthcheck-type | optionnel | Type de vérification de santé : http, tcp ou none |
| --metrics-port | optionnel | Port exposant les métriques Prometheus |
| --metrics-path | optionnel | Chemin exposant les métriques Prometheus |
| --domain | optionnel | Domaine à associer. Passez une chaîne vide pour le supprimer. |
| --env-json | optionnel | Remplace toutes les variables d'environnement par cet objet JSON |
| --secrets-json | optionnel | Remplace tous les secrets par cet objet JSON. Les valeurs ne sont jamais renvoyées. |
| --registry-credential | optionnel | UUID de l'identifiant de registre. Passez une chaîne vide pour le supprimer. |
| --persistent-mount-path | optionnel | Chemin de montage persistant. Passez une chaîne vide pour désactiver. |
container apps deploy
cdnctl container apps deploy --account <uuid> --app <uuid>
Publie la configuration actuelle en tant que nouvelle révision. Utilisez ensuite wait pour bloquer jusqu'à ce que le déploiement atteigne un statut cible.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps expose
cdnctl container apps expose --account <uuid> --app <uuid>
Crée un sous-domaine permanent et immuable <uid>.cdn.com.tr pour l'application. Le sous-domaine ne change jamais, même si un domaine personnalisé est mis à jour.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps restart
cdnctl container apps restart --account <uuid> --app <uuid>
Effectue un redémarrage progressif (rolling restart) de tous les réplicas en cours d'exécution sans créer de nouvelle révision.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps scale
cdnctl container apps scale --account <uuid> --app <uuid> --replicas <n>
Modifie immédiatement le nombre de réplicas sans créer de nouvelle révision. Passez 0 pour réduire l'application à zéro.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --replicas | obligatoire | Nombre de réplicas cible (utilisez 0 pour suspendre l'application) |
container apps show
cdnctl container apps show --account <uuid> --app <uuid>
Renvoie la configuration complète de l'application, y compris la liste des révisions. Utilisez les UUID de révision de cette sortie avec rollback.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps rollback
cdnctl container apps rollback --account <uuid> --app <uuid> --revision <revision_uuid>
Redéploie une révision précédente. Utilisez show pour lister les UUID de révision disponibles.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --revision | obligatoire | UUID de la révision vers laquelle revenir (depuis show) |
container apps operations
cdnctl container apps operations --account <uuid> --app <uuid>
Liste toutes les opérations de plateforme enregistrées pour l'application, telles que les déploiements, redémarrages et événements de mise à l'échelle.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps status
cdnctl container apps status --account <uuid> --app <uuid>
Renvoie le statut d'exécution actuel et le résultat de la dernière opération de l'application.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container apps wait
cdnctl container apps wait \
--account <uuid> \
--app <uuid> \
--status <target> \
[--timeout <seconds>] \
[--interval <seconds>]
Interroge le statut de l'application jusqu'à ce qu'il atteigne --status ou que le délai expire. Se termine avec 0 en cas de succès, 1 en cas d'échec ou de dépassement du délai. En cas d'échec, inclut automatiquement la sortie de diagnose.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --status | obligatoire | Chaîne de statut cible, par ex. running |
| --timeout | optionnel | Durée d'attente maximale en secondes. Par défaut : 300 |
| --interval | optionnel | Intervalle d'interrogation en secondes. Par défaut : 5 |
container apps logs
cdnctl container apps logs --account <uuid> --app <uuid> [--tail <n>]
Renvoie les lignes récentes des journaux du conteneur.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --tail | optionnel | Nombre de lignes de journal à renvoyer. Par défaut : 100 |
container apps diagnose
cdnctl container apps diagnose --account <uuid> --app <uuid> [--tail <n>]
Renvoie un instantané combiné du statut et des journaux. Utilisé automatiquement par wait en cas d'échec. Exécutez-le en premier lorsqu'une application est bloquée ou en échec.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --tail | optionnel | Nombre de lignes de journal à inclure. Par défaut : 120 |
container apps delete
cdnctl container apps delete --account <uuid> --app <uuid> --yes
Supprime définitivement l'application et toutes ses révisions. Cette opération est irréversible.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
Container Preflight
Exécutez preflight avant de créer des applications pour vérifier que le compte remplit tous les prérequis de la plateforme (quotas, politiques réseau, accès au registre, etc.).
container preflight
cdnctl container preflight --account <uuid>
Vérifie que le compte est prêt à exécuter des charges de travail conteneurisées et renvoie la liste des éventuels problèmes détectés.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
Identifiants de registre
Les identifiants de registre sont associés au compte et peuvent être réutilisés sur plusieurs applications. Le mot de passe est stocké chiffré et n'est jamais renvoyé après la création.
container registry-credentials list
cdnctl container registry-credentials list --account <uuid>
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
container registry-credentials create
cdnctl container registry-credentials create \
--account <uuid> \
--name <name> \
--password <token> \
[--registry-url <url>] \
[--username <user>]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --name | obligatoire | Nom convivial pour cet identifiant |
| --password | obligatoire | Mot de passe du registre ou jeton d'accès |
| --registry-url | optionnel | URL du registre. Par défaut : https://index.docker.io/v1/ |
| --username | optionnel | Nom d'utilisateur du registre |
container registry-credentials delete
cdnctl container registry-credentials delete \
--account <uuid> \
--credential <credential_uuid> \
--yes
Supprime définitivement un identifiant de registre. Toutes les applications faisant référence à cet identifiant échoueront à récupérer les images lors du prochain déploiement.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --credential | obligatoire | UUID de l'identifiant obtenu via registry-credentials list |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
Add-ons managés
Les modules complémentaires sont créés et connectés à l'application automatiquement. Les identifiants sont injectés sous forme de variables d'environnement — aucune saisie manuelle d'hôte, de port ou de mot de passe n'est nécessaire. Exécutez deploy après avoir activé ou désactivé un module complémentaire.
container addons list
cdnctl container addons list --account <uuid> --app <uuid>
Liste tous les modules complémentaires actuellement associés à l'application.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container addons enable-database
cdnctl container addons enable-database \
--account <uuid> \
--app <uuid> \
[--plan <code>] \
[--env-prefix <prefix>] \
[--storage-mb <n>] \
[--url-scheme <scheme>]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --plan | optionnel | Code du plan de ressources. Par défaut : starter |
| --env-prefix | optionnel | Préfixe des variables d'environnement pour les identifiants injectés. Par défaut : DB |
| --storage-mb | optionnel | Taille du stockage en Mo |
| --url-scheme | optionnel | Schéma d'URL de base de données pour la variable DATABASE_URL, par ex. mysql+pymysql. Par défaut : mysql |
container addons disable-database
cdnctl container addons disable-database --account <uuid> --app <uuid>
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container addons enable-redis
cdnctl container addons enable-redis \
--account <uuid> \
--app <uuid> \
[--plan <code>] \
[--env-prefix <prefix>]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --plan | optionnel | Code du plan de ressources. Par défaut : starter |
| --env-prefix | optionnel | Préfixe des variables d'environnement. Par défaut : REDIS |
container addons disable-redis
cdnctl container addons disable-redis --account <uuid> --app <uuid>
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container addons enable-postgres
cdnctl container addons enable-postgres \
--account <uuid> \
--app <uuid> \
[--plan <code>] \
[--env-prefix <prefix>] \
[--storage-mb <n>]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --plan | optionnel | Code du plan de ressources. Par défaut : starter |
| --env-prefix | optionnel | Préfixe des variables d'environnement pour les identifiants injectés. Par défaut : DATABASE |
| --storage-mb | optionnel | Taille du stockage en Mo. Par défaut : 10240 |
container addons disable-postgres
cdnctl container addons disable-postgres \
--account <uuid> \
--app <uuid> \
[--delete-data --confirmation <app_name>]
Désactive le module complémentaire Postgres. Par défaut, les données sont conservées. Passez --delete-data avec --confirmation pour détruire définitivement toutes les données.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --delete-data | optionnel | Détruit définitivement toutes les données Postgres |
| --confirmation | optionnel | Nom de l'application pour confirmer la suppression des données lorsque --delete-data est défini |
container addons enable-nats
cdnctl container addons enable-nats \
--account <uuid> \
--app <uuid> \
[--plan <code>] \
[--env-prefix <prefix>] \
[--storage-mb <n>]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --plan | optionnel | Code du plan de ressources. Par défaut : starter |
| --env-prefix | optionnel | Préfixe des variables d'environnement pour les identifiants injectés. Par défaut : NATS |
| --storage-mb | optionnel | Taille du stockage JetStream en Mo. Par défaut : 5120 |
container addons disable-nats
cdnctl container addons disable-nats \
--account <uuid> \
--app <uuid> \
[--delete-data]
Désactive le module complémentaire NATS. Passez --delete-data pour détruire définitivement toutes les données JetStream.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --delete-data | optionnel | Détruit définitivement toutes les données JetStream de NATS |
Import Compose
Importez un fichier docker-compose.yml existant en tant qu'applications conteneurisées gérées. Les services disposant d'une image préconstruite deviennent des applications ; les services Redis, MySQL/MariaDB, Postgres et NATS sont convertis en modules complémentaires gérés, associés aux applications qui en dépendent. Exécutez toujours preview en premier — il affiche le plan résultant, les avertissements, les services non pris en charge, et si l'import respecte votre quota d'applications, sans rien créer.
container compose preview
cdnctl container compose preview --account <uuid> --file docker-compose.yml
Analyse le fichier compose côté serveur et renvoie le plan d'import : applications à créer, mappages de modules complémentaires, classification des clés d'environnement/secrets, avertissements, services non pris en charge, et une vérification des droits. Ne crée rien. Les valeurs des secrets ne sont jamais renvoyées — seulement les noms de clés.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --file | obligatoire | Chemin du fichier compose (256 Ko max) |
container compose apply
cdnctl container compose apply --account <uuid> --file docker-compose.yml --yes
Applique l'import : crée les applications dans l'ordre des dépendances et active les modules complémentaires mappés. Tout ou rien — si le nom d'une application entre en conflit avec une application existante, ou si un service n'est pas pris en charge (par ex. utilise build:), rien n'est créé. Déployez ensuite chaque application créée avec container apps deploy.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --file | obligatoire | Chemin du fichier compose (256 Ko max) |
| --yes | obligatoire | Confirme la création de la ressource |
build: (poussez plutôt une image préconstruite), les surcharges command/entrypoint (intégrez-les à l'image), env_file, les secrets compose basés sur des fichiers, et plus d'un point de montage persistant par service. Les numéros de port côté hôte sont ignorés — l'exposition publique utilise le flux domain et apps expose de la plateforme.
Imports
Les imports doivent se terminer avant que le déploiement n'ouvre le routage public. Utilisez apps status ou apps wait pour suivre l'état de préparation une fois l'import terminé.
container imports list
cdnctl container imports list --account <uuid> --app <uuid>
Liste tous les imports et leur statut actuel pour l'application.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
container imports database
cdnctl container imports database \
--account <uuid> \
--app <uuid> \
--file <path/to/dump.sql.gz>
Envoie et met en file d'attente un dump SQL compressé en gzip pour import dans la base de données gérée.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --file | obligatoire | Chemin local du fichier .sql.gz |
container imports files
cdnctl container imports files \
--account <uuid> \
--app <uuid> \
--file <path/to/archive.tar.gz> \
[--target-path <path>]
Envoie et extrait une archive tar.gz dans le volume persistant.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --file | obligatoire | Chemin local de l'archive .tar.gz |
| --target-path | optionnel | Chemin de destination dans le conteneur. Par défaut : /app/data |
container imports cancel
cdnctl container imports cancel \
--account <uuid> \
--app <uuid> \
--import <import_uuid>
Annule un import en file d'attente ou en cours. N'a aucun effet si l'import est déjà terminé.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --import | obligatoire | UUID de l'import obtenu via imports list |
Tâches planifiées
Les tâches sont des appels HTTP effectués selon un planning cron vers un endpoint à l'intérieur de l'application. Créez-les désactivées, vérifiez-les avec run, puis activez-les.
container jobs list
cdnctl container jobs list --account <uuid> --app <uuid>
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
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]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --name | obligatoire | Nom de la tâche |
| --schedule | obligatoire | Expression cron, par ex. */30 * * * * |
| --path | obligatoire | Chemin HTTP à appeler, par ex. /jobs/run |
| --method | optionnel | Méthode HTTP. Par défaut : POST |
| --secret-header-name | optionnel | Nom de l'en-tête dans lequel envoyer le jeton, par ex. X-Token |
| --secret-source | optionnel | Nom du secret ou de la variable d'environnement de l'application dont la valeur est envoyée comme valeur de l'en-tête |
| --enabled | optionnel | Crée la tâche activée. Omettez pour la créer désactivée (recommandé lors d'une première configuration) |
container jobs run
cdnctl container jobs run \
--account <uuid> \
--app <uuid> \
--job <job_uuid> \
[--wait] \
[--timeout <seconds>] \
[--interval <seconds>]
Déclenche immédiatement une exécution ponctuelle de la tâche. Utilisez --wait pour bloquer jusqu'à ce que l'exécution se termine ou échoue.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --job | obligatoire | UUID de la tâche obtenu via jobs list |
| --wait | optionnel | Bloque jusqu'à la fin de l'exécution |
| --timeout | optionnel | Durée d'attente maximale en secondes lorsque --wait est défini. Par défaut : 180 |
| --interval | optionnel | Intervalle d'interrogation en secondes. Par défaut : 5 |
container jobs delete
cdnctl container jobs delete \
--account <uuid> \
--app <uuid> \
--job <job_uuid> \
--yes
Supprime définitivement la tâche planifiée.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --job | obligatoire | UUID de la tâche obtenu via jobs list |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
Object Storage
Utilisez cdnctl pour le plan de contrôle : création de buckets, de clés d'accès et d'associations. Pour lire et écrire des objets, utilisez n'importe quel client compatible S3 pointant vers https://s3.cdn.com.tr. Consultez le guide Object Storage avec AWS CLI.
object-storage buckets list
cdnctl object-storage buckets list --account <uuid>
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
object-storage buckets create
cdnctl object-storage buckets create \
--account <uuid> \
--name <bucket-name> \
[--visibility private|public]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --name | obligatoire | Nom du bucket (unique globalement sur la plateforme) |
| --visibility | optionnel | private ou public. Par défaut : private |
object-storage buckets usage
cdnctl object-storage buckets usage --account <uuid> --bucket <bucket_uuid>
Renvoie les statistiques d'utilisation actuelles du stockage pour le bucket.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --bucket | obligatoire | UUID du bucket obtenu via buckets list |
object-storage buckets delete
cdnctl object-storage buckets delete --account <uuid> --bucket <bucket_uuid> --yes
Supprime définitivement le bucket et tous les objets qu'il contient. Cette opération est irréversible.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --bucket | obligatoire | UUID du bucket obtenu via buckets list |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
object-storage access-keys create
cdnctl object-storage access-keys create \
--account <uuid> \
[--bucket <uuid>] \
[--name <name>]
Crée une clé d'accès compatible S3. Le champ secret_key de la réponse n'est affiché qu'une seule fois et n'est plus jamais renvoyé. Copiez-la avant de fermer le terminal.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --bucket | optionnel | UUID du bucket auquel restreindre la clé |
| --name | optionnel | Nom convivial pour la clé |
object-storage access-keys rotate
cdnctl object-storage access-keys rotate --account <uuid> --key <key_uuid>
Génère un nouveau secret pour la clé d'accès en conservant le même UUID de clé et la même portée de bucket. Le nouveau secret_key est renvoyé une seule fois et jamais plus. Mettez à jour tous les clients avant d'effectuer la rotation en production.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --key | obligatoire | UUID de la clé d'accès obtenu via access-keys create |
object-storage access-keys revoke
cdnctl object-storage access-keys revoke --account <uuid> --key <key_uuid> --yes
Révoque et supprime définitivement la clé d'accès. Tous les clients utilisant encore cette clé recevront immédiatement des erreurs d'authentification.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --key | obligatoire | UUID de la clé d'accès à révoquer |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
object-storage bindings create
cdnctl object-storage bindings create \
--account <uuid> \
--app <uuid> \
--bucket <uuid> \
[--access-key <uuid>] \
[--env-prefix <prefix>]
Associe un bucket à une application. Les identifiants S3 et l'endpoint sont injectés comme variables d'environnement lors du prochain déploiement.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --bucket | obligatoire | UUID du bucket |
| --access-key | optionnel | UUID de la clé d'accès à utiliser pour l'association |
| --env-prefix | optionnel | Préfixe des variables d'environnement. Par défaut : S3 |
object-storage bindings delete
cdnctl object-storage bindings delete \
--account <uuid> \
--app <uuid> \
--binding <binding_uuid> \
--yes
Supprime l'association du bucket de l'application. Le bucket et la clé d'accès ne sont pas affectés ; seule l'injection de variables d'environnement est supprimée lors du prochain déploiement.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte |
| --app | obligatoire | UUID de l'application |
| --binding | obligatoire | UUID de l'association obtenu via bindings list ou la réponse de app show |
| --yes | obligatoire | Confirmation explicite requise pour les opérations destructrices |
Opérations CDN : purge, WAF et journaux d’accès
Pour les sites diffusés par le CDN : purgez des chemins en cache, lisez ce que le pare-feu a bloqué et récupérez ou recherchez les journaux d’accès que reçoit votre compte. Activez les journaux d’accès dans le panneau (Journaux d’accès) avant que logs pull et logs grep ne trouvent quoi que ce soit.
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]
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte. |
| --path | optionnel | Chemin à purger, par ex. /sitemap.xml. Répétez l’option pour plusieurs chemins. |
| --paths | optionnel | Plusieurs chemins dans une liste séparée par des virgules. |
| --type | optionnel | exact (par défaut) : seulement cette URL. prefix : le chemin et tout ce qui est dessous. variants : toutes les variantes stockées de la clé de cache. |
| --save | optionnel | Conserve aussi les chemins comme une purge enregistrée, relançable depuis le panneau. |
purge all
cdnctl purge all --account <uuid> --yes
cdnctl purge all status --account <uuid>
Vide tout le cache edge du compte ; les requêtes suivantes vont à votre origine. purge all status indique si la dernière purge complète est terminée sur chaque edge.
| Indicateur | Description | |
|---|---|---|
| --account | obligatoire | UUID du compte. |
| --yes | obligatoire | Obligatoire : purge all vide tout le cache du compte. |
waf logs
cdnctl waf logs [--account <uuid>] [--range 1h|1d|7d|30d] [--format table|json]
Ce que le WAF a détecté sur la période : règles, pays, IP clientes et codes de réponse — les mêmes chiffres que la page WAF du panneau.
| Indicateur | Description | |
|---|---|---|
| --account | optionnel | UUID du compte. Par défaut, celui enregistré avec cdnctl accounts use. |
| --range | optionnel | Période : 1h (par défaut), 1d, 7d ou 30d. |
| --format | optionnel | table (par défaut) ou json. |
waf show
cdnctl waf show <ref> [--account <uuid>] [--format table|json]
Une requête bloquée en détail. <ref> est le Reference ID affiché sur la page de blocage vue par votre visiteur (32 caractères), ou au moins ses 12 premiers caractères, tels que le tableau du panneau les affiche. Cherche dans les 30 derniers jours des sites de ce compte et affiche la requête, chaque règle déclenchée avec les données correspondantes, et un diagnostic — par exemple si un envoi de fichier a été bloqué uniquement parce qu’il dépassait la partie du corps que le WAF inspecte. Se termine avec le code 1 si rien ne correspond.
| Indicateur | Description | |
|---|---|---|
| --account | optionnel | UUID du compte. Par défaut, celui enregistré avec cdnctl accounts use. |
| --format | optionnel | table (par défaut) ou json. |
logs status / logs list
cdnctl logs status [--account <uuid>]
cdnctl logs list [--account <uuid>] [--day YYYY-MM-DD] [--format table|json]
logs status indique si la livraison est active, si les IP sont masquées et combien de jours les fichiers sont conservés. logs list liste les fichiers d’un jour UTC — un par edge toutes les cinq minutes.
| Indicateur | Description | |
|---|---|---|
| --account | optionnel | UUID du compte. Par défaut, celui enregistré avec cdnctl accounts use. |
| --day | optionnel | Jour UTC, YYYY-MM-DD. Par défaut : aujourd’hui (UTC). |
| --format | optionnel | table (par défaut) ou json. |
logs pull
cdnctl logs pull [--account <uuid>] [--day YYYY-MM-DD] [--out <dir>]
Télécharge tous les fichiers d’un jour UTC dans un dossier. Relancée, la commande ne récupère que les nouveaux ; ce dossier est le cache utilisé par logs grep.
| Indicateur | Description | |
|---|---|---|
| --account | optionnel | UUID du compte. Par défaut, celui enregistré avec cdnctl accounts use. |
| --day | optionnel | Jour UTC, YYYY-MM-DD. Par défaut : aujourd’hui (UTC). |
| --out | optionnel | Dossier cible. Par défaut : cdntr-logs/<jour>. |
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
Recherche une période sur votre propre ordinateur : ne télécharge que les fichiers de cinq minutes qui chevauchent la période (en sautant ceux déjà en cache), puis filtre chaque ligne. Les filtres se combinent ; sans filtre, chaque ligne de la période est affichée. La sortie est constituée des lignes JSON brutes, prêtes pour jq.
| Indicateur | Description | |
|---|---|---|
| --from | obligatoire | Début de la période : 2026-09-25T14:00, "2026-09-25 14:00", 14:00 (aujourd’hui) ou RFC 3339. Une heure sans fuseau est l’heure locale de votre ordinateur. |
| --to | optionnel | Fin de la période (exclue), mêmes formats. Par défaut : maintenant. |
| --ip | optionnel | Adresse cliente ou bloc CIDR, par ex. 203.0.113.7 ou 203.0.113.0/24. |
| --status | optionnel | Code ou classe d’état, séparés par des virgules : 404, 5xx, 429,503. |
| --host | optionnel | Nom d’hôte exact, par ex. www.example.com. |
| --path | optionnel | Texte que le chemin doit contenir, par ex. /api/. |
| --method | optionnel | Méthode HTTP, par ex. POST. |
| --cache | optionnel | Résultat du cache : HIT, MISS, EXPIRED, STALE, BYPASS… |
| --country | optionnel | Code pays à deux lettres du client, par ex. TR. |
| --text | optionnel | Tout texte que la ligne brute doit contenir (user agent, referer…). |
| --format | optionnel | json (par défaut, une ligne par requête) ou table. |
| --count | optionnel | N’affiche que le nombre de lignes correspondantes. |
| --cache-dir | optionnel | Dossier de cache local. Par défaut : cdntr-logs, partagé avec logs pull. |