Mr
Applications Azure

MRBS on Ubuntu 24.04 on Azure User Guide

| Product: MRBS on Ubuntu 24.04 LTS on Azure

Overview

MRBS, the Meeting Room Booking System, is a mature open source web application for booking meeting rooms and other shared resources. It gives you a calendar driven booking interface, per user accounts, and an administration area for managing areas, rooms, and users. The cloudimg image installs MRBS 1.12 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 booking schema is loaded and the first administrator is created for you, and the MySQL root, application database, and administrator passwords are all rotated per instance at first boot, so nothing ships with a known password.

What is included:

  • MRBS 1.12.2 from the official release at /var/www/html/mrbs (document root /var/www/html/mrbs/web)
  • Apache 2.4.x with mod_rewrite enabled, vhost at /etc/apache2/sites-available/mrbs.conf
  • MySQL 8.0.x with an mrbs database and mrbsuser application user (per VM password)
  • PHP 8.3.x with the mysqli, mbstring, xml, intl, gd, curl, and zip extensions
  • Database backed authentication, with a single admin account created at first boot (level 2)
  • mrbs-firstboot.service loading the schema, rotating passwords, and creating the administrator
  • Host agnostic URLs: MRBS 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 most deployments; move up to a D2s or D4s size for very large user bases. Open inbound ports 80 and 443 (and 22 to your management network) on the network security group. MySQL listens only on loopback and is never exposed.

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 loads the booking schema and 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. MySQL is bound to loopback only:

sudo systemctl is-active apache2.service mysql.service
sudo ss -ltn | grep -E ':80|:3306'

Apache and MySQL active, with MySQL bound to loopback on port 3306

Step 3: Check the versions

The MRBS release is the $mrbs_version_number value in the version file:

grep mrbs_version_number /var/www/html/mrbs/web/version_num.inc
php -v | head -1
mysql --version
apache2 -v | head -1

MRBS 1.12.2 version string, PHP 8.3, MySQL 8.0, and Apache 2.4

Step 4: Inspect the database

The schema is loaded and a single administrator account exists, stored with a bcrypt password hash, so there is no default or shared login. Read the application database password from the root only credentials file, then inspect the tables, users, and rooms:

DB_PASS=$(sudo grep '^MRBS_DB_PASSWORD=' /stage/scripts/mrbs-credentials.log | cut -d= -f2-)
sudo mysql -umrbsuser -p"$DB_PASS" mrbs -e "SELECT COUNT(*) AS mrbs_tables FROM information_schema.tables WHERE table_schema='mrbs'"
sudo mysql -umrbsuser -p"$DB_PASS" mrbs -e "SELECT id,name,level,LEFT(password_hash,7) AS hash FROM mrbs_users"

The MRBS schema tables and the single admin user stored with a bcrypt hash

Step 5: Read the administrator password

The per VM credentials are written to a root only file. Read it to pick up the MRBS_ADMIN_USER and MRBS_ADMIN_PASSWORD for signing in:

sudo cat /stage/scripts/mrbs-credentials.log

The per VM credentials file with the administrator user and rotated passwords

Keep this file secure. Change the administrator password from within MRBS once you have signed in for the first time.

Step 6: Sign in

Confirm MRBS is serving locally, then browse to http://<vm-ip>/admin.php in your browser and sign in as admin with the password from Step 5:

curl -s -o /dev/null -w 'HTTP %{http_code}\n' http://127.0.0.1/

The MRBS sign in page

Step 7: The booking calendar

The home page is the booking calendar. Switch between Day, Week, and Month views, pick an area, and see every room side by side with its current bookings. Click an empty slot to make a new booking.

The MRBS day view showing rooms and their bookings

Step 8: Manage areas and rooms

Open the Rooms admin area to create areas (buildings, sites, or floors) and the rooms within them, setting each room's capacity and description. The Users area manages accounts and permission levels.

The MRBS admin area listing areas and rooms with their capacities

Step 9: Create a booking

Selecting a slot opens the booking form, where you set the brief description, full description, start and end times, room, and booking type. Bookings can be confirmed or tentative, repeated on a schedule, and opened for registration.

The MRBS booking entry form

Step 10: Components

Component Path
MRBS install /var/www/html/mrbs/
Document root /var/www/html/mrbs/web/
MRBS config /var/www/html/mrbs/web/config.inc.php
Database schema file /var/www/html/mrbs/tables.my.sql
Apache vhost /etc/apache2/sites-available/mrbs.conf
Apache logs /var/log/apache2/mrbs-{access,error}.log
MySQL data /var/lib/mysql/
Firstboot script /usr/local/sbin/mrbs-firstboot.sh
Credentials /stage/scripts/mrbs-credentials.log (mode 0600 root:root)

Step 11: Security and next steps

  • Change the administrator password from within MRBS after your first sign in, and add your real user accounts under the Users area.
  • Enable HTTPS by installing certbot and requesting a certificate: sudo apt-get install -y certbot python3-certbot-apache then sudo certbot --apache.
  • Restrict the network security group so that ports 80 and 443 are open only to your users or load balancer, and port 22 only to your management network.
  • Configure email in config.inc.php so MRBS can send booking confirmations and reminders.
  • Point your domain at the instance; because the image is host agnostic, no URL rewrite is needed.
  • Patch the OS regularly with sudo apt-get update and sudo apt-get upgrade.

Licensing

MRBS 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.