Spaces:
Paused
Paused
| title: PyRunner | |
| emoji: π | |
| colorFrom: blue | |
| colorTo: green | |
| sdk: docker | |
| app_port: 7860 | |
| pinned: false | |
| license: mit | |
| short_description: Self-hosted Python script automation platform | |
| # PyRunner | |
| [](LICENSE) | |
| [](https://hub.docker.com/r/hasanaboulhasan/pyrunner) | |
| [](https://github.com/hassancs91/PyRunner/releases) | |
| [](https://discord.gg/BjkmTn7XSd) | |
| A self-hosted Python script automation platform. Upload a script, schedule it, monitor it β nothing else to configure. | |
| ## Features | |
| - **Script Management** β Create, edit, and organize Python scripts from your browser | |
| - **Flexible Scheduling** β Run scripts manually, at intervals, or daily at specific times | |
| - **Virtual Environments** β Isolated Python environments with custom pip packages per script | |
| - **Run History & Logs** β Track every execution with stdout/stderr capture | |
| - **Secrets Management** β Store encrypted environment variables and secrets | |
| - **Notifications** β Get alerts via email, webhook, or Telegram on script completion/failure | |
| - **Magic Link Auth** β Passwordless authentication via email | |
| - **Single Container** β Deploy with one Docker command | |
| ## Quick Start | |
| ### Using Docker Compose | |
| ```bash | |
| # Clone the repository | |
| git clone https://github.com/hassancs91/PyRunner.git | |
| cd PyRunner | |
| # Copy environment template | |
| cp .env.example .env | |
| # Start PyRunner | |
| docker compose up -d | |
| ``` | |
| Open `http://localhost:8000` in your browser. | |
| ### Using Docker Hub Image | |
| ```bash | |
| docker run -d \ | |
| --name pyrunner \ | |
| -p 8000:8000 \ | |
| -v pyrunner_data:/app/data \ | |
| -e DEBUG=False \ | |
| -e ALLOWED_HOSTS=localhost \ | |
| hasanaboulhasan/pyrunner:latest | |
| ``` | |
| ## Configuration | |
| Copy `.env.example` to `.env` and configure: | |
| | Variable | Default | Description | | |
| |----------|---------|-------------| | |
| | `SECRET_KEY` | **Required** | Django secret key (container exits if unset β see [.env.example](.env.example)) | | |
| | `ENCRYPTION_KEY` | **Required** | Fernet key for encrypting stored secrets β save this somewhere safe | | |
| | `DEBUG` | `False` | Debug mode (disable in production) | | |
| | `ALLOWED_HOSTS` | `localhost,127.0.0.1` | Allowed hostnames | | |
| | `Q_WORKERS` | `2` | Background task workers | | |
| See [.env.example](.env.example) for all options. | |
| ## Tech Stack | |
| - **Backend**: Django, django-q2 | |
| - **Frontend**: Tailwind CSS | |
| - **Database**: SQLite | |
| - **Deployment**: Docker | |
| ## Requirements | |
| - Docker Engine 20.10+ | |
| - Docker Compose v2.0+ | |
| - 1GB RAM minimum (2GB recommended) | |
| ## License | |
| This project is licensed under the MIT License β see the [LICENSE](LICENSE) file for details. | |