Run legacy and modern PHP and Node.js apps side by side with isolated runtimes, bundled services, and zero Docker setup.
Maintaining an old PHP 7.4 project while building a new Laravel 11 app on PHP 8.5? Running a Next.js frontend alongside a PHP backend? DevBox Pro is built for exactly that workflow. It lets you run multiple PHP, Node.js, database, and web server versions at the same time, with per-project configuration, automatic local domains, compatibility warnings, and bundled tooling.
DevBox Pro is an Electron desktop app with a React renderer and a Node.js main process. It manages PHP, Node.js, MySQL, MariaDB, Redis, Nginx, Apache, PostgreSQL, MongoDB, MinIO, Memcached, Mailpit, phpMyAdmin, Composer, Git, and more from one local interface.
Version 1.0.8: Introduces first-class Production Mode support with OPcache optimization, hardened web server security headers, resilient queue workers, safe in-place binary upgrades, and native Windows Task Scheduler integration for reliable production server deployment on Windows clients.
DevBox Pro provides two operation profiles: Local Mode for active debugging, hot reload, and development agility; and Production Mode for high performance, hardened security, and unattended background service and scheduler reliability.
- Dual Environment Profiles: Switch between Local Mode (interactive debugging, detailed errors, single queue worker) and Production Mode (optimized performance, hardened security, multi-worker) globally or per project.
- Hierarchical Precedence: Easily set a global deployment mode in Settings while allowing per-project overrides or inheriting global defaults.
- Production Environment Variables: Injects
APP_ENV=productionandNODE_ENV=productionacross projects, web servers, and background supervisor workers.
- PHP OPcache & JIT: Automatically enables OPcache (
opcache.enable=1,opcache.jit=1255) and suppresses sensitive error output (display_errors=Off) in production. - High-Performance FastCGI: Automatically provisions up to 8
PHP_FCGI_CHILDRENin production for concurrent request handling. - Optimized Database Settings: MySQL production configuration applies
skip-name-resolveand expandsinnodb_buffer_pool_sizeto 512MB. - Secured Redis: Configures mandatory password protection, a 256MB LRU memory cap (
allkeys-lru), and disables high-risk admin commands likeFLUSHALL.
- Strict Transport Security (HSTS): Automatically attaches
Strict-Transport-Securityheaders in HTTPS production mode. - Defensive Headers: Injects
X-Frame-Options: SAMEORIGIN,X-Content-Type-Options: nosniff, andX-XSS-Protection. - Information Leak Prevention: Sets
server_tokens offon Nginx andServerTokens Prod/ServerSignature Offon Apache, and disables directory indexing (Options -Indexes).
- Production Queue Flags: Pre-configures production workers with
--tries=3,--timeout=90,--memory=128, and--max-jobs=1000. - Code 0 Clean Exit Restarts: Handles Laravel's clean job/time retirement (exit code 0) smoothly without treating it as a process death.
- Crash-Loop & Exponential Backoff: Prevents CPU spikes and thrashing when misconfigured jobs fail repeatedly.
- Independent Multi-Instance Supervision: Full lifecycle isolation for workers configured with
numprocs > 1.
- Windows Task Scheduler Service: Integrates directly with Windows
schtasks.exeto triggerphp artisan schedule:runevery minute on Windows client servers. - Silent Background Execution: Runs via an optimized VBScript launcher through
wscript.exe, eliminating disruptive black CMD popups every 60 seconds. - Management & Status Controls: Dedicated scheduler dashboard card in Project Details to view status, inspect execution logs, clear logs, and manually trigger "Run Now".
- One-Click In-Place Upgrades: Safely upgrade installed packages (PHP, Node.js, Python, MySQL, MariaDB) in-place without manual file deletion or path reconfiguration.
- Automated Configuration Preservation: Preserves customized
php.inidirectives (e.g.,memory_limit,upload_max_filesize), custom PHP extensions inext/, CA certificates (cacert.pem), and global Node.js npm packages. - Zero File-Lock / EPERM Failures: Automatically detects and stops running background services (including phpMyAdmin and database daemons) and active project workers that hold file locks on Windows DLLs (like
libcrypto-3-x64.dll). - Resilient Retry & Auto-Restart: Features a 5-attempt retry loop with exponential backoff and Windows CIM process termination, then automatically brings all temporarily stopped services and projects back online immediately after binary replacement.
- PHP 7.4, 8.0, 8.1, 8.2, 8.3, 8.4, 8.5 - Run multiple versions side by side
- Per-project PHP version selection with compatibility validation
- Easy extension management per version with php.ini editor
- Pre-configured for optimal performance
- Node.js 16, 18, 20, 22, 24 - Run pure Node.js applications
- Per-project Node.js version selection
- Automatic proxy through Nginx/Apache for
.testdomains - Run Express, Next.js, Nuxt, or any Node.js framework
- Nginx 1.24, 1.26, 1.28 - High-performance, low memory footprint (recommended)
- Apache 2.4 - Full .htaccess support, mod_rewrite included
- Front-door ownership and automatic proxying between Nginx and Apache
- Automatic virtual host creation
- HTTP & HTTPS support for every project
| Service | Versions | Description |
|---|---|---|
| MySQL | 5.7, 8.0, 8.4 | Powerful relational database |
| MariaDB | 10.6, 10.11, 11.4 | MySQL-compatible, open source |
| Redis | 6.2, 7.2, 7.4 | In-memory cache & session storage |
| PostgreSQL | 14, 15, 16, 17 | Advanced relational database |
| MongoDB | 6.0, 7.0, 8.0 | Document database |
| Memcached | 1.6 | Distributed memory caching |
| MinIO | Latest | S3-compatible object storage |
| Mailpit | Latest | Email testing with SMTP server |
| phpMyAdmin | Latest | Web-based database management |
| Node.js | 16, 18, 20, 22, 24 (LTS) | JavaScript runtime for projects & tooling |
| Python | 3.10, 3.11, 3.12, 3.13 | Runtime for project tooling and workers |
| SQLite | 3 | Embedded database runtime |
| Composer | Latest | PHP dependency manager |
- Multi-engine support - MySQL, MariaDB, PostgreSQL, and MongoDB workflows
- Per-version data isolation - Each version has its own data directory
- Database import/export with
.sql,.gz, PostgreSQL, and MongoDB flows - Progress tracking for import/export operations
- phpMyAdmin integration for web-based management
- Automatic database creation per project
- Automatic SSL certificate generation
- Wildcard certificate support
- One-click certificate trust
.testdomain support (e.g.,myproject.test)
- Share a running project publicly with Cloudflare Tunnel or zrok
- Per-project Share on Internet toggle with optional auto-start tunnel when the project starts
- Works with both Nginx and Apache projects, including mixed front-door proxy setups
- Tunnel proxy rewrites redirects, cookies, and absolute local
.testURLs so public sessions stay on the tunnel hostname - Cloudflare Quick Tunnels use random
*.trycloudflare.comURLs - zrok requires a one-time app-wide enable token in Binary Manager → Tools
- Built for previews and reviews, not for production deployment
- Laravel - Full support with Artisan, Queue Workers, Scheduler
- Symfony - Console commands, Doctrine integration
- WordPress - WP-CLI ready, Multisite support
- Custom PHP - Works with any PHP application
- Node.js - Express, Next.js, Nuxt, Fastify, or any Node.js app
- Download individual components - Only install what you need
- Multi-version management - Keep multiple versions installed side by side
- Safe in-place upgrades - Update packages (PHP, Node.js, Python, MySQL, MariaDB) while preserving custom
php.iniconfigs, custom extensions, and npm packages - Zero-lock process management - Automatically stops conflicting project workers and background services (like phpMyAdmin), terminating lingering file locks to prevent
EPERMerrors on Windows, and auto-restarting them post-update - Import custom binaries - Use your own compiled versions
- Remote definitions - Binary metadata and compatibility rules can be updated without shipping a new app build
- Remote binary definitions - New versions available without app update
- Compatibility rules sync - Updated version compatibility warnings
- One-click update check - Check for new binaries and rules from Settings
- Offline fallback - Built-in defaults when offline
- Version tracking - Only download when updates are available
- Direct command access - Use
php,npm,node,composer,mysql,mysqldump, and related tools directly from any terminal - Automatic version detection - Detects your project and uses the correct PHP/Node.js version
- Works everywhere - VS Code, Windows Terminal, PowerShell, or any terminal emulator
- No prefix needed - Just run
php artisan migrateinstead of complex paths - Prevents version conflicts - No more "wrong PHP version" issues
- Real-time log streaming per project and service
- Color-coded log levels (info, warning, error)
- Log file rotation and cleanup
- Service resource monitoring
- Dual Operating Profiles - Switch between Local Mode (interactive debugging, single worker) and Production Mode (optimized performance, hardened security) per project or globally
- PHP OPcache & JIT Optimization - Automatically enables OPcache (
opcache.enable=1,opcache.jit=1255) and suppresses public error displays (display_errors = Off) - Hardened Web Server Security - Injects HSTS,
X-Frame-Options,X-Content-Type-Options,server_tokens off, and disables directory indexing for Nginx and Apache - Resilient Queue Workers - Multi-process worker management with
--tries=3,--timeout=90,--memory=128,--max-jobs=1000, clean-exit restarts, and exponential backoff crash protection - Native Windows Task Scheduler - Integrates with Windows
schtasks.exeto triggerphp artisan schedule:runevery minute using a silent runner without flashing CMD windows
⚠️ Production Mode Precautions & Intended Use:
- Deployment Scope: Production Mode is designed for internal office/LAN servers, dedicated client Windows PCs, kiosk workstations, or staging environments. It is not a direct replacement for hardened, dedicated Linux cloud infrastructure (e.g., AWS, DigitalOcean) for mission-critical, public-facing web applications.
- Code Caching: To maximize performance,
opcache.validate_timestampsis set to0. Modified script files will not take effect immediately; you must restart the project or reload the web server to flush cached bytecode.- Suppressed Error Output:
display_errorsis turnedOffto prevent sensitive credentials from leaking to visitors. Check the project Logs tab in DevBox Pro to diagnose runtime issues.- Operating System Considerations: For continuous unattended hosting on Windows, disable system sleep/hibernation, configure Windows Update active hours, and ensure adequate machine airflow and power supply backup (UPS).
- Service version selection per project
- Compatibility validation - Warns about incompatible combinations
- Binary validation - Checks required binaries before project start
- php.ini editor - Customize PHP settings per version
- Download the latest release for your platform:
- Windows:
DevBox-Pro-Setup-1.0.8.exe - macOS:
DevBox-Pro-1.0.8.dmg
- Install the application
- Windows installer builds silently install or repair the Microsoft Visual C++ Redistributable when
vcredist/VC_redist.x64.exeis bundled with the release
- Download binaries from the Binary Manager:
- Click "Download All" for the full stack, or
- Select individual components as needed
- Click "+ New Project" on the Dashboard
- Select your project type (Laravel, Symfony, WordPress, Custom PHP, or Node.js)
- Choose project folder and PHP/Node.js version
- Configure services (MySQL, Redis, etc.)
- Set your domain (e.g.,
myproject.test) - Click Create and you're ready!
- Open the project detail page and enable Share on Internet
- Choose Cloudflare Tunnel or zrok as the provider
- Optionally enable Auto-start tunnel if the project should publish automatically on startup
- Start the project, then click Start Sharing
- Use the generated public URL to access the project from outside your local machine
Provider notes: Cloudflare uses disposable random public URLs on
trycloudflare.com. zrok requires a one-time app-wide enable step before any project can use it.
Production note: Tunnel sharing is intended for temporary previews, QA, and stakeholder review. Do not use DevBox Pro as a production hosting platform.
DevBox Pro lets you use php, npm, node, composer, mysql, and mysqldump directly from any terminal with automatic project version detection:
- Go to Settings > CLI Tool in DevBox Pro
- Enable "Terminal commands"
- Restart your terminal or VS Code
Usage examples:
# Navigate to your project folder
cd C:\Projects\my-laravel-app
# Run PHP with project-specific version (auto-detected)
php artisan migrate
php artisan optimize
# Run Composer with correct PHP version
composer install
composer update
# Run Node.js/npm with project version (if enabled)
npm install
npm run dev
npx vite build
# Connect to MySQL/MariaDB using the active database version
mysql -u root
mysql -u root -p mydb < migration.sql
mysqldump -u root mydb > backup.sqlHow it works: When you run
php,mysql, ornpmfrom a project directory, DevBox Pro automatically uses that project's configured version. Outside a project, it uses your default version set in Settings.
- Node.js 24+
- npm
- Git
# Clone the repository
git clone https://github.com/JeffGepiga/DevBoxPro.git
cd DevBoxPro
# Install dependencies
npm install
# Start the Electron app with the Vite renderer dev server
npm run dev
# Build the renderer bundle only
npm run build:renderer
# Build platform packages
npm run build:win
npm run build:mac
npm run build:allThe renderer dev server runs at http://localhost:3000.
DevBox Pro includes unit, integration, and end-to-end coverage.
# Run all tests
npm test
# Run only main process tests
npm run test:main
# Run only renderer process tests
npm run test:renderer
# Run End-to-End (E2E) tests
npm run test:e2eThe test suite covers the main-process managers, the renderer, and Playwright end-to-end scenarios for project creation, binaries, databases, SSL, and settings persistence.
DevBoxPro/
├── src/
│ ├── main/ # Electron main process
│ │ ├── services/
│ │ │ ├── BinaryDownloadManager.js # Thin facade for binary downloads and extraction
│ │ │ ├── CliManager.js # Thin facade for terminal integration
│ │ │ ├── CompatibilityManager.js # Thin facade for compatibility rules and updates
│ │ │ ├── DatabaseManager.js # Thin facade for multi-engine DB operations
│ │ │ ├── GitManager.js # Thin facade for Git clone and SSH workflows
│ │ │ ├── ProjectManager.js # Thin facade for project lifecycle and vhosts
│ │ │ ├── ServiceManager.js # Thin facade for service lifecycle and config generation
│ │ │ ├── SupervisorManager.js # Thin facade for worker and process supervision
│ │ │ ├── binary/ # Binary manager mixins
│ │ │ ├── cli/ # CLI manager mixins
│ │ │ ├── compatibility/ # Compatibility manager mixins
│ │ │ ├── database/ # Database manager mixins
│ │ │ ├── git/ # Git manager mixins
│ │ │ ├── project/ # Project manager mixins
│ │ │ ├── service/ # Service manager mixins
│ │ │ ├── supervisor/ # Supervisor manager mixins
│ │ │ └── ...
│ │ ├── ipc/
│ │ │ └── handlers.js # IPC communication
│ │ ├── utils/
│ │ │ ├── ConfigStore.js # Configuration storage
│ │ │ ├── PortUtils.js # Port probing and process lookup
│ │ │ └── SpawnUtils.js # Safer child-process helpers
│ │ ├── preload.js # Preload script
│ │ └── main.js # Main entry
│ │
│ └── renderer/ # React frontend
│ ├── src/
│ │ ├── components/ # Reusable components
│ │ │ ├── Sidebar.jsx
│ │ │ ├── PhpIniEditor.jsx
│ │ │ ├── XTerminal.jsx
│ │ │ └── ...
│ │ ├── pages/ # Page components
│ │ │ ├── Dashboard.jsx
│ │ │ ├── Projects.jsx
│ │ │ ├── ProjectDetail.jsx
│ │ │ ├── Databases.jsx
│ │ │ ├── Services.jsx
│ │ │ ├── BinaryManager.jsx
│ │ │ ├── Settings.jsx
│ │ │ └── ...
│ │ ├── context/ # React context
│ │ │ └── AppContext.jsx
│ │ └── App.jsx # Root component
│ └── index.html
│
├── resources/ # App resources (icons, configs)
├── config/ # Remote configuration files
│ ├── binaries.json # Binary download definitions
│ ├── compatibility.json # Version compatibility rules
│ └── README.md # Config contribution guide
├── screenshots/ # App screenshots
├── build/ # Build resources
├── electron-builder.config.js # Electron builder config
├── package.json
└── README.MD
| Service | Default Port |
|---|---|
| PHP Projects | 8000+ (auto-assigned) |
| MySQL | 3306 |
| MariaDB | 3310 |
| Redis | 6379 |
| PostgreSQL | 5432 |
| MongoDB | 27017 |
| Memcached | 11211 |
| MinIO API | 9000 |
| MinIO Console | 9001 |
| Mailpit SMTP | 1025 |
| Mailpit Web | 8025 |
| phpMyAdmin | 8080 |
| Nginx HTTP | 80 |
| Nginx HTTPS | 443 |
| Apache HTTP | 8081 when Apache is not the front-door server |
| Apache HTTPS | 8444 when Apache is not the front-door server |
Web server ownership is dynamic. The first active web server can claim ports 80 and 443, while the other is assigned alternate ports and proxied automatically.
Projects can use .env files with these pre-configured variables:
APP_ENV=local
APP_DEBUG=true
APP_URL=http://myproject.test
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=myproject
DB_USERNAME=root
DB_PASSWORD=
CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_MAILER=smtp
MAIL_HOST=127.0.0.1
MAIL_PORT=1025- Electron 40 - Cross-platform desktop framework
- React 19 - UI library
- Vite 7 - Build and dev server
- TailwindCSS 4 - Styling pipeline
- Vitest - Unit and integration testing
- Playwright - End-to-end testing
- electron-builder - Distribution packaging
- Multi-PHP version support (7.4 - 8.5)
- MySQL & MariaDB multi-version support
- Redis multi-version integration
- Nginx & Apache multi-version web servers
- Automatic SSL certificates
- Virtual host management
- Node.js & npm multi-version support
- Pure Node.js project support (Express, Next.js, etc.)
- Composer integration
- Database import/export with compression
- Per-project service version selection
- Binary validation before project start
- php.ini editor
- Real-time log streaming
- Cloud config updates (binaries & compatibility rules)
- PostgreSQL support
- MongoDB support
- Project templates
- Git clone integration with SSH key management
- Supervisor process management (queues, workers, schedulers)
- Bulk project and service stop
- Front-door proxy for Nginx/Apache co-existence
- Docker container support
- Extension marketplace
- Cloud sync settings
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- 📧 Email: jeffreygepiga27@gmail.com
- 🐛 Issues: GitHub Issues
- 💬 Discussions: GitHub Discussions
Made with ❤️ for PHP & Node.js developers