LimePanel

Installation

Requirements, the single install command, every option, and what to do when something goes wrong.

Requirements

Requirement Value
Operating system Ubuntu 22.04 or 24.04 LTS, Debian 12, AlmaLinux 9, Rocky Linux 9
Server state freshly installed, with no other control panel or web server running
Architecture x86_64 (amd64)
Minimum resources 2 vCPU, 4 GB RAM, 30 GB disk (more, depending on your customers' sites)
Network one public IPv4; ports 22, 80, 443, 8443, 25, 465, 587, 993 and 53 reachable
DNS a host name for the panel (e.g. panel.yourdomain.com) with an A record to the server, and the name servers your customers' zones will use

Every system in the table has been tested from scratch on a clean machine: installation, a WordPress site with a Let's Encrypt certificate, reboot, update and rollback. Other versions (for example Ubuntu 26.04, Debian 13, EL10) are refused until they pass the same test.

The command

You need a LimePanel license key: without one the installer does not start. If you don't have one, request the free 15-day trial at limepanel.it/en/free-trial (see Licensing).

As root, or with sudo, on the new server:

curl -fsSL https://get.limepanel.it/install.sh | sudo sh -s -- \
  --license-key LP-XXXXX-XXXXX-XXXXX-XXXXX \
  --hostname panel.yourdomain.com \
  --admin-email you@yourdomain.com \
  --nameservers ns1.yourdomain.com,ns2.yourdomain.com \
  --non-interactive

In 3 to 8 minutes, depending on the distribution and the network, the summary shows the panel address, the administrator email and the generated password. Write the password down: it will not be shown again.

The key here is a placeholder: the full command with your key is in the customer area.

Without --non-interactive the installer only asks for what is missing.

What happens during installation

install.sh installs curl and openssl only if they are missing, downloads the installer from the official channel and checks its checksum and Ed25519 signature against the public key embedded in the script. Only then does it run it. There is no way to skip the verification.

The installer then works through a series of steps, each with its own resume point:

  • installs PostgreSQL for the panel, the web server (OpenLiteSpeed by default) and PHP (LSPHP) in the requested versions;
  • installs MariaDB (local only), BIND as an authoritative DNS server (recursion and transfers off), Postfix and Dovecot for mail;
  • downloads the panel release from the channel and verifies its signature;
  • creates the secrets, the panel database and the first administrator;
  • starts the services, checks that the panel and the services actually respond and, if the host name already points here, requests the panel's Let's Encrypt certificate.

The panel is born on HTTPS. If its host name does not point to the server yet, it starts with a temporary certificate and gets the Let's Encrypt one on its own as soon as DNS is ready, then renews it automatically.

The firewall is configured only if it is already active on the server.

Options

Option What it does
--license-key <key> the LimePanel license key (LP-XXXXX-XXXXX-XXXXX-XXXXX), required
--hostname <name> panel host name, also used for its certificate
--admin-email <email> email of the first administrator
--admin-password '<password>' your own password instead of a generated one
--nameservers ns1,ns2 name servers for DNS zones; without it, the panel creates no zones
--non-interactive no questions: stops if a required parameter is missing
--with mail-filter,webmail optional components: anti-spam and anti-virus (Rspamd and ClamAV), webmail (Roundcube)
--without dns,mail,ftp core components to leave out
--php 8.2,8.3,8.4 PHP versions to install (8.3 is always there: new sites use it)
--webserver litespeed --litespeed-license <serial|TRIAL> LiteSpeed Enterprise instead of OpenLiteSpeed; --litespeed-license TRIAL uses LiteSpeed's 15-day trial
--port <port> panel HTTPS port (default 8443)
--server-ip <ip> the server's public IP, if you don't want it detected
--channel stable update channel: stable (default), beta, dev
--skip-firewall leaves the firewall alone
--skip-ssl no certificate (only for installations behind a proxy)
--dry-run shows the plan and stops, changing nothing
--log-file <path> where to write the installation log
--json machine-readable output
--allow-untested-os installs on a version that has not been tested yet, at your own risk
--reset-state forgets the resume points and installs from scratch

From version 1.0 these are available too:

Option What it does
--telemetry opt in to anonymous usage statistics (off unless you pass it)

Don't mix up the two licenses: --license-key is the LimePanel key, --litespeed-license is the LiteSpeed Enterprise serial number. Up to version 1.0.0-rc27 the LiteSpeed serial was passed with --license-key: if you have old scripts, update them.

LiteSpeed Enterprise

With --webserver litespeed the installer installs LiteSpeed Enterprise from the official archive and answers its setup script's questions on its own. It needs --litespeed-license with your serial number, or TRIAL. The LiteSpeed trial lasts 15 days; after that the web server will not restart without a valid LiteSpeed license. The LiteSpeed console (port 7080) listens on localhost only, and its password is in /etc/limepanel/lsws-admin.password.

Disk quotas

The installer installs the quota tools and switches quotas on:

  • ext4: immediately or at the first reboot. On Ubuntu 24.04, cloud images lack the quota module for the stock kernel: the installer installs the one for the next kernel, and quotas come on by themselves after the first reboot.
  • XFS (typical on AlmaLinux and Rocky): requires the uquota mount option and a reboot, which the panel does not do on its own. It tells you so in the plan and in the summary.

To switch them on again by hand, for example after a new kernel:

panelctl limits quota

When something goes wrong

The installer is resumable: run the same command again and it picks up from the interrupted step. Resume points are kept in /var/lib/limepanel/install-state.json.

Where to look What you find
/var/log/limepanel/install-*.log the full installation log
panelctl doctor configuration, database and service health in one command
panelctl status version and services

Common cases:

  • System refused: that distribution version is not among the tested ones. Use a system from the requirements table.
  • Panel certificate not issued: the host name does not point to the server yet, or Let's Encrypt applied a rate limit (error 429). The panel stays reachable with its temporary certificate; the reason and the retry date are shown right away, and automatic renewal tries again by itself.
  • Adding a component later: run the command again with the extra option (for example --with webmail). Package and service steps really run again; the panel version, however, does not change: use updates for that.
  • License key refused: the installer stops before installing anything and says why (wrong key, expired, already used on another server, or a trial already used on this server). Check your key in the customer area.
  • License server unreachable during installation: the installer cannot check the key and stops without changing the server. Run the same command again once the connection is back.

After installation

Continue with the quick start.