mbahsomo-note/aupload-build-npm.md

3.5 KiB
Raw Permalink Blame History

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

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 🚀

  1. git push origin main

  2. Gitea Actions jalan

  3. npm run build

  4. Server:

    • hapus semua file lama
    • upload build baru
  5. 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