UbuntuUbuntu Based

How To Install CUPS Print Server on Ubuntu 24.04 LTS

Install CUPS Print Server on Ubuntu 24.04

The Common Unix Printing System (CUPS) stands as the standard printing solution for Unix-like operating systems, including Ubuntu. As a robust print server, CUPS enables efficient printer sharing, sophisticated print job management, and seamless network printing capabilities. By transforming your Ubuntu 24.04 LTS machine into a centralized print server, you can manage multiple printing devices across your network, reducing hardware costs and simplifying maintenance.

Ubuntu 24.04 LTS, the latest long-term support release, provides an excellent foundation for running CUPS. With five years of security updates and package support, this distribution ensures stability and reliability for your print server infrastructure. Whether you’re a system administrator managing an office network, a small business owner seeking cost-effective printing solutions, or a home user wanting to share a printer among multiple devices, this guide will walk you through the complete process of installing and configuring CUPS.

By the end of this comprehensive tutorial, you’ll have gained the knowledge and skills to implement a fully functional CUPS print server on Ubuntu 24.04 LTS, capable of serving Windows, macOS, Linux, and mobile clients across your network.

Table of Contents

Understanding CUPS Print Server

CUPS revolutionized Unix printing when it was introduced and has since become the de facto standard printing system across Linux distributions, including Ubuntu. Originally developed by Apple Inc., CUPS is now maintained as open-source software, allowing continuous improvement and widespread adoption.

At its core, CUPS implements the Internet Printing Protocol (IPP), a modern network printing protocol that enables advanced printing capabilities over standard TCP/IP networks. This protocol support is supplemented by compatibility with other printing standards, including:

  • Bonjour/Avahi for automatic printer discovery
  • Samba for Windows-compatible printer sharing
  • AirPrint for direct printing from iOS and macOS devices
  • IPP Everywhere for driverless printing

The architecture of CUPS follows a client-server model, where the CUPS daemon (cupsd) manages all aspects of printing. When a print job is submitted, CUPS processes it through a series of filters that convert the document into a format suitable for the target printer. This modular approach allows CUPS to support virtually any printer with the appropriate drivers.

What distinguishes CUPS from other printing solutions is its flexibility, comprehensive web-based administration interface, and extensive printer compatibility. As an open-source solution, it provides enterprise-grade functionality without licensing costs, making it especially valuable for organizations with budget constraints.

Prerequisites for Installation

Before proceeding with the installation of CUPS on Ubuntu 24.04 LTS, ensure your system meets the following requirements:

System Requirements:

  • Ubuntu 24.04 LTS (desktop or server edition)
  • At least 2GB RAM (4GB recommended for busy print servers)
  • Minimum 10GB free disk space
  • Network connectivity (for remote printer access)

User Permissions:

  • Administrative (sudo) access to install packages and modify system configurations
  • Membership in the appropriate groups (typically ‘lpadmin’) for printer administration

Network Configuration:

  • Static IP address recommended for the print server
  • Open ports in your firewall (specifically TCP port 631 for CUPS and UDP port 5353 for Avahi/Bonjour service discovery)
  • Proper hostname resolution if using DNS names instead of IP addresses

Printer Considerations:

  • Verify printer compatibility with Linux (check openprinting.org database)
  • Have printer drivers or PPD files available if needed
  • USB cable or network details for printer connection

Before making significant changes to your system, it’s advisable to:

  • Back up any existing printing configuration files
  • Document your current printer settings if upgrading from a previous setup
  • Ensure your system is fully updated with the latest security patches

An active internet connection will be required during installation to download packages and potentially printer drivers from manufacturer websites or repositories.

Installing CUPS on Ubuntu 24.04 LTS

Installing CUPS on Ubuntu 24.04 LTS is straightforward due to its inclusion in the standard repositories. Follow these detailed steps to get your print server up and running:

Updating System Repositories

Begin by updating your system’s package lists to ensure you’re installing the latest version of CUPS:

sudo apt update

This command refreshes your system’s knowledge of available packages and their versions.

Installing CUPS Packages

On Ubuntu desktop editions, CUPS often comes pre-installed. To verify if it’s installed or to install it explicitly, use:

sudo apt install cups

This will install the core CUPS packages. If you need additional components for specific functionalities (like PDF printing support), you can install them with:

sudo apt install cups-pdf

For network printer discovery, install:

sudo apt install cups-ipp-utils

The installation process should complete within a few minutes, depending on your internet connection speed.

Starting and Enabling the CUPS Service

After installation, start the CUPS service with:

sudo systemctl start cups

To ensure CUPS starts automatically whenever your system boots, enable it:

sudo systemctl enable cups

This ensures continuous printer availability without manual intervention after system restarts.

Verifying Installation Success

Confirm that CUPS is running correctly with:

systemctl status cups

You should see output indicating that CUPS is “active (running)” with no error messages. The output will look similar to:

● cups.service - CUPS Scheduler
     Loaded: loaded (/lib/systemd/system/cups.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2025-04-18 08:15:03 WIB; 2min 36s ago
   Main PID: 664 (cupsd)
      Tasks: 1 (limit: 4651)
     Memory: 2.3M
        CPU: 215ms
     CGroup: /system.slice/cups.service
             └─664 /usr/sbin/cupsd -l

If you encounter any errors during installation, check that your system meets all prerequisites and that you have proper internet connectivity.

Basic CUPS Configuration

Proper configuration is essential for your CUPS print server to function efficiently across your network. Let’s walk through the fundamental configuration steps:

Locating and Backing Up Configuration Files

Before making any changes, create a backup of the main CUPS configuration file:

sudo cp /etc/cups/cupsd.conf /etc/cups/cupsd.conf.original

This allows you to revert to the original configuration if needed.

Essential Configuration Changes

Open the CUPS configuration file for editing:

sudo nano /etc/cups/cupsd.conf

Now, make the following key adjustments:

1. Enable Printer Sharing: Find the line that says “Browsing Off” and change it to:

Browsing On

This allows other computers on your network to discover printers connected to your CUPS server.

2. Configure Network Access: By default, CUPS only listens on localhost. To allow remote administration, modify the listening directive:

# Listen localhost:631
Listen 631

This change makes CUPS listen on all network interfaces. For enhanced security, you can specify a particular interface instead.

3. Set Up Access Control: Add or modify the following sections to allow remote administration:

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow @LOCAL
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow @LOCAL
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require valid-user
  Order allow,deny
  Allow @LOCAL
</Location>

These directives permit access from local network addresses while maintaining security.

Configuring Firewall Settings

If you’re using Ubuntu’s default firewall (UFW), you’ll need to allow traffic on the CUPS ports:

sudo ufw allow 631/tcp
sudo ufw allow 5353/udp

The first command allows the CUPS web interface and printing services, while the second enables Avahi/Bonjour service discovery for automatic printer detection.

Applying Configuration Changes

After making these modifications, save the file and restart CUPS to apply the changes:

sudo systemctl restart cups

Verify that your configuration has been applied correctly:

sudo systemctl status cups

You should now be able to access the CUPS web interface by navigating to http://your-server-ip:631 from any computer on your network.

Advanced CUPS Configuration Options

For environments with specialized requirements, CUPS offers advanced configuration options. These settings enhance functionality, improve user experience, and provide greater administrative control:

Setting Up Printer Classes

Printer classes allow you to group similar printers together, providing automatic load balancing and failover capabilities:

sudo lpadmin -p class_name -c printer1,printer2,printer3

When users print to the class, CUPS automatically routes the job to the first available printer in the group. This is particularly useful for high-traffic environments where print speed and uptime are critical.

Configuring Printer Policies and Restrictions

CUPS allows you to set policies defining who can use specific printers and how they can be used. In the CUPS web interface, navigate to Administration > Server Settings > Edit Configuration File, and add restrictions like:

<Printer restrict_example>
  <Limit Send-Document>
    Order deny,allow
    Deny From All
    Allow From 192.168.1.0/24
  </Limit>
</Printer>

This example restricts printing on the “restrict_example” printer to users on the 192.168.1.0/24 subnet.

Setting Default Options for All Printers

To define global defaults for all printers, modify the /etc/cups/cupsd.conf file and add a section like:

DefaultPolicy default
<Policy default>
  JobPrivateAccess default
  JobPrivateValues default
  SubscriptionPrivateAccess default
  SubscriptionPrivateValues default
  <Limit Create-Job Print-Job Print-URI Validate-Job>
    Order deny,allow
    Allow From All
  </Limit>
</Policy>

These settings establish baseline behaviors that apply to all printers unless overridden by printer-specific configurations.

Implementing Print Quotas and Accounting

While CUPS itself doesn’t include built-in quota functionality, you can integrate it with quota management tools like PyKota or PrintQuota:

sudo apt install pykota

After installation, configure PyKota according to your organization’s requirements to monitor and limit user printing.

Configuring Automated Error Notifications

Set up email notifications for print errors by adding the following to cupsd.conf:

ErrorPolicy stop-printer
MaxLogSize 0

Then configure the mailto parameter to receive alerts:

sudo lpadmin -p printer_name -o printer-error-policy=abort-job -o notify-mailto=admin@example.com

This ensures administrators are promptly notified of printing issues.

Performance Tuning for High-Volume Environments

For busy print servers, optimize performance with these settings in cupsd.conf:

MaxJobs 500
MaxJobsPerPrinter 100
MaxJobsPerUser 50
FileDevice Yes
Timeout 300

These parameters adjust job queuing behavior and timeouts to better handle high-volume printing environments.

Setting Up the CUPS Web Interface

The CUPS web interface provides a user-friendly method for managing your print server. Here’s how to access and secure it:

Accessing the Web Interface

The CUPS administration interface is available at:

https://localhost:631

If you’re accessing it from a remote machine, replace “localhost” with your server’s IP address or hostname. The interface provides comprehensive control over all aspects of your print server.

Install CUPS Print Server on Ubuntu 24.04

Securing the Web Interface with HTTPS

By default, CUPS uses HTTP for its web interface. To enhance security with HTTPS:

1. Generate a self-signed certificate (or use an existing one):

sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cups/ssl/server.key -out /etc/cups/ssl/server.crt

2. Update the cupsd.conf file to use SSL:

ServerCertificate /etc/cups/ssl/server.crt
ServerKey /etc/cups/ssl/server.key

3. Restart CUPS to apply the changes:

sudo systemctl restart cups

This ensures that administrative communications are encrypted, protecting sensitive information like printer credentials.

Navigating the Administrative Dashboard

The CUPS web interface is organized into several main sections:

  • Home: Displays available printers and classes
  • Administration: Provides server and printer management options
  • Classes: Allows you to create and manage printer groups
  • Jobs: Shows current and completed print jobs
  • Help: Provides documentation and troubleshooting assistance

Familiarize yourself with these sections to efficiently manage your print server.

Setting Up Administrative Users and Permissions

By default, CUPS uses the system’s user authentication. To manage who can administer CUPS:

1. Add users to the ‘lpadmin’ group:

sudo usermod -a -G lpadmin username

2. Configure authentication in cupsd.conf:

DefaultAuthType Basic
<Location /admin>
  AuthType Basic
  Require user @SYSTEM
</Location>

This restricts administrative access to members of the specified group.

Customizing the Web Interface Appearance

While CUPS doesn’t offer extensive customization options, you can add your organization’s branding by placing a custom logo at:

/usr/share/cups/doc-root/images/cups-icon.png

Ensure the new image maintains the same dimensions as the original for proper display.

Troubleshooting Web Interface Access Issues

If you can’t access the CUPS web interface:

1. Verify the CUPS service is running:

systemctl status cups

2. Check firewall settings:

sudo ufw status

3. Review error logs:

tail -n 50 /var/log/cups/error_log

4. Ensure the Listen directive in cupsd.conf is correctly configured for your network environment.

Installing Printer Drivers on Ubuntu

Printer drivers are essential for proper communication between your operating system and printers. Here’s how to set them up on Ubuntu 24.04 LTS:

Understanding the Role of Printer Drivers in CUPS

Printer drivers translate print jobs into commands that specific printer models can understand. CUPS uses PostScript Printer Description (PPD) files to define printer capabilities and driver information. While modern printers often support driverless printing via IPP Everywhere, many still require specific drivers for full functionality.

Installing HPLIP for HP Printers

The HP Linux Imaging and Printing (HPLIP) package provides comprehensive support for HP printers:

sudo apt install hplip

For advanced features like scanning in all-in-one devices, install the full package:

sudo apt install hplip-gui

After installation, you can use the hp-setup utility to configure your HP printer:

sudo hp-setup -i

This interactive tool guides you through the setup process, including network discovery for wireless HP printers.

Setting Up Gutenprint Drivers

Gutenprint provides high-quality drivers for Canon, Epson, HP, and many other printer brands:

sudo apt install printer-driver-gutenprint

These drivers offer excellent print quality and are often the best choice for photo printing on supported devices.

Configuring Driverless Printing with IPP Everywhere

Modern printers supporting the IPP Everywhere standard work without traditional drivers:

sudo apt install cups-ipp-utils

After installation, CUPS can automatically discover and configure compatible printers with minimal user intervention.

Finding and Installing Manufacturer-Specific Drivers

For printers requiring proprietary drivers:

  1. Visit the manufacturer’s website to download Linux drivers
  2. Check the OpenPrinting database (openprinting.org) for compatible drivers
  3. Install downloaded drivers following the manufacturer’s instructions

For example, for many Epson printers:

sudo apt install printer-driver-escpr

For Brother printers, you may need to download and install .deb packages from the manufacturer’s website.

Verifying Driver Installation and Compatibility

After installing drivers, verify they’re properly recognized:

lpinfo -m

This command lists all available printer drivers. To test basic printing functionality, create a simple text file and print it:

echo "Test printing with CUPS" > test.txt
lp test.txt

This verifies that your driver installation is working correctly.

Adding Local Printers to CUPS

Connecting local printers to your CUPS server involves several steps to ensure proper detection and configuration:

Connecting Printers via USB and Direct Connections

When connecting a printer via USB:

  1. Power on the printer before connecting it to your Ubuntu system
  2. Connect the USB cable between the printer and your computer
  3. Wait a few moments for Ubuntu to detect the new hardware

Most modern printers are automatically detected, but some may require additional steps.

Detecting Local Printers Automatically

CUPS can automatically detect connected printers. To view detected devices:

lpinfo -v

This command lists all available printer connection methods and detected devices. USB printers typically appear as “usb://Manufacturer/Model” entries.

Adding Printers Through the CUPS Web Interface

For a graphical approach to adding printers:

  1. Open a web browser and navigate to http://localhost:631/admin
  2. Click “Add Printer”
  3. When prompted, enter your administrator username and password
  4. Select the local printer from the “Local Printers” list
  5. Provide a name, description, and location for the printer
  6. Select the appropriate driver from the list
  7. Set default options and click “Add Printer”

This process guides you through all necessary configuration steps with a user-friendly interface.

Command-Line Printer Addition Using lpadmin

For server environments or scripted deployments, use the lpadmin command:

sudo lpadmin -p printer_name -E -v usb://Manufacturer/Model -m driver_name.ppd

Replace printer_name with your chosen name, usb://Manufacturer/Model with the actual device URI (from lpinfo -v), and driver_name.ppd with the appropriate driver file.

Setting Printer-Specific Options and Defaults

After adding a printer, configure its default settings:

sudo lpadmin -p printer_name -o option=value

Common options include:

  • media=a4 (sets default paper size)
  • sides=two-sided-long-edge (enables duplex printing)
  • resolution=600dpi (sets print resolution)

These settings can also be configured through the CUPS web interface under the printer’s “Administration” tab.

Testing Local Printer Functionality

To verify your printer is working correctly:

  1. From the CUPS web interface, select the printer and click “Print Test Page”
  2. Or use the command line:
lp -d printer_name /usr/share/cups/data/testprint

A successful test print indicates that your printer is properly configured and ready for use.

Adding Network Printers to CUPS

Network printers expand your printing capabilities beyond directly connected devices. Here’s how to add them to your CUPS server:

Discovering Network Printers Using Various Protocols

CUPS can discover network printers using several methods:

sudo lpinfo -v

For more specific discovery methods:

# Discover printers using DNS-SD/Bonjour
avahi-browse -a -v -t -r

# Discover network printers using SNMP
/usr/lib/cups/backend/snmp

These commands help identify available network printers and their connection methods.

Adding Printers by IP Address or Hostname

To add a printer using its IP address:

  1. In the CUPS web interface, click “Add Printer”
  2. Select “Internet Printing Protocol (ipp)” or “AppSocket/HP JetDirect”
  3. Enter the URI in the format:
  • For IPP: ipp://printer-ip-address/ipp/print or ipp://printer-ip-address:631/ipp/print
  • For JetDirect: socket://printer-ip-address:9100

Alternatively, use the command line:

sudo lpadmin -p network_printer -E -v socket://192.168.1.100:9100 -m driver_name.ppd

Replace 192.168.1.100 with your printer’s IP address and driver_name.ppd with the appropriate driver.

Configuring Network Printer Options

When adding network printers, you can choose from various protocols:

  • IPP: The modern standard, offering bidirectional communication
  • LPD: Legacy Unix printing protocol, widely supported
  • AppSocket/HP JetDirect: Direct socket connection, commonly used by many printer brands

Select the protocol best supported by your printer for optimal performance.

Setting Up Printer Sharing Across the Network

To share a printer connected to your CUPS server:

1. Edit /etc/cups/cupsd.conf and ensure these lines are present:

Browsing On
BrowseLocalProtocols dnssd

2. Adjust access permissions to allow remote connections:

<Location /printers>
  Order allow,deny
  Allow @LOCAL
</Location>

3. Restart CUPS to apply changes:

sudo systemctl restart cups

This makes your printers discoverable by other computers on your network.

Implementing Bonjour/Avahi for Automatic Printer Discovery

For seamless printer discovery:

sudo apt install avahi-daemon
sudo systemctl enable avahi-daemon
sudo systemctl start avahi-daemon

Avahi broadcasts your printers using the Bonjour protocol, allowing automatic discovery by macOS, iOS, and Linux clients.

Troubleshooting Network Printer Connection Issues

If you’re having trouble connecting to network printers:

1. Verify network connectivity:

ping printer-ip-address

2. Check that the printer is using the expected protocol and port:

nmap -p 631,9100 printer-ip-address

3. Examine CUPS error logs:

tail -f /var/log/cups/error_log

Common issues include incorrect IP addresses, firewall restrictions, or incompatible protocols.

Securing Your CUPS Print Server

Implementing proper security measures for your CUPS print server is essential, especially in business environments:

Implementing Authentication for Printer Access

Restrict printer access to authenticated users:

1. Edit /etc/cups/cupsd.conf:

<Location /printers>
  AuthType Basic
  Require valid-user
  Order deny,allow
  Deny From All
  Allow From 192.168.1.0/24
</Location>

2. Create a CUPS user:

sudo lppasswd -a username

This ensures only authorized users can submit print jobs.

Configuring Encryption for Print Jobs

Protect sensitive documents by enabling encryption:

1. Generate SSL certificates if not already done:

sudo mkdir -p /etc/cups/ssl
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/cups/ssl/server.key -out /etc/cups/ssl/server.crt

2. Configure CUPS to use SSL in /etc/cups/cupsd.conf:

ServerCertificate /etc/cups/ssl/server.crt
ServerKey /etc/cups/ssl/server.key

3. Enable encryption for client connections:

DefaultEncryption Required

This prevents eavesdropping on print data transmitted over the network.

Setting Up Access Control Lists for Printers

Create granular access controls by printer:

<Printer secure_printer>
  <Limit Send-Document Print-Job Print-URI>
    AuthType Basic
    Require user @EXECUTIVES
    Order deny,allow
    Deny From All
    Allow From 192.168.5.0/24
  </Limit>
</Printer>

This example restricts a specific printer to executive users on a particular subnet.

Firewall Configuration for Secure Printer Access

Configure your firewall to allow only necessary CUPS traffic:

sudo ufw allow from 192.168.1.0/24 to any port 631 proto tcp
sudo ufw allow from 192.168.1.0/24 to any port 5353 proto udp

This limits CUPS access to trusted network segments, reducing exposure to potential attacks.

Monitoring and Auditing Print Activities

Enable comprehensive logging for security monitoring:

1. Set detailed logging in /etc/cups/cupsd.conf:

LogLevel debug2

2. Regularly review logs for suspicious activity:

sudo grep -i "authentication failed" /var/log/cups/error_log

3. Consider integrating with a central logging system for long-term audit records.

Best Practices for CUPS Security in Production Environments

Adopt these additional security measures for production deployments:

  • Regularly update CUPS and related packages to address security vulnerabilities
  • Implement network segmentation to isolate print services from critical systems
  • Disable unused protocols and services
  • Conduct periodic security assessments of your print infrastructure
  • Create and enforce a clear print security policy for your organization
  • Consider implementing pull printing to prevent sensitive documents from being left unattended.

Configuring Client Computers

Once your CUPS print server is operational, you’ll need to configure various client devices to use it:

Setting Up Ubuntu and Other Linux Clients

Ubuntu and most Linux distributions can easily connect to CUPS print servers:

1. Open System Settings > Printers

2. Click “Add” and wait for network discovery

3. Select the shared printer from the list

4. If the printer isn’t automatically discovered, click “Find Network Printer” and enter:

ipp://print-server-ip:631/printers/printer-name

5. Follow the prompts to complete the setup

For command-line setup on Linux clients:

sudo lpadmin -p remote_printer -E -v ipp://print-server-ip:631/printers/printer-name -m everywhere

This adds the remote printer and enables it for immediate use.

Configuring Windows Clients to Connect to CUPS

Windows clients can connect to CUPS via IPP:

1. Open Windows Settings > Devices > Printers & scanners

2. Click “Add a printer”

3. Select “The printer that I want isn’t listed”

4. Choose “Select a shared printer by name”

5. Enter the printer’s URL in the format:

http://print-server-ip:631/printers/printer-name

6. Follow the prompts to install drivers and complete setup

Alternatively, you can configure CUPS to use Samba for more seamless Windows integration.

Setting Up macOS Clients

macOS has native CUPS support, making printer setup straightforward:

  1. Open System Preferences > Printers & Scanners
  2. Click “+” to add a new printer
  3. Shared CUPS printers should appear automatically in the “Default” tab
  4. Select the printer and click “Add”

macOS automatically handles driver installation in most cases.

Mobile Device Printing Configuration

Enable printing from mobile devices using:

  1. AirPrint for iOS devices: Ensure avahi-daemon is running on your CUPS server for automatic discovery
  2. IPP Everywhere for Android: Most modern Android devices support direct IPP printing

For AirPrint compatibility, ensure your CUPS configuration includes:

ServerAlias *
BrowseLocalProtocols dnssd

This ensures proper advertisement of printers to mobile devices.

Automatic Printer Discovery for Clients

For seamless printer discovery across all platforms:

1. Ensure Avahi/Bonjour is properly configured:

sudo apt install avahi-daemon
sudo systemctl restart avahi-daemon

2. Verify that printer browsing is enabled in /etc/cups/cupsd.conf:

Browsing On
BrowseLocalProtocols dnssd

This enables zero-configuration printer discovery for compatible clients.

Troubleshooting Client Connection Problems

If clients can’t connect to your print server:

1. Verify network connectivity between client and server

2. Check that the client can access the CUPS web interface:

http://print-server-ip:631

3. Ensure the correct printer URI is being used

4. Review client-side error messages and server logs

5. For Windows clients, try using a generic PostScript or PCL driver if manufacturer-specific drivers cause issues.

Managing Print Jobs and Queues

Efficient print job management is crucial for maintaining a smoothly operating print server:

Viewing and Managing the Print Queue Through Web Interface

The CUPS web interface provides comprehensive queue management:

  1. Navigate to http://server-ip:631/jobs
  2. View active, completed, and pending jobs
  3. Select individual jobs to hold, release, or cancel them
  4. Click on job IDs for detailed information about specific print tasks

This visual interface simplifies queue management for administrators and users.

Command-Line Management of Print Jobs

For terminal-based management or remote administration:

# List all jobs for all printers
lpstat -o

# List jobs for a specific printer
lpstat -o printer_name

# Cancel a specific job
cancel job-id

# Hold/release a job
lp -i job-id -H hold
lp -i job-id -H resume

These commands provide powerful job control from the command line or scripts.

Setting Job Priorities and Policies

Prioritize important print jobs:

# Set job priority (1-100, higher is more important)
lp -i job-id -q 80

# Configure printer policy
sudo lpadmin -p printer_name -o job-priority-default=50

Default policies can be set in the printer configuration, while individual job priorities can be adjusted as needed.

Monitoring Printer Status and Job Progress

Track printer health and job status:

# Check printer status
lpstat -p printer_name -l

# Monitor all printer status changes
lpstat -W all

For real-time monitoring, use the watch command:

watch -n 5 lpstat -o

This refreshes the job status every 5 seconds, providing continuous visibility into print operations.

Handling Failed Print Jobs

When print jobs fail:

1. Identify the issue in the error logs:

tail -n 50 /var/log/cups/error_log

2. Clear failed jobs from the queue:

cancel -a printer_name

3. Reset the printer if necessary:

sudo cupsenable printer_name

These steps help recover from printing errors without service disruption.

Setting Up Email Notifications for Print Events

Configure email alerts for important print events:

1. Install the mailutils package:

sudo apt install mailutils

2. Configure printer notifications:

sudo lpadmin -p printer_name -E -o printer-error-policy=retry-job -o notify-events=all -o notify-recipient-uri=mailto:admin@example.com

This ensures administrators are promptly informed of printer problems or other significant events.

Troubleshooting Common CUPS Issues

Even with careful setup, you may encounter printing problems. Here’s how to address common issues:

Diagnosing and Fixing Printer Connection Issues

If printers appear offline or unreachable:

1. Verify physical connections for local printers or network connectivity for remote ones:

ping printer-ip-address

2. Check that the printer is powered on and not in an error state

3. Restart the CUPS service:

sudo systemctl restart cups

4. Verify printer detection:

lpinfo -v

These steps address most basic connectivity issues.

Resolving Driver and Compatibility Problems

For driver-related issues:

1. Verify you’re using the correct driver for your printer model:

lpinfo -m | grep printer_model

2. If using a generic driver, try a model-specific one (or vice versa)

3. For Ubuntu 24.04 compatibility issues, check for updated PPD files:

sudo apt update
sudo apt install --reinstall cups-filters printer-driver-*

This addresses most driver compatibility problems.

Addressing Print Quality Issues

When print quality is poor:

1. Clean the print heads (via printer’s control panel or maintenance utility)

2. Adjust quality settings:

sudo lpadmin -p printer_name -o print-quality=high

3. Check for compatible media settings:

sudo lpadmin -p printer_name -o media=photo

Each printer model has specific quality options accessible through the CUPS web interface or lpadmin command.

Using CUPS Log Files for Troubleshooting

CUPS logs contain valuable diagnostic information:

# View error log
tail -n 100 /var/log/cups/error_log

# Check access log
tail -n 50 /var/log/cups/access_log

# View completed job log
tail -n 50 /var/log/cups/page_log

The error_log is particularly useful, with entries prefixed by:

  • E: for errors
  • W: for warnings
  • I: for informational messages
  • D: for debug messages.

Common Error Messages and Their Solutions

Troubleshoot specific error messages:

1. “Unable to locate printer”:

  • Verify hostname resolution
  • Replace hostname with IP address in printer URI
  • Check for incorrect “.local” suffix in hostname

2. “Filter failed”:

  • Reinstall printer drivers
  • Check for file permission issues
  • Verify PPD file compatibility

3. “Printer is not responding”:

  • Check printer power and network connectivity
  • Verify printer IP address is correct
  • Restart the printer hardware

These are common issues with straightforward solutions.

Maintenance and Updates

Regular maintenance ensures your CUPS print server remains reliable and secure:

Keeping CUPS and Printer Drivers Updated

Maintain current software versions:

# Update package lists
sudo apt update

# Upgrade CUPS and related packages
sudo apt upgrade cups cups-filters cups-ipp-utils

# Update specific printer drivers
sudo apt upgrade printer-driver-*

Regular updates provide bug fixes, security patches, and improved compatibility with newer printer models.

Regular Maintenance Tasks for Optimal Performance

Perform these routine maintenance tasks:

1. Clear old print jobs and logs:

sudo cancel -a
sudo find /var/spool/cups -name "c*" -mtime +30 -delete

2. Check disk space for spool directory:

df -h /var/spool/cups

3. Verify CUPS service status:

systemctl status cups

4. Test printer functionality periodically with test pages.

Backing Up and Restoring CUPS Configuration

Protect your configuration with regular backups:

# Create a backup directory
sudo mkdir -p /backups/cups

# Back up configuration files
sudo tar -czf /backups/cups/cups-config-$(date +%Y%m%d).tar.gz /etc/cups

# Back up printer definitions
sudo lpstat -v > /backups/cups/printers-$(date +%Y%m%d).txt

To restore from backup:

sudo tar -xzf /backups/cups/cups-config-20250418.tar.gz -C /
sudo systemctl restart cups

Schedule these backups to run automatically with cron jobs.

Monitoring System Resources and Print Server Load

Track system performance:

# Check CUPS process resource usage
ps aux | grep cups

# Monitor print queues
lpstat -o | wc -l

# View system load
top -c -p $(pgrep -d',' cupsd)

For ongoing monitoring, consider tools like Munin or Prometheus with appropriate CUPS exporters.

Managing Printer Firmware Updates

Keep printer firmware current for best performance:

1. Check manufacturer websites for firmware updates

2. Follow printer-specific update instructions

3. Schedule updates during maintenance windows to minimize disruption

Many modern network printers have web interfaces for firmware management.

Scheduled Maintenance Recommendations

Implement a regular maintenance schedule:

  • Daily: Check active jobs and error logs
  • Weekly: Verify printer status and connectivity
  • Monthly: Update software and clear old job files
  • Quarterly: Perform full system updates and backup configurations
  • Annually: Review security policies and access controls

Consistent maintenance prevents many common printing problems.

CUPS in Enterprise Environments

For larger organizations, additional considerations ensure reliable enterprise printing:

Scaling CUPS for Large Organizations

Optimize CUPS for high-volume environments:

1. Adjust performance settings in /etc/cups/cupsd.conf:

MaxJobs 10000
MaxClients 1000
Timeout 600

2. Distribute print services across multiple servers by geographic location or department

3. Implement request rate limiting to prevent service overload:

LimitRequestBody 0

These adjustments help CUPS handle enterprise workloads efficiently.

Load Balancing and High Availability Considerations

Ensure continuous printing availability:

1. Set up redundant CUPS servers with shared configuration

2. Implement DNS round-robin or dedicated load balancers for print traffic

3. Configure printer classes spanning multiple physical printers for automatic failover:

sudo lpadmin -p dept_printers -c printer1,printer2,printer3

This architecture prevents single points of failure in critical print infrastructure.

Integration with Directory Services

Connect CUPS with centralized authentication:

1. Install required packages:

sudo apt install libpam-ldap nss-ldap

2. Configure CUPS to use LDAP authentication in /etc/cups/cupsd.conf:

DefaultAuthType Basic
AuthGroupName @AUTHLDAP

3. Set up PAM configuration for CUPS in /etc/pam.d/cups

This integration simplifies user management and enforces organizational access policies.

Print Accounting and Billing Solutions

Implement cost tracking and allocation:

1. Install a print accounting solution:

sudo apt install pykota

2. Configure accounting databases and policies according to your organization’s requirements

3. Generate regular usage reports for departmental billing or cost allocation

These systems help organizations manage printing costs and implement print quotas.

Enterprise Management Tools for CUPS

Leverage tools designed for large-scale print management:

  1. Consider solutions like PrinterLogic, PaperCut, or CUPS Cloud Print
  2. Implement monitoring with Nagios or Zabbix for proactive issue detection
  3. Use configuration management tools (Ansible, Puppet) to maintain consistent CUPS configurations across multiple servers

These enterprise tools simplify management of complex printing environments.

Congratulations! You have successfully installed CUPS. Thanks for using this tutorial for installing and setting up the common unix printing system (CUPS) on Ubuntu 24.04 LTS systems. For additional help or useful information, we recommend you check the official CUPS website.

VPS Manage Service Offer
If you don’t have time to do all of this stuff, or if this is not your area of expertise, we offer a service to do “VPS Manage Service Offer”, starting from $10 (Paypal payment). Please contact us to get the best deal!

r00t

r00t is an experienced Linux enthusiast and technical writer with a passion for open-source software. With years of hands-on experience in various Linux distributions, r00t has developed a deep understanding of the Linux ecosystem and its powerful tools. He holds certifications in SCE and has contributed to several open-source projects. r00t is dedicated to sharing her knowledge and expertise through well-researched and informative articles, helping others navigate the world of Linux with confidence.
Back to top button