Update README, docs, and version
This commit is contained in:
47
README.md
47
README.md
@@ -3,22 +3,29 @@
|
|||||||
</p>
|
</p>
|
||||||
<h1 align="center">Jabali Panel</h1>
|
<h1 align="center">Jabali Panel</h1>
|
||||||
|
|
||||||
A modern web hosting control panel for WordPress and general PHP hosting. Jabali focuses on clean multi-tenant isolation, safe automation, and a consistent admin/user experience. It ships with an agent for privileged tasks, built-in mail and DNS management, migrations from common panels, and a security center that keeps critical services in check. The UI is designed to be fast, predictable, and easy to operate on a single server. Administrators get clear visibility into services, SSL, DNS, backups, and security posture, while users get a streamlined workflow for domains, email, WordPress, files, databases, and PHP settings. The goal is simple: reduce the operational burden of hosting by making common tasks safe, repeatable, and easy to audit.
|
A modern web hosting control panel for WordPress and general PHP hosting. Jabali focuses on clean multi-tenant isolation, safe automation, and a consistent admin/user experience. It ships with a privileged agent for root-level tasks, built-in mail and DNS management, migrations from common panels, and a security center that keeps critical services in check. The UI is designed to be fast, predictable, and easy to operate on a single server.
|
||||||
|
|
||||||
Version: 0.9-rc48 (release candidate)
|
Version: 0.9-rc51 (release candidate)
|
||||||
|
|
||||||
This is a release candidate. Expect rapid iteration and breaking changes until 1.0.
|
This is a release candidate. Expect rapid iteration and breaking changes until 1.0.
|
||||||
|
|
||||||
|
## Demo and Website
|
||||||
|
|
||||||
|
- Demo: https://jabali-panel.com/demo/
|
||||||
|
- Website: https://jabali-panel.com/
|
||||||
|
|
||||||
## Highlights
|
## Highlights
|
||||||
|
|
||||||
- Per-user Linux accounts and PHP-FPM isolation
|
- Per-user Linux accounts and PHP-FPM isolation
|
||||||
- Root agent for DNS, SSL, mail, backups, and migrations
|
- Root agent for DNS, SSL, mail, backups, and migrations
|
||||||
|
- Health monitor with auto-restarts and alerts
|
||||||
- cPanel and WHM migrations with step-by-step logs
|
- cPanel and WHM migrations with step-by-step logs
|
||||||
- Built-in mail stack with webmail SSO
|
- Built-in mail stack with webmail SSO
|
||||||
- DNS templates with optional DNSSEC
|
- DNS templates with optional DNSSEC
|
||||||
- User and server backups with schedules and retention
|
- User and server backups with schedules and retention
|
||||||
- WordPress management (install, updates, scans, and SSO)
|
- WordPress management (install, updates, scans, and SSO)
|
||||||
- Security center with firewall, Fail2ban, and ClamAV
|
- Security center with firewall, Fail2ban, ClamAV, and scanners
|
||||||
|
- Audit logs and admin notifications
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
@@ -33,6 +40,16 @@ Optional flags:
|
|||||||
- `JABALI_MINIMAL=1` for core-only install
|
- `JABALI_MINIMAL=1` for core-only install
|
||||||
- `JABALI_FULL=1` to force all optional components
|
- `JABALI_FULL=1` to force all optional components
|
||||||
|
|
||||||
|
Debian packages:
|
||||||
|
|
||||||
|
```
|
||||||
|
./scripts/build-jabali-deps-deb.sh
|
||||||
|
./scripts/build-jabali-panel-deb.sh
|
||||||
|
sudo dpkg -i ./jabali-deps_<version>_all.deb
|
||||||
|
sudo apt-get -f install -y
|
||||||
|
sudo dpkg -i ./jabali-panel_<version>_all.deb
|
||||||
|
```
|
||||||
|
|
||||||
After install:
|
After install:
|
||||||
|
|
||||||
- Admin panel: `https://your-host/jabali-admin`
|
- Admin panel: `https://your-host/jabali-admin`
|
||||||
@@ -79,33 +96,13 @@ After install:
|
|||||||
- Redis ACL isolation for WordPress caching
|
- Redis ACL isolation for WordPress caching
|
||||||
- Multi-language UI
|
- Multi-language UI
|
||||||
|
|
||||||
## Screenshots
|
|
||||||
|
|
||||||
Admin panel:
|
|
||||||
|
|
||||||
- Dashboard: 
|
|
||||||
- Server Status: 
|
|
||||||
- Server Settings: 
|
|
||||||
- Security Center: 
|
|
||||||
- Users: 
|
|
||||||
- SSL Manager: 
|
|
||||||
- DNS Zones: 
|
|
||||||
- Backups: 
|
|
||||||
- Services: 
|
|
||||||
|
|
||||||
User panel:
|
|
||||||
|
|
||||||
- Dashboard: 
|
|
||||||
- Domain Management: 
|
|
||||||
- Backups: 
|
|
||||||
- cPanel Migration: 
|
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
|
|
||||||
- Control plane: Laravel app with Filament panels
|
- Control plane: Laravel 12 app with Filament v5 and Livewire v4
|
||||||
- Data plane: root agent handling privileged operations
|
- Data plane: root agent handling privileged operations
|
||||||
- Job queue: async tasks and migration steps
|
- Job queue: async tasks and migration steps
|
||||||
- Logging: panel and agent logs for troubleshooting
|
- Logging: panel and agent logs for troubleshooting
|
||||||
|
- Server metrics: sysstat logs via SysstatMetrics
|
||||||
|
|
||||||
Service stack (single-node default):
|
Service stack (single-node default):
|
||||||
|
|
||||||
|
|||||||
33
docs/docs-index.md
Normal file
33
docs/docs-index.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
# Jabali Documentation Index
|
||||||
|
|
||||||
|
Last updated: 2026-02-06
|
||||||
|
|
||||||
|
## Top-Level Docs
|
||||||
|
- /var/www/jabali/README.md - Product overview, features, install, upgrade, and architecture summary.
|
||||||
|
- /var/www/jabali/AGENT.md - Authoritative project guide (architecture, backups, DNSSEC, Filament rules).
|
||||||
|
- /var/www/jabali/AGENTS.md - Agent behavior rules for automated changes.
|
||||||
|
- /var/www/jabali/CONTEXT.md - Current stack, services, and upgrade notes.
|
||||||
|
- /var/www/jabali/DECISIONS.md - Key technical decisions and rationale snapshots.
|
||||||
|
- /var/www/jabali/TODO.md - Active checklist items.
|
||||||
|
|
||||||
|
## Docs Folder
|
||||||
|
- /var/www/jabali/docs/installation.md - Debian package install path and Filament notifications patch.
|
||||||
|
- /var/www/jabali/docs/architecture/control-panel-blueprint.md - High-level blueprint for a hosting panel.
|
||||||
|
- /var/www/jabali/docs/archive-notes.md - Archived files and restore notes.
|
||||||
|
- /var/www/jabali/docs/screenshots/README.md - Screenshot generation instructions.
|
||||||
|
- /var/www/jabali/docs/docs-summary.md - Project documentation summary (generated).
|
||||||
|
- /var/www/jabali/docs/onboarding.md - Developer onboarding guide (generated).
|
||||||
|
- /var/www/jabali/docs/docs-index.md - This index (generated).
|
||||||
|
|
||||||
|
## MCP Docs Server
|
||||||
|
- /var/www/jabali/mcp-docs-server/README.md - MCP server for Jabali docs resources and tools.
|
||||||
|
|
||||||
|
## Policy and Terms
|
||||||
|
- /var/www/jabali/resources/markdown/policy.md - Privacy policy placeholder.
|
||||||
|
- /var/www/jabali/resources/markdown/terms.md - Terms of service placeholder.
|
||||||
|
|
||||||
|
## WordPress Plugin
|
||||||
|
- /var/www/jabali/resources/wordpress/jabali-cache/readme.txt - Jabali Cache plugin documentation.
|
||||||
|
|
||||||
|
## Tests and Support Files
|
||||||
|
- /var/www/jabali/tests/Unit/ReadmeScreenshotsTest.php - Screenshot test references for README content.
|
||||||
56
docs/docs-summary.md
Normal file
56
docs/docs-summary.md
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
# Documentation Summary (Jabali Panel)
|
||||||
|
|
||||||
|
Last updated: 2026-02-06
|
||||||
|
|
||||||
|
## 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.
|
||||||
|
|
||||||
|
## 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.
|
||||||
69
docs/onboarding.md
Normal file
69
docs/onboarding.md
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
# Jabali Panel Developer Onboarding
|
||||||
|
|
||||||
|
Last updated: 2026-02-06
|
||||||
|
|
||||||
|
## Start Here
|
||||||
|
- Read AGENT.md first. It is the authoritative guide.
|
||||||
|
- Work from /var/www/jabali.
|
||||||
|
- Use ASCII in edits unless the file already uses Unicode.
|
||||||
|
|
||||||
|
## What This Project Is
|
||||||
|
Jabali Panel is a modern web hosting control panel. It has two Filament panels:
|
||||||
|
- Admin: /jabali-admin (server-wide management)
|
||||||
|
- User: /jabali-panel (per-tenant management)
|
||||||
|
|
||||||
|
## Key Components
|
||||||
|
- Laravel 12 + Filament v5 + Livewire v4
|
||||||
|
- Root agent: bin/jabali-agent (privileged ops over Unix socket /var/run/jabali/agent.sock)
|
||||||
|
- Health monitor: bin/jabali-health-monitor (service restarts and alerts)
|
||||||
|
- Panel DB: SQLite at database/database.sqlite
|
||||||
|
- Server metrics: app/Services/SysstatMetrics.php uses /var/log/sysstat
|
||||||
|
|
||||||
|
## Local Development (Typical)
|
||||||
|
From /var/www/jabali:
|
||||||
|
- composer dev
|
||||||
|
- php artisan test --compact
|
||||||
|
- ./vendor/bin/pint
|
||||||
|
|
||||||
|
## Production Operations (Typical)
|
||||||
|
- php artisan migrate
|
||||||
|
- php artisan config:cache
|
||||||
|
- php artisan route:cache
|
||||||
|
|
||||||
|
## UI Rules (Non-Negotiable)
|
||||||
|
- Use Filament native components only.
|
||||||
|
- No custom HTML, no custom CSS, no inline styles.
|
||||||
|
- Use tables for list data (EmbeddedTable or HasTable).
|
||||||
|
- Use icons and icon colors for status.
|
||||||
|
- Keep pages responsive and match existing patterns.
|
||||||
|
|
||||||
|
## Backups and Security
|
||||||
|
- Backup/restore goes through the agent and includes strict validations.
|
||||||
|
- Audit logs stored in audit_logs with retention.
|
||||||
|
- DNSSEC is supported and managed via the agent.
|
||||||
|
|
||||||
|
## Installer and Upgrade Notes
|
||||||
|
- Target OS: Fresh Debian 12/13 install with no pre-existing web/mail stack.
|
||||||
|
- install.sh builds assets as www-data and manages permissions.
|
||||||
|
- php artisan jabali:upgrade ensures caches and permissions (public/build, node_modules).
|
||||||
|
|
||||||
|
## Git Rules
|
||||||
|
- Do not push unless explicitly asked.
|
||||||
|
- Bump VERSION before every push.
|
||||||
|
- Keep install.sh version fallback in sync with VERSION.
|
||||||
|
|
||||||
|
## Where to Look for Examples
|
||||||
|
- app/Filament/Admin/Pages and app/Filament/Jabali/Pages
|
||||||
|
- app/Filament/Admin/Widgets and app/Filament/Jabali/Widgets
|
||||||
|
- app/Services for business logic
|
||||||
|
- bin/jabali-agent for privileged operations
|
||||||
|
|
||||||
|
## Common Tasks
|
||||||
|
- Screenshots: node tests/take-screenshots.cjs --output-dir=docs/screenshots
|
||||||
|
- Package build: scripts/build-jabali-deps-deb.sh, scripts/build-jabali-panel-deb.sh
|
||||||
|
|
||||||
|
## Quick Checklist Before You Commit
|
||||||
|
- Ran at least one test command.
|
||||||
|
- UI changes follow Filament-only rules.
|
||||||
|
- No permission regressions for public/build or node_modules.
|
||||||
|
- No changes to vendor or node_modules.
|
||||||
@@ -16,7 +16,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|||||||
if [[ -f "$SCRIPT_DIR/VERSION" ]]; then
|
if [[ -f "$SCRIPT_DIR/VERSION" ]]; then
|
||||||
JABALI_VERSION="$(sed -n 's/^VERSION=//p' "$SCRIPT_DIR/VERSION")"
|
JABALI_VERSION="$(sed -n 's/^VERSION=//p' "$SCRIPT_DIR/VERSION")"
|
||||||
fi
|
fi
|
||||||
JABALI_VERSION="${JABALI_VERSION:-0.9-rc51}"
|
JABALI_VERSION="${JABALI_VERSION:-0.9-rc52}"
|
||||||
|
|
||||||
# Colors
|
# Colors
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
|
|||||||
916
package-lock.json
generated
916
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user