Skip to main content

System Requirements

GB App - Power BI Report Manager is built with modern technologies and requires:
  • Operating System: Ubuntu 22.04 (or compatible Linux distribution)
  • PHP: Version 8.2
  • Laravel Framework: Version 10.14
  • Node.js: Version 18.16 LTS
  • Vue.js: Version 3.2
  • Database: MySQL 5.7+ or SQL Server
  • Web Server: Nginx (recommended) or Apache
  • Docker: Latest version (for containerized deployment)

Docker Production Setup

The recommended deployment method uses Docker Compose for containerization.

Docker Compose Configuration

The application uses three main services defined in docker-compose.yml:
services:
    nginx:
        image: nginx:stable-alpine
        container_name: gb-app-webserver
        ports:
            - "80:80"
        volumes:
            - ./:/var/www/html
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
        depends_on:
            - app
        restart: unless-stopped
    
    app:
        build:
            context: .
            dockerfile: Dockerfile
            args:
                XDEBUG: 0
                PHP_IDE_CONFIG: "serverName=gb-app.test"
        container_name: gb-app-php
        volumes:
            - ./:/var/www/html
        restart: unless-stopped
        depends_on:
            - db
    
    db:
        image: mysql:5.7
        container_name: gb-app-db
        environment:
            MYSQL_ROOT_PASSWORD: passwordr
            MYSQL_DATABASE: GBapp
            MYSQL_USER: pcadmin
            MYSQL_PASSWORD: password
        volumes:
            - db_data:/var/lib/mysql
        ports:
            - "3306:3306"
        restart: unless-stopped

volumes:
    db_data:

Dockerfile Details

The application container is based on Ubuntu 22.04 and includes:
# Use Ubuntu 22.04 as the base image
FROM ubuntu:22.04

# Set environment variable to avoid interactive prompts
ENV DEBIAN_FRONTEND=noninteractive

ARG XDEBUG

# Install prerequisites
RUN apt-get update && apt-get install -y \
    software-properties-common \
    locales wget curl git gnupg2 nano apt-transport-https && \
    locale-gen en_US.UTF-8

# Add the Ondrej PHP PPA to get PHP 8.2
RUN add-apt-repository ppa:ondrej/php && apt-get update

# Install PHP 8.2 and necessary extensions
RUN apt-get install -y \
    php8.2-bcmath php8.2-bz2 php8.2-cli php8.2-common php8.2-curl \
    php8.2-cgi php8.2-dev php8.2-fpm php8.2-gd php8.2-gmp php8.2-imap php8.2-intl \
    php8.2-ldap php8.2-mbstring php8.2-mysql php8.2-odbc php8.2-opcache \
    php8.2-pgsql php8.2-phpdbg php8.2-pspell php8.2-readline php8.2-soap \
    php8.2-sqlite3 php8.2-tidy php8.2-xml php8.2-xmlrpc php8.2-xsl php8.2-zip \
    php8.2-mongodb php8.2-swoole php8.2-xdebug \
    mysql-client cron supervisor

# Install Node.js 18.x
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - && \
    apt-get install -y nodejs

# Install SQL Server ODBC driver and PHP extensions
RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add - && \
    curl https://packages.microsoft.com/config/ubuntu/22.04/prod.list > /etc/apt/sources.list.d/mssql-release.list && \
    apt-get update && ACCEPT_EULA=Y apt-get install -y msodbcsql18 unixodbc-dev && \
    ACCEPT_EULA=Y apt-get install -y mssql-tools && \
    echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile && \
    pecl install sqlsrv pdo_sqlsrv && \
    echo "; priority=20\nextension=sqlsrv.so\n" > /etc/php/8.2/mods-available/sqlsrv.ini && \
    echo "; priority=30\nextension=pdo_sqlsrv.so\n" > /etc/php/8.2/mods-available/pdo_sqlsrv.ini && \
    phpenmod -v 8.2 sqlsrv pdo_sqlsrv

# Configure PHP-FPM
RUN sed -i "s/listen = .*/listen = 9000/" /etc/php/8.2/fpm/pool.d/www.conf && \
    sed -i "s/memory_limit =.*/memory_limit = 1024M/" /etc/php/8.2/fpm/php.ini

# Install Composer
RUN curl https://getcomposer.org/installer > composer-setup.php && \
    php composer-setup.php && mv composer.phar /usr/local/bin/composer && rm composer-setup.php

WORKDIR /var/www/html

CMD ["/usr/bin/supervisord"]

Step-by-Step Installation

1

Download and Extract

Download the project and extract it to your desired location:
mkdir -p /opt/gb-app
cd /opt/gb-app
# Extract your downloaded archive here
2

Configure Environment

Copy and configure the environment file:
cp .env.example .env
nano .env
Key configurations to set:
  • Application name and URL
  • Database credentials
  • Power BI API credentials
  • Mail server settings
  • LDAP settings (if using Active Directory)
3

Build Container

docker compose build
This process includes:
  • Installing Ubuntu 22.04 base
  • Installing PHP 8.2 with all extensions
  • Installing Node.js 18.x
  • Installing SQL Server drivers (for SQL Server support)
  • Installing Composer
  • Configuring PHP-FPM
4

Start Services

docker compose up -d
Verify all containers are running:
docker compose ps
5

Set Permissions

Incorrect permissions will cause Laravel to fail with “Permission denied” errors.
docker compose exec app chmod -R 775 /var/www/html/storage
docker compose exec app chmod -R 775 /var/www/html/bootstrap/cache
docker compose exec app chown -R www-data:www-data /var/www/html/storage
docker compose exec app chown -R www-data:www-data /var/www/html/bootstrap/cache
6

Install PHP Dependencies

docker compose exec app composer install --optimize-autoloader --no-dev
Key packages installed:
  • laravel/framework - Laravel 10.10
  • laravel/jetstream - Authentication scaffolding
  • spatie/laravel-permission - Role and permission management
  • directorytree/ldaprecord-laravel - LDAP integration
  • guzzlehttp/guzzle - HTTP client for Power BI API
  • inertiajs/inertia-laravel - Inertia.js adapter
7

Install Node Dependencies

docker compose exec app npm install
Key packages:
  • vue - Vue.js 3.2
  • @inertiajs/vue3 - Inertia.js Vue adapter
  • tailwindcss - CSS framework
  • powerbi-client - Power BI embed library
  • powerbi-client-vue-js - Vue wrapper for Power BI
8

Clear Cache and Run Migrations

docker compose exec app php artisan optimize
docker compose exec app php artisan migrate --seed
The migrations create:
  • User authentication tables
  • Role and permission tables (Spatie)
  • Reports and user_reports tables
  • Report filters tables
  • Design request tables (if applicable)
  • Sessions table
9

Build Frontend

docker compose exec app npm run build
This compiles:
  • Vue.js components
  • Tailwind CSS
  • JavaScript assets
  • Optimized bundles for production

Post-Installation

Verify Installation

Check that all services are running:
docker compose ps
You should see:
  • gb-app-webserver (nginx)
  • gb-app-php (PHP-FPM)
  • gb-app-db (MySQL)

Access the Application

Navigate to:
http://localhost
Or for remote servers:
http://your-server-ip

Check Logs

View application logs:
docker compose logs -f app
View web server logs:
docker compose logs -f nginx
View database logs:
docker compose logs -f db

Dependencies Overview

PHP Dependencies (composer.json)

"require": {
    "php": "^8.1",
    "directorytree/ldaprecord-laravel": "^3.4",
    "doctrine/dbal": "^3.6",
    "guzzlehttp/guzzle": "^7.2",
    "inertiajs/inertia-laravel": "^0.6.8",
    "laravel/framework": "^10.10",
    "laravel/jetstream": "^3.2",
    "laravel/sanctum": "^3.2",
    "spatie/laravel-permission": "^5.10"
}

Node Dependencies (package.json)

"dependencies": {
    "vue": "^3.2.31",
    "@inertiajs/vue3": "^1.0.0",
    "@tailwindcss/forms": "^0.5.2",
    "powerbi-client": "^2.22.3",
    "powerbi-client-vue-js": "^1.0.3"
}

Next Steps

Build docs developers (and LLMs) love