PanelicaDocs
panelica.com
Docs / App Hosting / Python Apps

Python Apps

Panelica 1.0.375 Verified 2026-07-23 App Hosting

Python hosting mirrors the Node.js experience with Python's own toolchain: every app is a systemd service under its owner's Linux user and cgroup limits, with its own virtualenv, served by gunicorn (WSGI) or uvicorn (ASGI), or running as a plain script or worker (bots and background jobs with no web port at all).

Panel locationPython → Applicationshttps://YOUR-SERVER-IP:8443/python/apps
 Python Applications
Installed: Python 3.12 ★ Python 3.11
shop-api Python 3.12 fastapiowner: ayse
https://api.example.net · /home/ayse/shop-api · CPU 1.8% · RAM 96 MB / 256M
StopRestartLogsEnvpip installDelete

The apps page

Installed Python series in a strip up top (star marks the default), then app cards with the status dot, name, Python version, framework badge (flask, django, fastapi, wsgi, asgi, plain), a worker badge for portless background apps, the owner, the bound domain or local port, and live CPU/RAM/uptime sparklines. The wrong-port warning from the Node page exists here too: an app that ignores the assigned PORT is flagged on its card. A processes table, a how-it-works panel and an FAQ round out the page.

Card actions: start/stop/restart, Logs (the same live WebSocket stream viewer with pause, copy and download), Env (edit environment variables after creation; saving restarts the app), Domain binding, Files, pip install (reruns pip install -r requirements.txt) and delete.

Creating an app

The form: owner, name, Python series, production/development mode, framework and server (auto-picks gunicorn for WSGI frameworks and uvicorn for ASGI; "python" runs a plain script), the app module (app:app) or startup file, the app folder (locked inside the owner's home), code source (starter scaffold, public Git repository, or ZIP), an optional custom start command, domain and host binding, memory and CPU limits, environment variables and autostart. Ports are automatic (a separate pool from Node's); workers get no port at all.

Behind the scenes: the panel creates the app's virtualenv under the app folder as the owner's user, then installs the server package and the requirements with pip, again as the owner, before the first start. The systemd unit binds the service to the account's cgroup slice with MemoryMax/CPUQuota, hardening flags and crash-loop protection, and stores it root-only since it carries your environment secrets. Domain binding writes the same backed-up, test-then-reload Nginx reverse proxy used for Node apps. Python runtimes come from the python-build-standalone project with checksum verification. And on every panel start, a reconciler self-heals missing virtualenvs, units and proxy configs.

The examples gallery

Examples deploys a working app from a small catalog: a Flask site, a FastAPI service, a Telegram bot listener, a Discord bot listener and a Telegram notifier. Pick one, fill in the required credentials (bot tokens are entered as masked fields), choose the owner, and it deploys ready-to-run: the fastest way to see a worker app pattern in action.

Bot example: deploy the Telegram listener example with your bot token, and you have a systemd-supervised, resource-limited, auto-restarting bot in under a minute, with its logs one click away. No SSH, no tmux, no cron hacks.

Python versions

The versions page lists Python 3.9+ series from upstream against what is installed, with the same checksum-verified install and dependency-aware removal as Node: removing a series that apps still use is refused with their names.

Panel locationPython → Versionshttps://YOUR-SERVER-IP:8443/python/versions

Access

Python hosting is a licensed feature (python) with per-operation permissions (view, create, delete, start/stop/restart, pip, logs, stats, version install) and plan-based app count limits. Role-wise (roles and permissions): a USER manages only their own apps under their home; ADMIN and RESELLER pick an owner and see their chain; runtime installation is ROOT-level. Deletion and version removal are the confirmed actions.

Panelica Documentation · Written and verified against the live panel. · Last verified 2026-07-23 on Panelica 1.0.375