| Method | How it works |
|---|---|
| DigitalOcean | Creates a new droplet via API, then SSHes in to install VPN |
| Vultr | Creates a new instance via API, then SSHes in to install VPN |
| Custom server | SSHes into an existing VPS you provide to install VPN |
Deploy on DigitalOcean
Requires a configured DigitalOcean API token. See DigitalOcean setup.- Go to Admin → Deployments → DigitalOcean
- Fill in the form:
- Region — geographic location for the droplet
- Size — instance size
- Protocol — OpenVPN or WireGuard
- Server Name — display label shown to users
- Country / City — shown in the user-facing server list
- Click Deploy
Deploy on Vultr
Requires a configured Vultr API key. See Vultr setup.- Go to Admin → Deployments → Vultr
- Fill in the form with region, plan, protocol, and display info
- Click Deploy
Deploy on a custom server
Use this when you already have a VPS — from any provider (AWS, Hetzner, OVH, etc.) or a dedicated server. StartMyVPN connects via SSH and installs the VPN software automatically, exactly the same as for DigitalOcean and Vultr deployments.Requirements for the custom server
- OS: Ubuntu 20.04+ or Debian 10+
- Access: Root or sudo-capable SSH user
- SSH port: Port 22 open (or specify a custom port)
- Clean install: Ideally a fresh VPS with no conflicting VPN software
Steps
- Go to Admin → Servers → Add Server
- Complete the 3-step wizard:
| Field | Description |
|---|---|
| Server Name | Display label (e.g. “Frankfurt #1”) |
| City | Start typing to search — auto-complete powered by Google Places if configured |
| Country | Auto-filled when you select a city |
| Hosting Provider | Optional label (e.g. “Hetzner”, “AWS”) |
| Field | Description |
|---|---|
| IP Address | Public IPv4 address of the server |
| SSH Port | Default: 22 |
| SSH Username | Must be root or a user with sudo privileges |
| SSH Password | Stored encrypted — never visible after saving |
| VPN Protocol | OpenVPN or WireGuard |
- Connect to the server via SSH using the credentials provided
- Automatically install and configure the selected VPN protocol
- Register the server and mark it active
SSH credential security
SSH passwords are encrypted at rest using Laravel’sCrypt facade (AES-256-CBC). They are only decrypted in memory during installation and are never logged or displayed after the server is saved.
Post-deployment steps
After any server is deployed (regardless of method):- Go to Admin → Server Groups and add the new server to a group
- Assign the server group to one or more Plans (Admin → Plans → Edit Plan)
- Users subscribed to those plans will see the server in their dashboard immediately
Monitoring deployment progress
Deployment jobs log progress tostorage/logs/laravel.log. Check queue status:
Google Places API (optional)
The city autocomplete field in the custom server wizard uses Google Places. To enable it:- Obtain a Google Maps API key with the Places API enabled
- Enter it in Admin → Settings → API → Google Maps API Key