ClassicPress on Ubuntu 24.04 on Azure User Guide
Overview
ClassicPress is the community led, business focused fork of WordPress. It keeps the familiar, stable content management experience millions of sites rely on and stays fully compatible with the WordPress plugin and theme ecosystem, giving you a lean, predictable CMS without giving up the tools you already know. The cloudimg image installs ClassicPress 2.7 on Apache 2.4, MySQL 8.0, and PHP 8.3, all from the Ubuntu 24.04 noble universe with no third party APT repositories. The install is completed headlessly with WP-CLI, so the public install wizard is never exposed, and the MySQL root, application database, and administrator passwords are all rotated per instance at first boot.
What is included:
- ClassicPress 2.7.0 from the official release archive at
/var/www/html/classicpress - Apache 2.4.x with mod_rewrite enabled, vhost at
/etc/apache2/sites-available/classicpress.conf - MySQL 8.0.x with a
classicpressdatabase andcpuserapplication user (per VM password) - PHP 8.3.x with the mysqli, gd, mbstring, xml, curl, zip, and imagick extensions
- WP-CLI 2.x at
/usr/local/bin/wpfor command line administration classicpress-firstboot.servicerotating passwords and creating thecloudimgadministrator- Host agnostic URLs: the site renders on the VM public IP, on 127.0.0.1, or on any domain you point at it
- Apache and MySQL enabled and auto starting on boot
- 24/7 cloudimg support
Prerequisites
An active Azure subscription, an SSH key, and a VNet with a subnet. Standard_B2s (2 vCPU, 4 GB RAM) is a comfortable starting point for small to medium sites; move up to a D2s or D4s size for higher traffic. Open inbound ports 80 and 443 (and 22 to your management network) on the network security group.
Step 1: Deploy and connect
Launch the image from the Azure Marketplace, then connect over SSH as azureuser:
ssh azureuser@<vm-ip>
The first boot service generates the per VM credentials within a few seconds of the instance starting.
Step 2: Verify the services
Confirm Apache and MySQL are active and listening:
sudo systemctl is-active apache2 mysql
sudo ss -tlnp | grep -E ':(80|3306) '

Step 3: Check the versions
wp core version reports the WordPress compatible base version that ClassicPress tracks; the ClassicPress release itself is the $cp_version value in the version file:
grep "cp_version = '" /var/www/html/classicpress/wp-includes/version.php
sudo -u www-data /usr/local/bin/wp core version --path=/var/www/html/classicpress --allow-root
php -v | head -1
mysql --version

Step 4: Inspect content and users with WP-CLI
The image ships the standard first post, the cloudimg administrator, and the bundled ClassicPress plugin:
sudo -u www-data /usr/local/bin/wp user list --path=/var/www/html/classicpress --allow-root
sudo -u www-data /usr/local/bin/wp post list --path=/var/www/html/classicpress --allow-root
sudo -u www-data /usr/local/bin/wp plugin list --path=/var/www/html/classicpress --allow-root

Step 5: Read the administrator password
The per VM credentials are written to a root only file. Read it to pick up the CP_ADMIN_USER and CP_ADMIN_PASSWORD for signing in:
sudo cat /stage/scripts/classicpress-credentials.log

Keep this file secure. Change the administrator password from within the admin area once you have signed in for the first time.
Step 6: Browse the public site
The site responds on whatever address you reach it on. Confirm it is serving locally, then browse to http://<vm-ip>/ in your browser:
curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/

Step 7: Sign in to the admin area
Browse to http://<vm-ip>/wp-admin/ (or http://<vm-ip>/wp-login.php) and sign in as cloudimg with the password from Step 5.

Step 8: The admin dashboard
After signing in you land on the ClassicPress dashboard, with the At a Glance panel confirming ClassicPress 2.7.0 and the classic, streamlined admin menu on the left.

Step 9: Manage content
Open Posts to create, edit, and organise your content. Pages, Media, Appearance, Plugins, and Users work exactly as you expect from the WordPress ecosystem, so existing themes and plugins install unchanged.

Step 10: Components
| Component | Path |
|---|---|
| ClassicPress install | /var/www/html/classicpress/ |
| wp-config.php | /var/www/html/classicpress/wp-config.php |
| Apache vhost | /etc/apache2/sites-available/classicpress.conf |
| Apache logs | /var/log/apache2/classicpress-{access,error}.log |
| MySQL data | /var/lib/mysql/ |
| WP-CLI | /usr/local/bin/wp |
| Firstboot script | /usr/local/sbin/classicpress-firstboot.sh |
| Credentials | /stage/scripts/classicpress-credentials.log (mode 0600 root:root) |
Step 11: Security and next steps
- Change the administrator password from Users in the admin area after your first sign in.
- Enable HTTPS by installing certbot and requesting a certificate:
sudo apt-get install -y certbot python3-certbot-apachethensudo certbot --apache. - Restrict the network security group so that port 80 and 443 are open only to your CDN or load balancer, and port 22 only to your management network.
- Keep ClassicPress current by updating core, plugins, and themes from the admin area or with
wp plugin update --allandwp theme update --all. - Point your domain at the instance; because the image is host agnostic, no site URL rewrite is needed, and the admin area follows the host you sign in on.
- Patch the OS regularly with
sudo apt-get updateandsudo apt-get upgrade.
Licensing
ClassicPress is distributed under the GPL-2.0 licence and is free to use commercially. cloudimg packages and supports the image; support is available 24/7 at support@cloudimg.co.uk. All product and company names are trademarks or registered trademarks of their respective holders and their use does not imply affiliation or endorsement.