SSD Nodes Learn
คู่มือ Matt Connorโดย Matt Connor · อัปเดตเมื่อ 2026-07-24

วิธีติดตั้ง OpenCode บน VPS อย่างปลอดภัย

เรียนรู้วิธีติดตั้ง OpenCode บน VPS โดยใช้ tmux และการรันผ่าน unprivileged user เพื่อความปลอดภัยสูงสุด พร้อมวิธีจัดเก็บ model API key ให้ปลอดภัยจากการเข้าถึง

OpenCode คืออะไร และสิ่งที่คุณกำลังจะติดตั้ง

OpenCode คือ AI coding agent แบบ open source ที่ออกแบบมาเพื่อใช้งานผ่าน terminal คุณสามารถเริ่มใช้งานได้ภายใน directory ของโปรเจกต์ โดยระบบจะอ่านโค้ด, เสนอการแก้ไข, แก้ไขไฟล์ และรันคำสั่งต่างๆ ผ่าน terminal user interface (TUI) โปรแกรมนี้ใช้ MIT license และเชื่อมต่อกับ model providers มากกว่า 75 ราย ด้วยจำนวน GitHub stars ประมาณ 165,000 stars ณ ช่วงกลางปี 2026 ทำให้ OpenCode เป็น coding agent แบบ open source ที่ได้รับความนิยมสูงสุด ปัจจัยสำคัญในการรัน OpenCode บน VPS คือการติดตั้งภายใต้ unprivileged user ที่แยกต่างหาก, การเก็บ model API key ไว้ในไฟล์ส่วนตัว และการรันผ่าน tmux เพื่อให้ session ยังคงทำงานอยู่แม้การเชื่อมต่อจะหลุดไป คู่มือนี้จะแนะนำขั้นตอนดังกล่าวตามลำดับ

ข้อควรระวังเรื่องชื่อเพื่อป้องกันความสับสน Repository หลักคือ anomalyco/opencode ซึ่งดูแลโดยทีม Anomaly (เดิมชื่อ SST) และเดิมโปรเจกต์นี้อยู่ที่ sst/opencode นอกจากนี้ยังมี repository เก่าที่ไม่เกี่ยวข้องชื่อ opencode-ai/opencode อยู่บน GitHub ดังนั้นโปรดตรวจสอบให้แน่ใจว่าคุณกำลังอ่านเอกสารของโปรเจกต์ที่ถูกต้อง เว็บไซต์อย่างเป็นทางการคือ opencode.ai

ทำไมต้องรัน OpenCode บน VPS

เซสชันของ coding agent ใช้เวลานาน OpenCode อาจใช้เวลาหลายนาทีในการทำ refactor หรือรัน test suite หากรันบน laptop การปิดฝาเครื่องหรือการเชื่อมต่อ Wi-Fi หลุดจะทำให้เซสชันหยุดทำงานทันที หากรันบน VPS ภายใน tmux agent จะยังคงทำงานต่อไปแม้คุณจะตัดการเชื่อมต่อแล้ว และคุณสามารถ reattach กลับมาเพื่อดูผลลัพธ์ในภายหลังได้ วิธีนี้เป็นรูปแบบเดียวกับ running Claude Code on a VPS with tmux และเป็นวิธีที่ช่วยเพิ่มความสะดวกในการใช้งานได้มากที่สุดเมื่อย้าย agent ออกจาก laptop ของคุณ

เหตุผลที่สองคือตำแหน่งที่ตั้ง VPS อยู่ใกล้กับโค้ดที่คุณ deploy: ทั้ง repository, build tools, test database และมักจะมี staging environment อยู่ในนั้นหรืออยู่ใกล้เคียงกัน agent ที่แก้ไขโค้ดและรัน test จะทำงานได้ดีที่สุดบนเครื่องที่ใช้รัน test เหล่านั้นจริงๆ และเนื่องจากเครื่องดังกล่าวเป็น server ที่คุณควบคุม คุณจึงสามารถกำหนดสภาพแวดล้อมที่จำกัดไว้ให้ agent ได้โดยเฉพาะ ซึ่งจะอธิบายในหัวข้อถัดไป

หากคุณยังอยู่ในระหว่างการเลือกเครื่องมือ running a coding AI agent on a VPS จะเปรียบเทียบเครื่องมือต่างๆ ในตลาด รวมถึง Aider และ Goose

ให้ OpenCode ใช้ user ของตนเอง

นี่คือข้อเท็จจริงเบื้องต้น: coding agent ทำหน้าที่แก้ไขไฟล์และรันคำสั่ง ซึ่งเป็นทั้งหน้าที่และความเสี่ยง OpenCode จะรันทั้งการ build, การ test และคำสั่ง shell อื่นๆ ตามความเหมาะสมของงาน แม้โมเดลจะตัดสินใจได้ดีแต่ก็ไม่สมบูรณ์แบบ สิทธิ์ของ account ที่ agent ใช้รันคือขอบเขตสูงสุดที่คำสั่งที่เป็นอันตรายจะเข้าถึงได้ ดังนั้น ห้ามรันด้วยสิทธิ์ root และห้ามรันด้วย user เดียวกับที่ใช้ดูแลระบบ server

OpenCode ทำงานแบบ interactive ต่างจาก background agent ดังนั้น user ของ OpenCode จึงจำเป็นต้องมี shell และ home directory:

sudo useradd --create-home --shell /bin/bash opencode
sudo -iu opencode

ควรเก็บโปรเจกต์ที่ต้องการให้ทำงานไว้ภายใต้ /home/opencode โดยให้ user นั้นเป็นผู้ clone โปรเจกต์มา ห้ามให้สิทธิ์ sudo แก่ account นี้ หาก agent รันคำสั่งที่สร้างความเสียหาย จะทำได้เพียงทำลายเฉพาะสิ่งที่ account นี้เป็นเจ้าของเท่านั้น ซึ่งเป็นหลักการเดียวกับ การรัน services ด้วย unprivileged user นอกจากนี้ ควรทำงานภายใน git repository เพราะ repository จะเปลี่ยนการแก้ไขที่ผิดพลาดให้เป็นเพียง git revert แทนที่จะเป็นการสูญเสียข้อมูล

Install OpenCode

โปรเจกต์นี้มีวิธีการติดตั้ง 2 รูปแบบ การใช้ install script เป็นวิธีที่รวดเร็วที่สุด การรันสคริปต์ด้วย user opencode จะทำให้ไฟล์ทั้งหมดถูกเก็บไว้ภายใน home directory ของ user นั้น:

curl -fsSL https://opencode.ai/install | bash

ควรปฏิบัติตามหลักการ curl | bash เช่นเดียวกับทุกที่: หากเป็น server ที่สำคัญ ให้ดาวน์โหลดสคริปต์ลงเครื่องก่อน จากนั้นอ่านรายละเอียด แล้วจึงรันสคริปต์ หลังจากติดตั้งเสร็จสิ้น ให้เปิด shell ใหม่เพื่อให้การเปลี่ยนแปลง PATH ที่เกิดจากการติดตั้งมีผล จากนั้นตรวจสอบความถูกต้องด้วยคำสั่ง:

opencode --version

หากต้องการใช้ package manager และมี Node.js ติดตั้งอยู่ในเครื่องแล้ว การใช้ npm จะเป็นการติดตั้งเครื่องมือเดียวกันนี้แบบ system-wide ซึ่งจะทำให้ binary opencode อยู่ใน PATH สำหรับทุก user:

sudo npm install -g opencode-ai

ทั้งสองวิธีมีขั้นตอนการตรวจสอบเหมือนกันคือ: opencode --version จะแสดงเลขเวอร์ชัน หากเกิด command not found หลังการติดตั้งด้วยสคริปต์ แสดงว่า shell ปัจจุบันยังไม่ได้อ่านค่า PATH ที่อัปเดตใหม่ ให้ทำการ log out และ log in ใหม่ในฐานะ user opencode

การเก็บ API key ไว้ในไฟล์ส่วนตัว

OpenCode จำเป็นต้องใช้ key สำหรับ model provider ที่คุณใช้งาน และ key นี้สามารถใช้ยอดเงินของคุณได้ ดังนั้นควรเก็บรักษาเสมือนเป็นรหัสผ่าน ให้สร้างไฟล์ที่อนุญาตให้เฉพาะ user opencode เท่านั้นที่อ่านได้ โดยใช้ mode 600 และเก็บ key ไว้ในไฟล์นั้น แทนการพิมพ์ลงใน command ซึ่งจะทำให้ key ปรากฏใน shell history:

install -m 600 /dev/null ~/opencode.env
nano ~/opencode.env

ใส่ตัวแปรของ provider ลงในไฟล์ เช่น ANTHROPIC_API_KEY=... หรือตัวแปรที่เทียบเท่าสำหรับ provider ของคุณ เนื่องจาก OpenCode จะเรียกใช้ standard provider environment variables ให้โหลดไฟล์นี้เข้าสู่ shell ก่อนเริ่มใช้งาน agent:

set -a; source ~/opencode.env; set +a

OpenCode มีทางเลือกแบบ interactive คือการใช้ command /connect ภายใน TUI ซึ่งจะแนะนำขั้นตอนการเพิ่ม provider และบันทึก credential ไว้ที่ ~/.local/share/opencode/auth.json ใน home directory ของ user หากคุณใช้วิธีนี้ ให้ตรวจสอบว่าไฟล์ถูกตั้งค่าเป็นแบบส่วนตัวด้วยคำสั่ง chmod 600 ~/.local/share/opencode/auth.json ทั้งสองวิธีจะช่วยป้องกันไม่ให้ key ปรากฏใน command line ให้เลือกใช้วิธีใดวิธีหนึ่งอย่างสม่ำเสมอ

เริ่มใช้งาน OpenCode ภายใน tmux

tmux คือเหตุผลสำคัญที่ทำให้การตั้งค่า VPS มีประสิทธิภาพ เนื่องจาก session ของ tmux จะยังคงทำงานต่อไปแม้การเชื่อมต่อ SSH จะสิ้นสุดลง ให้เริ่มใช้งาน tmux เข้าไปยังโฟลเดอร์โปรเจกต์ และเริ่มทำงาน agent:

tmux new -s opencode
cd ~/my-project
opencode

คุณจะเห็นหน้าจอ TUI ปรากฏขึ้นพร้อมช่องรับคำสั่งที่ด้านล่างและชื่อโปรเจกต์ในส่วนติดต่อผู้ใช้ ให้ป้อนคำสั่งที่ต้องการด้วยภาษาทั่วไป จากนั้น agent จะเริ่มอ่านไฟล์และเสนอการเปลี่ยนแปลง เมื่อต้องการออกจากโปรแกรม ให้กด Ctrl-b แล้วตามด้วย d เพื่อ detach session ซึ่งจะทำให้ agent ทำงานต่อไปแม้คุณจะปิด laptop แล้ว หากต้องการกลับมาใช้งานใหม่ภายหลัง ให้ใช้คำสั่ง:

tmux attach -t opencode

session, การสนทนา และงานที่กำลังดำเนินการอยู่จะยังคงอยู่ในสถานะเดิมทุกประการ ข้อมูลเหล่านี้จะยังคงอยู่แม้การเชื่อมต่อจะหลุด แต่จะไม่คงอยู่หากมีการ reboot server ดังนั้นหลังจาก reboot คุณต้องเริ่ม tmux session ใหม่ด้วยวิธีเดิม

การระบุโมเดล

OpenCode สามารถใช้งานร่วมกับผู้ให้บริการรายใดก็ได้ เนื่องจากใช้ AI SDK และแคตตาล็อก Models.dev เพื่อรองรับผู้ให้บริการมากกว่า 75 ราย เครื่องมือนี้จึงสามารถใช้งานร่วมกับ Anthropic, OpenAI, Google และรายอื่น ๆ อีกหลายสิบราย รวมถึงเซิร์ฟเวอร์ในเครื่อง วิธีที่รวดเร็วที่สุดคือการใช้คำสั่ง /connect ภายใน TUI เพื่อแสดงรายชื่อผู้ให้บริการและจัดการข้อมูลรับรอง (credential) สำหรับการตั้งค่าที่สามารถ commit และนำไปใช้ซ้ำได้ ให้ใส่ไฟล์ opencode.json ไว้ที่ root ของโปรเจกต์ และกำหนดโมเดลเป็น provider/model-id:

{
  "$schema": "https://opencode.ai/config.json",
  "model": "anthropic/claude-sonnet-4-20250514"
}

โมเดลในเครื่องสามารถใช้งานผ่านไฟล์เดียวกันได้ เนื่องจากเซิร์ฟเวอร์ที่รองรับมาตรฐาน OpenAI สามารถกำหนดเป็นผู้ให้บริการได้ หากคุณรันโมเดลด้วย Ollama บน VPS เครื่องเดียวกัน การตั้งค่าจะชี้ไปยัง local API และชื่อโมเดลจะเป็นชื่อเดียวกับที่ ollama list แสดงบนเครื่องของคุณ:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "ollama": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "Ollama (local)",
      "options": { "baseURL": "http://127.0.0.1:11434/v1" },
      "models": { "your-model-name": { "name": "Local coding model" } }
    }
  }
}

ควรเริ่มใช้งานฟีเจอร์หนึ่งที่มาพร้อมกับระบบตั้งแต่เริ่มต้น OpenCode มี agent สองรูปแบบที่สลับการใช้งานได้ด้วยปุ่ม Tab ได้แก่ Build ซึ่งเป็น agent เริ่มต้นที่มีสิทธิ์เข้าถึงเต็มรูปแบบ และ Plan ซึ่งจะปิดการแก้ไขไฟล์ แนะนำให้เริ่มงานใหม่ด้วยโหมด Plan เพื่อให้ agent อ่านโค้ดและเสนอแนวทางแก้ไข จากนั้นจึงสลับเป็นโหมด Build เมื่อคุณยอมรับแผนงานนั้นแล้ว การเริ่มด้วยโหมดอ่านอย่างเดียว (read-only) บนเซิร์ฟเวอร์จะช่วยป้องกันความผิดพลาดได้ดี

ขอบเขตความเสียหาย (Blast radius)

Coding agent ไม่ได้ทำงานแบบ passive ดังนั้นควรระบุให้ชัดเจนว่าการตั้งค่านี้ครอบคลุมถึงสิ่งใดและสิ่งใดบ้าง การตั้งค่านี้ครอบคลุมถึงการสร้างความเสียหายต่อไฟล์: ผู้ใช้ opencode จะเป็นเจ้าของเฉพาะ home directory ของตนเองเท่านั้น การแก้ไขหรือลบไฟล์จะถูกจำกัดอยู่เพียงในขอบเขตนั้น การตั้งค่านี้ครอบคลุมถึงความเสี่ยงจากการรั่วไหลของข้อมูลประจำตัว: key จะถูกเก็บไว้ในไฟล์เดียวที่มี mode 600 ภายใต้บัญชีเดียว การตั้งค่านี้ไม่ได้จำกัดสิทธิ์การทำงานตามปกติของบัญชีนั้น ดังนั้นหาก directory ของโปรเจกต์มีข้อมูลประจำตัวสำหรับการ deploy งานขึ้น production ตัว agent จะสามารถใช้งานข้อมูลเหล่านั้นได้ จึงควรแยกข้อมูลเหล่านั้นออกจากบัญชีของ agent โดยสิ้นเชิง

OpenCode ต่างจาก gateway agent อย่าง OpenClaw ตรงที่เป็นโปรแกรมเทอร์มินัลแบบ interactive ไม่ใช่ daemon โปรแกรมนี้ไม่มีการเปิด listening port และไม่มี service ที่ทำงานค้างไว้ จึงไม่มีความจำเป็นต้องเขียน systemd unit หรือตั้งค่า firewall สำหรับตัว agent เอง การจำกัดขอบเขตทำได้ผ่านบัญชีผู้ใช้และ directory ของโปรเจกต์ ซึ่งเป็นเหตุผลที่เนื้อหาส่วนแรกของคู่มือนี้มีความสำคัญที่สุด

อย่างไรก็ตาม ระบบที่ใช้งานยังคงต้องได้รับการดูแลตามมาตรฐาน เนื่องจาก VPS สำหรับเขียนโค้ดคือเซิร์ฟเวอร์สาธารณะ: ควรใช้ SSH แบบ key-only และปิดการ login ด้วย root ตามแนวทางใน SSH hardening on a VPS, ตั้งค่า firewall แบบ default-deny และทำการอัปเดตระบบอย่างสม่ำเสมอ นอกจากนี้ต้องตรวจสอบผลลัพธ์ที่ agent สร้างขึ้น ควรตรวจสอบ diff ก่อนทำการ push เหมือนกับการตรวจสอบ pull request จากผู้ร่วมพัฒนาคนใหม่ เนื่องจากคุณเป็นผู้ทำการ deploy ผลลัพธ์นั้น

สุดท้ายนี้ ควรหมั่นอัปเดตตัวเครื่องมือให้เป็นเวอร์ชันล่าสุดเสมอ OpenCode มีการออกเวอร์ชันใหม่อยู่บ่อยครั้ง และการอัปเดตจะมาพร้อมกับการแก้ไขปัญหาที่สำคัญสำหรับโปรแกรมที่รันคำสั่งบนเซิร์ฟเวอร์ของคุณ การอัปเดตใช้วิธีเดียวกับการติดตั้ง: รัน install script อีกครั้งในฐานะผู้ใช้ opencode หรือรัน sudo npm update -g opencode-ai หากติดตั้งผ่าน npm จากนั้นตรวจสอบเวอร์ชันใหม่ด้วย opencode --version การเสียเวลาบำรุงรักษาเพียงเล็กน้อยในบางครั้ง มีค่าใช้จ่ายน้อยกว่าการต้องมาไล่แก้ปัญหา (debug) พฤติกรรมที่เวอร์ชันเก่าแก้ไขไปแล้วเมื่อหลายเดือนก่อน

FAQ

OpenCode สามารถใช้ model ในเครื่องแทนการใช้ paid API ได้หรือไม่?

ได้ OpenCode รองรับ server ที่รองรับ OpenAI-compatible ทุกรูปแบบ ดังนั้นจึงสามารถใช้ model ที่รันผ่าน Ollama บน VPS เครื่องเดียวกันได้ โดยระบุ provider ใน opencode.json ด้วย local baseURL และชื่อ model ตามที่ Ollama ระบุ ข้อควรระวังคือเรื่อง hardware เนื่องจาก model ที่มีประสิทธิภาพเพียงพอสำหรับการเขียนโปรแกรมต้องใช้ memory จำนวนมาก ควรตรวจสอบขนาดของ server ให้เหมาะสมกับ model ก่อนทำการดาวน์โหลด

จะทำให้ OpenCode ทำงานต่อไปได้หรือไม่หลังจากปิด laptop?

ให้รัน OpenCode ภายใน tmux บน VPS เริ่มต้นการทำงานของ agent ใน session ที่ตั้งชื่อไว้ด้วย tmux new -s opencode จากนั้นกด Ctrl-b แล้วตามด้วย d เพื่อ detach session จะยังคงทำงานอยู่บน server แม้การเชื่อมต่อ SSH จะสิ้นสุดลง คุณสามารถ reattach ได้ทุกเมื่อด้วย tmux attach -t opencode โดยบทสนทนาและงานที่กำลังรันอยู่จะยังคงอยู่ครบถ้วน อย่างไรก็ตาม การ reboot server จะทำให้ session สิ้นสุดลง ดังนั้นต้องเริ่ม session ใหม่หลังจากการ reboot

การอนุญาตให้ OpenCode รัน command บน VPS มีความปลอดภัยหรือไม่?

สามารถจัดการได้หากมีการจำกัดสิทธิ์ ให้ใช้งาน OpenCode ผ่าน unprivileged user ที่ไม่มีสิทธิ์ sudo เก็บโปรเจกต์ไว้ใน git เพื่อให้สามารถย้อนกลับการแก้ไขได้ทุกครั้ง เก็บ API key ไว้ในไฟล์ที่มี mode 600 และใช้ Plan agent ในการตรวจสอบเบื้องต้นแบบ read-only ก่อนจะอนุญาตให้ Build agent ทำการแก้ไขใดๆ วิธีนี้จะทำให้ agent สามารถสร้างความเสียหายได้เฉพาะในส่วนที่ account ของตนเองเป็นเจ้าของเท่านั้น และส่วนที่เหลือของ server จะยังคงปลอดภัย

OpenCode กับ Claude Code ต่างกันอย่างไร?

OpenCode เป็น open source (MIT) และไม่ยึดติดกับผู้ให้บริการ (provider agnostic) โดยสามารถเชื่อมต่อกับ model provider มากกว่า 75 ราย รวมถึง model ในเครื่องผ่าน interface เดียวกัน ส่วน Claude Code เป็น terminal agent ของ Anthropic ที่สร้างขึ้นเพื่อใช้งานกับ model ของ Anthropic โดยเฉพาะ หากคุณต้องการเครื่องมือเดียวที่ใช้ได้กับหลาย provider หรือต้องการระบบแบบ self-hosted เต็มรูปแบบด้วย local model OpenCode คือคำตอบที่เหมาะสม ทั้งสองเครื่องมือสามารถรันบน VPS ภายใน tmux ด้วยการตั้งค่า unprivileged-user แบบเดียวกันได้ดี