Environment Setup
Menempatkan nama environment variable pada scope Preview atau Production yang tepat, membedakan browser-safe configuration dari secret server-only, dan memahami kapan deployment perlu dibuat ulang.
Tujuan belajar
- Membedakan .env.local dari environment variable pada platform deployment
- Memilih scope Preview dan Production sesuai kebutuhan app
- Menjaga secret tetap server-only tanpa prefix NEXT_PUBLIC_
- Menjelaskan mengapa perubahan environment variable memerlukan deployment baru
Isi lesson
6 blok- 1.Nama variable boleh dibahas; nilainya tidak perlu dibagikanBelum selesaiWajib
- 2.Pisahkan browser-safe config dari secret server-onlyBelum selesaiWajib
- 3.Coding practiceBelum selesaiWajib
- 4.Cek pemahamanBelum selesaiWajib
- 5.Preview bukan tempat aman untuk semua production credentialBelum selesaiWajib
- 6.RingkasanBelum selesaiWajib
Nama variable boleh dibahas; nilainya tidak perlu dibagikan
Wajib.env.local membantu project lokal membaca configuration tanpa memasukkan nilai ke source control. Saat app dideploy, Vercel tidak membaca file lokalmu. Tambahkan nama dan nilai variable melalui Project Settings, lalu pilih environment yang memang membutuhkan variable tersebut, misalnya Preview, Production, atau keduanya. Gunakan nilai test untuk Preview bila service yang dipakai mendukungnya; jangan tanpa sengaja mengarahkan branch eksperimen ke data production.
Prefix NEXT_PUBLIC_ membuat nilai tersedia pada browser bundle. Ini cocok untuk configuration publik seperti NEXT_PUBLIC_SUPABASE_URL atau publishable key yang memang didesain untuk browser bersama RLS. Service role key, session secret, API secret, dan password database harus tetap server-only tanpa prefix tersebut. Saat variable berubah di Vercel, deployment yang sudah ada tidak menerima perubahan itu secara retroaktif. Buat deployment baru, lalu verifikasi URL yang tepat agar app benar-benar memakai configuration baru.
Bagian ini memengaruhi progres lesson.
Pisahkan browser-safe config dari secret server-only
Wajib// Aman tersedia di browser bila memang diperlukan oleh client
const supabaseUrl = process.env.NEXT_PUBLIC_SUPABASE_URL;
const supabasePublishableKey =
process.env.NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY;
// Hanya dipakai pada server. Jangan beri prefix NEXT_PUBLIC_.
const serviceRoleKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
const sessionSecret = process.env.SESSION_SECRET;
// Jangan commit nilai production ke .env.local atau source code.
// Di Vercel, pilih scope Preview dan/atau Production lalu redeploy.Yang penting pada contoh ini adalah boundary, bukan nilai variablenya. Browser-safe tidak berarti memberi akses tanpa batas: Supabase tetap membutuhkan RLS policy. Sebaliknya, satu secret yang diawali NEXT_PUBLIC_ akan ikut dibundel untuk browser dan harus dianggap bocor. Variable baru atau perubahan value berlaku untuk deployment berikutnya, sehingga redeploy adalah bagian dari perubahan configuration.
Bagian ini memengaruhi progres lesson.
Coding practice
WajibDibuka di workspace khususClassify production environment values
Lengkapi configuration map yang membedakan browser-safe value, secret server-only, dan scope deployment tanpa menulis nilai credential.
Tujuan awal: Fokus di tab TSX.
Practice ini dibuka di workspace khusus. Buka practice untuk memakai editor, preview, dan cek otomatis.
Tombol selesai aktif setelah semua validasi wajib lolos.
Cek pemahaman
WajibJawab duluCek pemahaman singkat
Kamu memperbarui SESSION_SECRET pada Project Settings Vercel. Apa langkah berikutnya agar Production Deployment memakai nilai baru?
Progres lesson naik setelah jawaban benar.
Peringatan
WajibPreview bukan tempat aman untuk semua production credential
Preview Deployment adalah environment deploy yang terpisah, bukan sekadar localhost dengan URL lain. Tentukan data dan provider mana yang boleh disentuh preview. Untuk auth, pastikan callback URL yang digunakan memang sesuai environment. Untuk data, gunakan test project atau batasi operation bila tersedia. Jangan memakai production secret pada setiap branch hanya karena setup paling cepat.
Bagian ini memengaruhi progres lesson.
Ringkasan
Wajib- .env.local hanya untuk local workflow; deployment memakai configuration platformnya sendiri.
- Pilih scope Preview dan Production secara sengaja untuk setiap variable.
- NEXT_PUBLIC_ hanya untuk nilai yang memang boleh masuk browser bundle.
- Secret server-only tidak boleh di-commit atau diberikan prefix public.
- Perubahan variable memerlukan deployment baru sebelum dapat diverifikasi.
Bagian ini memengaruhi progres lesson.
Langkah berikutnya
Selesaikan bagian penting lesson ini
Lanjutkan blok wajib berikutnya: Nama variable boleh dibahas; nilainya tidak perlu dibagikan.