دسترسی به OpenAI از ایران با گیتوی روی دامنه خودتان
راهنمای عملی دسترسی به API OpenAI (ChatGPT) در ایران و میرور npm و PyPI با گیتوی nsin؛ تنظیم base URL، محدودیتها و نکات مهم.
اگر از ایران برنامهنویسی میکنید، شاید این موقعیت برایتان آشنا باشد: کد آماده است، کلید API هم دارید، اما درخواست به سرویس مقصد به نتیجه نمیرسد؛ یا npm install و pip install وسط راه گیر میکنند. این مقاله توضیح میدهد گیتوی nsin برای «دسترسی به OpenAI از ایران»، «API ChatGPT در ایران» (یعنی همان API شرکت OpenAI) و «میرور npm و PyPI» دقیقاً چه کاری انجام میدهد، چطور راهاندازی میشود و چه کارهایی از آن برنمیآید.
گیتوی چیست؟
گیتوی (Gateway) یک رکورد آماده روی دامنه خودتان است که به یک سرویس شخص ثالث اشاره میکند. شما از کاتالوگ، سرویس را انتخاب میکنید و nsin مقصد، هدر Host و TLS را خودش پر میکند. نتیجه یک هاستنام اختصاصی است، مثلاً ai.example.ir، که دقیقاً مثل سرویس پشت آن جواب میدهد.
طبق مستندات، سرویسهای کاتالوگ در این دستهها قرار میگیرند:
- هوش مصنوعی و LLM — OpenAI، Anthropic، Google Gemini، OpenRouter، DeepSeek، Groq، Mistral، xAI، Cohere و Hugging Face.
- پکیج و بیلد — npm، PyPI، uv، Docker Hub، Microsoft Container Registry، crates.io، Go modules، Maven، Gradle، NuGet و API گیتهاب.
- پیامرسان — Telegram، Discord، Slack و WhatsApp Business.
- کلاود و پلتفرم — Google APIs و OAuth، Firebase Cloud Messaging، Firestore، Supabase، Apple APNs، Twilio، SendGrid و Cloudflare API.
یعنی فقط بحث OpenAI نیست؛ برای هر سرویس فهرستشده در کاتالوگ، کافی است در کلاینت خودتان base URL، آدرس رجیستری یا هاست را با هاستنام گیتوی عوض کنید.
گیتوی چه کاری نمیکند؟
قبل از هر چیز صادق باشیم. مستندات nsin صریحاً هشدار میدهد: گیتویها وبسایت شخص ثالث را در مرورگر باز نمیکنند. آنها فقط برای endpointهای API و کلاینتهای پکیج ساخته شدهاند.
این یعنی:
- با گیتوی OpenAI نمیتوانید صفحه chatgpt.com را در مرورگر باز کنید.
- گیتوی VPN یا پروکسی مرورگر نیست.
- کارش تنها این است که کد و ابزارهای شما (SDK،
curl،npm،pip،docker) بهجای آدرس اصلی، به آدرس روی دامنه شما وصل شوند.
اگر هدف شما فراخوانی API یا نصب پکیج در بکاند، اسکریپت یا CI است، گیتوی برای همین کار ساخته شده است. اگر میخواهید سایتی را در مرورگر باز کنید، گیتوی ابزار مناسبی نیست.
راهاندازی در سه قدم
- دامنه را در پنل باز کنید و به بخش Gateways بروید.
- سرویس مورد نظر را با جستجو یا فیلتر پیدا کنید.
- دکمه Enable را بزنید. برای اولین گیتوی روی هر دامنه، پیش از فعالشدن باید یک اطلاعیه کوتاه از شرایط را بپذیرید.
nsin یک رکورد پروکسیشده با الگوی <service>-<5 digits>.<your-domain> میسازد و برایش گواهی صادر میکند. هر وقت خواستید میتوانید نامش را عوض یا آن را حذف کنید؛ با تغییر نام، هاستنام هم عوض میشود و باید تنظیمات کلاینتهایتان را بهروز کنید. پیشنیازها را هم فراموش نکنید:
- دامنه باید از DNS خود nsin استفاده کند. جزئیات در راهنمای نیمسرورها.
- پلن شما باید گیتوی را شامل شود. اگر کنار سرویس آیکن قفل میبینید، در پلن فعلی نیست؛ راهنمای پلنها را ببینید.
- هر گیتوی یک اسلات رکورد مصرف میکند، مثل هر رکورد دیگر.
اگر با DNS و رکوردها آشنا نیستید، راهنمای رکوردهای DNS مقدمات لازم را میدهد.
API ChatGPT در ایران: تغییر یک خط
بیشتر SDKها یک base URL میگیرند و تنها همین را باید عوض کنید. نمونه مستندات برای OpenAI در Node.js:
import OpenAI from 'openai';
const openai = new OpenAI({
baseURL: 'https://ai.example.ir/v1',
apiKey: process.env.OPENAI_API_KEY,
});
و برای Anthropic در پایتون:
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://claude-18830.example.ir",
api_key=os.environ["ANTHROPIC_API_KEY"],
)
هاستنامهای نمونه را با هاستنام گیتوی خودتان عوض کنید. پنل هم در دیالوگ How to use برای هر گیتوی خطوط دقیق را نشان میدهد.
استریم و پاسخهای کند
- پاسخهای
stream: trueتکهتکه و بدون بافر میرسند. - ارتقای WebSocket، مثلاً برای realtime و صدا، هم عبور میکند.
- لبه فقط برای رسیدن اولین بایت پاسخ از سرویس پشت گیتوی مهلت میگذارد و این مهلت پنج دقیقه است. وقتی استریم شروع شد، هر قدر بخواهد ادامه پیدا میکند.
- درخواست غیراستریم باید در همان پنج دقیقه تمام شود. اگر روی یک درخواست طولانی بدون
stream: trueخطای 504 دیدید، راهش روشن کردن استریم است.
نکته مهم درباره کلید API: کلید شما مثل حالت بدون گیتوی، داخل درخواست خودتان ارسال میشود. طبق مستندات، nsin کلیدها را ذخیره نمیکند و کلید خودش را اضافه نمیکند؛ شما همیشه با هویت خودتان احراز هویت میکنید و درخواستها در لاگ و آنالیتیکس خود شما دیده میشوند.
میرور npm و PyPI
«میرور» در این مقاله یعنی هاستنامی روی دامنه شما که درخواستهای رجیستری را به خود سرویس میرساند. رجیستریها بهجای base URL، آدرس registry یا index میگیرند.
برای npm:
npm config set registry https://npm-51074.example.ir/
یا برای هر پروژه، در فایل .npmrc کنار package.json:
registry=https://npm-51074.example.ir/
pnpm همین دستور را میپذیرد. در Yarn نسخه ۲ به بعد، مقدار npmRegistryServer را در فایل .yarnrc.yml تنظیم کنید.
برای pip، uv و Poetry، مسیر /simple/ را نگه دارید؛ این مسیر API ایندکس است، نه مسیر صفحه وب. نمونه برای pip:
pip config set global.index-url https://pypi-33915.example.ir/simple/
برای Docker هم هاستنام گیتوی پیشوند نام ایمیج میشود. ایمیجهای رسمی Docker Hub زیر library/ هستند و از طریق گیتوی باید آن را خودتان اضافه کنید:
docker pull docker-77228.example.ir/library/nginx:latest
یک نکته فنی جالب: رجیستریها اغلب به هاست دیگری ریدایرکت میکنند، مثلاً PyPI به files.pythonhosted.org یا Docker Hub به سرویس احراز هویت و CDN بلابهایش. یک پروکسی ساده اینجا میشکند. nsin این لینکها را به پیشوندی روی همان هاستنام گیتوی بازنویسی میکند و فهرست هاستهای مجاز همراه پریست (preset) هر سرویس آماده است؛ پس چیزی برای تنظیم اضافه نیست.
محدودیتهایی که باید بدانید
هیچ راهحلی بیقید و شرط نیست. این موارد در مستندات آمدهاند:
- سهمیه مصرف جدا از ترافیک سایت است. ترافیک گیتوی شمارندهای جدا با پنجره ۳۰ روزه غلتان دارد و دو معیار را میشمارد: تعداد درخواست و حجم داده بر حسب گیگابایت. سقف هر کدام را پلن شما تعیین میکند و صفحه Gateways نشان میدهد در چه وضعیتی هستید. اگر از سقف رد شوید، فقط هاستنامهای گیتوی از کار میافتند و بقیه دامنه سالم میماند؛ با غلتیدن پنجره، مصرف قدیمی کم میشود و گیتویها خودشان برمیگردند.
- آدرسهای خروجی مشترکاند. ترافیک گیتوی از آدرسهایی خارج میشود که با مشتریهای دیگر مشترک است و ممکن است عوض شود. ارائهدهنده سرویس ممکن است یک IP ناشناخته یا قبلاً علامتخورده را ببیند و حساب شما را محدود یا مسدود کند. برای همین nsin پیش از فعالشدن اولین گیتوی روی هر دامنه از شما میخواهد یک اطلاعیه کوتاه از شرایط را بپذیرید. اگر به یک هویت ثابت نیاز دارید، با ما تماس بگیرید.
- شما همچنان با هویت خودتان احراز هویت میکنید. گیتوی کلید یا حساب جایگزینی نمیدهد؛ درخواستها با کلید و حساب خودتان انجام میشوند.
- نام گیتوی نمیتواند wildcard یا خود دامنه اصلی (apex) باشد.
عیبیابی سریع
- همه چیز 403 میدهد و نوار سهمیه ۱۰۰٪ است: به سقف ۳۰ روزه رسیدهاید. صبر کنید یا پلن را تغییر دهید.
docker pullیاpip installوسط راه قطع میشود: مسیر را بررسی کنید؛library/برای ایمیجهای رسمی Docker Hub و/simple/برای PyPI. اگر باز هم قطع شد، دستور را برای nsin بفرستید؛ ممکن است پریست به یک هاست مجاز دیگر نیاز داشته باشد.- ارائهدهنده کلید را رد کرد یا حساب را قفل کرد: به بخش آدرسهای خروجی مشترک نگاه کنید.
- پیام «دامنه از DNS خارجی استفاده میکند»: چون گیتوی یک رکورد روی زون شماست، باید DNS دامنه را nsin اجرا کند.
جزئیات کامل در معرفی گیتویها و راهنمای استفاده از گیتوی آمده است. صفحه محصول هم در گیتویهای nsin است، و اگر برای سایت خودتان هم به لبه نیاز دارید، محصول CDN را ببینید.
پرسشهای متداول
آیا با گیتوی میتوانم chatgpt.com را در مرورگر باز کنم؟
خیر. گیتویها فقط endpoint API و کلاینتهای پکیج را سرویس میدهند و وبسایت شخص ثالث را در مرورگر باز نمیکنند.
کلید API من روی nsin ذخیره میشود؟
طبق مستندات، نه. کلید داخل درخواست خودتان ارسال میشود، nsin آن را ذخیره نمیکند و کلید خودش را اضافه نمیکند.
چرا گیتوی من ناگهان 403 میدهد؟
اگر نوار سهمیه در پنل ۱۰۰٪ است، به سقف مصرف پنجره ۳۰ روزه غلتان رسیدهاید، چه در تعداد درخواست و چه در حجم. فقط هاستنامهای گیتوی مسدود میشوند و با غلتیدن پنجره یا تغییر پلن برمیگردند.
آیا IP خروجی ثابت است؟
خیر. آدرسهای خروجی با مشتریهای دیگر مشترکاند و ممکن است تغییر کنند. اگر به هویت ثابت نیاز دارید، با nsin تماس بگیرید.
شروع کنید
دامنهتان را با DNS nsin در پنل nsin اضافه کنید، از بخش Gateways سرویس مورد نیاز را با دکمه Enable فعال کنید و base URL یا registry پروژه را عوض کنید. اگر پلن فعلی گیتوی را شامل نمیشود، بخش Billing یا Plans پنل نشان میدهد هر پلن چه چیزی دارد؛ توضیح بیشتر در راهنمای پلنها است.
