Skip to main content

Environment Variables

All configuration is done through the .env file. After changing any value, restart the application:
docker compose restart app

Core Settings

Application

VariableDescriptionDefault
APP_NAMEApplication name (shown in emails, UI)Verilock Identity
APP_URLPublic URLhttp://localhost
APP_ENVEnvironment (production, local)production
APP_DEBUGEnable debug modefalse
APP_PORTExposed HTTP port8080
Never set APP_DEBUG=true in production. It exposes sensitive information.

Database

DB_CONNECTION=pgsql
DB_HOST=postgres          # Docker service name
DB_PORT=5432
DB_DATABASE=verilock
DB_USERNAME=verilock
DB_PASSWORD=your-strong-password
To access the database directly:
docker compose exec postgres psql -U verilock -d verilock

Redis

REDIS_HOST=redis
REDIS_PASSWORD=your-redis-password
REDIS_PORT=6379

CACHE_STORE=redis
QUEUE_CONNECTION=redis
SESSION_DRIVER=redis

API Keys

After installation, create API keys from the dashboard at /dashboard/api-keys, or via CLI:
docker compose exec app php artisan tinker
# Then in tinker:
$org = App\Models\Organization::first();
$key = App\Models\ApiKey::generateKey('live');
App\Models\ApiKey::create([
    'organization_id' => $org->id,
    'name' => 'Production',
    'key_prefix' => $key['prefix'],
    'key_hash' => $key['hash'],
    'encrypted_key' => $key['key'],
    'environment' => 'live',
    'rate_limit' => 1000,
]);
echo "API Key: " . $key['key'];

Mail

Configure email for OTP codes and notifications:
MAIL_MAILER=smtp
MAIL_HOST=smtp.your-provider.com
MAIL_PORT=587
MAIL_USERNAME=your-username
MAIL_PASSWORD=your-password
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=noreply@your-domain.com
MAIL_FROM_NAME="Verilock Identity"

Storage

Documents (ID photos, selfies, address proofs) are stored in MinIO by default.

MinIO (Default)

FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=verilock
AWS_SECRET_ACCESS_KEY=your-minio-password
AWS_DEFAULT_REGION=us-east-1
AWS_BUCKET=verilock-documents
AWS_ENDPOINT=http://minio:9000
AWS_USE_PATH_STYLE_ENDPOINT=true
Access the MinIO console at http://localhost:9001.

AWS S3

To use real AWS S3 instead of MinIO:
FILESYSTEM_DISK=s3
AWS_ACCESS_KEY_ID=your-aws-key
AWS_SECRET_ACCESS_KEY=your-aws-secret
AWS_DEFAULT_REGION=eu-west-1
AWS_BUCKET=your-bucket-name
# Remove or comment out these lines:
# AWS_ENDPOINT=
# AWS_USE_PATH_STYLE_ENDPOINT=

Local Filesystem

For simple deployments without object storage:
FILESYSTEM_DISK=local
Documents are stored in storage/app/private/kyc-documents/.

SMS / OTP

SMS-based OTP verification can be configured in the dashboard settings. Contact support for setup instructions.

AML Screening

The embedded AML engine provides AML/PEP screening against international sanctions and watchlists. It automatically downloads and indexes the latest data on startup. To force a refresh:
docker compose restart aml-engine

License

SELFHOST_ENABLED=true
VERILOCK_LICENSE_KEY=vrl_your_key_here
VERILOCK_LICENSE_SERVER=https://license.verilock.com
VERILOCK_GRACE_PERIOD=7          # Days offline before blocking
VERILOCK_UPDATE_CHANNEL=stable   # stable or beta
VERILOCK_TELEMETRY=true          # Anonymous usage metrics

Verify License Status

docker compose exec app php artisan license:heartbeat

Check for Updates

docker compose exec app php artisan selfhost:check-update