Skip to main contentSkip to navigation
[email protected]
Client AreaSupport
Hosting Mammoth
HostingMammothYour Data, Our Responsibility
Home
Solutions
Hosting Services
Store
Pricing
About
Blog
API
Contact

Stay Ahead of the Curve

Get the latest insights on cybersecurity, AI innovations, and enterprise data solutions delivered to your inbox.

Hosting Mammoth
HostingMammothEnterprise Solutions

Enterprise-grade data solutions. Hosting, recovery, cybersecurity, and AI-powered services for businesses worldwide.

[email protected]
Sun - Fri, 9:00am - 5:00pm

Services

  • Cloud Hosting
  • Data Recovery
  • Cybersecurity
  • Legal Support
  • MSP Services
  • Web Development
  • AI Services
  • Free Server Migration

Hosting

  • VPS Hosting (NVMe SSD)
  • VDS Hosting (NVMe)
  • Storage VPS (High SSD)
  • GPU Servers
  • Managed Services
  • Cloud Firewall
  • Load Balancer
  • One-Click Apps
  • n8n Hosting
  • Object Storage
  • FAQ

Company

  • Store
  • Pricing
  • About Us
  • Locations
  • Blog
  • Testimonials
  • Contact
  • Affiliate Program
  • White-Label
  • Terms of Service
  • Privacy Policy
  • Browser Cookies
  • SLA

Support

  • Client Area
  • Submit Ticket
  • Knowledge Base
  • Server Status
  • API Documentation

© 2026 Hosting Mammoth. All rights reserved.

Knowledge Base
Getting StartedAccount ManagementVPS HostingGPU ServersStorage VPSCloud FirewallLoad BalancerServer ManagementBilling & PaymentsSupport & TicketsAffiliate ProgramReseller ProgramMarketplace & Appsn8n HostingManaged ServicesServer MigrationAPI & DevelopersSecurityTroubleshootingGlossaryInstall Guides
  1. Home
  2. /
  3. Support
  4. /
  5. Install Guides
  6. /
  7. How To Install Froxlor Ubuntu
GUIDEInstall Guides

How to Install Froxlor on Ubuntu 24.04 VPS: Lightweight Free Hosting Control Panel

26 min read

How to Install Froxlor on Ubuntu 24.04 VPS: Lightweight Free Hosting Control Panel

If you want to run a small web hosting business, host client sites for a web design agency, or simply manage a handful of domains on a single server without the monthly cost of cPanel or Plesk, Froxlor is one of the most efficient open-source control panels available. It was born as a fork of SysCP back in 2009, has been actively maintained by a German-led community since, and targets exactly the workloads that commercial panels have priced out of reach: lean VPS hardware, multi-tenant hosting, and technical operators who prefer transparent configuration over black-box automation.

This guide walks you through installing Froxlor on Ubuntu 24.04 LTS from a fresh SSH login all the way to issuing a Let's Encrypt certificate for your first customer's domain. By the end, you will have a working shared-hosting style stack with Apache (or Nginx), MariaDB, PHP-FPM pools per customer, Postfix + Dovecot mail, Bind DNS, and ProFTPd for file transfer.

Prefer a panel with one-click apps and a graphical file manager? See our guides for HestiaCP, ISPConfig, and CyberPanel. If you want the absolute lowest overhead, keep reading -- Froxlor is the right call.

Table of Contents

  • What is Froxlor?
  • Why Self-Host a Free Control Panel?
  • Prerequisites
  • Step 1: Update System Packages
  • Step 2: Set Hostname and DNS
  • Step 3: Add the Froxlor APT Repository
  • Step 4: Install the Froxlor Stack
  • Step 5: Run the Web Install Wizard
  • Step 6: Install the Cron Master Job
  • Step 7: Create Your First Hosting Plan
  • Step 8: Add a Customer and Domain
  • Step 9: FTP, Email, and MySQL for the Customer
  • Step 10: Enable Let's Encrypt SSL
  • Step 11: Mail, DNS, and ProFTPd Sanity Checks
  • Hardening and Backups
  • Troubleshooting
  • FAQ
  • Next Steps
  • What is Froxlor?

    Froxlor is a free, open-source web hosting control panel written in PHP. It manages the full lifecycle of a shared or reseller hosting environment: customer accounts, domains and subdomains, web server virtual hosts, PHP-FPM pools, mail accounts, FTP users, MySQL databases, and DNS zones. Administrators define hosting plans with quotas (disk, traffic, mailboxes, databases, domains) and assign them to customers. Customers then log in with their own credentials and self-serve within those limits.

    Under the hood, Froxlor does not replace standard Linux services -- it generates and rewrites their configuration files. When you add a domain in the UI, Froxlor writes a new Apache or Nginx vhost file, a dedicated PHP-FPM pool if configured, a Postfix virtual mailbox entry, a Bind zone, and a ProFTPd user block. A cron job runs every minute and reloads any service whose configuration has changed. This architecture keeps the panel itself stateless in a useful way: if Froxlor stops running, your sites keep serving, because all of the actual config is standard Debian/Ubuntu-style files on disk.

    Supported services include:

    • Web servers: Apache 2.4, Nginx, LiteSpeed, OpenLiteSpeed
    • PHP: Multiple PHP-FPM versions side by side (e.g. 7.4, 8.1, 8.2, 8.3) with per-customer pool configuration
    • Database: MariaDB or MySQL with per-customer database quotas
    • Mail: Postfix SMTP + Dovecot IMAP/POP3 with virtual mailboxes, spam filtering via rspamd, DKIM
    • DNS: Bind9 or PowerDNS with auto-generated zones for every customer domain
    • FTP: ProFTPd with per-customer chrooted users
    • SSL: Native Let's Encrypt ACME v2 client with HTTP-01 and optional DNS-01 challenges

    Why Self-Host a Free Control Panel?

    The control panel market has consolidated hard since 2020. cPanel moved to per-account pricing that now costs USD 15-30 per month for a single-server license, and each additional account raises the bill. Plesk followed with similar structures. For a web agency hosting 20 client sites or a freelancer running a side hustle on a single VPS, the panel license can easily cost more than the hardware it runs on.

    Self-hosting a free panel like Froxlor flips the economics:

    • Zero license cost, forever -- Froxlor is GPL v2. No trial, no paid unlock, no "professional edition." Every feature ships with the base install.
    • Low hardware overhead -- The entire Froxlor stack (Apache + MariaDB + PHP-FPM + Postfix + Dovecot + Bind + ProFTPd) runs happily in 2 GB of RAM. That is half of what cPanel needs idle.
    • Standard Linux under the hood -- You are running vanilla Apache, MariaDB, and Postfix. Every configuration file is auditable, editable, and recoverable. There is no proprietary daemon holding your data hostage.
    • Transparent upgrades -- Froxlor ships through Debian/Ubuntu apt repositories. apt upgrade handles the panel the same way it handles any other system package.
    • Multi-tenant from day one -- Unlike single-site panels, Froxlor is built for resellers. You get customers, plans, quotas, and per-customer isolation out of the box.
    • GDPR-aligned -- Runs on your own VPS in whatever jurisdiction you choose. No vendor telemetry, no mandatory cloud sync.

    When Froxlor is the Right Pick

    Use caseFroxlor fitAlternative
    Freelancer hosting 5-30 client sitesExcellentHestiaCP if you want a GUI file manager
    Small hosting reseller businessExcellentISPConfig for more granular multi-server setups
    Single developer with a handful of personal domainsOverkill but fineCaddy + Docker is lighter
    Hosting WordPress at scale with one-click installsWeakCyberPanel (LiteSpeed) or HestiaCP
    Enterprise mail hostingWeakMailcow or iRedMail

    Prerequisites

    Before you begin, you will need:

    • A VPS running Ubuntu 24.04 LTS with root or sudo access
    • SSH access to your server (PuTTY on Windows, or the built-in terminal on macOS/Linux)
    • At least 2 GB of RAM (4 GB strongly recommended for production)
    • At least 20 GB of free disk space (more if you will host customer files and mail)
    • A domain or subdomain with DNS A records pointing to your VPS IP (for example panel.yourdomain.com)
    • Ports open: 22 (SSH), 25/465/587 (SMTP), 110/143/993/995 (POP3/IMAP), 21/21000-21010 (FTP), 53 (DNS), 80/443 (HTTP/HTTPS)
    Recommended Plan: CloudCore Starter
    >
    Froxlor shines on modest hardware. We recommend the CloudCore Starter plan for a first panel deployment:
    >
    - 2 vCPU cores
    - 4 GB RAM
    - 50 GB NVMe SSD
    - Unmetered bandwidth
    - EUR 7.99/month
    >
    That is enough to comfortably host 10-20 low-traffic customer sites with email, DNS, and FTP. When you outgrow it, scale to CloudCore Professional without migrating the disk.

    Connect to your server via SSH to get started:

    bash
    ssh root@your-server-ip

    Step 1: Update System Packages

    Always begin a panel install on a fully patched base. This prevents dependency mismatches and closes known security holes before services start listening on the public network.

    bash
    sudo apt update && sudo apt upgrade -y

    Expected output (abbreviated):

    text
    Reading package lists... Done
    Building dependency tree... Done
    Calculating upgrade... Done
    0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

    If the kernel was updated, reboot:

    bash
    sudo reboot

    Install a couple of utilities Froxlor and its dependencies rely on:

    bash
    sudo apt install -y curl wget gnupg ca-certificates lsb-release software-properties-common

    Step 2: Set Hostname and DNS

    Froxlor expects a fully qualified domain name (FQDN) as the server hostname. Mail delivery, reverse DNS checks, and Let's Encrypt all depend on this being correct.

    Set the hostname (replace with your panel subdomain):

    bash
    sudo hostnamectl set-hostname panel.yourdomain.com

    Add the hostname to /etc/hosts so local lookups resolve immediately:

    bash
    sudo tee -a /etc/hosts > /dev/null <<EOF
    127.0.1.1    panel.yourdomain.com panel
    EOF

    At your DNS provider (Cloudflare, your registrar, or a dedicated DNS service), create an A record:

    text
    panel.yourdomain.com    A    <your-vps-ip>

    Verify DNS resolution from the server:

    bash
    dig +short panel.yourdomain.com

    The command should return your VPS IP. Wait for propagation if it does not -- Let's Encrypt will fail later without it.

    Step 3: Add the Froxlor APT Repository

    Froxlor ships an official APT repository with signed packages. This is the supported install method for Ubuntu 24.04.

    Import the signing key:

    bash
    sudo install -d -m 0755 /etc/apt/keyrings
    wget -qO- https://deb.froxlor.org/froxlor.gpg | sudo tee /etc/apt/keyrings/froxlor.asc > /dev/null

    Add the repository:

    bash
    echo "deb [signed-by=/etc/apt/keyrings/froxlor.asc] https://deb.froxlor.org/ubuntu $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/froxlor.list

    Refresh the package index so apt sees the new repo:

    bash
    sudo apt update

    Expected output should include a line referencing deb.froxlor.org:

    text
    Hit:5 https://deb.froxlor.org/ubuntu noble InRelease

    Step 4: Install the Froxlor Stack

    The froxlor meta-package pulls in every service Froxlor manages. You can also cherry-pick, but for a first install, the meta-package is the fastest path.

    bash
    sudo apt install -y froxlor

    This installs, in a single transaction:

    • Apache 2.4 (web server -- swap to Nginx in Step 5 if preferred)
    • MariaDB server (database backend for Froxlor and customer databases)
    • PHP-FPM (default 8.3 on Ubuntu 24.04) with common extensions
    • Postfix (SMTP mail transfer agent)
    • Dovecot (IMAP/POP3 server with virtual mailbox support)
    • Bind9 (authoritative DNS server -- swap to PowerDNS later if preferred)
    • ProFTPd (FTP server, with mod_sql for virtual users against MariaDB)
    • Certbot (for Let's Encrypt, used as a fallback -- Froxlor has its own ACME client too)
    During install, you may see a Postfix configuration dialog. Select Internet Site and enter your FQDN (panel.yourdomain.com).

    Secure MariaDB with the interactive hardening script:

    bash
    sudo mysql_secure_installation

    Answer the prompts as follows:

    • Enter current password: press Enter (none set)
    • Switch to unix_socket authentication: n
    • Change the root password: y, then set a strong one
    • Remove anonymous users: y
    • Disallow root login remotely: y
    • Remove test database: y
    • Reload privilege tables: y
    Store the MariaDB root password in a password manager -- you will need it for the web wizard in the next step.

    Enable the Apache modules Froxlor expects:

    bash
    sudo a2enmod rewrite ssl headers proxy proxy_fcgi setenvif http2
    sudo systemctl restart apache2

    Open the necessary ports in UFW (adjust if you use another firewall):

    bash
    sudo ufw allow OpenSSH
    sudo ufw allow 'Apache Full'
    sudo ufw allow 25/tcp
    sudo ufw allow 465/tcp
    sudo ufw allow 587/tcp
    sudo ufw allow 110/tcp
    sudo ufw allow 143/tcp
    sudo ufw allow 993/tcp
    sudo ufw allow 995/tcp
    sudo ufw allow 21/tcp
    sudo ufw allow 21000:21010/tcp
    sudo ufw allow 53
    sudo ufw --force enable

    Step 5: Run the Web Install Wizard

    With the packages installed, the rest of setup happens in the browser. Open:

    text
    https://panel.yourdomain.com/froxlor

    Your browser will warn about the self-signed default certificate -- click through. You will replace it with Let's Encrypt once the panel is up.

    The wizard walks through five screens:

  • Requirements check -- Green checkmarks for PHP version, required extensions, file permissions. If anything is red, the page tells you the exact package to install. Common missing piece: php-mysql (already pulled by the meta-package on 24.04, but confirm).
  • Database setup --
  • - MySQL hostname: localhost - Root user: root - Root password: the one you set in mysql_secure_installation - New database name: froxlor - New database user: froxlor - New database user password: click "generate" or supply your own
  • Administrator account --
  • - Name: your admin display name - Email: your real inbox (used for Froxlor notifications) - Username: admin (or anything memorable -- avoid root) - Password: a strong, unique password
  • Server configuration --
  • - Server name: panel.yourdomain.com - Server IP: your public IPv4 (auto-detected) - Web server: choose Apache (or Nginx if you removed apache2 and installed nginx instead) - Language: your preference
  • Done -- The wizard writes /var/www/html/froxlor/lib/userdata.inc.php and redirects you to the login page.
  • Log in with the admin credentials you just set. You should land on the Froxlor dashboard.

    Optional: Switch to Nginx

    If you prefer Nginx over Apache, do this before creating any domains:

    bash
    sudo systemctl stop apache2 && sudo systemctl disable apache2
    sudo apt install -y nginx

    In the Froxlor UI go to System > Settings > Webserver, change the webserver to nginx, save, then rebuild configs from System > Configuration (select your OS + nginx + PHP-FPM, follow the generated command list).

    Step 6: Install the Cron Master Job

    Froxlor does almost all of its work through a master cron that runs every minute. It rewrites vhost files, reloads services when something changed, renews Let's Encrypt certs, and processes the internal task queue. Without it, nothing you click in the UI will take effect.

    In Froxlor, navigate to System > Configuration, select:

    • Distribution: Ubuntu 24.04 LTS (Noble Numbat)
    • Service: Cronjobs
    Follow the generated instructions. Typically they reduce to:

    bash
    sudo cp /var/www/html/froxlor/install/froxlor.conf /etc/cron.d/froxlor
    sudo chmod 644 /etc/cron.d/froxlor
    sudo systemctl restart cron

    Verify the master cron is firing:

    bash
    sudo tail -f /var/log/syslog | grep froxlor

    Within a minute you should see a Froxlor cron tick logged. Press Ctrl+C to exit.

    Run the task queue manually once to flush any initial tasks:

    bash
    sudo -u www-data php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron --run-task=1
    sudo -u www-data php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron --run-task=99

    Step 7: Create Your First Hosting Plan

    Hosting plans are templates. Instead of setting 12 quota fields every time you onboard a customer, define a plan once and assign it.

    In the Froxlor admin UI:

  • Navigate to Resources > Plans.
  • Click Add plan.
  • Fill in sensible defaults for a "Starter" tier:
  • - Description: Starter -- 5 GB disk, 5 domains, 10 mailboxes - Diskspace: 5120 MB - Traffic: 50000 MB/month - Subdomains: 10 - Emails: 10 - Email accounts: 10 - Email forwarders: 20 - MySQL databases: 3 - FTP accounts: 2
  • Save.
  • Repeat for "Pro" and "Business" tiers if you plan to sell multiple packages. Plans become selectable in the customer creation form next.

    Step 8: Add a Customer and Domain

    Every hosted site in Froxlor belongs to a customer. The customer login scope is sandboxed to their own domains, databases, mailboxes, and FTP users.

    Create the customer

  • Navigate to Resources > Customers > Add customer.
  • Apply your Starter plan (bottom of the form).
  • Fill in:
  • - Loginname: customer1 (Froxlor prefixes it internally -- e.g. web1) - Password: generated or supplied - Name, email, company fields - Language, timezone
  • Save. Froxlor will create the customer's home directory under /var/customers/webs/web1/ and their mail directory under /var/customers/mail/web1/.
  • Add the customer's domain

  • Log out of admin, log back in as the customer (customer1) in a private window, or stay as admin and use the "switch user" link.
  • Navigate to Domains > Domains > Add domain.
  • Enter customer1domain.com.
  • Choose IP + port (usually the panel's public IP on 80/443).
  • Set Document root -- default is fine (/var/customers/webs/web1/customer1domain.com/).
  • Leave Let's Encrypt toggle off for now; enable it in Step 10.
  • Save.
  • Froxlor writes an Apache/Nginx vhost file, queues a service reload, and the cron master picks it up within a minute. Within 60 seconds, http://customer1domain.com/ will serve the default Froxlor placeholder page.

    Step 9: FTP, Email, and MySQL for the Customer

    All three live under the customer login, so switch to the customer account (or use "switch user" from admin).

    FTP account

  • Extras > FTP accounts > Add.
  • Username: auto-prefixed (e.g. web1ftp1).
  • Password: generated.
  • Home directory: default (customer's webroot) or pick a subdirectory.
  • Save.
  • Test from your workstation:

    bash
    ftp -p customer1domain.com
    

    Or sftp if you prefer -- ProFTPd also supports FTPS on 21 with AUTH TLS

    Email accounts

  • Email > Email addresses > Add.
  • Pick domain: customer1domain.com.
  • Local part: info.
  • Save. Now the address exists as a forwarder target.
  • Click the newly created [email protected], choose Create account, set a quota and password.
  • Postfix picks up the new virtual mailbox from MariaDB (no reload needed), and Dovecot starts accepting IMAP/POP3 on the usual ports.

    MySQL database

  • Extras > MySQL > Add database.
  • Description: wordpress.
  • Password: generated.
  • Save. The database name will be prefixed (e.g. web1sql1).
  • The customer can now install WordPress, a PHP framework, or any app. Credentials shown on screen once -- they must save them immediately.

    Step 10: Enable Let's Encrypt SSL

    Froxlor has a built-in ACME v2 client. No certbot juggling required.

    Global setup

    As admin:

  • System > Settings > SSL settings.
  • Enable Use SSL globally.
  • Enable Let's Encrypt.
  • Set Let's Encrypt email to a real inbox (expiry warnings go here).
  • Optionally enable Use staging environment for first tests (avoids rate limits while you iterate).
  • Save.
  • Per-domain

    Edit customer1domain.com:

  • Tick HTTPS redirect (optional but recommended).
  • Tick Let's Encrypt.
  • Tick HSTS if you want strict transport.
  • Save.
  • Within one to two cron cycles (1-2 minutes), the Froxlor cron task 99 (Let's Encrypt) runs:

    bash
    sudo -u www-data php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron --run-task=99

    You can force it manually to avoid waiting. When it succeeds, the domain has a real cert under /etc/ssl/froxlor-custom/customer1domain.com.pem and the Apache/Nginx vhost is rewritten to include the HTTPS server block.

    Repeat for the panel itself: add panel.yourdomain.com as an admin-owned domain with Let's Encrypt enabled, then point the panel SSL to that cert in System > Settings > SSL.

    Step 11: Mail, DNS, and ProFTPd Sanity Checks

    A quick round of checks before you declare victory.

    SMTP

    From any machine with swaks:

    bash
    swaks --to [email protected] --server panel.yourdomain.com --tls

    You should see a 250 Ok at the end and the message should appear in the webmail or IMAP inbox of [email protected].

    IMAP

    bash
    openssl s_client -connect panel.yourdomain.com:993 -quiet

    The Dovecot banner starts with * OK.

    DNS (Bind)

    Froxlor generates Bind zones under /etc/bind/domains/. Verify one is live:

    bash
    dig @panel.yourdomain.com customer1domain.com

    The answer section should include the configured A record. If you prefer PowerDNS over Bind, stop and disable bind9, install pdns-server and pdns-backend-mysql, then switch the nameserver driver in System > Settings > System > Nameserver. Froxlor writes directly to the PowerDNS MariaDB backend.

    ProFTPd

    bash
    ftp -p panel.yourdomain.com

    Login with the FTP credentials from Step 9 -- you should land inside the customer's chrooted webroot.

    Hardening and Backups

    A control panel is a privileged surface. Treat it accordingly.

    SSH -- Disable password login once you have keys in place: PasswordAuthentication no in /etc/ssh/sshd_config.

    Fail2ban -- Protects SSH, Postfix, Dovecot, and ProFTPd out of the box:

    bash
    sudo apt install -y fail2ban
    sudo systemctl enable --now fail2ban

    Panel 2FA -- Froxlor supports TOTP. In the admin profile, enable 2FA and scan the QR in Aegis/Authy/1Password.

    Automatic updates -- For a hosting panel, restrict unattended-upgrades to security only (the defaults), and monitor the Froxlor blog for panel releases.

    Daily backups -- Use the Froxlor Extras > Customer-Backups plugin for per-customer dumps, plus a server-level nightly rsync/Restic to off-site storage. At minimum, back up:

    • /var/customers/ (webroots + mail)
    • /var/lib/mysql/ (or nightly mysqldump --all-databases)
    • /etc/bind/, /etc/postfix/, /etc/dovecot/, /etc/apache2/ (or nginx), /etc/proftpd/
    • /var/www/html/froxlor/lib/userdata.inc.php (DB credentials)

    Troubleshooting

    ProblemCauseSolution
    apache2: AH00558: Could not reliably determine the server's fully qualified domain nameHostname not in /etc/hostsAdd 127.0.1.1 panel.yourdomain.com panel and restart Apache
    Wizard stuck at "Database setup" with SQLSTATE[HY000] [1698]MariaDB root uses unix_socket authRun sudo mysql -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '<pwd>';"
    Customer domain serves Apache "It works!" page instead of placeholderCron master has not run yet, or vhost conflictsudo -u www-data php /var/www/html/froxlor/bin/froxlor-cli froxlor:cron --run-task=1 then sudo systemctl reload apache2
    Let's Encrypt fails with Invalid response from ...DNS A record not propagated or port 80 blockeddig +short yourdomain.com must return VPS IP. Check UFW and hosting provider firewall for port 80.
    Postfix rejects with relay access deniedSMTP AUTH not enabled for the mailboxIn customer UI, open the email account and set a password. Use submission port 587 with STARTTLS.
    ProFTPd: Fatal: unable to open source filePAM/MySQL config regenerated but ProFTPd not reloadedsudo systemctl reload proftpd; verify /etc/proftpd/sql.conf references MariaDB correctly
    PHP-FPM pool fails to start after adding customerPHP version mismatch in planIn System > Settings > PHP-FPM, ensure the default version matches an installed php8.X-fpm package
    Froxlor UI slow or times outfroxlor:cron task 99 (LE) running with many domainsSplit LE renewals across a different cron schedule or temporarily disable HSTS preload on new domains

    Logs to check first

    bash
    sudo tail -n 100 /var/log/froxlor/crons.log
    sudo tail -n 100 /var/log/apache2/error.log
    sudo journalctl -u postfix -n 100
    sudo journalctl -u dovecot -n 100
    sudo journalctl -u proftpd -n 100

    FAQ

    Is Froxlor really free?

    Yes. Froxlor is fully open-source under the GPL v2 license with no paid tiers, license keys, or user limits. You can install it on as many servers as you want and host unlimited customers and domains at no charge. Development is funded through voluntary donations and sponsorships, and the project is maintained on GitHub under an active community of contributors.

    How does Froxlor compare to cPanel or Plesk?

    Froxlor is much lighter than cPanel or Plesk and runs comfortably on a 2 GB VPS, while cPanel typically needs 4 GB+ and costs USD 15-30 per month. Froxlor focuses on the essentials: customers, domains, email, FTP, MySQL, and DNS. It does not ship a graphical file manager or one-click app installer, but everything you need to run a shared hosting or reseller setup is covered. If you need WordPress one-click, Softaculous integration, or a polished file manager, consider HestiaCP or CyberPanel instead.

    Can I use Nginx instead of Apache with Froxlor?

    Yes. Froxlor supports Apache, Nginx, LiteSpeed, and OpenLiteSpeed. You choose the web server during the install wizard, and you can switch later in System > Settings. Nginx pairs well with PHP-FPM for high-traffic static and PHP sites on modest hardware. If your workload is WordPress-heavy and you want LiteSpeed's LSCache, CyberPanel is a better fit; for everything else, Nginx + Froxlor is an excellent combination.

    Does Froxlor support Let's Encrypt SSL?

    Yes. Froxlor has built-in Let's Encrypt integration. Enable it globally in System > Settings > SSL, then toggle it per domain or subdomain. Certificates are requested through the HTTP-01 challenge, stored centrally under /etc/ssl/froxlor-custom/, and renewed automatically by the Froxlor cron master job (task 99) every day. Wildcard certificates via DNS-01 are supported if you configure a compatible DNS provider plugin.

    What is the minimum VPS size needed to run Froxlor?

    Froxlor runs on 1 GB of RAM in theory, but once Apache/Nginx, MariaDB, PHP-FPM, Postfix, Dovecot, Bind, and ProFTPd are all active, 2 GB is the realistic floor. For production shared hosting serving a handful of customers, we recommend 4 GB RAM and 2 vCPU. The CloudCore Starter plan at EUR 7.99/month matches this profile exactly and gives you room to grow to 10-20 active customer sites before you need to scale up.

    Can Froxlor manage multiple servers?

    Partially. Froxlor's primary design is single-server. There is support for a limited form of split setups -- for instance, a dedicated DNS server or a separate mail server receiving configurations from the main panel via SSH. True multi-server clustering with load balancing across web nodes is not a first-class feature. If you need that, ISPConfig or a Kubernetes-based approach is a better fit.

    How do I migrate away from Froxlor later?

    Because Froxlor uses standard Linux services, migration is straightforward. Customer webroots live under /var/customers/webs/ -- rsync them. MySQL databases export with mysqldump. Postfix virtual mailboxes sit in /var/customers/mail/ as Maildir. DNS zones are plain Bind or PowerDNS. You can move to any other panel or a plain unmanaged stack without vendor lock-in.

    Next Steps

    Now that Froxlor is installed and your first customer is provisioned, here are recommended next steps:

    • Automate customer provisioning via the API -- Froxlor ships a JSON API you can call from your billing platform (WHMCS, Invoice Ninja, custom app). See the API Guide in the Froxlor docs to generate an API key under Resources > API and POST to /api.php for customer, domain, and email creation.
    • Add a webmail client -- Install Roundcube or Rainloop on a subdomain and point it at Dovecot. Customers get a branded webmail URL.
    • Set up rspamd and DKIM -- Froxlor integrates with rspamd out of the box; enabling it dramatically improves mail deliverability. Generate DKIM keys from the panel and publish the TXT record at your DNS provider.
    • Compare panels side by side -- If Froxlor feels too minimal, read our guides on HestiaCP for a more GUI-heavy experience, ISPConfig for multi-server deployments, and CyberPanel for LiteSpeed and WordPress-first workflows.
    • Read the official docs -- The Froxlor documentation covers advanced topics like custom PHP-FPM pools, OpenBaseDir hardening, quota enforcement, and the cron task reference.

    Deploy Your Froxlor VPS in Minutes
    >
    Our CloudCore Starter plan is tuned for lightweight control panels like Froxlor:
    >
    - 2 vCPU, 4 GB RAM, 50 GB NVMe SSD
    - Ubuntu 24.04 LTS image ready to go
    - Root access and full port control
    - EUR 7.99/month with unmetered bandwidth
    >
    Launch your VPS now and have Froxlor running inside 30 minutes.

    Was this article helpful?

    ← Back to Install GuidesBrowse all categories →

    Still have questions?

    Contact Support →Submit a Ticket