Migrate จาก Railway มา NirvaDeploy — คู่มือทีละขั้น
ทำได้แบบ zero-downtime — รัน 2 platforms parallel ก่อน cutover
ทำไมต้อง migrate?
- ราคาถูกกว่า 15-29% ทุก tier (ดู pricing comparison)
- ภาษาไทย ทั้ง UI, error messages, support
- ใบกำกับภาษีอัตโนมัติ ในนาม Best Investigation Co., Ltd. — สำหรับ SME ไทย
- MCP-native ให้ Claude/Manus/GPT สั่งงานได้
- PromptPay + บัตรไทย ผ่าน Stripe Thailand
แต่ Railway ก็ยังดี — ถ้าคุณไม่ใช่ Thai SME, ไม่ต้องการ MCP, ไม่ต้องการใบกำกับภาษี → ใช้ Railway ต่อก็ได้
ก่อนเริ่ม
เครื่องมือที่ต้องการ
- Railway account (เดิม) — login + เข้า dashboard ได้
- NirvaDeploy account — sign in ด้วย Line/Google ที่ nirvadeploy.com
- Railway API token: railway.com/account/tokens
- (Optional) Claude Desktop กับ NirvaDeploy MCP เชื่อมแล้ว — ทำให้ migration ผ่านการคุย
ของที่จะ migrate
- Projects + services ทั้งหมด
- Environment variables (รวม secrets)
- Custom domains (ถ้ามี)
- Database (Postgres/Redis — ต้อง dump + restore แยก)
ที่ migrate ไม่ได้ (Phase 2 limitation)
- Railway-specific features (Volume, Cron — Phase 2.x จะรองรับ)
- Team members (NirvaDeploy v0.2 single-user, Phase 2.x จะมี team)
- GitHub OAuth-connected repos (need re-auth บน NirvaDeploy)
5-step migration
Step 1: Audit Railway projects (15 นาที)
ดูว่ามีอะไรอยู่บน Railway บ้าง — เปิด dashboard + คัด list:
Project: my-app
├── Service: api (Python FastAPI, 1 GB RAM)
├── Service: worker (Python, background jobs)
└── Service: postgres (Railway managed Postgres)
Environment variables:
- DATABASE_URL (auto from postgres)
- ANTHROPIC_API_KEY
- LINE_CHANNEL_SECRET
- LINE_CHANNEL_ACCESS_TOKEN
Custom domain: api.myapp.com💡 ใช้ Railway CLI: railway variables --json ดึง env vars ทั้งหมดStep 2: ตั้ง NirvaDeploy + connect Claude (10 นาที)
# Clone MCP server
git clone https://github.com/Nirvacore/nirvadeploy.git
cd nirvadeploy-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
# ใส่ Railway token เดิม (Phase 1-3 ใช้ Railway underneath ก็จริง
# แต่เพราะ NirvaDeploy wrap Railway — ตอน migrate ใช้ token เดียวกัน)
cp .env.example .env
# แก้ RAILWAY_TOKEN=xxxเชื่อม Claude Desktop ตาม getting-started.md
Step 3: สร้าง projects ใหม่บน NirvaDeploy (5 นาที/project)
ใช้ Claude:
คุณ: สร้างโปรเจกต์ใหม่จาก repo myorg/my-app>
Claude: (เรียกnirvadeploy_create_project_from_repo) ✅ สร้างโปรเจกต์ 'my-app' แล้ว 📦 project_id:proj-new-001🔧 service_id:svc-new-001
คุณ: ตั้ง env vars พวกนี้: ANTHROPIC_API_KEY=xxx, LINE_CHANNEL_SECRET=yyy
>
Claude: (เรียก nirvadeploy_set_variable หลายรอบ) ✅ ตั้งค่าครบ 5 ตัวTip: สำหรับ batch set variables — ใช้ template ของเรา:
คุณ: Deploy template nirvadeploy/template-fastapi-line-bot พร้อม env vars จาก Railway ของผม(Template marketplace มี 10 ตัวพร้อมใช้ — ดู /dashboard/templates)
Step 4: Database migration (10-60 นาที — ขึ้นกับขนาด)
Postgres:
# Dump จาก Railway (เปิด terminal ใน Railway shell หรือ local)
pg_dump $RAILWAY_DATABASE_URL > backup.sql
# Restore ใส่ NirvaDeploy Postgres add-on
# (Phase 2.x: postgres add-on จะ provision ผ่าน template/MCP)
psql $NIRVADEPLOY_DATABASE_URL < backup.sqlRedis:
# Dump
redis-cli -u $RAILWAY_REDIS_URL --rdb dump.rdb
# Restore — ใช้ redis-cli RESTORE หรือ rdb-toolsTips:
- ทำใน maintenance window (ลด traffic) ถ้าเป็น production
- Test กับ staging database ก่อน
- เก็บ backup ของ Railway ไว้อย่างน้อย 30 วันก่อน decommission
Step 5: DNS cutover (5 นาที + รอ TTL)
Railway domain: api-prod.up.railway.app
NirvaDeploy domain: my-app-svc.nirvadeploy.com (หรือ custom domain ของคุณ)Recommended: gradual cutover ใช้ weighted DNS:
- Cloudflare DNS load balancer (หรือ Route53 weighted records)
- 0% NirvaDeploy → 10% → 50% → 100% ตามที่มั่นใจ
- Monitor error rates บน NirvaDeploy /status + บน Railway dashboard
- ถ้ามีปัญหา rollback ไป 100% Railway ทันที
Simple cutover (ถ้าไม่กังวล downtime ≤ TTL):
- Update DNS A record / CNAME → NirvaDeploy
- รอ TTL หมด (5-60 นาที)
- Done
💡 NirvaDeploy auto-provisions SSL cert (Let's Encrypt) — ไม่ต้องตั้งเอง
หลัง cutover
Verify (1 วัน)
- Monitor /status + บน NirvaDeploy dashboard
- Compare metrics (CPU/RAM/latency) ระหว่าง 2 platforms
- เช็ค error rates ใน /dashboard/[projectId]/[serviceId]
Decommission Railway (30 วันหลัง verify)
- Keep Railway running 30 วันเป็น safety net
- ถ้าไม่มีปัญหา — เข้า Railway dashboard → delete services + cancel subscription
- เก็บ Postgres dump ใน R2/S3 ไว้อย่างน้อย 90 วัน
Common gotchas
"Build failed: package not found"
Railway มี cached node_modules. NirvaDeploy build fresh — ต้องตรวจสอบ package.json มี deps ครบ. แก้: npm install --save <missing> แล้ว push
Custom domain SSL not provisioning
NirvaDeploy ต้องเห็น DNS ของคุณ point มาที่ service URL ก่อน Let's Encrypt issue cert. แก้: รอ 5-10 นาทีหลัง DNS update — ระบบ retry อัตโนมัติ
Database connection refused
ลืม IP whitelist? — Railway Postgres allow all by default. ถ้าใช้ Supabase/Neon/RDS — เปิด NirvaDeploy IP
Environment vars ขาดบางตัว
Railway มี auto vars (PORT, RAILWAY_PROJECT_ID ฯลฯ) ที่ NirvaDeploy ใช้ชื่อต่าง. แก้: เช็คชื่อ var ใน source code, map ใหม่:
RAILWAY_PROJECT_ID→ ใช้NIRVADEPLOY_PROJECT_IDแทนPORT→ เหมือนกัน (รองรับมาตรฐาน)
Migration cost calculator
Solo dev (1 service, Hobby)
- Railway: $5-7/mo ($60-84/yr)
- NirvaDeploy Hobby: ฿111/mo (~$43/yr)
- ประหยัด ~฿593/yr
Freelancer (5 services, Pro)
- Railway: ~$22-30/mo ($264-360/yr)
- NirvaDeploy Pro: ฿333/mo (~$190/yr)
- ประหยัด ~฿4,133/yr
SME (15 services, Team)
- Railway: ~$80-120/mo ($960-1,440/yr)
- NirvaDeploy Business: ฿888/mo (~$533/yr)
- ประหยัด ~฿25,733/yr
ลอง pricing calculator เต็มที่ /pricing
ต้องช่วยอะไร?
- Email: [email protected] (typical response 4-12 ชม.)
- Line OA:
@nirvadeployasync support - GitHub issue: github.com/Nirvacore/nirvadeploy/issues
- Enterprise migrate (>50 services): [email protected] — มี CSM ช่วยทำให้ฟรี
ผ่านได้แล้วบอกเราด้วย — เรา feature stories ของลูกค้าที่ migrate เสร็จใน [/showcase](/showcase)
ชอบบทความนี้?
ลอง NirvaDeploy ฟรี
Free tier ตลอดชีพ · ไม่ต้องใส่บัตร · Sign in ด้วย Line/Google
เริ่มเลย →