Files
AbelBirdNest-Stock/docs/deploy-alpine-update.md

2.8 KiB

Update Deploy Alpine

Panduan ini untuk server production Alpine Linux x86_64 RAM 1 GB. Server tidak menjalankan build/compile.

1. Build Artifact Di Mesin Lokal/Build Machine

Mesin build harus punya Docker.

./deploy/scripts/build-linux-release.sh

Script memakai node:20-alpine, menjalankan npm ci, prisma generate, next build, lalu membuat artifact bertanggal:

abelbirdnest-release-YYYYMMDD-HHMMSS.tar.gz

2. Upload Artifact Ke Server

./deploy/scripts/upload-linux-release.sh abelbirdnest@SERVER_IP /opt/abelbirdnest-web

Script otomatis memilih artifact terbaru dengan pola abelbirdnest-release-*.tar.gz, upload artifact, extract ke:

/opt/abelbirdnest-web/releases/<timestamp>

Lalu update symlink:

/opt/abelbirdnest-web/current

3. Prasyarat Server Alpine

Jalankan sekali di server:

sudo apk add --no-cache nodejs openssl

Pastikan env production ada di:

/var/www/abelbirdnest-web/AbelBirdNest-Stock/.env.production

4. Setup Service OpenRC

Copy template service dari mesin lokal/build machine:

scp deploy/openrc/abelbirdnest-web abelbirdnest@SERVER_IP:/tmp/abelbirdnest-web
ssh abelbirdnest@SERVER_IP
sudo mv /tmp/abelbirdnest-web /etc/init.d/abelbirdnest-web
sudo chmod +x /etc/init.d/abelbirdnest-web
sudo rc-update add abelbirdnest-web default

Service menjalankan:

cd /var/www/abelbirdnest-web/AbelBirdNest-Stock/current
PORT=3007 NODE_ENV=production NODE_OPTIONS=--max-old-space-size=512 node server.js

5. Setelah Upload

Masuk server:

ssh abelbirdnest@SERVER_IP
cd /var/www/abelbirdnest-web/AbelBirdNest-Stock/current

Artifact release dibuat ramping untuk runtime Next.js standalone. Jangan menjalankan npm install, npm run build, atau prisma migrate deploy di server kecil.

Jika update berikutnya membawa migration database, jalankan migration dari mesin build/admin yang punya dependency lengkap dan akses ke database production. Untuk update UI/app tanpa migration, langsung restart service.

Load env hanya jika perlu tes manual:

set -a
. /var/www/abelbirdnest-web/AbelBirdNest-Stock/.env.production
set +a

Restart service:

sudo rc-service abelbirdnest-web restart
sudo rc-service abelbirdnest-web status

6. Verifikasi

curl -I http://127.0.0.1:3007/login
tail -n 100 /var/log/abelbirdnest-web.err
tail -n 100 /var/log/abelbirdnest-web.log

Jika memakai reverse proxy, cek domain public setelah service sehat.

7. Rollback Cepat

Lihat release yang tersedia:

ls -lt /var/www/abelbirdnest-web/AbelBirdNest-Stock/releases

Arahkan current ke release sebelumnya:

sudo ln -sfn /var/www/abelbirdnest-web/AbelBirdNest-Stock/releases/NAMA_RELEASE_LAMA /var/www/abelbirdnest-web/AbelBirdNest-Stock/current
sudo rc-service abelbirdnest-web restart