วิธีติดตั้ง Iva ผู้ช่วย AI บน Telegram ด้วยตนเองบน VPS
เรียนรู้วิธีติดตั้ง Iva ผู้ช่วย AI บน Telegram แบบ self-hosted บน VPS ขนาดเล็กโดยไม่ต้องเปิดพอร์ตหรือใช้โดเมน จัดการผ่าน systemd และเก็บข้อมูลในรูปแบบไฟล์ Markdown
สิ่งที่คุณกำลังสร้าง
Iva คือ AI ผู้ช่วยบน Telegram ที่คุณสามารถโฮสต์ได้ด้วยตนเอง และเป็นหนึ่งในไม่กี่บริการที่คุณสามารถติดตั้งใช้งานได้โดยไม่ต้องเปิดพอร์ตขาเข้าหรือชี้โดเมนมาที่เซิร์ฟเวอร์ อีกทั้งยังไม่ต้องใช้ใบรับรอง (certificate) เนื่องจากไม่มีส่วนใดในเครื่องที่เปิดรอรับการเชื่อมต่อจากสาธารณะ บริการนี้จะทำการเชื่อมต่อออกไปยัง Telegram ค้างไว้เพื่อรออ่านข้อความตอบกลับของคุณ ทุกกระบวนการทำงานที่เหลือจะเกิดขึ้นผ่านการเชื่อมต่อขาออกเพียงช่องทางเดียวนี้
Iva ใช้สัญญาอนุญาตแบบ MIT และเขียนด้วย Node โดยหน่วยความจำของมันคือโฟลเดอร์ที่เก็บไฟล์ Markdown ธรรมดา ซึ่งโปรแกรม Obsidian สามารถเปิดอ่านได้โดยตรง ทำให้บันทึกที่ AI จดจำเกี่ยวกับคุณยังคงอ่านได้แม้ไม่มีแอปพลิเคชันนี้ คู่มือนี้อ้างอิงเวอร์ชัน v0.3.13 ซึ่งเผยแพร่เมื่อวันที่ 6 สิงหาคม 2026 ปัจจุบัน repository ได้เปลี่ยนชื่อจาก smixs/iva เป็น smixs/iva-agent แล้ว และคำสั่งด้านล่างนี้จะใช้ชื่อใหม่ทั้งหมด
ซอฟต์แวร์ที่โฮสต์ด้วยตนเองส่วนใหญ่เริ่มต้นจากการตั้งค่า DNS (Domain Name System) และ ใบรับรอง Let's Encrypt ที่ออกโดย Certbot แต่ Iva ข้ามขั้นตอนเหล่านั้นไปโดยสิ้นเชิง นั่นคือเหตุผลที่ VPS ขนาดเล็กที่อยู่หลังไฟร์วอลล์ซึ่งอนุญาตเฉพาะ SSH ก็เพียงพอสำหรับการติดตั้งใช้งานที่สมบูรณ์แล้ว
เหตุผลที่ Iva ไม่จำเป็นต้องเปิดพอร์ต
iva-telegram-poll.service เป็นบริดจ์แบบ long polling โดยจะเรียกใช้ getUpdates API ของ Telegram และรอคำตอบ ดังนั้นการเชื่อมต่อทุกครั้งจะเริ่มต้นจากเซิร์ฟเวอร์ของคุณเอง Telegram ไม่เคยเชื่อมต่อกลับเข้ามา ซึ่งหมายความว่าไม่มี reverse proxy ให้ต้องตั้งค่าและไม่มีเรื่องการต่ออายุ certificate ที่ต้องคอยกังวล
ตัว agent เองมีการเปิดฟังการเชื่อมต่อที่พอร์ต 127.0.0.1 8723 เท่านั้น เอกสารประกอบของโปรเจกต์ระบุไว้อย่างชัดเจนว่า: ห้ามเปิดพอร์ต 8723 สู่สาธารณะ และ reverse proxy ใดๆ ที่คุณนำมาวางไว้ด้านหน้าจะต้องคงข้อกำหนดเรื่อง bearer token เอาไว้เสมอ ให้ตรวจสอบ bind address หลังจากติดตั้งเสร็จสิ้น
sudo ss -tlnp | grep 8723ที่อยู่ดังกล่าวจะต้องแสดงเป็น 127.0.0.1:8723 หากเป็นที่อยู่แบบ wildcard เช่น 0.0.0.0:8723 หมายความว่า HTTP routes ของ agent สามารถเข้าถึงได้จากอินเทอร์เน็ต และคุณควรแก้ไขปัญหานี้ก่อนที่จะส่งข้อมูลส่วนตัวใดๆ ให้กับบอท
ดังนั้นให้ปิด firewall ไว้ตามปกติ อย่าลืมอนุญาต SSH ก่อนที่จะเปิดใช้งาน firewall เพราะ ufw enable หากไม่มีกฎสำหรับ SSH จะทำให้เซสชันที่คุณกำลังใช้งานอยู่ถูกตัดการเชื่อมต่อทันที
sudo ufw allow OpenSSH
sudo ufw enable
sudo ufw statusสิ่งที่คำสั่งติดตั้งแบบบรรทัดเดียวทำจริง
หน้าแรกของโปรเจกต์ระบุคำสั่งหนึ่งบรรทัดที่ส่งสคริปต์จาก GitHub เข้าสู่ bash โดยตรง โปรดอ่านสคริปต์ดังกล่าวก่อนใช้งาน เพราะมันทำมากกว่าแค่การติดตั้งโปรแกรมเพียงตัวเดียว
curl -fsSL https://raw.githubusercontent.com/smixs/iva-agent/main/install.sh -o iva-install.sh
less iva-install.sh- ติดตั้งแพ็กเกจระบบด้วยตัวจัดการแพ็กเกจที่ตรวจพบ ได้แก่
git,gh,python3,ffmpeg,pandocและpoppler-utils - สร้าง swapfile ขนาด 2 GB ที่
/swapfileในกรณีที่เซิร์ฟเวอร์มี RAM ต่ำกว่า 1.5 GB และไม่มี swap อยู่เดิม เนื่องจากกระบวนการ build จะถูกสั่งยุติการทำงานหากไม่มีหน่วยความจำเพียงพอ - ติดตั้ง nvm จากนั้นติดตั้ง Node 24 ซึ่งเป็นเวอร์ชันขั้นต่ำที่ Iva ต้องการ
- ติดตั้ง
uvซึ่งเป็นตัวจัดการแพ็กเกจของ Python ลงใน~/.local/bin - โคลน repository ไปยัง
~/ivaและรันnpm ci - ติดตั้ง
agent-browserเป็น npm package แบบ global ซึ่งจะดาวน์โหลด Chromium และติดตั้ง Google Workspace CLI ที่ชื่อgwsไว้ที่~/.localโดยไม่ต้องใช้สิทธิ์ sudo - รันตัวช่วยตั้งค่า (setup wizard) ทำการ build โปรเจกต์ และสร้าง vault
- เขียนคำสั่ง
ivaลงใน~/.local/binและติดตั้ง systemd user units
นี่คือซอฟต์แวร์จำนวนมากที่ติดตั้งผ่านคำสั่งเพียงบรรทัดเดียว และยังอธิบายเหตุผลที่ README แนะนำให้ติดตั้งในฐานะผู้ใช้ทั่วไปแทนการใช้ root เนื่องจากเครื่องมือ shell ของ agent จะทำงานภายใต้สิทธิ์เดียวกับที่ใช้ในขณะติดตั้ง สคริปต์จะเรียกใช้ sudo เฉพาะขั้นตอนการติดตั้งแพ็กเกจและสร้าง swapfile เท่านั้น รวมถึงอาจเรียกใช้อีกครั้งในขั้นตอนของ Chromium ผ่านตัวช่วยที่รันคำสั่งโดยตรงในกรณีที่คุณเป็น root อยู่แล้ว
สร้างผู้ใช้เฉพาะสำหรับติดตั้ง
กำหนดบัญชีผู้ใช้แยกต่างหากสำหรับ Iva โดยเฉพาะ เนื่องจาก agent จะรันคำสั่ง shell บนโฮสต์ผ่าน child_process ของ Node โดยไม่มี container หรือ sandbox มาคั่น ดังนั้นบัญชีผู้ใช้ที่รันกระบวนการนี้จึงถือเป็นขอบเขตความปลอดภัยหลัก
sudo adduser --disabled-password --gecos "" iva
sudo usermod -aG sudo iva
sudo install -d -m 700 -o iva -g iva /home/iva/.ssh
sudo cp ~/.ssh/authorized_keys /home/iva/.ssh/authorized_keys
sudo chown iva:iva /home/iva/.ssh/authorized_keys
sudo chmod 600 /home/iva/.ssh/authorized_keys
sudo loginctl enable-linger ivaenable-linger มีความสำคัญเนื่องจาก Iva ทำงานในรูปแบบ systemd user units หากไม่มีการเปิดใช้งาน linger ระบบ systemd จะหยุดบริการของผู้ใช้นั้นทันทีที่ session สุดท้ายสิ้นสุดลง ส่งผลให้ผู้ช่วยหยุดทำงานเมื่อคุณปิดการเชื่อมต่อ SSH กฎเดียวกันนี้ยังใช้กับ บริการและตัวตั้งเวลาที่คุณเขียนขึ้นเองภายใต้ systemd
บัญชีผู้ใช้นี้จำเป็นต้องมีสิทธิ์ sudo เฉพาะในระหว่างที่ตัวติดตั้งเพิ่มแพ็กเกจเท่านั้น ให้เพิกถอนสิทธิ์ดังกล่าวออกเมื่อการติดตั้งเสร็จสิ้น
sudo deluser iva sudoให้ล็อกอินเข้าสู่ระบบด้วยบัญชีผู้ใช้นั้นโดยตรงผ่าน SSH การเข้าถึง shell ด้วยคำสั่ง sudo -iu iva จะไม่มีการตั้งค่า DBUS_SESSION_BUS_ADDRESS หรือ XDG_RUNTIME_DIR ไว้ ส่งผลให้คำสั่ง systemctl --user ทุกคำสั่งล้มเหลวด้วยข้อผิดพลาด Failed to connect to bus การกำหนดขอบเขตนี้เป็นแนวทางปฏิบัติเดียวกับการ รันบริการภายใต้ผู้ใช้ที่มีสิทธิ์จำกัด (least privilege)
ติดตั้งรุ่นที่ระบุเวอร์ชันแทนการ pipe ไปยัง bash
ตัวติดตั้งมีคุณสมบัติที่เป็นประโยชน์ ก่อนที่มันจะทำการ clone ข้อมูลใดๆ มันจะตรวจสอบว่าไดเรกทอรีที่สคริปต์วางอยู่มี package.json ที่บรรจุ "eve" อยู่หรือไม่ หากมี มันจะทำการ build จาก checkout นั้นและข้ามขั้นตอนการ clone ไป ดังนั้นคุณจึงสามารถเลือกเวอร์ชันได้ด้วยตนเอง
git clone --branch v0.3.13 https://github.com/smixs/iva-agent.git ~/iva
cd ~/iva
git log -1 --oneline
bash install.shตอนนี้คุณทราบแล้วว่าโค้ดใดกำลังทำงานอยู่ คุณจะไม่ทราบข้อมูลนี้หากสคริปต์ทำการ clone main ในสถานะใดก็ตามที่เป็นอยู่ในขณะนั้น Iva ได้ปล่อย release ออกมา 5 รุ่นระหว่างวันที่ 4 ถึง 6 สิงหาคม 2026 ดังนั้น main ในเช้านี้และ main ในช่วงบ่ายจึงไม่ใช่โปรแกรมเดียวกัน
การ checkout ด้วย tag จะทำให้ git อยู่ในสถานะ detached HEAD ซึ่งสามารถทำงานได้ตามปกติ แต่ต้องเข้าใจข้อจำกัดว่า iva update จะเลื่อน checkout ไปข้างหน้าบน update branch ดังนั้นการ pin จึงเป็นเพียงจุดเริ่มต้นที่ทราบค่า ไม่ใช่การแช่แข็งเวอร์ชันถาวร iva version จะแสดงเวอร์ชันของแพ็กเกจและ git commit ออกมา เพื่อให้คุณตรวจสอบได้เสมอว่าคุณอยู่ที่จุดใด
หากต้องการเปลี่ยนไปใช้ release ที่ใหม่กว่าโดยเจตนา ให้แสดงรายการ tag ออกมา ทำการ checkout tag ที่คุณเลือกแทนที่ v0.3.13 ด้านล่าง จากนั้นเรียกใช้ตัวติดตั้งจากภายใน checkout นั้นอีกครั้ง ตัวตัวติดตั้งเองไม่มีการตั้งค่าสำหรับ release tag โดย environment variable ที่ระบุไว้ในเอกสารคือ REPO_URL, BRANCH และ INSTALL_DIR ดังนั้นการ git checkout จึงเป็นวิธีเดียวที่ใช้ในการ pin เวอร์ชัน
cd ~/iva
git fetch --tags
git tag --list 'v*' | sort -V | tail -5
git checkout v0.3.13
bash install.sh --skip-setup
iva restart--skip-setup จะหยุดไม่ให้ wizard ทำงานซ้ำบน .env ที่ทำงานได้อยู่แล้ว ให้รัน iva version หลังจากนั้นเพื่อยืนยัน commit ที่คุณใช้งานอยู่
ขั้นตอนวิซาร์ด 5 ขั้นตอน และคีย์ที่จำเป็นต้องใช้
- ผู้ให้บริการโมเดลและตัวโมเดล
MODEL_PROVIDERรองรับopencode,ollama,openrouterหรือcodexวิซาร์ดจะตรวจสอบคีย์แบบเรียลไทม์และแสดงรายการโมเดลที่มีให้ใช้งานตามแผนของคุณ - เสียงและการค้นหา คีย์ Deepgram ใช้สำหรับถอดความบันทึกเสียง ส่วนคีย์สำหรับการค้นหาเว็บ (Tavily, Exa, Parallel หรือ Brave) เป็นตัวเลือกเสริม
- Telegram bot token จาก @BotFather ซึ่งจะถูกตรวจสอบกับ endpoint
getMe - การควบคุมการเข้าถึง คุณส่งข้อความหาบอทของคุณ แล้ววิซาร์ดจะอ่านตัวเลข user ID ของคุณจาก
getUpdates - การตั้งค่าระบบ เขตเวลา IANA, ไดเรกทอรี vault และพอร์ตภายในเครื่อง โดยค่าเริ่มต้นคือ 8723
สองขั้นตอนข้างต้นเป็น dependency ที่ถูกซ่อนไว้ภายใต้แนวคิด "คำสั่งเดียวจบ" เนื่องจาก Iva ไม่ได้มาพร้อมกับโมเดลในตัว จึงจำเป็นต้องมีแผนการใช้งานโมเดลแบบชำระเงินหรือ API key ก่อนจึงจะสามารถตอบโต้ได้ นอกจากนี้ตัวมันเองยังไม่สามารถถอดความเสียงได้ ดังนั้นบันทึกเสียงจึงต้องอาศัยบริการแยกต่างหาก โมเดล nova-3 ของ Deepgram ที่ใช้ร่วมกับ DEEPGRAM_LANGUAGE=multi สามารถตรวจจับภาษาได้ และบัญชี Deepgram ใหม่จะได้รับเครดิตเริ่มต้นซึ่งเพียงพอสำหรับการใช้งานส่วนตัวนานหลายเดือน การใช้งานข้อความสามารถทำได้ด้วยคีย์โมเดลเพียงอย่างเดียว มีเพียงฟังก์ชันเสียงเท่านั้นที่ต้องพึ่งพา Deepgram
ตรวจสอบสิ่งที่วิซาร์ดบันทึกไว้
grep -E '^(MODEL_PROVIDER|TELEGRAM_ALLOWED_USER_IDS|ASSISTANT_VAULT_DIR|IVA_PORT)=' ~/iva/.env
ls -l ~/iva/.envls ควรแสดงผลเป็น -rw------- ที่โหมด 0600 เนื่องจากไฟล์นั้นเก็บคีย์ทั้งหมดที่คุณเพิ่งกรอกลงไป TELEGRAM_ALLOWED_USER_IDS ต้องเก็บตัวเลข ID ของคุณไว้ รายการอนุญาต (allowlist) จะถูกปิดกั้นโดยค่าเริ่มต้น ดังนั้นหากค่าว่างเปล่า Iva จะไม่ตอบโต้ใครเลย
โมเดลจะถูกอ่านเพียงครั้งเดียวเมื่อเริ่มกระบวนการ การแก้ไข MODEL_PROVIDER หรือชื่อโมเดลใน .env จะไม่มีผลใดๆ จนกว่าคุณจะรัน iva restart บน openrouter ชื่อโมเดลจะเป็น slug ของผู้ให้บริการ เช่น anthropic/claude-sonnet-4.5 ไม่ใช่ชื่อเรียกทั่วไป ส่วนบน codex จะไม่มีการใช้ API key เลย เพราะ iva login จะเป็นการลงชื่อเข้าใช้ผ่านการสมัครสมาชิก ChatGPT ที่มีอยู่เดิม
ค่าใช้จ่ายรายเดือนในการรัน Iva
ข้อมูลเบื้องหลังแผนภูมินี้
[
{
"plan": "Small VPS, always on",
"usd_per_month": 5
},
{
"plan": "OpenCode Go model plan",
"usd_per_month": 10
},
{
"plan": "Ollama Cloud model plan",
"usd_per_month": 20
},
{
"plan": "Deepgram voice, starter credits",
"usd_per_month": 0
},
{
"plan": "Tavily web search, free tier",
"usd_per_month": 0
},
{
"plan": "Cheapest complete setup",
"usd_per_month": 15
}
]ข้อมูลนี้เป็นราคาตามรายการที่ประกาศ ณ เดือนตุลาคม 2026 ไม่ใช่การวัดค่าจริง การใช้ VPS ขนาดเล็กในราคา 5 ดอลลาร์สหรัฐ รวมกับแผน OpenCode Go ในราคา 10 ดอลลาร์ เป็นการตั้งค่าที่สมบูรณ์แบบที่ถูกที่สุด ซึ่งอยู่ที่ประมาณ 15 ดอลลาร์ต่อเดือน หน้า Go ของ OpenCode เองระบุราคาต่อเดือนดังกล่าวโดยไม่มีส่วนลดสำหรับเดือนแรก และไฟล์ README ของ Iva ระบุว่า stack เดียวกันนี้มีค่าใช้จ่ายรวมทั้งหมดประมาณ 14 ถึง 15 ดอลลาร์ ส่วน Ollama Cloud เป็นอีกทางเลือกหนึ่งที่มีราคาคงที่อยู่ที่ 20 ดอลลาร์สำหรับแผน Pro และจะมีการเรียกเก็บเงินเพิ่มหากมีการใช้งานเกินเครดิตที่รวมอยู่ในแผน ส่วนค่าใช้จ่ายด้านเสียง (Voice) จะอยู่ที่ 0 ในขณะที่เครดิตเริ่มต้นของ Deepgram ยังคงเหลืออยู่
OpenRouter ไม่ได้ถูกระบุไว้ในที่นี้เนื่องจากเป็นรูปแบบการจ่ายตามการใช้งานจริง (pay as you go) ดังนั้นค่าใช้จ่ายของคุณจะแปรผันตามปริมาณการใช้งาน นี่คือตัวเลือกที่ต้องเฝ้าระวัง: ผู้ช่วยที่ใช้ context window ขนาด 131072 token ในทุกการโต้ตอบอาจทำให้ค่าใช้จ่ายสูงกว่าแผนราคาคงที่ได้อย่างรวดเร็ว ควรตั้งค่าตัวแปร context window ให้ตรงกับขนาดจริงของโมเดล เนื่องจากค่าที่สูงเกินจริงจะทำให้สิ้นเปลือง token โดยเปล่าประโยชน์
บริการสองรายการและตัวจับเวลาสองรายการ
iva.serviceทำหน้าที่รันตัว agent เองiva-telegram-poll.serviceทำหน้าที่รัน long polling bridge เพื่อสื่อสารกับ Telegramiva-memory-doctor.timerทำงานตอน 05:00 เพื่อรันการบำรุงรักษา vault ประจำคืนiva-update-check.timerทำงานตอน 10:00 เพื่อตรวจสอบว่ามี release ใหม่กว่าหรือไม่iva-telegram-userbot.serviceจะมีอยู่ก็ต่อเมื่อคุณตั้งค่า Telethon proxy แบบทางเลือกไว้เท่านั้น
iva status
systemctl --user status iva.service iva-telegram-poll.service
systemctl --user list-timers
iva logs polliva status ใช้รายงานสถานะของทั้งสองบริการและตัวจับเวลาทั้งสองรายการ systemctl --user list-timers ใช้แสดงเวลาการทำงานถัดไปของตัวจับเวลาแต่ละตัว ซึ่งเป็นวิธีที่คุณจะยืนยันได้ว่า memory doctor จะทำงานในคืนนี้จริง ทั้งสองบริการควรอยู่ในสถานะ active (running) หากบริการใดบริการหนึ่งรีสตาร์ทวนซ้ำ journalctl --user -u iva.service -n 100 จะแสดงสาเหตุให้ทราบ
การแยกส่วนมีความสำคัญเมื่อคุณทำการดีบั๊ก bridge อาจยังทำงานและ polling อยู่ในขณะที่ agent หยุดทำงาน ซึ่งจะทำให้ Telegram รับข้อความของคุณแต่ไม่มีการตอบกลับใดๆ iva logs poll ใช้ติดตาม log ของ bridge ส่วน iva logs ใช้ติดตาม log ของ agent ดังนั้น log ทั้งสองส่วนจะบอกคุณได้ว่าส่วนใดที่เกิดปัญหา
ตำแหน่งที่เก็บ Obsidian vault และวิธีการสำรองข้อมูล
ASSISTANT_VAULT_DIR จะใช้ค่าเริ่มต้นเป็น vault ภายในไดเรกทอรีที่ติดตั้ง ดังนั้นหน่วยความจำจึงอยู่ที่ ~/iva/vault โดยตัวมันเองเป็น git repository แยกต่างหากจากโค้ด ซึ่งช่วยให้คุณอัปเดต Iva ได้โดยไม่กระทบต่อบันทึกของคุณ
vault/CORE.mdเก็บข้อเท็จจริงที่คงทนและการตั้งค่าถาวร โดยจำกัดไว้ที่ 1200 ตัวอักษร และจะถูกส่งไปพร้อมกับ system prompt ทุกครั้งvault/daily/YYYY-MM-DD.mdคือบันทึกประจำวัน ซึ่งถูกกำหนดให้เป็นการเขียนต่อท้ายเท่านั้นvault/cards/เก็บการ์ดที่ระบุประเภทสำหรับผู้ติดต่อ, โครงการ, การตัดสินใจ, แนวคิด และบันทึกต่างๆvault/summaries/daily/,weekly/,monthly/และyearly/เก็บข้อมูลสรุป (rollups)vault/attachments/เก็บไฟล์ตามวันที่ และvault/.graph/เก็บกราฟความเชื่อมโยง (link graph)vault/schema.jsonกำหนดประเภทของการ์ดและกฎการเสื่อมสภาพ (decay rules)
กระบวนการสรุปข้อมูล (rollups) จะทำงานตามกำหนดเวลาภายในโปรเซส โดยการประมวลผลรายวันในเวลา 04:00 จะเปลี่ยนบันทึกของเมื่อวานให้เป็นการ์ดและบทสรุป จากนั้นจะเขียนทับ CORE.md ต่อด้วยการประมวลผลรายสัปดาห์ รายเดือน และรายปีเพื่อบีบอัดข้อมูลเหล่านั้นตามลำดับ ในเวลา 05:00 ตัวจัดการหน่วยความจำ (memory doctor) จะทำงานแบบกำหนดตายตัวโดยไม่ใช้โมเดล: มันจะบังคับใช้ schema, สร้างกราฟความเชื่อมโยงใหม่, สร้างดัชนีใหม่ จากนั้นจะทำการ commit และ push ข้อมูล
การ push ข้อมูลดังกล่าวคือการสำรองข้อมูลของคุณ ซึ่งเป็นขั้นตอนที่ผู้ใช้มักมองข้าม หาก vault ไม่มี git remote ตัวจัดการจะพยายามสร้าง private GitHub repository ผ่าน gh ซึ่งจำเป็นต้องมีการยืนยันตัวตนผ่าน GitHub CLI
gh auth login
systemctl --user start iva-memory-doctor.service
cd ~/iva/vault && git log --oneline -3หากมี commit ที่ลงวันที่วันนี้ แสดงว่าการประมวลผลได้ทำงานและ vault ถูกบันทึกเรียบร้อยแล้ว คำเตือน gh not available ใน log หมายถึงสิ่งตรงกันข้าม: คือ vault ได้รับการดูแลรักษาแต่ไม่เคยถูกส่งออกจากเซิร์ฟเวอร์ ดังนั้นหาก VPS เสียหาย ข้อมูลหน่วยความจำของคุณก็จะสูญหายไปด้วย
คุณควรเก็บสำเนาที่คุณควบคุมเองไว้ด้วย
tar czf ~/iva-vault-backup.tgz -C ~/iva vaultคัดลอกไฟล์นั้นออกจากเซิร์ฟเวอร์ด้วย scp จากนั้นจึงลบออกจากเซิร์ฟเวอร์ หากต้องการอ่านหน่วยความจำใน Obsidian ให้ชี้ Obsidian ไปที่ clone ของ vault repository นั้น Wikilinks และ backlinks จะทำงานได้ตามปกติ รวมถึงมุมมองกราฟด้วย การแก้ไขการ์ดและ CORE.md ด้วยตนเองนั้นปลอดภัย แต่ควรปล่อย MOC.md และ .graph/ ไว้ตามเดิม เนื่องจากกระบวนการประมวลผลรายคืนจะสร้างไฟล์ทั้งสองขึ้นใหม่เสมอ
ให้มองว่า vault คือบันทึกเหตุการณ์ในชีวิตของคุณ
ไดเรกทอรีนั้นคือบันทึกตามวันที่ของสิ่งที่คุณพูด บุคคลที่คุณพบ และการตัดสินใจของคุณ บนเครื่องที่คุณเช่าใช้งาน ซึ่งนำไปสู่ข้อสรุป 2 ประการดังนี้
การทำ self-hosting เป็นเพียงการย้ายที่จัดเก็บข้อมูล ไม่ใช่การย้ายการประมวลผล ทุกการโต้ตอบจะถูกส่งไปยังผู้ให้บริการโมเดลของคุณ และทุกบันทึกเสียงจะถูกส่งไปยัง Deepgram ตัว vault นั้นเป็นของคุณ แต่คำขอเหล่านั้นไม่ได้มีความเป็นส่วนตัวจากบริษัทที่ให้บริการ การรัน memory layer ด้วยตนเอง เช่นเดียวกับการใช้ Mem0 memory server บน VPS ของคุณเอง ก็มีลักษณะเดียวกัน คือข้อมูลถูกจัดเก็บไว้ในเครื่อง แต่การเรียกใช้งานโมเดลยังคงส่งออกไปภายนอก หากหัวข้อใดมีความละเอียดอ่อนเกินกว่าจะให้บุคคลที่สามรับรู้ ให้เก็บหัวข้อนั้นไว้ภายนอกบทสนทนา
ขอบเขตการเข้าถึงของบัญชีนั้นครอบคลุมทั้ง vault เครื่องมือของ Iva รันแบบ host native ผ่าน fs และ child_process ของ Node โดยไม่มี Docker และไม่มี sandbox ดังนั้นหากการโต้ตอบถูกแทรกแซง ผู้บุกรุกจะได้รับสิทธิ์ทั้งหมดเท่าที่ service user นั้นมี นี่คือเหตุผลว่าทำไมบัญชีจึงไม่มี sudo หลงเหลืออยู่หลังการติดตั้ง และทำไม allowlist จึงสมควรได้รับความสนใจมากกว่าที่เห็น เพราะมันคือประตูที่ตัดสินว่าข้อความของใครจะกลายเป็นคำสั่งบนเซิร์ฟเวอร์ของคุณ หากคุณต้องการผู้ช่วยส่วนตัวในกระเป๋าโดยไม่ต้องเปิดพอร์ตใดๆ นี่คือรูปแบบเดียวกับที่ใช้ในการ เข้าถึง Hermes agent ที่ทำ self-hosted จากโทรศัพท์ของคุณ โดยให้ chat client ทำหน้าที่แทน public endpoint ที่ปกติจะต้องเปิดใช้งาน
สิ่งที่มักเกิดข้อผิดพลาดและข้อความที่คุณจะพบ
Build killed, exit 137. ตัวจัดการหน่วยความจำของ kernel (OOM killer) สั่งยุติกระบวนการ build เนื่องจากหน่วยความจำไม่เพียงพอ ตัวติดตั้งจะเพิ่ม swap ให้เฉพาะในกรณีที่ RAM มีน้อยกว่า 1.5 GB และไม่มี swap อยู่เดิมเท่านั้น ดังนั้นให้คุณเพิ่ม swap ด้วยตนเองแล้วรันตัวติดตั้งใหม่อีกครั้ง
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
free -hFailed to connect to bus. คำสั่ง systemctl --user ทุกคำสั่งจะแสดงข้อความนี้เมื่อ shell ไม่มี user session bus ซึ่งเป็นสิ่งที่ sudo -iu iva มอบให้คุณ ให้เปิด SSH session ปกติในฐานะผู้ใช้นั้น หรือทำการ export XDG_RUNTIME_DIR=/run/user/$(id -u iva) ก่อนรันคำสั่ง
บอทไม่ตอบสนองต่อคุณ. TELEGRAM_ALLOWED_USER_IDS ว่างเปล่า และรายการ allowlist ถูกตั้งค่าให้ปฏิเสธการเข้าถึงโดยปริยาย (fail closed) ให้ส่งข้อความหาบอท บอทจะตอบกลับด้วย ID ตัวเลขของคุณเพียงอย่างเดียว ให้นำ ID นั้นไปใส่ใน .env แล้วรัน iva restart
บอทเงียบไปทันทีหลังจาก iva config. ตัวช่วยตั้งค่า (wizard) อาจย้าย IVA_PORT โดยไม่ได้อัปเดต ASSISTANT_HOST ทำให้ bridge เชื่อมต่อไปยังพอร์ตที่ไม่มีการตอบรับ ให้ตรวจสอบเปรียบเทียบทั้งสองบรรทัดแล้วทำการ restart
grep -E '^(IVA_PORT|ASSISTANT_HOST)=' ~/iva/.env
iva restartข้อความเสียงไม่ได้รับการตอบกลับ. Telegram Bot API ปฏิเสธการดาวน์โหลดไฟล์ที่มีขนาดเกิน 20 MB ทำให้ bridge ไม่ได้รับไฟล์เสียงที่มีความยาวและไม่มีข้อมูลส่งให้ Deepgram ให้แบ่งไฟล์ก่อนทำการส่ง
ffmpeg -i long.ogg -f segment -segment_time 600 -c copy part-%02d.oggการทำงานค้างและไม่มีการตอบสนอง. สถานะ workflow ที่ค้างอยู่จะยังคงอยู่แม้จะทำการ restart และจะนำตัวเองกลับเข้าคิวใหม่ ดังนั้นการ restart เพียงอย่างเดียวจะไม่ช่วยแก้ไขปัญหานี้ iva reset จะทำการกักกันสถานะดังกล่าวและ restart บริการทั้งสองตัว ส่วน /new ในแชทจะเป็นการเริ่มบทสนทนาใหม่
Chromium ทำงานล้มเหลวบน Ubuntu 24.04. Ubuntu 24.04 ปิดกั้น unprivileged user namespaces ผ่าน AppArmor ทำให้ sandbox ของ Chromium ไม่สามารถเริ่มทำงานได้และ agent-browser ล้มเหลว ตัวติดตั้งจะแก้ไขปัญหานี้โดยการเขียน "--no-sandbox" ลงใน ~/.agent-browser/config.json โปรดทราบว่ามีการตั้งค่านี้อยู่ ซึ่งจะลดระดับการแยกส่วน (isolation) ของเบราว์เซอร์ลง นี่เป็นอีกเหตุผลหนึ่งที่บัญชีผู้ใช้นี้ไม่ควรเป็นเจ้าของข้อมูลอื่นใดนอกจาก Iva
FAQ
ฉันจำเป็นต้องมีโดเมนหรือเปิดพอร์ตเพื่อ self-host Iva หรือไม่
ไม่จำเป็น Iva สื่อสารกับ Telegram ผ่านการทำ long polling โดยที่ iva-telegram-poll.service จะเรียกไปยัง getUpdates แล้วรอการตอบกลับ ดังนั้นการเชื่อมต่อทั้งหมดจะเป็นแบบขาออกจากเซิร์ฟเวอร์ของคุณ ไม่มีการเชื่อมต่อจากภายนอกเข้ามายังเครื่อง จึงไม่จำเป็นต้องมี DNS record หรือ certificate ใดๆ พอร์ต HTTP ของตัวเอเจนต์คือ 8723 จะผูกไว้กับ 127.0.0.1 และเอกสารของโปรเจกต์ระบุชัดเจนว่าห้ามเปิดพอร์ตนี้ออกสู่สาธารณะ การตั้งค่า firewall ที่อนุญาตเฉพาะ SSH เท่านั้นถือเป็นการตั้งค่าที่ถูกต้อง
การรัน Iva ในแต่ละเดือนมีค่าใช้จ่ายเท่าไร
ตามราคาที่ประกาศไว้ในเดือนตุลาคม 2026 ค่าใช้จ่ายสำหรับ VPS ขนาดเล็กที่ 5 ดอลลาร์ รวมกับแผนบริการแบบเหมาจ่ายที่ถูกที่สุดที่ 10 ดอลลาร์ จะอยู่ที่ประมาณ 15 ดอลลาร์สหรัฐต่อเดือน หากใช้ Ollama Cloud จะมีค่าใช้จ่าย 20 ดอลลาร์ และมีการเรียกเก็บเงินเพิ่มหากมีการใช้งานเกินเครดิตที่รวมอยู่ในแพ็กเกจ สำหรับ Deepgram จะมีเครดิตเริ่มต้นสำหรับบริการเสียง และการค้นหาผ่านเว็บก็มีโควตาให้ใช้งานฟรี ส่วน OpenRouter เป็นแบบจ่ายตามจริงจึงไม่มีค่าใช้จ่ายรายเดือนที่แน่นอน
Iva เก็บข้อมูลของฉันไว้ที่ไหน และจะสำรองข้อมูลอย่างไร
โดยค่าเริ่มต้นข้อมูลจะถูกเก็บไว้ใน ~/iva/vault ซึ่งกำหนดโดย ASSISTANT_VAULT_DIR ข้อมูลทั้งหมดอยู่ในรูปแบบไฟล์ markdown ธรรมดาใน private git repository แยกต่างหาก ได้แก่ CORE.md, daily/YYYY-MM-DD.md, cards/ และ summaries/ กระบวนการ memory doctor ในเวลา 05:00 น. จะทำการ commit และ push ข้อมูลให้โดยอัตโนมัติ ซึ่งจะทำงานได้ก็ต่อเมื่อ repository มีการตั้งค่า remote ไว้เท่านั้น ดังนั้นควรเรียกใช้ gh auth login หรือเพิ่ม remote ของคุณเองระหว่างการตั้งค่า นอกจากนี้ควรเก็บสำเนาแบบออฟไลน์ไว้ด้วยการใช้ tar czf ~/iva-vault-backup.tgz -C ~/iva vault แล้วย้ายไฟล์ดังกล่าวออกจากเซิร์ฟเวอร์
ข้อมูลของฉันจะเป็นส่วนตัวหรือไม่หาก self-host Iva
พื้นที่จัดเก็บข้อมูลเป็นของคุณ แต่กระบวนการประมวลผลไม่ใช่ ข้อมูลใน vault จะอยู่บนดิสก์ของคุณจนกว่าคุณจะสั่ง push และไฟล์ .env จะถูกตั้งค่าสิทธิ์เป็น 0600 โดยมี service user เป็นเจ้าของ การเรียกใช้โมเดลและการแปลงเสียงเป็นข้อความเป็นการทำงานผ่าน cloud API ดังนั้นข้อความเหล่านั้นจะถูกส่งผ่านผู้ให้บริการโมเดลและ Deepgram Iva ใช้สัญญาอนุญาตแบบ MIT คุณจึงสามารถตรวจสอบสิ่งที่โปรแกรมส่งออกไปและแก้ไขได้เอง ส่วนรายการอนุญาต (allowlist) ของ Telegram จะทำงานแบบ fail closed หมายความว่าหากไฟล์ TELEGRAM_ALLOWED_USER_IDS ว่างเปล่า ระบบจะบล็อกทุกคนรวมถึงตัวคุณเองด้วย
Iva รองรับผู้ให้บริการโมเดลรายใดบ้าง
ในรุ่น v0.3.13 ที่ถูกปักหมุดไว้ MODEL_PROVIDER รองรับ opencode (OpenCode Go), ollama (Ollama Cloud), openrouter และ codex สำหรับ OpenRouter คุณสามารถระบุ vendor slug เช่น anthropic/claude-sonnet-4.5 ซึ่งเป็นตัวเลือกที่รองรับโมเดลได้หลากหลายที่สุด ส่วน codex จะเป็นการลงชื่อเข้าใช้ด้วยการสมัครสมาชิก ChatGPT ที่มีอยู่ผ่าน iva login โดยไม่ต้องใช้ API key ในรุ่นถัดไปจะมีการเพิ่มช่องทางการเชื่อมต่อมากขึ้น รวมถึงการสมัครสมาชิก Claude และ endpoint ที่รองรับมาตรฐาน OpenAI เมื่อตั้งค่าผู้ให้บริการและกำหนด context window ให้ตรงกับขนาดจริงของโมเดลแล้ว ให้รัน iva restart เนื่องจากโมเดลจะถูกอ่านเพียงครั้งเดียวตอนเริ่มกระบวนการทำงานเท่านั้น