MRBS on Ubuntu 24.04 on Azure User Guide
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
mrbsdatabase andmrbsuserapplication 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
adminaccount created at first boot (level 2) mrbs-firstboot.serviceloading 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'

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

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"

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

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/

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.

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.

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.

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-apachethensudo 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.phpso 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 updateandsudo 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.