Tengo un pequeño homelab donde hago pruebas, curiosidades y experimentos que a veces nacen de una necesidad muy cotidiana. No es un datacenter ni nada parecido: es un servidor con Proxmox que me permite levantar VMs, romper cosas sin demasiado drama y aprender por el camino.
Uno de esos experimentos empezó con una impresora USB casi viejita. De esas que todavía funcionan, pero que pertenecen a otra época. Me recordó a cuando estaba en la licenciatura y todavía se entregaban documentos impresos, engargolados o al menos en hojas bien presentadas. No como ahora, que muchas veces todo termina en Classroom, Moodle o algún formulario de entrega.
La pregunta fue sencilla: si tengo una impresora USB y un servidor Proxmox siempre encendido, ¿puedo convertirla en una impresora de red?
La respuesta corta es sí. La interesante está en las capas.
La idea general
La arquitectura quedó más o menos así:

En vez de instalar CUPS directamente en el host Proxmox, preferí crear una máquina virtual dedicada. Esto mantiene limpio el nodo principal y hace que el servidor de impresión sea algo fácil de respaldar, reiniciar o reconstruir.
Proxmox se queda haciendo lo suyo: virtualizar. La VM se encarga de imprimir.
Detectar la impresora en Proxmox
Lo primero fue conectar la impresora al servidor y revisar si Proxmox la veía:
lsusbUna salida típica se ve así:
Bus 001 Device 022: ID 03f0:ac11 HP, Inc Deskjet 2510 seriesAquí conviene fijarse en dos datos:
Vendor ID: 03f0
Product ID: ac11Con esos identificadores podemos pasar la impresora a una VM usando USB passthrough.
Crear una VM ligera
Para este tipo de servidor no hace falta una VM enorme. Algo así es suficiente:
Sistema: Debian
CPU: 1 core
RAM: 1 GB
Disco: 8 GB
Red: bridge de ProxmoxEn mi caso le dejé una IP fija porque tiene sentido para un servicio de red. Si una impresora va a estar disponible para varias computadoras, no queremos que cambie de dirección cada vez que reinicia o cambia el DHCP.
Pero esa IP depende totalmente de la red de cada quien. En mi homelab usé una dirección interna específica, pero el lector tendría que usar una IP libre dentro de su propia red.
La idea es esta:
IP de la VM: una IP fija disponible en tu redNo tiene que ser la misma que la mía. Lo importante es que sea estable y accesible desde las computadoras que van a imprimir.
Pasar el USB a la VM
Con la impresora detectada por Proxmox, se puede agregar el dispositivo USB a la VM.
Por ejemplo:
qm set 100 -usb0 host=03f0:ac11Donde 100 es el ID de la VM.
Usar 03f0:ac11 tiene una ventaja: no dependemos del número de bus o device, que puede cambiar si desconectamos y conectamos la impresora. El vendor/product ID suele ser más estable para este caso.
Instalar CUPS y Avahi
Dentro de la VM instalé el stack de impresión:
sudo apt update
sudo apt install cups avahi-daemon printer-driver-all hplipEn cristiano:
CUPS es el servidor de impresión. Recibe trabajos, administra colas y habla con los drivers.
Avahi anuncia servicios en la red local. Ayuda a que otros equipos encuentren la impresora de forma más cómoda.
HPLIP agrega soporte para muchas impresoras HP. Si usas otra marca, probablemente los paquetes cambien.
Después habilité la administración remota y la compartición de impresoras:
sudo cupsctl --remote-admin --remote-any --share-printers
sudo systemctl restart cups avahi-daemonLa interfaz web de CUPS queda disponible en:
http://IP_DE_TU_VM:631Un detalle que me encontré con Debian cloud
Para crear la VM usé una imagen cloud de Debian. Eso funciona muy bien para levantar máquinas rápidas, pero aquí apareció un detalle: el kernel cloud no traía los módulos USB que necesitaba para que la VM viera correctamente la impresora.
Proxmox ya había pasado el dispositivo, pero dentro de la VM no aparecía como esperaba.
La solución fue instalar el kernel genérico:
sudo apt install linux-image-amd64Después de reiniciar con ese kernel, ya aparecieron módulos como:
xhci_pci
xhci_hcd
usblp
usbcoreY la impresora ya se veía dentro de la VM:
lsusbCon algo como:
Bus 002 Device 002: ID 03f0:ac11 HP, Inc Deskjet 2510 seriesEste tipo de detalle es justo por lo que me gustan estos ejercicios de homelab. Uno empieza queriendo resolver algo pequeño y termina aprendiendo cómo se conectan varias piezas que normalmente damos por sentadas.
Agregar la impresora en CUPS
Ya con la impresora visible dentro de la VM, revisé los backends disponibles:
lpinfo -vEn este caso apareció algo como:
direct hp:/usb/Deskjet_2510_series?serial=CN34M37MGG05TX
direct usb://HP/Deskjet%202510%20series?serial=CN34M37MGG05TX&interface=1También busqué el driver:
lpinfo -m | grep -i "deskjet"Y registré la impresora en CUPS:
sudo lpadmin -p HP_Deskjet_2510 \
-E \
-v "hp:/usb/Deskjet_2510_series?serial=SERIAL_DE_TU_IMPRESORA" \
-m "drv:///hpcups.drv/hp-deskjet_2510_series.ppd" \
-o printer-is-shared=trueLuego habilité la cola:
sudo cupsaccept HP_Deskjet_2510
sudo cupsenable HP_Deskjet_2510
sudo lpadmin -d HP_Deskjet_2510Para revisar el estado:
lpstat -tUna salida sana debería parecerse a esto:
scheduler is running
system default destination: HP_Deskjet_2510
printer HP_Deskjet_2510 is idle. enabled
HP_Deskjet_2510 accepting requests
Agregarla desde una Mac
Desde macOS se puede agregar desde:
System Settings → Printers & Scanners → Add PrinterSi Avahi hace su trabajo, puede aparecer automáticamente. Si no aparece, se puede agregar manualmente por IPP.
El formato es:
ipp://IP_DE_TU_VM/printers/NOMBRE_DE_LA_IMPRESORAPor ejemplo:
ipp://IP_DE_TU_VM/printers/HP_Deskjet_2510También se puede hacer desde terminal:
lpadmin -p HP_Deskjet_2510_PrintServer \
-E \
-v ipp://IP_DE_TU_VM/printers/HP_Deskjet_2510 \
-m everywhere \
-D "HP Deskjet 2510 Print Server"El driver everywhere usa IPP Everywhere, que en muchos casos simplifica bastante la configuración del lado del cliente.

Pensarlo por capas
Lo que más me gustó del ejercicio fue verlo por capas:
Proxmox detecta el USB
Proxmox pasa el USB a la VM
La VM reconoce el dispositivo
CUPS crea la cola de impresión
Avahi anuncia el servicio
La laptop imprime por IPPCuando algo no aparece, conviene no saltarse pasos. Primero revisar si Proxmox ve el USB. Luego si la VM lo recibe. Luego si CUPS lo detecta. Luego si el cliente puede llegar por red.

Esa forma de diagnosticar sirve para impresoras, pero también para muchas otras cosas en infraestructura.
Cierre
Me gusta hacer este tipo de pruebas porque mezclan nostalgia, utilidad y aprendizaje. Una impresora USB casi viejita, de esas que me recuerdan a la época de entregar trabajos impresos en la universidad, termina siendo una excusa para tocar Proxmox, Linux, CUPS, Avahi, USB passthrough e IPP.
No es una solución glamorosa, pero sí es una solución bonita en el sentido homelab: reutiliza hardware, aprovecha un servidor que ya está encendido y obliga a entender qué está pasando debajo.
Y al final esa es una de las razones por las que mantengo un homelab. No solo para tener servicios corriendo, sino para conservar un lugar donde todavía puedo preguntarme “¿y si conecto esto con aquello?” y ver qué pasa.
En un siguiente post podría valer la pena entrar más a fondo en CUPS, IPP y Avahi: qué hace cada uno y por qué imprimir en red sigue siendo una mezcla curiosa entre protocolos modernos y tecnologías con bastantes años encima.