ถ้าคุณอยากมี 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 (สำหรับ dev) หรือโดเมนจริง (สำหรับ production)
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/config.yaml— ตั้งค่าพฤติกรรม, platform, port (แชร์ได้) -
~/.garudust/.env— credentials เท่านั้น (ห้าม commit)
~/.garudust/.env
ใส่ credentials ทั้งหมดที่นี่:
# LLM provider
ANTHROPIC_API_KEY=sk-ant-...
# LINE adapter — tokens อยู่ใน .env เสมอ
LINE_CHANNEL_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
LINE_CHANNEL_TOKEN=eyJhbGci...
~/.garudust/config.yaml
ตั้งค่า LINE platform (enabled, port, webhook_path) ที่นี่:
provider: anthropic
model: claude-sonnet-4-6
system_prompt: |
คุณคือผู้ช่วย AI ชื่อ "น้องการุด" พูดภาษาไทย ตอบสั้นกระชับ
ช่วยงานด้านข้อมูล วิเคราะห์ข้อความ และตอบคำถามทั่วไป
ไม่ตอบเนื้อหาที่ไม่เหมาะสม
platforms:
line:
enabled: true
port: 3002
webhook_path: /line # webhook URL: https://your-host:3002/line
หลักการ:
config.yamlเก็บพฤติกรรมและโครงสร้าง —enabled,port,webhook_pathส่วน.envเก็บ secret เท่านั้น —LINE_CHANNEL_SECRET,LINE_CHANNEL_TOKEN
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 ด้วย ngrok (สำหรับ Dev)
LINE ต้องการ HTTPS เท่านั้น — ngrok จะสร้าง HTTPS URL ชั่วคราวให้:
ngrok http 3002
ngrok จะแสดง URL เช่น:
Forwarding https://abc123.ngrok-free.app -> http://localhost:3002
webhook URL ของคุณคือ:
https://abc123.ngrok-free.app/line
6. ตั้งค่า Webhook URL ใน LINE Developers Console
- กลับไปที่ LINE Developers Console → Channel ของคุณ
- Tab Messaging API → ส่วน Webhook settings
- ใส่ URL:
https://abc123.ngrok-free.app/line - คลิก Verify — ควรได้ "Success"
- เปิด Use webhook ให้เป็น Enable
ลองส่งข้อความหา LINE Official Account ของคุณ — AI จะตอบกลับทันที
7. เพิ่ม Cron Job (ทำงานอัตโนมัติ)
Garudust มีระบบ cron ในตัว ตั้งค่าใน .env:
# ส่ง briefing ทุกเช้า 8 โมง
GARUDUST_CRON_JOBS="0 8 * * *=สรุปข่าวเทคโนโลยีไทยวันนี้ บันทึกลงไฟล์ ~/briefing.md"
# รวบรวม memory อัตโนมัติทุกคืน 03:00
GARUDUST_MEMORY_CRON="0 3 * * *"
8. Deploy จริง (Production ด้วย systemd + nginx)
nginx reverse proxy
# /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
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 จริงของคุณ:
https://yourdomain.com/line
ตั้งใน LINE Developers Console แล้วกด Verify — เสร็จสมบูรณ์
สรุป 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
สรุปขั้นตอน
| ขั้นตอน | สิ่งที่ทำ |
|---|---|
.env |
ใส่ LINE_CHANNEL_SECRET + LINE_CHANNEL_TOKEN + LLM key |
config.yaml |
ตั้ง platforms.line.enabled/port/webhook_path + system_prompt
|
garudust-server |
รัน API + LINE webhook server |
| ngrok / nginx | เปิด HTTPS endpoint ให้ LINE เข้าถึงได้ |
| LINE Console | ตั้ง webhook URL + Verify |
Garudust รองรับ OpenAI, Anthropic, Ollama, vLLM และ OpenAI-compatible endpoint ทุกเจ้า — เปลี่ยน provider ได้แค่แก้ 2 บรรทัดใน config แล้วรีสตาร์ท
ถ้ามีคำถามหรือเจอปัญหา เปิด Issue บน GitHub ได้เลย หรือ comment ไว้ด้านล่างครับ
























