Logo

Froxlor Installation Guide on Linux VPS

Froxlor Installation Guide on Linux VPS

Complete Froxlor installation guide on Linux VPS (Debian/Ubuntu). This detailed tutorial covers official repository addition, APT installation with all dependencies, MariaDB, Apache, Postfix and Dovecot configuration, SSL security with Let's Encrypt, and domain, email, FTP and database management. Also includes Fail2ban for security, performance optimization, automatic backups, and troubleshooting for a complete professional hosting panel.

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:

  1. Set a root password for MariaDB:
    • Choose a strong and secure password
    • Note it carefully
  2. 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.

  1. Go to System > Configuration
  2. Click Configuration in the menu
  3. Configure services according to your needs:
    • Web server (Apache/Nginx)
    • Email server (Postfix/Dovecot)
    • FTP server (ProFTPD)
    • DNS server (BIND/PowerDNS - optional)
  4. Click Apply changes

Generating Configuration Files

  1. Go to System > Configuration
  2. Click Reconfigure services
  3. Select all services to configure
  4. Click Submit
  5. Copy the generated shell commands
  6. 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

  1. In Froxlor, go to System > Settings
  2. Click the System tab
  3. Find the Let's Encrypt section
  4. Enable Use Let's Encrypt
  5. Enter your email
  6. Set Let's Encrypt server (production)
  7. Save

Get a Certificate for the Panel

  1. Go to Domains
  2. Add your domain (panel.your-domain.com)
  3. Check SSL enabled
  4. Check Let's Encrypt
  5. Save
  6. Certificate will be generated automatically

Force HTTPS

  1. Go to System > Settings
  2. Panel section
  3. Enable Force HTTPS
  4. Save

Now access Froxlor via:

https://panel.your-domain.com/froxlor

Step 12: Creating Your First Client

Add a Client

  1. Log in as admin
  2. Go to Clients > Add client
  3. 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)
  4. Click Save

Step 13: Adding a Domain

As Administrator

  1. Go to Domains > Add domain
  2. Fill in:
    • Client: Select client
    • Domain: example.com
    • Path: Domain path (auto-generated)
    • SSL: Enable if desired
    • Let's Encrypt: Enable for automatic SSL
  3. Configure options:
    • PHP: Enabled/Disabled
    • CGI: As needed
    • Logs: Enabled recommended
  4. 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

  1. Go to Email > Email addresses
  2. Click Create email address
  3. Fill in:
    • Local address: contact (for [email protected])
    • Domain: Select domain
    • Password: Strong password
    • Quota: Allocated space (e.g., 1000 MB)
  4. 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

  1. Go to FTP > FTP accounts
  2. Click Create FTP account
  3. Fill in:
    • Username: ftpuser
    • Password: Strong password
    • Path: Access path (auto-filled)
    • Description: Optional description
  4. 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

  1. Go to MySQL > Databases
  2. Click Create database
  3. Fill in:
    • Client: Select client
    • Description: DB description
    • Database name: Auto-generated or custom
  4. Click Save

Creating a MySQL User

  1. Go to MySQL > Users
  2. Click Create user
  3. Fill in:
    • Username: Auto-generated or custom
    • Password: Strong password
    • Description: Description
  4. Assign to a database
  5. 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

  1. Go to System > Settings
  2. Backups section
  3. Configure:
    • Backup path: /backup/froxlor
    • Frequency: Daily
    • Number of backups to keep: 7
  4. 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:

  1. Apache is running:
systemctl status apache2
  1. Correct permissions:
chown -R www-data:www-data /var/www/html/froxlor
chmod -R 755 /var/www/html/froxlor
  1. Apache logs:
tail -f /var/log/apache2/error.log

Database Connection Error

Solutions:

  1. Check MySQL is running:
systemctl status mysql
  1. Test connection:
mysql -u froxlor -p
  1. Check permissions:
SHOW GRANTS FOR 'froxlor'@'localhost';

Emails Not Working

Checks:

  1. Postfix is running:
systemctl status postfix
  1. Dovecot is running:
systemctl status dovecot
  1. Check logs:
tail -f /var/log/mail.log
  1. Test email sending:
echo "Test email" | mail -s "Test" [email protected]

SSL Certificate Not Generated

Solutions:

  1. Check domain points to server:
dig panel.your-domain.com
  1. Check ports 80 and 443:
netstat -tlnp | grep -E ':(80|443)'
  1. 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

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!

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members