آیا امکان اجرای Claude به صورت self-hosted وجود دارد؟
مدل Claude متنباز نیست و امکان اجرای آن روی سرور شخصی وجود ندارد. در این مطلب جایگزینهای متنباز، نحوه راهاندازی یک API Gateway و استقرار Claude Code روی سرور را بررسی میکنیم.
آیا میتوان Claude را به صورت self-host اجرا کرد؟ خیر، و دلیل آن اینجاست
شما نمیتوانید Claude را به صورت self-host اجرا کنید. شرکت Anthropic وزنهای (weights) مدل را منتشر نمیکند، بنابراین فایلی برای دانلود، کانتینری برای اجرا و مجوزی که به شما اجازه دهد آن را روی سختافزار خود میزبانی کنید، وجود ندارد. هر درخواست Claude به API شرکت Anthropic یا شرکای میزبانی آن مانند Amazon Bedrock، Google Vertex AI یا Microsoft Foundry ارسال میشود. اجرای آن روی دستگاهی که مالک آن هستید، یک مشکل پیکربندی نیست. این محصول اساساً خارج از زیرساخت Anthropic وجود خارجی ندارد.
این پاسخ کوتاه بود. پاسخ بلندتر این است که اکثر افرادی که این پرسش را مطرح میکنند، در واقع نیازی به وزنهای مدل ندارند. آنها به دنبال یکی از سه موردی هستند که همگی روی سروری که کنترل آن را در دست دارید، قابل دستیابی است: یک مدل توانمند که به صورت محلی اجرا شود، یک gateway که کلیدهای API آنها را مدیریت کرده و هزینهها را محدود کند، یا یک coding agent که به جای لپتاپ، روی سرور شخصی آنها مستقر باشد. این راهنما هر سه مورد را به همراه دستورات لازم پوشش میدهد.
معنای «Claude خودمیزبان» (self-hosted) چیست
ترافیک جستجو برای عبارت «self hosted Claude» به چند خواستهٔ متفاوت تقسیم میشود که هر کدام پاسخهای خاص خود را میطلبند.
برخی افراد به دنبال حریم خصوصی هستند. آنها نمیخواهند پرامپتهایشان از شبکهٔ داخلیشان خارج شود. تنها یک مدل متنباز (open weight) محلی این مشکل را حل میکند، زیرا هر درخواستی به Claude، طبق تعریف، ارسالی به Anthropic است.
برخی افراد به دنبال کنترل هزینه هستند. آنها نگران این هستند که یک ایجنت (agent) خارج از کنترل، تمام اعتبار (credit) آنها را مصرف کند. یک Gateway این مشکل را حل میکند و چون با Claude کار میکند، کیفیت مدل نیز حفظ میشود.
برخی افراد میخواهند از لپتاپ مستقل باشند. آنها ایجنتی میخواهند که هنگام بستن درِ لپتاپ همچنان به کار خود ادامه دهد. یک VPS این مشکل را حل میکند و Claude Code بهخوبی روی آن اجرا میشود.
برخی افراد به دنبال عبارت «self hosted OpenRouter» هستند. این مورد نیز یک Gateway است و پاسخ معمول برای آن LiteLLM است.
مشخص کنید که هدف شما کدام است، زیرا در هر مورد، ساختار فنی مناسب متفاوت خواهد بود.
میزبانی یک مدل متنباز با Ollama
اگر نیاز دارید که هیچ پرامپتی از سرور شما خارج نشود، یک مدل با وزنهای متنباز اجرا کنید. خانوادههایی که امروزه روی یک سرور اجارهای واقعاً قابل استفاده هستند عبارتند از Llama، Qwen، Mistral، Gemma و DeepSeek. تمامی این مدلها وزنهایی را منتشر میکنند که میتوانید دانلود و اجرا کنید.
Ollama سریعترین راه برای شروع است. اسکریپت نصب آن تکخطی است و یک سرویس systemd را روی Ubuntu راهاندازی میکند.
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollamasystemctl status ollama باید active (running) را چاپ کند. سپس یک مدل را pull کرده و با آن گفتگو کنید.
ollama pull qwen3:8b
ollama run qwen3:8b "Summarise what a reverse proxy does in two sentences."اولین pull چندین گیگابایت داده دانلود میکند، بنابراین مدل باید پیش از پاسخدهی در RAM یا حافظه GPU جا شود. یک قاعده کلی برای مدلهای quantised: یک مدل 8 میلیارد پارامتری به حدود 6 GB فضای آزاد نیاز دارد، یک مدل 14 میلیارد پارامتری حدود 10 GB، و یک مدل 70 میلیارد پارامتری به حافظهای بیش از آنچه اکثر طرحهای VPS عمومی ارائه میدهند، نیاز دارد. اگر سرور با کمبود حافظه مواجه شود، پردازش توسط kernel متوقف (kill) میشود و شما Error: llama runner process has terminated را مشاهده میکنید، که در dmesg خطای out of memory درج میشود. پیش از مقصر دانستن مدل، free -h را بررسی کنید. همان بودجه حافظه تعیین میکند که مدل چه مقدار از یک پرامپت طولانی را واقعاً میخواند، زیرا Ollama هر چیزی فراتر از یک پنجره پیشفرض متوسط را بهطور خودکار کوتاه (truncate) میکند؛ بنابراین افزایش num_ctx و تنظیم اندازه KV cache اولین چیزی است که باید هنگام ناقص بودن خلاصهسازی اسناد طولانی بررسی کنید.
Ollama همچنین یک HTTP API روی 127.0.0.1:11434 ارائه میدهد که آن را برای سایر نرمافزارها مفید میکند، نه اینکه فقط یک ابزار چت ساده باشد.
curl http://127.0.0.1:11434/api/generate -d '{"model":"qwen3:8b","prompt":"ping","stream":false}'اگر اولین درخواست پس از یک دوره سکوت، سی ثانیه طول میکشد اما درخواست بعدی بلافاصله پاسخ داده میشود، چیزی خراب نیست: Ollama مدل را پس از پنج دقیقه بیکاری از حافظه خارج میکند و نگه داشتن آن در حافظه با keep_alive آن جریمه بارگذاری مجدد را حذف میکند.
آن پورت را روی localhost محدود نگه دارید. باز بودن پورت Ollama روی یک IP عمومی، به معنای در اختیار قرار دادن رایگان GPU به هر کسی است که آن را پیدا کند. ساختار کامل، شامل unit مربوط به systemd، تشخیص GPU و قرار دادن یک reverse proxy در مقابل آن، در راهنمای اجرای Ollama روی VPS پوشش داده شده است. اگر به بیش از یک کاربر همزمان سرویس میدهید، ابتدا مقایسه Ollama و vLLM را بخوانید، زیرا طراحی تکجریانی (single stream) Ollama بسیار زودتر از سختافزار به گلوگاه تبدیل میشود.
در مورد شکاف عملکرد صادق باشید. یک مدل متنباز خوب روی یک VPS با اندازه متوسط، برای خلاصهسازی، طبقهبندی، پیشنویسنویسی و استخراج ساده واقعاً مفید است. در استدلالهای چندمرحلهای طولانی، روی کدهای بزرگ و استفاده از ابزارهای عاملی (agentic)، این مدلها به مدلهای پیشرفته میزبانیشده نزدیک نیستند و هیچ مقدار تنظیم پرامپت (prompt tuning) این شکاف را پر نمیکند. برای کارهایی که مدل محلی در آنها خوب عمل میکند از آن استفاده کنید و برای کارهای دشوار واقعی، هزینه مدلهای میزبانیشده را بپردازید.
اجرای gateway اختصاصی با LiteLLM
این همان «OpenRouter خودمیزبان» است که بسیاری به دنبال آن هستند. یک gateway بین برنامههای شما و تمامی ارائهدهندگان مدل قرار میگیرد. برنامههای شما تنها یک کلید دارند که به سرور شما اشاره میکند. کلیدهای واقعی ارائهدهندگان فقط روی همان سرور ذخیره میشوند. شما میتوانید سقف هزینه برای هر کلید تعیین کنید، برنامههای مختلف را به مدلهای متفاوت هدایت کنید و تمامی درخواستها را در یک نقطه ثبت و مانیتور کنید.
LiteLLM انتخاب رایجی است زیرا از API سازگار با OpenAI پشتیبانی میکند و درخواستها را به Anthropic، Ollama و اکثر ارائهدهندگان دیگر از طریق همان endpoint ارسال میکند. آن را در Docker با یک فایل پیکربندی اجرا کنید.
model_list:
- model_name: claude
litellm_params:
model: anthropic/claude-sonnet-5
api_key: os.environ/ANTHROPIC_API_KEY
- model_name: local
litellm_params:
model: ollama/qwen3:8b
api_base: http://127.0.0.1:11434آن را با نام litellm_config.yaml ذخیره کرده و proxy را اجرا کنید. این سرویس روی پورت 4000 گوش میدهد.
docker run -v $(pwd)/litellm_config.yaml:/app/config.yaml \
-e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY \
-e LITELLM_MASTER_KEY=sk-1234 \
-p 4000:4000 docker.litellm.ai/berriai/litellm:latest \
--config /app/config.yamlLITELLM_MASTER_KEY اعتبارنامه مدیریت است، بنابراین با آن مانند رمز عبور root رفتار کنید و مقدار نمونه را در محیط عملیاتی قرار ندهید. proxy را دقیقاً همانطور که یک API میزبانیشده را فراخوانی میکنید، صدا بزنید.
curl http://localhost:4000/v1/chat/completions \
-H 'Authorization: Bearer sk-1234' \
-H 'Content-Type: application/json' \
-d '{"model": "claude","messages": [{"role": "user","content": "Say hello in five words."}]}'پاسخ سالم، یک JSON استاندارد با آرایه choices است. خطای 401 به این معناست که هدر Authorization با کلید اصلی (master key) شما مطابقت ندارد. خطای 400 که نام مدل را ذکر میکند، به این معناست که model در درخواست شما با هیچکدام از model_nameهای موجود در فایل پیکربندی همخوانی ندارد.
دلیل ساخت این سیستم بهجای فراخوانی مستقیم Anthropic، کنترل سقف هزینه است. برای هر برنامه یک کلید مجازی جداگانه صادر کنید که هر کدام بودجه خاص خود را داشته باشد.
curl 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{"models": ["claude"], "max_budget": 100}'آن کلید میتواند تا سقف 100 دلار هزینه کند و فقط به یک مدل خاص دسترسی داشته باشد و نه هیچ چیز دیگر. هنگامی که یک عامل (agent) در ساعت 3 صبح دچار اختلال شود، دامنه آسیب فقط محدود به یک کلید است، نه کل حساب کاربری شما. این الگو، بهعلاوه مانیتورینگ پیرامون آن، موضوع کنترل هزینههای عامل روی VPS است. اگر هنوز در حال تصمیمگیری هستید که آیا پرداخت به ازای توکن بهصرفه است یا خیر، مقایسه هزینه API در برابر اشتراک محاسبات لازم را بررسی میکند.
توجه داشته باشید که این gateway چه کاری انجام نمیدهد. این ابزار Claude را محلی (local) نمیکند و پرامپتهای شما را از Anthropic پنهان نمیسازد. درخواستها همچنان سرور شما را به مقصد ارائهدهنده ترک میکنند. آنچه به دست میآورید، کنترل بر کلیدها، هزینهها، مسیریابی و لاگها است.
اجرای Claude Code روی VPS شخصی
برآورده کردن خواسته سوم از همه آسانتر است. Claude Code یک کلاینت است. این برنامه در هر جایی که Node.js نصب باشد اجرا میشود و از طریق HTTPS با API ارتباط برقرار میکند. اجرای آن روی سروری که مالکیتش با شماست، به این معنی است که عامل (agent) پس از بستن لپتاپ شما به کار خود ادامه میدهد و همچنین دامنه اثرگذاری (blast radius) آن محدود به محیطی است که میتوانید آن را بازسازی کنید، نه دستگاه اصلی شما.
npm install -g @anthropic-ai/claude-code
claude --versionآن را درون tmux اجرا کنید تا قطع شدن اتصال SSH باعث توقف کارهای طولانیمدت نشود. این پیکربندی، شامل مدیریت نشست (session)، در اجرای Claude Code روی VPS با استفاده از tmux توضیح داده شده است. برای عامل یک کاربر بدون دسترسیهای ویژه (unprivileged) بسازید و پیش از آنکه به آن دسترسی نوشتن روی فایلهای مهم خود بدهید، قوانین ایمنی برای اجرای Claude Code روی سرور را مطالعه کنید.
این کار به معنای میزبانی خودکار (self-hosting) عامل است، نه مدل. دقت در این مورد اهمیت دارد، زیرا این بخشی است که افراد اغلب با هم اشتباه میگیرند. شما مالک پردازش، سیستم فایل، خروجی شبکه و لاگها هستید. Anthropic همچنان مالک استنتاج (inference) باقی میماند.
هزینه واقعی هر گزینه
قیمتها تغییر میکنند، بنابراین به این ارقام به عنوان یک برآورد کلی نگاه کنید، نه یک پیشفاکتور قطعی. تا ژوئیه 2026، مدل Claude Sonnet 5 با قیمت 3 دلار به ازای هر میلیون توکن ورودی و 15 دلار به ازای هر میلیون توکن خروجی، و مدل Claude Opus 5 با قیمت 5 دلار و 25 دلار عرضه میشوند. یک مدل محلی (local) به ازای هر توکن هزینهای ندارد، اما هزینه آن معادل هزینه ماهانه سروری است که آن را اجرا میکند؛ هزینهای که چه از آن استفاده کنید و چه نکنید، پرداخت میشود.
نقطه سربهسر (break even point) پایینتر از آن چیزی است که تصور میکنید. یک VPS با حافظه کافی برای اجرای یک مدل متنباز کاربردی، هر ماه هزینه واقعی دارد و در بیشتر مواقع بلااستفاده میماند. اگر الگوی استفاده شما بهصورت انفجاری (bursty) است، استفاده از APIهای میزبانیشده معمولاً ارزانتر تمام میشود. اگر استفاده شما مداوم است یا دادههایتان نباید از شبکه خارج شوند، مدل محلی از هر دو جهت برتری دارد.
پاسخ صادقانه و ترکیبی، همان چیزی است که اکثر تیمها به آن میرسند: یک مدل متنباز را برای کارهای با حجم بالا و دشواری کم بهصورت محلی اجرا کنید. درخواستهای دشوار را به یک مدل پیشرو (frontier model) میزبانیشده ارسال کنید. یک gateway جلوی هر دو قرار دهید تا برنامهها نیازی به تشخیص تفاوت آنها نداشته باشند؛ با این کار میتوانید مرز بین آنها را بدون تغییر در کد برنامه جابهجا کنید. این معماری، نسخه عملی «Claude خودمیزبان» است و برخلاف نسخه تحتاللفظی، واقعاً وجود دارد. اگر میخواهید کل پشته (stack) عاملهای هوش مصنوعی را نیز خودتان اجرا کنید، مجموعه عاملهای هوش مصنوعی خودمیزبان آنچه را که در دسترس است پوشش میدهد.
FAQ
آیا میتوانم وزنهای مدل Claude را دانلود کرده و بهصورت محلی اجرا کنم؟
خیر. شرکت Anthropic هرگز وزنهای هیچکدام از مدلهای Claude را منتشر نکرده است و هیچ مجوزی برای self-hosting آنها وجود ندارد. هر چیزی که در اینترنت بهعنوان «مدل Claude» قابل دانلود تبلیغ میشود، یا یک مدل متفاوت با نامی گمراهکننده است و یا یک wrapper که از API استفاده میکند. اگر برای اجرا به API key نیاز دارد، پس محلی (local) نیست.
نزدیکترین مدل متنباز به Claude کدام است؟
هیچ تطابق دقیقی وجود ندارد و مدلهای پیشرو هر چند ماه یکبار تغییر میکنند. خانوادههای مدلهای با وزنهای باز (open weight) که ارزش تست کردن دارند عبارتند از Llama، Qwen، Mistral، Gemma و DeepSeek. برای خلاصهسازی، دستهبندی و ویرایشهای ساده کد، یک مدل متنباز خوب با 8 تا 14 میلیارد پارامتر واقعاً کاربردی است. در زمینه استدلالهای چندمرحلهای طولانی و استفاده از ابزارهای عاملی (agentic tool use)، فاصله با مدلهای frontier که بهصورت سرویس میزبانی میشوند، همچنان زیاد است. بهجای اعتماد به جدولهای ردهبندی (leaderboard)، مدلها را با promptهای خودتان تست کنید.
آیا LiteLLM یک نسخه self-hosted از OpenRouter است؟
از نظر عملکردی بله، برای بخش مسیریابی و مدیریت کلیدها. LiteLLM روی سرور شما اجرا میشود، یک endpoint سازگار با OpenAI ارائه میدهد و درخواستها را به Anthropic، Ollama و اکثر ارائهدهندگان دیگر پروکسی میکند. شما امکاناتی نظیر تعیین سقف هزینه برای هر کلید، مسیریابی مدل و یک نقطه متمرکز برای خواندن لاگها را در اختیار دارید. چیزی که این ابزار به شما نمیدهد، استنتاج محلی (local inference) است: درخواستهای ارسالی به Claude همچنان به سمت Anthropic ارسال میشوند.
آیا اجرای Claude Code روی سرور شخصی، کد من را خصوصی نگه میدارد؟
خیر. Claude Code محتوای فایلهایی را که میخواند به API شرکت Anthropic ارسال میکند، فارغ از اینکه این پردازش در کجا در حال اجرا باشد. آنچه یک VPS به شما میدهد، ایزولهسازی عامل (agent) است، نه حریم خصوصی محتوا. آن را با یک کاربر محدود (unprivileged) اجرا کنید، از دسترسی به اعتبارنامهها (credentials) و مخازن نامرتبط دور نگه دارید و فرض کنید هر چیزی که این ابزار میتواند بخواند، محتوایی است که از سرور شما خارج میشود.