mirror of
https://github.com/myronblair/novacpx
synced 2026-06-30 17:50:41 -05:00
7367fe658c
- README: full feature matrix (hosting, DNS, email, databases, files, SSL, security, Docker, monitoring, update channels/versioning, reseller branding, settings, API) - Admin guide: update channels section with stable/beta table; Settings section now documents all DB-backed fields including update channel - User guide: email domain dropdown note Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
230 lines
8.3 KiB
Markdown
230 lines
8.3 KiB
Markdown
# NovaCPX — Administrator Guide
|
|
|
|
## Accessing the Admin Panel
|
|
|
|
The admin panel runs on port **8882**. Navigate to `https://<server-ip>:8882` and log in with your admin credentials.
|
|
|
|
The browser will show a self-signed certificate warning on a fresh install. Accept it, or replace the certificate at `/etc/novacpx/ssl/` with a trusted cert and restart Apache.
|
|
|
|
## Dashboard
|
|
|
|
The dashboard shows real-time server stats (CPU, RAM, disk, uptime), running services with restart/stop controls, and NovaCPX version information.
|
|
|
|
Click **Check for Updates** to see if a newer version is available.
|
|
|
|
## Accounts
|
|
|
|
**Accounts → All Accounts** lists every hosting account on the server. From this page you can:
|
|
|
|
- **Search** by domain or username
|
|
- **Suspend / Unsuspend** an account (suspending disables the web vhost and sends an email notification to the account holder)
|
|
- **Change Password** for any account
|
|
- **Terminate** an account permanently (deletes files, databases, DNS zone, email accounts — irreversible)
|
|
|
|
### Creating an account
|
|
|
|
**Accounts → Create Account**
|
|
|
|
| Field | Notes |
|
|
|-------|-------|
|
|
| Username | Lowercase, alphanumeric. Creates a Linux system user. |
|
|
| Domain | Primary domain for the account. A DNS zone and vhost are created automatically. |
|
|
| Email | Account holder's email. Receives the welcome notification. |
|
|
| Password | Min 8 characters. Also set as the Linux system password. |
|
|
| Package | Disk/resource limits applied to the account. |
|
|
| PHP version | Per-account PHP-FPM pool version. |
|
|
| Reseller | (Optional) Assign account to a reseller. |
|
|
|
|
After creation, the welcome email (if notifications are enabled) is sent to the account holder with login credentials.
|
|
|
|
## Resellers
|
|
|
|
**Accounts → Resellers** manages reseller sub-admin accounts. Resellers can create and manage their own customer accounts, set per-customer Docker quotas, and apply white-label branding.
|
|
|
|
To create a reseller, go to **Accounts → Create Account** and select the **Reseller** role.
|
|
|
|
## Packages
|
|
|
|
Define hosting plans. Each package sets limits on:
|
|
|
|
- Disk (MB)
|
|
- Email accounts
|
|
- MySQL databases
|
|
- FTP accounts
|
|
- Domains
|
|
- Subdomains
|
|
|
|
Accounts without a package have no enforced limits.
|
|
|
|
## DNS
|
|
|
|
### DNS Zones
|
|
|
|
Lists all DNS zones on the server. You can add, edit, and delete DNS records directly. Zones are managed by BIND9 and reloaded via `rndc`.
|
|
|
|
Supported record types: A, AAAA, CNAME, MX, TXT, NS, SRV, CAA.
|
|
|
|
### Nameservers
|
|
|
|
Set the global NS1/NS2 hostnames used when creating new zones. After saving, click **Check All** to verify the nameservers are resolving correctly.
|
|
|
|
## Services
|
|
|
|
### Web Server
|
|
|
|
Shows Apache or Nginx configuration. Switch between web servers. The switch script runs in the background — check the page again after ~30 seconds to confirm.
|
|
|
|
### PHP Manager
|
|
|
|
Install or remove PHP versions (7.4, 8.1, 8.2, 8.3). Each version gets its own PHP-FPM pool. Accounts can be assigned any installed version.
|
|
|
|
### MySQL Manager
|
|
|
|
Shows MySQL status and running databases. Provides a link to phpMyAdmin if installed.
|
|
|
|
### Mail Server
|
|
|
|
Shows Postfix/Dovecot status. Switch mail server stack (postfix-dovecot or postfix-dovecot-rspamd).
|
|
|
|
### FTP Server
|
|
|
|
Shows FTP daemon status. Switch between ProFTPD, vsftpd, and PureFTPD.
|
|
|
|
### Nginx Proxy Manager
|
|
|
|
Reverse proxy management for additional services. The Nginx Proxy Manager runs as a Docker container. Use **Setup** to configure it.
|
|
|
|
### WordPress Manager
|
|
|
|
One-click WordPress installs via WP-CLI. Actions: install, update, toggle maintenance mode, clone to staging.
|
|
|
|
### Docker
|
|
|
|
Full Docker Engine management:
|
|
|
|
- **Containers** — run, stop, start, restart, remove, view logs
|
|
- **Images** — pull, list, remove
|
|
- **Volumes** and **Networks** — list, remove
|
|
- **Compose Stacks** — create from YAML, bring up/down, view logs
|
|
|
|
## Security
|
|
|
|
### SSL Manager
|
|
|
|
View SSL certificates for all accounts. Certificates issued via Certbot (Let's Encrypt). The domain must resolve publicly for issuance to succeed.
|
|
|
|
### Firewall / Fail2Ban
|
|
|
|
Manage UFW rules (allow/deny by port, protocol, and IP). View and unban Fail2Ban jail entries. NovaCPX jails monitor:
|
|
|
|
- SSH brute-force (`sshd`)
|
|
- Panel login failures (`novacpx-auth`)
|
|
- API abuse (`novacpx-api`)
|
|
- PHP error flooding (`novacpx-php`)
|
|
- Postfix SMTP auth (`postfix-auth`)
|
|
|
|
### Audit Log
|
|
|
|
Full log of all admin, reseller, and user actions. Filter by username, action type, and date range. Click any row to expand the raw JSON detail payload.
|
|
|
|
### 2FA Manager
|
|
|
|
Manage TOTP two-factor authentication. Admins can view which accounts have 2FA enabled and reset (revoke) 2FA for a user if they lose their authenticator.
|
|
|
|
### Sessions
|
|
|
|
View all active login sessions. Revoke individual sessions or all sessions for a specific user. Useful for forcing a logout after a password reset.
|
|
|
|
## System
|
|
|
|
### Updates
|
|
|
|
Check for NovaCPX and OS updates. Results are cached for 12 hours so the page loads instantly; click **↻ Refresh now** to force a live check.
|
|
|
|
**Update channels** (set in Settings):
|
|
|
|
| Channel | GitHub branch | Versioning |
|
|
|---------|--------------|------------|
|
|
| Stable | `main` | Major/minor releases (e.g. 1.1.0) |
|
|
| Beta | `beta` | Patch and pre-release (e.g. 1.1.1-beta.3) |
|
|
|
|
The Updates page shows your installed version, the latest available version for your channel, and pending commits. Click **Update NovaCPX** to pull and deploy. PHP syntax is validated before deploy; if the panel goes down after update it auto-restores from a backup.
|
|
|
|
**OS Upgrade** streams `apt-get upgrade` output in real time. A backup of the web root is made before upgrading.
|
|
|
|
### Backups
|
|
|
|
Schedule and manage per-account backups:
|
|
|
|
- **Backup now** — immediate backup of files + databases
|
|
- **Download** — download a backup archive
|
|
- **Restore** — restore files and databases from a backup
|
|
- **Schedule** — set automatic backup frequency per account
|
|
- Optional rclone/S3 remote destination
|
|
|
|
### Cloudflare
|
|
|
|
Per-account Cloudflare API key management. Pull/push DNS zone records, toggle the CDN proxy per record.
|
|
|
|
### Server Options
|
|
|
|
Configure which services NovaCPX manages:
|
|
|
|
| Setting | Options |
|
|
|---------|---------|
|
|
| Web server | apache, nginx, openlitespeed, caddy |
|
|
| Mail server | postfix-dovecot, postfix-dovecot-rspamd |
|
|
| FTP server | proftpd, vsftpd, pureftpd |
|
|
| DNS server | bind9, powerdns, nsd, none |
|
|
| WHMCS | Enable and configure the billing bridge API key |
|
|
|
|
### Notifications
|
|
|
|
Configure email alerts sent via CyberMail:
|
|
|
|
| Field | Notes |
|
|
|-------|-------|
|
|
| CyberMail API Key | From platform.cyberpersons.com |
|
|
| From Email | Sender address (must be a verified sender domain) |
|
|
| From Name | Display name shown in email clients |
|
|
| Admin Alert Email | Receives admin copies of all notifications |
|
|
| Notifications | Enable or disable all outbound notifications |
|
|
|
|
Click **Send Test Email** to verify the configuration.
|
|
|
|
Notification triggers:
|
|
|
|
- Account created → welcome email to new user + admin alert
|
|
- Account suspended → notification to account holder + admin alert
|
|
- Disk quota ≥ 85% → daily warning (cron, 06:00)
|
|
- SSL certificate expiring ≤ 14 days → expiry notice (cron, 06:00)
|
|
|
|
### Settings
|
|
|
|
Panel-wide settings. All values are loaded from the database when the page opens and saved individually.
|
|
|
|
| Setting | Description |
|
|
|---------|-------------|
|
|
| Panel Name | Name shown in the browser title and sidebar |
|
|
| Default PHP Version | PHP version applied to new accounts (7.4, 8.1, 8.2, 8.3) |
|
|
| Primary Nameserver | NS1 hostname shown to users when setting up DNS |
|
|
| Secondary Nameserver | NS2 hostname |
|
|
| Update Channel | **Stable** (main branch) or **Beta** (beta branch) — controls which GitHub branch the Updates page checks and deploys from |
|
|
|
|
## WHMCS Billing Bridge
|
|
|
|
NovaCPX exposes a WHMCS-compatible server module API at `/api/whmcs/<action>`. Enable it in **Server Options** and set the API key. The WHMCS module calls these endpoints to provision, suspend, and terminate accounts automatically.
|
|
|
|
Supported actions: `create`, `suspend`, `unsuspend`, `terminate`, `changepackage`, `info`.
|
|
|
|
Authenticate with the `X-WHMCS-Key: <api_key>` header.
|
|
|
|
## Log files
|
|
|
|
| File | Contents |
|
|
|------|----------|
|
|
| `/var/log/novacpx/deploy.log` | Auto-deploy activity |
|
|
| `/var/log/novacpx/stats-collector.log` | Server stats cron output |
|
|
| `/var/log/novacpx/notify-checks.log` | Disk/SSL notification cron output |
|
|
| `/var/log/novacpx/switch-*.log` | Service switch script output |
|