Deploy Application ด้วย Railway.com

Railway.com เป็น Platform ที่เราใช้จัดการเรื่องการ Deployment บน Production (ราคาถูกมาก) โดยสามารถช่วยเราดูแลตั้งแต่การ
- Deploy Application ขึ้นไปใหม่
- Revert เอา Application version กลับมาก่อน
- Backup Database ใน Pro plan
บทนี้อธิบายวิธี deploy โปรเจคขึ้น Railway แบบ step-by-step
Step 1: ติดตั้ง Project ด้วย Railway template
1. เข้า railway.com และ login
2. กดติดตั้ง VibeKit Railway Deployment Template เพื่อติดตั้งได้ โดยไม่ต้องตั้งค่า Database เอง (เพิ่ม PostgreSQL Database)


3. หลังจากที่ database ขึ้น Online เรียบร้อยแล้ว คลิกที่ service Postgres แล้วไปที่เมนู Settings เพื่อปรับ Region ของ database ให้อยู่ใน Southeast Asia (Singapore)

Step 2: ติดตั้ง VibeKit Project จาก GitHub
1. เลือก GitHub Repository

2. ค้นหาและเลือก repository ของคุณ (ในการใช้งานครั้งแรก อาจจะต้องมีการเชื่อมต่อ GitHub กับ Railway ก่อน)

3. Railway จะเริ่ม build โปรเจค

Step 3: VibeKit Build Failed (ปกติ!)
⚠️ ไม่ต้องตกใจ! Build จะ fail เพราะยังไม่มี environment variables
ขั้นตอนถัดไปคือการตั้งค่า environment variables
Step 4: ตั้งค่า Environment Variables และ Settings
- คลิกที่ service ของคุณ (ไม่ใช่ Postgres)
- ไปที่ tab Variables

ค่าที่ต้องตั้งในส่วน Variable
| Variable | Value |
|---|---|
DATABASE_URL | ${{Postgres.DATABASE_URL}} |
DIRECT_URL | ${{Postgres.DATABASE_URL}} |
NEXTAUTH_URL | ต้องกด Generate Domain ก่อนในหน้า Settings (ดูวิธี generate ด้านล่าง) https://${{RAILWAY_PUBLIC_DOMAIN}} |
NEXTAUTH_SECRET | (ดูวิธี generate ด้านล่าง) |
GOOGLE_CLIENT_ID | (ค่าจาก Google Cloud ดูจากที่นี่) |
GOOGLE_CLIENT_SECRET | (ค่าจาก Google Cloud ดูจากที่นี่) |
STORAGE_PROVIDER | gcs |
GCS_BUCKET | (ชื่อ bucket ของคุณ ดูจากที่นี่) |
GCS_PROJECT_ID | (project ID ของคุณ ดูจากที่นี่) |
GCS_CREDENTIALS | (JSON key จาก Service Account ดูจากที่นี่) |
💡 Tip:
${{Postgres.DATABASE_URL}}คือ Railway variable reference ที่จะถูกแทนที่ด้วย connection string จริงอัตโนมัติ
วิธี Generate NEXTAUTH_SECRET
รันคำสั่งนี้ใน terminal:
# macOS / Linux
openssl rand -base64 32
# หรือใช้ node
node -e "console.log(require('crypto').randomBytes(32).toString('base64'))"
คัดลอก output มาใส่เป็นค่าของ NEXTAUTH_SECRET
หรือใช้วิธีสุ่มรหัสผ่าน Number Generator (HEX 32)
ตั้งค่า Region ใน Settings (แนะนำ)
- ไปที่ tab Settings
- หา Regions และเลือก Southeast Asia (Singapore)

Generate Domain ฟรีจาก Railway.com
- ไปที่ Settings > Networking
- คลิก Generate Domain

- ใส่ port 8080 (หรือ port ที่ app ใช้) แล้วคลิก Generate Domain (ไม่จำเป็น)

ตั้งค่า Config-as-Code (railway.json)
โปรเจคนี้มี railway.json พร้อมใช้งาน ซึ่ง Railway จะอ่านค่าจากไฟล์นี้แล้ว config settings อื่น ๆ ให้อัตโนมัติ ถ้าหากช่องดังกล่าวนี้ยังว่างอยู่ ให้เลือกไฟล์ railway.json จากใน project

Step 5: Custom Domain (ไม่จำเป็น)
ถ้าต้องการใช้ domain ของตัวเอง:

Step 6: Deploy!
หลังตั้งค่าครบแล้ว Railway จะ re-deploy อัตโนมัติ หรือคลิก Deploy ด้วยตัวเอง
เมื่อ deploy สำเร็จจะเห็น:

เปิดดู Live Site
คลิกที่ URL เพื่อเปิดดู app ที่ deploy แล้ว:

✅ สรุป
เมื่อทุกอย่างพร้อม project จะแสดงสถานะ Online ทั้ง Postgres และ App:

| ขั้นตอน | สิ่งที่ต้องทำ |
|---|---|
| 1 | ติดตั้ง Project ด้วย Railway template |
| 2 | ติดตั้ง VibeKit Project จาก GitHub |
| 3 | VibeKit Build Failed (ปกติ!) |
| 4 | ตั้งค่า Environment Variables |
| 5 | Custom Domain (ไม่จำเป็น) |
| 6 | Deploy และตรวจสอบ |
⚠️ อย่าลืม! เพิ่ม Authorized Redirect URI ใน Google Cloud Console
หลัง deploy สำเร็จ ให้กลับไปเพิ่ม Authorized Redirect URI ใน Google Cloud Console:
https://your-app.up.railway.app/api/auth/callback/google
(ดูรายละเอียดใน Google Cloud OAuth)