Situs Statis
Zenavo menyajikan situs statis dengan Caddy di port 8080, dibangun dari repositori Anda di setiap deploy.
HTML biasa
Repositori dengan index.html dan tanpa package.json dideteksi sebagai static: file-filenya disajikan apa adanya.
Situs hasil build (Vite, React, Vue, Svelte, Astro)
Proyek Node.js yang framework-nya menghasilkan file statis, seperti Vite, Create React App, Vue, SvelteKit dengan adapter static, atau Astro, dibangun dengan skrip build-nya dan folder output-nya disajikan. zbpack mengenal folder setiap framework (dist untuk Vite, build untuk Create React App); Build Plan Preview menampilkannya sebagai outputDir. Untuk folder lain, atur di Settings → Build → zbpack options:
ZBPACK_OUTPUT_DIR=publicAplikasi satu halaman
Router sisi klien (React Router, Vue Router) bekerja tanpa pengaturan: path tanpa ekstensi file yang tidak cocok dengan file apa pun mengembalikan index.html, sedangkan aset yang tidak ada, seperti /assets/app.js, tetap mengembalikan 404.
Variabel di situs statis
Situs statis tidak punya server, jadi variabelnya, seperti VITE_* milik Vite (import.meta.env.VITE_API_URL) atau REACT_APP_* milik Create React App, harus ada saat dibangun. Variabel di tab Variable hanya diberikan ke layanan yang berjalan, jadi atur variabel ini di Settings → Build → Build arguments, misalnya:
VITE_API_URL=https://api.example.comVariabel ini sampai ke build tanpa Dockerfile; lihat argumen build. Dengan Dockerfile sendiri, deklarasikan masing-masing dengan baris ARG sebelum perintah build. Semua isi bundle bersifat publik: jangan pernah menaruh rahasia di variabel ini.
Deploy
- Add Service → GitHub, pilih repositori dan branch.
- Klik Next, pastikan pratinjau menampilkan static atau nodejs dengan framework dan folder output Anda, lalu klik Deploy.
- Buat domain di tab Networking, atau pasang domain Anda sendiri.
Generator lain
Untuk Hugo, Jekyll, MkDocs, atau generator yang tidak dikenal zbpack, commit output hasil build dan arahkan ZBPACK_OUTPUT_DIR ke sana, atau tambahkan Dockerfile yang membangun dan menyajikan situs:
FROM hugomods/hugo:exts AS build
WORKDIR /src
COPY . .
RUN hugo --minify
FROM caddy:2-alpine
COPY --from=build /src/public /usr/share/caddy
EXPOSE 80Masalah umum
| Gejala | Penyebab |
|---|---|
Memuat ulang halaman selain / mengembalikan 404 | Dockerfile Anda sendiri menyajikan situs dengan server yang tidak punya fallback ke index.html. Gunakan try_files {path} /index.html di Caddy, atau build yang dibuatkan. |
| Situs kosong dan console menampilkan 404 untuk aset | Base path build bukan /. Periksa base di vite.config atau homepage di package.json. |
Nilai VITE_* bernilai undefined | Nilainya hanya diatur di tab Variable, yang tidak sampai ke build. Atur sebagai argumen build lalu deploy ulang; dengan Dockerfile sendiri, deklarasikan juga dengan ARG. |