<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lelxzyy blog]]></title><description><![CDATA[Lelxzyy blog]]></description><link>https://blog.lelxzyy.my.id</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1769778039782/1d57de89-1312-468e-bb67-95333ce1326c.png</url><title>Lelxzyy blog</title><link>https://blog.lelxzyy.my.id</link></image><generator>RSS for Node</generator><lastBuildDate>Thu, 04 Jun 2026 11:34:16 GMT</lastBuildDate><atom:link href="https://blog.lelxzyy.my.id/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[🔐 Memahami Environment Variable di Next.js (Dev vs Production)]]></title><description><![CDATA[Pendahuluan
Saat pertama kali deploy aplikasi Next.js, banyak developer mengalami masalah seperti:

data tidak muncul

API gagal di-fetch

auth error padahal di local aman


Penyebabnya sering kali bukan bug di kode, tapi Environment Variable (ENV) y...]]></description><link>https://blog.lelxzyy.my.id/memahami-environment-variable-di-nextjs-dev-vs-production</link><guid isPermaLink="true">https://blog.lelxzyy.my.id/memahami-environment-variable-di-nextjs-dev-vs-production</guid><dc:creator><![CDATA[Lelxzyy]]></dc:creator><pubDate>Fri, 30 Jan 2026 13:10:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769778900315/b301cb47-f345-4fa4-955f-0568070dc2fd.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-pendahuluan">Pendahuluan</h2>
<p>Saat pertama kali deploy aplikasi <strong>Next.js</strong>, banyak developer mengalami masalah seperti:</p>
<ul>
<li><p>data tidak muncul</p>
</li>
<li><p>API gagal di-fetch</p>
</li>
<li><p>auth error padahal di local aman</p>
</li>
</ul>
<p>Penyebabnya sering kali <strong>bukan bug di kode</strong>, tapi <strong>Environment Variable (ENV)</strong> yang salah konfigurasi.</p>
<p>Di artikel ini, kita bahas <strong>cara kerja ENV di Next.js</strong> secara praktis dan mudah dipahami.</p>
<hr />
<h2 id="heading-apa-itu-environment-variable">Apa Itu Environment Variable?</h2>
<p>Environment Variable adalah <strong>nilai konfigurasi</strong> yang:</p>
<ul>
<li><p>tidak ditulis langsung di kode</p>
</li>
<li><p>bisa berbeda antara <strong>development</strong> dan <strong>production</strong></p>
</li>
<li><p>biasanya berisi URL, token, atau secret</p>
</li>
</ul>
<p>Contoh:</p>
<pre><code class="lang-plaintext">API_URL=https://api.example.com
</code></pre>
<hr />
<h2 id="heading-file-env-yang-dibaca-nextjs">File ENV yang Dibaca Next.js</h2>
<p>Next.js <strong>TIDAK membaca semua file</strong> <code>.env</code> secara sembarangan.</p>
<p>Urutan prioritasnya:</p>
<ol>
<li><p><code>.env.local</code> ✅</p>
</li>
<li><p><code>.env.development</code></p>
</li>
<li><p><code>.env.production</code></p>
</li>
<li><p><code>.env</code></p>
</li>
</ol>
<p>📌 <code>.env.example</code> hanya template, tidak pernah dibaca.</p>
<hr />
<h2 id="heading-kenapa-envlocal-direkomendasikan">Kenapa <code>.env.local</code> Direkomendasikan?</h2>
<p>Karena:</p>
<ul>
<li><p>otomatis dibaca Next.js</p>
</li>
<li><p>tidak ikut ke-commit (aman)</p>
</li>
<li><p>bisa beda di tiap server</p>
</li>
</ul>
<p>Contoh membuatnya:</p>
<pre><code class="lang-plaintext">cp .env.example .env.local
</code></pre>
<hr />
<h2 id="heading-perbedaan-env-server-amp-client">Perbedaan ENV Server &amp; Client</h2>
<p>Ini bagian <strong>paling sering bikin error</strong>.</p>
<h3 id="heading-env-tanpa-nextpublic">❌ ENV tanpa <code>NEXT_PUBLIC_</code></h3>
<pre><code class="lang-plaintext">API_SECRET=xxxxx
</code></pre>
<p>❌ Tidak bisa dipakai di browser</p>
<h3 id="heading-env-dengan-nextpublic">✅ ENV dengan <code>NEXT_PUBLIC_</code></h3>
<pre><code class="lang-plaintext">NEXT_PUBLIC_SITE_URL=http://localhost:8080
</code></pre>
<p>✅ Bisa dipakai di client &amp; browser</p>
<p>📌 Gunakan <code>NEXT_PUBLIC_</code> <strong>HANYA untuk data yang aman dipublikasikan</strong>.</p>
<hr />
<h2 id="heading-contoh-kasus-nyata-port-salah">Contoh Kasus Nyata (Port Salah)</h2>
<p>Misalnya aplikasi kamu jalan di port <strong>8080</strong>, tapi kodenya:</p>
<pre><code class="lang-plaintext">baseURL: process.env.BETTER_AUTH_URL || "http://localhost:3000"
</code></pre>
<p>Jika <code>BETTER_AUTH_URL</code> tidak diset:<br />👉 request akan lari ke <strong>port 3000 (mati)</strong><br />👉 hasilnya: <strong>Failed to fetch</strong></p>
<h3 id="heading-solusi">Solusi:</h3>
<pre><code class="lang-plaintext">BETTER_AUTH_URL=http://localhost:8080
</code></pre>
<hr />
<h2 id="heading-perlu-build-ulang-atau-tidak">Perlu Build Ulang atau Tidak?</h2>
<p>✅ <strong>YA</strong>, kalau:</p>
<ul>
<li><p>ubah <code>.env.local</code></p>
</li>
<li><p>deploy production</p>
</li>
<li><p>pakai <code>pm2 start npm -- start</code></p>
</li>
</ul>
<p>❌ Tidak perlu build ulang kalau:</p>
<ul>
<li><p>cuma ubah UI</p>
</li>
<li><p>pakai <code>npm run dev</code></p>
</li>
</ul>
<hr />
<h2 id="heading-workflow-env-yang-benar-production">Workflow ENV yang Benar (Production)</h2>
<pre><code class="lang-plaintext">cp .env.example .env.local
nano .env.local
npm run build
pm2 restart next-portfolio
</code></pre>
<hr />
<h2 id="heading-kesalahan-umum">Kesalahan Umum</h2>
<ul>
<li><p>❌ mengandalkan <code>.env.example</code></p>
</li>
<li><p>❌ lupa restart PM2</p>
</li>
<li><p>❌ pakai <a target="_blank" href="http://localhost:3000"><code>localhost:3000</code></a> di server</p>
</li>
<li><p>❌ lupa prefix <code>NEXT_PUBLIC_</code></p>
</li>
</ul>
<hr />
<h2 id="heading-penutup">Penutup</h2>
<p>Memahami <strong>ENV di Next.js</strong> akan menghemat:</p>
<ul>
<li><p>waktu debugging</p>
</li>
<li><p>error aneh di production</p>
</li>
<li><p>deploy gagal tanpa pesan jelas</p>
</li>
</ul>
<p>Kalau deploy kamu sering bermasalah, <strong>cek ENV dulu sebelum cek kode</strong>.</p>
]]></content:encoded></item><item><title><![CDATA[🚀 Deploy Next.js di VPS Menggunakan PM2 (Lengkap & Praktis)]]></title><description><![CDATA[Pendahuluan
Saat membangun aplikasi Next.js, menjalankannya di local dengan npm run dev memang mudah.Tapi ketika masuk ke server / VPS, kita butuh cara yang stabil, aman, dan otomatis hidup kembali saat server restart.
Di artikel ini, aku akan membah...]]></description><link>https://blog.lelxzyy.my.id/deploy-nextjs-di-vps-menggunakan-pm2-lengkap-and-praktis</link><guid isPermaLink="true">https://blog.lelxzyy.my.id/deploy-nextjs-di-vps-menggunakan-pm2-lengkap-and-praktis</guid><dc:creator><![CDATA[Lelxzyy]]></dc:creator><pubDate>Fri, 30 Jan 2026 12:13:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1769778372501/a0df5a51-6ead-4fc7-ae80-1c72b411bc18.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-pendahuluan">Pendahuluan</h2>
<p>Saat membangun aplikasi <strong>Next.js</strong>, menjalankannya di local dengan <code>npm run dev</code> memang mudah.<br />Tapi ketika masuk ke <strong>server / VPS</strong>, kita butuh cara yang <strong>stabil</strong>, <strong>aman</strong>, dan <strong>otomatis hidup kembali saat server restart</strong>.</p>
<p>Di artikel ini, aku akan membahas <strong>cara deploy Next.js di VPS menggunakan PM2</strong>, lengkap dari build hingga troubleshooting umum.</p>
<hr />
<h2 id="heading-kenapa-tidak-npm-run-dev-di-server">Kenapa Tidak <code>npm run dev</code> di Server?</h2>
<p>Mode <code>dev</code>:</p>
<ul>
<li><p>❌ Tidak untuk production</p>
</li>
<li><p>❌ Boros resource</p>
</li>
<li><p>❌ Mati saat terminal ditutup</p>
</li>
</ul>
<p>Solusinya adalah <strong>production build + PM2</strong>.</p>
<hr />
<h2 id="heading-persiapan">Persiapan</h2>
<p>Pastikan di VPS kamu sudah terinstall:</p>
<ul>
<li><p>Node.js <strong>v20+</strong></p>
</li>
<li><p>npm</p>
</li>
<li><p>Project Next.js siap jalan</p>
</li>
</ul>
<p>Cek versi Node:</p>
<pre><code class="lang-plaintext">node -v
</code></pre>
<hr />
<h2 id="heading-1-build-project-nextjs">1. Build Project Next.js</h2>
<p>Sebelum dijalankan di production, <strong>WAJIB build dulu</strong>:</p>
<pre><code class="lang-plaintext">npm run build
</code></pre>
<p>Jika sukses, akan muncul:</p>
<pre><code class="lang-plaintext">Compiled successfully
</code></pre>
<hr />
<h2 id="heading-2-install-pm2">2. Install PM2</h2>
<p>PM2 adalah process manager untuk Node.js.</p>
<pre><code class="lang-plaintext">npm install -g pm2
</code></pre>
<p>Cek:</p>
<pre><code class="lang-plaintext">pm2 -v
</code></pre>
<hr />
<h2 id="heading-3-jalankan-nextjs-dengan-pm2">3. Jalankan Next.js dengan PM2</h2>
<p>Gunakan <code>next start</code>, <strong>bukan dev</strong>.</p>
<p>Contoh menjalankan di port <strong>8080</strong>:</p>
<pre><code class="lang-plaintext">pm2 start npm --name "next-portfolio" -- start -- -H 0.0.0.0 -p 8080
</code></pre>
<p>Cek status:</p>
<pre><code class="lang-plaintext">pm2 list
</code></pre>
<hr />
<h2 id="heading-4-auto-start-saat-server-reboot">4. Auto Start Saat Server Reboot</h2>
<p>Agar aplikasi otomatis hidup kembali:</p>
<pre><code class="lang-plaintext">pm2 save
pm2 startup
</code></pre>
<p>Jalankan command yang muncul di terminal.</p>
<hr />
<h2 id="heading-5-konfigurasi-environment-variable">5. Konfigurasi Environment Variable</h2>
<p>Next.js <strong>tidak membaca</strong> <code>.env.example</code>.<br />Gunakan <code>.env.local</code>.</p>
<pre><code class="lang-plaintext">cp .env.example .env.local
</code></pre>
<p>Contoh env penting:</p>
<pre><code class="lang-plaintext">NEXT_PUBLIC_SITE_URL=http://localhost:8080
BETTER_AUTH_URL=http://localhost:8080
</code></pre>
<p>⚠️ Setiap ubah ENV → <strong>build ulang wajib dilakukan</strong>.</p>
<hr />
<h2 id="heading-6-restart-setelah-update">6. Restart Setelah Update</h2>
<pre><code class="lang-plaintext">npm run build
pm2 restart next-portfolio
</code></pre>
<hr />
<h2 id="heading-troubleshooting-umum">Troubleshooting Umum</h2>
<h3 id="heading-website-tidak-bisa-diakses">❌ Website Tidak Bisa Diakses</h3>
<ul>
<li><p>Pastikan port terbuka (<code>ufw allow 8080</code>)</p>
</li>
<li><p>Pastikan app listen ke <code>0.0.0.0</code></p>
</li>
</ul>
<h3 id="heading-data-kosong-failed-to-fetch">❌ Data Kosong / Failed to Fetch</h3>
<ul>
<li><p><code>.env.local</code> belum diisi</p>
</li>
<li><p>ENV berubah tapi tidak build ulang</p>
</li>
<li><p>URL API masih <a target="_blank" href="http://localhost:3000"><code>localhost:3000</code></a></p>
</li>
</ul>
<h3 id="heading-pm2-online-tapi-web-mati">❌ PM2 Online Tapi Web Mati</h3>
<p>Cek log:</p>
<pre><code class="lang-plaintext">pm2 logs next-portfolio
</code></pre>
<hr />
<h2 id="heading-penutup">Penutup</h2>
<p>Dengan <strong>PM2</strong>, aplikasi Next.js jadi:</p>
<ul>
<li><p>✅ Stabil</p>
</li>
<li><p>✅ Auto-restart</p>
</li>
<li><p>✅ Siap production</p>
</li>
</ul>
<p>Kalau kamu serius deploy Next.js ke server, <strong>PM2 adalah pilihan wajib</strong>.</p>
<hr />
<p>✨ Semoga bermanfaat dan selamat ngoding!</p>
]]></content:encoded></item></channel></rss>