Preamble

As pointed out by several other helpful members (Okay. @AlexChamberlain to be honest.) you need to make sure that your printer drivers work first! If you can't print regularly from your computer there is no use converting it to a printing server.

The procedure for installing the printer is beyond the scope of this answer, but at the very least, must include installing CUPS, which includes the daemon.You can do that by running the following.

$ sudo apt-get install cups

On Debian or the following on Arch Linux.

$ sudo pacman -S cups

Server

You just need to reconfigure the server to allow other machines to access your printer. You're going to be editing the /etc/cups/cupsd.conf file and there are two things you need to specify.

The connection to listen to. Which machines can use the printer.

Here is one that should suit our needs, feel free to change the values.

# /etc/cups/cupsd.conf Listen *:49631 <Location /printers> Order allow,deny Allow 192.168.0.* Allow 192.168.1.* </Location>

Finally we just need to restart the CUPS daemon. Remember that anytime you change something in the config file you need to restart the daemon. On Debian, run

$ sudo /etc/init.d/cups restart

Tada! We have set up the server! =D Now we just need to set up the client...

Client

Windows

To allow Window machines to print via our CUPS server we need to provide them with an http:// address. In order to do this we are going to install samba

$ sudo aptitude install samba

Make sure you restart the CUPS daemon.

$ sudo /etc/init.d/cups restart

And now we can tell Windows to use the following URL! (Make sure that you edit it to reflect your specific setup.)

http://<ip>:<port>/printers/<printer_name>

Arch Linux

Since installing printers differs window manager to window manager we are going to do this the old-fashion, true-Arch way! First you need to install libcups .

$ sudo pacman -S libcups

And then you just add the CUPS server IP or hostname to /etc/cups/client.conf . Your file should look like this.

# /etc/cups/client.conf ServerName hostname-or-ip-address[:port]

Every application should then be able to find the printer.

References