Loading...

سطر الأوامر

مرجع cdnctl

مرجع كامل لـcdnctl (الإصدار v0.12.x). تُخرج جميع الأوامر بصيغة JSON. يُخزَّن رمز المصادقة في ~/.cdnctl/config.json أو يُقرأ من متغيرات البيئة CDNCTL_TOKEN وCDNCTL_ENDPOINT.

الأوامر المدمّرة — أي أمر يحتوي اسمه على delete أو revoke يتطلب علامة صريحة --yes. دون ذلك، يخرج الأمر بخطأ ولا يجري أي تغييرات.
← مساعدة المنصة

التثبيت والتحديث

يتوفر cdnctl كملف تنفيذي (binary) ثابت لأنظمة 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

يقوم بتنزيل أحدث إصدار لنظام تشغيلك، والتحقق منه مقابل الـ checksums المنشورة، ثم تثبيت الملف التنفيذي.

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

يحدّث الملف التنفيذي المثبَّت ذاتياً من قناة الإصدارات العامة. يتم التحقق من الأرشيف المُنزَّل مقابل ملف الـ checksum المنشور قبل استبدال الملف التنفيذي.

الرايةالوصف
--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. افتراضيًا يُفتح متصفّح ويوافق حسابك على هذا الطرفية، فلا تُكتب أي كلمة مرور في سطر الأوامر؛ أضف --password-login لتسجيل الدخول بالبريد وكلمة المرور (وهذا ما يحدث تلقائيًا أيضًا عند غياب الطرفية، مثل CI). يُنفَّذ مرة واحدة لكل جهاز، ويُعاد استخدام الرمز في الأوامر التالية.

الرايةالوصف
--password-loginاختياريتسجيل الدخول بالبريد وكلمة المرور بدل المتصفّح (يُختار تلقائيًا عند غياب الطرفية، مثل CI)
--emailاختياريعنوان البريد الإلكتروني للحساب
--passwordاختياريكلمة مرور الحساب
--endpointاختياريعنوان URL الأساسي لواجهة API. الافتراضي https://cdn.com.tr

configure

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

يضبط نقطة النهاية (endpoint) أو الرمز يدوياً دون تسجيل الدخول. مفيد لبيئات CI أو الأتمتة المعتمدة على الرموز.

الرايةالوصف
--endpointاختياريعنوان URL الأساسي لواجهة API
--tokenاختياريرمز الحامل (Bearer token). بدلاً من ذلك يمكن تعيين متغير البيئة CDNCTL_TOKEN
متغيرات البيئة: CDNCTL_TOKEN وCDNCTL_ENDPOINT تتجاوزان ملف الإعداد، وهما مفيدتان لخطوط أنابيب CI حيث الكتابة على القرص غير مثالية.

الحسابات

accounts list

cdnctl accounts list

يسرد جميع حسابات CDN المتاحة للمستخدم المصادَق عليه (بصيغة JSON كاملة). يُستخدم حقل uuid كقيمة لـ --account في جميع الأوامر الأخرى.

accounts ls

cdnctl accounts ls

نسخة مختصرة وسهلة القراءة من القائمة — سطر واحد لكل حساب يتضمن فقط uuid والنطاق (domain) والنوع. مفيدة لإيجاد الـ 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رفع دليل بشكل تكراري (recursively).
--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اختياريوسم الصورة (tag). الافتراضي: سلسلة فارغة
--portاختياريمنفذ الحاوية الذي يستمع إليه التطبيق. الافتراضي: 8080
--healthcheckاختياريمسار فحص الصحة عبر HTTP. الافتراضي: /health
--healthcheck-typeاختيارينوع فحص الصحة: http أو tcp أو none
--metrics-portاختياريالمنفذ الذي يعرض مقاييس Prometheus
--metrics-pathاختياريالمسار الذي يعرض مقاييس Prometheus، مثال: /metrics
--replicasاختياريعدد النسخ المتماثلة (replicas). الافتراضي: 1
--planاختياريرمز خطة الموارد. الافتراضي: starter
--domainاختيارينطاق مخصص لإرفاقه
--env-jsonاختياريكائن JSON لمتغيرات البيئة. القيم مرئية في استجابات GET.
--secrets-jsonاختياريكائن JSON للأسرار (secrets). القيم مشفّرة ولا تُعاد أبداً بعد الإنشاء.
--registry-credentialاختياريمعرّف UUID لبيانات اعتماد السجل (registry) الخاصة بالصور الخاصة
--persistent-mount-pathاختياريمسار التحميل (mount) للحجم الدائم، مثال: /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>]

يحدّث إعدادات التطبيق. تُغيَّر فقط الرايات (flags) التي تمررها. شغّل 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>

يقوم بإعادة تشغيل متدرجة (rolling restart) لجميع النسخ المتماثلة العاملة دون إنشاء مراجعة جديدة.

الرايةالوصف
--accountمطلوبمعرّف الحساب الفريد (UUID)
--appمطلوبمعرّف التطبيق الفريد (UUID)

container apps scale

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

يغيّر عدد النسخ المتماثلة فوراً دون إنشاء مراجعة جديدة. مرّر 0 لتصفير التطبيق (scale to zero).

الرايةالوصف
--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 للمراجعة (revision) المراد التراجع إليها (من show)

container apps operations

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

يسرد جميع عمليات المنصة المسجَّلة للتطبيق، مثل عمليات النشر وإعادة التشغيل وأحداث التحجيم (scale).

الرايةالوصف
--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>]

يُعيد أحدث أسطر سجل الحاوية (container log).

الرايةالوصف
--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)

بيانات اعتماد السجل

بيانات اعتماد السجل مرتبطة بنطاق الحساب ويمكن إعادة استخدامها عبر التطبيقات. تُخزَّن كلمة المرور مشفّرة ولا تُعاد أبداً بعد الإنشاء.

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مطلوباسم ودود لهذا الاعتماد (credential)
--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مطلوبالتأكيد الصريح مطلوب للعمليات المدمرة

الإضافات المُدارة

تُنشأ الإضافات (add-ons) وتُربط بالتطبيق تلقائياً. تُحقن بيانات الاعتماد كمتغيرات بيئة — دون الحاجة لإدخال المضيف أو المنفذ أو كلمة المرور يدوياً. شغّل deploy بعد تفعيل أو تعطيل أي إضافة.

container addons list

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

يسرد جميع الإضافات (add-ons) المرتبطة حالياً بالتطبيق.

الرايةالوصف
--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

استورد ملف docker-compose.yml موجود كتطبيقات حاوية مُدارة. الخدمات ذات الصورة الجاهزة مسبقاً تصبح تطبيقات؛ أما خدمات Redis وMySQL/MariaDB وPostgres وNATS فتُحوَّل إلى إضافات مُدارة مرتبطة بالتطبيقات التي تعتمد عليها. شغّل دائماً preview أولاً — فهو يعرض الخطة الناتجة والتحذيرات والخدمات غير المدعومة، وما إذا كان الاستيراد يتوافق مع حصة تطبيقاتك، دون إنشاء أي شيء.

container compose preview

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

يحلّل ملف compose على الخادم ويُعيد خطة الاستيراد: التطبيقات المراد إنشاؤها، وتخطيطات الإضافات، وتصنيف مفاتيح متغيرات البيئة/الأسرار، والتحذيرات، والخدمات غير المدعومة، وفحص الاستحقاق (entitlement). لا يُنشئ شيئاً. لا تُعاد قيم الأسرار أبداً — فقط أسماء المفاتيح.

الرايةالوصف
--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.

الاستيرادات

يجب أن تكتمل عمليات الاستيراد قبل أن يفتح النشر التوجيه العام (public routing). استخدم 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>

يرفع ويُدرج في قائمة الانتظار تفريغ SQL مضغوط بصيغة gzip للاستيراد إلى قاعدة البيانات المُدارة.

الرايةالوصف
--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 إلى الحجم الدائم (persistent volume).

الرايةالوصف
--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

المهام المجدولة

المهام (Jobs) هي استدعاءات HTTP تُنفَّذ وفق جدول cron إلى نقطة نهاية (endpoint) داخل التطبيق. أنشئها معطّلة، وتحقق منها باستخدام 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مطلوباسم المهمة (job)
--scheduleمطلوبتعبير cron، مثال: */30 * * * *
--pathمطلوبمسار HTTP المراد استدعاؤه، مثال: /jobs/run
--methodاختياريطريقة HTTP. الافتراضي: POST
--secret-header-nameاختيارياسم الترويسة (header) لإرسال الرمز فيها، مثال: 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 لطبقة التحكم: إنشاء الحاويات (buckets) ومفاتيح الوصول والربطات. للقراءة والكتابة على الكائنات استخدم أي عميل متوافق مع 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مطلوباسم الحاوية (bucket) (فريد عالمياً ضمن المنصة)
--visibilityاختياريprivate أو public. الافتراضي: private

object-storage buckets usage

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

يُعيد إحصائيات استخدام التخزين الحالية للحاوية (bucket).

الرايةالوصف
--accountمطلوبمعرّف الحساب الفريد (UUID)
--bucketمطلوبمعرّف UUID للحاوية (bucket) من buckets list

object-storage buckets delete

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

يحذف الحاوية (bucket) وجميع الكائنات بداخلها نهائياً. هذه العملية لا رجعة فيها.

الرايةالوصف
--accountمطلوبمعرّف الحساب الفريد (UUID)
--bucketمطلوبمعرّف UUID للحاوية (bucket) من buckets list
--yesمطلوبالتأكيد الصريح مطلوب للعمليات المدمرة

object-storage access-keys create

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

ينشئ مفتاح وصول متوافقاً مع S3. يُعرض حقل secret_key في الاستجابة مرة واحدة ولا يُعاد أبداً بعد ذلك. انسخه قبل إغلاق الطرفية (terminal).

الرايةالوصف
--accountمطلوبمعرّف الحساب الفريد (UUID)
--bucketاختياريمعرّف UUID للحاوية (bucket) لتقييد المفتاح بها
--nameاختيارياسم ودود للمفتاح

object-storage access-keys rotate

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

يُولّد سراً جديداً لمفتاح الوصول مع الإبقاء على نفس معرّف المفتاح UUID ونطاق الحاوية. يُعاد secret_key الجديد مرة واحدة ولا يُعاد أبداً مرة أخرى. حدّث أي عملاء (clients) قبل التدوير في بيئة الإنتاج.

الرايةالوصف
--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>]

يربط حاوية (bucket) بتطبيق. تُحقن بيانات اعتماد S3 ونقطة النهاية (endpoint) كمتغيرات بيئة في عملية النشر التالية.

الرايةالوصف
--accountمطلوبمعرّف الحساب الفريد (UUID)
--appمطلوبمعرّف التطبيق الفريد (UUID)
--bucketمطلوبمعرّف UUID للحاوية (bucket)
--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 للربط (binding) من bindings list أو استجابة عرض التطبيق
--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 (افتراضي): ذلك الرابط فقط. prefix: المسار وكل ما تحته. variants: كل النسخ المخزّنة لمفتاح التخزين المؤقت.
--saveاختيارييحفظ المسارات أيضًا كعملية تفريغ يمكن إعادة تشغيلها من اللوحة.

purge all

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

يفرّغ كامل تخزين edge المؤقت للحساب؛ تذهب الطلبات التالية إلى خادمك الأصلي. يوضح 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.