Getting Started with CorePanel
Welcome to CorePanel - the modern, secure, and blazingly fast web hosting control panel designed for RHEL-based servers. This guide will help you get started with CorePanel and unlock the full potential of your hosting infrastructure.
What is CorePanel?
Section titled “What is CorePanel?”CorePanel is a next-generation web hosting control panel that combines security, performance, and ease of use. Built from the ground up for modern hosting needs, CorePanel provides:
- True User Isolation: Each account runs in a completely isolated environment with dedicated PHP-FPM pools
- WordPress Optimization: Built-in Early Hints, on-the-fly WebP, and performance optimizations
- Modern Stack: CoreHttpd with HTTP/3, PHP 8.4, 8.3, 8.2 and 7.4 side by side, and MariaDB 10.11 LTS out of the box (dynamic caching & JS/CSS minification on Pro)
- Security First: SELinux Enforcing, native pxShield WAF, privilege-separated services, and more
Quick Start
Section titled “Quick Start”Prerequisites
Section titled “Prerequisites”Before installing CorePanel, ensure your server meets these requirements:
- Operating System: RHEL 8/9/10, AlmaLinux, or Rocky Linux
- Architecture: x86_64 (64-bit)
- RAM: Minimum 2GB (4GB+ recommended)
- Disk Space: At least 20GB free space
- Network: Clean installation with internet access
The installer checks the memory before it touches anything and warns if this server has less than 2 GB. It is a warning, not a refusal — it will install on a smaller box if you tell it to. What it is warning about is not an error at install time: the stack fits well enough to finish, and then the kernel starts killing a service hours or days later.
Installation Steps
Section titled “Installation Steps”Installing CorePanel is straightforward. Follow these steps:
- Update your system
dnf update -y- Run the installer
curl -fsSL https://get.corepanel.net/install.sh | bashThe installer sets up the full stack: CoreHttpd, PHP-FPM (7.4 and 8.4), MariaDB 10.11 LTS, Postfix/Dovecot, Rspamd, PowerDNS, Pure-FTPd, and the CorePanel services.
It asks for confirmation before touching the server, because it takes ownership of the whole hosting stack and there is no uninstall — install on a fresh server only.
- Answer the setup wizard
The installer finishes by running the setup wizard, which asks for the panel domain and the administrator email, then generates the admin password. You do not need to launch anything: see Initial Server Setup for a full walkthrough.
The panel domain is optional — leave it blank and CorePanel is served on the server’s IP, with the domain asked for again on first login.
For unattended provisioning, --yes skips both the confirmation and every wizard prompt, leaving the panel domain and admin email for the panel’s onboarding:
curl -fsSL https://get.corepanel.net/install.sh | bash -s -- --yesThis is also what happens automatically when the installer runs with no terminal at all, such as from cloud-init or a provisioning system.
- If the installer reports a failure, stop here
Before it declares success, the installer waits for the services to settle and checks that they are running. If the panel is not usable it says so plainly, names the units that are down, and exits non-zero:
=========================== INSTALL FAILED ===========================CorePanel installed, but these services are not healthy: corepanel-core: failed (restarted 5 times on its own)
The panel is NOT usable in this state. What to look at first: journalctl -u corepanel-core -n 50A unit that keeps failing hits systemd’s start limit — five restarts in ten seconds — and is then not retried at all, so it stays down even once the cause is gone. After fixing it:
systemctl reset-failed && systemctl start corepanel-coreA service that is running but was restarted on its own is reported the same way: it is up only because systemd keeps putting it back, and it will not survive on its own.
When only a service behind the panel is down — mail, DNS, FTP — the installer says so as a warning and lets the install stand, because the panel works and you can fix the rest from it.
A failed install also sends us a diagnostic report; what it contains, and how to turn it off.
- Access the panel
If you gave a panel domain, use it:
https://panel.example.comOtherwise — no domain yet, or DNS not pointing here — reach the panel at https://<server-ip> and accept the self-signed certificate warning (verify the fingerprint printed by the wizard). That is where you set the panel domain if you skipped it.
Log in with the user coreadmin and the password shown at the end of the wizard (also stored in /root/.corepanel_password).
If you lose track of the URL, your next SSH login shows it: CorePanel keeps a block in /etc/motd with the panel address and where the password lives, and rewrites it whenever the panel domain changes — see The login banner.
The IP endpoint stays available afterwards as your way back in if DNS or the certificate ever breaks — see Accessing the panel by IP.
Choosing an edition
Section titled “Choosing an edition”The first sign-in asks which edition this server is going to be: Personal (free, up to 20 websites), or a 14-day free trial of Pro or Business with no card and nothing to cancel. Whatever you pick can be changed later from Server → License — see Choosing an edition.
Core Concepts
Section titled “Core Concepts”Understanding these key concepts will help you make the most of CorePanel:
Accounts and Isolation
Section titled “Accounts and Isolation”Each account in CorePanel runs in a completely isolated environment:
| Feature | Description | Security Benefit |
|---|---|---|
| Dedicated PHP-FPM Pool | Each account has its own PHP process | Prevents cross-account PHP exploits |
| Separate Linux User | Each account is a separate system user | Operating system-level isolation |
| Disk Quotas | Per-account storage limits | Prevents storage abuse |
| File Permissions | Strict permission enforcement (0600 isolation) | No unauthorized file access |
WordPress Optimization
Section titled “WordPress Optimization”CorePanel includes built-in WordPress optimizations:
- Early Hints (HTTP 103): Pre-load critical resources before the page loads (all editions, on by default)
- Image Optimization: On-the-fly WebP conversion (all editions, on by default)
- Dynamic Caching: Intelligent caching with automatic cache invalidation (Pro and up)
- JS/CSS Minification: On-the-fly asset minification (Pro and up)
Backup System
Section titled “Backup System”CorePanel’s backup system provides:
- Full Account Backups: A self-describing archive with the home directory, MySQL databases, mailboxes, and credentials
- Scheduled Backups: Recurring per-account or server-wide schedules (daily/weekly/monthly presets or custom cron) with retention pruning
- Full Restore: Recreate an entire account — domains, DNS, mail, databases, and files — from a single archive
Common Operations
Section titled “Common Operations”Here are some common tasks you’ll perform with the corepanel CLI:
Creating a New Account
Section titled “Creating a New Account”Accounts are created from their primary domain. The CLI prompts for the account password (at least 12 characters, with lower-case, upper-case, and digit):
corepanel account create example.com --owner-email john@example.comFinding an Account ID
Section titled “Finding an Account ID”Most commands identify accounts by their numeric id. Resolve a domain to its id with:
corepanel account list --search example.comAdding a Domain
Section titled “Adding a Domain”Add an alias (parked) or addon domain to an existing account, using its account id:
corepanel domain add 12 shop.example.net --type addonChecking Service Status
Section titled “Checking Service Status”corepanel statusNext Steps
Section titled “Next Steps”Now that you understand the basics, explore these topics:
- Initial Server Setup: The
corepanel system initwizard in detail - CLI Reference: Every
corepanelcommand, flag, and example - Mail System: Learn about the email stack, SPF, DKIM, and authentication
Automation
Section titled “Automation”Everything the panel does goes through CorePanel’s JSON-RPC 2.0 API — the same interface used by the web UI and the corepanel CLI. For scripted provisioning today, use the CLI, which supports non-interactive usage and JSON output:
# Scripted account provisioningprintf '%s' "$ACCOUNT_PASSWORD" | corepanel account create example.com --password-stdin --php 8.4 --quota 5120
# JSON output for scriptingcorepanel account list --search example.com --json | jq '.[0].accountId'