Skip to content

Triển khai Production

Checklist thực dụng để đưa Data Explorer lên web thật, gồm Render/Vercel, env bắt buộc, migration, OAuth callback, và những lỗi deploy hay gặp nhất.

Frontend: Vercel

Phù hợp để deploy client nhanh, CDN tốt, và chỉ cần trỏ VITE_API_URL về backend.

Backend: Render

Phù hợp để chạy NestJS backend và Prisma, miễn là build command có bước sync schema trước khi boot.

1. Build commands khuyên dùng

Backend service (Render)

Build command

npm run build

Start command

npm run start:prod

Chạy `npx prisma migrate deploy` trước khi khởi động app. Render Blueprint trong repo đã thực hiện bước này và chỉ đưa phiên bản mới vào phục vụ khi readiness check thành công.

Frontend service (Vercel)

Frontend env

VITE_API_URL=https://your-backend-domain.com/api

2. Biến môi trường bắt buộc

DATABASE_URL
Database trung tâm của ứng dụng.
JWT_SECRET
Secret mạnh để ký access token. Placeholder sẽ bị backend từ chối.
REFRESH_TOKEN_SECRET
Khuyến nghị dùng secret riêng cho refresh token cookie. Nếu để trống, app sẽ fallback về JWT_SECRET.
ENCRYPTION_KEY
Phải đúng 32 ký tự để mã hóa saved connection passwords.
FRONTEND_URL
Origin frontend thật dùng cho CORS và OAuth redirects.
API_PUBLIC_URL
Public API base URL; cần cho billing return/webhook flows.
REDIS_URL
URL kết nối Redis cho caching, queue, notifications, presence, search index và rate-limiting.
ADMIN_EMAIL
Email admin khởi tạo (Seeding).
ADMIN_PASSWORD
Mật khẩu admin khởi tạo. Khuyên dùng mật khẩu mạnh.

3. OAuth checklist

  • GOOGLE_CALLBACK_URL và GITHUB_CALLBACK_URL phải trỏ về backend thật, ví dụ https://your-backend.onrender.com/api/auth/google/callback.
  • FRONTEND_URL phải khớp origin thực tế của client, nếu không exchange flow sau /login#code=... sẽ fail.
  • Với frontend và backend khác domain ở production, hãy dùng HTTPS để refresh-token cookie có thể chạy với secure + sameSite phù hợp.
  • Sau mỗi lần đổi env OAuth, redeploy backend để callback/controller nạp cấu hình mới.

4. AI provider envs

Optional AI lanes

# Premium lane

GEMINI_API_KEY=...

AI_PROVIDER_TIMEOUT_MS=90000

AI_STREAM_IDLE_TIMEOUT_MS=90000

# Lower-cost lane

CEREBRAS_API_KEY=...

CEREBRAS_BASE_URL=https://api.cerebras.ai/v1

CEREBRAS_CHAT_MODEL=llama3.1-8b

# Flexible / fallback lane

OPENROUTER_API_KEY=...

OPENROUTER_BASE_URL=https://openrouter.ai/api/v1

OPENROUTER_CHAT_MODEL=

# Low-latency lane

GROQ_API_KEY=...

GROQ_BASE_URL=https://api.groq.com/openai/v1

GROQ_CHAT_MODEL=openai/gpt-oss-120b

# Explicit Beeknoee lane

BEEKNOEE_API_KEY=...

BEEKNOEE_BASE_URL=https://platform.beeknoee.com/api/v1

BEEKNOEE_CHAT_MODEL=glm-4.7-flash

Nếu bạn muốn dùng ảnh đính kèm trong AI chat ở production, hãy cấu hình ít nhất một lane có vision thật như Gemini hoặc một model OpenRouter hỗ trợ ảnh.

5. Những lỗi deploy hay gặp

Schema lệch

Backend lên code mới nhưng migration chưa được áp dụng, gây lỗi 500 ở login hoặc dashboard APIs.

Secret yếu

JWT_SECRET placeholder sẽ làm backend không khởi động được.

Callback sai domain

Google/GitHub login fail nếu callback URL hoặc FRONTEND_URL không khớp deployment thật.

Nếu bạn muốn ship an toàn: dùng Vercel cho client, Render Blueprint cho backend, set env chuẩn, chạy migration trước khi start, rồi test login + readiness + 1 query thật trước khi public.

Sẵn sàng khám phá dữ liệu?

Tham gia cộng đồng trên GitHub để đóng góp cho IDE cơ sở dữ liệu địa phương thông minh nhất.

Mở Ứng dụng