Homemade 24-Hour printing server

Greetings. In my previous blog, I shared an experience of setting up an overclocked Linux server on a tv box. Overall, the server is quite decent on extreme low budget. Therefore, I want to make use of this server and decided to run a printing service on it. With this new setup, I could further optimize the device’s capabilities and enhance its functionality, while also exploring new possibilities in the world of Linux-based computing.

Installing server

To begin, there is an open source printing service called CUPS (Common UNIX Printing System). Luckily, it is already ported to Armbian and can be installed from armbian-config. To start the installation automatically, just simply selecting it in the menu.

Setting up server

Installing PPD

Then, I need to somehow connect printer to the server. My printer is a old Canon PIXMA IP2870S. However, I soon found out that it only had driver for Windows. Initially, this seemed like a significant obstacle. After a fews hours of research, I figured out that I need some sort of PPD (PostScript Printer Description) as driver for CUPS and there is a pack of large printer PPD collection called Gutenprint which also contain my printer model.

Setting networking

Alright, now I has installed the coresponding PPD file and CUPS should be able to recognize the printer now. But, now I need find a way to access CUPS server to setup the printer. However, the CUPS server is only accessible to localhost by default. To enable remote access, I had to modify the configuration settings in the /etc/cups/cupsd.conf.

Once configured, I was able to access the web GUI of the server at port 631 using browser.

Furthermore, in order to print file remotely, I had to adjust some additional settings.

Configuring printer

This part is pretty straightforward. At first, select the correct usb port.

Next, select the correct ppd and ensure that printer sharing is enabled.

After that, if it recognized the printer, a printer will be shown in the server. At this point, I need to ensure the printer can actually works by print a test page.

Use the server

This part is tricky and I wasted 2 days on it. Basically, my Linux laptop also installed with CUPS. To print file remotely, I simply added a printer config on my laptop side with the correct link:

https://192.168.0.169:631/printers/HOME

Here comes the important part. Since the PPD is already installed on the server side, my laptop as the client side need to set the printer as raw queue input rather than PPD. Intially, I am not aware of it and waste a lot of time. As conclusion, now the printing remotely is achieved.