{"id":35324697,"url":"https://github.com/willjackson/simple-vps-provisioner","last_synced_at":"2026-04-13T04:03:32.586Z","repository":{"id":323788852,"uuid":"1094553467","full_name":"willjackson/simple-vps-provisioner","owner":"willjackson","description":"Production-ready Linux VPS provisioning tool for LAMP environments. Automates Nginx, PHP-FPM, MariaDB setup with security hardening, SSL certificates, per-domain isolation, and Drupal or WordPress deployment. Written in Go.","archived":false,"fork":false,"pushed_at":"2025-11-22T03:42:12.000Z","size":298,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-11-22T05:22:52.800Z","etag":null,"topics":["debian","drupal","hosting","letsencrypt","mariadb","nginx","production","ubuntu","vps","vps-setup","wordpress"],"latest_commit_sha":null,"homepage":"https://simple-vps-provisioner.will.gg","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willjackson.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-11T21:34:41.000Z","updated_at":"2025-11-22T03:41:11.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/willjackson/simple-vps-provisioner","commit_stats":null,"previous_names":["willjackson/simple-vps-provisioner"],"tags_count":36,"template":false,"template_full_name":null,"purl":"pkg:github/willjackson/simple-vps-provisioner","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willjackson%2Fsimple-vps-provisioner","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willjackson%2Fsimple-vps-provisioner/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willjackson%2Fsimple-vps-provisioner/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willjackson%2Fsimple-vps-provisioner/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willjackson","download_url":"https://codeload.github.com/willjackson/simple-vps-provisioner/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willjackson%2Fsimple-vps-provisioner/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31739050,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T03:27:07.512Z","status":"ssl_error","status_checked_at":"2026-04-13T03:26:53.610Z","response_time":93,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["debian","drupal","hosting","letsencrypt","mariadb","nginx","production","ubuntu","vps","vps-setup","wordpress"],"created_at":"2025-12-31T01:12:34.323Z","updated_at":"2026-04-13T04:03:32.581Z","avatar_url":"https://github.com/willjackson.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple VPS Provisioner (svp)\n\n**Automate your VPS setup in minutes with a single command.**\n\nSimple 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.\n\n## ⚠️ Intended Use\n\nThis tool is designed for **fresh VPS installations** running the latest versions of:\n- **Debian** (11, 12, or 13 Trixie)\n- **Ubuntu LTS** (20.04, 22.04, or 24.04)\n\n**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.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![Go Version](https://img.shields.io/badge/Go-1.21+-00ADD8?logo=go)](https://go.dev/)\n\n**📚 [Full Documentation](https://willjackson.github.io/simple-vps-provisioner/)**\n\n---\n\n## Features\n\n- ✅ **Complete LAMP Stack** - Nginx, PHP-FPM, MariaDB, optional SSL\n- ✅ **One Command Setup** - From fresh VPS to running site in minutes\n- ✅ **Multi-CMS** - Drupal and WordPress support\n- ✅ **Multi-Domain** - Multiple sites on one server\n- ✅ **Git Deployment** - Clone and deploy from repositories\n- ✅ **Optional SSL** - Let's Encrypt with auto-renewal (opt-in via --le-email)\n- ✅ **Basic Authentication** - Password-protect sites with HTTP basic auth\n- ✅ **Security First** - Firewall, hardening, isolation\n- ✅ **Idempotent** - Safe to run multiple times\n\n---\n\n## Quick Start\n\n### 1. Install svp\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/willjackson/simple-vps-provisioner/main/install-from-github.sh | sudo bash\n```\n\n### 2. Provision Your Site\n\n**Drupal:**\n```bash\nsudo svp setup example.com --cms drupal --le-email admin@example.com\n```\n\n**WordPress:**\n```bash\nsudo svp setup example.com --cms wordpress --le-email admin@example.com\n```\n\nThat's it! Visit `https://example.com` (HTTPS enabled with --le-email) 🎉\n\n**HTTP-only setup (no SSL):**\n```bash\nsudo svp setup example.com --cms drupal\n```\nVisit `http://example.com`\n\n---\n\n## System Requirements\n\n- **OS**: Debian 11-13 or Ubuntu 20.04-24.04 LTS\n- **Access**: Root/sudo privileges\n\n---\n\n## Common Use Cases\n\n### Deploy from Git Repository\n\n```bash\nsudo svp setup example.com \\\n  --cms drupal \\\n  --git-repo https://github.com/yourorg/yoursite.git \\\n  --le-email admin@example.com\n```\n\n### Multiple Environments\n\n```bash\nsudo svp setup example.com \\\n  --cms drupal \\\n  --extra-domains \"staging.example.com,dev.example.com\" \\\n  --le-email admin@example.com\n```\n\n### Import Existing Database\n\n```bash\nsudo svp setup example.com \\\n  --cms drupal \\\n  --db /path/to/backup.sql.gz \\\n  --le-email admin@example.com\n```\n\n### Update PHP Version\n\n```bash\nsudo svp php-update example.com --php-version 8.4\n```\n\n---\n\n## Essential Commands\n\n```bash\n# Check version\nsvp --version\n\n# Verify configuration\nsudo svp verify\n\n# Update svp\nsudo svp update\n\n# Update SSL certificates (check renewal or enable SSL)\nsudo svp update-ssl example.com check\n\n# Check basic authentication status\nsudo svp auth example.com check\n\n# View help\nsvp\n```\n\n---\n\n## What Gets Installed\n\nFor each site, svp configures:\n\n| Component | Description |\n|-----------|-------------|\n| **Nginx** | Web server with optimized config |\n| **PHP-FPM** | Isolated per-domain pools |\n| **MariaDB** | Database with secure credentials |\n| **SSL/HTTPS** | Let's Encrypt certificates (optional, enabled via --le-email) |\n| **Firewall** | UFW configured (SSH, HTTP, HTTPS) |\n| **Composer** | PHP dependency manager |\n| **Drush/WP-CLI** | CMS-specific tools |\n\n**Note:** SSL is disabled by default. To enable HTTPS, provide `--le-email` during setup or use `svp update-ssl` after initial setup.\n\n---\n\n## Key Configuration Flags\n\n| Flag | Description | Default |\n|------|-------------|---------|\n| `--cms` | `drupal` or `wordpress` | `drupal` |\n| `--domain` | Primary domain (required) | - |\n| `--php-version` | PHP version | `8.4` |\n| `--le-email` | Let's Encrypt email (enables SSL when provided) | - |\n| `--git-repo` | Git repository URL | - |\n| `--git-branch` | Git branch (uses default if not specified) | - |\n| `--db` | Database file to import | - |\n\n**SSL Behavior:** SSL is disabled by default. When you provide `--le-email`, SSL is automatically enabled with Let's Encrypt certificates.\n\n[View all flags →](https://willjackson.github.io/simple-vps-provisioner/documentation/command-line)\n\n---\n\n## SSL Management\n\n### Enable SSL After Initial Setup\n\nIf you initially set up a site without SSL, you can enable it later:\n\n```bash\n# Enable SSL for an existing site\nsudo svp update-ssl example.com --le-email admin@example.com\n```\n\n### Check SSL Certificate Status\n\n```bash\n# Check certificate renewal status\nsudo svp update-ssl example.com check\n```\n\n### SSL During Initial Setup\n\n```bash\n# Enable SSL during setup (recommended)\nsudo svp setup example.com --cms drupal --le-email admin@example.com\n```\n\nCertificates are automatically renewed via a cron job.\n\n---\n\n## Basic Authentication\n\n### Password-Protect Your Site\n\nAdd 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.\n\n### Enable Authentication\n\n```bash\n# Enable with interactive prompts\nsudo svp auth example.com enable\n\n# Or provide credentials via flags\nsudo svp auth example.com enable --username admin --password securepass123\n```\n\nThe `auth` command automatically installs `apache2-utils` (htpasswd) if not already present. Changes take effect immediately.\n\n### Check Authentication Status\n\n```bash\n# View current authentication status\nsudo svp auth example.com check\n```\n\nThis shows whether authentication is enabled and which username is configured.\n\n### Update Credentials\n\nTo change the username or password, simply enable authentication again with new credentials:\n\n```bash\n# Replace existing credentials\nsudo svp auth example.com enable --username newuser --password newpass456\n```\n\nThis replaces the existing authentication configuration. Only one username/password pair is supported per domain.\n\n### Disable Authentication\n\n```bash\n# Remove authentication requirement\nsudo svp auth example.com disable\n```\n\nThis removes the password protection and makes the site publicly accessible again.\n\n### Important Notes\n\n- Only one username/password combination per domain\n- Credentials can be provided via `--username` and `--password` flags or entered interactively\n- Changes take effect immediately (no server restart required)\n- Re-enabling authentication replaces existing credentials\n- Works with both HTTP and HTTPS sites\n\n---\n\n## Documentation\n\n📖 **Full documentation available at: [willjackson.github.io/simple-vps-provisioner](https://willjackson.github.io/simple-vps-provisioner/)**\n\n### Quick Links\n\n- [Getting Started Guide](https://willjackson.github.io/simple-vps-provisioner/getting-started)\n- [Complete Documentation](https://willjackson.github.io/simple-vps-provisioner/documentation)\n- [Examples \u0026 Use Cases](https://willjackson.github.io/simple-vps-provisioner/examples)\n- [Command-Line Reference](https://willjackson.github.io/simple-vps-provisioner/documentation/command-line)\n- [Troubleshooting](https://willjackson.github.io/simple-vps-provisioner/documentation/troubleshooting)\n\n---\n\n## Installation Methods\n\n### Quick Install (Recommended)\n\nInstalls the latest stable release:\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/willjackson/simple-vps-provisioner/main/install-from-github.sh | sudo bash\n```\n\n### Manual Download\n\n```bash\nVERSION=\"1.0.35\"  # Check releases for latest\nwget https://github.com/willjackson/simple-vps-provisioner/releases/download/v${VERSION}/svp-linux-amd64\nchmod +x svp-linux-amd64\nsudo mv svp-linux-amd64 /usr/local/bin/svp\n```\n\n### Build from Source\n\nFor development:\n\n```bash\ngit clone https://github.com/willjackson/simple-vps-provisioner.git\ncd simple-vps-provisioner\nsudo bash install.sh\n```\n\n[More installation options →](https://willjackson.github.io/simple-vps-provisioner/getting-started)\n\n---\n\n## Support \u0026 Contributing\n\n- **📖 Documentation**: [willjackson.github.io/simple-vps-provisioner](https://willjackson.github.io/simple-vps-provisioner/)\n- **🐛 Bug Reports**: [GitHub Issues](https://github.com/willjackson/simple-vps-provisioner/issues)\n- **💬 Discussions**: [GitHub Discussions](https://github.com/willjackson/simple-vps-provisioner/discussions)\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) file for details.\n\n---\n\n## Quick Examples\n\n### Fresh Drupal Site\n```bash\nsudo svp setup mysite.com --cms drupal --le-email admin@mysite.com\n```\n\n### WordPress from Git\n```bash\nsudo svp setup blog.com --cms wordpress --git-repo https://github.com/me/blog.git --le-email admin@blog.com\n```\n\n### Staging + Production\n```bash\nsudo svp setup myapp.com --cms drupal --extra-domains \"staging.myapp.com\" --le-email dev@myapp.com\n```\n\n[View more examples →](https://willjackson.github.io/simple-vps-provisioner/examples)\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**[Get Started](https://willjackson.github.io/simple-vps-provisioner/getting-started) • [Documentation](https://willjackson.github.io/simple-vps-provisioner/documentation) • [Examples](https://willjackson.github.io/simple-vps-provisioner/examples)**\n\nMade with ❤️ for the Drupal and WordPress communities\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilljackson%2Fsimple-vps-provisioner","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwilljackson%2Fsimple-vps-provisioner","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwilljackson%2Fsimple-vps-provisioner/lists"}