Instalasi On-Premise
Deploy Lokawatch di infrastruktur Anda sendiri menggunakan Docker Compose. Pastikan Anda telah menyelesaikan checklist Persiapan Server sebelum memulai.
Semua perintah di bawah dijalankan sebagai pengguna deploy. Tim Lokawatch akan membantu pengaturan awal — panduan ini tersedia agar Anda memahami setiap langkah.
1. Klon Repository
Account manager Anda akan memberikan URL repository Git. Klon repository tersebut di server:
git clone REPO_URL_DARI_ACCOUNT_MANAGER LokaWatch cd LokaWatch 2. Konfigurasi Environment Variables
Semua file deployment berada di infrastructure/on-premise/. Salin file environment contoh dan isi nilainya:
cp infrastructure/on-premise/.env.example infrastructure/on-premise/.env nano infrastructure/on-premise/.env Nilai utama yang harus diisi di .env:
| Variabel | Keterangan | Contoh |
|---|---|---|
DOMAIN | Domain atau subdomain Anda (digunakan untuk SSL dan nginx) | lokawatch.perusahaan.com |
POSTGRES_PASSWORD | Password database — pilih string acak yang kuat | openssl rand -hex 32 |
JWT_SECRET_KEY | Kunci signing JWT — minimal 32 karakter acak | openssl rand -hex 32 |
ALLOWED_ORIGINS | Array JSON origin CORS yang diizinkan | ["https://lokawatch.perusahaan.com"] |
Jangan pernah commit file .env. File ini berisi rahasia dan sudah terdaftar di .gitignore.
3. Generate Sertifikat SSL
Lokawatch selalu berjalan dengan HTTPS. Buat sertifikat SSL untuk domain Anda:
make ssl-generate DOMAIN=domainanda.com EMAIL=[email protected] Skrip akan menampilkan tiga opsi. Pilih berdasarkan setup Anda:
| # | Metode | Kapan digunakan |
|---|---|---|
| 1 | Let's Encrypt | VPS publik dengan A record langsung (domain mengarah ke IP server). Membutuhkan port 80 dan 443 terbuka. |
| 2 | Self-signed | Di belakang proxy Cloudflare (orange cloud) — Cloudflare menangani sertifikat SSL publik di edge. Server origin hanya membutuhkan sertifikat self-signed untuk koneksi terenkripsi antara Cloudflare dan VPS. |
| 3 | mkcert | Pengembangan lokal saja (localhost). Sertifikat hanya dipercaya di mesin yang menjalankan mkcert -install. |
Menggunakan proxy Cloudflare (orange cloud)? Pilih opsi 2 (self-signed). Cloudflare memutus koneksi SSL di edge-nya dengan sertifikat tepercaya miliknya sendiri. Server Anda hanya membutuhkan sertifikat apa pun untuk koneksi antara Cloudflare dan origin Anda — sertifikat self-signed sudah cukup.
4. Mulai Layanan
Pull semua image Docker dan jalankan stack:
make down make up Verifikasi semua container berjalan:
docker ps Semua layanan harus menampilkan status Up. Container yang diharapkan:
backend-api— Core REST APIai-engine— Analisis frame dan inferensi AIstream-worker— Pemrosesan stream kameradashboard— Aplikasi web Safety Officerpostgres— Database PostgreSQLredis— Cache dan message brokerollama— LLM lokal untuk ringkasan alertnginx— Reverse proxy dengan SSL terminationcertbot— Perpanjangan SSL otomatis (latar belakang)
5. Jalankan Migrasi Database & Seed
Setelah semua layanan sehat, inisialisasi database:
make db-migrate make db-seed Setelah seeding, salin UUID tenant yang tercetak dan atur di .env Anda:
nano infrastructure/on-premise/.env Kemudian restart layanan agar tenant ID diterapkan:
make down && make up 6. Akses Dashboard
Buka browser dan navigasi ke domain Anda:
https://domainanda.com Login menggunakan kredensial yang dibuat oleh make db-seed (ditampilkan di output seed).
Skenario Deployment
Lokawatch mendukung tiga mode deployment. Perintah make up di atas menggunakan mode all-in-one default. Untuk setup lainnya:
All-in-One (default)
Dashboard dan backend di server yang sama, domain yang sama. Menggunakan docker-compose.yml.
Backend Saja
Gunakan ketika dashboard dihosting di tempat lain (mis. Cloudflare Pages).
make up-backend make db-migrate-be make db-seed-be Dashboard Saja
Gunakan ketika backend berada di server terpisah. Dashboard terhubung ke backend melalui NEXT_PUBLIC_API_URL.
make up-dashboard 7. Memperbarui Lokawatch
Ketika versi baru tersedia, tarik kode terbaru dan build ulang:
git pull make build make down make up make db-migrate Selalu backup data PostgreSQL Anda sebelum menjalankan update besar. Jalankan docker exec on-premise-postgres-1 pg_dump -U lokawatch lokawatch > ~/backup.sql terlebih dahulu.
Pemecahan Masalah
Periksa log layanan
make logs make logs s=backend-api Restart layanan
make restart s=backend-api Cek kesehatan
make health Cloudflare timeout (522)
Jika Cloudflare menampilkan "522 Connection Timed Out":
- Periksa apakah firewall VPS (UFW) mengizinkan port 80 dan 443.
- Periksa panel firewall penyedia VPS — banyak penyedia (DigitalOcean, Hetzner, dll.) memiliki firewall sendiri yang memblokir lalu lintas sebelum mencapai server.
- Verifikasi A record di DNS Cloudflare mengarah ke IP publik VPS yang benar.
- Jika menggunakan Cloudflare Tunnel, pastikan tunnel berjalan dan terhubung.
Validasi Let's Encrypt gagal
Jika certbot gagal dengan "Invalid response" atau "404":
- Skrip sekarang memulai server HTTP sementara di port 80 untuk tantangan ACME — tidak perlu nginx berjalan sebelumnya.
- Jika menggunakan proxy Cloudflare (orange cloud), gunakan sertifikat self-signed (opsi 2). Cloudflare memutus SSL di edge, jadi Let's Encrypt di origin tidak diperlukan.
- Pastikan port 80 terbuka di UFW dan firewall penyedia VPS.
Container restart berulang kali
Periksa make logs untuk pesan error spesifik. Penyebab umum:
- PostgreSQL belum siap — layanan lain akan mencoba ulang secara otomatis.
- Health check gagal — periksa apakah layanan dependen benar-benar berjalan.
- Kehabisan memori — verifikasi server memenuhi persyaratan minimum (8 GB RAM).