Free Python hosting with a MySQL database

By Aubin Devogelaere, founder of Waifly · Updated 2026-08-12 · Every figure below is the one the platform runs on.

Waifly hosts Python applications for free, with 300 MB of RAM, 1 GB of storage and one MySQL database included, permanently and without a credit card. Flask and FastAPI applications, Discord bots, Telegram bots and scheduled scripts all run inside that. Dependencies install from requirements.txt at startup. CPU is capped at 30% of a core, which is what rules out data-science workloads rather than the memory limit.

Step by step

  1. Create the server

    From the Servers tab of dash.waifly.com, click Create, choose the Python Egg, name the server and pick a Paris location. The free plan's limits apply automatically: 300 MB RAM, 1 GB disk, 30% CPU.

  2. Upload your code and requirements.txt

    Use the panel file manager or SFTP. requirements.txt is what drives dependency installation at startup — pin your versions there rather than relying on whatever is latest.

  3. Create the MySQL database

    In the panel's Databases tab, create the database. The host, name, user and password are shown there; put them in a .env file rather than in your source, since .env files are excluded from the automated security scan.

  4. Set the startup command

    python main.py for a script or a bot. For a Flask or FastAPI app, bind to the port given in the environment variable rather than a hard-coded one, and run through gunicorn or uvicorn.

  5. Start and check the console

    pip install output and your own logs both land in the live console. Enable auto-restart so a crash does not leave the server idle — 3 days offline means automatic suspension.

What runs well inside 300 MB

What does not: pandas, numpy or scikit-learn on any real dataset, Selenium and Playwright, and anything training a model. These are CPU-bound as much as memory-bound, and the 30% cap is the binding constraint. Nano at €4/month gives 4 GB and 2 full vCPU.

Using the MySQL database

The free plan includes one MySQL database, created from the panel. Read its credentials from environment variables rather than committing them:

import os
import mysql.connector

conn = mysql.connector.connect(
    host=os.environ["DB_HOST"],
    user=os.environ["DB_USER"],
    password=os.environ["DB_PASSWORD"],
    database=os.environ["DB_NAME"],
)

Paid plans raise the count: 1 database on Nano, 3 on Mega, 10 on Giga.

Keeping a free Python server alive

The free plan has no sleep mode and no hour quota — the process runs continuously. What ends a free server is the anti-abuse policy: 3 consecutive days offline triggers automatic suspension, and an automated inspection runs every 30 minutes. VPNs, proxies, tunnels and obfuscated code are forbidden.

A suspended server created less than 7 days earlier is deleted after 3 days; an older one is retained 15 days and recoverable from backups.waifly.com. If it is not blacklisted, you can reactivate it yourself at unsuspend.waifly.com.

Frequently asked questions

Which Python versions are available?
The Python Egg provides current stable releases, selected in the panel's Startup tab. If the version you need is missing, support can add an Egg on request.
Can I run a Flask or FastAPI app on the free plan?
Yes, behind gunicorn or uvicorn with one or two workers. Bind to the port supplied as an environment variable rather than a hard-coded one — that is the most common reason a first deployment is unreachable from outside.
Is a MySQL database really included for free?
Yes, one database, created from the Databases tab of the Pterodactyl panel. Paid plans include more: 1 on Nano at €4, 3 on Mega at €8, 10 on Giga at €16.
Can I use pandas or scikit-learn?
Not usefully on the free plan. Importing pandas alone consumes a large share of the 300 MB, and the 30% CPU cap makes any real computation slow. Data work starts at Nano (4 GB, 2 vCPU) and realistically at Mega or Giga.
How do I schedule a Python script?
Use the panel's Schedules tab rather than an in-process scheduler: it survives restarts and does not require your process to stay resident between runs.

Written by Aubin Devogelaere, founder of Waifly, who runs this infrastructure. More in the documentation, the full FAQ and the community forum.