Skip to main content

Diagnostic Commands

# Check container status
docker compose ps

# View app logs (last 100 lines)
docker compose logs app --tail=100

# View all logs
docker compose logs -f

# Check license status
docker compose exec app php artisan license:heartbeat

# Check queue status
docker compose exec app php artisan horizon:status

# Run a health check
curl -f http://localhost:8080/up

Common Issues

Check the logs:
docker compose logs app --tail=50
Common causes:
  • APP_KEY not set → The entrypoint generates it automatically. If it persists, run:
    docker compose exec app php artisan key:generate --force
    
  • Database not ready → Ensure PostgreSQL is healthy:
    docker compose ps postgres
    
  • Permission issues → Fix storage permissions:
    docker compose exec app chown -R www-data:www-data storage bootstrap/cache
    
License server unreachable and grace period expired.
Solutions:
  1. Check outbound connectivity to license.verilock.com:
    docker compose exec app curl -I https://license.verilock.com
    
  2. Verify your license key in .env:
    grep VERILOCK_LICENSE_KEY .env
    
  3. If behind a corporate proxy, configure Docker proxy settings.
  4. Grace period is 7 days by default. If the server was unreachable for longer, restore connectivity.
SQLSTATE[08006] Connection refused
Ensure PostgreSQL is running:
docker compose ps postgres
docker compose logs postgres --tail=20
Check credentials match between .env and docker-compose.yml:
  • DB_HOST should be postgres (Docker service name)
  • DB_PASSWORD must match POSTGRES_PASSWORD
The default upload limit is 50MB. If you’re behind an additional reverse proxy, ensure it also allows large uploads:Nginx:
client_max_body_size 50M;
Caddy:
kyc.your-domain.com {
    request_body {
        max_size 50MB
    }
    reverse_proxy app:80
}
Horizon manages queue workers. Check its status:
docker compose exec app php artisan horizon:status
If Horizon is paused:
docker compose exec app php artisan horizon:continue
Check failed jobs:
docker compose exec app php artisan queue:failed
Retry failed jobs:
docker compose exec app php artisan queue:retry all
Check MinIO is healthy:
docker compose ps minio
docker compose logs minio --tail=20
Verify the bucket exists:
docker compose exec minio mc ls local/
If the bucket is missing, recreate it:
docker compose restart minio-init
The AML engine needs time to download and index sanctions data on first start (~5-10 minutes).Check status:
docker compose logs aml-engine --tail=30
Force a data refresh:
docker compose restart aml-engine
Quick wins:
  1. Ensure Redis is used for cache/session (not database):
    CACHE_STORE=redis
    SESSION_DRIVER=redis
    
  2. Check available memory:
    docker stats --no-stream
    
  3. Increase PHP-FPM workers if CPU is available (edit docker/php-fpm.conf).
  4. Ensure OPcache is enabled (it is by default).

Logs

LogLocationDescription
Applicationstorage/logs/laravel.logMain application log
Horizonstorage/logs/horizon.logQueue worker log
Schedulerstorage/logs/scheduler.logCron scheduler log
NginxDocker stdoutWeb server access/error log
PostgreSQLDocker stdoutDatabase log
View any log:
# App log
docker compose exec app tail -f storage/logs/laravel.log

# All Docker logs
docker compose logs -f

Support

If you can’t resolve an issue:
  1. Collect diagnostics:
    docker compose exec app php artisan about > diagnostics.txt
    docker compose ps >> diagnostics.txt
    docker compose logs app --tail=200 >> diagnostics.txt
    
  2. Email support@verilock.com with the diagnostics file and a description of the issue.
  3. Enterprise customers can use their dedicated support channel.