Projet open source
hanxi/cups-web avatar
hanxi/cups-web

cups-web : ce que le dépôt permet vraiment

CUPS Web est une interface Web auto-hébergée permettant de gérer les imprimantes et les files d'attente d'impression avec CUPS.

1 327 étoiles158 forksGoMIT

En bref

De quoi s’agit-il ?
Analyse en français de hanxi/cups-web, de son usage documenté, de ses prérequis et de ses limites observables.
À qui s’adresse-t-il ?
CUPS Web enveloppe CUPS dans une interface navigateur, emporte sa propre collection de pilotes dans l'image Docker et stocke les journaux d'impression dans SQLite. Le binaire nu n'inclut pas les outils de pilotes, si bien que la voie de déploiement détermine quelle part du flux décrit dans le README s'applique réellement.
Puis-je l’utiliser commercialement ?
Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
Est-il encore maintenu ?
Oui. Les derniers commits datent d’il y a 2 jours.
En quel langage est-il écrit ?
Principalement Go, d’après les statistiques de langage de GitHub.

Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 14 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.

ANALYSE OPEN SOURCE APPROFONDIE

Une interface navigateur pour CUPS

CUPS Web est un outil de gestion d'impression web construit sur CUPS. La description du dépôt formule l'objectif de transformer une imprimante USB domestique en service d'impression réseau accessible depuis n'importe quel navigateur, et le README cible les foyers et les petits bureaux. Les utilisateurs téléversent des fichiers via le navigateur, soumettent des travaux d'impression à distance, et l'application conserve un historique de chaque travail. Le backend est écrit en Go, le frontend en Vue 3, et la branche par défaut est master.

Formats de fichiers et chaîne de conversion

Le README liste PDF, images (JPG, PNG, GIF, HEIC), documents Office (doc/docx/xls/xlsx/ppt/pptx), OFD et texte brut parmi les formats pris en charge. Les fichiers Office passent par LibreOffice pour devenir des PDF, l'OFD passe par un convertisseur Java embarqué fondé sur ofdrw, et le texte ainsi que les images sont rendus en PDF côté serveur. Plusieurs images peuvent être sélectionnées en un seul travail et fusionnées en un PDF unique. Les options d'impression couvrent le nombre d'exemplaires, le recto verso, la couleur ou le noir et blanc, le format de papier, le type de papier, l'orientation, les plages de pages, la mise à l'échelle et l'impression en miroir. Un aperçu montre le PDF converti, une représentation visuelle de l'orientation et une estimation du nombre de pages. La section de dépannage mentionne un délai de 60 secondes pour la conversion Office et OFD, si bien que des documents complexes peuvent échouer.

Couverture des pilotes et page de gestion des pilotes

L'image Docker embarque un ensemble de paquets de pilotes d'imprimante Debian, dont printer-driver-all, printer-driver-cups-pdf, printer-driver-escpr, printer-driver-foo2zjs, printer-driver-brlaser, les bibliothèques PPD foomatic-db-compressed-ppds et openprinting-ppds, hplip avec hpijs-ppds et hp-ppd, et ipp-usb pour la prise en charge sans pilote d'IPP Everywhere, AirPrint et Mopria. Des pilotes constructeurs comme Canon UFR II, Canon CAPT, le firmware HP LaserJet 1020, Epson ESC/P-R 2, Epson Chine, Konica Minolta bizhub, Sharp PostScript et Gutenprint s'installent à la demande, soit via une page web visible des seuls administrateurs, soit en ligne de commande avec docker exec et des commandes comme driver-install. La colonne architecture du README marque des limites réelles : quand le constructeur ne fournit pas de binaire pour l'architecture CPU actuelle, le bouton d'installation est désactivé avec la raison affichée. Les installations s'exécutent en arrière-plan de façon asynchrone, avec une carte de progression qui se rafraîchit toutes les deux secondes, et une seule tâche de pilote peut tourner à la fois, car apt et dpkg détiennent un verrou global. Les fichiers .ppd personnalisés téléversés sont enregistrés dans le volume .drivers et restaurés après reconstruction du conteneur, tandis que les paquets .deb ne sont que consignés et doivent être téléversés à nouveau après un redémarrage.

Utilisateurs, journaux d'impression et console d'administration

Le système d'utilisateurs définit deux rôles, admin et user. Au premier démarrage, l'application crée un compte par défaut admin/admin, et le README précise que ce compte ne peut être ni supprimé ni renommé. Chaque travail d'impression enregistre le fichier, le nombre de pages, les exemplaires, les réglages recto verso et couleur, et le statut. La console d'administration crée et modifie les utilisateurs, interroge les journaux d'impression par nom d'utilisateur ou plage de dates, et applique une politique de conservation qui supprime les journaux expirés et leurs fichiers lors d'une vérification horaire. La section de démarrage rapide demande de changer immédiatement le mot de passe par défaut après la première connexion.

Déploiement Docker versus binaire nu

Le README documente deux voies de déploiement. Le fichier Docker Compose démarre un conteneur unique qui exécute à la fois CUPS et le service web, mappe le port 631 pour CUPS et le port 1180 pour l'interface web sur l'hôte, et monte quatre volumes de données ainsi que l'arborescence des périphériques USB. Le binaire nu ne contient que le service web ; le README indique que CUPS doit déjà être installé et configuré sur l'hôte, et que la page de gestion des pilotes ne fonctionnera pas, car les scripts d'installation et le répertoire /opt/cups-drivers n'existent que dans l'image. La détection automatique des imprimantes dépend de lpinfo du paquet cups-client, et la normalisation Office, OFD et PDF exige LibreOffice, Java et Ghostscript sur l'hôte. L'impression OFD fonctionne prête à l'emploi uniquement dans l'image Docker ; un déploiement binaire nécessite un environnement Java et un ofd-converter.jar placé dans /ofd-converter.jar.

Configuration, volumes et sauvegarde

Des variables d'environnement définissent l'écoute web (LISTEN_ADDR, défaut :8080), le chemin de la base SQLite (DB_PATH), le répertoire de téléversement (UPLOAD_DIR), l'endpoint CUPS (CUPS_HOST), le nom et le mot de passe de l'administrateur CUPS (CUPSADMIN et CUPSPASSWORD, tous deux par défaut print), et le fuseau horaire (TZ, défaut Asia/Shanghai). Le fichier compose réattribue le port web à 1180 sur l'hôte. Quatre volumes conservent les données persistantes : .etc pour la configuration CUPS, .data pour la base cups-web, .uploads pour les fichiers originaux et convertis, et .drivers pour les instantanés des pilotes installés manuellement. La section de sauvegarde copie la base et archive les trois autres répertoires, et avertit que .drivers est la seule copie des pilotes tiers et que l'instantané est spécifique à l'architecture : restaurer un .drivers sauvegardé sur amd64 vers une machine arm64 déclenche un avertissement indiquant que les pilotes ont été installés pour une autre architecture. La prise en charge du branchement à chaud USB repose sur le montage de /dev/bus/usb en tant que répertoire et sur une règle cgroup de périphériques pour le numéro majeur 189, avec privileged: true proposé comme solution de repli quand device_cgroup_rules n'est pas disponible.

Posture de sécurité

Le README décrit une authentification de session fondée sur Gorilla securecookie, avec une clé générée automatiquement et conservée dans la base de données, des vérifications CSRF sur toutes les requêtes non GET/HEAD/OPTIONS via un en-tête X-CSRF-Token, et un stockage des mots de passe en bcrypt. La page des pilotes n'est visible que des administrateurs, et les comptes user ordinaires ne peuvent ni voir ni appeler les endpoints de pilotes. Le README est explicite sur le risque des téléversements .deb : dpkg exécute les scripts d'installation du paquet en root, de sorte que les identifiants administrateur équivalent en pratique à root dans le conteneur, et chaque téléversement écrit le nom de l'utilisateur dans le journal du conteneur. Il conseille de ne téléverser que des .deb de confiance et de ne pas exposer le compte administrateur dans des environnements multi-utilisateurs non fiables. La source ne dit pas si ces mécanismes ont été audités indépendamment ; c'est une question de vérification qui reste ouverte.

Licence · hanxi cups web

Le projet est publié sous licence MIT, copyright 2025 涵曦 (Han Xi). La licence autorise l'utilisation, la copie, la modification, la fusion, la publication, la distribution, la sous-licence et la vente de copies, à condition que l'avis de copyright et l'avis de permission figurent dans toutes les copies ou portions substantielles. Le logiciel est fourni tel quel, sans garantie de qualité marchande, d'adéquation à un usage particulier ni d'absence de contrefaçon, et les auteurs ne sont pas responsables des réclamations, dommages ou autres responsabilités découlant du logiciel. Le texte de la licence ne dit rien du support, des mises à jour de sécurité ou des obligations de maintenance.

Conclusion éditoriale

CUPS Web enveloppe CUPS dans une interface navigateur, emporte sa propre collection de pilotes dans l'image Docker et stocke les journaux d'impression dans SQLite. Le binaire nu n'inclut pas les outils de pilotes, si bien que la voie de déploiement détermine quelle part du flux décrit dans le README s'applique réellement. Pour cups-web, le premier contrôle utile porte sur CUPS Web, Docker Compose, l’interface d’administration et la configuration d’impression décrites dans le README : exécuter le chemin documenté, inspecter la sortie et vérifier les permissions ou dépendances annoncées. Le projet convient au profil qui accepte ces prérequis et ne convient pas à une intégration qui exige des garanties absentes du README.

Sources officielles

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Notes de la communauté

Notes de la communauté