Emergency server help: get in touch

CloudLinux Commands: Convert, Licence, CageFS, LVE Limits and Uninstall

Convert AlmaLinux to CloudLinux with cldeploy (precheck first), register a key or IP licence, the everyday cagefsctl, lvectl, lveinfo and selectorctl commands, and what cldeploy --uninstall really does on cPanel.

Published 7 min read

Short answer: download cldeploy from https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy and run bash cldeploy --precheck. Then convert with bash cldeploy -k YOUR_KEY, or with bash cldeploy -i for an IP-based licence (licences bought through cPanel are IP-based), and reboot into the CloudLinux kernel.

Applies to cldeploy 1.132 (options and code read; --precheck run on AlmaLinux 9.8 + cPanel 138, 11 Oct 2026); CloudLinux command-line tools documentation

Everyday commands: cagefsctl for CageFS, lvectl and lveinfo for LVE limits, selectorctl for the PHP Selector. If the server says it is not registered, re-register with /usr/sbin/clnreg_ks --force. Keep the folder /etc/cl-convert-saved that the conversion creates: cldeploy --uninstall uses it to go back to AlmaLinux, and without it a cPanel server is converted to end-of-life CentOS instead.

What we checked: we downloaded cldeploy 1.132 on our cPanel lab server (cPanel & WHM 138, AlmaLinux 9.8) on 11 October 2026, read its options and code, and ran --precheck, which changed nothing on the server. We did not convert the lab, because conversion replaces the kernel and is hard to undo. The cagefsctl, lvectl, lveinfo and selectorctl commands are quoted from CloudLinux’s command-line documentation; we have not run them on a CloudLinux server for this page.

Check first: cldeploy --precheck

wget https://repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy
bash cldeploy --precheck --skip-version-check

On our lab the precheck finished with exit code 0, and the installed package count was the same before and after (2,170). It printed:

[CHECK] system is not already converted to CloudLinux - SUCCESS
[CHECK] conversion to CloudLinux is not running - SUCCESS
[CHECK] Detected CloudLinux release 9.8 - SUCCESS
[CHECK] basic system checks passed - SUCCESS
[CHECK] dnf plugins are enabled - SUCCESS
[CHECK] groups clsupergid and clsudoers are empty - SUCCESS
[CHECK] incompatible binary driver is not detected - SUCCESS
[CHECK] incompatible third-party kernel modules are not installed - SUCCESS
[CHECK] conversion will be performed from Almalinux - SUCCESS

The precheck log is /var/log/cldeploy-precheck.log. A FAILED line names the problem to fix before converting, for example a third-party kernel module.

Convert AlmaLinux to CloudLinux

bash cldeploy -k YOUR_ACTIVATION_KEY      # key from CloudLinux Network (CLN)
bash cldeploy -i                         # IP-based licence (e.g. bought through cPanel)
reboot                                   # boot into the CloudLinux kernel

To keep the key out of your shell history, cldeploy also reads it from the CLDEPLOY_ACTIVATION_KEY environment variable. Other options from cldeploy -h:

OptionWhat it does
--precheckChecks whether the server can be converted, then exits
-y, --noninteractiveAnswers yes to all questions
--conversion-onlyConverts the OS but does not install control panel components
--components-onlyInstalls only the control panel components
--skip-kmod-checkSkips the check for unsupported kernel modules (use with care)
--hostinglimitsAlso installs mod_hostinglimits
--testing-reposEnables the testing repositories
-c, --uninstallConverts back (see the uninstall section)

The conversion is logged in /var/log/cldeploy.log, and cldeploy keeps copies of the original OS release files in /etc/cl-convert-saved.

Licence: key, IP and re-registration

cldeploy registers the server with one of two commands, which you can also run yourself:

/usr/sbin/rhnreg_ks --activationkey YOUR_KEY     # key-based licence
/usr/sbin/clnreg_ks                              # IP-based licence
/usr/sbin/clnreg_ks --force                      # re-sync an active licence (cPanel's fix for the error below)

If dnf or cPanel’s upcp fails with This system is not registered with CloudLinux Network server, check that the licence is active for this server’s IP or key. Then run /usr/sbin/clnreg_ks --force. Without --force you may see Command rhn_check exited with code zero. That usually means that registration is not needed. Use --force to override.

CageFS commands

TaskCommand
Create CageFScagefsctl --init
Cage everyone (except users in users.disabled)cagefsctl --enable-all
Cage one usercagefsctl --enable USER
Uncage one usercagefsctl --disable USER
Is a user caged?cagefsctl --user-status USER
Is CageFS on?cagefsctl --cagefs-status
Current modecagefsctl --display-user-mode
List caged or uncaged userscagefsctl --list-enabled / --list-disabled
Update the skeletoncagefsctl --update (--force-update ignores the update period)
Remount after editing cagefs.mpcagefsctl --remount-all
Remount one usercagefsctl -m USER
Rebuild a user’s alt-php inicagefsctl --rebuild-alt-php-ini USER
Self-diagnosiscagefsctl --sanity-check
Back up and recreate CageFScagefsctl --reinit

Do not confuse --force-update with -f/--force: the second one recreates CageFS. For the PHP Selector error that appears when CageFS is off, see “Cannot manage PHP versions when CageFS is disabled”.

LVE limits: lvectl and lveinfo

CloudLinux recommends setting limits in LVE Manager in WHM, DirectAdmin or Plesk. From the command line, lvectl has the form lvectl command [lveid] [options]:

lvectl list                                       # loaded LVEs and their limits (IDs)
lvectl list-user                                  # the same with usernames
lvectl set default --speed=100% --pmem=256m       # server defaults (CloudLinux's own example)
lvectl set-user bob --pmem=2048m --maxEntryProcs=40   # one user
lvectl delete-user bob                            # back to the defaults
lvectl package-list                               # limits per hosting package
lvectl apply all                                  # re-apply /etc/container/ve.cfg to every LVE
lvectl destroy all                                # reset all LVEs, killing processes inside them

Limit options: --speed=N% (CPU, 100% is one core), --pmem (physical memory), --vmem, --nproc (processes), --maxEntryProcs (concurrent entry processes, the cause of 508 errors), --io (KB/s), --iops and --unlimited. The older --save flag is deprecated. To see who hits limits:

lveinfo --period today --order-by aCPU --limit 10 --display-username   # top CPU users today
lveinfo -d --period=1d --by-fault=ep                                   # who hit the entry-process limit
lveinfo --period=1d --user=bob                                         # one user's history
cloudlinux-top                                                         # live view

What each limit means and how to choose values: CloudLinux LVE limits explained. For 508 errors: “508 Resource Limit Is Reached”.

PHP Selector: selectorctl

selectorctl --list                                   # available alt-php versions
selectorctl --summary                                # which versions are enabled
selectorctl --set-user-current=8.3 --user=bob        # set one user's PHP version

For Python and Node.js, CloudLinux uses cloudlinux-selector instead of selectorctl.

Uninstall: what cldeploy --uninstall really does

cldeploy -c (--uninstall) converts the server back. We did not run it, but we read what version 1.132 does:

  • It first removes CageFS, MySQL Governor (db-governor), alt-php, alt-python and LVE Manager, so every customer feature that depends on them stops.
  • Converted from AlmaLinux: the conversion saved the original OS release files in /etc/cl-convert-saved. If that folder shows AlmaLinux, the uninstall reinstalls the AlmaLinux release packages.
  • No saved files (the server was installed as CloudLinux from the start, or the folder was deleted): on cPanel and Plesk it converts to CentOS and imports keys from mirror.centos.org. CentOS 7 and 8 are end-of-life, so that is not a system to keep.
  • Converted from Rocky Linux: it stops with Unfortunately automatic uninstall for RockyLinux is not possible. Reinstall you server from scratch.

So never delete /etc/cl-convert-saved, take a full backup before converting or reverting, and test the revert on a copy of the server first. On a busy production server, a fresh AlmaLinux server plus an account migration is usually less risky than reverting in place; see migrate cPanel accounts to a new server.

Common problems

  • “This system is not registered with CloudLinux Network server”. Confirm that the licence is active, then run /usr/sbin/clnreg_ks --force.
  • The precheck reports an incompatible kernel module. Remove the module or ask the vendor. --skip-kmod-check only hides the warning.
  • Limits do not change after editing ve.cfg. Run lvectl apply all.
  • A user has old files inside CageFS. Run cagefsctl --force-update, then cagefsctl -m USER.
  • lvectl rejects --ep. The option is --maxEntryProcs.

Frequently asked questions

How do I convert AlmaLinux to CloudLinux?

Download cldeploy from repo.cloudlinux.com/cloudlinux/sources/cln/cldeploy, run bash cldeploy --precheck, then bash cldeploy -k YOUR_KEY (or -i for an IP-based licence) and reboot into the CloudLinux kernel.

How do I re-register a CloudLinux licence?

For an IP-based licence run /usr/sbin/clnreg_ks --force. For a key run /usr/sbin/rhnreg_ks --activationkey YOUR_KEY. cPanel recommends clnreg_ks --force when dnf or upcp says the system is not registered.

Can I uninstall CloudLinux and go back to AlmaLinux?

Yes, if the server was converted from AlmaLinux with cldeploy and /etc/cl-convert-saved still exists: cldeploy --uninstall uses it to reinstall the AlmaLinux release. Without that folder, cPanel and Plesk servers are converted to end-of-life CentOS, and servers converted from Rocky Linux are refused. CageFS, alt-php and LVE Manager are removed either way.

How do I raise a user’s entry process limit?

Run lvectl set-user USERNAME --maxEntryProcs=40, or set it per package in LVE Manager. Check who hit the limit with lveinfo -d --period=1d --by-fault=ep.

What is the difference between cagefsctl --update and --force-update?

--update adds new and changed files to CageFS when the update period has passed; --force-update does it now, ignoring the period. Neither recreates CageFS; that is --reinit or --force.

Reading a lot of our guides? Go ad-free with srvScripts Pro for $6 a month. It also pays for new guides. Cancel any time.

Maintenance record

This guide changes servers, data or security settings, so we re-check it against current versions on a fixed schedule. Take a backup or snapshot before you start.

Maintained by
srvScripts editorial team
Supported versions
cldeploy 1.132 (options and code read; --precheck run on AlmaLinux 9.8 + cPanel 138, 11 Oct 2026); CloudLinux command-line tools documentation
Last full review
Next review

Share this guide

Free website test

Is your website set up right?

Check SSL, security headers, redirects, robots.txt, sitemap, llms.txt and security.txt in one test. It takes about 30 seconds.