Loading...

خط فرمان

مرجع 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

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

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

آخرین نسخهٔ منتشرشده برای پلتفرم شما را دانلود می‌کند، آن را در برابر چک‌سام‌های منتشرشده تأیید می‌کند و باینری را نصب می‌کند.

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 --email <email> --password <password> [--endpoint <url>]

احراز هویت می‌کند و توکن را در ~/.cdnctl/config.json ذخیره می‌کند. یک بار برای هر دستگاه استفاده کنید؛ توکن برای دستورهای بعدی مجدداً استفاده می‌شود.

فلگتوضیحات
--emailالزامیآدرس ایمیل حساب
--passwordالزامیرمز عبور حساب
--endpointاختیاریآدرس پایهٔ API. پیش‌فرض: https://cdn.com.tr

configure

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

اندپوینت یا توکن را بدون ورود (login) به‌صورت دستی تنظیم می‌کند. برای محیط‌های CI یا اتوماسیون مبتنی بر توکن مفید است.

فلگتوضیحات
--endpointاختیاریآدرس پایهٔ 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 آن را فراموش می‌کند.

دسترسی به فایل (آپلود و مدیریت فایل‌های شما)

فایل‌های سایت وردپرس مدیریت‌شدهٔ خود را مستقیماً از خط فرمان آپلود، لیست و حذف کنید — بدون نیاز به FTP و بدون محدودیت حجم آپلود. اگر با خطای 413 Request Entity Too Large مواجه شدید، به‌جای آپلود از طریق مرورگر از این روش استفاده کنید. مسیرها نسبت به wp-content سایت شما هستند، بنابراین می‌توانید به uploads/، plugins/، themes/ و مانند آن دسترسی داشته باشید. شما فقط فایل‌های حساب خودتان را می‌بینید.

Set your account once

cdnctl accounts use <uuid>

به این ترتیب دستورهای فایل در ادامه نیازی به --account در هر بار ندارند. (برای پیدا کردن uuid خود cdnctl accounts ls را اجرا کنید.)

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 recursively (structure is preserved):
cdnctl cp -r ./my-folder /uploads/my-folder

برای آپلود کل یک دایرکتوری، -r را اضافه کنید — ساختار پوشهٔ محلی در مقصد بازسازی می‌شود (پوشه‌های والد به‌طور خودکار ساخته می‌شوند؛ پوشه‌های خالی نادیده گرفته می‌شوند). آپلودها هرگز فایل موجود را بازنویسی نمی‌کنند مگر اینکه --force را اضافه کنید. همچنین می‌توانید به‌جای ذخیرهٔ حساب پیش‌فرض، حساب را به‌صورت درون‌خطی به‌شکل <uuid>:/uploads/photo.jpg بنویسید.

فلگتوضیحات
-rیک دایرکتوری را به‌صورت بازگشتی آپلود می‌کند.
--forceفایل‌های موجود را بازنویسی می‌کند.

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>]

یک رکورد اپ کانتینری جدید و اولین نسخه (revision) را ایجاد می‌کند. استقرار (deploy) انجام نمی‌شود — پس از ایجاد، deploy را اجرا کنید.

فلگتوضیحات
--accountالزامیUUID حساب
--nameالزامینام اپ (سازگار با slug)
--imageالزامیمسیر ایمیج کانتینر، مثلاً registry.example.com/acme/api
--tagاختیاریبرچسب (tag) ایمیج. پیش‌فرض: رشتهٔ خالی
--portاختیاریپورت کانتینر که اپ روی آن گوش می‌دهد. پیش‌فرض: 8080
--healthcheckاختیاریمسیر بررسی سلامت (health check) 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 مقادیر محرمانه (secrets). مقادیر رمزنگاری می‌شوند و پس از ایجاد هرگز بازگردانده نمی‌شوند.
--registry-credentialاختیاریUUID اعتبارنامهٔ رجیستری برای ایمیج‌های خصوصی
--persistent-mount-pathاختیاریمسیر مانت برای والیوم پایدار (persistent volume)، مثلاً /app/data
--persistent-storage-gbاختیاریاندازهٔ والیوم پایدار به گیگابایت
Secrets: مقادیر ارسال‌شده از طریق --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>

بدون ایجاد نسخهٔ جدید، یک ری‌استارت غلتان (rolling restart) برای همهٔ رپلیکاهای در حال اجرا انجام می‌دهد.

فلگتوضیحات
--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>

پیکربندی کامل اپ شامل لیست نسخه‌ها (revisions) را برمی‌گرداند. از UUIDهای نسخه در این خروجی همراه با rollback استفاده کنید.

فلگتوضیحات
--accountالزامیUUID حساب
--appالزامیUUID اپ

container apps rollback

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

یک نسخهٔ قبلی را دوباره مستقر می‌کند. برای لیست UUIDهای نسخهٔ موجود از show استفاده کنید.

فلگتوضیحات
--accountالزامیUUID حساب
--appالزامیUUID اپ
--revisionالزامیUUID نسخه (revision) برای بازگشت به آن (از خروجی 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 برسد یا زمان مهلت (timeout) به پایان برسد. در صورت موفقیت با کد 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 حساب

اعتبارنامه‌های رجیستری

اعتبارنامه‌های رجیستری در سطح حساب هستند و می‌توانند در چند اپ استفاده مجدد شوند. رمز عبور به‌صورت رمزنگاری‌شده ذخیره می‌شود و پس از ایجاد هرگز بازگردانده نمی‌شود.

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اختیاریآدرس رجیستری. پیش‌فرض: https://index.docker.io/v1/
--usernameاختیارینام کاربری رجیستری

container registry-credentials delete

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

یک اعتبارنامهٔ رجیستری را به‌طور دائمی حذف می‌کند. هر اپی که به این اعتبارنامه ارجاع دهد، در استقرار بعدی در دریافت (pull) ایمیج با شکست مواجه خواهد شد.

فلگتوضیحات
--accountالزامیUUID حساب
--credentialالزامیUUID اعتبارنامه از خروجی registry-credentials list
--yesالزامیبرای عملیات مخرب، تأیید صریح لازم است

افزونه‌های مدیریت‌شده

افزونه‌ها (add-on) به‌صورت خودکار ایجاد و به اپ متصل می‌شوند. اعتبارنامه‌ها به‌عنوان متغیرهای محیطی تزریق می‌شوند — نیازی به وارد کردن دستی هاست، پورت یا رمز عبور نیست. پس از فعال یا غیرفعال کردن یک افزونه، دستور deploy را اجرا کنید.

container addons list

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

همهٔ افزونه‌های (add-on) متصل به اپ در حال حاضر را لیست می‌کند.

فلگتوضیحات
--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اختیاریشمای (scheme) آدرس پایگاه‌داده برای متغیر 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 را غیرفعال می‌کند. برای حذف دائمی همهٔ داده‌های JetStream، --delete-data را ارسال کنید.

فلگتوضیحات
--accountالزامیUUID حساب
--appالزامیUUID اپ
--delete-dataاختیاریحذف دائمی همهٔ داده‌های JetStream مربوط به NATS

وارد کردن 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 (حداکثر ۲۵۶ کیلوبایت)

container compose apply

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

ایمپورت را اعمال می‌کند: اپ‌ها را به ترتیب وابستگی ایجاد می‌کند و افزونه‌های نگاشت‌شده را فعال می‌کند. به‌صورت همه‌یا‌هیچ — اگر نام هر اپی با اپ موجود تداخل داشته باشد، یا هر سرویسی پشتیبانی نشود (مثلاً از build: استفاده کند)، چیزی ایجاد نمی‌شود. پس از آن، هر اپ ایجادشده را با container apps deploy مستقر کنید.

فلگتوضیحات
--accountالزامیUUID حساب
--fileالزامیمسیر فایل compose (حداکثر ۲۵۶ کیلوبایت)
--yesالزامیایجاد منبع را تأیید می‌کند
در v1 پشتیبانی نمی‌شود: سرویس‌هایی که از build: استفاده می‌کنند (به‌جای آن یک ایمیج از قبل ساخته‌شده push کنید)، بازنویسی‌های command/entrypoint (در ایمیج بگنجانید)، env_file، secrets مبتنی بر فایل در compose، و بیش از یک mount پایدار به‌ازای هر سرویس. شماره‌های پورت سمت میزبان نادیده گرفته می‌شوند — انتشار عمومی از دامنه پلتفرم و جریان apps expose استفاده می‌کند.

وارد کردن‌ها

ایمپورت‌ها باید پیش از باز شدن مسیریابی عمومی توسط استقرار (deployment) کامل شوند. پس از پایان یک ایمپورت، برای پیگیری آمادگی از 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 را آپلود و در والیوم پایدار استخراج می‌کند.

فلگتوضیحات
--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الزامینام جاب (job)
--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

برای صفحهٔ کنترل (control plane) از cdnctl استفاده کنید: ایجاد باکت‌ها، کلیدهای دسترسی و اتصال‌ها (binding). برای خواندن و نوشتن آبجکت‌ها از هر کلاینت سازگار با S3 که به https://s3.cdn.com.tr اشاره می‌کند استفاده کنید. راهنمای Object Storage with 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 جدید فقط یک بار بازگردانده می‌شود و دیگر تکرار نمی‌شود. پیش از چرخش (rotate) در محیط پروداکشن، همهٔ کلاینت‌ها را به‌روزرسانی کنید.

فلگتوضیحات
--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 کلید دسترسی برای استفاده در این اتصال (binding)
--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 یا پاسخ app show
--yesالزامیبرای عملیات مخرب، تأیید صریح لازم است