---
title: "Hosting Python: Cara Online-kan FastAPI, Django, Flask, dan Bot"
url: "https://helipod.io/blog/hosting-python"
date: "2026-10-05"
updated: "2026-10-05"
author: "Tim Helipod"
tags: ["hosting python", "python", "fastapi", "django", "flask"]
excerpt: "Panduan hosting python untuk FastAPI, Django, Flask, dan bot: kebutuhan gunicorn atau uvicorn, requirements.txt, PORT, serta pilihan container atau VPS."
---

# Hosting Python: Cara Online-kan FastAPI, Django, Flask, dan Bot

Mencari **hosting python** biasanya dimulai setelah aplikasimu sudah jalan mulus di laptop dengan `python main.py` atau `flask run`. Pertanyaannya sekarang: bagaimana caranya supaya bisa diakses orang lain, 24 jam, dengan domain sendiri?

Jawabannya bergantung pada jenis aplikasinya. Web app FastAPI, Django, atau Flask butuh server WSGI atau ASGI dan port yang terbuka. Script atau bot yang tidak punya HTTP server butuh penanganan sedikit berbeda.

Artikel ini membahas apa saja yang perlu disiapkan, contoh perintah start untuk tiap framework, dan kapan sebaiknya memakai container atau VPS.

Baca juga: [Cara Deploy FastAPI ke Helipod](/blog/cara-deploy-fastapi-ke-helipod) dan [Cara Deploy Django ke Helipod](/blog/cara-deploy-django-ke-helipod)

---

## Kenapa Python Tidak Bisa Sembarang Hosting?

Shared hosting murah kebanyakan dibuat untuk PHP. Beberapa menyediakan fitur "Setup Python App", tapi biasanya terbatas pada versi Python tertentu dan cara menjalankan yang spesifik. Untuk proyek modern dengan FastAPI, Celery, atau library seperti pandas, batasannya cepat terasa.

Aplikasi web Python perlu proses yang terus hidup dan mendengarkan port. Karena itu, pilihan hosting python yang paling umum adalah:

- **Container hosting (PaaS):** kamu push kode, platform yang build dan menjalankan.
- **VPS:** server sendiri dengan akses root, kamu atur semuanya.

---

## Yang Dibutuhkan untuk Hosting Python

### 1. requirements.txt

Daftar dependency harus lengkap. Cara paling cepat:

```bash
pip freeze > requirements.txt
```

Lebih rapi lagi kalau kamu menulis manual hanya library yang benar-benar dipakai, supaya image tidak membengkak. Jangan lupa memasukkan server aplikasinya sendiri (`gunicorn` atau `uvicorn`).

### 2. Server WSGI atau ASGI

`flask run` dan `python manage.py runserver` adalah server development. Jangan dipakai di production. Gunakan:

| Framework | Tipe | Server yang umum dipakai |
|---|---|---|
| Flask | WSGI | gunicorn |
| Django | WSGI (atau ASGI) | gunicorn (atau uvicorn) |
| FastAPI | ASGI | uvicorn, atau gunicorn dengan worker uvicorn |

### 3. Baca PORT dari environment

Platform hosting biasanya memberi tahu port lewat variabel `PORT`. Dengarkan di `0.0.0.0`, bukan `127.0.0.1`, supaya request dari luar container bisa masuk.

### 4. Rahasia di environment variables

`SECRET_KEY`, `DATABASE_URL`, dan API key jangan di-commit ke repo. Simpan sebagai environment variables di pengaturan aplikasi.

---

## Contoh Perintah Start untuk FastAPI, Django, dan Flask

**FastAPI** (file `main.py` dengan objek `app`):

```bash
uvicorn main:app --host 0.0.0.0 --port ${PORT:-8000}
```

Atau dengan gunicorn untuk beberapa worker:

```bash
gunicorn main:app -k uvicorn.workers.UvicornWorker -w 2 -b 0.0.0.0:${PORT:-8000}
```

**Django** (proyek bernama `mysite`):

```bash
python manage.py migrate --noinput
python manage.py collectstatic --noinput
gunicorn mysite.wsgi:application -b 0.0.0.0:${PORT:-8000} -w 2
```

Jangan lupa set `ALLOWED_HOSTS` dengan domain kamu dan `DEBUG=False` di production.

**Flask** (file `app.py` dengan objek `app`):

```bash
gunicorn app:app -b 0.0.0.0:${PORT:-8000} -w 2
```

Jumlah worker (`-w`) sebaiknya disesuaikan dengan RAM. Setiap worker memuat aplikasi sendiri, jadi 4 worker di container 256 MB bisa membuat memori habis.

Panduan lengkap per framework: [deploy FastAPI](/blog/cara-deploy-fastapi-ke-helipod), [deploy Django](/blog/cara-deploy-django-ke-helipod), dan [deploy Flask](/blog/cara-deploy-flask-ke-helipod).

---

## Hosting Python: Container atau VPS?

| Kebutuhan | Container | VPS |
|---|---|---|
| Web app FastAPI, Django, Flask | Sangat cocok | Bisa, setup manual |
| Domain dan SSL | Otomatis | Pasang Nginx dan Certbot sendiri |
| Bot atau script tanpa HTTP | Perlu health endpoint kecil | Cocok, jalankan dengan systemd |
| Cron job, scraping berat | Bisa, tergantung kebutuhan | Lebih fleksibel |
| Perawatan server | Tidak perlu | Tanggung jawab kamu |

### Di container Helipod

Hubungkan repository GitHub atau GitLab. Helipack mendeteksi framework Python dan membuat Dockerfile otomatis, atau kamu bisa membawa Dockerfile sendiri. Setelah itu tambahkan environment variables, pantau log real-time, dan hubungkan custom domain dengan SSL otomatis.

Biaya container dihitung harian dari saldo wallet: Rp 150 per 0,125 vCPU, Rp 200 per 128 MB RAM, Rp 75 per GB storage per hari. Contoh 0,25 vCPU, 256 MB RAM, dan 1 GB storage = Rp 775 per hari, sekitar Rp 23.250 per bulan. Untuk Django dengan beberapa worker, kemungkinan kamu butuh RAM lebih besar. Harga bisa berubah, cek halaman harga untuk angka terbaru di [/pricing](/pricing).

### Di VPS

Kalau kamu ingin menjalankan beberapa aplikasi Python, database, dan cron di satu server, VPS lebih leluasa. VPS Helipod tersedia di Jakarta dan Singapura mulai Rp 64.900 per bulan (2 vCPU, 2 GB RAM), atau di Jerman mulai Rp 27.900 per bulan (1 vCPU, 1 GB RAM). Lihat [halaman VPS murah](/vps-murah).

---

## Script dan Bot Python Tanpa HTTP

Bot Telegram, bot Discord, atau worker yang hanya memproses antrean tidak membuka port HTTP. Di platform container yang mengharapkan aplikasi mendengarkan port, ini bisa membuat deploy dianggap gagal. Ada dua solusi:

**1. Tambahkan health endpoint kecil.** Jalankan HTTP server mini di thread terpisah:

```python
import os, threading
from http.server import BaseHTTPRequestHandler, HTTPServer

class Health(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.end_headers()
        self.wfile.write(b"ok")
    def log_message(self, *args):
        pass

def start_health():
    port = int(os.environ.get("PORT", 8080))
    HTTPServer(("0.0.0.0", port), Health).serve_forever()

threading.Thread(target=start_health, daemon=True).start()

# lanjutkan dengan loop bot atau worker kamu di sini
```

**2. Pakai VPS.** Jalankan script sebagai service systemd dengan `Restart=always`. Tidak perlu port sama sekali.

Contoh lengkap untuk bot ada di [hosting bot Discord](/blog/hosting-bot-discord).

---

## FAQ

### Apakah hosting python bisa pakai shared hosting biasa?

Sebagian shared hosting punya fitur aplikasi Python, tapi biasanya terbatas. Untuk FastAPI, Django modern, atau bot 24 jam, container atau VPS jauh lebih fleksibel.

### Versi Python mana yang dipakai?

Di container, versi Python ditentukan oleh base image di Dockerfile, misalnya `python:3.12-slim`. Kalau kamu membawa Dockerfile sendiri, kamu yang menentukan versinya.

### Bagaimana menjalankan migrasi Django saat deploy?

Jalankan `python manage.py migrate` sebelum gunicorn start, misalnya di script entrypoint. Kamu juga bisa menjalankannya manual lewat terminal ke container.

### Kenapa aplikasi Python kena error 502?

Biasanya karena aplikasi mendengarkan `127.0.0.1` atau port yang berbeda dari konfigurasi, atau proses crash karena RAM habis. Cek log real-time untuk melihat pesan error-nya.

### Butuh database untuk aplikasi Python?

Helipod punya managed Postgres dengan plan gratis (storage 1 GB, 100 jam compute per bulan). Cocok untuk prototipe Django atau FastAPI.

---

## Kesimpulan

Hosting python yang tepat dimulai dari tiga hal: server production (gunicorn atau uvicorn), requirements.txt yang lengkap, dan aplikasi yang membaca `PORT` dari environment. Web app paling praktis di container, sedangkan script dan bot tanpa HTTP butuh health endpoint kecil atau VPS.

Siap deploy? Lihat [harga Helipod](/pricing) dan hubungkan repository Python kamu.
