Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.startmyvpn.com/llms.txt

Use this file to discover all available pages before exploring further.

Server requirements

RequirementMinimumRecommended
PHP8.48.4
MySQL8.08.0+
Web serverNginx or ApacheNginx
RAM1 GB2 GB+
Storage10 GB20 GB+
OSUbuntu 22.04Ubuntu 24.04
StartMyVPN is built against PHP 8.4. Older PHP versions (8.2, 8.3) are not supported — the application will not load.

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 v15 or newer before the application will run. Earlier loader versions (v14 and below) cannot decode PHP 8.4 files and will fail with cannot be decoded by this version of the ionCube Loader.

1. Download the loader

Download the latest IonCube Loader from ioncube.com/loaders.php. Select the package matching your OS and architecture.
# 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

# Linux ARM64 (aarch64)
wget https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_aarch64.tar.gz
tar -xzf ioncube_loaders_lin_aarch64.tar.gz

2. Find your PHP extension directory

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

3. Copy the loader

sudo cp ioncube/ioncube_loader_lin_8.4.so /usr/lib/php/20240924/

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 other extension= or zend_extension= lines:
zend_extension = /usr/lib/php/20240924/ioncube_loader_lin_8.4.so
The IonCube zend_extension directive must appear before any other extension directives in php.ini. Placing it after other extensions (especially OPcache) may cause PHP to fail to start.

5. Restart PHP-FPM

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

6. Verify the loader is active

php -v
# Should show:
#   with the ionCube PHP Loader v15.x.x, Copyright (c) 2002-2026, by ionCube Ltd.
Or confirm via module list:
php -m | grep -i ioncube
# Should output: ionCube Loader
If php -v still shows no ionCube line, the zend_extension path is wrong or the loader file is the wrong architecture for your PHP build.

Supported PHP version

PHP VersionLoader filename
8.4ioncube_loader_lin_8.4.so

Required software

  • Composer 2.x — PHP dependency manager
  • Node.js 20+ and npm — front-end assets are compiled on each install so your branding, theme, and per-client customizations are baked into the bundle
  • unzip — to extract the release archive

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.)