# Installation ## Debian packages (no install.sh) Jabali ships as two Debian packages: - `jabali-deps` — system dependencies (nginx, PHP, DB, mail, DNS, etc.) - `jabali-panel` — the panel application + systemd services ### Build the packages From the repository root: ``` ./scripts/build-jabali-deps-deb.sh ./scripts/build-jabali-panel-deb.sh ``` This produces: ``` jabali-deps__all.deb jabali-panel__all.deb ``` ### Install on a server ``` sudo dpkg -i ./jabali-deps__all.deb sudo apt-get -f install -y sudo dpkg -i ./jabali-panel__all.deb ``` After install, systemd services are enabled and started: - `jabali-agent` - `jabali-queue` - `jabali-health-monitor` ## Panel notifications (admin + user) Jabali ships with a hardened Filament notifications setup that prevents Livewire success hooks from breaking after the first toast. What is included: - `public/js/filament/notifications/notifications.js` is patched to guard the animation callback (prevents `TypeError: e is not a function`). - `resources/views/vendor/filament-notifications/notifications.blade.php` adds a lightweight `wire:poll.2s` so toasts keep flowing even if a Livewire event is dropped. If you update or rebuild assets, keep the guard in place and hard‑refresh the browser (Ctrl+Shift+R) after deployment. ## Testing after changes After every change, run a test to make sure there are no errors.