Python Hosting logo

Python Hosting

Python hosting for real applications

Flask, FastAPI or a plain WSGI app — with a virtualenv, your requirements installed, and a process that stays up.

Shared hosting usually stops at PHP

Most budget hosting in Nepal will happily run WordPress and nothing else. If you have written something in Python, you are told to buy a VPS and figure out gunicorn yourself.

We run Python as a first-class runtime. You get a virtual environment, your requirements.txt installed on deploy, and your app supervised and proxied behind HTTPS on your own domain.

Python Hosting

What you get

Virtualenv per app

Isolated dependencies, so two projects can want two different versions of the same library.

requirements.txt

Installed automatically on every deploy — no manual pip on a shell you do not want to use.

Supervised

Your app is a managed service: restarted on crash, started on boot.

Own domain + SSL

Attach any domain and issue a free certificate in one click.

Databases included

MySQL, PostgreSQL and MongoDB are all available to your app.

Shell when you want it

A real terminal in the browser, running as your account.

How it works

deploy
$ python -m venv .venv
$ pip install -r requirements.txt
$ gunicorn app:app
✓ service supervised
✓ live on https://yourdomain.com
  1. 1Put your project in your account, with a requirements.txt.
  2. 2Create an app: runtime Python, app root, entry file.
  3. 3We build the virtualenv and install your requirements.
  4. 4Attach a domain, issue SSL, done.

Where it runs

On our own hardware, inside Nepal

Not a reseller account on someone else's platform. Your Python workload runs on machines we own and operate in Kathmandu — which is why the round trip below is what it is.

  • NVMe storage on every plan
  • Isolated account per customer, at the OS level
  • Nightly backups you can restore yourself
NPLatency to Kathmandulower is faster
AstraCloud — KathmanduFastest15 ms
Singapore95 ms
Frankfurt160 ms
US East230 ms

Typical round-trip a visitor inside Nepal sees, by server location. Your results will vary by network and route.

Get this one right

Expose a WSGI callable, do not call run()

gunicorn imports your module and serves the callable itself. If your entry file only calls app.run() behind an __main__ guard, gunicorn finds nothing to serve and the service exits cleanly — which looks like a success in the logs.

app.py
from flask import Flask

# gunicorn imports this name — it must exist at module level.
app = Flask(__name__)

@app.get("/")
def index():
    return {"ok": True}

# Local development only. In production gunicorn binds the port,
# so this block never runs — and must not be relied on.
if __name__ == "__main__":
    app.run(debug=True)

While you are there

Commit a requirements.txt: it is installed into a fresh virtualenv on every deploy. FastAPI works the same way, served with a uvicorn worker class.

If a deploy still will not come up, the panel reads the service log and explains the cause in plain language — you do not have to interpret systemd output yourself.

Under the hood

Runtime
Python 3 with per-app virtualenv
Server
gunicorn behind nginx
Frameworks
Flask, FastAPI, Bottle, any WSGI app
Databases
MySQL, PostgreSQL, MongoDB
Shell
Browser terminal and SSH key access

Plans

Plans are being updated — see all hosting.

Common questions

Is Django supported?+

Yes, and it has its own runtime option — see our Django hosting page.

Can I use a background task queue?+

Light workloads are fine as a second app or a cron job. Heavy Celery setups are better suited to a VPS.

Which port do I listen on?+

Read PORT from the environment; we assign it for you.

Ready when you are

Set up in minutes, with support from people in your timezone.