Deployment guide

MRBS

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 SecureAnyCloud 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. The MySQL root, application database and administrator passwords are rotated per instance at first boot, so nothing ships with a known password.

What you get:

  • 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, and a vhost at /etc/apache2/sites-available/mrbs.conf
  • MySQL 8.0.x with an mrbs database and an mrbsuser application user, each with a 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, which loads the schema, rotates passwords and creates the administrator
  • Host-agnostic URLs, so MRBS renders on the VM public IP, on 127.0.0.1 or on any domain you point at it
  • Apache and MySQL enabled to start automatically on boot
  • 24/7 SecureAnyCloud support

Prerequisites

You need an active Azure subscription, an SSH key, and a VNet with a subnet.

Standard_B2s (2 vCPU, 4 GB RAM) is a comfortable starting size for most deployments. For very large user bases, move up to a D2s or D4s size.

Open inbound ports 80 and 443 on the network security group, and port 22 to your management network. MySQL listens only on loopback and is never exposed.

1

Deploy and connect

Launch the image from the Azure Marketplace, then connect over SSH as azureuser:

ssh azureuser@<vm-ip>

Within a few seconds of the instance starting, the first boot service loads the booking schema and generates the per-VM credentials.

2

Verify the services

Confirm that 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'
3

Check the versions

The MRBS release is the $mrbs_version_number value in the version file. Check it, along with the PHP, MySQL and Apache versions:

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

Inspect the database

The schema is loaded and a single administrator account exists. Its password is stored as a bcrypt 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"
5

Read the administrator password

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

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

Keep this file secure. After you first sign in, change the administrator password from within MRBS.

6

Sign in

Confirm that MRBS is serving locally. Then browse to http://<vm-ip>/admin.php 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/
7

The booking calendar

The home page is the booking calendar. Switch between the 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.

8

Manage areas and rooms

Open the Rooms admin area to create areas (buildings, sites or floors) and the rooms within them. Set each room's capacity and description.

Use the Users area to manage accounts and permission levels.

9

Create a booking

Select a slot to open the booking form. 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.

10

Components

The image places these components at the following paths:

  • 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)
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 that 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.

SecureAnyCloud packages and supports the image. Support is available 24/7 at sales@secureanycloud.com.

All product and company names are trademarks or registered trademarks of their respective holders. Their use does not imply affiliation or endorsement.

Deploy on Azure

Launch MRBS on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.

View this image

Need Help?

Our support team is available 24/7.

sales@secureanycloud.com

Deploy on Azure