Skip to content

Architecture

Labuh dirancang dengan prinsip Simplicity over Complexity. Berikut adalah gambaran bagaimana komponen-komponen Labuh saling bekerja sama.

Komponen Utama

1. Labuh Core (Backend)

Ditulis menggunakan Rust dengan framework Axum.

  • Role: Mengelola database, menjalankan manajemen container lewat Docker API, dan melayani API serta Dashboard.
  • Efisiensi: Sangat cepat dan mengonsumsi memori yang sangat sedikit.
  • Streaming: Mendukung WebSockets untuk terminal interaktif dan Server-Sent Events (SSE) untuk streaming log build secara real-time.

2. Dashboard (Frontend)

Dibangun dengan SvelteKit dan Svelte 5.

  • Role: Antarmuka pengguna yang reaktif untuk manajemen stack, container, dan monitoring.
  • Deployment: Di-build menjadi aplikasi statis (SPA) dan disajikan langsung oleh binary backend.

3. Caddy (Reverse Proxy)

Dijalankan sebagai container pendamping otomatis.

  • Role: Menangani koneksi masuk (Port 80/443), melakukan SSL termination secara otomatis, dan meneruskan request ke container aplikasi yang tepat.

4. SQLite (Database)

Database file-based yang ringan.

  • Role: Menyimpan konfigurasi stack, rute domain, kredensial registry, dan riwayat deployment.

Alur Data

Keamanan

  • JWT Auth: Semua akses API dan Dashboard dilindungi oleh token JWT dengan masa berlaku tertentu.
  • Isolated Networks: Labuh membuat network terisolasi (labuh-network) sehingga container aplikasi hanya bisa diakses lewat Caddy, bukan langsung dari internet kecuali jika Anda mengekspos portnya secara eksplisit.
  • Permission Checks: Setiap akses ke log, terminal, atau kontrol container diverifikasi berdasarkan kepemilikan team/user.

Released under the MIT License.