Siguiendo con la serie de cosas que hago en casa usando una Raspberry Pi, esta vez voy a describir cómo montar, desde cero, un servidor de impresión, permitiendo que una impresora USB actúe como impresora en red. Así, la familia puede usarla para imprimir desde cualquier dispositivo conectado a la red Wi-Fi doméstica, incluso desde sus smartphones.

Los pasos que describo a continuación son los que doy para preparar una Raspberry Pi 2 Model B Rev 1.1 con Raspbian Pi OS Lite desde cero. No es necesario que tenga ni teclado, ni ratón, ni monitor. Al terminar el proceso puedo conectar con SSH utilizando autenticación con clave pública. Y, por último, lo configuro como servidor de impresión. Estos pasos son los siguientes:

  1. Descarga Raspberry Pi Imager.

    Todo el software está disponible en la página correspondiente de la web de Raspberry Pi.

  2. Inserta una tarjeta Micro SD.

    Aunque yo estoy usando una de 64 GB, deberías tener suficiente con una de 4 GB.

  3. Ejecuta Raspberry Pi Imager.

  4. Selecciona el sistema operativo.

    Haz clic en el botón Choose OS, luego en Raspberry Pi OS (other) y, por último, en Raspberry Pi OS Lite (32-bit).

  5. Selecciona la tarjeta Micro SD.

    Haz clic en el botón Choose Storage para seleccionar en qué tarjeta quieres guardar el sistema operativo.

  6. Configura el sistema operativo.

    Ésta es la parte que más me gusta. Haz clic en el botón con forma de engranaje que aparece en la parte inferior derecha de la ventana de Raspberry Pi Imager.

    Desde ahí podrás:

    • asignar un nombre al sistema.
    • activar la conexión mediante SSH y, si quieres, permitir la autenticación mediante clave pública.
    • cambiar el nombre del usuario predeterminado del sistema y su contraseña.
    • configurar la conexión a la red Wi-Fi.
    • cambiar la configuración local (zona horaria y teclado).

    Creo que todo lo que introduzcas en esta ventana se guardará en un archivo llamado first_run.sh, pero no estoy seguro de si hay alguna otra dependencia.

  7. Guarda el sistema.

    Haz clic en el botón Write para que el sistema se guarde en la tarjeta SD con las opciones de configuración seleccionadas. Este proceso tardará un poco, dependiendo de la versión del sistema operativo seleccionado y de la velocidad de la tarjeta Micro SD.

  8. Enciende la Raspberry Pi.

    Cuando el proceso termine, extrae la tarjeta y ponla en la Raspberry Pi. Enciéndela y conéctate por SSH.

  9. Actualiza el sistema.

    Para ello tendrás que ejecutar estas órdenes una por una:

     $ sudo apt update
     $ sudo apt upgrade
     $ sudo apt list --upgradable
     $ sudo apt upgrade
     $ sudo apt dist-upgrade
     $ sudo apt autoremove
    
  10. Instala el servidor de impresión.

    Se trata de CUPS:

    $ sudo apt install cups
    
  11. Instala los controladores de tu impresora.

    En mi caso, estoy usando una Samsung ML-1640 Series, así que me sirve SpliX:

    $ sudo apt install printer-driver-splix
    
  12. Crea un usuario para administrar la impresora.

    Aunque podrías usar el mismo usuario que estás utilizando para configurar el sistema, es mejor crear uno nuevo que no tenga privilegios de administración:

    $ sudo adduser impresora --ingroup lpadmin
    

    Indica qué contraseña tendrá el usuario, la necesitarás luego. No es necesario que proporciones ningún dato más.

  13. Modifica la configuración de CUPS.

    Guarda el original, por si acaso:

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

    Permite el acceso desde la red local, cambiando esto:

    # Only listen for connections from the local machine.
    Listen localhost:631
    

    por esto:

    # Only listen for connections from the local machine.
    # Listen localhost:631
    Port 631
    

    Ahora, permite el acceso a las diferentes secciones de la web de CUPS. Busca en el archivo todos los elementos <Location>. Debería haber 4. Antes de la etiqueta de cierre (</Location>) añade la línea Allow @local. Esa parte debería quedar así:

    # 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 user @SYSTEM
    Order allow,deny
    Allow @local
    </Location>
    
    # Restrict access to log files...
    <Location /admin/log>
    AuthType Default
    Require user @SYSTEM
    Order allow,deny
    Allow @local
    </Location>
    

    Guarda los cambios y reinicia el servidor:

    $ sudo /etc/init.d/cups restart
    
  14. Añade la impresora a CUPS.

    Visita la página web de CUPS, que está en la misma IP que tenga tu Raspberry Pi, en el puerto 631. Si estuviese en la IP 192.168.1.2, tendrías que abrir https://192.168.1.2:631.

    Haz clic en Administration, en la barra superior:

    Haz clic en el botón Add Printer:

    CUPS te pedirá el nombre de usuario y la contraseña de un usuario con permisos de administración del sistema de impresión. Para esto creamos antes el nuevo usuario. Introduce su nombre y su contraseña.

    Ahora, CUPS te mostrará una serie de opciones. En mi caso, la impresora está conectada por USB, así que sólo tengo que seleccionarla y hacer clic en el botón Continue:

    Ahora, indica dónde se encuentra la impresora, eso puede ayudar a quien quiera añadirla, marca la casilla de verificación Share This Printer y haz clic en el botón Continue:

    Para terminar, selecciona la marca y el modelo de la impresora y haz clic en el botón Add Printer:

    Una cosa más. Antes de poder utilizar la impresora debes establecer sus opciones predeterminadas. En mi caso, acepto las que CUPS me ofrece y hago clic en el botón Set Default Options:

¡Listo! Ya puedes usar tu impresora USB por Wi-Fi, tanto desde tus PC como desde tus dispositivos móviles.

Como he comentado otras veces, los pasos aquí mostrados consiguen solucionar un caso muy particular que, obviamente, no tiene por qué ser el tuyo. Sin embargo, podría ser que algo de lo que cuento aquí te sea útil en algún momento. En cualquier caso, lo publico porque sé que a mí me va a venir bien tenerlo como referencia.