VPS for Developers: Setting Up a Professional Development Environment

Git + Docker + CI/CD + staging environment. We explain how to turn a VPS into a productive development environment — step by step.
Why VPS and Not Shared Hosting or PaaS?
As a developer, you need an environment with full control: install any library, run any service, configure any setting. Shared hosting restricts you to cPanel and fixed configurations. PaaS platforms like Heroku or Railway abstract the details but at higher cost and lower flexibility. A VPS gives you a full Linux server with root access — you decide everything.
Setting Up Your Development Environment in 15 Minutes
Step 1: Choose the Right Plan
| Project Type | Recommended Plan | Annual Price |
|---|---|---|
| Simple API / personal project | Base (1 vCPU / 2GB) | competitive pricing — pricing and plans |
| Full web application | Growth (2 vCPU / 4GB) | competitive pricing — pricing and plans |
| Multiple projects + Docker | Business (4 vCPU / 8GB) | competitive pricing — pricing and plans |
| AI / ML / big data | Enterprise (8 vCPU / 16GB) | competitive pricing — pricing and plans |
At CLOUD, activation takes 60 seconds. Choose your OS (Ubuntu 22.04/24.04 most common) and get your IP + root password immediately.
Step 2: Basic Security
First 5 minutes after activation:
- Update the system — apt update && apt upgrade
- Create a regular user with sudo privileges
- Copy your SSH key to the new user
- Disable root SSH login and disable password authentication
- Enable UFW — allow only ports 22, 80, and 443
Step 3: Install Essential Tools
Tools every developer needs:
- Git — code management
- curl / wget — file downloads
- htop — resource monitoring
- tmux / screen — multiple SSH sessions
- unzip / tar — archive extraction
Language-Specific Setup
Node.js
- Install nvm (Node Version Manager) — allows running multiple Node versions
- Install the current LTS version
- Use PM2 to run applications in the background with automatic restart
Python
- Do not use the system Python — install pyenv
- Create a virtual environment (venv) for each project
- Use gunicorn or uvicorn as the application server
PHP (Laravel)
- Install PHP 8.3 with required extensions: mbstring, xml, curl, mysql, zip, bcmath
- Install Composer
- Use Nginx + PHP-FPM (faster than Apache + mod_php)
Go / Rust
- Install from the official source (do not rely on repository packages — usually outdated)
- Compile the application and run it as a systemd service
Docker: A Unified Environment for Everything
Docker solves the "works on my machine" problem permanently. On a KVM-based VPS (like CLOUD), Docker runs fully without restrictions.
Docker Essentials on VPS
- Docker for running individual containers
- Docker Compose for running multiple services together (app + database + Redis)
- Nginx Proxy Manager or Traefik as reverse proxy for multiple applications on the same server
Example: Complete Application Stack
A typical web application needs:
| Service | Function | Approximate RAM |
|---|---|---|
| Nginx | Reverse proxy + SSL | 50MB |
| Application (Node/PHP/Python) | Business logic | 200-500MB |
| PostgreSQL / MySQL | Database | 500MB-2GB |
| Redis | Cache + sessions | 100MB |
| Total | ~1-3GB |
This means the Growth plan (4GB) suffices for one complete application, and the Business plan (8GB) accommodates 2-3 applications.
CI/CD: Automated Deployment
Using GitHub Actions
- Connect your GitHub repository to the server via SSH key
- Create a workflow triggered on every push to the main branch
- Steps: pull new code, install dependencies, build application, restart service
Using a Simple Webhook
If you do not need full CI/CD:
- Create a simple endpoint on the server that receives webhooks from GitHub
- On notification: git pull, then rebuild and restart
Advanced Deployment Tools
| Tool | Best For |
|---|---|
| Deployer (PHP) | Laravel projects — zero-downtime deployment |
| Capistrano | Ruby/Rails projects |
| Kamal (Docker) | Any Docker application |
| Coolify | Open-source Heroku alternative (self-hosted on VPS) |
Databases
Choosing the Right One
| Database | Best For |
|---|---|
| PostgreSQL | Complex applications, geospatial data, JSON |
| MySQL/MariaDB | Traditional web applications, your website |
| SQLite | Small projects, lightweight APIs |
| MongoDB | Unstructured data, rapid prototyping |
| Redis | Caching, sessions, queues |
Database Security Tips
- Do not allow external connections — localhost only
- Change the default port
- Create a dedicated user for each application with limited privileges
- Enable automatic backups
Free SSL/HTTPS
Let's Encrypt provides free SSL certificates. Use Certbot to obtain and automatically renew your certificate. Steps:
- Install Certbot
- Point your DNS to the server IP address
- Run Certbot with Nginx
- Automatic renewal every 90 days via cron job
Monitoring for Developers
| Tool | Free | Function |
|---|---|---|
| Netdata | Yes | Comprehensive real-time monitoring dashboard |
| UptimeRobot | Yes (50 sites) | External monitoring + alerts |
| Sentry | Yes (limited) | Application error tracking |
| Grafana + Prometheus | Yes | Custom monitoring dashboards |
Real-World Tips
- Always use Git — even if you are working solo. Track every change.
- Never edit code directly on the server — edit locally, push to Git, deploy.
- Enable backups from day one — disasters do not wait.
- Document every configuration — create a README or script that rebuilds the environment from scratch.
- Use .env for sensitive variables — never put passwords in code.
Start Now
Sign up at CLOUD (cloud.net.sa), choose the Base plan at competitive pricing — pricing and plans (under 10 SAR/day), and your server is ready in 60 seconds. Full KVM, root access, SSD storage, and very low latency from Riyadh. If you need help setting up your environment, the CLOUD team provides free developer guidance meetings.
Get Started
Ready to build your project? Configure your cloud server with the specs your app needs, or view plans and pricing.
