NovaPanel
Docs

Installation

One command, ten minutes, fresh Ubuntu or Debian.

The one-line install

On a fresh Ubuntu 22.04 / 24.04 / 26.04 or Debian 12 / 13 VPS, run:

root@vps
$ curl -fsSL https://license.novapanel.dev/install.sh | sudo bash

That's it. The installer handles everything: package installs, database setup, Caddy reverse proxy, license activation, and the panel binary itself. Total time: roughly 10 minutes on a 2-CPU / 4 GB RAM VPS.

What you need before running

  • A fresh Ubuntu 22.04 / 24.04 / 26.04 or Debian 12 / 13 server (not a shared host — you need root).
  • At least 2 GB RAM, 2 CPU cores, 30 GB disk. More is better, especially for mail.
  • A domain pointed at the server's public IP (you'll be asked for it during install).
  • Ports 80, 443, 25, 110, 143, 465, 587, 993, 995, 21, 53, and the panel/tools ports 2082, 2083, 2086, 2087, 8080, 8443, 2095, 2096 reachable from the internet (the installer offers to open them via UFW). If your host has a separate cloud firewall, open them there too.
Tip: the panel runs at port 2087 (admin) and 2083 (customer), with automatic Let's Encrypt for the hostname you provide. Don't expose the panel via 443 alongside customer sites — Caddy handles that automatically.

What gets installed

  • PostgreSQL 17 — panel's own database
  • MariaDB — for customer-owned databases
  • Caddy — reverse proxy with auto-TLS
  • PHP-FPM 8.3 — for hosted sites
  • Postfix + Dovecot + OpenDKIM — mail stack
  • vsftpd — FTP
  • PowerDNS — authoritative DNS
  • ClamAV — virus scanning (Pro)
  • NovaPanel binary itself, fetched from the license-gated CDN

What it asks you

The installer is interactive — it'll prompt you for:

  1. Hostname for the panel (e.g. panel.example.com)
  2. Admin email address
  3. Admin password
  4. License key, if you have a Pro/Developer one — leave blank for free Community

If you're piping curl ... | sudo bash the installer detects that, re-downloads itself to /tmp, and reattaches to your terminal automatically so prompts work properly.

Non-interactive install (for automation)

Pass --quick plus flags to skip every prompt. Arguments after bash -s -- are forwarded to the installer:

curl -fsSL https://license.novapanel.dev/install.sh | sudo bash -s -- \
  --quick \
  --hostname panel.example.com \
  --admin-email admin@example.com \
  --admin-pass 'changeme123' \
  --key NOVA-XXXX-XXXX-XXXX

--key is optional — omit it for the free Community tier. Leave off --quick and the flags to run interactively instead. Other useful flags: --admin-user, --ssl-domain <domain> (enable Let's Encrypt for the panel), and --no-mail / --no-dns / --no-ftp / --no-clamav / --no-php / --no-nodejs / --no-python / --skip-waf to skip components. Run with --help to see them all.

After install

NovaPanel follows the cPanel port convention — each panel has an HTTPS port (used with a domain) and a matching HTTP port (used by IP):

  • With a hostname (HTTPS): https://<your-hostname>:2087 (admin) and https://<your-hostname>:2083 (customer)
  • By IP, no domain yet (HTTP): http://<your-ip>:2086 (admin) and http://<your-ip>:2082 (customer)

The HTTP-by-IP ports always work — so if you installed on an IP, or your domain/certificate isn't ready yet, you can still get straight in on :2086 / :2082. (Requesting the HTTPS ports over plain HTTP by IP won't work — that's by design; use the HTTP ports for IP access.)

Log in with the admin email and password you set. From there: create packages, add customers, point domains.

Adding a domain later (IP install → HTTPS)

Installed on an IP and want to move onto a real domain with HTTPS? Point the domain's DNS at the server, then in the admin panel → Settings → General, enter the hostname and click Enable HTTPS for the panel. NovaPanel serves the panel over HTTPS on that hostname and Let's Encrypt issues the certificate automatically within a minute — no reinstall. The HTTP-by-IP ports keep working throughout, so you're never locked out during the switch. Once it's live, the button turns into an HTTPS active shield; visiting the hostname on its own opens the customer panel, while the admin panel stays on :2087. (This also works behind Cloudflare — the bare hostname no longer returns a 521.)

phpMyAdmin and Roundcube webmail follow the same pattern — 8443/2096 (HTTPS) and 8080/2095 (HTTP) — and open from their buttons inside the panel. If your server is behind Cloudflare, see Running behind Cloudflare.

Re-running the installer

The installer is idempotent — re-running on a server that already has NovaPanel just upgrades the binary and re-applies any missing service config. It won't wipe your data.