4.7 KiB
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_<version>_all.deb
jabali-panel_<version>_all.deb
Install on a server
sudo dpkg -i ./jabali-deps_<version>_all.deb
sudo apt-get -f install -y
sudo dpkg -i ./jabali-panel_<version>_all.deb
After install, systemd services are enabled and started:
jabali-agentjabali-queuejabali-health-monitor
Demo Docker (single container)
Demo images run the panel in read-only mode with demo data preloaded.
Key requirements:
JABALI_DEMO=1DB_DATABASEmust point to the demo SQLite file:database/database-demo.sqlite- Trust reverse proxy so Livewire update URLs are HTTPS
Example container run (port 5555):
docker run -d --name jabali-panel-demo \
--restart unless-stopped \
-p 5555:5555 \
-e APP_URL=https://demo.jabali-panel.com \
-e ASSET_URL=https://demo.jabali-panel.com \
-e DB_DATABASE=/var/www/jabali/database/database-demo.sqlite \
-e JABALI_DEMO=1 \
-e JABALI_DEMO_ADMIN_EMAIL=admin@jabali-panel.com \
-e JABALI_DEMO_ADMIN_PASSWORD=demo1234 \
-e JABALI_DEMO_USER_EMAIL=demo@jabali-panel.com \
-e JABALI_DEMO_USER_PASSWORD=demo1234 \
jabali-panel-demo-current
Nginx reverse proxy (HTTPS):
server {
listen 443 ssl http2;
server_name demo.jabali-panel.com;
ssl_certificate /etc/letsencrypt/live/demo.jabali-panel.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/demo.jabali-panel.com/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5555;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
}
}
Reverse proxy trust (required for Livewire HTTPS):
- Ensure
bootstrap/app.phpincludestrustProxies(at: '*').
Demo limitations:
- No agent socket in the container: pages that rely on the agent should use static demo data to avoid 500s.
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.jsis patched to guard the animation callback (preventsTypeError: e is not a function).resources/views/vendor/filament-notifications/notifications.blade.phpadds a lightweightwire:poll.2sso 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.
Deploy script
The repository ships with a deploy helper at scripts/deploy.sh. It rsyncs the
project to root@192.168.100.50:/var/www/jabali, commits on that server, bumps
VERSION, updates the install.sh fallback, and pushes to Git remotes from
that server. Then it runs composer/npm, migrations, and cache rebuilds.
Defaults (override via flags or env vars):
- Host:
192.168.100.50 - User:
root - Path:
/var/www/jabali - Web user:
www-data
Common usage:
# Basic deploy to the default host
scripts/deploy.sh
# Target a different host/path/user
scripts/deploy.sh --host 192.168.100.50 --user root --path /var/www/jabali --www-user www-data
# Dry-run rsync only
scripts/deploy.sh --dry-run
# Skip npm build and cache steps
scripts/deploy.sh --skip-npm --skip-cache
Push behavior controls:
# Deploy only (no push)
scripts/deploy.sh --skip-push
# Push only one remote
scripts/deploy.sh --no-push-github
scripts/deploy.sh --no-push-gitea
# Push to explicit URLs from the test server
scripts/deploy.sh --gitea-url ssh://git@192.168.100.100:2222/shukivaknin/jabali-panel.git \
--github-url git@github.com:shukiv/jabali-panel.git
GitHub push location:
# Push to GitHub from the test server (required)
ssh root@192.168.100.50
cd /var/www/jabali
git push origin main
Notes:
- Pushes run from
root@192.168.100.50(not from local machine). - Before each push, the script bumps
VERSION, updatesinstall.shfallback, and commits on the deploy server. - Rsync excludes
.env,storage/,vendor/,node_modules/,public/build/,bootstrap/cache/, and SQLite DB files. Handle those separately if needed. --deletepasses--deleteto rsync (dangerous).
Testing after changes
After every change, run a test to make sure there are no errors.