After years of working as a support technician, I can tell you one of the most frustrating pieces of technology out there is the printer. When they work, they are an indispensable tool in the office. When they don’t work (as it often happens), they are a never-ending point of frustration.

This is especially true when your printer is attached to a Windows machine that can cause any number of problems, without rhyme or reason. Getting that shared printer back up and running can take some time. Or you might wind up having to call in support. 
To make matters worse, printer problems don’t just plague end users. This almost universal bone of contention causes problems for every level of the user, even all the way up to JavaScript developers, like those at BairesDev.

Fortunately, there’s a way for your business to avoid the headaches brought about by sharing printers from desktop machines. That solution is to deploy a Linux printer server. Once you have such a server up and running, you’ll find it will serve you without fail (so long as the hardware and your network don’t become a problem).

Outside of reliability, the fact that you’ll be using open source means the only cost for you is the hardware. 

Requirements

First off, you need to have a printer that supports Linux. At one point in time, this was a challenge that caused many users to avoid the Linux print server. But that’s all in the past. Today, it’s fairly easy to have a Linux printer. To find out what printers are supported by Linux, check out the OpenPrinting site

With your supported printer at the ready, you’ll need to make sure it’s connected to your Linux server. 

You’ll also need to have a Linux server available. I’ll be demonstrating with Ubuntu Server 18.04, as that’s one of the most user-friendly Linux server distributions on the market. Do note, however, that Ubuntu Server 18.04 installs without a GUI, so you’ll be working from the command line.

Finally, you’ll need a user with sudo privileges.

And that it’s. Let’s get to work.

Installing the CUPS printer server software

The first thing to take care of is the installation of the CUPS printer server software. CUPS stands for Common Unix Printer Server and has been around for some time. 

To install CUPS, log into your Ubuntu server and issue the command:

sudo apt-get install cups -y

Once the installation completes, you’ll need to start the CUPS daemon and configure it to start at boot (otherwise you’ll have to start it manually anytime the server goes down). To start the CUPS daemon, issue the command:

sudo systemctl start cups

 To enable the CUPS daemon at boot, issue the command:

sudo systemctl enable cups

Configuring CUPS

With CUPS installed, it’s time to configure it. Only a few quick changes need to be made within the configuration file. To open that file for editing, issue the command:

sudo nano /etc/cups/cupsd.conf

The first change you need to make is the line:

Browsing Off

Change that to:

Browsing On

Next, you need to configure CUPS so that the web-based manager is accessible from within your Local Area Network (LAN). Look for the line:

Listen localhost:631

Change that line to:

Port 631

For our next trick, you’ll have to make sure that CUPS is listening on all network interfaces. Look for the following section:

<Location />

  Order allow, deny

</Location>

Change that to:

<Location />

  Order allow, deny

  Allow @LOCAL

</Location>

Finally, you’ll want to add access to the CUPS web-based admin console. Look for the section:

<Location /admin>

  Order allow, deny

</Location>

Change that to:

<Location /admin>

  AuthType Default

  Require valid-user

  Order allow, deny

  Allow @LOCAL

</Location>

If you do opt to make the web-based admin console available, you might want to lock it down to allow only a specific user. To do this, you would change the line:

Require valid-user

to

Require user @SYSTEM

Save and close the cupsd.conf file. Restart the CUPS daemon with the command:

sudo systemctl restart cups

If you opted to lock down the admin console to a specific user, you’ll want to create that user with the command:

sudo useradd -g lpadmin cupsadmin

Set the new user’s password with the command:

sudo passwd cupsadmin

With that configuration, you can point a browser to https://SERVERIP/admin (where SERVERIP is the IP address of the machine hosting CUPS). You will be prompted to log in with the cupsadmin user and the password you set above.

Share the printer via Bonjour and IPP protocols

You’ll want to make sure your printer is visible to your LAN via Bonjour (for macOS desktops) and IPP (for most other desktops). To make this work, you’ll need to install the avahi daemon with the command:

sudo apt install avahi-daemon -y

Once installed, start and enable the daemon with the commands:

sudo systemctl start avahi-daemon

sudo systemctl enable avahi-daemon

Open the firewall

If you happen to have the UFW firewall enabled on the Server, allow Bonjour and IPP printer traffic through with the command:

sudo ufw all 5353/udp

Connecting your printer

At this point, everything is ready for desktops to connect. How you connect the desktop to the printer server will depend on which desktop you are using. For example, with Pop!_OS Linux, I can go to Settings > Printers, and (as long as the necessary drivers are installed) the new printer will automatically appear (Figure 1).

Figure 1

Our printer on the CUPS printer server is now available for connection.

Conclusion

And that’s all there is to set up a reliable Linux printer server. The only hiccup you will run across is if you have entities outside of your LAN (such as third-party JavaScript development companies). To allow those groups to use the printers connected to the server, you’ll need to employ a VPN. Otherwise, your printer server is ready and should serve you without fail.

Posted by Miley Dowling

Leave a reply

Your email address will not be published. Required fields are marked *