Outils pour utilisateurs

Outils du site


lab:picups

Ceci est une ancienne révision du document !


Serveur d’impression sur Raspberry PI

Picups est un Raspberry PI 3B qui sert de serveur d'impression aux ordinateurs et smartphones connectés au réseau local.

Installation de Rasbian lite

Téléchargement de Raspbian version lite « Raspberry Pi OS Lite » sans interface graphique : https://www.raspberrypi.org/software/operating-systems/

Mettre à jour le pi :

sudo apt update
sudo apt upgrade

Définir une adresse statique au raspberry :

auto eth0
allow-hotplug eth0
iface eth0 inet static
 address 192.168.178.252/24
 gateway 192.168.178.1

Changement du nom du raspberry et du mot de passe pour l’utilisateur pi avec la commande

sudo raspi-config

Par défaut, le raspberry pi n’a pas de possibilité d’être administré en root. Un utilisateur root et un mot de passe sera cependant nécessaire pour ajouter des imprimantes et adminiproutr cups depuis l’interface graphique. On créé dont un utilisateur root pour le raspberry pi avec :

sudo passwd root

On peut vérifier en se connectant avec su que le compte root soit opérationnel. Installation de cups

Choix d’utiliser cette commande trouvée sur Debian Facile pour installer cups ainsi qu’en même temps les paquets de drivers recommandés comme HPLIP :

apt-get update && apt-get install --install-recommends task-print-server

Les paquets inclus sont :

task-print-server
  Dépend: tasksel
  Dépend: cups
  Dépend: cups-client
  Dépend: cups-bsd
  Recommande: foomatic-db-engine
  Recommande: printer-driver-all
  Recommande: hplip
  Recommande: hp-ppd
  Recommande: openprinting-ppds

Source : https://debian-facile.org/doc:reseau:cups

Accéder à l’interface graphique de cups

Sans modifier le fichier de configuration /etc/cups/cupsd.conf, on peut se connecter via un tunnel ssh depuis une machine sur le réseau :

ssh pi@192.168.178.252 -T -L 3634:localhost:631

Le choix du port 3634 est arbitraire.

Ensuite connexion via le navigateur en tapant :

http://localhost:3634/

NB : Il est aussi possible d’éditer le fichier de config pour accéder au serveur grâce à son ip depuis une autre machine : https://askubuntu.com/questions/23936/how-do-you-administer-cups-remotely-using-the-web-interface Mais ça n’a pas fonctionné facilement chez moi. Il faut peut être aussi commenter la ligne « Listen localhost:631 » et ajouter Port 631 comme ici : https://www.howtogeek.com/169679/how-to-add-a-printer-to-your-raspberry-pi-or-other-linux-computer/ Ou encore ouvrir les accès en tapant une commande : https://pimylifeup.com/raspberry-pi-print-server/

En fait, si on coche la case Autoriser l’administration à distance, il semble que le fichier est modifié pour une connexion de l’extérieur. Ajout des imprimantes dans l’interface graphique

Dans « Administration » → « Ajouter une imprimante ». Choisir l’imprimante locale ou réseau qu’on veut ajouter. Puis suivre la procédure pour choisir le driver et terminer la configuration. On peut déjà choisir de partager l’imprimante. On peut par la suite aussi cocher cette option dans le pannel d’admin (pour appliquer les modifications cups redémarre).

Ajout de l’imprimante Canon MF5630

L’imprimante Canon MF5630 utilise un protocole différent de la majorité des imprimantes appelé CARPS.

Le driver doit être récupéré sur github et compilé et installé.

Certains paquets doivent être préalablement installé sur le pi :

sudo apt install make gcc  libcups2-dev libcupsimage2-dev  cups-ppdc git

Puis :

mkdir driver-canon
cd driver-canon/
git clone https://github.com/ondrej-zary/carps-cups.git
cd carps-cups/
make
sudo make install

Partage avec SAMBA

Pour partager plus aisément les imprimantes avec les machines Windows, on peut installer samba :

sudo apt install samba

Dans /etc/samba/smb.conf, pour avoir des aperçus sur de vieux Windows (XP, 2000), on peut ajouter cette ligne :

use client driver = yes

On peut en principe ajouter les imprimantes cups dans samba avec la commande « cupsaddsmb -v -U root -a » mais ça n’a pas marché chez moi.

Accéder aux imprimantes depuis Windows

En principe, on peut accéder aux imprimante en explorant le réseau et en choisisant le pi parmi les machines qui apparaissent. Une boite dialogue s’ouvre pour dire que Windows n’a pas pu trouver les drivers sur le réseau, on clique sur OK et on choisit le driver dans la liste. Si l’imprimante n’a pas de drivers comme c’est le cas de la Canon MF5630 (pas de driver 64 bits), on peut simplement sélectionner le driver de Microsoft pour exporter en PDF car c’est de toute façon le driver compilé sur le pi qui sera utilisé.

Si Windows renvoit une erreur disant qu’il ne parvient pas à se connecter à l’imprimante, on peut l’ajouter via IP.

Dans « Panneau de configuration » → « Matériel et audio » → « Périphériques et imprimantes » → « Ajouter une imprimante ».

Windows ne trouve pas les imprimantes et on va dans « L’imprimante souhaitée n’est pas renseignée » et on choisit « Sélectionner une imprimante partagée par un nom ». Ne pas utiliser la syntaxe proposée par Windows mais :

http://192.168.0.X:631/printers/NomImprimante

Source : https://www.azurs.net/carnet/2013/09/raspberry-pi-serveur-impression-imprimante-hp-laserjet-p1006/

Pour nos imprimantes ça donne :

http://192.168.178.252:613/printers/HP_LaserJet_P1505n_USB_KQ16K79_HPLIP
http://192.168.178.252:613/printers/Canon_MF5630

cupsd.conf à la fin de l’opération

# Show troubleshooting information in error_log.
LogLevel debug
PageLogFormat
MaxLogSize 1m
# Allow remote access
Port 631
Listen /run/cups/cups.sock
# Share local printers on the local network.
Browsing On
BrowseLocalProtocols dnssd
DefaultAuthType Basic
WebInterface Yes
<Location />
  # Allow shared printing and remote administration...
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin>
  # Allow remote administration...
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  # Allow remote access to the configuration files...
  Order allow,deny
  Allow @LOCAL
</Location>
<Location /admin/log>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  # Allow remote access to the log files...
  Order allow,deny
  Allow @LOCAL
</Location>
<Policy default>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny,allow
  </Limit>
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default CUPS-Get-Devices>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Authenticate-Job>
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
<Policy authenticated>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    AuthType Default
    Order deny,allow
  </Limit>
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Default
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
<Policy kerberos>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    AuthType Negotiate
    Order deny,allow
  </Limit>
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job Cancel-My-Jobs Close-Job CUPS-Move-Job CUPS-Get-Document>
    AuthType Negotiate
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After Cancel-Jobs CUPS-Accept-Jobs CUPS-Reject-Jobs>
    AuthType Default
    Require user @SYSTEM
    Order deny,allow
  </Limit>
  <Limit Cancel-Job CUPS-Authenticate-Job>
    AuthType Negotiate
    Require user @OWNER @SYSTEM
    Order deny,allow
  </Limit>
  <Limit All>
    Order deny,allow
  </Limit>
</Policy>
lab/picups.1608107011.txt.gz · Dernière modification : 2021/06/09 12:11 (modification externe)