آیا امکان اجرای 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 بین برنامههای شما و تمامی ارائهدهندگان مدل قرار میگیرد. برنامههای شما تنها یک کلید دارند که به سرور شما اشاره میکند. کلیدهای واقعی ارائهدهندگان فقط روی همان سرور ذخیره میشوند. شما میتوانید سقف هزینه برای هر کلید تعیین کنید، برنامههای مختلف را به مدلهای متفاوت هدایت کنید و تمامی درخواستها را در یک نقطه متمرکز ثبت (log) کنید.
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 ذخیره کنید و پروکسی را اجرا کنید. این سرویس روی پورت 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 رفتار کنید و مقدار نمونه را در محیط عملیاتی قرار ندهید. پروکسی را دقیقاً همانطور که یک 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) شما مطابقت ندارد. LiteLLM همچنین این خطا را برای کلید مجازی نامعتبر و کلید ارائهدهندهای که توسط خود ارائهدهنده رد شده است (مثلاً یک ANTHROPIC_API_KEY اشتباه) برمیگرداند؛ در این حالت نام ارائهدهنده در قالب <Provider>Exception در خطا درج میشود. خطای 400 که به مدل اشاره دارد، معمولاً به این معنی است که model در درخواست شما با هیچکدام از model_nameهای موجود در فایل پیکربندی مطابقت ندارد. LiteLLM همچنین در صورتی که طول درخواست برای پنجره کانتکست مدل بیش از حد باشد، خطای 400 را برمیگرداند؛ بنابراین پیش از ویرایش پیکربندی، پیام خطا را مطالعه کنید.
دلیل ساخت این سیستم بهجای فراخوانی مستقیم 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}'کلیدهای مجازی و بودجهها به یک پایگاه داده Postgres در پشت پروکسی نیاز دارند. نمونه docker run در بالا فاقد آن است، بنابراین ابتدا -e DATABASE_URL=postgresql://user:password@host:5432/litellm را به آن اضافه کنید. بدون پایگاه داده، این فراخوانی با خطای No connected db. مواجه میشود.
آن کلید میتواند تا سقف صد دلار هزینه کند و فقط به یک مدل دسترسی داشته باشد و نه هیچ چیز دیگر. وقتی یک عامل (agent) در ساعت سه صبح دچار اختلال میشود، دامنه آسیب محدود به یک کلید است، نه کل حساب کاربری شما. این الگو، به همراه مانیتورینگ پیرامون آن، موضوع کنترل هزینههای عاملها روی VPS است. اگر هنوز در حال تصمیمگیری هستید که آیا پرداخت به ازای توکن بهصرفه است یا خیر، مقایسه هزینه API در برابر اشتراک محاسبات لازم را بررسی میکند.
توجه داشته باشید که این Gateway چه کاری انجام نمیدهد. این ابزار Claude را محلی (local) نمیکند و درخواستهای شما را از Anthropic پنهان نمیسازد. درخواستها همچنان سرور شما را به مقصد ارائهدهنده ترک میکنند. آنچه به دست میآورید، کنترل بر کلیدها، هزینهها، مسیریابی و لاگها است.
اجرای Claude Code روی VPS شخصی
سومین خواسته، سادهترین مورد برای برآوردهشدن است. Claude Code یک کلاینت است. این ابزار بهصورت یک فایل باینری بومی (native) نصب میشود و از طریق HTTPS با API ارتباط برقرار میکند. قرار دادن آن روی سروری که مالکیتش با شماست، به این معناست که عامل (agent) پس از بستن لپتاپ شما همچنان به کار خود ادامه میدهد و محدودهٔ تأثیر (blast radius) آن، محیطی ایزوله است که میتوانید بهجای ماشین اصلی خود، آن را بازسازی کنید.
npm install -g @anthropic-ai/claude-code
claude --versionپکیج npm به Node.js نسخه 22 یا بالاتر نیاز دارد، اگرچه در نسخههای قدیمیتر Node.js، نصب فقط یک هشدار EBADENGINE نمایش میدهد و همچنان تکمیل میشود. نصبکننده بومی پیشنهادی Anthropic یعنی curl -fsSL https://claude.ai/install.sh | bash، اصلاً نیازی به Node.js ندارد. در هر صورت، فایل باینری نصبشده claude روی Node اجرا نمیشود. Anthropic حداقل 4 GB رم را پیشنهاد میدهد، بنابراین VPS خود را بر این اساس انتخاب کنید.
آن را داخل tmux اجرا کنید تا قطع شدن اتصال SSH باعث توقف کارهای طولانیمدت نشود. این تنظیمات، شامل مدیریت نشست (session)، در اجرای Claude Code روی VPS با tmux پوشش داده شده است. برای عامل یک کاربر بدون دسترسیهای ویژه (unprivileged) بسازید و پیش از آنکه به آن دسترسی نوشتن روی فایلهای مهم خود بدهید، قوانین ایمنی برای اجرای Claude Code روی سرور را مطالعه کنید.
این کار به معنای میزبانی خودِ عامل (self-hosting) است، نه مدل. دقت در این مورد اهمیت دارد، زیرا بخشی است که معمولاً با هم اشتباه گرفته میشود. شما مالک پردازش، سیستم فایل، خروجی شبکه و لاگها هستید. Anthropic همچنان مالک استنتاج (inference) است.
هزینه واقعی هر گزینه
قیمتها تغییر میکنند، بنابراین این ارقام را بهعنوان یک برآورد کلی در نظر بگیرید، نه یک قیمت قطعی. تا تاریخ 17 اکتبر 2026، مدل Claude Sonnet 5.5 با قیمت 2 دلار به ازای هر میلیون توکن ورودی و 10 دلار به ازای هر میلیون توکن خروجی، و مدل Claude Opus 5.5 با قیمت 4 دلار و 20 دلار لیست شدهاند. مدل Sonnet 5 که در پیکربندی gateway بالا استفاده شد، با Sonnet 5.5 جایگزین شده اما منسوخ نشده است: صفحه مدلهای منسوخشده Anthropic آن را در وضعیت Active قرار داده و بازنشستگی آن زودتر از 30 ژوئن 2027 نخواهد بود. هزینه آن همچنان همان 2 و 10 دلار است و Opus 5 نیز با قیمت 5 و 25 دلار لیست میشود. یک مدل محلی (local) به ازای هر توکن هزینهای ندارد، اما هزینه آن برابر با هزینه ماهانه سرور است که چه از آن استفاده کنید و چه نکنید، در حال اجراست.
نقطه سربهسر (break even) پایینتر از آن چیزی است که مردم تصور میکنند. یک VPS با حافظه کافی برای اجرای یک مدل متنباز مفید، هر ماه هزینه واقعی دارد و بیشتر اوقات بلااستفاده میماند. اگر استفاده شما بهصورت مقطعی (bursty) است، API میزبانیشده معمولاً ارزانتر است. اگر استفاده شما مداوم است، یا دادههای شما نباید از شبکه خارج شوند، مدل محلی از هر دو جهت برتری دارد.
پاسخ صادقانه و ترکیبی، همان چیزی است که اکثر تیمها به آن میرسند. یک مدل متنباز را برای کارهای با حجم بالا و دشواری کم بهصورت محلی اجرا کنید. درخواستهای دشوار را به یک مدل پیشرو (frontier model) میزبانیشده هدایت کنید. یک gateway جلوی هر دو قرار دهید تا برنامهها نیازی به دانستن تفاوت آنها نداشته باشند و بتوانید مرز بین آنها را بدون تغییر در کد برنامه جابهجا کنید. این معماری، نسخه عملی "Claude خودمیزبان" است و برخلاف نسخه تحتاللفظی، واقعاً وجود دارد. اگر میخواهید کل پشته عامل (agent stack) را نیز خودتان اجرا کنید، بررسی عوامل هوش مصنوعی خودمیزبان گزینههای موجود را پوشش میدهد.
FAQ
آیا میتوانم وزنهای مدل Claude را دانلود کرده و بهصورت محلی اجرا کنم؟
خیر. شرکت Anthropic هرگز وزنهای هیچکدام از مدلهای Claude را منتشر نکرده است و هیچ مجوزی برای میزبانی شخصی (self-hosting) آنها وجود ندارد. هر چیزی که بهصورت آنلاین بهعنوان «مدل Claude» قابل دانلود تبلیغ میشود، یا یک مدل متفاوت با نامی گمراهکننده است و یا یک واسط (wrapper) که از API استفاده میکند. اگر برای اجرا به API key نیاز دارید، آن مدل محلی نیست.
نزدیکترین مدل متنباز به Claude کدام است؟
هیچ تطابق دقیقی وجود ندارد و مدلهای پیشرو هر چند ماه یکبار تغییر میکنند. خانوادههای مدلهای با وزنهای آزاد که ارزش تست کردن دارند عبارتند از Llama، Qwen، Mistral، Gemma و DeepSeek. در زمینههای خلاصهسازی، دستهبندی و ویرایشهای ساده کد، یک مدل متنباز خوب با 8 تا 14 میلیارد پارامتر واقعاً کاربردی است. در استدلالهای طولانی چندمرحلهای و استفاده از ابزارهای عاملی (agentic tool use)، فاصله با مدلهای پیشروِ میزبانیشده همچنان زیاد است. بهجای اعتماد به جدولهای ردهبندی (leaderboard)، مدلها را با پرامپتهای خودتان آزمایش کنید.
آیا LiteLLM یک نسخه خود-میزبان (self-hosted) از OpenRouter است؟
از نظر عملکردی بله، در بخش مسیریابی و مدیریت کلیدها. LiteLLM روی سرور شما اجرا میشود، یک endpoint سازگار با OpenAI ارائه میدهد و درخواستها را به Anthropic، Ollama و اکثر ارائهدهندگان دیگر پروکسی میکند. با متصل کردن یک دیتابیس Postgres، امکان تعیین سقف هزینه برای هر کلید، مسیریابی مدل و یک نقطه متمرکز برای خواندن لاگها را خواهید داشت. چیزی که این ابزار به شما نمیدهد، استنتاج محلی (local inference) است: درخواستهای ارسالی به Claude همچنان به سمت Anthropic ارسال میشوند.
آیا اجرای Claude Code روی سرور شخصی، کد من را خصوصی نگه میدارد؟
خیر. Claude Code محتوای فایلهایی را که میخواند به API شرکت Anthropic ارسال میکند، فارغ از اینکه این پردازش در کجا در حال اجرا باشد. آنچه یک VPS به شما میدهد، ایزولهسازی عامل (agent) است، نه حریم خصوصی محتوا. آن را با یک کاربر اختصاصی و بدون دسترسیهای ویژه (unprivileged) اجرا کنید، آن را از اعتبارنامهها (credentials) و مخازن نامرتبط دور نگه دارید و فرض کنید هر چیزی که این ابزار میتواند بخواند، محتوایی است که از سرور شما خارج میشود.