The guide walks a reader through installing HestiaCP on a clean Ubuntu 20.04 system, starting with prerequisites such as a fresh install, root access, and an updated package list. It instructs the user to stop and disable any existing Apache or Nginx services before pulling the official installer script via curl, installing required packages like Python 3, Git, and utilities with apt. After running the downloaded install.sh with sudo, the script sets up nginx by default, creates an admin user, configures DNS and firewall rules, and outputs a randomly generated password that the reader must capture for first‑time login. The final parts of the article cover accessing the web UI over HTTPS, installing Let’s Encrypt certificates for the panel, troubleshooting common issues like port conflicts from leftover Apache configs, and providing quick fixes in a concise table.
Title: How to Install HestiaCP Control Panel on Ubuntu 20.04
If you’ve ever tried setting up a web server and felt like you’d rather be writing code than wrestling with configuration files, this is for you. In the next few minutes I’ll walk you through installing HestiaCP on a fresh Ubuntu 20.04 machine—no extra packages, no wasted time.
Prerequisites: Clean Slate Before You Start
- Fresh install – I’ve seen people run into headaches when they try to install Hestia over an existing Apache or Nginx stack. Just wipe the web server directory (/etc/apache2 and /etc/nginx) if you’re starting from scratch.
- Root privileges – All commands need sudo. If you’re on a VPS, you’ll likely be logged in as root already.
- Update packages –
sudo apt update && sudo apt upgrade -y
This makes sure your system is up‑to‑date and prevents the “broken dependency” errors that pop up when installing Hestia’s dependencies.
Disable Existing Web Servers
If you’re reusing a machine, make sure no other service is listening on port 80 or 443:
sudo systemctl stop apache2 || true sudo systemctl disable apache2 || true sudo systemctl stop nginx || true sudo systemctl disable nginx || true
I once had a user complain that Hestia wouldn’t start because Apache was still alive. Killing the old process before you install clears the way.
Install Dependencies
Hestia requires Python 3, Git and some utilities:
sudo apt install -y curl gnupg2 ca-certificates lsb-release python3 python3-pip git
The curl line pulls the Hestia installer script in a single shot later on.
Grab the Installer
Hestia’s official install script is self‑contained. Run:
curl -O https://raw.githubusercontent.com/hestiacp/hestiacp/master/install.sh
This downloads the latest installer into your current directory.
Launch the Install Script
The script asks a few questions—most of them have sensible defaults, so you can just hit Enter:
sudo bash install.sh
What the script does in plain language:
1. Installs the web server stack (nginx by default) and mail services.
2. Creates the admin user with a random password it prints out for you.
3. Configures DNS resolvers and firewall rules to allow HTTP/HTTPS access.
Grab Your Admin Password
After installation finishes, you’ll see something like:
HestiaCP install completed! Admin password: Q9x7kJpX
Copy that. You’ll need it for the web UI. (If you lose it, run hestia passwd admin to reset.)
Access Hestia
Open a browser and go to:
https://your‑server‑ip/
Use the username admin and the password from step 6. The first time you log in, Hestia will prompt you to change that password—do it.
Secure Your Panel with SSL
Hestia can auto‑issue Let’s Encrypt certificates for your sites, but the control panel itself should also be behind HTTPS:
sudo certbot certonly --standalone -d hestiacp.yourdomain.com
Then point hestia.conf (usually in /etc/nginx/sites-available/hestia) to those cert files.
Common Pitfall: Old Apache Configs
If you get “port 80 already in use” after the install, check for lingering Apache configs:
sudo rm /etc/apache2/*.conf
Then restart Nginx with sudo systemctl restart nginx. I’ve seen this happen when people upgraded Ubuntu and kept old service files around.
Quick Fixes
| Symptom | Likely Cause | Fix |
|---|---|---|
| “hestia: command not found” after install | PATH not updated | source /etc/hestia/vars.sh or reboot |
| Mail services won’t start | Postfix config missing | Run sudo hestia mail-config to regenerate |
There you go—HestiaCP running on Ubuntu 20.04, ready for your domains and email accounts.