- Django
- Gunicorn
- NGINX
- PostgreSQL
Django VPS HostingGunicorn, NGINX and PostgreSQL, ready for your code
Skip the server plumbing. We install Python, Gunicorn as a systemd service, NGINX with free SSL and PostgreSQL on a hardened KVM VPS. You push your Django project and go live.
- KVM virtualisation
- NVMe storage
- Root SSH access
- Free one-time setup
- 99.9% uptime SLA
$systemctl list-units --type=service --state=active
- nginxHTTPS, static and media files
- gunicornDjango WSGI workers
- postgresqldatabase server
- ufwfirewall: 22, 80, 443
- fail2banSSH brute-force guard
- unattended-upgradessecurity updates
Installed and secured before handover.
Why Run Django on a VPS
Shared Python hosting limits the processes, packages and background jobs a real Django project needs. A VPS removes those limits.
Your own Python environment
A virtual environment with the exact package versions your project pins.
A proper production stack
Gunicorn behind NGINX, as Django and Gunicorn recommend, instead of the development server.
Background work
Celery workers, scheduled jobs and management commands run on the same server.
Predictable cost
One flat server cost for the app, the database and the cache.
How a Django Server Is Set Up
NGINX at the edge, Gunicorn running your project and PostgreSQL behind it.
-
Web server
NGINX
HTTPS, redirects to HTTPS, static and media files, and buffering for slow clients.
-
Application server
Gunicorn
Runs your Django project's WSGI application as a systemd service.
-
Application
Your Django project
Deployed from Git into a virtual environment, with its own settings for production.
-
Database
PostgreSQL
A database and user for your project, reachable only from the server.
-
Cache and tasks
Redis (optional)
Caching or a Celery broker, on request.
Engineer's notes
- Gunicorn's documentation strongly recommends running it behind a proxy server such as NGINX.
- Set DEBUG to False and fill ALLOWED_HOSTS; Django does not work with DEBUG off and an empty ALLOWED_HOSTS.
- Run `python manage.py check --deploy` against your production settings before going live.
- Collect static files into STATIC_ROOT with `collectstatic` and let NGINX serve them.
- 443HTTPS, NGINX
- 80HTTP, redirects to HTTPS
- 22SSH, you only
- 8000Gunicorn, localhost only
What You Can Run
A Django website or web app
Server-rendered pages with the admin and the ORM.
A REST API
Django REST framework behind NGINX.
A SaaS backend
Accounts, billing logic and background jobs.
Internal tools
Dashboards and admin tools for a team.
Celery workers and schedules
Emails, reports and imports run off the web path.
A staging copy
A second project on the same server for testing.
Which Plan for Your Django Project
Gunicorn workers, the database and any Celery workers share the server's RAM.
VPS-1
2 vCores and 4 GB RAM for Gunicorn and PostgreSQL.
A starting point, not a limit: every plan upgrades in place, keeping your data, IP address and configuration.
Deploying Your Django Project
A typical first deployment, as your own user. Replace the names with yours.
-
Create the environment and install packages
Inside your project folder.
python3 -m venv .venv.venv/bin/pip install -r requirements.txt gunicorn -
Check the production settings
Run Django's deployment check.
.venv/bin/python manage.py check --deploy -
Prepare the database and static files
Migrate and collect static files into STATIC_ROOT.
.venv/bin/python manage.py migrate.venv/bin/python manage.py collectstatic --noinput -
Try Gunicorn by hand
Replace myproject with your project package.
.venv/bin/gunicorn myproject.wsgi --bind 127.0.0.1:8000 -
Run it as a service
Use a systemd unit that runs the same Gunicorn command, then reload.
sudo systemctl enable --now myprojectsudo systemctl status myproject
Example commands: adjust names, paths and versions to your project. Deploying and maintaining your application is yours to do, or ask us for a quote.
Django commands you will use every week
Copy, paste, adjust the names. Each one is safe to run as your own user on the server.
Restart the app
sudo systemctl restart myproject
Follow the log
sudo journalctl -u myproject -f
Apply migrations
.venv/bin/python manage.py migrate
Create an admin user
.venv/bin/python manage.py createsuperuser
Check settings for production
.venv/bin/python manage.py check --deploy
Reload NGINX safely
sudo nginx -t && sudo systemctl reload nginx
Shared Python Hosting or Django on a VPS?
Shared hosting is cheaper to start. A VPS gives you the control a Django project grows into.
Shared Python hosting
- Python and packagesProvider's version and limits
- Application serverOften a fixed handler
- DatabaseShared or limited
- Background jobsUsually not possible
- Server administrationHandled by the provider
Django VPS
- Python and packagesYour version and your packages
- Application serverGunicorn as a service you control
- DatabaseYour own PostgreSQL
- Background jobsCelery and scheduled jobs
- Server administrationYours, after our free setup
Your Django stack
Free one-time setup before you get access. Here is what happens, and what you receive.
Pick a plan and a location
Resources that fit your workload, in the datacentre closest to your users.
Tell us your Django setup
Versions, database and domain: at order or right after.
We install and secure it
Server hardened, the stack installed and tested, HTTPS on your domain.
You get root
SSH to a working server, ready for your code and data.
Installed for you
- Python 3 with venv and pip, or the version you specify
- Gunicorn as a systemd service for your project
- NGINX reverse proxy serving static files, with HTTPS on your domain
- PostgreSQL with a database and user for your project
- Redis for caching or as a Celery broker, on request
- Your Django code is deployed by you; settings and secrets stay yours
Secured before handover
- Non-root sudo user created for daily work
- SSH key login, password login for root disabled
- Firewall (UFW) open only for the ports you use
- Fail2ban blocking repeated login attempts
- Automatic security updates enabled
- Free Let's Encrypt SSL on your domain
- Timezone, swap and hostname configured
Not included (we say so up front)
- Ongoing server administration
- Application maintenance and updates
- Debugging your code
- Migrating existing sites or data
Security and Performance for Django
Security
- Keep SECRET_KEY out of the repository; read it from the environment.
- Set SESSION_COOKIE_SECURE and CSRF_COOKIE_SECURE to True once HTTPS works.
- Allow database connections only from the server itself.
- Keep Django and your packages updated; security releases matter.
Performance
- Size Gunicorn workers to your cores and RAM, and test under load.
- Set CONN_MAX_AGE for persistent database connections.
- Cache expensive pages and queries with Redis.
- Serve static and media files from NGINX, not from Django.
Built from the official documentation
VPS Plans for Django
VPS-1 runs a small Django site with PostgreSQL. Busier apps, Celery workers or several projects do better on VPS-2 or above.
VPS-1
Small websites, APIs, bots and development servers.
- 2 vCores
- 4 GB RAM
- 40 GB NVMe
- 500 Mbps
- Full root and SSH access
- Free initial stack installation
- Server hardening and firewall setup
- Daily backup of the previous 24 hours
- Unlimited traffic *
- Anti-DDoS protection
- Dedicated IPv4 and IPv6
- KVM virtualisation
VPS-2
Production apps, WordPress and online stores.
- 4 vCores
- 8 GB RAM
- 75 GB NVMe
- 1 Gbps
- Full root and SSH access
- Free initial stack installation
- Server hardening and firewall setup
- Daily backup of the previous 24 hours
- Unlimited traffic *
- Anti-DDoS protection
- Dedicated IPv4 and IPv6
- KVM virtualisation
VPS-3
Busy stores, SaaS products and several projects.
- 6 vCores
- 12 GB RAM
- 100 GB NVMe
- 2 Gbps
- Full root and SSH access
- Free initial stack installation
- Server hardening and firewall setup
- Daily backup of the previous 24 hours
- Unlimited traffic *
- Anti-DDoS protection
- Dedicated IPv4 and IPv6
- KVM virtualisation
VPS-4
High-traffic apps, large databases and agencies.
- 8 vCores
- 24 GB RAM
- 200 GB NVMe
- 3 Gbps
- Full root and SSH access
- Free initial stack installation
- Server hardening and firewall setup
- Daily backup of the previous 24 hours
- Unlimited traffic *
- Anti-DDoS protection
- Dedicated IPv4 and IPv6
- KVM virtualisation
* Unlimited traffic in Europe and North America. In Mumbai, Singapore and Sydney a monthly allowance applies (VPS-1 500 GB, VPS-2/VPS-3 1 TB, VPS-4 3 TB), then speed is limited to 10 Mbps until the next month.
Prices exclude 18% GST, which is added to invoices for customers in India.
Platform specs and locations
The same KVM platform on every plan; only CPU, RAM, storage and port speed change.
- Virtualisation
- KVM with reserved vCores and RAM
- Storage
- NVMe SSD on every plan
- Network
- Dedicated IPv4 and IPv6, 500 Mbps to 3 Gbps per plan
- Operating systems
- Ubuntu 26.04, 24.04 and 22.04 LTS · Debian 13, 12 and 11 · AlmaLinux · Rocky Linux · Fedora · FreeBSD
- Access
- Full root over SSH, key-based login
- Backups
- Automatic daily backup of the previous 24 hours; snapshots and longer retention on request
- Protection
- Always-on anti-DDoS mitigation
- Availability
- 99.9% uptime SLA
Asia-Pacific
- Mumbai
- Singapore
- Sydney
Europe
- London
- Limburg
- Roubaix
- Gravelines
- Strasbourg
- Milan
- Warsaw
North America
- Beauharnois
Availability per location changes with demand; we confirm your location before setup. In Mumbai, Singapore and Sydney each plan includes a monthly traffic allowance (VPS-1 500 GB, VPS-2 and VPS-3 1 TB, VPS-4 3 TB); beyond it, speed is limited to 10 Mbps until the next month.
Questions before you deploy
Not covered here? Ask an engineer before you order.
Ready when you are
Put Your Django Project Live
Choose a plan and we hand over Python, Gunicorn, NGINX and PostgreSQL on a hardened server, ready for your code.