3.9 KiB
3.9 KiB
Modern Hosting Control Panel Blueprint
This blueprint describes a modern web hosting control panel (cPanel/DirectAdmin-style) as an architecture + feature map that can be turned into epics and tickets.
1) Core goals
- Multi-tenant isolation: customers cannot see or affect each other (files, PHP, mail, DB).
- Automation-first: every UI action is a reproducible, idempotent job.
- Safe-by-default security: least privilege, audit trail, secrets handling, sane defaults.
- Resumable operations: long tasks support retry/continue with logs.
- Scalable topology: start single-node, evolve to web/mail/dns/db/storage nodes.
- Observable system: health checks, metrics, logs, and per-action troubleshooting.
2) Reference architecture
Control plane (panel)
- UI + API, RBAC, tenant/package/quota management
- UI stack: Tailwind CSS + Filament components for panels, forms, tables, and widgets
- Job runner + queue workers
- Audit log + job logs/artifacts
- Central configuration + templates
- Secrets manager
Data plane (agents on nodes)
- Agent performs privileged ops locally: configs, reloads, users, backups, certbot, etc.
- Panel <-> agent over mTLS (preferred) or HMAC-signed requests.
3) Service stack (Nginx + Mail)
Web node
- Nginx + PHP-FPM (pool per tenant recommended)
- Optional: Redis, WAF (ModSecurity)
- Log rotation
Mail node
- Postfix (SMTP), Dovecot (IMAP/POP3/LMTP)
- Rspamd (+ Redis) for spam filtering
- DKIM signing (Rspamd or OpenDKIM), SPF/DMARC tooling
- Optional: Sieve filters, Roundcube webmail links
DNS node
- PowerDNS (API) or BIND9 (template-driven), optional DNSSEC
DB + backups
- MariaDB/MySQL (local or centralized)
- Backups to local + S3-compatible storage (recommended)
4) Tenancy & isolation model
- Linux user per tenant: /home//domains//public_html
- PHP-FPM pool per tenant with limits (memory, children, timeouts)
- Strict file permissions; avoid broad www-data write access
- Mail uses virtual mailboxes with quotas and strict ownership
5) Feature modules (cPanel/DirectAdmin equivalents)
- Accounts/Packages/Reseller: limits, suspend/unsuspend, usage reporting
- Web hosting: domains/subdomains/redirects, vhost templates, logs viewer
- PHP management: versions, ini overrides, FPM tuning
- SSL: Let's Encrypt, renewals, force HTTPS, HSTS
- DNS: zones + record editor; templates; DKIM/SPF/DMARC assistants
- Databases: DB/user/grants, import/export, remote access allowlist
- Mail: domains, mailboxes, aliases, forwarders, autoresponder, catch-all, spam controls, mail logs/trace
- Files & access: file manager, SFTP/SSH keys, jailed shell optional, cron
- Backups: schedules, targets, restore self-service
- Security: 2FA, IP allowlists, fail2ban hooks, WAF toggle, full audit log
6) Automation engine (jobs -> steps)
- Every action runs as a resumable state machine
- Store per-step: status, logs, retries, artifacts (generated configs, dumps)
- Idempotent steps + safe rollback where possible
7) Recommended MVP order (Nginx + Mail)
- Tenants + domains + Nginx vhosts + SSL
- PHP-FPM pools + limits + logs viewer
- DNS + DKIM/SPF/DMARC helpers
- Mail (Postfix/Dovecot) + mailboxes/aliases/forwards + basic logs
- Rspamd + panel controls
- Backups (files+DB+mail) + restore
- Packages/resellers/quotas + suspension logic
- Hardening + monitoring dashboards
8) Epics -> ticket slices (example)
Job engine
- Job table + step table + artifact store
- State machine + retries
- Agent RPC + ack + log streaming
Tenants
- Tenant create/suspend workflow
- User isolation + home dir layout
- Package limits + enforcement
Domains
- Vhost template + apply
- DNS zone creation + records
- SSL issuance + renewal job
- Domain enable + DKIM/SPF/DMARC
- Mailbox CRUD + quota
- Forwarders + autoresponder
- Mail logs viewer
Backups
- Local + S3 target
- Schedule + retention
- Restore job with step logs