Il Re della Stampa in Cloud è Morto… Viva il Re della Stampa Open Source!!! :p – Parte III :/

Proviamo a Configurare un Server di Stampa CUPS per la Rete Locale…

To my chagrin, after many tests, I must back up that I have not been able to expose over the Internet my printer shared through CUPS… but the challenge with myself is not over yet… 🙂

Para mi disgusto, después de muchas pruebas, debo respaldar que no he podido exponer a través de Internet mi impresora compartida a través de CUPS… pero el desafío conmigo mismo aún no ha terminado… 🙂

Dopo circa 5 giorni di test, tentativi vari e gran mal di testa, devo dire un po’ con sorpresa, di aver raggiunto l’obiettivo solo a metà… 😦

La stampa da remoto attraverso Internet non sono proprio riuscito a farla funzionare, nemmeno configurando CUPS per non chiedere l’autenticazione agli utenti (come suggerito da molti tutorial)… ma capite bene che, anche se avesse funzionato, sarebbe una soluzione improponibile, giusto per mantenere almeno un minimo in sicurezza i dispositivi nella mia LAN…

La cosa positiva che però ne è comunque nata, è che ora tutti i miei dispositivi nella LAN hanno accesso alla stampante (e non solo il mio PC portatile), in quanto il server CUPS che la condivide ha creato una share di rete visibile persino da Windows e dalle altre mie macchine virtuali… e la cosa migliore è che CUPS rende disponibile la stampante in modo che funzioni con un driver generico, permettendomi di usare una stampante molto vecchia anche in quei sistemi Windows che ne hanno rimosso il supporto ufficiale!!! 😀

Altro effetto collaterale positivo, mi sono fatto una cultura più approfondita su Nginx e sui reverse proxy… e come sempre “impara l’arte e mettila da parte” 🙂

Tuttavia, non ho ancora abbandonato l’idea della stampante accessibile da Internet… vediamo dove mi spinge la fantasia creativa da sistemista!!!

Vediamo se una Raspberry Pi mi Salverà…

Una soluzione mi sta già balenando in mente… perché temo che l’inaccessibilità della stampante attraverso Internet possa dipendere dal fatto che sia condivisa attraverso due print server in cascata…

L’idea da esplorare sarebbe quella di eliminare il print server fisico (obsoleto) e la macchina virtuale che esegue CUPS, e sostituirli con un’unico dispositivo autocostruito che svolga la funzione di print server usando direttamente e solo il comunque ottimo CUPS. In particolare, vorrei usare una piccola Raspberry Pi Zero W accoppiata con uno o più HAT che mi permettano di dotarla di una porta ethernet e almeno un paio di porte USB.

E già so che mi toccherà di nuovo mettere mano al saldatore a gas… :p

Morale della favola “non tutto il male viene per nuocere!!!” Naaah, meglio “trova sempre il positivo ovunque, può sempre essere una piacevole sorpresa”

Il Re della Stampa in Cloud è Morto… Viva il Re della Stampa Open Source!!! :p – Parte II

Proviamo a Configurare un Server di Stampa CUPS per la Rete Locale…

In the first part of this tech story, I told about the dead of Google Cloud Print and my idea to replace it using CUPS through the Internet… now we will see how I tryed to reach this result…

En la primera parte de esta historia tecnológica, hablé sobre la muerte de Google Cloud Print y mi idea de reemplazarlo usando CUPS a través de Internet… ahora veremos cómo intenté llegar a este resultado…

All’inizio di luglio avevo iniziato ad introdurre un mio progettino tecnologico per l’estate: sostituire Google Cloud Print con una soluzione home made basata su CUPS, il sistema di stampa di Linux (leggere qui).

Purtroppo, però, durante l’estate il dover adeguare la mia rete di casa per la fibra ottica mi ha allontanato da questo progetto. Ma ora l’ho ripreso in mano, in attesa che TIM si degni di attivarmi la connettività FTTC…

Così mi sono messo di buon sbuzzo a cercare una soluzione elegante e flesdibile per esporre la mia stampante su Internet, in modo da trasformarla in una stampante in cloud.

Creiamo una Virtual Machine leggera

Il primo passo è stato quello di creare una macchina virtuale sul all’interno del piccolo server che ospita in NAS di casa: gli strumenti messi a disposizione da TrueNAS sono veramente efficaci e semplici da utilizzare.

La macchina virtuale in questione non necessita di eccessive risorse… le basta una CPU Dual Core, 1GB di RAM, uno storage da 16GB e una scheda di rete con bridge (in modo da essere direttamente integrata nella mia LAN domestica, e quindi con un indirizzo IP raggiungibile da tutti gli altri dispositivi nella stessa LAN).

Per amore di leggerezza, il sistema operativo che ho caricato nella macchina virtuale è una distribuzione Linux estremamente leggera: DietPi.
Questa “distro” è stata concepita per il single board computer più famoso al mondo, il Raspberry Pi, ma ne esistono tante altre incarnazioni che ben si adattano ad una vasta varietà di dispositivi.

Installiamo e Configuriamo CUPS

Una volta pronta la macchina virtuale, alla quale deve essere assegnato un indirizzo IP statico nella LAN (di solito lo faccio impostando una reservation nel server DHCP), si deve pasare ad installare tutti i pacchetti software necessari: CUPS, il tool HPLIP e i driver per stampanti HP (hpcups, hpijs e gutenprint nel mio caso).
Per raggiungere lo scopo, con DietPi (e tutte le distribuzione basate su Debian), si utilizza il comando apt usando un utente con i privilegi amministrativi oppure l’utente root (trattandosi di un server non vi è interfaccia grafica):

Bene! Ora bisogna solo configurare il server di stampa e aggiungere la propria stampante… Nulla di più facile!!!
Basta aprire il proprio web browser preferito e collegarsi all’indirizzo IP della macchina virtuale, specificando la porta 631 al termine dell’indirizzo:

Da qui, facendo click sulla scheda Administration, si dovranno impostare le opzioni per la condivisione delle stampanti (anche attraverso Internet se vogliamo stampare sulla nostra stampante anche quando siamo lontani da casa) e confermare le modifiche con il pulsante “Change Settings“:

Infine, sempre dalla scheda Administration, bisognerà aggiungere la stampante (o le stampanti), seguendo la procedura guidata, e ricordandosi al termine di renderle stampanti condivise:

Nel mio caso specifico, poi, ho aggiunto a CUPS la stampante che già avevo condivisa nella mia LAN, in quanto già collegata ad un server di stampa, che però, ricordo, è privo di funzioni cloud; tuttavia, la procedura è la medesima se si vuole collegare alla macchina virtuale una qualsiasi stampante USB non dotata di funzioni smart (bisogna solo fare in modo che la stampante USB sia collegata fisicamente al server della macchina virtuale e che sia resa accessibile a quest’ultima tramite l’hypervisor da voi utilizzato).

Ecco! Il gioco è fatto, per lo meno per la condivisione della stampante nella propria LAN… Ma ricordiamoci che lo scopo del gioco è rendere la stampante condivisa attraverso Internet!!!

Configuriamo un Reverse Proxy con Nginx per l’Accesso da Remoto

La soluzione definitiva per raggiungere la stampante attraverso Internet si ottiene grazie all’ottimo web server Nginx, configurato in modalità reverse proxy (ovviamente sempre dopo averlo installato con il comando apt :p ).

Non vi voglio però tediare oltre con una serie infinita di technicalities troppo specifiche per il mio caso… però sappiate che ora ho accesso alla stampante da ogni parte del mondo (a patto che sia accesa, e che si conoscano le credenziali di accesso :p )… non resta che provare se tutto funziona al momento di stampare… ma ve ne parlerò in un altro breve post dopo aver fatto i test!!!

Speriamo di aver fatto anche stavolta un buon lavoro 🙂

Il Re della Stampa in Cloud è Morto… Viva il Re della Stampa Open Source!!! :p

Proviamo a Configurare un Server di Stampa CUPS per la Rete Locale…

At the end of 2020 the Google Cloud Print service reach its end-of-life. It was a good and free cloud print service that allowed people to reach home and office printers through the Internet, even if those printing devices doesn’t support network printing directly. Now I need to print documents from my smartphones, but without Google Cloud Print I cannot anymore… or may be i will do it but using non-free services… The third way is to build myself a customized, open source cloud-ready print server using CUPS…

A finales de 2020, el servicio Google Cloud Print llegará al final de su vida útil. Era un servicio de impresión en la nube bueno y gratuito que permitía a las personas acceder a las impresoras del hogar y la oficina a través de Internet, incluso si esos dispositivos de impresión no admiten la impresión en red directamente. Ahora necesito imprimir documentos desde mis teléfonos inteligentes, pero sin Google Cloud Print ya no puedo… o puede que lo haga, pero usando servicios no gratuitos… La tercera forma es construirme una nube de código abierto personalizada servidor de impresión listo con CUPS…

Non riesco davvero a capire come spesso i “big della rete” possano essere così ciechi da chiudere alcuni dei loro servizi gratuiti in grado di fornire servizi realmente utili per gli utenti finali, che, se fossero adeguatamente sponsorizzati, supportati e resi più usabili, potrebbero rendere la vita veramente smart come tanto declamato in slogan pubblicitari sempre più frequenti!

Eh, sì! Perchè non è la prima volta che Google (ma gli altri grandi attori dei servizi cloud non sono da meno, credetemi) taglia le gambe ad uno dei suoi servizi. Solo che quando questo avvenne nel 2019 per Google+ non potei che dar loro ragione!… Dopo anni di sostanziale inutilità, il social network che avrebbe dovuto (almeno nelle intenzioni) scalzare Facebook dalla posizione dominante venne ritirato, e questo direi che fu un vero e proprio sollievo per i molti operatori del settore (e dei miliardi di utenti della piattaforma di Google che si trovavano automaticamente iscritti a questo social network senza volerlo!!!). Similmente anche le chiusure di servizi come Google Wave, Google Health e Google Buzz (giusto per citarne alcuni…) non hanno avuto eccessive ripercussioni sugli utenti, se non salvaguardarne la privacy
Al contrario, quando ho appreso che Google annunciava la chiusura di Google Cloud Print, ci sono rimasto davvero male. Certo!… Forse non era molto usato, ma era veramente comodo un servizio di stampa attraverso la rete Internet che fosse gratuito e flessibile al tempo stesso!… Già la chiusura di Google URL Shortener mi aveva fatto un po’ storcere il naso, ma almeno esistono alternative gratuite e pronte all’uso!!!… Nel caso della stampa remota non è così, e l’unico servizio gratuito alla fine è un po’ complicato da installare per i non addetti ai lavori…

Google Cloud Print

Prima di addentrarci nella nuova avventura che ho deciso di intraprendere, però, è bene spendere due parole sulle particolarità di Google Cloud Print che me lo hanno reso tanto caro da sentirne fortemente la mancanza…

La particolarità di questo servizio non risiede particolarmente nel fatto di permettere a più computer di stampare dalla medesima stampante condivisa in una rete locale! Al contrario!!! Questa opzione già esiste grazie alle moderne stampanti, dotate di interfaccia di rete, sempre più spesso unicamente wi-fi, che anche a livello casalingo permettono l’accesso condiviso alla stessa stampante da parte di più dispositivi (computer, tablet e smartphone), purché collegati tutti allo stesso router.

La particolarità di di Google Cloud Print risiedeva nella estrema flessibilità data dalla possibilità di trasformare una qualsiasi stampante in una stampante condivisa in rete, anche se priva di connettività!!! E non solo, una volta configurate nel servizio, Google Cloud Print rendeva le stampanti raggiungibili anche da remoto, attraverso la rete Internet! Per capirci… usando la connessione 4G dello smartphone era possibile mandare in stampa un documento sulla stampante di casa (o dell’ufficio) mentre si stava viaggiando in treno, ad esempio. E il tutto, senza costi!!!

Il bello, poi, era che si trattava di un servizio che, pur essendo nato per i portatili ChromeBook, tutti i principali tipi di dispositivi ne potevano fare uso.

L’unico limite, ma era impossibile fare altrimenti, era che bisognava sempre lasciare acceso il computer a cui era collegata la stampante, ma solo se la stampante da condividere non disponeva di una connettività di rete autonoma.

Common Unix Printing System (CUPS)

Per fortuna, da buon “linuxaro”, mi sovvengo che la soluzione è già tra le mie mani (da tantissimo tempo!), grazie al software open source noto come Common Unix Printing System (più semplicemente, CUPS), che è il sistema di gestione delle stampe standard per i sistemi UNIX/Linux di tutto il mondo (e, guardacaso, da un po’ di tempo a questa parte anche per Google Chrome OS).

La cosa importante da considerare è che CUPS è un sistema modulare che permette ai sistemi della famiglia UNIX (quindi anche GNU, Linux, la famiglia BSD e MacOS X) di disporre di un sistema unificato e standard per la gestione delle stampanti e delle code di stampa.
La particolarità maggiore, però, è che come moltissimi software per sistemi UNIX adotta un’architettura client/server che gli permette di operare anche in ambienti di rete locale su dispositivi diversi. Non solo! Almeno sulla carta, la condivisione delle stampanti potrebbe avvenire anche attraverso la rete Internet (a patto di esporre il proprio server di stampa, che deve sempre restare acceso, al di fuori del limite imposto dal proprio router).

Cosa Ho Pensato di Fare? 🙂

Beh… la risposta è semplice! 🙂 Proverò a sfruttare il mio “piccolo” NAS (di cui riprenderò a narrarvi più avanti l’evoluzione) e le sue macchine virtuali per impiantare un server di stampa CUPS da impiantare direttamente nella rete di casa mia (finora CUPS come gestore locale delle stampe del mio PC funziona egregiamente, con una stampante condivisa tramite un semplice USB server, ma vi spiegherò meglio più avanti…); successivamente proverò anche ad esporre il server sulla rete Internet, in modo da permettermi di stampare con la mia stampante anche quando non sono a casa! 🙂

L’Hardware di Partenza

La stampante che intendo trasformare in “stampante in cloud” è la mia vecchia, gloriosa e praticamente indistruttibile HP PhotoSmart 7260 (oramai risalente al 2005, presa in occasione della stampa delle tre copie della mia tesina per la laurea triennale…). La acquistai perché oltre ad essere compatta, è uno degli ultimi modelli che può impiegare cartucce di stampa fotografica a 6 inchiostri: oltre ai classici ciano, magenta, giallo e nero, utilizza anche il ciano chiaro e il magenta chiaro per rendere più definite e naturali le sfumature delle tinte delle immagini fotografiche (peccato che poi, per pigrizia, nonostante abbia anche comprato la carta fotografica apposita, sempre di marca HP… in modalità fotografica io abbia stampato solo una decina di foto della mia laurea specialistica… :p )

Già tempo addietro, però, per problemi di compatibilità tra la stampante HP e il mio vecchio PC con Linux (che non gestiva benissimo le stampanti su porta USB), comprai un piccolo server di stampa preconfezionato da installare nella mia rete locale di casa (come al solito, quando compri qualcosa per provare se la fortuna ti arride, non guardi alla presenza di tante funzioni “extra”).
Il dispositivo in questione è un Win-Star Networking USB 2.0 Server (ma già l’errore di inglese nel nome lascia trasparire quanto poco professionale sia questo dispositivo… infatti, basta cercare un minimo con Google per capire che ci sono svariati suoi cloni sul mercato, identici in tutto e per tutto, a meno della marca!!!).

Diciamo che già così, ormai da anni, ho raggiunto lo scopo di stampare da tutti i miei dispositivi di casa! 🙂 Ma ora… è giunto il momento di fare il salto di qualità! 😀

Ma questa sera, l’Italia ha vinto il Campionato Europeo e io mi fermo qui, vado a festeggiare!!!
See you soon… al prossimo capitolo di questa storia! 😀

Progetta un sito come questo con WordPress.com
Comincia ora