O Google Cloud Print é um serviço do Google que possibilita realizar impressão de documentos, fotos e outros tipos de arquivo utilizando a internet. Isso significa que você pode conectar suas impressoras em qualquer dispositivo compatível, como tablets e telefones, e realizar impressões diretamente deles. O mais bacana: é possível configurar tudo via software!
Neste post nós vamos aprender como configurar o Google Cloud Print no Linux, utilizando o Raspberry PI. O motivo de eu utilizar este equipamento é que ele pode ficar ligado o tempo todo, gastando bem menos energia do que um computador convencional. Além disso, o Pi pode ser usado para outras tarefas, como servir arquivos de mídia ou rodar alguns joguinhos, ou servir de equipamento de vigilância com câmera. Isso ficará para os próximos posts :)
Você vai precisar de:
- Uma impressora
- Um Raspberry PI (com Raspbian) ou um Computador (com Debian/Ubuntu)
- Conhecimentos básicos de comandos do Linux
- Uma conta do Google
Conecte o Pi à internet
Estou assumindo que você já possui o Pi funcional ou um computador com Linux. Eu recomendo usar no Pi o Raspbian e em um computador convencional o Debian.
O primeiro passo é ligar e acessar seu Raspberry, e conectá-lo com a sua rede de internet. Você pode ligar o Pi e conectar nele um teclado, e ligar ele na TV pela saída HDMI. Se você possui um Wifi USB, pode deixar a conexão sem fio, senão, pode conectá-lo via rede cabeada mesmo. Com ele na rede, você também pode usar um computador para conectar-se via SSH no Pi.
Importante: o seu Pi precisa estar conectado à internet, caso contrário o Cloud Print não vai funcionar.
Instale o software necessário
Importante: neste tutorial iremos executar diferentes comandos, como diferentes usuários: isso serve para garantir a adequada execução do Cloud Print Proxy. Eu vou assinalar os comandos a serem executados como o usuário padrão (geralmente pi) que possui o sudo habilitado, bem como os comandos que iremos executar com a conta dedicada ao Cloud Print (googlecloudprint). A parte em cinza serve apenas para isso, os comandos são apenas a parte em negrito.
Primeiro, faça um upgrade para obter as atualizações de segurança:
pi@pi$ sudo apt-get update && sudo apt-get upgrade
Em seguida, vamos instalar o Chromium, que é a versão do Google Chrome para o Debian, e o servidor de impressão chamado CUPS:
pi@pi$ sudo apt-get install chromium cups unzip
pi@pi$ sudo apt-get clean
Adicione sua Impressora ao Pi
Agora que temos o software necessário, vamos à configuração. Primeiro, vamos criar uma conta dedicada à impressão, chamaremos o usuário de googlecloudprint e vamos dar a ele acesso à gestão de impressoras, pelo grupo lpadmin.
Para isso, execute o comando abaixo e preencha os campos para criar o usuário. Você definirá um senha para este usuário que iremos precisar logo em seguida, tome nota da mesma e não deixe essa ser uma senha fraca.
pi@pi$ sudo adduser --ingroup lpadmin googlecloudprint
Agora, vamos configurar o CUPs para que possamos adicionar impressoras ao Pi, que serão depois configuradas como impressoras do Cloud Print. O CUPS possui uma interface web que permite gerenciar as impressoras, e nós vamos ativar esta interface web na rede local, assim podemos fazer a gestão das impressoras de outros computadores e o Pi não precisa ficar conectado a teclado ou monitor.
Para isso nós vamos editar o arquivo de configuração do CUPS que está na pasta /etc/cups:
pi@pi$ sudo nano /etc/cups/cupsd.conf
A primeira modificação é no parâmetro Listen, que está restrito ao próprio computador, e nós vamos modificar para não restringir apenas à maquina local. No arquivo, procure por:
# Only listen for connections from the local machine.
Listen localhost:631
Listen /var/run/cups/cups.sock
E modifique para:
# Only listen for connections from the local machine.
# Listen localhost:631
Listen /var/run/cups/cups.sock
Port 631
Agora, mais abaixo no mesmo arquivo, vamos ajustar as configurações de segurança. Procure pelas linhas abaixo, e inclua
Allow @local, semelhante ao que está destacado em negrito:
< Location / >
# Restrict access to the server...
Order allow,deny
Allow @local
< /Location >
< Location /admin >
# Restrict access to the admin pages...
Order allow,deny
Allow @local
< /Location >
< Location /admin/conf >
AuthType Default
Require user @SYSTEM
# Restrict access to the configuration files...
Order allow,deny
Allow @local
< /Location >
Depois de salvar as alterações no arquivo (no nano, utilize CTRL+X depois Y ENTER), reinicie o CUPS:
pi@pi$ sudo service cups restart
Agora que está tudo configurado, tente acessar o CUPS pelo endereço IP do seu Raspberry, na porta 631, a partir de qualquer outro computador na rede ou mesmo de se seu smartphone, se ele estiver conectado à mesma rede que o Pi: https://ip-do-seu-raspberry:631/. Dica: conecte-se via HTTPS, e confirme a exceção de segurança se o navegador exibir essa pergunta.
Uma vez conectado ao CUPS, clique em Administration:
E em seguida, no botão Add Printer:
O CUPS vai pedir uma usuário e senha. Informe o usuário e senha que criamos antereiormente:
googlecloudprint. Escolha a impressora na lista. Você pode adicionar impressoras de rede que estiverem acessíveis ao Pi, ou a impressora conectada por USB. Em seguida, clique em
Continue.
Informe um nome para sua impressora, sem espaços, informe uma descrição, que pode ter espaços, e uma localização, com "Casa" ou "Escritório". Clique em
Continue.
Dica: ao marcar Share this printer, sua impressora ficará visível para outros computadores da rede local, assim você poderá utilizá-la como impressora de rede, mesmo sem o Cloud Print.
Escolha o modelo, normalmente ele estará pré-selecionado, dê um nome para ela e em seguida clique em
Add Printer.
Pode ser que o CUPS exiba também uma página para configurar alguns valores padrão, como orientação de papel, etc. Faça as escolhas que julgar necessário e clique em
Set Default Options.
Eu sugiro que você imprima uma página de testes via CUPS, só para ter certeza que está tudo OK e que o Pi consegue enviar a impressão corretamente.
Configure o serviço do Google Cloud Print
Agora, para por nossa impressora
na núvem, vamos utilizar o Chromium. As etapas para configurar o Cloud Print em modo servidor podem ser obtidas
na documentação oficial, mas eu traduzi e adicionei algumas etapas para a configuração ficar mais robusta.
Primeiro, vamos trocar de usuário para o que criamos anteriormente. Observe que no seu shell, o nome do usuário vai mudar de pi para googlecloudprint:
pi@pi$ sudo su googlecloudprint
googlecloudprint@pi$ cd ~/
googlecloudprint@pi$ wget http://www.google.com/support/enterprise/static/chromeos/docs/admin/en/generate_cloudprint_config.py.zip
googlecloudprint@pi$ unzip generate_cloudprint_config.py.zip
googlecloudprint@pi$ chmod +x generate_cloudprint_config.py
Agora, para concluir, nós vamos utilizar este script para configurar nossa conta do Google para nosso servidor de impressão:
googlecloudprint@pi$ ./generate_cloudprint_config.py
Dica: se você utiliza Two Factor Authentication, vai ter que definir uma Senha de Aplicativo para utilizar. Não se engane: ao por a sua senha do Google o script acima termina sem erros, mas não gera tokens de acesso.
Siga os passos apresentados pelo script. Informe seu usuário e senha do Google, ou senha de aplicativo se tiver two factor authentication ativo. A sua saída será algo mais ou menos assim:
Email Address: ******@gmail.com
Password for ******@gmail.com:
Connector Id: raspberrypi
Printserver URL with port (keep empty to skip): http://localhost:631/
Config file raspberrypi.conf generated for proxy raspberrypi
É importante que você informe o nome do conector raspberrypi e a URL do servidor de impressão CUPS na configuração. Depois que o comando terminar, você terá um arquivo chamado raspberrypi.conf, que deve ser renomeado para Service State:
googlecloudprint@pi$ mv raspberrypi.conf 'Service State'
Agora, vamos criar um script de configuração para o serviço iniciar automaticamente quando ligarmos o Pi.
Dica: Você pode usar o comando: googlecloudprint@pi$ cat > google-cloud-print e em seguida colar o conteúdo e pressionar CTRL+D para salvar.
Salve o arquivo abaixo com o nome google-cloud-print na pasta /home/googlecloudprint:
#!/bin/bash
### BEGIN INIT INFO
# Provides: google-cloud-print
# Required-Start: $remote_fs $syslog $networking
# Required-Stop: $remote_fs $syslog $networking
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Google Cloud Print Service
# Description: This service launches a Google Cloud Print.
### END INIT INFO
export HOME="/home/googlecloudprint/"
unset DISPLAY
start_service() {
echo "Starting service ..."
cd $HOME
start-stop-daemon --start \
--chuid googlecloudprint \
--chdir /home/googlecloudprint \
--background --verbose \
-x /usr/lib/chromium/chromium -- \
--type=service \
--enable-cloud-print-proxy \
--no-service-autorun \
--noerrdialogs \
--user-data-dir=/home/googlecloudprint/ \
--enable-logging --v=1
}
find_pid() {
ps fax | grep enable-cloud-print-proxy |\
grep -v grep | awk '{print $1}'
}
stop_service() {
echo "Stopping service ..."
PID="$(find_pid)"
case "$PID" in
[0-9]*)
echo "Killing $PID ..."
kill -9 $PID 2>/dev/null
;;
*)
echo "Not running ..."
;;
esac
}
case $1 in
start)
start_service
;;
stop)
stop_service
;;
restart)
stop_service
start_service
;;
esac
Agora, vamos instalar este script que criamos como um serviço no sistema:
googlecloudprint@pi$ chmod +x google-cloud-print
googlecloudprint@pi$ exit #para retornar ao usuário que possui acesso sudo (pi no meu caso)
pi@pi$ sudo ln -s /home/googlecloudprint/google-cloud-print /etc/init.d/google-cloud-print
pi@pi$ sudo update-rc.d google-cloud-print defaults
pi@pi$ sudo service google-cloud-print start
Agora, navegue até a página do Google Cloud Print e confirme se a impressora está disponível e online:
Veja nos detalhes avançados da impressora, e note que o campo Proxy será o mesmo nome que definimos em nossa configuração.
Prontinho, agora você pode enviar trabalhos de impressão a partir de qualquer programa ou equipamento compatível com o Google Cloud Print, e eles são encaminhados à sua impressora via internet.
Happy hacking!
Comentários
Postar um comentário