Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

schliz/ippweb

Open more actions menu

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

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.