Morpheus
Services / Impression locale

CUPS (Impression)

Service d'impression CUPS utilisé localement en production, avec écoute localhost, logs exploitables et workflow de dépannage.

CUPS localhost lpstat logs pilotes
CUPS limité à localhost dans le poste durci
Vue publique: service CUPS, socket local, interface web localhost, imprimantes, jobs, logs et contrôles réseau.
01

Installer

Installer CUPS, les pilotes nécessaires et activer le service uniquement si l'impression est utilisée.

02

Limiter

Forcer l'écoute sur localhost et désactiver la découverte réseau quand le partage n'est pas requis.

03

Administrer

Utiliser l'interface locale et les commandes lp/lpstat/cancel pour gérer imprimantes et jobs.

04

Maintenir

Suivre logs, files d'attente, pilotes, backup de configuration et contrôles de sécurité.

Contexte

Le problème réel.

CUPS est pratique pour l'impression locale, mais une configuration par défaut mal relue peut exposer l'interface d'administration, ouvrir le port 631 au réseau ou laisser des files d'attente bloquées sans diagnostic clair.

Objectifs

Ce que la solution devait garantir.

  • Obtenir un serveur d'impression local sans exposition réseau inutile.
  • Rendre les logs et commandes de diagnostic immédiatement exploitables.
  • Documenter l'ajout d'imprimante, les jobs, les pilotes et l'impression PDF.
  • Conserver un workflow clair après chaque modification de configuration.
Architecture publique

Structure documentée, détails exploitables retirés.

Exemples anonymisés

Ce qui peut être montré sans exposer le système réel.

Configuration CUPS anonymisée

La page montre les directives importantes sans publier le fichier privé complet.

LogLevel notice
MaxLogSize <LOG_SIZE>
ErrorPolicy stop-printer
Listen localhost:631
Listen <CUPS_SOCKET>
Browsing No
BrowseLocalProtocols none
WebInterface Yes

Commandes impression

Les opérations courantes sont publiées avec noms d'imprimantes et fichiers remplacés.

lpstat -p -d
lpstat -t
lpoptions -d <PRINTER_NAME>
lp -d <PRINTER_NAME> <DOCUMENT>
lp -n <COPIES> <DOCUMENT>
cancel <JOB_ID>
cancel -a <PRINTER_NAME>

Diagnostic local

La validation publique prouve que l'interface n'est pas exposée au réseau.

systemctl status cups.service --no-pager
ss -tulnp | rg ':631'
lpstat -t
journalctl -u cups.service -n 50 --no-pager
tail -n 50 <CUPS_ERROR_LOG>
Runbook public

Commandes et états attendus issus de la documentation privée.

Les commandes ci-dessous sont volontairement anonymisées: chemins, noms de machines, interfaces, dépôts, périphériques et actions destructrices sont remplacés par des placeholders.

Documentation privée: cups

CUPS limité à localhost

Commandes anonymisées

systemctl status cups.service --no-pager
ss -tulnp | rg ':631'
lpstat -t
rg 'Listen|Browsing|BrowseLocalProtocols' <cups-config>

État attendu

CUPS est actif seulement si nécessaire
le listener est 127.0.0.1:631 ou socket local uniquement
0.0.0.0:631 est traité comme une exposition
le browsing réseau est désactivé
les imprimantes et files sont visibles localement
Documentation privée: cups

Logs et diagnostic

Commandes anonymisées

journalctl -u cups.service -n 50 --no-pager
tail -n 50 <cups-error-log>
tail -n 50 <cups-access-log>
lpstat -o

État attendu

les logs récents du service sont lisibles
le journal d'accès ne montre pas d'administration distante inattendue
les tâches bloquées sont visibles
le mode debug reste temporaire puis revient à un logging niveau notice
Documentation privée: cups

Workflow après changement

Commandes anonymisées

systemctl restart cups.service
systemctl status cups.service --no-pager
ss -tulnp | rg ':631'
lpstat -t
lp <test-print-file>

État attendu

le service revient à active (running)
l'écoute reste limitée à localhost
les imprimantes restent visibles
l'impression de test réussit
le firewall reste une seconde couche, pas la restriction primaire de CUPS
Travail réalisé

Décisions techniques publiables.

Configuration sécurisée

La documentation met en avant Listen localhost, Browsing No, WebInterface Yes et ErrorPolicy stop-printer.

Interface web

L'administration reste accessible depuis localhost uniquement. Les écrans détaillés ne sont pas publiés afin de ne pas exposer la configuration de production.

CLI impression

Les commandes lpstat, lp, cancel, lpoptions, cupsenable et cupsdisable couvrent l'exploitation courante.

Maintenance

Rotation de logs, nettoyage des jobs, backup de configuration et pilotes sont cadrés séparément.

Validation

Preuves et contrôles retenus.

Preuves visuelles

Contrôles observables et portée de la preuve.

Résultats publics

Ce que le chantier démontre.

Anonymisation

Ce qui reste privé.

  • Pas de nom réel d'imprimante, modèle exact, réseau ou périphérique.
  • Pas de fichier cupsd.conf privé complet.
  • Pas de chemins de spool ou logs personnels publiés comme valeurs réelles.
  • Pas d'écran d'administration détaillé, d'historique de travaux ou de paramètres de file issus de la production.
  • Les commandes utilisent des placeholders pour imprimantes, fichiers et chemins.
Sources privées

Documentation d'origine.

  • Guide CUPS sur Arch Linux.
  • Notes de configuration d'impression locale.
  • Durcissement réseau limité à localhost.
  • Runbooks logs, jobs et pilotes.

Supplément de documentation privée anonymisé

CUPS - Serveur d'impression sur Arch Linux

Guide public pour installer et configurer CUPS de manière sécurisée sur Arch Linux. Les modèles d'imprimantes, chemins privés, noms de périphériques et fichiers réels sont remplacés par des placeholders.

Qu'est-ce que CUPS ?

CUPS est le système d'impression standard Linux/Unix. Il gère les files d'attente, les imprimantes, l'interface web locale et les pilotes.

  • Gérer les imprimantes et files d'attente.
  • Administrer localement via http://localhost:631.
  • Imprimer depuis les commandes lp, lpstat et cancel.
  • Journaliser les accès, erreurs et pages imprimées.

Objectifs

  • Serveur d'impression local sécurisé.
  • Aucune exposition réseau: localhost uniquement.
  • Logs exploitables pour debug et audit.
  • Interface d'administration accessible localement.
  • Workflow clair après modification de configuration.

Installation

Installer CUPS, puis ajouter les pilotes adaptés au matériel sans publier le modèle réel:

sudo pacman -S cups cups-pdf
sudo pacman -S <PRINTER_DRIVER_PACKAGE>
sudo systemctl start cups.service
sudo systemctl enable cups.service
systemctl status cups.service

Groupes usuels pour impression et administration locale:

sudo usermod -aG lp <OPERATOR>
sudo usermod -aG sys <OPERATOR>
groups <OPERATOR>
Session à recharger

Les changements de groupes nécessitent une reconnexion pour être pris en compte.

Configuration sécurisée

Le fichier principal est <CUPS_CONFIG>. La version publique montre les directives importantes:

LogLevel notice
MaxLogSize 10m
ErrorPolicy stop-printer
Listen localhost:631
Listen <CUPS_SOCKET>
Browsing No
BrowseLocalProtocols none
DefaultAuthType Basic
WebInterface Yes
IdleExitTimeout 60

Les blocs d'accès doivent autoriser localhost et réserver l'administration aux utilisateurs système autorisés:

<Location />
  Order allow,deny
  Allow localhost
</Location>

<Location /admin>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow localhost
</Location>
Point de sécurité

Listen localhost:631, Browsing No et BrowseLocalProtocols none empêchent l'usage réseau non voulu. Une écoute sur 0.0.0.0:631 est une exposition à corriger.

sudo systemctl restart cups.service
systemctl status cups.service

Interface web

L'administration locale se fait depuis:

http://localhost:631
  • Administration: ajout et gestion des imprimantes.
  • Printers: imprimantes configurées.
  • Jobs: files d'attente.
  • Classes: groupes d'imprimantes.

Ajouter une imprimante: ouvrir Administration, choisir l'imprimante détectée, sélectionner le pilote, puis imprimer une page de test.

Gestion en ligne de commande

lpstat -p -d
lpstat -t
lpstat -d
lpoptions -d <PRINTER_NAME>
lp <DOCUMENT>
lp -d <PRINTER_NAME> <DOCUMENT>
lp -n <COPIES> <DOCUMENT>
lp -o sides=two-sided-long-edge <DOCUMENT>
lp -o media=A4 <DOCUMENT>
lpstat -o
cancel <JOB_ID>
cancel -a <PRINTER_NAME>
cupsdisable <PRINTER_NAME>
cupsenable <PRINTER_NAME>
cupsaccept <PRINTER_NAME>
cupsreject <PRINTER_NAME>

Logs et monitoring

CUPS écrit des logs d'erreurs, d'accès et de pages. Les chemins exacts restent privés dans la page publique.

tail -n 50 <CUPS_ERROR_LOG>
tail -n 50 <CUPS_ACCESS_LOG>
tail -n 50 <CUPS_PAGE_LOG>
journalctl -u cups.service -n 50 --no-pager
journalctl -u cups.service -f

La rotation est normalement limitée par MaxLogSize. Le mode debug doit rester temporaire.

Debug et dépannage

Passer temporairement en debug, redémarrer, lire les logs, puis revenir à LogLevel notice.

LogLevel debug
sudo systemctl restart cups.service
tail -f <CUPS_ERROR_LOG>

Contrôles fréquents:

systemctl status cups.service
ss -tulnp | rg ':631'
lsusb
lpinfo -v
lpstat -o
lpstat -p
groups <OPERATOR>
cupsenable <PRINTER_NAME>
cancel -a <PRINTER_NAME>

Sécurité

La restriction principale doit venir de CUPS: écoute locale uniquement. Le firewall peut servir de seconde couche.

ss -tulnp | rg ':631'
ls -la <CUPS_CONFIG_DIR>
rg 'Require user|Listen|Browsing|BrowseLocalProtocols' <CUPS_CONFIG>
rg '401|403|404' <CUPS_ACCESS_LOG>

Sortie attendue: écoute sur 127.0.0.1:631 ou socket local, pas sur toutes les interfaces.

Commandes de référence rapide

sudo systemctl start cups.service
sudo systemctl stop cups.service
sudo systemctl restart cups.service
sudo systemctl reload cups.service
systemctl status cups.service
ss -tulnp | rg ':631'
lpstat -t
lpstat -o
lp <DOCUMENT>
lp -d <PRINTER_NAME> <DOCUMENT>

Workflow après modification de configuration

sudo systemctl restart cups.service
systemctl status cups.service
ss -tulnp | rg ':631'
lpstat -t
lp <TEST_PRINT_FILE>
  • CUPS actif.
  • Écoute sur localhost uniquement.
  • Imprimantes visibles.
  • Test d'impression réussi.

Maintenance

La maintenance couvre logs, jobs et sauvegarde de configuration.

cancel -x
cancel -a <PRINTER_NAME>
cp <CUPS_CONFIG> <CUPS_CONFIG_BACKUP>
tar czf <CUPS_BACKUP_ARCHIVE> <CUPS_CONFIG_DIR>
Spool et logs

Les purges de spool ou de logs sont destructrices. Elles doivent être précédées d'un diagnostic et ne sont pas publiées comme recette automatique.

Pilotes d'imprimantes

pacman -Ss printer
pacman -Q | rg 'cups|printer|hplip'
yay -Ss <VENDOR_OR_MODEL>
FamillePaquet public typique
HPhplip
Epsonepson-inkjet-printer-escpr
Samsungsplix
PDF virtuelcups-pdf

CUPS-PDF permet d'imprimer vers un fichier PDF local.

Ressources

  • Documentation CUPS.
  • Wiki Arch CUPS.
  • Base de données de pilotes.
  • Notes privées de configuration et dépannage, non publiées.