Skip to content

Manual Installation

Pre-Requisites

  • Install an SQL Express, MS SQL, MySQL, MariaDB server, or use an existing one. For testing, you can opt for the file based Sqlite DatabaseType.
  • Create an empty database, a new database user to connect with, and permissions and logons set. If you chose Sqlite, choose a destination directory and prepare folder permissions.
    • Refer to your database documentation for security setup and best practices

Download

Install under IIS

Feel free to deviate from the instructions to fit your desired deployment

  1. Download and Install .NET Core 8.x Web Hosting Bundle, also from Microsoft.
  2. Ensure the Web Socket Module is installed (Required)
    • You can find the module under Server Roles -> Web Server -> Application Developer -> Web Sockets.
  3. Install the Application Initialization Module (Recommended)
    • You can find the module under Server Roles -> Web Server -> Application Developer -> Application Initialization.
  4. Copy contents of zip file to a directory accessible by IIS
  5. Create new Site in IIS for Blazam

    • Point the root directory to the directory you unzipped the files to.
  6. Set ApplicationPool to AlwaysRunning (Recommended)

    • In IIS Manager, right click on the application pool under which the application runs and select Advanced Settings.
    • Set start mode to Always Running.
  7. Set IIS Site to Preload (Recommended)

    • In IIS Manager, right click on the site for the application, select Manage Website -> Advanced Settings and set the Preload Enabled value to true.
  8. Continue with Configuration

Install as Service

  1. Download and Install .NET Core 8.x Runtime from Microsoft.
  2. Extract the application to any directory eg:C:\Program Files\Blazam
  3. Using nssm.exe in the extracted files, install BLAZAM.exe as a service.
  4. Continue with Configuration

Warning

The Linux compatible Blazam is not yet available for public use in production. Beta testing only!

Installing Blazam on Linux manually is not a trivial undertaking. Using the install.sh script is more user friendly and streamlined for installation on Linux.

Pre-Requisites

  1. Install the necessary dependency packages from apt using the command
    sudo apt-get install -y aspnetcore-runtime-8.0 openssl libldap2 curl wget unzip
    
  2. Create a libldap.so symlink using
    ln -sf /usr/lib64/libldap.so /usr/lib/x86_64-linux-gnu/libldap-2.5.so.0
    

Install Blazam

    wget -q -O "blazam.zip" "https://blazam.org/download/beta"
    unzip -oq "blazam.zip" -d "/opt/blazam"

Reverse Proxy (Optional)

    <VirtualHost *:80>
        ServerName ${DOMAIN_NAME}
        Redirect permanent / https://${DOMAIN_NAME}/
    </VirtualHost>

    <VirtualHost *:443>
        ServerName ${DOMAIN_NAME}

        # SSL Configuration
        SSLEngine on
        SSLCertificateFile ${SSL_CERT_PATH}
        SSLCertificateKeyFile ${SSL_KEY_PATH}

        # Proxy Configuration
        ProxyPreserveHost On
        ProxyPass http://127.0.0.1:5000
        ProxyPassReverse http://127.0.0.1:5000

        # Required for SignalR WebSockets
        RewriteEngine on
        RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
        RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
        RewriteRule /(.*) ws://127.0.0.1:5000}\$1 [P,L]

        RequestHeader set "X-Forwarded-Proto" "https"
    </VirtualHost>
server {
    listen 80;
    server_name ${DOMAIN_NAME};
    location { return 301 https://\$host\$request_uri; }
}
server {
    listen 443 ssl http2;
    server_name ${DOMAIN_NAME};
    ssl_certificate ${SSL_CERT_PATH};
    ssl_certificate_key ${SSL_KEY_PATH};
    ssl_protocols TLSv1.2 TLSv1.3;
    location {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection \$connection_upgrade;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}

Pre-Requisites

  1. Install the necessary dependency packages using yum or dnf:
    sudo dnf install -y aspnetcore-runtime-8.0 openssl openldap curl wget unzip
    
  2. If using CentOS 7, replace dnf with yum.
  3. For .NET 8 runtime, you may need to add the Microsoft package repository:
    sudo rpm -Uvh https://packages.microsoft.com/config/rhel/8/packages-microsoft-prod.rpm
    sudo dnf install -y aspnetcore-runtime-8.0
    
  4. Create a libldap.so symlink if required (adjust path as needed):
    sudo ln -sf /usr/lib64/libldap.so /usr/lib64/libldap-2.5.so.0
    

Install Blazam

    wget -q -O "blazam.zip" "https://blazam.org/download/beta"
    unzip -oq "blazam.zip" -d "/opt/blazam"

Reverse Proxy (Optional)

    <VirtualHost *:80>
        ServerName ${DOMAIN_NAME}
        Redirect permanent / https://${DOMAIN_NAME}/
    </VirtualHost>

    <VirtualHost *:443>
        ServerName ${DOMAIN_NAME}

        # SSL Configuration
        SSLEngine on
        SSLCertificateFile ${SSL_CERT_PATH}
        SSLCertificateKeyFile ${SSL_KEY_PATH}

        # Proxy Configuration
        ProxyPreserveHost On
        ProxyPass http://127.0.0.1:5000
        ProxyPassReverse http://127.0.0.1:5000

        # Required for SignalR WebSockets
        RewriteEngine on
        RewriteCond %{HTTP:UPGRADE} ^WebSocket$ [NC]
        RewriteCond %{HTTP:CONNECTION} Upgrade$ [NC]
        RewriteRule /(.*) ws://127.0.0.1:5000}\$1 [P,L]

        RequestHeader set "X-Forwarded-Proto" "https"
    </VirtualHost>
server {
    listen 80;
    server_name ${DOMAIN_NAME};
    location { return 301 https://\$host\$request_uri; }
}
server {
    listen 443 ssl http2;
    server_name ${DOMAIN_NAME};
    ssl_certificate ${SSL_CERT_PATH};
    ssl_certificate_key ${SSL_KEY_PATH};
    ssl_protocols TLSv1.2 TLSv1.3;
    location {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection \$connection_upgrade;
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}