Skip to main content

Server requirements

RequirementMinimumRecommended
PHP8.28.3+
MySQL8.08.0+
Web serverNginx or ApacheNginx
RAM1 GB2 GB+
Storage10 GB20 GB+
OSUbuntu 22.04Ubuntu 24.04

PHP extensions

The following PHP extensions must be enabled:
  • BCMath
  • Ctype
  • cURL
  • DOM
  • Fileinfo
  • JSON
  • Mbstring
  • OpenSSL
  • PDO + pdo_mysql
  • Tokenizer
  • XML
  • Zip

IonCube Loader (required)

StartMyVPN ships with core business logic encoded using IonCube. You must install the IonCube Loader before the application will run.

1. Download the loader

Download the latest IonCube Loader from ioncube.com/loaders.php. Select the package matching your OS and PHP version.
# Example for Linux x86-64
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz
tar -xzf ioncube_loaders_lin_x86-64.tar.gz

2. Find your PHP extension directory

php -i | grep extension_dir
# Example output: extension_dir => /usr/lib/php/20230831

3. Copy the loader

Copy the loader file matching your exact PHP version:
# Replace 8.3 with your PHP version
sudo cp ioncube/ioncube_loader_lin_8.3.so /usr/lib/php/20230831/

4. Add to php.ini

Find your active php.ini:
php --ini | grep "Loaded Configuration"
Add the following line at the very top of php.ini, before any extension= lines:
zend_extension = /usr/lib/php/20230831/ioncube_loader_lin_8.3.so
The IonCube zend_extension directive must appear before any other extension= lines in php.ini. Placing it after other extensions may cause PHP to fail to start.

5. Restart PHP-FPM

sudo systemctl restart php8.3-fpm
# or for Apache:
sudo systemctl restart apache2

6. Verify the loader is active

php -v
# Should show: with the ionCube PHP Loader v14.x, Copyright (c) 2002-2025...
Or check via a phpinfo page:
php -r "echo phpinfo();" | grep -i ioncube

Supported PHP versions

IonCube Loader is available for PHP 8.2 and 8.3. Ensure the loader version matches your installed PHP version exactly.
PHP VersionLoader filename
8.2ioncube_loader_lin_8.2.so
8.3ioncube_loader_lin_8.3.so

Required software

  • Composer 2.x — PHP dependency manager
  • Node.js 20+ and npm — for compiling front-end assets
  • Git — for cloning the repository

Queue & scheduler

StartMyVPN relies on Laravel queues for background jobs (WireGuard config generation, server provisioning, etc.) and the Laravel scheduler for periodic tasks. You need either:
  • Supervisor to keep queue workers running (recommended for production)
  • OR a cron job that runs the scheduler every minute (minimum requirement)
See Queue Workers and Scheduler for setup instructions.

Cloud provider accounts

To deploy VPN servers from within the admin dashboard, you need at least one of:
  • A DigitalOcean account with an API token (Personal Access Token with write access)
  • A Vultr account with an API key
Servers can also be added manually (any VPS with SSH access) without a cloud provider integration.

Payment gateway accounts

At least one payment gateway is required to accept payments:
  • Stripe — credit/debit card payments
  • PayPal — PayPal checkout and recurring subscriptions
  • CryptAPI — cryptocurrency payments (Bitcoin, Ethereum, etc.)