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=admin@perusahaan.com

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 API
  • ai-engine — Analisis frame dan inferensi AI
  • stream-worker — Pemrosesan stream kamera
  • dashboard — Aplikasi web Safety Officer
  • postgres — Database PostgreSQL
  • redis — Cache dan message broker
  • ollama — LLM lokal untuk ringkasan alert
  • nginx — Reverse proxy dengan SSL termination
  • certbot — 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":

  1. Periksa apakah firewall VPS (UFW) mengizinkan port 80 dan 443.
  2. Periksa panel firewall penyedia VPS — banyak penyedia (DigitalOcean, Hetzner, dll.) memiliki firewall sendiri yang memblokir lalu lintas sebelum mencapai server.
  3. Verifikasi A record di DNS Cloudflare mengarah ke IP publik VPS yang benar.
  4. Jika menggunakan Cloudflare Tunnel, pastikan tunnel berjalan dan terhubung.

Validasi Let's Encrypt gagal

Jika certbot gagal dengan "Invalid response" atau "404":

  1. Skrip sekarang memulai server HTTP sementara di port 80 untuk tantangan ACME — tidak perlu nginx berjalan sebelumnya.
  2. 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.
  3. 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).

Hubungi Tim Kami

Ceritakan operasi Anda — kami akan merespons dalam 1 hari kerja.