Files
printserver/openspec/changes/add-cups-printserver-container/tasks.md
T

2.1 KiB

Tasks

1. Repository initialization

  • 1.1 Initialize jujutsu repository with jj git init in repo root and verify .jj directory exists

2. Container build setup

  • 2.1 Create Containerfile in repository root based on Debian/Ubuntu base image with multiarch support for i386
  • 2.2 Install required system packages: cups, avahi-daemon, dbus, wget/curl, and 32-bit runtime libraries (libc6:i386, libstdc++6:i386, etc.)
  • 2.3 Copy the local Brother driver packages (assets/Brother HL-4150CDN/lpr-driver/hl4150cdnlpr-1.1.1-5.i386.deb and assets/Brother HL-4150CDN/cupswrapper/hl4150cdncupswrapper-1.1.1-5.i386.deb) into the build context and install them in the container with dpkg -i --force-all (verify install reports success)
  • 2.4 Configure CUPS and Brother drivers (symlink PPD/filter files as needed, set up cupsd.conf for container use) and verify files are in correct locations
  • 2.5 Set up startup script to run dbus, avahi-daemon, and cupsd in the container
  • 2.6 Expose ports 631 (CUPS/IPP) and 5353/udp (mDNS) in Containerfile and verify ports are declared

3. Printer configuration

  • 3.1 Add logic/config to create and share the Brother HL-4150CDN printer (using lpadmin) with appropriate network URI and PPD; ensure printer is shared for network clients
  • 3.2 Configure Avahi/CUPS for AirPrint advertisement and verify printer will be discoverable
  • 3.3 Add environment-based configuration for the printer address and advertised name (PRINTER_IP, PRINTER_PROTOCOL, PRINTER_NAME, PRINTER_DESCRIPTION; PRINTER_URI overrides)

4. Documentation and testing

  • 4.1 Create or update README with instructions for building and running the container with podman (including host network mode note for mDNS, volume mounts if needed)
  • 4.2 Test container build with podman build and verify image builds successfully
  • 4.3 Test container run and verify CUPS is accessible and printer is shared/discoverable (manual verification)
  • 4.4 Verify podman run with PRINTER_IP and a custom PRINTER_NAME creates the queue at the derived URI and advertises that name