Automate your VPS setup in minutes with a single command.
Simple VPS Provisioner is a command-line tool that transforms a fresh Debian or Ubuntu VPS into a production-ready LAMP environment for Drupal or WordPress.
This tool is designed for fresh VPS installations running the latest versions of:
- Debian (11, 12, or 13 Trixie)
- Ubuntu LTS (20.04, 22.04, or 24.04)
Important: Run svp on a newly provisioned VPS before installing other software. Running on a system with existing web server, database, or PHP configurations may cause conflicts. For best results, start with a clean OS installation.
π Full Documentation
- β Complete LAMP Stack - Nginx, PHP-FPM, MariaDB, optional SSL
- β One Command Setup - From fresh VPS to running site in minutes
- β Multi-CMS - Drupal and WordPress support
- β Multi-Domain - Multiple sites on one server
- β Git Deployment - Clone and deploy from repositories
- β Optional SSL - Let's Encrypt with auto-renewal (opt-in via --le-email)
- β Basic Authentication - Password-protect sites with HTTP basic auth
- β Security First - Firewall, hardening, isolation
- β Idempotent - Safe to run multiple times
curl -fsSL https://raw.githubusercontent.com/willjackson/simple-vps-provisioner/main/install-from-github.sh | sudo bashDrupal:
sudo svp setup example.com --cms drupal --le-email admin@example.comWordPress:
sudo svp setup example.com --cms wordpress --le-email admin@example.comThat's it! Visit https://example.com (HTTPS enabled with --le-email) π
HTTP-only setup (no SSL):
sudo svp setup example.com --cms drupalVisit http://example.com
- OS: Debian 11-13 or Ubuntu 20.04-24.04 LTS
- Access: Root/sudo privileges
sudo svp setup example.com \
--cms drupal \
--git-repo https://github.com/yourorg/yoursite.git \
--le-email admin@example.comsudo svp setup example.com \
--cms drupal \
--extra-domains "staging.example.com,dev.example.com" \
--le-email admin@example.comsudo svp setup example.com \
--cms drupal \
--db /path/to/backup.sql.gz \
--le-email admin@example.comsudo svp php-update example.com --php-version 8.4# Check version
svp --version
# Verify configuration
sudo svp verify
# Update svp
sudo svp update
# Update SSL certificates (check renewal or enable SSL)
sudo svp update-ssl example.com check
# Check basic authentication status
sudo svp auth example.com check
# View help
svpFor each site, svp configures:
| Component | Description |
|---|---|
| Nginx | Web server with optimized config |
| PHP-FPM | Isolated per-domain pools |
| MariaDB | Database with secure credentials |
| SSL/HTTPS | Let's Encrypt certificates (optional, enabled via --le-email) |
| Firewall | UFW configured (SSH, HTTP, HTTPS) |
| Composer | PHP dependency manager |
| Drush/WP-CLI | CMS-specific tools |
Note: SSL is disabled by default. To enable HTTPS, provide --le-email during setup or use svp update-ssl after initial setup.
| Flag | Description | Default |
|---|---|---|
--cms |
drupal or wordpress |
drupal |
--domain |
Primary domain (required) | - |
--php-version |
PHP version | 8.4 |
--le-email |
Let's Encrypt email (enables SSL when provided) | - |
--git-repo |
Git repository URL | - |
--git-branch |
Git branch (uses default if not specified) | - |
--db |
Database file to import | - |
SSL Behavior: SSL is disabled by default. When you provide --le-email, SSL is automatically enabled with Let's Encrypt certificates.
If you initially set up a site without SSL, you can enable it later:
# Enable SSL for an existing site
sudo svp update-ssl example.com --le-email admin@example.com# Check certificate renewal status
sudo svp update-ssl example.com check# Enable SSL during setup (recommended)
sudo svp setup example.com --cms drupal --le-email admin@example.comCertificates are automatically renewed via a cron job.
Add an extra layer of security by requiring username/password authentication to access your site. This is useful for staging environments, development sites, or restricting access to specific content.
# Enable with interactive prompts
sudo svp auth example.com enable
# Or provide credentials via flags
sudo svp auth example.com enable --username admin --password securepass123The auth command automatically installs apache2-utils (htpasswd) if not already present. Changes take effect immediately.
# View current authentication status
sudo svp auth example.com checkThis shows whether authentication is enabled and which username is configured.
To change the username or password, simply enable authentication again with new credentials:
# Replace existing credentials
sudo svp auth example.com enable --username newuser --password newpass456This replaces the existing authentication configuration. Only one username/password pair is supported per domain.
# Remove authentication requirement
sudo svp auth example.com disableThis removes the password protection and makes the site publicly accessible again.
- Only one username/password combination per domain
- Credentials can be provided via
--usernameand--passwordflags or entered interactively - Changes take effect immediately (no server restart required)
- Re-enabling authentication replaces existing credentials
- Works with both HTTP and HTTPS sites
π Full documentation available at: willjackson.github.io/simple-vps-provisioner
- Getting Started Guide
- Complete Documentation
- Examples & Use Cases
- Command-Line Reference
- Troubleshooting
Installs the latest stable release:
curl -fsSL https://raw.githubusercontent.com/willjackson/simple-vps-provisioner/main/install-from-github.sh | sudo bashVERSION="1.0.35" # Check releases for latest
wget https://github.com/willjackson/simple-vps-provisioner/releases/download/v${VERSION}/svp-linux-amd64
chmod +x svp-linux-amd64
sudo mv svp-linux-amd64 /usr/local/bin/svpFor development:
git clone https://github.com/willjackson/simple-vps-provisioner.git
cd simple-vps-provisioner
sudo bash install.sh- π Documentation: willjackson.github.io/simple-vps-provisioner
- π Bug Reports: GitHub Issues
- π¬ Discussions: GitHub Discussions
MIT License - see LICENSE file for details.
sudo svp setup mysite.com --cms drupal --le-email admin@mysite.comsudo svp setup blog.com --cms wordpress --git-repo https://github.com/me/blog.git --le-email admin@blog.comsudo svp setup myapp.com --cms drupal --extra-domains "staging.myapp.com" --le-email dev@myapp.comGet Started β’ Documentation β’ Examples
Made with β€οΈ for the Drupal and WordPress communities