Web-based printing service using CUPS/IPP.
- List available printers from CUPS
- Display all printer options (from PPD)
- Upload PDF files for printing
- Configure print options (page size, copies, duplex, etc.)
- Monitor job status with real-time updates
- View pages printed (job-impressions-completed)
- OIDC Authentication
- Page count reports
# Debian/Ubuntu
sudo apt install cups libcups2-dev python3-dev
# Fedora/RHEL
sudo dnf install cups cups-devel python3-develCUPS must be installed and running with at least one printer configured.
Python 3.10+ required.
- Clone the repository:
git clone <repo-url>
cd ippweb- Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate- Install dependencies:
pip install -r requirements.txt- Copy environment configuration:
cp .env.example .env
# Edit .env as neededpython run.pyOr with Flask CLI:
flask --app app run --debugThe application will be available at http://localhost:5000
See the Dockerfile and docker-compose.prod.yml
Environment variables (see .env.example):
| Variable | Default | Description |
|---|---|---|
| FLASK_DEBUG | false | Enable debug mode |
| FLASK_SECRET_KEY | (required) | Secret key for sessions |
| UPLOAD_FOLDER | ./uploads | Temporary upload directory |
| MAX_CONTENT_LENGTH | 52428800 | Max upload size (50MB) |
| CUPS_SERVER | localhost | CUPS server address |
| Method | Path | Description |
|---|---|---|
| GET | / |
List printers |
| GET | /print/<printer> |
Print options form |
| POST | /print/<printer> |
Submit print job |
| GET | /job/<id> |
Job status page |
| GET | /api/job/<id> |
Job status (JSON) |
| POST | /job/<id>/cancel |
Cancel job |
| GET | /health |
Health check |
Planned features (not in MVP):
- Option filtering UI (show only common options)
- Additional file format support (PostScript, images)
- Multi-user support with quotas
MIT