Froxlor Installation Guide on Linux VPS
Introduction
Froxlor is a powerful and lightweight open-source web hosting panel that allows easy management of websites, emails, databases, and servers. This guide walks you through the complete installation of Froxlor on a Linux VPS (Debian/Ubuntu).
What is Froxlor?
Froxlor is a hosting management solution that offers:
- Domain and subdomain management
- Email and FTP account management
- MySQL/MariaDB database management
- Web server configuration (Apache, Nginx, Lighttpd)
- Let's Encrypt support for SSL/TLS
- Multi-user management (admin, resellers, clients)
- Intuitive and responsive interface
Prerequisites
Before starting installation, ensure your VPS has:
- Operating System:
- Debian 12 (Bookworm) or Debian 11 (Bullseye) - Recommended
- Ubuntu 22.04 LTS or Ubuntu 20.04 LTS
- RAM: At least 1 GB (2 GB recommended)
- Disk Space: 10 GB minimum (20 GB recommended)
- Root access or sudo
- Stable Internet connection
- Domain name pointing to your VPS (recommended)
Step 1: System Update
Connect to your VPS via SSH:
ssh root@your-vps-ip
Update the system:
apt update && apt upgrade -y
Reboot if necessary (especially after kernel update):
reboot
Reconnect after reboot.
Step 2: Hostname Configuration
It's important to properly configure your server's hostname.
Set the Hostname
hostnamectl set-hostname panel.your-domain.com
Replace panel.your-domain.com with your desired hostname.
Verify Hostname
hostname
hostname -f
Configure /etc/hosts
Edit the hosts file:
nano /etc/hosts
Add or modify these lines:
127.0.0.1 localhost
127.0.1.1 panel.your-domain.com panel
YOUR_VPS_IP panel.your-domain.com panel
# IPv6 (if applicable)
::1 localhost ip6-localhost ip6-loopback
Save with Ctrl+O, then exit with Ctrl+X.
Step 3: Adding Froxlor Repository
Froxlor provides official packages via its own repository.
Installing Dependencies
apt install -y apt-transport-https lsb-release ca-certificates curl gnupg
Adding GPG Key and Repository
For Debian:
curl -sSLo /usr/share/keyrings/deb.froxlor.org-froxlor.gpg https://deb.froxlor.org/froxlor.gpg
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/debian $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list'
For Ubuntu:
curl -sSLo /usr/share/keyrings/deb.froxlor.org-froxlor.gpg https://deb.froxlor.org/froxlor.gpg
sh -c 'echo "deb [signed-by=/usr/share/keyrings/deb.froxlor.org-froxlor.gpg] https://deb.froxlor.org/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/froxlor.list'
Updating Package List
apt update
Step 4: Installing Froxlor
Installing Froxlor via APT package will automatically install all necessary dependencies (web server, PHP, MariaDB, etc.).
apt install froxlor -y
This command will install:
- Froxlor
- Web server (Apache by default)
- PHP and necessary modules
- MariaDB (MySQL)
- Other dependencies
Installation may take a few minutes. Accept all confirmations.
MariaDB Configuration
During installation, you'll be prompted to:
- Set a root password for MariaDB:
- Choose a strong and secure password
- Note it carefully
- phpmyadmin configuration (if installed):
- Select Apache as web server
- Configure administrator password
Step 5: Securing MariaDB
Run the MySQL security script:
mysql_secure_installation
Answer the questions as follows:
Enter current password for root: [Enter the password you set]
Switch to unix_socket authentication: N
Change the root password?: N (if already set) or Y (to set a new one)
Remove anonymous users?: Y
Disallow root login remotely?: Y
Remove test database?: Y
Reload privilege tables now?: Y
Step 6: Creating a Privileged Database User
Froxlor needs a database user with elevated privileges.
Connect to MySQL
mysql -u root -p
Enter MariaDB root password.
Create User
In the MySQL prompt, execute:
CREATE USER 'froxlor'@'localhost' IDENTIFIED BY 'SecurePassword';
GRANT ALL PRIVILEGES ON *.* TO 'froxlor'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Replace SecurePassword with a strong and unique password.
Important: Note this information, you'll need it for web installation.
Step 7: Firewall Configuration
Open necessary ports:
# If UFW is not installed
apt install ufw -y
# Allow SSH (important!)
ufw allow 22/tcp
# Allow HTTP and HTTPS
ufw allow 80/tcp
ufw allow 443/tcp
# Allow FTP (if needed)
ufw allow 21/tcp
# Allow passive FTP ports (if needed)
ufw allow 49152:65535/tcp
# Enable firewall
ufw enable
Check status:
ufw status
Step 8: Froxlor Web Installation
Access the Installer
Open your browser and go to:
http://YOUR_VPS_IP/froxlor
Or if you've configured a domain:
http://panel.your-domain.com/froxlor
You'll be redirected to the installation wizard.
Step 1: Language Selection
Choose your preferred language (French available).
Step 2: Requirements Check
The installer checks that all prerequisites are met:
- Correct PHP version
- Necessary PHP modules
- Write permissions on folders
If everything is green, click Next.
Step 3: Database Configuration
Fill in the information:
- Database host:
localhost - Username:
froxlor(user created in step 6) - Password: The froxlor user password
- Database:
froxlor(will be created automatically) - Table prefix: Leave default or customize
Click Test connection to verify.
If test succeeds, click Next.
Step 4: Administrator Account Creation
Define your administrator information:
- Admin username:
admin(or customized) - Admin password: Choose a strong password
- Password confirmation
- Admin email: Your email address
Click Next.
Step 5: Server Configuration
Configure server settings:
General Information:
- Server name: Display name (e.g., "My Web Server")
- IP address: Your public IP
- Hostname: panel.your-domain.com
Web Services:
- Web server: Apache (recommended) or Nginx
- PHP version: Select installed version (8.1, 8.2, etc.)
Email Services (if you want to manage emails):
- SMTP server: Postfix (recommended)
- IMAP/POP3 server: Dovecot
FTP Server:
- FTP server: ProFTPD (recommended) or PureFTPd
Click Next.
Step 6: SSL/TLS Configuration
If you have a configured domain:
- Check Use Let's Encrypt for SSL
- Enter your email for Let's Encrypt
- Accept terms
If no domain now, you can configure SSL later.
Click Next.
Step 7: Finalization
Installation completes:
- Database is created
- Tables are initialized
- Configuration is saved
Click Complete installation.
Removing the Installer
For security reasons, remove the installation folder:
rm -rf /var/www/html/froxlor/install
Step 9: First Login
Access the Panel
Go to:
http://YOUR_VPS_IP/froxlor
Or:
http://panel.your-domain.com/froxlor
Login
Use the administrator credentials created during installation:
- Username: admin
- Password: Your admin password
Step 10: Post-Installation Configuration
Service Configuration
After first login, Froxlor will guide you to configure services.
- Go to System > Configuration
- Click Configuration in the menu
- Configure services according to your needs:
- Web server (Apache/Nginx)
- Email server (Postfix/Dovecot)
- FTP server (ProFTPD)
- DNS server (BIND/PowerDNS - optional)
- Click Apply changes
Generating Configuration Files
- Go to System > Configuration
- Click Reconfigure services
- Select all services to configure
- Click Submit
- Copy the generated shell commands
- Execute them in your SSH terminal:
# Example command (yours will be different)
/usr/local/bin/froxlor-cli froxlor:config-services --create
Restarting Services
After applying configuration:
systemctl restart apache2
systemctl restart mysql
systemctl restart postfix
systemctl restart dovecot
systemctl restart proftpd
Check service status:
systemctl status apache2
systemctl status mysql
Step 11: SSL Configuration with Let's Encrypt
Enable Let's Encrypt
- In Froxlor, go to System > Settings
- Click the System tab
- Find the Let's Encrypt section
- Enable Use Let's Encrypt
- Enter your email
- Set Let's Encrypt server (production)
- Save
Get a Certificate for the Panel
- Go to Domains
- Add your domain (panel.your-domain.com)
- Check SSL enabled
- Check Let's Encrypt
- Save
- Certificate will be generated automatically
Force HTTPS
- Go to System > Settings
- Panel section
- Enable Force HTTPS
- Save
Now access Froxlor via:
https://panel.your-domain.com/froxlor
Step 12: Creating Your First Client
Add a Client
- Log in as admin
- Go to Clients > Add client
- Fill in information:
- Login name: client_name
- Password: Secure password
- Name: Client full name
- Email: Client email
- Resources:
- Disk space (e.g., 5000 MB)
- Traffic (e.g., 50000 MB)
- Domains (e.g., 5)
- Subdomains (e.g., 25)
- Email accounts (e.g., 50)
- FTP accounts (e.g., 10)
- MySQL databases (e.g., 10)
- Click Save
Step 13: Adding a Domain
As Administrator
- Go to Domains > Add domain
- Fill in:
- Client: Select client
- Domain: example.com
- Path: Domain path (auto-generated)
- SSL: Enable if desired
- Let's Encrypt: Enable for automatic SSL
- Configure options:
- PHP: Enabled/Disabled
- CGI: As needed
- Logs: Enabled recommended
- Click Save
DNS Configuration
Configure your DNS records at your registrar:
A @ YOUR_VPS_IP
A www YOUR_VPS_IP
AAAA @ YOUR_IPv6 (if applicable)
AAAA www YOUR_IPv6 (if applicable)
Step 14: Email Configuration
Creating an Email Account
- Go to Email > Email addresses
- Click Create email address
- Fill in:
- Local address: contact (for [email protected])
- Domain: Select domain
- Password: Strong password
- Quota: Allocated space (e.g., 1000 MB)
- Click Save
Email Client Configuration
To use email with a client (Outlook, Thunderbird):
Incoming Server (IMAP):
- Server: mail.your-domain.com
- Port: 993
- Security: SSL/TLS
- Username: [email protected]
- Password: The password you set
Outgoing Server (SMTP):
- Server: mail.your-domain.com
- Port: 587 (STARTTLS) or 465 (SSL)
- Security: STARTTLS or SSL/TLS
- Authentication: Required
- Username: [email protected]
- Password: The password you set
DNS Records for Email
Add these DNS records:
MX @ 10 mail.your-domain.com
A mail YOUR_VPS_IP
# SPF
TXT @ "v=spf1 mx a ip4:YOUR_VPS_IP ~all"
# DKIM (generated by Froxlor)
TXT default._domainkey "v=DKIM1; k=rsa; p=YOUR_PUBLIC_KEY"
# DMARC
TXT _dmarc "v=DMARC1; p=quarantine; rua=mailto:[email protected]"
Step 15: FTP Configuration
Creating an FTP Account
- Go to FTP > FTP accounts
- Click Create FTP account
- Fill in:
- Username: ftpuser
- Password: Strong password
- Path: Access path (auto-filled)
- Description: Optional description
- Click Save
FTP Connection
Use an FTP client (FileZilla):
- Host: ftp.your-domain.com or YOUR_VPS_IP
- Port: 21
- Type: FTP - Explicit SSL/TLS
- Username: [email protected]
- Password: The password you set
Step 16: Database Management
Creating a Database
- Go to MySQL > Databases
- Click Create database
- Fill in:
- Client: Select client
- Description: DB description
- Database name: Auto-generated or custom
- Click Save
Creating a MySQL User
- Go to MySQL > Users
- Click Create user
- Fill in:
- Username: Auto-generated or custom
- Password: Strong password
- Description: Description
- Assign to a database
- Click Save
phpMyAdmin Access
Access phpMyAdmin via:
http://panel.your-domain.com/phpmyadmin
Log in with:
- Username: The MySQL user created
- Password: The password you set
Step 17: Backups
Configuring Automatic Backups
- Go to System > Settings
- Backups section
- Configure:
- Backup path: /backup/froxlor
- Frequency: Daily
- Number of backups to keep: 7
- Save
Manual Backup Script
Create a custom script:
nano /root/backup-froxlor.sh
Content:
#!/bin/bash
BACKUP_DIR="/backup/froxlor"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
# Database backup
mysqldump -u root -p'YOUR_PASSWORD' froxlor > $BACKUP_DIR/froxlor_db_$DATE.sql
# Web files backup
tar -czf $BACKUP_DIR/www_$DATE.tar.gz /var/www/
# Configuration backup
tar -czf $BACKUP_DIR/config_$DATE.tar.gz /etc/apache2 /etc/postfix /etc/dovecot
# Keep only the last 7 backups
find $BACKUP_DIR -name "froxlor_db_*.sql" -mtime +7 -delete
find $BACKUP_DIR -name "www_*.tar.gz" -mtime +7 -delete
find $BACKUP_DIR -name "config_*.tar.gz" -mtime +7 -delete
echo "Backup completed: $DATE"
Make it executable:
chmod +x /root/backup-froxlor.sh
Automation with Cron
crontab -e
Add:
0 3 * * * /root/backup-froxlor.sh
Step 18: Advanced Security
Fail2ban
Install Fail2ban to protect against brute force attacks:
apt install fail2ban -y
Create a jail for Froxlor:
nano /etc/fail2ban/jail.d/froxlor.conf
Content:
[froxlor]
enabled = true
port = http,https
filter = froxlor
logpath = /var/www/html/froxlor/logs/login_errors.log
maxretry = 5
bantime = 3600
Create the filter:
nano /etc/fail2ban/filter.d/froxlor.conf
Content:
[Definition]
failregex = ^.*Login attempt from <HOST> for.*$
ignoreregex =
Restart Fail2ban:
systemctl restart fail2ban
ModSecurity Configuration
For Apache with ModSecurity:
apt install libapache2-mod-security2 -y
Configure basic rules:
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
Edit configuration:
nano /etc/modsecurity/modsecurity.conf
Change:
SecRuleEngine DetectionOnly
To:
SecRuleEngine On
Restart Apache:
systemctl restart apache2
Step 19: Optimization
PHP Configuration
Optimize PHP for better performance:
nano /etc/php/8.2/apache2/php.ini
Modify these values:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 300
max_input_time = 300
Apache Configuration
Optimize Apache:
nano /etc/apache2/apache2.conf
Add or modify:
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxRequestWorkers 150
MaxConnectionsPerChild 3000
</IfModule>
Restart Apache:
systemctl restart apache2
OPcache
Enable OPcache for PHP:
nano /etc/php/8.2/apache2/conf.d/10-opcache.ini
Recommended configuration:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
Restart Apache:
systemctl restart apache2
Step 20: Froxlor Updates
Update via APT
Froxlor updates like any package:
apt update
apt upgrade froxlor
Version Check
In Froxlor panel, go to System > About to see installed version.
Troubleshooting
Panel Doesn't Display
Checks:
- Apache is running:
systemctl status apache2
- Correct permissions:
chown -R www-data:www-data /var/www/html/froxlor
chmod -R 755 /var/www/html/froxlor
- Apache logs:
tail -f /var/log/apache2/error.log
Database Connection Error
Solutions:
- Check MySQL is running:
systemctl status mysql
- Test connection:
mysql -u froxlor -p
- Check permissions:
SHOW GRANTS FOR 'froxlor'@'localhost';
Emails Not Working
Checks:
- Postfix is running:
systemctl status postfix
- Dovecot is running:
systemctl status dovecot
- Check logs:
tail -f /var/log/mail.log
- Test email sending:
echo "Test email" | mail -s "Test" [email protected]
SSL Certificate Not Generated
Solutions:
- Check domain points to server:
dig panel.your-domain.com
- Check ports 80 and 443:
netstat -tlnp | grep -E ':(80|443)'
- Check Let's Encrypt logs:
tail -f /var/log/letsencrypt/letsencrypt.log
Useful Commands
Service Management
# Restart all services
systemctl restart apache2 mysql postfix dovecot proftpd
# View logs in real-time
tail -f /var/log/apache2/error.log
tail -f /var/log/mail.log
tail -f /var/log/proftpd/proftpd.log
# Check resource usage
htop
df -h
free -m
Froxlor CLI Management
Froxlor provides a command-line interface:
# View available commands
froxlor-cli list
# Reconfigure services
froxlor-cli froxlor:config-services --create
# Regenerate SSL certificates
froxlor-cli froxlor:letsencrypt --renew-all
Additional Resources
Official Documentation
- Official site: https://froxlor.org/
- Documentation: https://docs.froxlor.org/
- GitHub: https://github.com/Froxlor/Froxlor
- Forum: https://forum.froxlor.org/
Community
- Froxlor Discord
- Official forum for support
- GitHub for issues and feature requests
Tutorials
- YouTube videos on Froxlor
- Community blog articles
- Specific guides (WordPress, etc.)
Conclusion
Your Froxlor server is now installed and operational! You can now:
- Host websites
- Manage professional email accounts
- Create FTP accounts for your clients
- Manage MySQL databases
- Deliver automatic SSL certificates
- Easily administer your server via web interface
Important Points to Remember:
- Make regular backups
- Keep the system updated
- Monitor logs
- Secure your server (Fail2ban, firewall)
- Document your configurations
Welcome to the web hosting world with Froxlor!


















