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
mrbsdatabase and anmrbsuserapplication 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
adminaccount 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.
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.
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'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 -1Inspect 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"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.logKeep this file secure. After you first sign in, change the administrator password from within MRBS.
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/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.
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.
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.
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)
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, thensudo 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 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 updateandsudo 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
Overview
MRBS, the Meeting Room Booking System, is a mature open source web application for booking meeting rooms and other shared resources. Users get a calendar-driven booking interface with day, week and month views. Administrators manage areas, rooms and user accounts from an admin area. Everyone can see at a glance what is free and reserve it without email chains or spreadsheets.
What you get:
- A LAMP stack: MRBS 1.12.2 on PHP 8.3 under Apache 2.4, with a MySQL 8.0 database, all from the Ubuntu 24.04 noble universe with no third-party APT repositories
- Dedicated, independently resizable EBS data volumes for the database data directory,
/var/lib/mysql, and the web application root,/var/www. Both are kept off the operating system disk, so you can grow or snapshot each one on its own - Database-backed authentication. Accounts live in the application database, and the administrator is a real account with a hashed password, not a shared default
- Credentials generated freshly on each instance: the administrator password, the application database password, the MySQL root password and the MySQL maintenance password. Two instances launched from the same Amazon Machine Image never share a credential
- No default login in the image, because the build-time database is destroyed before the image is captured
- Credentials written to
/stage/scripts/mrbs-credentials.logwith mode 0600, so only the root user can read them
The administrator account is created on the first boot of every deployed instance.
MRBS derives its address from the request host on every request. It answers correctly on the instance public IP, its private IP, or any custom domain you later point at it, with no reconfiguration and no redirect to a stale address.
Prerequisites
Before you deploy this image, you need:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region. The security group must allow inbound port 22 from your management network, and ports 80 and 443 for the web application
- The AWS CLI (version 2), installed locally if you plan to deploy from the command line
m5.large (2 vCPU, 8 GB RAM) is a comfortable starting size for most deployments. For very large user bases, move up to a larger instance.
MySQL listens only on loopback and is never exposed to the network.
Launch the instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for MRBS. Select the SecureAnyCloud listing, choose Select, then choose Continue on the subscription summary.
Pick an instance type of m5.large or larger. Choose your EC2 key pair under Key pair (login).
Under Network settings, select your VPC and subnet. Create or select a security group that opens port 22 from your management network and ports 80 and 443 for the web application. Leave the root volume at the default size or larger. The database and web volumes are attached automatically.
Select Launch instance. First boot initialisation takes a short time after the instance state becomes Running and the status checks pass. During this time, the database is created, the booking schema is loaded and the per-instance administrator is provisioned.
Launch the instance from the AWS CLI (optional)
Alternatively, launch the instance from the command line. Replace <ami-id> with the AMI ID shown on the Marketplace listing, and my-key with your EC2 key pair name. Replace <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens ports 22, 80 and 443 as described above:
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type m5.large \
--key-name my-key \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--associate-public-ip-address \
--metadata-options "HttpTokens=required" \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=mrbs}]'Connect to your instance
Connect over SSH with your EC2 key pair. The login user depends on the operating system variant you launched. On Ubuntu 24.04 LTS, the login user is ubuntu:
ssh -i /path/to/my-key.pem ubuntu@<public-ip>Within a few seconds of the instance starting, the first boot service loads the booking schema and generates the per-instance credentials.
Verify the services
Confirm that Apache and MySQL are active. Only the web ports and SSH listen publicly, while MySQL stays on loopback:
sudo systemctl is-active apache2.service mysql.service
sudo ss -ltnCheck 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 -r 'echo "PHP ".PHP_VERSION."\n";' mysql --version apache2 -vInspect 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 into a shell variable, which does not print it. Then inspect the table count and the administrator row. The query shows only the hash prefix, not any secret:
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'" 2>/dev/null
sudo mysql -umrbsuser -p"$DB_PASS" mrbs -e "SELECT id,name,level,LEFT(password_hash,4) AS hash_prefix FROM mrbs_users" 2>/dev/nullConfirm MRBS is serving and the credentials are set
Confirm that MRBS answers on loopback and that the per-instance administrator credentials are present. These commands do not print the password itself:
curl -s -o /dev/null -w 'MRBS home page: HTTP %{http_code}\n' http://127.0.0.1/
sudo test -s /stage/scripts/mrbs-credentials.log && echo "credentials file present (0600 root only)"
sudo grep -qE '^MRBS_ADMIN_USER=admin$' /stage/scripts/mrbs-credentials.log && echo "administrator user: admin"
sudo grep -qE '^MRBS_ADMIN_PASSWORD=.{8,}$' /stage/scripts/mrbs-credentials.log && echo "administrator password: generated per instance (value hidden)"Read the administrator password
The per-instance credentials are written to a root-only file. Read it to get MRBS_ADMIN_USER and MRBS_ADMIN_PASSWORD for your first sign-in:
sudo cat /stage/scripts/mrbs-credentials.logKeep this file secure. After you sign in, change the administrator password from within MRBS.
Sign in
Browse to http://<public-ip>/admin.php and sign in as admin with the password from the credentials file.
Sessions are server-side, so no client-side cookie is tied to the instance IP.
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.
The week view shows all rooms for the whole week at a glance. In any view, click an empty slot to make a new booking.
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.
Rooms can be enabled or disabled, and the list can be exported to CSV, Excel or PDF. Use the Users area to manage accounts and permission levels.
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 marked confirmed or tentative, repeated on a schedule, and opened for registration.
Reporting
The Report area produces a filtered report of bookings across a date range, area, room, type or description. The report is summarised by room, creator or type, and you can export it to CSV, Excel, PDF or iCalendar.
Use it to review room utilisation or to export a schedule.
Components and file locations
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 (dedicated EBS volume): /var/lib/mysql/
- Web application (dedicated EBS volume): /var/www/
- Firstboot script: /usr/local/sbin/mrbs-firstboot.sh
- Credentials: /stage/scripts/mrbs-credentials.log (mode 0600 root:root)
Storage layout
The database and the web application each live on their own dedicated, independently resizable EBS data volume, so neither shares the operating system disk. Both volumes are mounted by filesystem UUID and are captured into the image, so every instance you launch has the same layout.
To grow either volume, modify it in the EC2 console and extend the filesystem. You can also snapshot each volume independently for backup.
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 for your domain. On Ubuntu, run sudo apt-get install -y certbot python3-certbot-apache, then sudo certbot --apache -d your-domain.example.com.
- Restrict the 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 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. On Ubuntu, run sudo apt-get update && sudo apt-get upgrade -y.
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 AWS
Launch MRBS Meeting Room Booking System on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com