Software & Configuration

HestiaCP: Control Panel

Install and configure HestiaCP on your VPS. Manage domains, email, databases and SSL from web interface.

HestiaCP is an open source, lightweight and modern control panel. It lets you manage websites, email, databases and DNS from a clean web interface.

Requirements

ComponentRequirement
OSUbuntu 22.04 / Debian 12 (recommended)
RAMMinimum 1 GB (recommended 2 GB+)
CPU1 core minimum
Disk10 GB free
AccessRoot or sudo

Clean VPS

Install HestiaCP on a fresh VPS without other web servers (Nginx/Apache), panels, or conflicting services. It will manage Nginx, PHP, MySQL, Postfix autonomously.

Installation

# Download the installation script
wget https://raw.githubusercontent.com/hestiacp/hestiacp/release/install/hst-install.sh

# Verify the downloaded file (good practice)
cat hst-install.sh | head -20

# Installation with Nginx + PHP + MySQL + Mail
bash hst-install.sh \
  --nginx yes \
  --apache no \
  --phpfpm yes \
  --multiphp yes \
  --vsftpd yes \
  --proftpd no \
  --named yes \
  --mysql yes \
  --postgresql no \
  --exim yes \
  --dovecot yes \
  --sieve no \
  --clamav no \
  --spamassassin no \
  --iptables yes \
  --fail2ban yes \
  --quota no \
  --api yes \
  --lang en \
  --interactive yes \
  --hostname your.domain.com \
  --email admin@yourdomain.com \
  --password SECURE_PASSWORD \
  --port 8083

Installation takes 10-20 minutes. At the end it shows the login credentials.

First access

https://SERVER_IP:8083

Username: admin Password: the one set during installation

SSL Certificate

On first access the browser will show an SSL warning because the certificate is self-signed. Click "Advanced → Proceed" to access. You can then add a Let's Encrypt certificate from the panel.

Add a website

  1. Web → Add Domain
  2. Enter the domain (e.g. mysite.com)
  3. Select the PHP template (e.g. php-fpm)
  4. Enable SSL → Let's Encrypt
  5. Click Save

Site files: /home/user/web/mysite.com/public_html/

CLI management

HestiaCP has a complete CLI via the v-* command:

# List users
v-list-users

# Add user
v-add-user username password email@domain.com

# Add web domain
v-add-web-domain admin mysite.com

# Add Let's Encrypt SSL
v-add-letsencrypt-domain admin mysite.com www.mysite.com

# Add database
v-add-database admin dbname dbuser dbpassword mysql

# List databases
v-list-databases admin

# Add email account
v-add-mail-account admin mysite.com info password

# Backup user
v-backup-user admin

Email configuration

DNS records needed

Add to your domain DNS:

mysite.com.      MX   10   mail.mysite.com.
mail.mysite.com. A         SERVER_IP
mysite.com.      TXT       "v=spf1 ip4:SERVER_IP ~all"

HestiaCP automatically generates DKIM records: copy them from Mail → domain → DNS Records.

Webmail access

https://webmail.mysite.com
# or
https://SERVER_IP:8083/webmail

Available webmail: Roundcube (default) or Rainloop.

Update HestiaCP

# Check current version
v-list-sys-info

# Update
apt update && apt upgrade hestia -y

Backup and restore

# Manual backup of a user
v-backup-user admin

# Backups are in:
ls /backup/

# Restore
v-restore-user admin /backup/admin.2024-01-15.tar

Ports to open in firewall

ufw allow 8083/tcp   # HestiaCP panel
ufw allow 80/tcp     # HTTP
ufw allow 443/tcp    # HTTPS
ufw allow 21/tcp     # FTP
ufw allow 25/tcp     # SMTP
ufw allow 465/tcp    # SMTPS
ufw allow 587/tcp    # SMTP Submission
ufw allow 993/tcp    # IMAPS
ufw allow 995/tcp    # POP3S
ufw allow 53/tcp     # DNS
ufw allow 53/udp     # DNS

Troubleshooting common issues

Service won't start

# Check status of all HestiaCP services
v-list-sys-services

# Restart services
systemctl restart nginx php8.1-fpm mysql hestia

Reset admin password

v-change-user-password admin NEW_PASSWORD

Access and error logs

tail -f /var/log/hestia/nginx-access.log
tail -f /var/log/hestia/nginx-error.log
tail -f /var/log/hestia/system.log

On this page