Printer Sharing Over a Network in Ubuntu

If you have more than one Ubuntu machines on a network you should definitely set up printer sharing for them. It saves the cost of having to buy a printer for each machine or have to move to another Ubuntu machine each time you want to print something.
Luckily, setting up a Ubuntu Print server and printing through other Ubuntu clients is very easy. The only per-requisite for printer sharing is that you need CUPS (Common UNIX Printing System).  CUPS uses the standard Internet Printing Protocol (IPP) to handle print jobs across a network.  You can configure printer sharing in three easy steps:
STEP 1: Installing CUPS
You can install CUPS through Sudo using the following terminal prompt:
sudo apt-get install cupsys cupsys-client

After that just enter your user password and the packages should be downloaded and installed in a few minutes.

STEP 2: Configuring the Ubuntu Print Server
Now that you have CUPS installed, you need to go to your Ubuntu machine, the one which has the printer connected to it. This will be your “Ubuntu Print Server”.  You can configure it properly as follows:
·         Go to System > Administration > Printing.
·         The printer configuration window should pop up.
·         Now select the server tab from the menu bar and then open settings.
·         Once you are in the Basic server settings menu, check the box titled “Publish shared printers connected to this server” and click OK.
·         Now right click the printer you need to share and make sure the “Shared” option is checked, if not check it now.

Now that you have configured the Ubuntu server to share the attached printer(s), we’ll head on to:

STEP 3: Setting up client Ubuntu machines for remote Printing.
The client machines are the ones you want to use to print documents remotely to the Ubuntu Print server.  You need to repeat the following steps on every Ubuntu client (that you want to print from) on the network to set up remote printing.

·         Open System > Administration > Printing
·         In the Printer Configuration window, go to Add > Network Printer.
·         Click on “Find Network Printer and then click on Find again.
·         Optionally you can specify the “Ubuntu Print server’s” IP address or Host name if you are having problems finding the printer.
·         Once you click Find, printers connected to the Ubuntu server should show up here.  If they don’t show up you can open the Terminal and enter the following Prompt to restart CUPS and then check again:
·         sudo /etc/init.d/cups restart

And that’s it; you should now be able to print remotely from your Ubuntu clients to the Print server.
A few additional notes:
  1. You need CUPS on both the Print server and the client PCs for this to work properly. 
  2.  It’s recommended that you assign your Print server a static IP address to prevent issues if the IP address change. Optionally when going to “Find Network Printer” in Step 3, you could specify the Host name to prevent problems. 
  3. This method only works for Printer sharing between Ubuntu machines. If you want to Print from a Windows PC to a Ubuntu server, or from a Ubuntu client to a Windows server, you’ll need to Install SAMBA which is another protocol you need to make cross platform Printer sharing between Ubuntu/Windows OS work.