คู่มือ
ปรับใช้ด้วย Docker Compose
การติดตั้งใช้งานจริงบนโฮสต์เดียวด้วย docker-compose.prod.yml และ install.sh ที่มาพร้อมกัน.
มีเซิร์ฟเวอร์แรง ๆ อยู่หนึ่งเครื่องและอยากให้ AskAIs Customer Service ทำงานภายใน 10 นาทีหรือไม่? นี่คือเส้นทางที่ใช่ เหมาะสำหรับผู้เข้าชมพร้อมกันต่ำกว่า ~500 ราย; สำหรับสเกลที่ใหญ่กว่านี้ ให้ข้ามไปที่ คู่มือ Kubernetes
ข้อกำหนดเบื้องต้น
- โฮสต์ Linux ที่มี Docker 24+ และ `docker compose` v2
- ≥ 2 vCPU, RAM 4 GB (แนะนำ 8 GB)
- โดเมนที่ชี้มายังโฮสต์ (สำหรับ TLS ผ่าน Caddy / Cloudflare / nginx)
ติดตั้งด้วยคำสั่งบรรทัดเดียว
git clone https://github.com/singlink/singlink
cd singlink
APP_DOMAIN=chat.acme.com bash scripts/install.shสคริปต์นี้จะ:
- ตรวจสอบ docker + openssl
- สร้าง
.env.prodพร้อมความลับแบบสุ่มที่แข็งแกร่ง (โหมด 600) - สร้างอิมเมจสามรายการ (web / ws / worker)
- เริ่มต้นทั้งสแตกด้วย
docker compose -f docker-compose.prod.yml up -d - รัน
prisma migrate deployภายในคอนเทนเนอร์ web
สิ่งที่ทำงาน
- postgres — pgvector PG16
- redis — pub/sub + คิว (ป้องกันด้วยรหัสผ่าน)
- minio — พื้นที่จัดเก็บที่เข้ากันได้กับ S3 สำหรับไฟล์แนบ
- web / ws / worker — สามโปรเซสของแอป
- nginx — รีเวิร์สพร็อกซีบนพอร์ต 8080 พร้อมการอัปเกรด WS
การเพิ่ม TLS
nginx ที่มาพร้อมกันจะสิ้นสุด HTTP/1.1 บนพอร์ต 8080 ให้วางพร็อกซีที่สิ้นสุด TLS ไว้ด้านหน้า:
Caddy (ง่ายที่สุด)
# /etc/caddy/Caddyfile
chat.acme.com {
reverse_proxy localhost:8080
}Cloudflare Tunnel (ไม่ต้องมีพอร์ตขาเข้าเลย)
cloudflared tunnel create singlink
cloudflared tunnel route dns singlink chat.acme.com
cloudflared tunnel run --url http://localhost:8080 singlinkการดำเนินงาน Day-2
# Logs
docker compose -f docker-compose.prod.yml logs -f
# Restart everything
docker compose -f docker-compose.prod.yml restart
# Stop (data persists in named volumes)
docker compose -f docker-compose.prod.yml down
# Upgrade
git pull
docker compose -f docker-compose.prod.yml pull
docker compose -f docker-compose.prod.yml up -d --build
docker compose -f docker-compose.prod.yml exec web pnpm db:deploy
# Backups (run from cron daily)
docker compose -f docker-compose.prod.yml exec -T postgres \
pg_dump -U singlink singlink | gzip > /backups/singlink-$(date +%F).sql.gzการขยายจำนวน worker
รันเรพลิกาของ AI worker เพิ่มขึ้น (Redis BullMQ จัดการการกระจายงาน):
docker compose -f docker-compose.prod.yml up -d --scale worker=4เมื่อใดควรยกระดับไปใช้ Kubernetes
- คุณต้องการ postgres / redis แบบ HA (RDS / ElastiCache ที่มีการจัดการให้)
- คุณต้องการการปรับขนาดอัตโนมัติเมื่อทราฟฟิกพุ่งสูง
- คุณรันมันข้ามหลายภูมิภาค
- การหยุดทำงานของโฮสต์เดียวยอมรับไม่ได้สำหรับ SLA ของคุณ
จากนั้นข้ามไปที่ Kubernetes / Helm