یک شب با ChatGPT حرف زدی و آخرش یک صفحه معرفی برای کافهات، یک فرم ثبتنام یا یک ربات تلگرام نوبتدهی تحویل گرفتی. روی لپتاپ باز میشود و کار میکند. حالا میخواهی لینکش را برای مشتری بفرستی و همینجا گیر میکنی: کدی که در پنجره چت است چطور روی یک آدرس واقعی بالا بیاید؟ این راهنما همین مسیر را قدمبهقدم میرود و فرقی نمیکند پروژه ChatGPT داشته باشی یا کدی که Claude نوشته؛ مسیر یکی است.
فرض ما این است که برنامهنویس حرفهای نیستی. سه نوع رایج پروژه ChatGPT را از هم جدا میکنیم (سایت HTML، اپ کوچک Python یا Node.js، ربات تلگرام)، برای هر کدام سرویس مناسب را روی هاست ابری انتخاب میکنیم، فایلها را از مرورگر آپلود میکنیم، کلید API را از داخل کد بیرون میکشیم و آخر سر دامنه و SSL را وصل میکنیم. اگر برنامهنویسی و در ادیتور Cursor کار میکنی، آموزش دیپلوی پروژه Cursor روی هاست ابری مسیر Git و CI/CD را دقیقتر باز کرده است.

آنلاین کردن پروژه ChatGPT یعنی چه؟
هر پروژه ChatGPT یا Claude در عمل چند فایل متنی است: index.html، app.py، package.json و از این دست. روی لپتاپ، مرورگر این فایلها را از دیسک خودت میخواند یا برنامه روی localhost اجرا میشود و هیچکس دیگری به آن دسترسی ندارد. آنلاین کردن یعنی همین فایلها روی کامپیوتری قرار بگیرند که همیشه روشن است، به اینترنت وصل است و آدرس عمومی دارد.
برای این کار سه چیز لازم است: فایلها به سرویس میزبان منتقل شوند، سرویس بداند برنامه را با چه دستوری اجرا کند، و یک دامنه با HTTPS به آن اشاره کند. روی هاست ابری از نوع PaaS، نصب سیستمعامل، وبسرور و پکیجها با پلتفرم است و تو فقط با پنل کار میکنی. اگر میخواهی این مدل را با سرور مجازی مقایسه کنی، PaaS یا VPS؟ مقایسه هزینه، سرعت و نگهداری را بخوان.
پیشنمایشی که در Canvas یا Artifacts میبینی داخل خود سرویس چت اجرا میشود. حتی اگر لینک اشتراکگذاری بدهد، روی دامنه تو نیست، فرمش به دیتابیس تو وصل نمیشود و جای امنی برای کلید API ندارد. برای اینکه پروژه ChatGPT به سایت یا ربات واقعی تبدیل شود، باید کد را از چت بیرون بیاوری.
پروژه ChatGPT تو از کدام نوع است؟
قبل از ساختن هر سرویسی، فایلهای پروژه ChatGPT را باز کن؛ نوع پروژه از روی اسم فایلها معلوم میشود.

| نشانه در فایلها | نوع پروژه | سرویس مناسب در چابکان | اجرای دائمی لازم است؟ |
|---|---|---|---|
فقط index.html و چند فایل css و js |
سایت استاتیک (معرفی، رزومه، منوی کافه) | هاست ابری Static | نه؛ فقط فایل نمایش داده میشود |
app.py و requirements.txt |
اپ وب کوچک با Python (Flask یا FastAPI) | هاست Python، Flask یا FastAPI | بله |
package.json و server.js |
اپ وب کوچک با Node.js | هاست Node.js | بله |
bot.py و توکن ربات |
ربات تلگرام | هاست Python (یا Node.js اگر ربات با JavaScript است) | بله، ۲۴ ساعته |
| راهنمای نصب WordPress، Ghost یا n8n | نرمافزار آماده | برنامههای آماده | نصب را پلتفرم انجام میدهد |
ردیف آخر زیاد پیش میآید. از ChatGPT میخواهی «یک سایت خبری برایم بساز» و جواب، یک راهنمای دهمرحلهای نصب WordPress است. اینجا کدی برای آپلود نداری. برنامههای آماده چابکان همین نرمافزارها را، از WordPress و Ghost تا n8n و Strapi، بدون نصب دستی راه میاندازند.
اگر پروژه ChatGPT یا Claude تو یک فرانت React و یک API جدا دارد، هر بخش را یک سرویس جدا حساب کن.
از پنجره چت به یک پوشه مرتب
سرویس میزبان با فایل کار میکند. برای هر پروژه ChatGPT یک پوشه روی دسکتاپ بساز و هر بلوک کد را با همان اسمی که ChatGPT گفته ذخیره کن. اگر اسم فایل را نگفته، بپرس. ساختار یک اپ کوچک Flask معمولا این شکلی است:
my-app/
├── app.py
├── requirements.txt
├── .env.example
├── templates/
│ └── index.html
└── static/
└── style.css
سه چیز را چک کن. اول، فایل وابستگیها: requirements.txt برای Python و package.json برای Node.js. ChatGPT گاهی فقط میگوید «flask را نصب کن» و فایلی نمیسازد. طبق مستندات چابکان، برنامه Python بدون requirements.txt اجرا نمیشود و پکیجهای داخل آن با هر روشن شدن یا ریاستارت سرویس خودکار نصب میشوند. دوم، فایل اصلی برنامه و اسمش. سوم، هر جایی که کلید API یا توکن ربات مستقیم داخل کد نوشته شده.
یک پیام کوتاه به همان چت بیشتر این کارها را انجام میدهد: «فهرست کامل فایلهای پروژه را با مسیرشان بده، requirements.txt را بساز و هر کلید یا توکن را از متغیر محیطی بخوان.» همین پیام را در Claude هم میتوانی بفرستی.
موقع جمع کردن پروژه ChatGPT، پوشههای node_modules، venv و __pycache__ را آپلود نکن. چابکان طبق مستندش پروژه را خودش بیلد میکند و کتابخانهها را نصب میکند.
ساخت سرویس در پنل چابکان
در پنل از مسیر ساخت سرویس جدید ← هاست ابری، نوع سرویس را انتخاب کن. فهرست فعلی شامل Static (HTML)، Python، Flask، FastAPI، Django، Node.js، Express، Next.js، PHP، Laravel، Docker و چند گزینه دیگر است. برای یک پروژه ChatGPT معمولا یکی از Static، Python و خانوادهاش، یا Node.js کافی است. اگر ChatGPT یک Dockerfile هم داده و پروژه در هیچکدام از این قالبها جا نمیشود، سرویس Docker را امتحان کن.
موقعیت دیتاسنتر را هم همینجا انتخاب میکنی. چابکان موقعیت ایران و خارج، از جمله آلمان، دارد. برای سایتی که مخاطبش در ایران است دیتاسنتر ایران منطقی است. برای ربات تلگرام یا اپی که مستقیم به API شرکتهای خارجی مثل OpenAI وصل میشود، موقعیت خارج لازم است؛ دلیلش را در مثال ربات میگوییم.
بعد از ساخت، چند دقیقه صبر کن. طبق پرسشهای متداول چابکان، سرویس تازه معمولا حدود ۵ دقیقه بعد کامل بالا میآید و قبل از آن بخشهایی مثل مدیریت فایلها در دسترس نیستند.
بالا بردن فایلها: فایل منیجر، Git، CLI یا FTP
چابکان چهار روش استقرار دارد: فایل منیجر، Git، CLI و FTP. اگر اولین پروژه ChatGPT خودت را منتشر میکنی، این جدول انتخاب را ساده میکند:
| روش | مناسب برای | چه چیزی لازم داری | نکته |
|---|---|---|---|
| فایل منیجر در مرورگر | بار اول و پروژه کوچک | فقط فایل zip پروژه | فایلهای پیشفرض را پاک کن، zip را آپلود و Extract کن، سرویس را ریاستارت کن |
| Git از کنسول سرویس | وقتی کد روی GitHub یا GitLab است | آدرس مخزن | در کنسول سرویس clone میکنی و فایلها را به مسیر پیشفرض میآوری |
| CLI چابکان | بهروزرسانیهای مکرر | Node.js و npm روی لپتاپ | هر دیپلوی فایلهای قبلی را جایگزین میکند |
| FTP | پروژه بزرگتر از ۱۰۰ مگابایت | نرمافزاری مثل FileZilla | مشخصات FTP در داشبورد سرویس نمایش داده میشود |
شروع با فایل منیجر
- از داشبورد سرویس، منوی «مدیریت فایلها» را باز کن.
- محتوای دایرکتوری پیشفرض را که معمولا
appنام دارد و پروژه نمونه چابکان داخلش است پاک کن. - فایل zip پوشه پروژه ChatGPT را آپلود کن و از منوی بالای فایل منیجر Extract را بزن. دقت کن فایلها مستقیم داخل
appبنشینند، نه داخل یک پوشه اضافه مثلapp/my-app. - سرویس را یک بار ریاستارت کن تا چابکان پکیجها را نصب و پروژه را پیکربندی کند.
برای تغییرهای بعدی: CLI
اگر قرار است هر هفته نسخه تازهای از پروژه ChatGPT بگیری و دوباره آپلود کنی، CLI وقت کمتری میگیرد. CLI چابکان با npm نصب میشود و در پوشه پروژه اینطور کار میکند:
npm install -g @chabokan.net/cli
chabok -v
chabok login
cd my-app
chabok deploy
بعد از chabok deploy، CLI میپرسد روی کدام سرویس دیپلوی کند، فایلها را میفرستد و سرویس ریاستارت میشود. با هر دیپلوی از CLI فایلهای قبلی سرویس پاک و با فایلهای جدید جایگزین میشوند. اگر اپ تو فایل SQLite یا عکسهای آپلودی کاربران را کنار کد نگه میدارد، آن پوشه را در بخش مسیرهای دائمی معرفی کن تا در دیپلوی بعدی پاک نشود.
کلید API و توکن را از کد بیرون بکش
ChatGPT در نمونهکدها اغلب کلید را مستقیم داخل کد میگذارد تا مثالش همان لحظه کار کند؛ چیزی مثل OPENAI_API_KEY = "sk-..." یا توکن کامل ربات. اگر این فایل در یک مخزن عمومی GitHub برود یا کسی به سورس دسترسی پیدا کند، کلید لو رفته و صورتحساب مصرفش به نام توست.
راه درست متغیر محیطی است. کد فقط اسم متغیر را میداند و مقدار در پنل سرویس ذخیره میشود:
import os
# read secrets from environment variables, never hardcode them
api_key = os.environ["OPENAI_API_KEY"]
bot_token = os.environ.get("BOT_TOKEN")
معادلش در Node.js، process.env.OPENAI_API_KEY است. در چابکان از داشبورد سرویس وارد «تنظیمات» شو؛ در بخش متغیرهای محیطی با «افزودن متغیر» اسم و مقدار را وارد کن، یا اگر فایل .env داری با «آپلود فایل .env» یکجا بارگذاریاش کن. بعد از ذخیره، سرویس خودکار دوباره دیپلوی میشود و برنامه مقدار جدید را میخواند. جزئیات در مستند متغیرهای محیطی چابکان آمده است.
فایل .env واقعی را در Git نگذار. یک .env.example با اسم متغیرها و مقدار خالی کافی است تا یادت بماند برنامه چه چیزهایی لازم دارد.
سه مثال: سایت HTML، اپ Python یا Node.js، ربات تلگرام
۱. سایت تکصفحهای HTML
سادهترین نوع پروژه ChatGPT همین است. سرویس Static بساز، index.html را با پوشه css و عکسها در مسیر اصلی سرویس آپلود کن و ریاستارت بزن. اسم صفحه اول باید دقیقا index.html باشد؛ اگر ChatGPT اسمش را landing.html گذاشته، عوضش کن. مسیر عکسها را نسبی نگه دار، مثل images/logo.png، نه مسیری که با C:\Users شروع میشود. تنظیمات Nginx سرویس Static را چابکان خودش انجام میدهد و فقط اگر رفتار خاصی بخواهی، یک nginx.conf در ریشه پروژه میگذاری.
۲. اپ کوچک Python یا Node.js
برای Flask، چابکان برنامه را بهطور پیشفرض با gunicorn app:app اجرا میکند و برای FastAPI با uvicorn main:app. پس اگر فایل اصلی Flask تو app.py است و داخلش متغیری به اسم app داری، کاری لازم نیست. اگر اسم فایل فرق دارد، اسم ماژول را با یک متغیر محیطی معرفی کن:
# Flask app object "app" inside server.py
FLASK_MODULE=server:app
# FastAPI app object "app" inside api.py
FASTAPI_MODULE=api:app
برای Node.js، پلتفرم برنامه را با npm start اجرا میکند؛ پس در package.json اسکریپت start باید تعریف شده باشد. اگر دستور دیگری لازم داری، آن را در متغیر START_COMMAND بگذار.
{
"name": "my-ai-app",
"scripts": {
"start": "node server.js"
}
}
پورت را هم چک کن. هر سرویس چابکان یک پورت پیشفرض دارد. اگر ChatGPT در کد عددی مثل 3000 یا 5000 نوشته که با پورت سرویس یکی نیست، از بخش «پورتها» پورت پیشفرض را به عدد برنامهات تغییر بده. برنامه را هم روی 0.0.0.0 اجرا کن؛ اگر فقط روی 127.0.0.1 گوش بدهد، از بیرون دیده نمیشود.
۳. ربات تلگرام
رباتی که ChatGPT با کتابخانهای مثل python-telegram-bot یا aiogram نوشته، معمولا با روش polling کار میکند: خودش مدام از سرور تلگرام پیام تازه میگیرد و به دامنه یا پورت عمومی نیازی ندارد. فقط باید ۲۴ ساعته روشن بماند. روی هاست Python، چابکان فایل main.py را خودکار اجرا میکند؛ اگر اسم فایل ربات چیز دیگری است، یک start.sh در ریشه پروژه بگذار:
#!/bin/bash
python bot.py
توکن را در متغیر BOT_TOKEN بگذار و از کد حذفش کن. قبل از ساخت سرویس، موقعیت را دوباره چک کن: سرورهای تلگرام از داخل ایران فیلتر هستند، پس ربات روی دیتاسنتر ایران به api.telegram.org نمیرسد، و استفاده از تانل در کانتینرهای چابکان ممنوع است. سرویس ربات را روی موقعیت خارج از ایران بساز. هاست ربات تلگرام چابکان از Python، Node.js، Go و PHP پشتیبانی میکند.
اگر ربات با webhook نوشته شده، به یک آدرس HTTPS عمومی نیاز داری: اول دامنه و SSL را طبق بخش بعد وصل کن و بعد آدرس را به تلگرام معرفی کن. فرق polling و webhook را در Webhook چیست؟ توضیح دادهایم.
وصل کردن دامنه و SSL
بعضی سرویسهای چابکان دامنه پیشفرض دارند که برای تست کافی است؛ برای استفاده از آن یک بار احراز هویت حساب لازم است. برای آدرس اختصاصی:
- اگر دامنه نداری، دامنه ir یا بینالمللی را از بخش دامنه چابکان ثبت کن.
- در داشبورد سرویس به بخش «دامنهها» برو، «افزودن دامنه» را بزن و نام دامنه و سرویس را مشخص کن.
- در تنظیمات دامنه، اتصال از طریق DNS را انتخاب کن و رکوردهای NS نمایش دادهشده را در پنل ثبتکننده دامنه وارد کن.
- صبر کن تا وضعیت دامنه «متصل شد» شود. اعمال NS جدید ممکن است چند ساعت طول بکشد.
- در بخش تنظیمات Https، انتقال خودکار HTTP به HTTPS را روشن کن.
SSL روی سرویسهای چابکان رایگان است و خودکار تمدید میشود، پس لازم نیست گواهی بخری یا هر چند ماه دستی تمدیدش کنی. اگر مرورگر خطای گواهی داد، معمولا NS هنوز منتشر نشده یا رکوردی در جای دیگری تداخل دارد؛ عیبیابی کامل در چرا SSL نصب نمیشود؟ آمده است.
بعد از وصل شدن دامنه، هر آدرس مطلقی که در کد پروژه ChatGPT مانده، مثل http://localhost:5000 در درخواستهای جاوااسکریپت یا آدرس بازگشت درگاه پرداخت، را با دامنه جدید عوض کن و دوباره دیپلوی کن.
خطاهای رایج بعد از آنلاین کردن پروژه ChatGPT
اولین جایی که باید سر بزنی بخش «لاگها»ی سرویس است. چابکان خروجی stdout و stderr برنامه را آنجا نشان میدهد، هر ۵ ثانیه بهروزش میکند و فقط لاگ آخرین اجرا را نگه میدارد. متن خطا را کپی کن و به همان چت ChatGPT یا Claude بده؛ با متن خطای واقعی، جواب دقیقتری میگیری تا با توصیف «سایت باز نمیشود».
| نشانه | علت محتمل | چه کار کنی |
|---|---|---|
| خطای 502 در مرورگر | برنامه اجرا نشده یا روی پورت دیگری گوش میدهد | لاگ را بخوان و پورت و دستور اجرا را چک کن |
Not Found requirements.txt file in /app |
فایل وابستگیها نیست یا داخل زیرپوشه افتاده | requirements.txt را در ریشه app بگذار |
No module named 'app' |
اسم فایل اصلی Flask با پیشفرض فرق دارد | FLASK_MODULE را تنظیم کن |
| ریاستارت پشت سر هم | کمبود CPU یا RAM | گزارش مصرف را ببین و از «تغییر منابع و سررسید» منابع را بیشتر کن |
خطا در pip install یا npm install |
مشکل در دریافت پکیجها | گزینه Mirror چابکان را در تنظیمات سرویس غیرفعال کن و ذخیره بزن |
| دیتابیس SQLite یا فایلهای آپلودی بعد از دیپلوی پاک شد | دیپلوی CLI فایلها را جایگزین میکند | آن پوشه را در مسیرهای دائمی تعریف کن |
| ربات جواب نمیدهد | توکن اشتباه یا سرویس روی دیتاسنتر ایران | BOT_TOKEN و موقعیت سرویس را چک کن |
| خطای 401 از API هوش مصنوعی | کلید تنظیم نشده یا اسم متغیر با کد یکی نیست | اسم متغیر را در پنل و کد مقایسه کن |
برای خطای 502 جزئیات بیشتری در چرا Nginx خطای ۵۰۲ میدهد؟ هست. اگر سایت باز میشود ولی ظاهرش بههم ریخته، معمولا مسیر فایلهای css یا عکسها اشتباه است. در مرورگر F12 را بزن و در تب Network ببین کدام فایل خطای 404 میگیرد.
کی هاست ابری کافی نیست؟
برای صفحه معرفی، فرم، داشبورد کوچک، API ساده و ربات، هاست ابری مسیر کوتاهتری است، چون سیستمعامل، وبسرور و SSL را پلتفرم نگه میدارد. اگر برنامهات نرمافزار سیستمی خاص، دسترسی root یا چند سرویس وابسته با شبکه سفارشی میخواهد، سرور ابری انتخاب درستتری است. روی سرور ابری چابکان سیستمعامل لینوکس یا ویندوز را از پنل نصب میکنی و دسترسی کامل root داری، ولی بهروزرسانی و امنیتش با خودت است. اگر این کار برایت سنگین است، دستیار مدیریت سرور چابکان نصب Nginx، MySQL یا PostgreSQL و پایش منابع سرور را از پنل انجام میدهد.
وقتی پروژه ChatGPT از دموی یکنفره بزرگتر شد و کاربر واقعی پیدا کرد، کدی که مدل نوشته را بازبینی کن. وایب کدینگ چیست؟ توضیح میدهد کجای این روش به بررسی انسانی نیاز دارد.
شروع آنلاین کردن پروژه ChatGPT روی چابکان
چابکان به حسابهای جدید ۱۰۰ هزار تومان اعتبار رایگان میدهد و پرداخت ساعتی هم دارد. یعنی میتوانی یک سرویس Static یا Python بسازی، پروژه ChatGPT را بالا ببری، دامنه را تست کنی و اگر لازمش نداشتی، سرویس را حذف کنی. نوع سرویسها در هاست ابری چابکان، قیمتها در صفحه تعرفهها و جزئیات هر روش در مستندات استقرار آمده است.
اگر اپ تو خودش از مدلهای زبانی استفاده میکند و کلید OpenAI از ایران کار نمیکند، هوش مصنوعی ابری چابکان یک API سازگار با OpenAI دارد و به اندازه مصرف از اعتبارت کم میشود. در کدی که ChatGPT با کتابخانه OpenAI نوشته، معمولا فقط آدرس پایه (base_url)، کلید و نام مدل عوض میشود.
سوالات پرتکرار درباره آنلاین کردن پروژه ChatGPT
برای آنلاین کردن پروژه ChatGPT باید برنامهنویسی بلد باشم؟
برای سایت HTML نه. برای اپ Python یا Node.js و ربات لازم نیست کد را خودت بنویسی، ولی باید اسم فایلها را تشخیص بدهی، متغیر محیطی تعریف کنی و لاگ را بخوانی. بقیه را میتوانی با کپی کردن متن خطا از خود ChatGPT بپرسی.
بدون GitHub هم میشود پروژه ChatGPT را آپلود کرد؟
بله. فایل منیجر چابکان در مرورگر کار میکند؛ zip را آپلود و Extract میکنی و سرویس را ریاستارت میزنی. برای حجم بیش از ۱۰۰ مگابایت از FTP استفاده کن.
سایتی که Claude در Artifacts ساخته را چطور منتشر کنم؟
کد کامل را کپی کن، با نام index.html ذخیره کن و روی سرویس Static بگذار. اگر کد React است، از Claude بخواه نسخه build یا یک فایل HTML ساده بدهد، چون سرویس Static فایلهای آماده html، css و js را نمایش میدهد.
نگه داشتن یک ربات تلگرام چقدر هزینه دارد؟
به CPU و RAM انتخابی و دوره پرداخت بستگی دارد؛ قیمت بهروز را در صفحه تعرفهها ببین. طبق پرسشهای متداول چابکان، سرویسی که خاموش است یکسوم سرویس روشن هزینه دارد.
بعد از هر تغییر در کد پروژه ChatGPT چه کار کنم؟
فایلهای تغییرکرده را دوباره آپلود کن و سرویس را ریاستارت کن، یا در پوشه پروژه chabok deploy را بزن. تغییر متغیرهای محیطی بعد از ذخیره، خودش دیپلوی را تکرار میکند.