ControlDeskPanel · Ubuntu 26.04 · nginx
First installation on a fresh server.
One run brings up the complete stack: nginx, PHP-FPM, MariaDB, Node, the mail system, Docker, the panel itself and the protection layer.
The call
One line on the fresh server
The bootstrap verifies the checksum, unpacks and asks before it starts. It runs on the machine it is called on, nowhere else.
curl -fsSL https://installer.ctpf.network/cdp/ubuntu26/nginx/one-click-installer | sudo bash
By hand
If you want to read the package first
curl -O https://installer.ctpf.network/cdp/ubuntu26/nginx/releases/cdp-autoinstaller-3.0.0.tgz curl -O https://installer.ctpf.network/cdp/ubuntu26/nginx/releases/cdp-autoinstaller-3.0.0.tgz.sha256 sha256sum -c cdp-autoinstaller-3.0.0.tgz.sha256 tar xzf cdp-autoinstaller-3.0.0.tgz cd cdp-autoinstaller-3.0.0 sudo ./install.sh
SHA-2567465497ea7a83517cd9907622efb03f84d7834ce02650a5fc8520b4875b2a065
Requirements
What the server has to bring
- Ubuntu 26.04Codename resolute. The installer checks this and stops on any other system.
- 4 CPU coresFewer are not enough to build the components.
- 6 GB of memoryThe lower bound, checked before the first step.
- 40 GB of diskFor the system, the packages and the database.
- A clean serverPorts 80, 443, 3306, 8443 and 9443 have to be free.
- An SSH sessionThe call asks before it starts; without a terminal it stops.
The sequence
What happens in one run
- 01Users and directories
Service users, /opt, /etc, /var/lib and the log paths.
- 02Base packages, time, Node
System packages, Chrony, the Node version the backend needs.
- 03nginx
From nginx.org, pinned to a fixed version.
- 04PHP-FPM and the panel pool
Its own socket and its own session directory for the interface.
- 05Panel
Backend for Node, interface in the C pattern for PHP-FPM.
- 06MariaDB and migration
Database, user, schema brought to the current state.
- 07phpMyAdmin
Under the server’s own address, locked down.
- 08Mail system
Postfix, Dovecot, OpenDKIM, Roundcube, fully wired together.
- 09Certbot, Docker, Composer, Laravel
The tools the panel needs later on.
- 10Management access
Self-signed TLS on port 8443, login at /controller/auth/login.
- 11Protection layer and acceptance
CDPGuard, the services, and finally the check over the whole stack.
The access to the panel is printed at the end of the run. Hostname and certificate are set afterwards in the panel, not in the installer.
Changelog
Every change is written down with its reason: CHANGELOG.md. The version that sits here is named in VERSION.