اپ Node شما، بدون دردسر سرور
اپ را شما نوشتهاید؛ بخش خستهکننده همه چیزهای پیرامون آن است — یک VPS که باید وصله شود، یک ریورسپروکسی که باید تنظیم شود، گواهیهایی که باید تمدید شوند، یک مدیر پردازه که زنده نگهش دارد، و یک CDN که بعداً باید وصل شود.
cdn.com.tr اپ Node.js شما را بهعنوان یک اپلیکیشن کانتینری مدیریتشده اجرا میکند. یک مخزن Git وصل میکنید و هر پوش، ایمیج تازهای میسازد و منتشر میکند. دامنه با HTTPS خودکار، هلثچک که کانتینر ازکارافتاده را دوباره بالا میآورد، لاگهایی که از پنل یا CLI میخوانید، و امکان کم و زیاد کردن رپلیکاها را دارید.
چون داخل کانتینر اجرا میشود، رانتایم همان است که شما میگویید: نسخه Node خودتان، پکیجمنیجر خودتان، مرحله بیلد خودتان. هیچ چیز پشت پیشفرضهای یک پنل هاستینگ پنهان نیست.
Next.js، NestJS، Express — هر چیزی که کانتینری شود
فهرست ویژهای از «فریمورکهای پشتیبانیشده» وجود ندارد، چون رانتایم تحمیلیای هم نیست که باید با آن سازگار باشید. اگر اپ شما در کانتینر ساخته میشود و روی یک پورت گوش میدهد، اینجا اجرا میشود.
این یعنی Next.js و Nuxt برای فرانت، NestJS یا Express یا Fastify برای API، و ورکرهای پسزمینهای که اصلاً HTTP سرو نمیکنند. مخزنی با چند سرویس — یک اپ وب، یک ورکر، یک صف — از یک فایل Docker Compose بهصورت چند اپلیکیشن کانتینری منتشر میشود.
کنترل جزئیاتی که معمولاً روی هاست اشتراکی خراب میشوند دست خودتان میماند: نسخه Node، ماژولهای نیتیو، محدودیت حافظه، و اینکه بیلد دقیقاً چطور اجرا شود.
دیپلوی از Git
مخزن را یکبار وصل کنید و شاخه را انتخاب کنید. هر پوش به آن شاخه ایمیج را میسازد و منتشر میکند. چیزی برای آپلود نیست، SSH لازم نیست، و سرور بیلدی هم ندارید که نگهداری کنید.
در مخزن به یک Dockerfile نیاز دارید — همان چیزی که بیلد را تعریف میکند. برای یک اپ Node فایل کوتاهی است و ضمناً دیپلوی را تکرارپذیر میکند: یک کامیت همیشه همان ایمیج را میسازد. نمونه زیر برای بیشتر پروژهها کافی است.
Dockerfile — a typical Node app
FROM node:22-alpine AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-alpine
WORKDIR /app
ENV NODE_ENV=production PORT=3000
COPY --from=build /app ./
EXPOSE 3000
CMD ["npm", "start"]
پایگاه داده، کش و ذخیرهسازی بدون سرویسدهنده اضافه
بیشتر اپهای Node به پایگاه داده و کش نیاز دارند. بهجای ثبتنام در جای دیگر و چسباندن دستی رشتههای اتصال، آنها را بهعنوان افزونه مدیریتشده فعال کنید تا اطلاعات اتصال برایتان به اپ تزریق شود.
Postgres، MySQL، Redis و NATS در دسترساند، بهعلاوه ذخیرهسازی شیء سازگار با S3 برای آپلودها و فایلهای ایستا — همان ذخیرهسازیای که CDN از آن سرویس میدهد، پس آپلودهای کاربران از لبه بیرون میروند نه از دل اپ شما.
یک پنل و یک صورتحساب: اپ، پایگاه داده، کش، ذخیرهسازی، DNS، CDN و WAF.
cdnctl — add-ons and deploy
cdnctl container addons enable-postgres --account <account_uuid> --app <app_uuid>
cdnctl container addons enable-redis --account <account_uuid> --app <app_uuid>
# object storage for uploads
cdnctl object-storage buckets create --account <account_uuid> --name uploads
# ship it
cdnctl container apps deploy --account <account_uuid> --app <app_uuid>
cdnctl container apps logs --account <account_uuid> --app <app_uuid> --tail 100
CDN از قبل در جلو است
این همان بخشی است که در حالت عادی باید جداگانه وصلش میکردید. اپ شما پشت همان شبکه لبهای قرار میگیرد که به مشتریان CDN ما سرویس میدهد: فایلهای ایستا و پاسخهای قابل کش از نزدیکترین لبه سرو میشوند، با فشردهسازی Brotli و تصاویر خودکار WebP/AVIF — پس پردازه Node شما وقتش را صرف فایلهایی که یکبار فرستاده نمیکند.
با ۴ نقطه حضور در ترکیه، کاربران ترکیه از لبهای داخل کشور سرویس میگیرند و شبکهای در ۱۴ کشور بقیه را سریع نگه میدارد. WAF، محافظت DDoS، فیلتر ربات و SSL خودکار روی همان لبهاند — شامل، نه در پلن بالاتر.
هنگام دیپلوی، کش را از همان CLI پاک کنید: `cdnctl purge --account <uuid> --path /assets/app.js`.
استیجینگ، بازگشت و قیمتگذاری صادقانه
دیپلوی به پروداکشن باید کسلکننده باشد. میتوانید یک نسخه preprod از اپ بسازید، روی آن دیپلوی کنید، بررسی کنید و بعد به پروداکشن ارتقا دهید — و اگر درست نبود ارتقا را برگردانید. هلثچکها کانتینری را که بالا میآید ولی سالم نمیشود میگیرند.
پلنها از ماهی ۹ دلار شروع میشوند و شامل CDN، WAF، محافظت DDoS و SSL خودکارند، بهعلاوه ۱۵ روز آزمایش. هر وقت خواستید لغو کنید و آزمایش را ادامه دهید، یا همان روز بازپرداخت بگیرید. صورتحساب به ارز محلی با فاکتور ترکیهای و پشتیبانی ۲۴/۷.
پرسشهای پرتکرار درباره هاستینگ Node.js
چه نسخههایی از Node.js پشتیبانی میشود؟
همانی که ایمیج شما استفاده میکند. رانتایم از Dockerfile شما میآید، پس نسخه Node را خودتان انتخاب و هر وقت خواستید ارتقا میدهید — منتظر نسخهای در سطح پلتفرم نمیمانید.
آیا باید Dockerfile بنویسم؟
بله، امروز مخزن به یک Dockerfile (یا Docker Compose با بخش build) نیاز دارد — همان چیزی که بیلد را تعریف میکند. برای یک اپ Node معمولی حدود ده خط است؛ نمونه بالا برای بیشتر پروژهها کار میکند و ضمناً دیپلوی را تکرارپذیر میکند.
میتوانم چند سرویس را از یک مخزن اجرا کنم؟
بله. یک فایل Docker Compose وارد کنید تا هر سرویس اپلیکیشن کانتینری خودش شود — اپ وب، ورکر پسزمینه، زمانبند. پایگاه داده و Redis داخل آن فایل هم بهجای کانتینرهایی که باید مراقبشان باشید، به افزونههای مدیریتشده تبدیل میشوند.
کارهای پسزمینه و cron چطور کار میکنند؟
ورکر فقط یک اپلیکیشن کانتینری دیگر بدون پورت HTTP است. برای کارهای زمانبندیشده jobs وجود دارد: یک عبارت cron که مسیری از اپ شما را صدا میزند، پس به پردازه زمانبند جداگانه نیاز ندارید.
CDN شامل است یا جدا؟
شامل. اپ شما از همان اولین دیپلوی پشت شبکه لبه ماست — کش، فشردهسازی، WebP/AVIF خودکار، WAF، محافظت DDoS و SSL، همه در همان پلن از ماهی ۹ دلار.