What's installed on your Django server?
- Django 6.1 and Gunicorn 26 in a virtual environment at /home/app/proje/venv
- PostgreSQL with psycopg 3: a database called django, reachable on 127.0.0.1 only
- Production settings in proje/uretim.py: DEBUG off, with secrets in /etc/seturack-django.env
- A ready yonetici superuser and the admin site at /admin/
- A systemd service called uygulama: 2 Gunicorn workers on 127.0.0.1:8000
- HTTPS through Caddy, which serves static files directly at /static/
- Firewall with ports 22, 80 and 443 open, while ports 8000 and 5432 stay internal
What size do you need for Django?
Django's docs don't give a RAM figure. This install runs two Gunicorn workers and PostgreSQL on the same server. As a rule of thumb, 1 GB is a start for a small project, and 2 to 4 GB suits Celery, image processing or more workers. Gunicorn's docs suggest starting with (2 x cores) + 1 workers, so raise the count in the service file after adding CPU. When you resize from your panel, your data and IP stay the same.
| Use | Size | Price | Choose |
|---|---|---|---|
| Starter | 1 GB RAM · 1 vCore · 25 GB NVMe | $2.58/mo | |
| Medium | 2 GB RAM · 1 vCore · 40 GB NVMe | $4.01/mo | |
| Powerful | 4 GB RAM · 2 vCore · 60 GB NVMe | $6.89/mo |
Who is it for?
- Developers moving a Django project from runserver to production
- Anyone building a REST API or an admin-heavy business app
- People who'd rather start on code than configure Gunicorn, Caddy and PostgreSQL
- Python apps with users in Turkey that should run from Istanbul
What happens after you order?
- Set the size and complete your payment.
- Your server starts and Django installs itself. This took about 3.5 minutes in our real-server tests.
- On the Overview tab, open the Admin address link and sign in with the values from the Login and Password rows.
- Connect over SSH, run su - app and cd ~/proje, then load the settings: set -a; . /etc/seturack-django.env; set +a
- Add your app, install packages with venv/bin/pip install, then run venv/bin/python manage.py migrate and collectstatic.
- As root, run systemctl restart uygulama.
With every server
- Daily backups included in the price
- Unlimited traffic
- Full root access
- Scale RAM and CPU up or down later, and grow the disk
- Location: Istanbul · IST-1.
Good to know
- Add new apps to INSTALLED_APPS in proje/settings.py. uretim.py inherits from that file and overrides DEBUG and the database settings.
- manage.py commands need the environment variables. Load /etc/seturack-django.env first in each session.
- When you connect a domain, also change DJANGO_ALAN and DJANGO_ADRES in /etc/seturack-django.env, or Django rejects requests because of ALLOWED_HOSTS.
- PostgreSQL isn't open to the outside. From the server, connect to 127.0.0.1:5432 as the django user, with the password in DJANGO_DB_SIFRE.
- The install doesn't set up email or user uploads (MEDIA_ROOT). You define both in uretim.py.
- Updates to Django, Python packages and your code are your responsibility. Run manage.py check --deploy before going live.
Django questions and answers
How do I deploy a Django project on a VPS?
Connect over SSH, run su - app, load the settings file in ~/proje, add your code and run migrate and collectstatic. Then run systemctl restart uygulama as root. Gunicorn and Caddy are already installed, so there's nothing else to set up.
How much RAM does Django hosting need?
Django has no official RAM figure. As a rule of thumb, 1 GB is a good start for a small project with two Gunicorn workers and PostgreSQL, and 2 to 4 GB if you have background jobs or image processing. If it isn't enough, you scale up from your panel.
Which Python and Django versions are on the server?
Django 6.1 and Ubuntu 24.04's Python 3.12 are installed, with packages in the /home/app/proje/venv virtual environment. Django 6.1 officially supports Python 3.12 and later. Add new packages with venv/bin/pip.
How do I connect to the Django database?
PostgreSQL runs on the server only and isn't open to the outside. The database and user are both django, the address is 127.0.0.1:5432, and the password is DJANGO_DB_SIFRE in /etc/seturack-django.env. From your computer, open a tunnel with ssh -L 5432:127.0.0.1:5432 root@IP.
How do I connect my own domain to Django?
Point the A record at your server, replace the old name everywhere in /etc/caddy/Caddyfile and update DJANGO_ALAN and DJANGO_ADRES in /etc/seturack-django.env. Then run systemctl reload caddy and systemctl restart uygulama as root.
Can I use WebSockets or Channels with Django?
This install runs WSGI through Gunicorn and proje.wsgi. For WebSockets, point the ExecStart line in /etc/systemd/system/uygulama.service at an ASGI server. Caddy passes WebSocket connections through.