Como instalar un servidor de impresión CUPS en Debian y derivados
Imprimir en un sistema Linux es una tarea fácil. Podemos instalar el software necesario desde los repositorios de cualquier distribución con controladores para la mayoría de las impresoras del mercado.
«Common Unix Printing System» Sistema de impresión común de Unix, abreviado CUPS, es un sistema de impresión para sistemas operativos Unix que consigue que un equipo funcione como servidor de impresión y que puede aceptar tareas de impresión desde otros equipos clientes, los procesa y los envía a la impresora indicada.
CUPS está compuesto por una cola de impresión con su planificador, un sistema de filtros que convierte datos para imprimir en formatos que la impresora reconoce, y un sistema de soporte que envía los datos al dispositivo de impresión.
CUPS utiliza el protocolo IPP «Internet Printing Protocol» para las tareas de impresión y de colas de impresión. También nos ofrece los comandos tradicionales de impresión de los sistemas Unix.
Los controladores de dispositivos de impresión que CUPS incluye nos aportan la posibilidad de configurar el servidor con ficheros de texto con formato «PostScript Printer Description» (PPD) de Adobe Systems. CUPS es software libre y se distribuye bajo licencia GNU «General Public License» y «GNU Lesser General Public License», versión 2.
Podemos encontrar toda la información en la página oficial del proyecto.
Y descargar la versión que nos interese desde este enlace.
Sumario
- Consideraciones previas
- Impresoras HP
- Instalar CUPS
- Añadir impresora con la interfaz web
- Instalar una impresora virtual PDF
- Configuración de CUPS con linea de comandos «CLI»
- Los ficheros de configuración de CUPS
- /etc/cups/cupsd.conf
- /etc/cups/cups-files.conf
- Los ficheros de configuración de CUPS
Consideraciones previas
CUPS es compatible con impresoras Postscript y permite la detección automática de impresoras de red.
CUPS es un software para gestionar sistemas de impresión en sistemas UNIX. Fue desarrollado por Apple y liberado como software libre. Nos permite gestionar, con una interfaz web, un servidor de impresión.
Podremos instalar en un sistema UNIX, dispositivos de impresión y compartirlos en red. Una vez instalado nos permitirá consultar y gestionar colas de impresión, activar, pausar o eliminar trabajos de impresión, así como gestionar usuarios, permisos y grupos de usuarios.
Entre los paquetes recomendados que se instalan al realizar una nueva instalación, se encuentran «cups», «cups-client» y «cups-pdf».
Normalmente, si durante la instalación del S.O., seleccionamos la instalación completa del GNOME Desktop Environment, se instala por defecto la aplicación para gestionar las impresoras mediante una interfaz gráfica, escrita en Python, utilizando GTK+, «system-config-printer» para el escritorio GNOME y «system-config-printer-kde» para el escritorio KDE.
Instalando uno de estos paquetes, según el escritorio que utilicemos, podremos configurar una impresora, pero CUPS nos ofrece una interfaz web, accesible desde cualquier navegador, que nos facilitará el trabajo con impresoras en red.
Para conceder acceso a la administración de las impresoras a cualquier usuario en la interfaz web de CUPS, tendremos que añadirlo al grupo lpadmin
La interfaz web de CUPS está accesible por defecto en el puerto 631. Para acceder localmente, con el navegador apuntaremos a la URL http://localhost:631 y para acceder desde otras máquinas de la red local, con http://IP_servidor:631.
La gran mayoría de impresoras y escáneres funcionan en sistemas Linux sin la necesidad de instalar controladores adicionales. No obstante, si no encontramos uno compatible en CUPS, podemos instalar el controlador descargándolo del sitio web del fabricante o también podemos utilizar la base de datos de drivers de impresoras en Open Printing.
Impresoras HP
Para las impresoras de la marca HP podemos instalar el paquete hplip, disponible en los repositorios oficiales de las distribuciones que usemos, y que contiene la mayoría de controladores para impresoras y escáneres HP.
Para ver si lo tenemos instalado ejecutamos
dpkg -l hplip
y obtenemos una salida parecida a
Deseado=desconocido(U)/Instalar/eliminaR/Purgar/retener(H) | Estado=No/Inst/ficheros-Conf/desempaqUetado/medio-conF/medio-inst(H)/espera-disparo(W)/pendienTe-disparo |/ Err?=(ninguno)/requiere-Reinst (Estado,Err: mayúsc.=malo) ||/ Nombre Versión Arquitectura Descripción +++-==============-==============-============-============================================ ii hplip 3.20.3+dfsg0-2 amd64 HP Linux Printing and Imaging System (HPLIP)
Si vemos «ii» en la primera columna antes de «hplip», quiere decir que HPLIP ya está instalado, en este caso la versión 3.20.3. Si deseas utilizar la versión instalada actualmente de HPLIP, intenta ejecutar «hp-setup» en una terminal. Podemos consultar si una versión más reciente, en español, es compatible con nuestra impresora en este enlace
Si no lo tenemos instalado, con el siguiente comando lo instalaremos
sudo apt-get update sudo apt-get install hplip
Si queremos utilizar un entorno gráfico para hacer la configuración, en vez de hacerlo con la linea de comandos, instalaremos el paquete «hplip-gui». Igual que con el paquete «hplip» podemos comprobar si esta instalado con «dpkg -l hlip-gui».
sudo apt-get install hplip-gui
Y lanzaremos el programa de configuración de perifericos HP desde la línea de comandos, con
hp-setup
Instalar CUPS
Para instalar el servidor de impresión CUPS y el cliente, ejecutamos el siguiente comando
sudo apt-get update sudo apt-get install cups cups-client
Para activar el servicio ejecutamos
sudo systemctl start cups o sudo systemctl restart cups.service
Pero seguramente será más recomendable que el servicio CUPS se inicie en cada inicio de la máquina, para ello ejecutamos
sudo systemctl enable cups o sudo systemctl enable cups.service
Añadir impresora con la interfaz web
Administrando CUPS con la interfaz web, podemos comenzar a instalar y administrar impresoras. Accedemos con la URL http://localhost:631
Vamos a la pestaña administración, y vemos que tenemos las opciones
- Añadir una impresora
- Buscar impresoras
- Administrar impresoras
Una vez nos diga las impresoras disponibles, o seleccionemos Añadir impresora, nos pedirá que seleccionemos el «driver» adecuado. Aquí además tenemos acceso a la configuración del servidor para compartir impresora, permitir imprimir desde internet, administración remota, usar autentificación, permisos y gestión de los log. Seleccionamos la marca de impresora en el desplegable y continuar.
Si tenemos un fichero PPD lo podemos seleccionar para instalar el controlador.
Si no encontramos el modelo exacto de la impresora, lo tendremos que buscar en la página oficial del fabricante y descargarlo, aunque también podemos utilizar la base de datos de drivers de impresoras en Open Printing.
Una vez descargado e instalado, veremos que CUPS detecta el controlador adecuado para el modelo de impresora concreto.
Ya podremos editar las opciones de impresión
y realizar una prueba de impresión en el desplegable Mantenimiento.
Instalar una impresora virtual PDF
Una impresora virtual PDF no es más que una impresora a la que mandamos trabajos de impresión, y en vez de imprimirse en soporte físico como el papel, plástico, etc, se genera un archivo PDF. Para hacerlo, en la aplicación desde la que queremos imprimir, seleccionamos la impresora virtual PDF en lugar de nuestra impresora habitual, y se generará un archivo PDF.
Los archivos PDF generados, se almacenan en nuestra carpeta personal, en un directorio llamado PDF, «/home/usuario/PDF».
Para su instalación, como siempre actualizamos la lista de paquetes con el siguiente comando
sudo apt-get update
instalamos el paquete «cups-pdf»
sudo apt-get install cups-pdf
Tras esta instalación, accederemos a la interfaz web de CUPS, apuntando en nuestro navegador a la URL http://localhost:631. Seleccionamos la pestaña Impresoras y ya tendremos instalada nuestra impresora virtual PDF que se agrega por defecto con el nombre de la cola: PDF.
En la pestaña Administración, podemos Modificar la impresora, Borrarla, Establecer opciones predeterminadas, Poner como predeterminada y Autorizar a usuarios.
Configuración de CUPS con linea de comandos «CLI»
Si la instalación es para utilizarla en red y con más usuarios, con la linea de comandos podremos hilar más fino y configurar todo a nuestro gusto.
Los ficheros de configuración de CUPS son:
/etc/cups/cupsd.conf /etc/cups/cups-files.conf
Vamos a ver que encontramos en cada uno de ellos y cómo modificar sus directivas para que el servidor de impresión CUPS funcione a nuestro gusto y tenga un cierto nivel de seguridad, y declarar en emplazamiento de los registros tanto de acceso, configuración y errores.
En /etc/cups/cupsd.conf
Este es el fichero principal de configuración. Veamos las directivas más importantes. Editamos el fichero con
sudo nano /etc/cups/cupsd.conf
En esta primera directiva vemos que el servidor solo escucha en localhost por el puerto 631 (la máquina donde lo hemos instalado).
# Only listen for connections from the local machine. Listen localhost:631 Listen /run/cups/cups.sock
Si quisiéramos que además escuchara las conexiones de otro/s equipo/s, tendríamos que añadir
Listen IP_máquina:631
En la siguiente directiva configuramos las restricciones de acceso al servidor, a las páginas de administración, a los ficheros de configuración y a los registros.
# Restrict access to the server... <Location /> Order allow,deny </Location> # Restrict access to the admin pages... <Location /admin> Order allow,deny </Location> # Restrict access to configuration files... <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny </Location> # Restrict access to log files... <Location /admin/log> AuthType Default Require user @SYSTEM Order allow,deny </Location>
Para permitir el acceso a otros usuarios tenemos varias opciones. Tras la linea «Order allow,deny», añadiremos:
Allow from all | Esto permitirá el acceso a todos, incluso a traves de inernet. No es recomendable. |
Allow @LOCAL | permite el acceso a todos pero solo desde localhost |
Allow from IP | permite el acceso desde la IP indicada |
Allow from IP/24 | permite el acceso desde toda la red local |
Para configurar el acceso a la administración, configuración y registros lo haríamos igual
Require user @SYSTEM | Usuario del sistema |
Require user @SYSTEM @lpadmin | Usuario del sistema perteneciente al grupo lpadmin |
Si utilizamos esta directiva tendremos que añadir el usuario autorizado al grupo lpadmin con el comando
sudo usermod -a -G lpadmin usuario
Al usar la directiva «Require user», el servidor CUPS nos mostrará un portal de autenticación de usuario y contraseña al intentar acceder a la página de administración o de impresión.
En este fichero encontrarás muchas más posibilidades de configuraciones, que con las indicaciones anteriores podrás modificar. Si necesitas más información, en la página oficial del proyecto encontrarás toda la que busques, que es mucha y en inglés.
En /etc/cups/cups-files.conf
En este fichero encontramos el grupo de usuarios que pueden administrar CUPS, al que podremos añadir usuarios.
# Administrator user group, used to match @SYSTEM in cupsd.conf policy rules... # This cannot contain the Group value for security reasons... SystemGroup lpadmin
Y las rutas de los ficheros de log (registro) de CUPS.
Para poder registrar la información de las impresiones que realice el servidor de impresión CUPS tenemos que añadir las directivas «PageLogFormat», «LogLevel» y «AccesLogLevel» en el fichero «cupsd.conf», que estará vacío por defecto. Nos quedará como sigue:
# Log general information in error_log - change "warn" to "debug" # for troubleshooting... LogLevel debug AccesLogLevel all LogLevel debug2 MaxLogSize 32m PageLogFormat "%p %u %j %T %P %C %{job-billing} %{job-originating-host-name} %{job-name} %{media} %{sides}"
Ahora nos queda revisar la configuración de «rsyslog» para que registre estos logs y realizar otras modificaciones en los archivos de CUPS para activar los registros
En «cups-files.conf», añadimos la extensión .log
Y finalmente editamos «rsyslog.conf». Aquí se definen los módulos a cargar, las directivas globales y las reglas para el proceso de mensajes de registro. Lo encontramos en la ruta /etc/rsyslog.conf
Reiniciamos los servicios rsyslog y cups
sudo service rsyslog restart systemctl restart cups.service
Ahora ya podremos enviar documentos a imprimir y comprobar como el fichero page_log.log comienza a llenarse con la información de todas las impresiones.
Si tienes algún comentario que hacer sobre este artículo, al pie del post tienes un formulario para hacerlo.
Si quieres contactar conmigo por cualquier otro asunto relacionado con el sitio, en la página de contacto, tienes un formulario más adecuado.
Y para suscribirte y recibir las novedades publicadas, tienes un enlace en el pie de la página o desde aquí mismo.