Skip to content
/ ippweb Public

Small Flask Service to expose a Webprint UI using a local cups for printer queue management

License

Notifications You must be signed in to change notification settings

schliz/ippweb

Repository files navigation

ippweb

Web-based printing service using CUPS/IPP.

Features

  • 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

Requirements

System Dependencies

# Debian/Ubuntu
sudo apt install cups libcups2-dev python3-dev

# Fedora/RHEL
sudo dnf install cups cups-devel python3-devel

CUPS must be installed and running with at least one printer configured.

Python Dependencies

Python 3.10+ required.

Installation

  1. Clone the repository:
git clone <repo-url>
cd ippweb
  1. Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Copy environment configuration:
cp .env.example .env
# Edit .env as needed

Running (Development)

python run.py

Or with Flask CLI:

flask --app app run --debug

The application will be available at http://localhost:5000

Production

See the Dockerfile and docker-compose.prod.yml

Configuration

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

API Endpoints

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

Future Enhancements

Planned features (not in MVP):

  • Option filtering UI (show only common options)
  • Additional file format support (PostScript, images)
  • Multi-user support with quotas

License

MIT

About

Small Flask Service to expose a Webprint UI using a local cups for printer queue management

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •