QueryProxy
Documentation menu

Manual installation

Install QueryProxy without Docker — requirements, setup steps, and the queue worker that approved queries depend on.

Updated:

Prefer running QueryProxy directly on a server? It is a standard Laravel application.

Requirements

  • PHP ≥ 8.3 with the PDO drivers for the databases you will proxy (pdo_pgsql, pdo_mysql, pdo_sqlite; pdo_sqlsrv for SQL Server targets)
  • Composer
  • Node.js 20+ (only to build the frontend assets)

Steps

git clone https://github.com/QueryProxy/QueryProxy.git
cd QueryProxy

composer install
cp .env.example .env
php artisan key:generate

touch database/database.sqlite
php artisan migrate            # add --seed for the demo team

npm install && npm run build

Then run the three processes:

php artisan serve                                              # the web portal
php artisan queue:work --queue=queries,default --timeout=310   # the worker
php artisan schedule:work                                      # the scheduler

The queue worker is not optional. Approved queries execute on the worker, never inside a web request. Without a running worker, requests will be approved and then sit in the queue forever. In production, keep it alive with a process supervisor (systemd, Supervisor) and set its --timeout slightly above QUERYPROXY_EXECUTION_TIMEOUT.

Production notes

  • Serve the app behind a real web server / reverse proxy (nginx, Caddy) with TLS; php artisan serve is fine for evaluation only.
  • Point DB_* at MySQL or PostgreSQL when SQLite no longer fits — see Configuration.
  • The scheduler powers result-retention pruning; run it via schedule:work or a cron entry calling php artisan schedule:run every minute.
  • Cache the configuration on deploy: php artisan config:cache && php artisan route:cache.

Arrow keys to move, Enter to open.