Deploy SvelteKit ke VPS Ubuntu tanpa drama
Caddy, systemd, dan satu skrip deploy yang bisa dibaca orang lain di tim.
Tidak semua proyek cocok di platform serverless. Untuk API Canaya POS yang butuh koneksi database panjang, kami tetap memakai satu VPS Ubuntu. Tujuannya sederhana: siapa pun di tim bisa men-deploy tanpa bertanya.
Susunan server
Satu VPS, tiga komponen: Caddy sebagai reverse proxy dan pengurus TLS, aplikasi Node hasil adapter-node, dan systemd untuk menjaga proses tetap hidup.
api.contoh.id {
encode zstd gzip
reverse_proxy 127.0.0.1:3000
}Unit systemd
Proses dijalankan sebagai user tanpa hak sudo. Variabel lingkungan dibaca dari file terpisah yang tidak masuk repo.
[Service]
User=canaya
WorkingDirectory=/srv/canaya-api/current
EnvironmentFile=/srv/canaya-api/.env
ExecStart=/usr/bin/node build/index.js
Restart=alwaysSkrip deploy
Setiap rilis masuk ke folder baru, lalu symlink current dipindah. Kalau ada yang salah, rollback cukup memindah symlink kembali.
# build lokal, kirim, lalu tukar symlink
pnpm build
rsync -az build package.json server:/srv/canaya-api/releases/$TAG/
ssh server "ln -sfn releases/$TAG /srv/canaya-api/current && sudo systemctl restart canaya-api"Hasilnya bukan arsitektur paling canggih, tapi bisa dibaca dalam lima menit oleh orang baru di tim.