The Common UNIX Printing System™, or CUPS, is the software you use to print from applications like the web browser you are using to read this page. It converts the page descriptions produced by your application (put a paragraph here, draw a line there, and so forth) into something your printer can understand and then sends the information to the printer for printing.
Now, since every printer manufacturer does things differently, printing can be very complicated. CUPS does its best to hide this from you and your application so that you can concentrate on printing and less on how to print. Generally, the only time you need to know anything about your printer is when you use it for the first time, and even then CUPS can often figure things out on its own.
Install CUPS printer server in Debian
apt-get install cupsys cupsys-driver-gutenprint foomatic-db-gutenprint foomatic-filters fontconfig libtiff4 libfreetype6
NOTE: If your network use DHCP it’s a good idea to set up your server to use static IP. I will use as 172.20.22.74 for the server and 172.20.22.150 for administration workstation.
Default configuration file located at /etc/cups/cupsd.conf in this file you need to configure the following sections to make it work.
First, check the encryption setting and change
# Default authentication type, when authentication is required…
DefaultAuthType Basic DefaultEncryption IfRequested
Then we need to tell it to listen for the server change
# Only listen for connections from the local machine.
Listen localhost:631 Listen /var/run/cups/cups.sock
Listen localhost:631 Listen 172.20.22.74 Listen /var/run/cups/cups.sock
We need it to be visible to the entire network
# Show shared printers on the local network.
what machines that may access the server change
Browsing On BrowseOrder allow,deny BrowseAllow @LOCAL
Restrict access to the server…
<code><Location/> Order allow,deny Allow localhost </Location>
<Location/> Order allow,deny Allow localhost Allow 172.20.22.* </Location>
And the same for the configuration files change
# Restrict access to configuration files…
<Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow localhost </Location>
<Location /admin/conf> AuthType Basic Require user @SYSTEM Order allow,deny Allow localhost Allow 172.20.22.150 </Location>
Other configuration I left default one so need to change anything.
Now you need to restart CUPS using the following command
You should now be able to connect to the CUPS web interface from the administrator workstation (IP 172.20.22.150 in this example) by pointing your web browser at http://172.20.22.74:631/.
Setting up the CUPS clients
The CUPS clients are easy to set up and the config is identical on all machines.You need to install the following packages for client
apt-get install cupsys cupsys-client
Configuring CUPS Client
You need to create /etc/cups/client.conf as root
Now you need to edit the /etc/cups/client.conf file
Enter the following information the server IP and the encryption requirement
# Servername ServerName 172.20.22.74 # Encryption Encryption IfRequested
Save the file, then restart the client
LogLevel warning SystemGroup lpadmin # Allow remote access Port 631 Listen /var/run/cups/cups.sock # Enable printer sharing and shared printers. Browsing On BrowseOrder allow,deny BrowseAllow all BrowseRemoteProtocols CUPS BrowseAddress @LOCAL BrowseLocalProtocols CUPS dnssd DefaultAuthType Basic DefaultEncryption IfRequested <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 Basic Require user @SYSTEM # Allow remote access to the configuration files... Order allow,deny Allow @LOCAL </Location> <Policy default> <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 CUPS-Move-Job> 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 CUPS-Accept-Jobs CUPS-Reject-Jobs> AuthType Default Require user @SYSTEM Order deny,allow </Limit> <Limit Cancel-Job CUPS-Authenticate-Job> Require user @OWNER @SYSTEM Order deny,allow </Limit> <Limit All> Order deny,allow </Limit> </Policy>
# Servername ServerName 192.168.1.100 # Encryption Encryption IfRequested
In case CUPS stop printing, check following:
Show current print queue:
Show printer status:
lpc status all /
lpstat -a /
Remove all documents from queue:
Send test document to printer:
Stop CUPS daemon:
Check CUPS configuration, if there is something like following, comment those lines:
#State Stopped #StateMessage /usr/lib/cups/filter/foomatic-rip failed #Reason paused
Start CUPS daemon: