3.5 KiB
Mantap 👍 Dengan SvelteKit + Nginx + Gitea, setup paling bersih & profesional adalah:
Auto-deploy via Gitea Actions → build → replace semua file di server
Aku susun end-to-end, dari SvelteKit sampai Nginx & Gitea Actions. Tinggal copas.
1️⃣ Pastikan SvelteKit mode STATIC (wajib)
Di svelte.config.js:
import adapter from '@sveltejs/adapter-static';
export default {
kit: {
adapter: adapter({
pages: 'build',
assets: 'build',
fallback: null
})
}
};
Kalau belum:
npm i -D @sveltejs/adapter-static
Build test lokal:
npm run build
Pastikan folder build/ muncul.
2️⃣ Setup Nginx (static site)
Contoh config:
server {
listen 80;
server_name domainkamu.com;
root /var/www/sveltekit;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
Reload:
sudo nginx -t
sudo systemctl reload nginx
📌 Folder target deploy:
/var/www/sveltekit
3️⃣ Siapkan server untuk auto-deploy
a. Buat user deploy (opsional tapi recommended)
sudo adduser deploy
sudo chown -R deploy:deploy /var/www/sveltekit
b. Setup SSH key (WAJIB)
Di local / runner:
ssh-keygen -t ed25519
Copy public key:
ssh-copy-id deploy@SERVER_IP
Pastikan bisa login tanpa password:
ssh deploy@SERVER_IP
4️⃣ Setup Gitea Actions (CI/CD)
Di repo SvelteKit kamu, buat folder:
.gitea/workflows/deploy.yml
Isi FULL deploy pipeline 👇
name: Deploy SvelteKit
on:
push:
branches:
- main
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: 20
- name: Install dependencies
run: npm ci
- name: Build SvelteKit
run: npm run build
- name: Deploy to server
uses: appleboy/ssh-action@v1.0.3
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_SSH_KEY }}
script: |
rm -rf /var/www/sveltekit/*
rsync -av --delete build/ /var/www/sveltekit/
5️⃣ Set Secrets di Gitea
Repo → Settings → Secrets:
| Name | Value |
|---|---|
SERVER_HOST |
IP / domain server |
SERVER_USER |
deploy |
SERVER_SSH_KEY |
private key SSH |
⚠️ SSH key tanpa passphrase untuk CI.
6️⃣ Alur yang terjadi otomatis 🚀
-
git push origin main -
Gitea Actions jalan
-
npm run build -
Server:
- hapus semua file lama
- upload build baru
-
Nginx langsung serve versi terbaru
ZERO manual upload. ZERO drama.
7️⃣ Struktur final di server
/var/www/sveltekit
├── index.html
├── _app/
├── assets/
└── favicon.png
8️⃣ Upgrade level (opsional tapi keren)
Kalau mau zero-downtime deploy:
/var/www/releases/20260204/
ln -sfn releases/20260204 current
Atau pakai versioned deploy + rollback (tinggal ganti symlink).
Ringkasannya 🔥
✅ Static SvelteKit ✅ Nginx simple & cepat ✅ Gitea Actions auto deploy ✅ Replace semua file server ✅ Aman & scalable
Kalau kamu mau:
- subdomain staging
- HTTPS (Certbot)
- rollback 1 klik
- deploy multi environment