ถ้าคุณอยากมี AI Agent ส่วนตัวที่คุยได้ผ่าน LINE โดยไม่ต้องพึ่ง no-code platform บทความนี้จะพาคุณทำตั้งแต่ต้นจนจบ เครื่องมือที่ใช้คือ Garudust — AI Agent framework เขียนด้วย Rust รองรับ OpenAI, Anthropic, Ollama, vLLM และ OpenAI-compatible endpoint ทุกเจ้า
สิ่งที่ต้องมี
- เซิร์ฟเวอร์ Linux หรือ macOS (หรือรันบน VPS ก็ได้)
- บัญชี LINE Developers (ฟรี) → developers.line.biz
- API Key จาก OpenAI, Anthropic, หรือ endpoint อื่นๆ
- ngrok — เฉพาะกรณีรันบนเครื่องตัวเองที่ไม่มี public IP
1. ติดตั้ง Garudust
วิธีที่ 1 — ดาวน์โหลด binary
ไปที่ Releases แล้วดาวน์โหลดไฟล์ที่ตรงกับระบบของคุณ:
# Linux x86_64
curl -LO https://github.com/garudust-org/garudust-agent/releases/latest/download/garudust-v0.3.1-x86_64-unknown-linux-musl.tar.gz
tar -xzf garudust-*.tar.gz
sudo mv garudust*/garudust garudust*/garudust-server /usr/local/bin/
วิธีที่ 2 — Build จาก source (ต้องมี Rust 1.87+)
git clone https://github.com/garudust-org/garudust-agent.git
cd garudust-agent
cargo build --release --bin garudust --bin garudust-server
sudo cp target/release/garudust target/release/garudust-server /usr/local/bin/
ตรวจสอบว่าติดตั้งสำเร็จ:
garudust --version
garudust-server --version
2. ตั้งค่า LINE Messaging API
- เข้าไปที่ LINE Developers Console
- สร้าง Provider ใหม่ (หรือใช้อันที่มีอยู่)
- สร้าง Channel ประเภท Messaging API
- ที่ tab Basic settings → คัดลอก Channel secret
- ที่ tab Messaging API → คลิก Issue เพื่อสร้าง Channel access token (long-lived)
- เปิด Use webhook → toggle เป็น Enable
เก็บค่าสองอย่างนี้ไว้:
LINE_CHANNEL_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINE_CHANNEL_TOKEN=eyJhbGci...
3. ตั้งค่าไฟล์ config
Garudust แยก secret ออกจาก config เป็น 2 ไฟล์:
-
~/.garudust/.env— credentials เท่านั้น (ห้าม commit) -
~/.garudust/config.yaml— ตั้งค่าพฤติกรรม, platform, port (แชร์ได้)
~/.garudust/.env
# LLM provider
ANTHROPIC_API_KEY=sk-ant-...
# LINE adapter — tokens ต้องอยู่ใน .env เสมอ
LINE_CHANNEL_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINE_CHANNEL_TOKEN=eyJhbGci...
~/.garudust/config.yaml
provider: anthropic
model: claude-sonnet-4-6
system_prompt: |
คุณคือผู้ช่วย AI ชื่อ "น้องการุด" พูดภาษาไทย ตอบสั้นกระชับ
ช่วยงานด้านข้อมูล วิเคราะห์ข้อความ และตอบคำถามทั่วไป
ไม่ตอบเนื้อหาที่ไม่เหมาะสม
platforms:
line:
enabled: true
port: 3002
webhook_path: /line # webhook URL: https://your-host/line
หลักการ:
config.yamlเก็บโครงสร้าง (enabled,port,webhook_path) ส่วน.envเก็บ secret (LINE_CHANNEL_SECRET,LINE_CHANNEL_TOKEN) เท่านั้น
เมื่อรัน garudust-server แล้ว Garudust จะเปิด HTTP server รอรับ webhook จาก LINE ที่ 0.0.0.0:3002/line โดยอัตโนมัติ — ไม่ต้องตั้งค่า webhook server เพิ่มเอง
4. รัน garudust-server
garudust-server
ดู log จะเห็น:
INFO garudust_server: LINE webhook listening on 0.0.0.0:3002/line
INFO garudust_server: API server listening on 0.0.0.0:3000
Port mapping ของ Garudust:
| Port | ใช้สำหรับ |
|---|---|
3000 |
HTTP API หลัก (/chat, /health, /metrics) |
3001 |
Generic webhook |
3002 |
LINE adapter |
3003 |
WhatsApp adapter |
5. ตั้งค่า Webhook URL ใน LINE Developers Console
ขั้นตอนนี้แตกต่างกันตามสภาพแวดล้อม:
กรณี A — VPS หรือเซิร์ฟเวอร์ที่มี public IP (Production)
ไม่ต้องใช้ ngrok — LINE เข้าถึง server ของคุณได้ตรงๆ ผ่าน nginx
ตั้งค่า nginx reverse proxy ก่อน (ดูขั้นตอนที่ 7) แล้วใช้ URL:
https://yourdomain.com/line
กรณี B — เครื่องตัวเองที่ไม่มี public IP (Dev/ทดสอบ)
LINE ไม่สามารถเข้าถึง localhost ได้และต้องการ HTTPS — ใช้ ngrok สร้าง tunnel ชั่วคราว:
ngrok http 3002
ngrok จะแสดง URL เช่น:
Forwarding https://abc123.ngrok-free.app -> http://localhost:3002
webhook URL ของคุณคือ:
https://abc123.ngrok-free.app/line
หมายเหตุ: ngrok free tier เปลี่ยน URL ทุกครั้งที่รีสตาร์ท เหมาะสำหรับทดสอบเท่านั้น ใช้ VPS หรือ ngrok paid plan สำหรับ production
ตั้ง webhook URL ใน LINE Developers Console:
- Tab Messaging API → ส่วน Webhook settings
- ใส่ URL ตามสภาพแวดล้อมของคุณ (จากด้านบน)
- คลิก Verify — ควรได้ "Success"
- เปิด Use webhook ให้เป็น Enable
ลองส่งข้อความหา LINE Official Account ของคุณ — AI จะตอบกลับทันที
6. เพิ่ม Cron Job (ทำงานอัตโนมัติ)
Garudust มีระบบ cron ในตัว ตั้งค่าใน .env:
# ส่ง briefing ทุกเช้า 8 โมง
GARUDUST_CRON_JOBS="0 8 * * *=สรุปข่าวเทคโนโลยีไทยวันนี้ บันทึกลงไฟล์ ~/briefing.md"
# รวบรวม memory อัตโนมัติทุกคืน 03:00
GARUDUST_MEMORY_CRON="0 3 * * *"
7. Deploy Production (systemd + nginx)
nginx reverse proxy
LINE ต้องการ HTTPS — nginx จัดการ SSL แล้ว proxy ต่อไปยัง Garudust บน port 3002:
# /etc/nginx/sites-available/garudust
server {
listen 443 ssl;
server_name yourdomain.com;
ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;
# LINE webhook — proxy ไปที่ Garudust LINE adapter port 3002
location /line {
proxy_pass http://127.0.0.1:3002;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
# HTTP API หลัก
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
}
}
sudo ln -s /etc/nginx/sites-available/garudust /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
systemd service
# /etc/systemd/system/garudust.service
[Unit]
Description=Garudust AI Agent Server
After=network.target
[Service]
Type=simple
User=ubuntu
ExecStart=/usr/local/bin/garudust-server
Restart=on-failure
RestartSec=5
EnvironmentFile=/home/ubuntu/.garudust/.env
WorkingDirectory=/home/ubuntu
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now garudust
sudo systemctl status garudust
webhook URL สำหรับตั้งใน LINE Console:
https://yourdomain.com/line
สรุป config ทั้งหมด
~/.garudust/.env — secrets เท่านั้น
ANTHROPIC_API_KEY=sk-ant-...
LINE_CHANNEL_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINE_CHANNEL_TOKEN=eyJhbGci...
GARUDUST_MEMORY_CRON="0 3 * * *"
~/.garudust/config.yaml — พฤติกรรมและโครงสร้าง
provider: anthropic
model: claude-sonnet-4-6
system_prompt: |
คุณคือผู้ช่วย AI ชื่อ "น้องการุด" พูดภาษาไทย ตอบสั้นกระชับ
platforms:
line:
enabled: true
port: 3002
webhook_path: /line
สรุปขั้นตอนตามสภาพแวดล้อม
| Dev (localhost) | Production (VPS) | |
|---|---|---|
| Garudust รัน webhook ที่ | localhost:3002/line |
localhost:3002/line |
| เปิด HTTPS ด้วย | ngrok tunnel | nginx + Let's Encrypt |
| Webhook URL ใน LINE Console | https://xxx.ngrok-free.app/line |
https://yourdomain.com/line |
| ngrok | ✅ จำเป็น | ❌ ไม่ต้อง |
Garudust รองรับ OpenAI, Anthropic, Ollama, vLLM และ OpenAI-compatible endpoint ทุกเจ้า — เปลี่ยน provider ได้แค่แก้ 2 บรรทัดใน config.yaml แล้วรีสตาร์ท
ถ้ามีคำถามหรือเจอปัญหา เปิด Issue บน GitHub ได้เลย หรือ comment ไว้ด้านล่างครับ
Top comments (0)