Skip to content

Installation

Native installation on Linux (see Requirements). BIAM includes a Moodle-style web install wizard: the database and the first administrator are configured from the browser, not by editing files.

1. Prepare the system

bash
# Ubuntu 24.04 — base packages
sudo apt install nginx postgresql-client \
  php8.4-fpm php8.4-pgsql php8.4-ldap php8.4-mbstring php8.4-xml \
  php8.4-curl php8.4-zip php8.4-intl php8.4-bcmath php8.4-opcache

On the database VM, create the database and role:

sql
CREATE ROLE biam LOGIN PASSWORD '...';
CREATE DATABASE biam OWNER biam;

2. Deploy the code

bash
# Backend
cd /opt/biam/backend
composer install --no-dev --optimize-autoloader

# SPA (skip if the release ships the build)
cd /opt/biam/frontend
npm ci && npm run build

The SPA is served alongside the backend, same origin (no CORS): nginx points its root at backend/public.

Permissions: storage/ and bootstrap/cache/ writable by the php-fpm user.

3. Services

  • Cron (mandatory — lifecycle windows and connector health depend on it):
* * * * * cd /opt/biam/backend && php artisan schedule:run >> /dev/null 2>&1
  • Queue worker (systemd):
ini
[Service]
ExecStart=/usr/bin/php /opt/biam/backend/artisan queue:work --tries=3
Restart=always
User=www-data

4. Minimal .env

Only the basics; the database connection is written by the wizard:

APP_URL=https://biam.mycompany.com
APP_TIMEZONE=America/La_Paz
MAIL_*=...            # SMTP for notifications and welcome emails

5. Install wizard

Open https://biam.mycompany.com/install and follow the three steps:

  1. Database — the wizard tests the credentials before saving them and generates the application keys.
  2. Migration — creates the schema and initial catalogs.
  3. Administrator — creates the first root user with credentials you choose and closes the wizard in the same step.

There is no default username/password: until step 3 completes, nobody can log in; after it, the wizard locks itself (retries return INIT101W).

6. Post-install

bash
php artisan config:cache
  • Backups: pg_dump of the database + storage/app/ (installed connector packages and the install marker live there).
  • Optional: at-rest .env encryption with php artisan env:encrypt (an ops task).
  • Configure the LDAP/AD connection from the console (Settings) — it is stored encrypted in the database, not in .env.