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-opcacheOn 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 buildThe 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-data4. 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 emails5. Install wizard
Open https://biam.mycompany.com/install and follow the three steps:
- Database — the wizard tests the credentials before saving them and generates the application keys.
- Migration — creates the schema and initial catalogs.
- 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_dumpof the database +storage/app/(installed connector packages and the install marker live there). - Optional: at-rest
.envencryption withphp 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.