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_sqlsrvfor 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
--timeoutslightly aboveQUERYPROXY_EXECUTION_TIMEOUT.
Production notes
- Serve the app behind a real web server / reverse proxy (nginx, Caddy) with
TLS;
php artisan serveis 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:workor a cron entry callingphp artisan schedule:runevery minute. - Cache the configuration on deploy:
php artisan config:cache && php artisan route:cache.