Deploy KeyHelp Hosting Panel on a VPS
Free, feature-rich hosting control panel with domain management, email, databases, DNS, SSL certificates, and reseller support — no licensing costs.
At a Glance
| Project | KeyHelp by Keyweb AG |
| License | Free tier (Pro upgrade available) |
| Recommended Plan | RamNode Premium KVM 2 GB+ |
| OS | Ubuntu 24.04 LTS or Debian 12/13 |
| Stack | Apache, MariaDB, PHP, Postfix, Dovecot, BIND, PureFTPd |
| Estimated Setup Time | 15–25 minutes |
Prerequisites
- A RamNode VPS with at least 2 GB RAM (Ubuntu 24.04 LTS or Debian 12)
- A registered domain name with DNS access
- An SSH client and basic Linux command-line familiarity
- A clean, minimal OS — no pre-installed web/mail/DB servers
Provision Your RamNode VPS
Deploy a VPS with Ubuntu 24.04 LTS, 2 GB+ RAM. Note the IP address from the dashboard.
DNS Records
| Type | Name | Value |
|---|---|---|
| A | panel.yourdomain.com | YOUR_SERVER_IP |
| A | yourdomain.com | YOUR_SERVER_IP |
| MX | yourdomain.com | panel.yourdomain.com |
Initial Server Configuration
ssh root@YOUR_SERVER_IP
apt update && apt upgrade -yhostnamectl set-hostname panel.yourdomain.com
echo "YOUR_SERVER_IP panel.yourdomain.com panel" >> /etc/hostsInstall KeyHelp
KeyHelp requires a clean OS with no pre-installed web servers or databases.
wget https://install.keyhelp.de/get_keyhelp.php -O install_keyhelp.sh
bash install_keyhelp.shThe interactive wizard prompts for admin username, password, email, hostname, and Let's Encrypt. Installation takes 5–10 minutes, then the server reboots.
cat /root/keyhelp_login_data_*Important: Save credentials in a password manager, then delete the file: rm /root/keyhelp_login_data_*
Access the KeyHelp Panel
Navigate to https://panel.yourdomain.com and log in with your admin credentials. The dashboard shows server resource usage, service status, and recent activity.
Add Your First Domain
- Navigate to Hosting → Users → Add User
- Define resource limits under Hosting Packages
- Go to Hosting → Domains → Add Domain
- KeyHelp auto-creates the Apache VHost, DNS zone, and directory structure
Configure SSL/TLS with Let's Encrypt
Navigate to a domain → SSL/TLS tab → select Let's Encrypt → check domain and subdomains → Request Certificate.
Enable Force HTTPS in the same tab. Certificates renew automatically 30 days before expiration.
Set Up Email
KeyHelp installs Postfix and Dovecot automatically. Create accounts under Email → Email Accounts.
Email Deliverability DNS Records
v=spf1 ip4:YOUR_SERVER_IP ~allv=DMARC1; p=quarantine; rua=mailto:postmaster@yourdomain.comEnable DKIM under Email → DKIM and set the PTR record via the RamNode control panel. Webmail available at https://panel.yourdomain.com/webmail.
Database Management
Create databases under Databases → MySQL Databases. Access phpMyAdmin at https://panel.yourdomain.com/phpmyadmin.
Security Hardening
Enable 2FA
Go to User Settings → enable Two-Factor Authentication and scan the QR code.
Harden SSH
Port 2222
PermitRootLogin prohibit-password
PasswordAuthentication no
MaxAuthTries 3systemctl restart sshdRestrict Panel Access by IP
<RequireAny>
Require all denied
Require ip YOUR_OFFICE_IP
Require ip YOUR_HOME_IP
</RequireAny>Verify Fail2Ban
systemctl status fail2ban
fail2ban-client statusConfigure Backups
Configure under Configuration → Backup: daily schedule, retention period, and components (files, databases, email, config).
Off-Server Backup
0 3 * * * rsync -avz /home/keyhelp/backups/ user@backup-server:/backups/keyhelp/ --deletePerformance Tuning
MariaDB (2 GB VPS)
innodb_buffer_pool_size = 256M
innodb_log_file_size = 64M
max_connections = 50
query_cache_type = 1
query_cache_size = 32M
tmp_table_size = 32M
max_heap_table_size = 32Msystemctl restart mariadbPer-domain PHP settings available under Hosting → Domains → PHP Settings. Verify OPcache: php -i | grep opcache.enable.
Troubleshooting
- Cannot access panel — Verify DNS, check Apache:
systemctl status apache2, check firewall:iptables -L -n. - Let's Encrypt fails — Ensure ports 80/443 are open, verify A record resolves, check rate limits.
- Email not working — Confirm MX record, check Postfix:
systemctl status postfix, verify port 25 isn't blocked. - High memory — Reduce Apache MaxRequestWorkers, lower MariaDB buffer pool, disable ClamAV if not needed.
