Turn Ubuntu into a CUPS print server for home and office

Across many Australian homes and small businesses, the printer still earns its keep despite years of paperless predictions. Whether you are a sole trader in Brisbane printing tax invoices, a remote worker in regional Tasmania sending off freight labels, or a family in Adelaide sharing a single colour laser across a couple of laptops, having one reliable machine on the network makes life simpler. Ubuntu, with its long-standing support for the Common UNIX Printing System, offers a surprisingly painless way to turn any spare computer or small server into a shared print hub for the household or a micro office.

The story behind CUPS is worth a quick nod. Originally developed by Easy Software Products and now maintained by Apple under an open source licence, CUPS has been the default printing stack on most Linux distributions for two decades. It uses the Internet Printing Protocol, supports IPP Everywhere, and ships with thousands of PostScript Printer Description files that cover the bulk of devices sold through Australian retailers such as JB Hi-Fi, Officeworks and the IT catalogues from local distributors. That mature ecosystem means a properly configured Ubuntu box can replace a dedicated print appliance without giving up the modern features people expect from a Wi-Fi printer.

In the walkthrough that follows, the focus is on practical steps rather than theoretical detail. You will prepare a host running a current long-term support release of Ubuntu, expose the service to your local network, add a real printer with the right driver, and then look at security and queue management. The same recipe works whether the server sits under a desk in Perth, on a shelf in a Sydney co-working space, or beside a router in a rural property connected through the Sky Muster satellite service.

Preparing the Ubuntu host and installing CUPS

The first decision is which machine will become the print server. A spare desktop, an Intel-based mini PC, or even a low-power device such as a refurbished thin client is plenty for a household. In most Australian homes the broadband router already hands out addresses through DHCP, so picking a fixed address for the server early avoids headaches when leases renew. A typical setup might reserve 192.168.0.10 for the print host, with the actual machine running Ubuntu 24.04 LTS or the current 22.04 LTS if you prefer the older kernel.

Installing CUPS itself is straightforward through the standard package archives. A single apt command pulls in the daemon, the web interface, and a healthy collection of drivers. After the install completes, the service needs to be enabled so it survives reboots, which is especially handy if the server doubles as a backup target or a small Nextcloud instance. Many Australian sysadmins I have spoken with like to keep the host patched automatically using unattended-upgrades, since those updates often apply after the family has stopped streaming the footy for the night.

Once the daemon is running, take a moment to confirm it answers on the loopback address before exposing it further. Opening the local management page at https://localhost:631 from a browser on the server itself is the quickest sanity check. If the interface loads and prompts for credentials, the basic plumbing is healthy and you can move on to network configuration. If you need to prepare a fresh USB stick to install Ubuntu in the first place, the step-by-step guide at https://ubuntunext.com/guides/2026/10/07/how-to-create-a-bootable-ubuntu-usb-drive-on-linux walks through the process from a Linux desktop.

Configuring CUPS for network access and discovery

By default, CUPS listens only on the loopback interface, which keeps the service locked to the local machine. To share printers with other devices on the local network, the main configuration file needs editing. The file lives at /etc/cups/cupsd.conf and contains a small set of directives that govern where the daemon advertises itself and which clients it trusts. Changing the Listen line so that CUPS binds to all interfaces, or to a specific address, is the standard approach, although many administrators prefer listing each subnet explicitly for finer control.

The next step is to relax the access rules in the same file so that the local subnet can reach the web interface and the printer shares. Inside each Location block, the default policy is to deny everything except local access. Adding Allow lines for the typical home range, such as 192.168.0.0/24, opens the door without exposing the server to the wider internet. Restarting the cups service after the change forces the new rules to take effect, and visiting the management page from another laptop on the network confirms that sharing is active.

Discovery is handled through two protocols: Bonjour, also known as mDNS, and the older SLP service. Ubuntu's avahi daemon already implements mDNS, so AirPrint-compatible printers and modern IPP clients will find the server automatically on networks that pass multicast traffic. If your router filters multicast, which occasionally happens on locked-down ISP-supplied hardware from Telstra or TPG, enabling a small relay or moving the server to a less restrictive segment restores discovery. The end result is that laptops, phones, and even smart TVs in the household can pick up the shared printer without typing a single IP address.

Adding printers and sharing them across the network

Adding a printer through the web admin page is a guided process that begins in the Administration tab. From there, selecting Add Printer triggers a search across the available backends, including USB devices, IPP network printers, and LPR queues on remote hosts. If the machine the server runs on has the printer physically attached through USB, the device usually appears as a local queue automatically. For wireless models that already speak IPP, pointing CUPS at the printer's URL is often more reliable than relying on the manufacturer driver.

Driver selection is where many newcomers stumble. CUPS ships with a curated set of generic drivers, but real-world results improve dramatically when you pick a model-specific PPD. For Brother, HP, and Canon devices sold through Australian channels, the open source foo2zjs, hplip, and Gutenprint drivers handle most home units. Open source drivers are particularly attractive in the Australian market, where printer ink is famously pricey and using compatible consumables is common. When in doubt, the lpinfo command can list a wide range of available drivers, and a search including the model number is enough to pinpoint the right file.

Once a queue exists, sharing is enabled with a single tick in the admin page. The shared queue is then visible to other clients on the network, who can add it through their own printer dialog. Windows machines install a generic IPP driver, macOS devices see the printer through Bonjour and add it without further configuration, and Linux desktops pull the same PPD from the server. In a household where one parent works in macOS and the children use Chromebooks for school, this kind of cross-platform support saves a lot of support calls.

Managing drivers, PPD files, and printer queues

Once the server is live, day-to-day administration tends to centre on a few recurring tasks. Adding a new model, replacing a worn-out unit, or simply rotating consumables all flow through the same web interface. The Classes feature is handy for offices that want to present two physical printers as a single logical queue, balancing load and providing redundancy when one machine runs out of toner. In a busy household where the kids are printing school assignments at the last minute, that redundancy quietly pays for itself.

Command-line tools remain the fastest way to manage queues at scale. The lpstat command lists active jobs, cancel removes stuck documents, and lpadmin changes defaults such as paper size or duplexing. These commands pair nicely with systemd timers that clear the queue overnight or back up the configuration directory. Backing up /etc/cups after every change is a small habit that pays off when a hard drive fails or an upgrade misbehaves, and the same backup can be restored to a freshly installed host in minutes.

Driver updates are worth keeping an eye on, especially for newer printers that may have only partial support in the main repositories. Some vendors, including Brother and Samsung, ship their own Linux packages through community-maintained repositories. Adding the right PPA or apt source extends the driver set without compromising the rest of the system. For Australian businesses that need to log print usage for internal accounting, CUPS can also be configured to write page count logs that feed into spreadsheets or reporting tools.

Securing the print server and monitoring usage

Printers are a small but real attack surface, particularly when they sit on the same network as laptops holding tax records, client data, or in the case of medical and legal practices, sensitive correspondence. A print server that exposes the admin interface to the entire subnet is an invitation for curious flatmates or guests to send jobs to your queues. Restricting the Allow rules to a smaller subnet or to specific IP addresses reduces that risk considerably, and requiring login for administrative changes through the DefaultAuthType directive prevents casual tampering.

Encryption through TLS is another easy win. CUPS can generate a self-signed certificate during installation, and most clients accept the warning in exchange for a private channel. For a small business that wants a clean trust chain, a free certificate from Let's Encrypt works just as well, provided the host has a stable public hostname. Printing over port 631 with TLS enabled keeps the document stream away from packet sniffers, which is reassuring for anyone sending invoices or statements through the queue.

Monitoring the service is the final piece of the puzzle. The CUPS error log under /var/log/cups records rejected jobs, authentication failures, and hardware errors. A short systemd timer can rotate the log weekly and email a summary to the administrator, which is useful when the printer is in a back office or a shed at the bottom of the garden. Pairing the log with a simple Grafana dashboard fed by node exporters turns the print server into a visible part of the wider monitoring stack, giving the same peace of mind that Australian sysadmins expect from any other networked service.

With the host patched, the queues shared, and the access list trimmed to the family or office subnet, the print server quietly handles its job for years. The proof of a good Linux setup is how rarely you think about it, and a well-configured CUPS host on Ubuntu is no exception. Set aside an afternoon, follow the steps above, and you will have a reliable shared printer that costs nothing in licence fees and slots neatly into any existing Ubuntu fleet.