Skip to main content
Before you start, make sure PHP 8.4 and the IonCube Loader v15+ are installed and verified with php -v. See Requirements for details. Skipping this will cause the application to fail during composer install with cannot be decoded by this version of the ionCube Loader.

1. Upload the application files

Download the latest StartMyVPN release .zip from your customer portal and upload it to your server, then extract it:

2. Install PHP dependencies

3. Install and build front-end assets

Assets are compiled on each install so your branding, theme colors, and any per-client customizations are baked into the bundle. Run both commands from the release directory:
Use npm ci (not npm install) to install the exact versions from package-lock.json. This guarantees the build matches what was tested against this release.
After a successful build you’ll see the compiled files under public/build/ and a manifest.json that Laravel’s @vite directive uses to reference them.

4. Create the environment file

5. Configure the environment

Open .env and set the core values:
APP_URL must match the exact scheme (http:// vs https://) and host that visitors use in the browser. A mismatch causes the @vite helper to generate asset URLs on the wrong scheme, which shows up as TLS errors or blank-styled pages.
Then create the database and run migrations:

6. Seed initial data

This creates the default admin account and initial settings.

7. Publish Livewire assets

This step is required. Skipping it will cause blank pages and broken admin panel functionality because Livewire’s JavaScript assets will not be served.

8. Set storage permissions

10. Optimize for production

11. Access the app

Point your web server at /var/www/startmyvpn/public (see Web Server for Nginx/Apache configs), then open your domain in a browser. The first-run setup wizard at /setup walks you through the rest of the configuration.
Default admin credentials are created by the seeder. Change your password immediately after first login from Admin → Settings → Profile.

Update procedure

When a new version is released, download the updated .zip, replace the application files (keeping your .env and storage/ directory), then run:
Always back up your database before running php artisan migrate --force on a new release.