Archive the add-cups-printserver-container change

Moves the completed change to openspec/changes/archive/2026-10-18-add-cups-printserver-container/ and syncs the printserver/cups capability into openspec/specs/.
This commit is contained in:
juergen committed 2026-10-18 16:54:54 +02:00
1 parent 30c685e085
commit adaa11e416
6 files changed
+123

No files matched your search

@@ -0,0 +1,57 @@
# Proposal
## Why
Run a Podman container that shares the Brother HL-4150CDN network printer over
IPP/AirPrint, so clients on macOS, iOS/iPadOS, Linux and Windows can print.
The HL-4150CDN already emulates BR-Script3 (PostScript 3) and accepts PostScript
on its AppSocket/LPD ports, so the container can forward PostScript directly to
the printer instead of shipping Brother's 32-bit Linux CUPS wrapper plus
Ghostscript rasterisation. This removes the i386 dependency, the multiarch
runtime and the fragile vendor filter chain.
The previous approach (Brother Linux `.deb` packages) turned out not to work in
`debian:bookworm-slim`: the vendor filter `filterhl4150cdn` needs `file` (with
`a2ps` as a fallback), which are not installed, so it exits with an error and
produces no output. The official BR-Script3 PPD avoids that entire code path.
## What Changes
- Create a Containerfile for Podman based on Debian stable running CUPS, Avahi
and D-Bus (no i386 multiarch).
- Install Brother's official **BR-Script3 PPD** (committed under
`assets/Brother HL-4150CDN/ppd/`) so CUPS emits device options — paper source
(tray), duplex and colour/mono, plus media type, print quality, toner save and
secure print — as PostScript `setpagedevice`.
- Point the queue at the printer with a raw AppSocket URI (`socket://<ip>:9100`)
by default.
- Convert incoming client formats (URF/Apple Raster, PWG Raster, PDF, PostScript)
to PostScript inside CUPS and pass them through to the printer's PostScript
interpreter.
- Share the queue over IPP and advertise it via mDNS/DNS-SD (Avahi/AirPrint).
- Keep runtime configuration (printer address, protocol, queue name) in
environment variables.
- Document the supported client matrix.
## Capabilities
### New Capabilities
- `printserver/cups`: Containerised CUPS print server which shares the Brother
HL-4150CDN over IPP/AirPrint and prints by sending PostScript (BR-Script3)
directly to the printer.
### Modified Capabilities
None
## Impact
- Containerfile plus supporting `cupsd.conf` and `entrypoint.sh` in the
repository root.
- Uses `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`.
- Runtime ports: CUPS/IPP (631/tcp), mDNS/DNS-SD (5353/udp).
- No 32-bit runtime libraries; the image no longer depends on the host CPU
architecture.
- Windows clients install Brother's own BR-Script3 Windows driver client-side.
- The unused Brother Linux `.deb` packages previously under
`assets/Brother HL-4150CDN/` have been removed.