Self-hosted server control panel

Your server, without the command line.

cpleks is a control panel you install on your own Ubuntu or Debian server to run its websites, certificates, databases, mail, DNS and backups from one screen.

It runs our own servers today. It will be available to everyone once it has run them a while longer.

Overview
Overview
  • Coming soonin use on our own servers today
  • Ubuntu and DebianUbuntu 24.04 and 26.04 LTS, Debian 13
  • amd64 and arm64x86-64 and ARM servers
  • 36 modulesmanaged from the panel
What it does

What a web server needs, run from one place.

Everything on this list is in the current release. What is not built yet has its own list further down the page.

Websites

nginx sites with aliases and subdomains, each under its own Linux user. PHP in the versions your system can install, side by side, with per-site limits; Node.js, Python and ASP.NET Core apps kept running behind nginx; or plain static files. One-click WordPress, redirects, password-protected folders, HTTPS-only per site, and scheduled tasks.

Certificates

Free certificates from Let’s Encrypt for every site, requested and renewed on their own — including wildcard certificates for domains whose DNS this server answers. A new server starts on Let’s Encrypt’s test service, so a domain not yet pointed here costs nothing; a one-time step as root switches it to real certificates.

DNS

Keep DNS where it is, and the panel lists the records your provider needs and checks them live. Or switch on the server’s own nameserver (NSD): a zone per site, each record checked before it is saved.

Databases

MariaDB or MySQL, and PostgreSQL: databases and users per site, and downloads of a database to your browser. MariaDB and MySQL databases also restore from this server’s own backups. MongoDB installs and is secured from its card, but is not yet managed per site.

Mail

Mailboxes with size limits, forwarders, IMAP over TLS, authenticated sending on port 587, optional POP3, filters and out-of-office replies, and Roundcube webmail on its own address. Outgoing mail leaves straight from the server if you allow it, or, with Postfix, through a relay you choose.

Files and transfer

A web file manager that uploads, unpacks, copies, renames and sets permissions. SFTP locked to each account’s home, with keys managed in the panel and extra accounts for contractors; FTPS, TLS only, on Pure-FTPd, vsftpd or ProFTPD.

Backups

A backup set holds every account’s files and databases (MariaDB, MySQL, PostgreSQL) and the panel’s own records; files and MariaDB or MySQL databases restore from it item by item, and the newest seven sets are kept. Add an off-server destination — S3, B2 or an SFTP host — and a fresh set is copied there with restic every night, by a process that never deletes. Every Sunday a rehearsal restores the latest set’s files and MariaDB or MySQL dumps into scratch space and reports whether they load; a PostgreSQL dump is checked for being whole, not loaded.

Signed updates

The panel checks for a new release every day and installs it when you press Update — only if its signature verifies. It takes a snapshot first and rolls itself back if the new version does not come up healthy.

Firewall and hardening

A default-deny firewall that undoes its own change after ten minutes unless you confirm you can still reach the server, an outbound filter for customers’ code, a hardened host baseline, and sign-in with an authenticator app or a security key.

Customers and plans

Hosting accounts, each its own Linux user and home. Plans with limits, feature switches and the modules an account may use; suspend and close accounts; and see the panel exactly as a customer sees it, under a bar that says so.

Audit log

Every change is written to a hash-chained audit log that you can filter, export and verify, and that can be sent to another machine.

Alerts

A message to ntfy, Slack, Discord or any HTTPS endpoint when a certificate is failing, a backup copy or the Sunday rehearsal fails, a security update is waiting, or the panel itself stops.

Pure server control

Built like hardware. Run like an appliance.

No terminal sessions, no hand-edited config files, no “it worked on the other server”. Every change goes through the same checked path, and the panel says what it did in plain words.

How it is built

The part you sign in to cannot act as root.

A control panel is a remote root shell with a login form in front of it. cpleks is built so that the login form reaches as little of that shell as possible.

What one press of Save does on the server

  1. render/var/lib/cplex/staging/nginx/12 files, whole
  2. validatenginx -t -c staged.confsyntax is ok
  3. commitrename(2) staging → /etc/nginx/cplex.datomic swap
  4. reloadsystemctl reload nginxno dropped connection

Every setting you change is written in full to a staging folder, checked by the program that will read it, and swapped in with one rename. A check that fails changes nothing: the old configuration keeps serving.

Your browser

Signs in over HTTPS on port 8443.

cplex-api ordinary user

The panel. Reads every request, checks every permission, keeps the database. It cannot change the system itself.

cplexd root

The service that changes the system. No web server, no templates. It answers a closed list of typed operations and nothing else.

Rule 1

It cannot run a command.

The root service has no operation that means “run this”. Every program it starts has a fixed path and a fixed list of arguments, and the build fails if any code assembles a shell command out of text.

Rule 2

It cannot be handed a path.

Requests name a site or an account by number. The root service works out every file, folder, user and service name itself, from its own records, so no request can point it at a file of its choosing.

Rule 3

Configuration is written whole, checked, then swapped in.

Nothing edits a live configuration file. Each change is written in full to a staging folder, checked by the program that will read it, and moved into place in one step. A check that fails changes nothing, and “Repair this server” rebuilds every file from the database.

What this is not: an audit. No outside firm has reviewed cpleks yet. The rules above are held by the build and its tests, not by a certificate.

Modules

36 options on one screen, one card each

Install, remove, switch on and off — from the panel. The Modules screen has a card for every option, and each card says where the software comes from and what installing it would change before you press anything.

Runtimes

  • PHP
  • Node.js
  • Python
  • ASP.NET Core

Databases

  • MariaDB5
  • MySQL5
  • PostgreSQL
  • MongoDB4
  • SQLite

Mail servers

  • Postfix + Dovecot5
  • Exim + Dovecot5
  • Sendmail1

Webmail

  • Roundcube
  • SnappyMail
  • Rainloop2
  • Horde3

File transfer

  • SFTP
  • Pure-FTPd5
  • vsftpd5
  • ProFTPD5

DNS and off-server backup

  • NSD
  • restic

Add-ons

  • WP-CLI
  • phpMyAdmin
  • Adminer
  • Redis
  • memcached
  • Fail2Ban
  • rspamd
  • GoAccess
  • ImageMagick for PHP
  • APCu
  • Redis for PHP
  • Memcached for PHP
  • MongoDB for PHP
  • Xdebug
  1. Sendmail receives and delivers mail but cannot send for a customer, and takes no forwarders.
  2. Rainloop has not been maintained upstream since 2022; its card says so before you install it.
  3. Horde installs Horde’s framework, which has no mail application of its own.
  4. MongoDB is installed and secured from its card; databases are not yet created for sites on it.
  5. A server runs one mail server, one FTP server, and either MariaDB or MySQL. A card says what an install would replace before it replaces anything.
Honest limits

What it does not do yet

Each of these is a limit of the current release, said here rather than found later.

  • A new server starts on Let’s Encrypt test certificates, which browsers do not trust, until you switch it to real ones with one button in the panel’s Settings, under This server. Opened by its IP address, the panel shows its own self-signed certificate; opened at the name of one of your sites, it can show that site’s certificate instead.
  • Mail is not scanned for viruses. DKIM signing works with Postfix and Exim but not with Sendmail, and spam scoring is an optional add-on that works with Postfix only.
  • Mail hosted on the server itself needs Ubuntu 26.04 or Debian 13; Ubuntu 24.04’s Dovecot is too old for it.
  • There is one administrator login, no reseller accounts yet, and no billing inside the panel.
  • A plan’s disk allowance is enforced only where /home is on XFS. On ext4, which most VPS images use, each account’s use is measured and shown but not capped.
  • Alerts go to a webhook, an email address or an outside heartbeat monitor, and cover certificates, backups, updates and the panel itself. A full disk, or a stopped web, PHP or mail service, raises no alert yet.
  • A database upload takes a .sql or .sql.gz file of up to 2 GB uncompressed; anything larger is moved over a shell.
  • There is no importer for cPanel or other panels: sites are moved in by hand.
  • One panel runs one server. There is no multi-server management and accounts do not move between servers; a whole server can be restored onto another.
  • nginx only: .htaccess files are not read, now or later.
Requirements

What it runs on

  • System Ubuntu 24.04 or 26.04 LTS, or Debian 13 The installers refuse any other system, by name.
  • Processor amd64 or arm64 The offline installer carries both.
  • Server A server you have root on, running systemd A fresh one is best: cpleks manages the web server and the firewall.
  • Ports 80 and 443 free, or used by nginx If nginx has to be installed and another program holds 80 or 443, the installer stops and names it.
  • Panel https://your-server:8443 Its certificate is self-signed at first, so the browser warns. Once one of your sites has a real certificate, open the panel at that site’s name and choose it in Settings, under This server. If a firewall sits in front of the server, open 8443 there as well as 80 and 443.
  • Mail on the server Ubuntu 26.04 or Debian 13 Everything else runs on 24.04 as well.
Questions

Frequently asked

Can I host customers on it?

Yes. Each hosting account is its own Linux user with its own home, plans set its limits and features, and you can suspend or close it. Reseller accounts cannot be created yet, and the panel does no billing: invoicing stays with the tool you already use.

Does it replace cPanel or Plesk?

For one server run by one team, it covers websites, certificates, mail, DNS, databases, files and backups. It does not import cPanel accounts, does not read .htaccess files, and does not manage several servers.

Which PHP versions can I use?

The ones your system can actually install: the panel asks your package manager rather than keeping a list. On Ubuntu 26.04 that is the system’s own PHP 8.5; on Ubuntu 24.04, the system’s own 8.3 plus the versions Ondřej Surý’s archive publishes for it, if you choose to add that archive.

Do I need a licence key to install?

No. Every installer works without one and the panel is fully usable. A key turns on updates; add it while installing, or later on the Licence card in the panel’s Settings.

Can a server without internet access use it?

Yes. The full offline pack installs with no network at all, and the Licence card can activate by copying one line to your account on cpleks.com from any other device and pasting the answer back. Updates through the panel need the server to reach cpleks.com at least once every 30 days.

Coming soon to your server.

Until then: the guide shows every screen, and what each button does on the server.