3.9 KiB
3.9 KiB
Deploy Production
Dokumen ini menyiapkan deploy production untuk:
- domain
abelbirdnest.id - reverse proxy
nginx - aplikasi Next.js di port
3007 - database
PostgreSQL - source code dari git
https://git.iptek.co/wirabasalamah/AbelBirdNest-Stock.git - user service khusus
abelbirdnest
1. Persiapan Server
Siapkan:
- Node.js LTS
- npm
- PostgreSQL
- nginx
- certbot / SSL Let’s Encrypt
Direktori contoh:
/var/www/abelbirdnest-web
2. Buat User Khusus Aplikasi
Jalankan sebagai root atau dengan sudo:
sudo useradd -r -m -d /var/www/abelbirdnest-web -s /bin/bash abelbirdnest
sudo mkdir -p /var/www/abelbirdnest-web
sudo chown -R abelbirdnest:abelbirdnest /var/www/abelbirdnest-web
Catatan:
- user
abelbirdnestdipakai khusus untuk menjalankan service aplikasi - jangan jalankan app production dengan user pribadi atau
root
3. Clone Repo dari Git
Masuk sebagai user aplikasi:
sudo -u abelbirdnest -H bash
cd /var/www/abelbirdnest-web
git clone https://git.iptek.co/wirabasalamah/AbelBirdNest-Stock.git .
Kalau server butuh autentikasi git internal, siapkan credential sesuai kebijakan server Git Anda.
4. Environment Production
Salin .env.production.example menjadi .env.production, lalu isi nilainya.
Yang wajib:
NODE_ENV=production
PORT=3007
APP_URL=https://abelbirdnest.id
DATABASE_URL=postgresql://...
AUTH_SECRET=...
AUTH_BOOTSTRAP=false
SMTP_HOST=...
SMTP_PORT=465
SMTP_SECURE=true
SMTP_USER=...
SMTP_PASSWORD=...
SMTP_FROM=...
Catatan:
AUTH_SECRETharus random panjang.AUTH_BOOTSTRAP=falsewajib untuk production.APP_URLharus domain production final.
5. Install Dependency, Database & Migration
Repo ini sudah disiapkan memakai migration Prisma.
Jalankan:
cd /var/www/abelbirdnest-web
npm install
npm run prisma:generate
npm run prisma:migrate:deploy
Kalau perlu isi master awal:
npm run seed:master
Data seed yang dibawa:
- grade
- bank
- currency
6. Build Production
npm run build
7. Jalankan App di Port 3007
Manual:
PORT=3007 npm run start
Atau gunakan systemd dari:
deploy/systemd/abelbirdnest-web.service
Contoh setup:
sudo cp deploy/systemd/abelbirdnest-web.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable abelbirdnest-web
sudo systemctl start abelbirdnest-web
sudo systemctl status abelbirdnest-web
Autostart saat server restart terjadi karena service di-enable.
Untuk verifikasi:
sudo systemctl is-enabled abelbirdnest-web
8. Reverse Proxy Nginx
Gunakan file:
deploy/nginx/abelbirdnest.id.conf
Pasang:
sudo cp deploy/nginx/abelbirdnest.id.conf /etc/nginx/sites-available/abelbirdnest.id.conf
sudo ln -s /etc/nginx/sites-available/abelbirdnest.id.conf /etc/nginx/sites-enabled/abelbirdnest.id.conf
sudo nginx -t
sudo systemctl reload nginx
9. Health Check
Endpoint health:
GET /api/v1/health
Contoh:
curl https://abelbirdnest.id/api/v1/health
10. Update Deployment Berikutnya
Jika aplikasi sudah live dan ada update dari git:
cd /var/www/abelbirdnest-web
git pull origin main
npm install
npm run prisma:migrate:deploy
npm run build
sudo systemctl restart abelbirdnest-web
Jika branch utama nanti bukan main, sesuaikan perintah git pull.
11. Checklist Go-Live
AUTH_BOOTSTRAP=falseAUTH_SECRETsudah production-gradeAPP_URL=https://abelbirdnest.id- SSL aktif
- database backup aktif
npm run buildlulusnpm run prisma:migrate:deploylulusnpm run seed:masterselesai jika dibutuhkan- login, reset password, dan email verifikasi sudah dites
- create purchase, receipt, lot, sale sudah dites
12. Catatan Penting
- Jangan pakai
npm run db:pushuntuk production. - Jangan pakai akun default development.
- Jangan simpan
.env.productiondi repo. - Pastikan ownership file tetap
abelbirdnest:abelbirdnest.