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
| Component | Requirement |
|---|---|
| OS | Ubuntu 22.04 / Debian 12 (recommended) |
| RAM | Minimum 1 GB (recommended 2 GB+) |
| CPU | 1 core minimum |
| Disk | 10 GB free |
| Access | Root 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 8083Installation takes 10-20 minutes. At the end it shows the login credentials.
First access
https://SERVER_IP:8083Username: 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
- Web → Add Domain
- Enter the domain (e.g.
mysite.com) - Select the PHP template (e.g.
php-fpm) - Enable SSL → Let's Encrypt
- 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 adminEmail 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/webmailAvailable webmail: Roundcube (default) or Rainloop.
Update HestiaCP
# Check current version
v-list-sys-info
# Update
apt update && apt upgrade hestia -yBackup 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.tarPorts 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 # DNSTroubleshooting 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 hestiaReset admin password
v-change-user-password admin NEW_PASSWORDAccess 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