Migrating production infrastructure? Get up to ₹10,000 in migration credits. Apply now
voroa
Services

Python hosting. In India.

Python cloud hosting where you push a Django, FastAPI or Flask app to GitHub and Voroa installs, builds and runs it in Mumbai, billed in rupees. No VPS, no nginx, no Dockerfile needed.

Free size included · Paid sizes from ₹149/mo

  • Django, FastAPI, Flask
  • Migrations before each release
  • Free size, no card
  • 2,000+Developers
  • 24,100+Deploys
  • MumbaiWhere your app runs

What Python hosting means here

Python hosting is a server that runs your Python web app behind a public address: it installs your packages, starts a production server such as gunicorn or uvicorn, and restarts the app with each new version. On a VPS or a cPanel host you set up the virtualenv, the process manager, nginx and the certificate yourself.

On Voroa you connect a repository instead. Voroa installs what your requirements.txt, Pipfile or pyproject.toml lists, runs your build command, runs your migrations before the new version takes traffic, then starts your app with your start command behind HTTPS. Every push repeats it.

What every Python service comes with

  • A URL with TLS from the first deploy
  • A new release on every push to your branch
  • A pre-deploy command for migrations, run before traffic moves
  • Releases that start before the old one stops
  • One-click rollback to the previous release
  • Packages from requirements.txt, Pipfile or pyproject.toml
  • Build and runtime logs you can read and search
  • Environment variables and shared env groups
  • One bill, in rupees, with a GST invoice
  • Runs in Mumbai (IN)

The Python apps people host here

If it serves HTTP and lives in a Git repository, it runs as a web service.

Django

Start it with gunicorn myproject.wsgi --bind 0.0.0.0:$PORT, collect static files in the build step, serve them with WhiteNoise, and run migrate as the pre-deploy command.

FastAPI

Start it with uvicorn main:app --host 0.0.0.0 --port $PORT. The same service can hold WebSocket endpoints next to your REST API.

Flask

Start it with gunicorn app:app --bind 0.0.0.0:$PORT. With Flask-Migrate, set the pre-deploy command to flask db upgrade.

Celery workers

Run the worker as a separate background worker from the same repository, with a Redis-compatible key value store as the broker.

From your repository

Deploy straight from GitHub

Connect a repository, pick a branch, and Voroa builds and runs your app. Most projects need zero configuration. When you do need control, set your own build and start commands, root directory and Node version - and change them any time.

View documentation
Auto-deploy

Ship on every push

Turn on auto-deploy and every push to your branch triggers a fresh build and rolls the change out. Your live service always matches your latest commit, and every deploy is recorded with the commit that caused it.

View documentation

The Python version your repository declares

Voroa reads the Python version from your repository: requires-python in pyproject.toml, python_version in a Pipfile, or a .python-version or runtime.txt file. Without any of them, Voroa builds on Python 3.12.

Packages install from requirements.txt, Pipfile or pyproject.toml, so there is no virtualenv to create and no pip install to run by hand. Because the version lives in your code, every deploy and every teammate gets the same one.

Three commands, and Voroa runs them in order

A Python deploy on Voroa has three steps you can set under Build and Deploy settings. The build command runs once per deploy, for example Django's collectstatic. The pre-deploy command runs after the build and before the new version receives traffic, which is where migrate belongs: if it fails, the old version keeps serving. The start command runs your server.

You change any of them later without recreating the service. The full Django walkthrough, with the settings changes and common errors, is in deploy a Django app.

Keep your data off the container

A service's own filesystem resets on every deploy, so a SQLite file written there disappears with the next release. Put real data in managed PostgreSQL and read it through one DATABASE_URL variable, or, on a paid size, attach a persistent disk when you need files that survive a deploy.

Use a Redis-compatible key value store for cache, sessions and as a Celery broker, and run the Celery worker as a background worker. Everything sits in one workspace, one region and one rupee bill.

Python bots and scripts that run all day

A Discord or Telegram bot, a scraper or a queue consumer has no web page to serve, so it runs as a background worker: no port, no public URL, and it never sleeps. Set the start command, for example python bot.py, and Voroa keeps it running and restarts it if it exits.

A free worker draws on the workspace's 750 free running hours a month, and one worker running all month uses about 744 of them, so a single bot fits on the free size. Paid sizes have no hour limit.

Logs

Watch the build, then read the runtime

Your build streams line by line as it runs, and your running service keeps its own runtime logs - so when something misbehaves in production you read what happened instead of guessing. Every deploy keeps its status and its commit.

View documentation
Configuration

Secrets go in, and never come back out

Store the configuration your app needs as environment variables, applied to both your builds and your running service. Values are encrypted at rest and are never displayed again - not to you, not to anyone. You can replace a value; nobody can read it back.

View documentation
Domains and TLS

Your own domain, with HTTPS handled

Every service gets a live HTTPS URL the moment it deploys. Point your own domain at it and Voroa issues and renews the certificate for you - nothing to buy, nothing to remember, no expired certificate taking your site down.

View documentation

Web services

per service

Start free, move up a size when the service needs it. Every size is billed per service, per month.

  • Deploys from your GitHub repo
  • A live HTTPS URL with managed TLS
  • Runtime logs and full deploy history
  • Custom domains
Web services sizes
PlanCPU / RAM / Storage PriceAction
Nanonano 0.1 CPU · 512 MB RAM ₹0/month+18% GST Get started
Nano Plusnano_plus 0.5 CPU · 512 MB RAM ₹149/month+18% GST Get started
Starterstarter 1 CPU · 1 GB RAM ₹298/month+18% GST Get started
Standardstandard 1 CPU · 2 GB RAM ₹498/month+18% GST Get started
Standard Plusstandard_plus 2 CPU · 2 GB RAM ₹598/month+18% GST Get started
Propro 2 CPU · 4 GB RAM ₹998/month+18% GST Get started
Pro Pluspro_plus 4 CPU · 4 GB RAM ₹1,198/month+18% GST Get started
Pro Maxpro_max 4 CPU · 8 GB RAM ₹1,998/month+18% GST Get started
Pro Ultrapro_ultra 8 CPU · 8 GB RAM ₹2,398/month+18% GST Get started
Scalescale 8 CPU · 16 GB RAM CustomPriced to your workload Talk to us
Scale Maxscale_max 8 CPU · 24 GB RAM CustomPriced to your workload Talk to us

Your bill is one workspace plan plus a compute size for each service you run; the pricing page lists the workspace plans. All prices in INR and exclude 18% GST; a GST tax invoice is issued on every payment. No foreign currency payments, no forex markup.

How it works

From repository to a live Python app

  1. 01

    Create your Voroa account with email and a password, or sign in with GitHub.

  2. 02

    Connect GitHub and choose the repository and branch that holds your app.

  3. 03

    Set the start command, and for Django the build and pre-deploy commands.

  4. 04

    Add SECRET_KEY, ALLOWED_HOSTS and your other settings as environment variables.

  5. 05

    Pick a size. The free size costs nothing and needs no card.

  6. 06

    Select Deploy, open the live URL, and turn on auto-deploy for every push.

Billing

One rupee bill, itemised, with GST

Your services and every database beside them land on a single monthly invoice, paid over UPI-Autopay or an Indian card. Each line names what it is for, and the tax is split out the way your accountant needs it for input tax credit.

View documentation
FAQ

Common questions

Not covered here? Read the docs or talk to us.

Can I host a Django app on Voroa?

Yes. Run it with gunicorn, collect static files in the build command, serve them with WhiteNoise, and run migrate as the pre-deploy command. See deploy a Django app.

Can I host FastAPI or Flask?

Yes. Set the start command to uvicorn main:app --host 0.0.0.0 --port $PORT for FastAPI or gunicorn app:app --bind 0.0.0.0:$PORT for Flask.

Where do I run database migrations?

In the pre-deploy command. It runs once per deploy with your environment variables, after the build and before the new version takes traffic.

Can I use SQLite in production?

Only for a throwaway test. The container's filesystem resets on every deploy, so use managed PostgreSQL, or a persistent disk on a paid size if you must keep files.

Do I need a Dockerfile, nginx or a VPS?

No. Voroa builds your app from its package files, runs your server and handles HTTPS. You can still build from your own Dockerfile if you prefer.

How do I run Celery?

Deploy your web app as a web service and the Celery worker as a background worker from the same repository, with a Redis-compatible key value store as the broker.

Does Python hosting on Voroa support WebSockets?

Yes, through an ASGI server such as Uvicorn or Daphne. See WebSockets on Voroa.

Is there free Python hosting?

Yes. The free size runs a 512 MB service with no card needed. Free services share 750 running hours a month in a workspace and sleep after 15 idle minutes. See free instances.

How is Python hosting billed?

A fixed monthly price in rupees for the size you pick, plus 18% GST, with a GST invoice on every payment. Pay by UPI, an Indian card or netbanking.

Where does my Python app run?

In Mumbai (IN), in the same region as the databases you add next to it.

Which Python version will my app run on?

The one your repository declares in pyproject.toml, a Pipfile, .python-version or runtime.txt. Without one, Voroa builds on Python 3.12.

Can I host a Discord or Telegram bot written in Python?

Yes, as a background worker with a start command such as python bot.py. Workers never sleep, and one free worker fits inside the 750 free hours a month.

What happens if my app crashes?

Voroa starts it again. If it keeps exiting soon after it starts, the service shows as crash looping and the same error repeats in its logs, which is usually the fastest way to find the cause.

Can I run Python scripts on a schedule?

A separate cron job service is not available yet. Today, run a scheduler such as Celery beat or APScheduler inside a background worker.

Can I host a machine learning model or a data app?

Yes, on CPU. Voroa has no GPU sizes, so pick a size with enough memory for your model, and keep large model files out of the container image where you can.

Can I open a shell or run a management command?

Yes. Add an SSH key and open a terminal inside the running service, then run python manage.py commands there. See SSH access.

Can I host several Python apps in one account?

Yes. Each app is its own service; the free plan allows up to 15 services in a workspace.

Where can I read more before I choose?

We compare the options for each framework in Django hosting in India and Python hosting for Flask and FastAPI.

Deploy your Python app today

Connect your repository, pick the free size, and have a live URL in a few minutes. Moving an app from another platform? You may qualify for migration credits. More guides are on the Python section of the blog.

Free size, no card needed.