Skip to main content

BMLT Installation

This guide covers installing the BMLT Server on your configured LAMP stack.

Download BMLT Server

Get Latest Release

Download the latest stable version from GitHub:

# Navigate to web directory
cd /var/www/your-domain.com

# Download BMLT Server (current stable version)
sudo wget https://github.com/bmlt-enabled/bmlt-server/releases/download/4.0.2/bmlt-server.zip

# Extract the archive
sudo unzip bmlt-server.zip

# Remove the zip file
sudo rm bmlt-server.zip

# Set proper ownership
sudo chown -R www-data:www-data main_server

# Set proper permissions
sudo chmod -R 755 main_server

If using a domain name, create an Apache virtual host:

Create Virtual Host Configuration

sudo nano /etc/apache2/sites-available/your-domain.com.conf

Add this configuration:

<VirtualHost *:80>
ServerAdmin webmaster@your-domain.com
ServerName your-domain.com
DocumentRoot /var/www/your-domain.com

ErrorLog ${APACHE_LOG_DIR}/your-domain.com_error.log
CustomLog ${APACHE_LOG_DIR}/your-domain.com_access.log combined

<Directory "/var/www/your-domain.com">
AllowOverride All
Require all granted
</Directory>

# Optional: Redirect to HTTPS (after SSL setup)
# RewriteEngine on
# RewriteCond %{SERVER_NAME} =your-domain.com
# RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>

Enable the Site

# Enable your site
sudo a2ensite your-domain.com.conf

# Disable default site (optional)
sudo a2dissite 000-default.conf

# Test configuration
sudo apache2ctl configtest

# Reload Apache
sudo systemctl reload apache2

Run BMLT Installation Wizard

Access Installation

Navigate to your BMLT installation in a web browser:

With Domain:

http://your-domain.com/main_server

With IP Only:

http://your-server-ip/main_server

Installation Steps

Adding the auto-config File

Download the file initial-auto-config.txt from github at https://raw.githubusercontent.com/bmlt-enabled/bmlt-server/refs/heads/main/installation/initial-auto-config.txt.

Upload this file to your server, put it in the directory that holds your main_server directory, and rename it to auto-config.inc.php. This file should have the permissions -rw-r--r-- (0644 in octal). This means that the owner of the file can read and write it, and the owning group and others can read it.

Note that the file auto-config.inc.php is not inside main_server, but rather at the same level. This is a little weird, but does have the advantage that you can upload a new version of the server easily without touching the auto-config.inc.php file. So your directory structure should look something like this:

public_html
auto-config.inc.php
main_server
app
bootstrap
......

Now edit the auto-config.inc.php file with new parameters as needed. You can do this using the edit command on cPanel. There are two parameters you definitely need to update, namely $dbUser and $dbPassword (the user and password for your server database). You also need to either update the parameter $gkey if you are using Google Maps, or else delete this parameter altogether if you are using OSM (Open Street Maps) for maps and nominatim for geocoding.

There are various other parameters in the file, but the default values may well be what you want.

Alternatively, you can edit the initial-auto-config.txt file on your local machine, and then upload the edited file, thus avoiding needing to edit it on your web host. If you do that, be sure and use an editor intended for editing source code and not something like Microsoft Word.

Post-Installation Configuration

Remove Installation Files (Security)

After successful installation:

# Navigate to BMLT directory
cd /var/www/your-domain.com/main_server

Set File Permissions

Ensure proper security permissions:

# Set ownership
sudo chown -R www-data:www-data /var/www/your-domain.com/main_server

# Set directory permissions
sudo find /var/www/your-domain.com/main_server -type d -exec chmod 755 {} \;

# Set file permissions
sudo find /var/www/your-domain.com/main_server -type f -exec chmod 644 {} \;

# Secure configuration file
sudo chmod 600 /var/www/your-domain.com/auto-config.inc.php

Verify Installation

Test BMLT Access

Visit your BMLT installation:

  • Main Interface: http://your-domain.com/main_server
  • Admin Panel: http://your-domain.com/main_server/admin

Check Configuration

Verify the auto-config file was created:

# Check if config file exists
ls -la /var/www/your-domain.com/auto-config.inc.php

# View configuration (be careful not to expose passwords)
sudo grep -v password /var/www/your-domain.com/auto-config.inc.php

Test Database Connection

Verify BMLT can connect to the database:

# Check MySQL connection from BMLT user
mysql -u bmlt -p

# List tables (should show BMLT tables)
USE bmlt;
SHOW TABLES;
EXIT;

Basic BMLT Configuration

Access Admin Panel

  1. Navigate to: http://your-domain.com/main_server/admin
  2. Log in with the administrator credentials you created
  3. You'll see the BMLT administration interface

Initial Setup Tasks

  1. Configure Service Bodies: Add your area/region structure
  2. Set up Meetings: Import or add meeting data
  3. Configure Formats: Set up meeting formats (Open, Closed, etc.)
  4. User Management: Add additional administrators if needed

Troubleshooting

Common Installation Issues

Database Connection Failed:

# Verify database user
mysql -u bmlt -p

# Check database exists
mysql -u root -p
SHOW DATABASES;

Permission Errors:

# Fix ownership
sudo chown -R www-data:www-data /var/www/your-domain.com/main_server

# Check Apache error log
sudo tail -f /var/log/apache2/error.log

White Screen/PHP Errors:

# Check PHP error log
sudo tail -f /var/log/apache2/error.log

# Verify PHP extensions
php -m | grep -E "(mysql|curl|gd|zip|mbstring|xml)"

Apache Configuration Issues

Site Not Loading:

# Check virtual host configuration
sudo apache2ctl -S

# Test configuration
sudo apache2ctl configtest

# Check if site is enabled
sudo a2ensite your-domain.com.conf
sudo systemctl reload apache2

Performance Optimization

Enable PHP OPcache (Optional):

# Install OPcache
sudo apt install php-opcache -y

# Restart Apache
sudo systemctl restart apache2

Security Hardening

Hide PHP Version

Edit PHP configuration:

sudo nano /etc/php/8.1/apache2/php.ini

Set:

expose_php = Off

Secure Auto-Config File

# Ensure only web server can read config
sudo chmod 600 /var/www/your-domain.com/auto-config.inc.php
sudo chown www-data:www-data /var/www/your-domain.com/auto-config.inc.php

Add Security Headers

Create .htaccess file in BMLT directory:

sudo nano /var/www/your-domain.com/main_server/.htaccess

Add security headers:

# Security headers
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"

# Hide server information
ServerTokens Prod

Backup Configuration

Create initial backup after successful installation:

# Backup database
sudo mysqldump bmlt > ~/bmlt-initial-backup.sql

# Backup configuration file
sudo cp /var/www/your-domain.com/auto-config.inc.php ~/auto-config-backup.php

Next Steps

With BMLT successfully installed:

  1. Configure SSL: SSL Setup for HTTPS access
  2. Install YAP: YAP Installation if you need phone services
  3. Set up backups: Configure automated backups
  4. Add meeting data: Import your meeting information
  5. Configure users: Set up additional administrators

BMLT Resources

tip

Document your admin credentials and database passwords in a secure location. You'll need them for maintenance and troubleshooting.

warning

Always test BMLT functionality after installation. Verify meeting searches, admin access, and any integrations work properly before going live.