58 lines
3.0 KiB
Markdown
58 lines
3.0 KiB
Markdown
# Documentation Summary (Jabali Panel)
|
|
|
|
Last updated: 2026-02-09
|
|
|
|
## Product Overview
|
|
Jabali Panel is a modern web hosting control panel for WordPress and general PHP hosting. It provides an admin panel for server-wide operations and a user panel for per-tenant management. The core goals are safe automation, clean multi-tenant isolation, and operational clarity.
|
|
|
|
## Architecture
|
|
- Control plane: Laravel 12 app using Filament v5 + Livewire v4.
|
|
- Data plane: Root-level agent (bin/jabali-agent) that performs privileged operations.
|
|
- Health monitor: bin/jabali-health-monitor restarts critical services and sends alerts.
|
|
- Job queue: async tasks and long-running operations.
|
|
|
|
## Panels and Routes
|
|
- Admin panel: /jabali-admin
|
|
- User panel: /jabali-panel
|
|
|
|
## Data and Storage
|
|
- Panel metadata: SQLite at database/database.sqlite.
|
|
- Hosting services: MariaDB, Postfix, Dovecot, BIND, Redis (as configured by the agent).
|
|
- Sysstat-based server status charts: app/Services/SysstatMetrics.php uses /var/log/sysstat.
|
|
|
|
## Services and Monitoring
|
|
Health monitor checks services every 30s and auto-restarts when needed. Notifications are sent via AdminNotificationService based on settings in dns_settings (notify_service_health, notify_high_load, etc.). Audit logs are stored in audit_logs and pruned daily based on retention settings.
|
|
|
|
## Backup System
|
|
- User and server backups with restore options for files, databases, mail, SSL, and DNS.
|
|
- Restore is guarded by strict security validations (prefix checks, SQL sanitization, path validation, DNS validation).
|
|
- Supports local and remote destinations (SFTP, NFS, S3). Retention is applied after each backup.
|
|
|
|
## DNSSEC
|
|
DNSSEC can be enabled per domain and generates KSK/ZSK keys, DS records, and signed zones. Managed through the admin panel and backed by agent actions.
|
|
|
|
## UI and Filament Rules (Critical)
|
|
- Use only Filament native components (no custom HTML, no custom CSS, no inline styles).
|
|
- Use tables for list data (EmbeddedTable or HasTable).
|
|
- Use icons and icon colors for status indication.
|
|
- Keep layouts responsive and consistent with existing patterns.
|
|
|
|
## Installation and Upgrade
|
|
- Target OS: Fresh Debian 12/13 install with no pre-existing web/mail stack.
|
|
- Installer: install.sh, builds assets as www-data and ensures permissions.
|
|
- Upgrade: php artisan jabali:upgrade manages dependencies, caches, and permissions for public/build and node_modules.
|
|
- Deploy helper: scripts/deploy.sh syncs code to a server, runs composer/npm, migrations, and caches, and can push to Gitea/GitHub with automatic VERSION bump.
|
|
|
|
## Packaging
|
|
Debian packaging is supported via scripts:
|
|
- scripts/build-jabali-deps-deb.sh
|
|
- scripts/build-jabali-panel-deb.sh
|
|
|
|
## Documentation MCP Server
|
|
mcp-docs-server exposes README, AGENT docs, and changelog through MCP tools for search and section retrieval.
|
|
|
|
## Miscellaneous Docs
|
|
- Screenshot regeneration script: tests/take-screenshots.cjs.
|
|
- Policies: resources/markdown/policy.md and resources/markdown/terms.md are placeholders.
|
|
- WordPress plugin: resources/wordpress/jabali-cache/readme.txt documents the Jabali Cache plugin.
|