Applications AWS

Froxlor 2.3 Hosting Control Panel on AWS User Guide

| Product: Froxlor

Froxlor 2.3 Hosting Control Panel on AWS User Guide

Froxlor is a widely used open source server administration and web hosting control panel. From one web interface it manages hosting customers and their domains, subdomains, web space, FTP accounts, email accounts and forwarders, MySQL databases, DNS records, per-domain PHP settings, Let's Encrypt certificates, traffic accounting and cron jobs, so you never hand-edit web server, mail or DNS configuration files.

This cloudimg Amazon Machine Image delivers Froxlor 2.3.10 fully installed, configured and security hardened on Ubuntu 24.04, so a working control panel is running within minutes of launch. The stack is Apache 2.4 on port 80, PHP 8.3 under PHP-FPM, and MariaDB. The upstream Froxlor release tarball is shipped unmodified.

Froxlor sign-in page

No default credentials, and the setup wizard is never claimable. The captured image contains no Froxlor installation and no administrator account at all, and the web server is held closed by a systemd condition until first boot completes. On the first boot of your instance a one-shot service performs the installation, generates a unique administrator password and unique database passwords for that instance, writes them to a root-only file, and only then opens the web server. No two deployments share a password, and there is never a window in which the setup wizard is unclaimed.


Architecture at a glance

Component Detail
Control panel Froxlor 2.3.10, served on port 80 over HTTP by Apache + PHP-FPM
Web server Apache (apache2), a dedicated panel virtual host plus per-domain virtual hosts
PHP PHP 8.3 under PHP-FPM, with every extension Froxlor requires; the panel runs on its own dedicated PHP-FPM pool
Database MariaDB on 127.0.0.1:3306 (panel database froxlor)
Master cron froxlor-cron.timer, every 5 minutes, applies panel changes to the server configuration
Panel URL http://<instance-public-ip>/
Health endpoint http://127.0.0.1/healthz (static, returns ok)
Credentials file /root/froxlor-credentials.txt (root-only, 0600)

The panel database is small and customer web space lives under /var/customers, so the image ships on a single root volume. For production hosting workloads, attach a dedicated EBS volume and mount it at /var/customers (see Storing customer web space on a data volume below).


Connecting to your instance

Connect over SSH on port 22 as the default login user for your operating-system variant.

OS variant SSH login user
Ubuntu 24.04 LTS ubuntu
ssh ubuntu@<instance-public-ip>

Froxlor derives its base URL from the request host, so the panel renders on whatever address you reach it on. Open the panel in a browser at http://<instance-public-ip>/.


Retrieving your administrator password

A unique administrator password was generated for this instance on first boot and written to a root-only file. Read it over SSH:

sudo cat /root/froxlor-credentials.txt

The file looks like this (values are unique to your instance):

FROXLOR_URL=http://<instance-public-ip>/
FROXLOR_ADMIN_USER=admin
FROXLOR_ADMIN_PASSWORD=<FROXLOR_ADMIN_PASSWORD>
FROXLOR_SERVERNAME=ip-172-31-0-0.cloudimg.internal
FROXLOR_DB_NAME=froxlor
FROXLOR_DB_USER=froxlor

Sign in at http://<instance-public-ip>/ as user admin with the FROXLOR_ADMIN_PASSWORD value. Change the password from admin menu -> Change password after your first sign-in.

Froxlor dashboard

The dashboard shows your customer, domain, web space, database, email and FTP resource counts, alongside the running Apache, PHP and MariaDB versions.


Creating your first hosting customer

In Froxlor you first create a customer (a hosting account), then add domains under that customer. From the panel, go to Resources -> Customers -> Create customer, fill in the account data and save. Froxlor can autogenerate the username and password for you.

Create a customer

You can also drive every panel operation from the command line with Froxlor's own API. The example below creates a customer, reads it back, then removes it again, all as the admin user:

FCLI="sudo -u www-data /usr/bin/php /var/www/froxlor/bin/froxlor-cli froxlor:api-call admin"
CPW="$(openssl rand -base64 18 | tr -dc 'A-Za-z0-9' | cut -c1-16)"
$FCLI Customers.add "{\"new_loginname\":\"demo01\",\"email\":\"demo@cloudimg.internal\",\"name\":\"Demo\",\"firstname\":\"User\",\"new_customer_password\":\"${CPW}\",\"createstdsubdomain\":false}" >/dev/null
echo "Customers after add:"; $FCLI Customers.listing | grep -E '"count"|"loginname"'
$FCLI Customers.delete "{\"loginname\":\"demo01\"}" >/dev/null
echo "Customers after delete:"; $FCLI Customers.listing | grep -E '"count"'

Once a customer exists, add their domains under Resources -> Domains, and web space, FTP, email, databases and DNS records from the customer's own areas of the panel.


Storing customer web space on a data volume

For production hosting you will want customer web space on its own resizable disk rather than the root volume. Attach an EBS volume to the instance in the EC2 console, then format and mount it at /var/customers (replace the device name with the one your instance shows in lsblk):

sudo mkfs.ext4 -L customers /dev/nvme1n1
echo 'LABEL=customers /var/customers ext4 defaults,nofail 0 2' | sudo tee -a /etc/fstab
sudo mkdir -p /var/customers && sudo mount /var/customers
sudo chown www-data:www-data /var/customers

Do this before you create customers, so their home directories land on the dedicated disk.


Setting your server name and DNS

The appliance boots with a placeholder internal server name. Once you have a real domain, point its DNS A record at the instance's public IP, then set the server name in System -> Settings -> System settings -> Hostname of the server to your FQDN. Froxlor's master cron applies the change to the server configuration on its next run.

# Your DNS provider: create an A record for panel.your-domain.com -> <instance-public-ip>

Serving the panel over HTTPS

The panel serves over HTTP by default. To serve it over HTTPS, issue a certificate for your server name. With DNS pointing at the instance you can obtain a free Let's Encrypt certificate:

sudo apt-get install -y certbot python3-certbot-apache
sudo certbot --apache -d panel.your-domain.com

Froxlor can also manage Let's Encrypt certificates for your hosted domains from within the panel once the domains resolve to the instance.


Managing the services

The hosting stack is three systemd services. Check their state at any time:

systemctl is-active apache2 php8.3-fpm mariadb

All three should report active. Restart a service with sudo systemctl restart apache2 (or php8.3-fpm, mariadb).

Verify the panel is answering and confirm the installed version:

curl -s -o /dev/null -w 'panel HTTP %{http_code}\n' http://127.0.0.1/
sudo -u www-data /usr/bin/php /var/www/froxlor/bin/froxlor-cli --version

The panel returns 200 and the version banner reads froxlor-cli 2.3.10.


Security notes

  • No default credentials ship in the image. The administrator account, the panel database and its MariaDB users are all created on first boot with per-instance random passwords.
  • The setup wizard is closed once first boot has installed the panel; it can never be claimed by a stranger.
  • The panel serves on port 80; restrict inbound access to trusted source IPs in your EC2 security group if the panel does not need to be world-reachable, and serve it over HTTPS.
  • MariaDB root is reachable only over the local Unix socket for on-box maintenance; it has no network-usable password.
  • Keep /root/froxlor-credentials.txt private. It is 0600 root:root; delete it once you have changed the admin password if you prefer.

Support

cloudimg provides 24/7 technical support for this Froxlor Hosting Control Panel product by email (support@cloudimg.co.uk) and live chat, with a one hour average response time for critical issues. We help with deployment and initial configuration, customer and domain provisioning, mail, FTP and DNS setup, Let's Encrypt certificate issuance, master cron and system configuration troubleshooting, version upgrades, MariaDB database administration and performance tuning. For billing, subscription changes or refund requests, contact support@cloudimg.co.uk.

All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.