Self-host Claude ได้หรือไม่? สรุปคำตอบและทางเลือกแทน
Anthropic ไม่เปิดเผย model weights ทำให้ไม่สามารถ self-host Claude ได้โดยตรง บทความนี้อธิบายเหตุผลและแนะนำวิธีรัน Open Models, การใช้ API Gateway และ Claude Code บนเซิร์ฟเวอร์ของคุณเอง
คุณสามารถ self-host Claude ได้หรือไม่? คำตอบคือไม่ได้ และนี่คือเหตุผล
คุณไม่สามารถ self-host Claude ได้ เนื่องจาก Anthropic ไม่ได้เผยแพร่ model weights จึงไม่มีไฟล์ให้ดาวน์โหลด ไม่มี container ให้รัน และไม่มีใบอนุญาตใดที่อนุญาตให้คุณให้บริการโมเดลนี้จากฮาร์ดแวร์ของคุณเอง คำขอใช้งาน Claude ทุกรายการจะถูกส่งไปยัง API ของ Anthropic หรือผ่านพันธมิตรที่ให้บริการอย่าง Amazon Bedrock, Google Vertex AI หรือ Microsoft Foundry การรันโมเดลบนเครื่องของคุณเองไม่ใช่ปัญหาด้านการตั้งค่า แต่เป็นเพราะตัวโมเดลไม่มีอยู่จริงนอกเหนือจากระบบของ Anthropic
นั่นคือคำตอบโดยสรุป ส่วนคำตอบที่ละเอียดกว่าคือ คนส่วนใหญ่ที่ถามคำถามนี้ไม่ได้ต้องการ model weights จริงๆ แต่ต้องการสิ่งใดสิ่งหนึ่งใน 3 อย่างต่อไปนี้ ซึ่งทั้งหมดสามารถทำได้บนเซิร์ฟเวอร์ที่คุณควบคุม: การรันโมเดลที่มีประสิทธิภาพในเครื่อง, เกตเวย์สำหรับจัดการ API keys และจำกัดค่าใช้จ่าย หรือ coding agent ที่ทำงานบนเซิร์ฟเวอร์ของคุณแทนที่จะเป็นบนแล็ปท็อป คู่มือนี้จะครอบคลุมทั้ง 3 หัวข้อพร้อมคำสั่งที่เกี่ยวข้อง
ความหมายของ "self-hosted Claude" โดยทั่วไป
ปริมาณการค้นหาคำว่า "self hosted Claude" แบ่งออกเป็นความต้องการที่แตกต่างกันหลายประการ ซึ่งจำเป็นต้องได้รับคำตอบที่แตกต่างกันออกไป
บางคนต้องการความเป็นส่วนตัว โดยไม่ต้องการให้ prompt หลุดออกไปนอกเครือข่ายของตนเอง มีเพียงการใช้โมเดลแบบ open weight ที่รันภายในเครื่องเท่านั้นที่แก้ปัญหานี้ได้ เพราะคำขอใดๆ ที่ส่งไปยัง Claude ย่อมหมายถึงการส่งข้อมูลไปยัง Anthropic โดยนิยาม
บางคนต้องการควบคุมค่าใช้จ่าย เนื่องจากกังวลว่า agent ที่ทำงานผิดพลาดจะใช้เครดิตจนหมดสิ้น การใช้ gateway สามารถแก้ปัญหานี้ได้และยังใช้งานร่วมกับ Claude ได้ ทำให้คุณยังคงได้รับคุณภาพของโมเดลในระดับเดิม
บางคนต้องการความเป็นอิสระจากแล็ปท็อป โดยต้องการให้ agent ทำงานต่อไปได้แม้จะปิดฝาพับหน้าจอแล้ว การใช้ VPS สามารถแก้ปัญหานี้ได้และ Claude Code ก็สามารถรันบน VPS ได้อย่างไม่มีปัญหา
บางคนต้องการคำว่า "self hosted OpenRouter" ซึ่งนั่นก็คือ gateway เช่นกัน และคำตอบที่ใช้กันทั่วไปคือ LiteLLM
คุณควรพิจารณาว่าความต้องการของคุณคือข้อใด เพราะแนวทางการสร้างระบบที่เหมาะสมจะแตกต่างกันไปในแต่ละกรณี
การโฮสต์ Open Model ด้วยตัวเองโดยใช้ Ollama
หากข้อกำหนดคือห้ามไม่ให้ prompt ใดๆ ออกจากเซิร์ฟเวอร์ของคุณ ให้รัน open weight model ตระกูลโมเดลที่ใช้งานได้จริงบนเซิร์ฟเวอร์เช่าในปัจจุบัน ได้แก่ Llama, Qwen, Mistral, Gemma และ DeepSeek ซึ่งทั้งหมดมีการเผยแพร่ weight ให้คุณดาวน์โหลดและนำไปรันได้
Ollama เป็นวิธีที่รวดเร็วที่สุดในการเริ่มต้น สคริปต์ติดตั้งมีเพียงบรรทัดเดียวและจะตั้งค่า systemd service บน Ubuntu ให้โดยอัตโนมัติ
curl -fsSL https://ollama.com/install.sh | sh
systemctl status ollamasystemctl status ollama ควรแสดงผลลัพธ์เป็น active (running) จากนั้นให้ดึงโมเดลมาและเริ่มสนทนาได้เลย
ollama pull qwen3:8b
ollama run qwen3:8b "Summarise what a reverse proxy does in two sentences."คำสั่ง pull ครั้งแรกจะดาวน์โหลดข้อมูลขนาดหลายกิกะไบต์ ดังนั้นโมเดลต้องมีพื้นที่เพียงพอใน RAM หรือหน่วยความจำ GPU ก่อนที่จะตอบคำถามใดๆ ได้ กฎคร่าวๆ สำหรับโมเดลที่ทำ quantization คือ โมเดลขนาด 8 พันล้านพารามิเตอร์ต้องการพื้นที่ว่างประมาณ 6 GB, โมเดลขนาด 14 พันล้านพารามิเตอร์ต้องการประมาณ 10 GB และโมเดลขนาด 70 พันล้านพารามิเตอร์ต้องการหน่วยความจำมากกว่าที่ VPS ทั่วไปส่วนใหญ่จะมีให้ หากเซิร์ฟเวอร์มีหน่วยความจำไม่เพียงพอ กระบวนการจะถูก kernel สั่งยุติการทำงานและคุณจะพบ Error: llama runner process has terminated พร้อมข้อความ out of memory ใน dmesg ให้ตรวจสอบ free -h ก่อนที่จะสรุปว่าปัญหาเกิดจากตัวโมเดล งบประมาณหน่วยความจำเดียวกันนี้ยังเป็นตัวกำหนดว่าโมเดลจะอ่าน prompt ที่ยาวได้มากน้อยเพียงใด เนื่องจาก Ollama จะตัดข้อความส่วนที่เกินจากหน้าต่างบริบทเริ่มต้น (default window) ทิ้งไปโดยอัตโนมัติ ดังนั้น การเพิ่ม 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 บน public IP เท่ากับเป็นการเปิด GPU ให้ใครก็ตามที่พบใช้งานได้ฟรี การตั้งค่าแบบเต็มรูปแบบ รวมถึงการใช้ systemd unit, การตรวจจับ GPU และการวาง reverse proxy ไว้ด้านหน้า ได้อธิบายไว้ใน คู่มือการรัน Ollama บน VPS หากคุณกำลังให้บริการผู้ใช้มากกว่าหนึ่งคนในเวลาเดียวกัน โปรดอ่าน การเปรียบเทียบระหว่าง Ollama และ vLLM ก่อน เนื่องจากโครงสร้างแบบ single stream ของ Ollama จะกลายเป็นคอขวดก่อนที่ฮาร์ดแวร์จะถึงขีดจำกัด
จงยอมรับความแตกต่างตามความเป็นจริง Open model ที่มีคุณภาพบน VPS ขนาดกลางนั้นมีประโยชน์อย่างแท้จริงสำหรับการสรุปข้อมูล, การจัดหมวดหมู่, การร่างเอกสาร และการสกัดข้อมูลอย่างง่าย แต่สำหรับการใช้เหตุผลหลายขั้นตอนที่ซับซ้อน, การทำงานกับ codebase ขนาดใหญ่ และการใช้เครื่องมือแบบ agentic นั้น โมเดลเหล่านี้ยังห่างไกลจากโมเดลระดับแนวหน้าที่โฮสต์โดยผู้ให้บริการ และไม่มีการปรับแต่ง prompt ใดที่จะลดช่องว่างนั้นได้ ให้เลือกใช้ local model สำหรับงานที่เหมาะสม และจ่ายเงินใช้บริการโมเดลที่โฮสต์ไว้สำหรับงานที่มีความยากระดับสูงจริงเท่านั้น
ใช้งานเกตเวย์ของคุณเองด้วย LiteLLM
นี่คือสิ่งที่ผู้คนมักค้นหาในชื่อ "OpenRouter แบบ self-hosted" โดยเกตเวย์จะทำหน้าที่เป็นตัวกลางระหว่างแอปพลิเคชันของคุณกับผู้ให้บริการโมเดลทุกราย แอปของคุณจะถือเพียงคีย์เดียวที่ชี้มายังเซิร์ฟเวอร์ของคุณ ส่วนคีย์จริงของผู้ให้บริการจะถูกเก็บไว้ที่เซิร์ฟเวอร์นั้นเท่านั้น คุณสามารถจำกัดค่าใช้จ่ายต่อคีย์ กำหนดเส้นทางให้แอปต่างๆ ไปยังโมเดลที่แตกต่างกัน และบันทึกทุกคำขอไว้ในที่เดียว
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 ไม่ตรงกับมาสเตอร์คีย์ของคุณ หากได้รับ 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}'คีย์นั้นสามารถใช้จ่ายได้หนึ่งร้อยดอลลาร์และเข้าถึงได้เพียงโมเดลเดียวเท่านั้น เมื่อเอเจนต์ทำงานผิดพลาดในช่วงตีสาม ขอบเขตความเสียหายจะจำกัดอยู่เพียงแค่คีย์เดียว ไม่ใช่ทั้งบัญชีของคุณ รูปแบบดังกล่าวรวมถึงการตรวจสอบที่เกี่ยวข้อง เป็นหัวข้อของ การควบคุมค่าใช้จ่ายของเอเจนต์บน VPS หากคุณยังตัดสินใจไม่ได้ว่าจะจ่ายเงินตามจำนวนโทเค็นหรือไม่ การเปรียบเทียบต้นทุนระหว่าง API กับการสมัครสมาชิก จะช่วยให้คุณคำนวณตัวเลขได้ชัดเจนขึ้น
โปรดทราบว่าเกตเวย์นี้ไม่ได้ทำหน้าที่อะไรบ้าง มันไม่ได้ทำให้ Claude ทำงานแบบ local และไม่ได้ซ่อน prompt ของคุณจาก Anthropic คำขอยังคงถูกส่งออกจากเซิร์ฟเวอร์ของคุณไปยังผู้ให้บริการ สิ่งที่คุณได้รับคือการควบคุมคีย์, ค่าใช้จ่าย, การกำหนดเส้นทาง และบันทึกการใช้งาน
การรัน Claude Code บน VPS ของคุณเอง
ความปรารถนาข้อที่สามเป็นสิ่งที่ทำได้ง่ายที่สุด Claude Code เป็นไคลเอนต์ตัวหนึ่ง มันสามารถรันได้ทุกที่ที่คุณติดตั้ง Node.js และสื่อสารกับ API ผ่าน HTTPS การนำไปติดตั้งบนเซิร์ฟเวอร์ที่คุณเป็นเจ้าของหมายความว่าเอเจนต์จะยังคงทำงานต่อไปแม้คุณจะปิดแล็ปท็อปไปแล้ว และยังหมายความว่าขอบเขตความเสียหาย (blast radius) ของเอเจนต์จะถูกจำกัดอยู่ในสภาพแวดล้อมที่คุณสามารถสร้างใหม่ได้ แทนที่จะเป็นเครื่องหลักของคุณ
npm install -g @anthropic-ai/claude-code
claude --versionให้รันภายใน tmux เพื่อป้องกันไม่ให้งานที่ใช้เวลานานถูกยกเลิกหากการเชื่อมต่อ SSH หลุด การตั้งค่าดังกล่าวรวมถึงการจัดการเซสชันได้อธิบายไว้ใน การรัน Claude Code บน VPS ด้วย tmux ควรสร้างผู้ใช้ที่ไม่มีสิทธิ์พิเศษ (unprivileged user) ให้กับเอเจนต์ และอ่าน กฎความปลอดภัยสำหรับการรัน Claude Code บนเซิร์ฟเวอร์ ก่อนที่คุณจะอนุญาตให้มันเข้าถึงสิทธิ์การเขียนในสิ่งที่คุณให้ความสำคัญ
นี่คือการทำ self-hosting ตัวเอเจนต์ ไม่ใช่ตัวโมเดล การระบุให้ชัดเจนในเรื่องนี้เป็นสิ่งสำคัญ เพราะเป็นส่วนที่ผู้คนมักเข้าใจสับสน คุณเป็นเจ้าของกระบวนการ (process), ระบบไฟล์ (filesystem), การส่งข้อมูลออกผ่านเครือข่าย (network egress) และบันทึกการทำงาน (logs) แต่ Anthropic ยังคงเป็นเจ้าของกระบวนการประมวลผล (inference) อยู่เช่นเดิม
ต้นทุนที่แท้จริงของแต่ละตัวเลือก
ราคาอาจมีการเปลี่ยนแปลง ดังนั้นให้มองว่าตัวเลขเหล่านี้เป็นเพียงแนวทางไม่ใช่ใบเสนอราคา ณ เดือนกรกฎาคม 2026 Claude Sonnet 5 มีราคาอยู่ที่ 3 ดอลลาร์ต่อ 1 ล้าน input tokens และ 15 ดอลลาร์ต่อ 1 ล้าน output tokens ส่วน Claude Opus 5 อยู่ที่ 5 ดอลลาร์และ 25 ดอลลาร์ตามลำดับ สำหรับโมเดลที่รันในเครื่อง (local model) จะไม่มีค่าใช้จ่ายต่อ token แต่จะมีค่าใช้จ่ายเป็นค่าเช่าเซิร์ฟเวอร์รายเดือน ซึ่งต้องจ่ายไม่ว่าคุณจะใช้งานหรือไม่ก็ตาม
จุดคุ้มทุนนั้นต่ำกว่าที่หลายคนคาดไว้ VPS ที่มีหน่วยความจำเพียงพอสำหรับรันโมเดลแบบเปิด (open model) ที่มีประสิทธิภาพนั้นมีค่าใช้จ่ายรายเดือนจริง และมักจะไม่ได้ถูกใช้งานตลอดเวลา หากการใช้งานของคุณเป็นแบบมาเป็นช่วงๆ (bursty) การใช้ hosted API มักจะมีราคาถูกกว่า แต่หากการใช้งานของคุณมีความสม่ำเสมอ หรือข้อมูลของคุณไม่สามารถนำออกนอกเครือข่ายได้ การใช้โมเดลในเครื่องจะเป็นตัวเลือกที่เหนือกว่าในทั้งสองกรณี
คำตอบแบบผสมผสานที่ตรงไปตรงมาคือสิ่งที่ทีมส่วนใหญ่เลือกใช้ นั่นคือการรันโมเดลแบบเปิดในเครื่องสำหรับงานที่มีปริมาณมากแต่มีความซับซ้อนต่ำ แล้วส่งคำขอที่ยากไปยัง hosted frontier model โดยติดตั้ง gateway ไว้หน้าทั้งสองระบบ เพื่อให้แอปพลิเคชันไม่จำเป็นต้องทราบว่ากำลังใช้งานโมเดลใดอยู่ และเพื่อให้คุณสามารถปรับเปลี่ยนสัดส่วนการใช้งานระหว่างสองโมเดลได้โดยไม่ต้องแก้ไขโค้ดของแอปพลิเคชัน สถาปัตยกรรมนี้คือรูปแบบที่ใช้งานได้จริงของ "Claude ที่โฮสต์เอง" และต่างจากเวอร์ชันที่ทำตามตัวอักษรตรงที่สถาปัตยกรรมนี้มีอยู่จริง หากคุณต้องการรัน stack ของ agent ทั้งหมดด้วยตนเอง บทสรุปของ AI agents ที่โฮสต์เอง ได้รวบรวมข้อมูลสิ่งที่พร้อมใช้งานไว้ให้แล้ว
FAQ
ฉันสามารถดาวน์โหลด model weights ของ Claude มาใช้งานบนเครื่องตัวเองได้หรือไม่?
ไม่ได้ Anthropic ไม่เคยเผยแพร่ weights ของโมเดล Claude รุ่นใดเลย และไม่มีใบอนุญาตใดที่อนุญาตให้ทำ self-hosting ได้ สิ่งใดก็ตามที่โฆษณาออนไลน์ว่าเป็น "Claude model" ให้ดาวน์โหลด มักจะเป็นโมเดลอื่นที่ใช้ชื่อชวนให้เข้าใจผิด หรือเป็นเพียง wrapper ที่เรียกใช้งานผ่าน API เท่านั้น หากต้องใช้ API key แสดงว่านั่นไม่ใช่การรันแบบ local
โมเดลแบบเปิด (open model) รุ่นใดที่ใกล้เคียงกับ Claude มากที่สุด?
ไม่มีโมเดลใดที่เทียบเคียงได้โดยตรง และผู้นำในตลาดมีการเปลี่ยนแปลงทุกสองสามเดือน ตระกูลโมเดลแบบเปิดที่ควรทดสอบ ได้แก่ Llama, Qwen, Mistral, Gemma และ DeepSeek ในงานด้านการสรุปความ การจัดหมวดหมู่ และการแก้ไขโค้ดอย่างง่าย โมเดลแบบเปิดที่มีขนาด 8 ถึง 14 พันล้านพารามิเตอร์ถือว่าใช้งานได้จริง แต่ในงานที่ต้องใช้การคิดวิเคราะห์หลายขั้นตอนหรือการใช้เครื่องมือแบบ agent ช่องว่างระหว่างโมเดลเหล่านี้กับโมเดลระดับ frontier ที่ให้บริการผ่านคลาวด์ยังคงมีอยู่มาก ควรทดสอบด้วย prompt ของคุณเองแทนการเชื่อถือตารางจัดอันดับเพียงอย่างเดียว
LiteLLM คือ OpenRouter ที่ทำ self-hosted ใช่หรือไม่?
ในเชิงฟังก์ชันการทำงานถือว่าใช่ สำหรับส่วนของการทำ routing และการจัดการ key โดย LiteLLM จะรันบนเซิร์ฟเวอร์ของคุณ ทำหน้าที่เป็น endpoint ที่รองรับมาตรฐาน OpenAI และส่งคำขอต่อไปยัง Anthropic, Ollama รวมถึงผู้ให้บริการรายอื่นส่วนใหญ่ คุณจะได้รับฟีเจอร์การจำกัดค่าใช้จ่ายต่อ key, การทำ model routing และจุดศูนย์กลางในการอ่าน log สิ่งที่ LiteLLM ไม่ได้มอบให้คือการประมวลผลแบบ local เพราะคำขอที่ส่งถึง Claude ยังคงถูกส่งไปยัง Anthropic อยู่ดี
การรัน Claude Code บนเซิร์ฟเวอร์ของฉันเองช่วยรักษาความเป็นส่วนตัวของโค้ดหรือไม่?
ไม่ Claude Code จะส่งเนื้อหาไฟล์ที่มันอ่านไปยัง Anthropic API ไม่ว่ากระบวนการนั้นจะรันอยู่ที่ใดก็ตาม สิ่งที่ VPS มอบให้คุณคือการแยกส่วนการทำงานของ agent ไม่ใช่ความเป็นส่วนตัวของเนื้อหา ควรให้สิทธิ์การใช้งานแก่ agent ผ่าน user ที่ไม่มีสิทธิ์พิเศษ (unprivileged user) แยกต่างหาก เก็บให้ห่างจากข้อมูลรับรอง (credentials) และ repository อื่นที่ไม่เกี่ยวข้อง และให้ถือว่าทุกสิ่งที่ agent สามารถอ่านได้คือเนื้อหาที่ถูกส่งออกจากเซิร์ฟเวอร์ของคุณ