Configure o servidor de impressão CUPS no Ubuntu (Bonjour, IPP, Samba, AirPrint)
Este tutorial mostrará como compartilhar uma impressora conectada a um computador Ubuntu com clientes Windows, macOS e iOS na mesma rede. CUPS (Common Unix Printing System) é o sistema de impressão padrão no Linux, FreeBSD e macOS. Seu ambiente de desktop Linux pode ter um utilitário de configuração de impressora dedicado, mas todos eles usam CUPS internamente.
A impressora CUPS pode ser compartilhada na rede usando vários protocolos, incluindo:
- Bonjour + IPP: Bonjour, também conhecido como mDNS/DNS-SD (descoberta de serviço DNS/DNS multicast), permite que um computador encontre serviços na rede local. IPP (Internet Printing Protocol) é o protocolo de transporte.
- SMB: também conhecido como Samba, usado principalmente para compartilhar arquivos e impressoras com clientes Windows.
- AirPrint: permite que clientes iPhone, iPad e macOS imprimam por Wi-Fi.
Cada protocolo tem suas vantagens e desvantagens. Primeiro, mostrarei como instalar e configurar o CUPS. A seguir aprenderemos como compartilhar a impressora CUPS por meio dos 3 protocolos acima. Recomendo usar todos os três métodos para compartilhar sua impressora, para que os usuários possam encontrar uma impressora disponível na rede local com o mínimo de esforço.
Etapa 1: instalar e configurar o CUPS no Ubuntu
A edição desktop do Ubuntu tem o CUPS pré-instalado. Se você usa a edição do servidor Ubuntu, você precisa executar o seguinte comando para instalar o CUPS do repositório padrão do Ubuntu.
sudo apt install cups
Então inicie o CUPS.
sudo systemctl start cups
Habilite a inicialização automática no momento da inicialização.
sudo systemctl enable cups
Verifique seu status:
systemctl status cups
Exemplo de saída:
Em seguida, edite o arquivo de configuração principal do CUPS com um editor de texto de linha de comando como o Nano.
sudo nano /etc/cups/cupsd.conf
Primeiro, precisamos mostrar as impressoras compartilhadas na rede local. Encontre a seguinte linha.
Browsing Off
Mude para
Browsing On
para que outros computadores na mesma rede possam ver as impressoras conectadas ao seu computador Ubuntu.
Por padrão, a interface web do CUPS está disponível apenas em localhost:631
. Se você estiver executando a edição do servidor Ubuntu, você também pode querer fazer o CUPS escutar em todas as interfaces de rede disponíveis, para que você possa acessar a interface web do CUPS de outros computadores. Encontre a seguinte linha.
Listen localhost:631
Mude para
Port 631
Portanto, o CUPS escutará todas as interfaces de rede. Em seguida, encontre as seguintes linhas.
<Location />
Order allow,deny
</Location>
A configuração acima permite acesso à interface web do CUPS apenas a partir do localhost. Para permitir o acesso de outros computadores na mesma rede, adicione Allow @LOCAL
à configuração como abaixo.
<Location />
Order allow,deny
Allow @LOCAL
</Location>
Adicione-o também ao diretório /admin
para permitir a administração remota da rede local.
<Location /admin>
Order allow,deny
Allow @LOCAL
</Location>
Você também pode permitir um endereço IP específico como este:
<Location />
Order allow,deny
Allow 192.168.0.101
</Location>
Salve e feche o arquivo. Em seguida, reinicie o CUPS para que as alterações tenham efeito.
sudo systemctl restart cups
Observe que se você habilitou o firewall UFW no Ubuntu, você precisa permitir que clientes na mesma rede acessem a porta 631 em sua caixa Ubuntu. Por exemplo, minha rede privada está usando o intervalo de rede 192.168.0.0 ~192.168.0.255, então executo o seguinte comando.
sudo ufw allow in from 192.168.0.0/24 to any port 631
A interface web do CUPS está disponível em https://IP-address-of-Ubuntu-box:631
. Não precisamos usar a interface web neste artigo, mas se quiser usá-la, você precisará adicionar sua conta de usuário ao grupo lpadmin
para fazer alterações na web do CUPS. interface.
sudo adduser your_username lpadmin
Etapa 2: Instale o driver para sua impressora no Ubuntu
Você precisa instalar o driver no Ubuntu, para que ele possa reconhecer e usar a impressora. Se você tiver uma impressora HP, poderá instalar facilmente o driver com o seguinte comando.
sudo apt install hplip
Também recomendo instalar o pacote printer-driver-gutenprint
, que fornece drivers CUPS para Canon, Epson, HP e impressoras compatíveis.
sudo apt install printer-driver-gutenprint
Se você tiver outras impressoras, poderá encontrar drivers em openprinting.org.
Depois de instalar o driver, pode ser necessário reconectar a impressora à porta USB do seu computador Ubuntu. Para testar se o driver está funcionando corretamente, você pode criar um arquivo de texto no Ubuntu:
echo " is awesome!" > file.txt
Em seguida, execute o seguinte comando para imprimir este arquivo de texto na linha de comando.
lp file.txt
Este é um método muito rudimentar, então não se preocupe com a qualidade de impressão agora.
Etapa 3: Compartilhe a impressora CUPS via protocolo Bonjour/IPP
Instalando o Avahi-daemon
O CUPS pode anunciar sua presença na rede via protocolo mDNS (DNS multicast) e DNS-SD (DNS Service Discovery), também conhecido como Bonjour. Para fazer isso, você precisa instalar e executar o avahi-daemon
, que é um serviço semelhante ao serviço Apple Bonjour que permite que os computadores descubram automaticamente dispositivos e serviços compartilhados na rede local.
sudo apt install avahi-daemon
Inicie o avahi-daemon.
sudo systemctl start avahi-daemon
Habilite a inicialização automática no momento da inicialização.
sudo systemctl enable avahi-daemon
Avahi-daemon escuta na porta UDP 5353. Abra-o no firewall.
sudo ufw allow 5353/udp
Impressão sem driver IPP
Bonjour é usado para anunciar a impressora na rede local. Para fazer com que os clientes e o servidor CUPS se comuniquem, é necessário o IPP (Internet Printing Protocol). A vantagem do IPP é que os clientes podem usar a impressora compartilhada sem instalar nenhum driver em seus próprios dispositivos. O CUPS oferece suporte a IPP pronto para uso, então você não precisa fazer mais nada para compartilhar a impressora CUPS via IPP.
Etapa 4: Adicionar impressora em computadores clientes
Clientes macOS e Linux
Como o macOS e a maioria das distribuições de desktop Linux têm o CUPS instalado como sistema de impressão padrão, depois de ativar o compartilhamento de impressora via Bonjour/IPP na caixa do Ubuntu, os usuários do macOS e do Linux na mesma rede podem usar a impressora automaticamente. Ao clicar na opção de impressão em aplicativos (processadores de texto, leitores de e-mail, editores de fotos e navegadores da web), a impressora estará automaticamente disponível. Eles não precisam adicionar explicitamente a impressora. É Magica.
Se o seu computador Linux não conseguir encontrar a impressora, é possível que o seu sistema não tenha o comando ippfind
. Execute o seguinte comando para instalá-lo na distribuição Linux baseada em Debian.
sudo apt install cups-ipp-utils
No CentOS 8, execute o seguinte comando.
sudo dnf install cups-ipptool
Em seguida, reinicie o CUPS no computador cliente.
sudo systemctl restart cups
janelas
O Windows 10 vem com um cliente IPP. Digite impressora na barra de pesquisa no canto inferior esquerdo e abra Impressoras e Scanners. Em seguida, clique no botão Adicionar uma impressora ou scanner. Ele verificará as impressoras disponíveis na rede local.
Como você pode ver, ele encontrou minha impressora HP Deskjet. Selecione a impressora encontrada e clique em Adicionar dispositivo. Ela será adicionada à lista de impressoras em alguns instantes.
Se você estiver usando uma versão diferente do Windows que não pode adicionar impressora dessa forma, poderá instalar os serviços Bonjour Print. Depois de instalado, inicie o assistente da impressora Bonjour. Ele verificará automaticamente as impressoras disponíveis na rede local. Como você pode ver na captura de tela, encontrei minha impressora HP.
Clique em Avançar e você precisará escolher um driver para esta impressora. Você pode escolher o driver de classe IPP da Microsoft, que é instalado no sistema por padrão.
Clique em Avançar e a impressora será adicionada ao sistema Windows.
Adicionando impressora manualmente no Linux
Se por algum motivo você não vir a impressora, poderá adicionar uma manualmente. Para adicionar uma impressora compartilhada Bonjour no desktop Linux, pesquise nas configurações do sistema ou no menu do aplicativo o utilitário de configuração da impressora. Clique no botão Adicionar para adicionar uma nova impressora.
Em seguida, clique em Impressora de rede e verificará automaticamente as impressoras disponíveis na rede local. Como você pode ver, ele encontrou minha impressora HP Deskjet. Clique no botão Avançar.
Em seguida, você pode dar um nome e uma descrição à impressora. Eu simplesmente aceito os valores padrão. Clique em Aplicar e pronto.
Adicionando impressora manualmente no macOS
Para adicionar uma impressora compartilhada Bonjour no macOS, acesse preferências do sistema -> Impressoras e Scanners. Clique no botão de adição (+) para adicionar uma impressora.
Ele verificaria automaticamente as impressoras disponíveis na rede local. Como você pode ver, ele encontrou minha impressora HP Deskjet.
Clique no botão Adicionar e ele aparecerá na lista de impressoras.
Etapa 5: Compartilhe a impressora CUPS via Samba
Samba é uma implementação de protocolo SMB/CIFS gratuita e de código aberto para Unix e Linux que permite o compartilhamento de arquivos e impressões entre máquinas Unix/Linux e Windows em uma rede local. É usado principalmente para compartilhar arquivos e impressoras com clientes Windows.
Para instalar o Samba no Ubuntu, basta executar o seguinte comando no terminal.
sudo apt install samba samba-common-bin
Para verificar se o serviço Samba está em execução, emita os seguintes comandos.
systemctl status smbd
systemctl status nmbd
Para iniciar esses dois serviços, emita os seguintes comandos:
sudo systemctl start smbd
sudo systemctl start nmbd
Em seguida, edite o arquivo de configuração principal.
sudo nano /etc/samba/smb.conf
É recomendado ativar o serviço spoolssd
ao compartilhar a impressora. Isso tornará o Samba mais eficiente quando houver muitos trabalhos de impressão. Basta adicionar as duas linhas a seguir na seção [global]
para ativar o serviço spoolssd
.
rpc_server:spoolss = external
rpc_daemon:spoolssd = fork
Em seguida, vá até o final do arquivo e você verá a seção [impressoras]
. No editor de texto Nano, você pode pular para o final de um arquivo pressionando Ctrl+W
e, em seguida, pressionando Ctrl+V
. Encontre as duas linhas a seguir.
browseable = no
guest ok = no
Mude-os para
browseable = yes
guest ok = yes
Salve e feche o arquivo. Em seguida, reinicie o Samba.
sudo systemctl restart smbd nmbd
Adicionando uma impressora compartilhada com Samba no Windows.
Abra o explorador de arquivos, digite o endereço IP do computador Ubuntu na barra de endereço como \\192.168.0.110
. A impressora agora deve estar listada.
Clique duas vezes na impressora para adicioná-la ao sistema Windows. Em seguida, clique no botão OK para selecionar um driver para instalar. Após instalar o driver, a impressora será adicionada ao sistema Windows.
Etapa 6: Compartilhe a impressora CUPS com clientes iOS via AirPrint
O AirPrint permite que clientes iPhone, iPad e macOS imprimam por Wi-Fi sem instalar software de driver nos dispositivos clientes. O CUPS suporta AirPrint, mas avahi-daemon
por padrão não anuncia o serviço AirPrint na rede local. Precisamos criar um arquivo .service
no diretório /etc/avahi/services/
para a impressora com um script Python com o seguinte comando. O modelo da minha impressora é a série DeskJet 2130. Substitua-o pelo nome do seu próprio modelo.
sudo nano /etc/avahi/services/AirPrint-DeskJet-2130-series.service
Adicione as seguintes linhas no arquivo.
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE service-group SYSTEM "avahi-service.dtd">
<service-group>
<name replace-wildcards="yes">AirPrint DeskJet-2130-series @ %h</name>
<service>
<type>_ipp._tcp</type>
<subtype>_universal._sub._ipp._tcp</subtype>
<port>631</port>
<txt-record>txtvers=1</txt-record>
<txt-record>qtotal=1</txt-record>
<txt-record>Transparent=T</txt-record>
<txt-record>URF=none</txt-record>
<txt-record>rp=printers/DeskJet-2130-series</txt-record>
<txt-record>note=HP DeskJet 2130 series</txt-record>
<txt-record>product=(GPL Ghostscript)</txt-record>
<txt-record>printer-state=3</txt-record>
<txt-record>printer-type=0x2900c</txt-record>
<txt-record>pdl=application/octet-stream,application/pdf,application/postscript,application/vnd.cups-raster,image/gif,image/jpeg,image/png,image/tiff,image/urf,text/html,text/plain,application/vnd.adobe-reader-postscript,application/vnd.cups-pdf</txt-record>
</service>
</service-group>
Salve e feche o arquivo. Reinicie o daemon Avahi.
sudo systemctl restart avahi-daemon
Agora, os clientes iOS e macOS na mesma rede deverão poder usar sua impressora. A captura de tela a seguir mostra que meu iPhone encontrou com sucesso uma impressora AirPrint.
Empacotando
Espero que este tutorial tenha ajudado você a configurar um servidor de impressão CUPS no Ubuntu 20.04, 18.04 e 21.10. Como sempre, se você achou esta postagem útil, assine nosso boletim informativo gratuito para obter mais dicas e truques. E você também pode ler o artigo a seguir para configurar um servidor de compartilhamento de arquivos Samba.
- Configure o servidor Samba no Ubuntu para compartilhamento de arquivos