03. Referensi Environment Variables
Ringkasan
Dokumen ini menjelaskan seluruh konfigurasi variabel lingkungan (environment variables) yang didukung oleh boilerplate ini. Variabel-variabel ini digunakan untuk mengatur koneksi database, rahasia otentikasi, rate limiter, gateway pembayaran, penyimpanan cloud, dan API key asisten AI.
Cara Kerja
Environment variables didefinisikan pada file .env dan divalidasi tipenya secara ketat di src/env.js menggunakan @t3-oss/env-nextjs dan schema Zod. Hal ini menjamin jika ada variabel yang hilang atau tidak valid, aplikasi akan langsung memunculkan eror saat startup sebelum bug sempat menyebar di server produksi.
// Contoh validasi di src/env.js
export const env = createEnv({
server: {
DATABASE_URL: z.string().url(),
NEXTAUTH_SECRET: z.string().min(1),
NEXTAUTH_URL: z.string().url().optional(),
},
client: {
// Variabel publik sisi client
},
runtimeEnv: {
DATABASE_URL: process.env.DATABASE_URL,
NEXTAUTH_SECRET: process.env.NEXTAUTH_SECRET,
NEXTAUTH_URL: process.env.NEXTAUTH_URL,
},
});Tabel Referensi Konfigurasi
1. Database & Auth (Wajib)
| Variabel | Wajib | Keterangan | Contoh |
|---|---|---|---|
DATABASE_URL | Ya | URL koneksi basis data MySQL | mysql://user:pass@host:3306/dbname |
NEXTAUTH_SECRET | Ya | Kunci enkripsi token JWT NextAuth | random-string-minimal-32-karakter |
NEXTAUTH_URL | Opsional | URL dasar aplikasi Anda (wajib di produksi) | https://domainanda.com |
2. Upstash Redis (Opsional - Rate Limiting)
Digunakan untuk koordinasi rate limiting terdistribusi di server produksi. Jika kosong, sistem otomatis menggunakan memori lokal secara gratis.
| Variabel | Wajib | Keterangan |
|---|---|---|
UPSTASH_REDIS_REST_URL | Tidak | URL Endpoint REST API Upstash Redis |
UPSTASH_REDIS_REST_TOKEN | Tidak | Token Bearer REST API Upstash Redis |
3. Integrasi Pihak Ketiga (Bisa dikonfigurasi via GUI Admin)
Seluruh kredensial pihak ketiga (Midtrans, Stripe, Cloudflare R2, Supabase, Cloudinary, Gemini, Groq, OpenAI, Claude, Google OAuth) juga dapat Anda atur secara dinamis dan visual langsung dari halaman panel admin dashboard /settings.
| Integrasi | Variabel Lingkungan Utama |
|---|---|
| Midtrans | MIDTRANS_SERVER_KEY, MIDTRANS_CLIENT_KEY, MIDTRANS_IS_PRODUCTION |
| Stripe | STRIPE_SECRET_KEY, STRIPE_PUBLISHABLE_KEY, STRIPE_WEBHOOK_SECRET |
| Cloudflare R2 | R2_ACCOUNT_ID, R2_ACCESS_KEY_ID, R2_SECRET_ACCESS_KEY, R2_BUCKET_NAME, R2_PUBLIC_URL |
| Supabase | SUPABASE_URL, SUPABASE_SERVICE_ROLE_KEY, SUPABASE_BUCKET |
| Cloudinary | CLOUDINARY_CLOUD_NAME, CLOUDINARY_API_KEY, CLOUDINARY_API_SECRET |
| Google Gemini AI | GEMINI_API_KEY |
| Groq LPU | GROQ_API_KEY |
| OpenAI & Claude | OPENAI_API_KEY, CLAUDE_API_KEY |
| Google OAuth | GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET |
Berkas Terkait
.env.example — Template contoh environment variablessrc/env.js — Validasi skema Zod untuk environment variables