1. Upload the application files
Download the latest StartMyVPN release .zip from your customer portal and upload it to your server. Then extract it:
# Upload the zip via SFTP or SCP, then on the server:
unzip startmyvpn-latest.zip -d /var/www/startmyvpn
cd /var/www/startmyvpn
2. Install PHP dependencies
composer install --no-dev --optimize-autoloader
3. Install and build front-end assets
npm install
npm run build
4. Create the environment file
cp .env.example .env
php artisan key:generate
Open .env and set your database credentials:
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=startmyvpn
DB_USERNAME=your_db_user
DB_PASSWORD=your_db_password
Then create the database and run migrations:
mysql -u root -p -e "CREATE DATABASE startmyvpn CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
php artisan migrate --force
6. Seed initial data
This creates the default admin account and initial settings.
7. Publish Livewire assets
php artisan livewire:publish --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
chown -R www-data:www-data /var/www/startmyvpn/storage /var/www/startmyvpn/bootstrap/cache
chmod -R 775 /var/www/startmyvpn/storage /var/www/startmyvpn/bootstrap/cache
9. Create the storage symlink
10. Optimize for production
php artisan config:cache
php artisan route:cache
php artisan view:cache
11. Access the app
Navigate to your domain in a browser. The first-run setup wizard at /setup will guide you through completing initial configuration.
Default admin credentials are set during 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 from your customer portal and replace the application files, then run:
composer install --no-dev --optimize-autoloader
npm install && npm run build
php artisan migrate --force
php artisan livewire:publish --assets
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan queue:restart