Skip to content
Live $100 credit at signup, up to $300 total Offer ends December 31, 2026 Get started →

Drupal

Drupal is an open-source content management system for content-heavy websites and applications. Its entity model, taxonomy, and module ecosystem let teams build custom content types, editorial workflows, and multilingual sites without writing the underlying code themselves.

ComponentVersion
Drupal11.4.1
PHP8.3
ApacheLatest
MariaDBLatest
Drush13
Ubuntu24.04 LTS

Drupal runs on a native LAMP stack (Apache, MariaDB, PHP). The site is pre-installed with the Standard profile, so it is ready to use as soon as the VM boots.

ResourceMinimumRecommended
vCPU24
RAM2 GB4 GB
Storage20 GB40 GB

Storage needs grow with media uploads and the number of installed modules.

ssh ubuntu@<your-vm-ip>

On the first boot, a setup script creates the database, installs the Drupal site with Drush, and generates the admin and database passwords. This takes 1-2 minutes. Track progress:

journalctl -u drupal-first-boot.service -f

The login message (MOTD) confirms when Drupal is ready.

The admin password, along with the database credentials, is written to a root-only file:

sudo cat /root/.credentials/drupal.txt

Open the site in a browser:

http://<your-vm-ip>/

Sign in at the admin login page:

http://<your-vm-ip>/user/login
FieldValue
Usernameadmin
PasswordFrom /root/.credentials/drupal.txt

Drupal is served by Apache with MariaDB, both managed by systemd.

# Service status
systemctl status apache2
systemctl status mariadb
# Restart the web server
sudo systemctl restart apache2
# Run Drush commands from the project root
cd /var/www/drupal && vendor/bin/drush status
cd /var/www/drupal && vendor/bin/drush cache:rebuild
PathPurpose
/var/www/drupalProject root
/var/www/drupal/webWeb docroot
/var/www/drupal/web/sites/default/settings.phpSite configuration
/var/www/drupal/web/sites/default/filesUploaded files and media

Port 80 is open on the VM’s network interface. UFW is enabled and allows SSH (port 22) and HTTP (port 80). The image serves plain HTTP only.

For production use, put the instance behind a reverse proxy with TLS (for example Nginx or Caddy) so the site is served over HTTPS, and update trusted_host_patterns accordingly.

Last updated: