Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Raspberry Pi 3. Установка и настройка принт-сервера CUPS

Дата Автор DmitryОставить комментарий 3 063 просмотров

Принт-сервер — это программно-аппаратный комплекс, позволяющий осуществлять общий доступ к принтеру по локальной сети.

В роли принт-сервера могут выступать роутеры с портами для подключения USB-устройств. Принт-серверы продаются в виде отдельных устройств с портами USB и Ethernet. А некоторые продвинутые модели принтеров сами по себе обладают поддержкой беспроводной печати.

Также принт-сервер можно сделать своими руками при помощи одноплатного компьютера Raspberry Pi и сервера печати CUPS (Common UNIX Printing System). Созданию принт-сервера на основе Raspberry Pi и посвящена эта статья.

Что нам понадобится

Для осуществления описываемых в этой статье действий понадобится:

Установка и настройка принт-сервера CUPS

Пакет CUPS включен в стандартные репозитории Debian, поэтому для установки нужно просто выполнить консольную команду:

sudo apt-get install cups avahi-daemon avahi-discover

В дополнение к CUPS установим еще Foomatic.

Выражаясь привычным для пользователя Windows языком можно сказать, что Foomatic — это такая база драйверов для принтеров, существенно расширяющая стандартную базу драйверов CUPS:

sudo apt-get install foomatic-db foomatic-db-engine

Теперь добавим пользователя pi в группу lpadmin, позволяющую управлять принтерами:

sudo adduser pi lpadmin

И отредактируем файл конфигурации:

sudo nano /etc/cups/cupsd.conf

С настройками CUPS по умолчанию административный веб-интерфейс доступен только локально, т.е. заходить в него можно только с самой Raspberry Pi. Сделаем так, чтобы он был доступен с любого устройства по локальной сети. Для этого нужно найти найти и закомментировать строку Listen localhost:631, а также добавить новую строку Port 631:

# Only listen for connections from local machine.
#Listen localhost:631 ///эту строку комментируем
Port 631 ///эту строку добавляем

Думаю, что по тексту понятно что меняется при этом изменении настроек: если по умолчанию CUPS слушал назначенный для себя порт 631 только с локальной машины, то теперь он будет слушать обращения к этому порту с любого устройства.

Было — стало:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Но это не все.

Теперь нужно добавить еще несколько новых строк в этом же файле, чтобы открыть доступ к админ-панели по локальной сети.

Если не сделать этого, то при попытке зайти в веб-интерфейс будет отображаться ошибка 403 Forbidden:

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow @Local ///эту строку добавляем
</Location>
 
# Restrict access to the admin pages...
<Location /admin>
  Order allow,deny
  Allow @Local ///эту строку добавляем
</Location>
 
# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order allow,deny
  Allow @Local ///эту строку добавляем
</Location>

Было — стало:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

На этом настройка завершена. Перезапустим CUPS для применения сделанных изменений:

sudo service cups restart

Если все сделано правильно, то веб-интерфейс CUPS станет доступен по адресу http://ip-адрес-raspberry-pi:631 из браузера.

Подключение принтера к принт-серверу CUPS

Принт-сервер CUPS установлен и настроен, теперь осталось подключить к нему наш принтер.

Убеждаемся, что принтер включен и подсоединен к Raspberry Pi по USB, после чего заходим в веб-интерфейс CUPS:

Переходим на вкладку «Администрирование»:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Убеждаемся, что стоит галочка на «Разрешить совместный доступ к принтерам, подключенным к этой системе» и жмем на «Добавить принтер»:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

В нем выбираем свой принтер из списка обнаруженных системой. В моем примере это будет Brother HL-2132R. Нажимаем «Применить» и выбираем подходящий драйвер:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Нужно выбрать из списка драйвер для своей модели принтера, но если таковых нет — скорее всего подойдет драйвер от соседней модели того же модельного ряда. В этом примере я устанавливаю драйвер от модели HL-2135 на принтер HL-2132.

После завершения установки переходим на вкладку «Принтеры», выбираем там добавленный принтер и пытаемся напечатать пробную страницу через меню «Обслуживание»:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Успешная печать пробной страницы — признак того, что драйвер для принтера подобран верно. Если с пробной страницей возникают проблемы, если принтер не печатает ее вообще или выдает пустые листы без текста — значит проблема в подборе драйвера. Нужно удалять установленный принтер и устанавливать его заново, указывая при этом другие драйвера.

Тут еще раз хочу обратить внимание на важность установки пакета Foomatic, упоминаемого в начале этой инструкции. Без него шанс не обнаружить драйвера для своего принтера в списке довольно велики, т.к. стандартный набор драйверов CUPS весьма скуден.

Подключение сетевого принтера к Windows-устройству

Предположим, что установка драйвера для подключенного к принт-серверу CUPS принтера прошла успешно. Теперь нужно подружить с этим принтером компьютер, работающий под управлением Windows.

Если на Raspberry Pi установлена Samba, то ярлык принтера автоматически появится в «Сетевом окружении» вместе с другими расшаренными на «малине» ресурсами. Однако подключить принтер к компьютеру с этого ярлыка мне так и не удалось: раз за разом Windows выдавала ошибку доступа. Как решить эту проблему я так и не понял, но оказалось, что есть более простой и быстрый способ добавления принтера в систему.

Забываем вообще про наличие Samba. Вместо этого переходим в веб-интерфейс CUPS на страницу нашего принтера:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

И копируем сетевой путь к нему из адресной строки.

После чего открываем «Устройства и принтеры» в панели управления, жмем «Добавить принтер», затем «Необходимый принтер отсутствует в списке» в открывшемся окне, и далее указываем сетевой путь к нашему принтеру — тот самый, скопированный из адресной строки браузера:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

На этом установка завершается, а принтером можно пользоваться так, будто бы он подключен непосредственно к этому компьютеру.

Доступ к сетевому принтеру с устройств под управлением iOS

Любым принтером, расшаренным через принт-сервер CUPS, можно пользоваться с любого iOS-устройства, а также с компьютеров Mac вообще без установки драйверов.

Это обусловлено тем, что CUPS поддерживает созданную корпорацией Apple технологию беспроводной печати AirPrint:

Установка и настройка принт-сервера CUPS на Raspberry Pi 3

Вот так выглядит окно печати на айфоне.

Что тут еще сказать? Принтер просто обнаруживается и просто работает.

Добавляем в систему PDF-принтер

Отдельно напишу о том, как подключить к принт-серверу CUPS виртуальный PDF-принтер.

Что есть PDF-принтер? Это виртуальное устройство, которое добавляется в систему как обычный принтер и при отправке документа на печать генерирует из него pdf-файл. Использовать PDF-принтер удобно для сохранения статей из интернета или отдельных страниц многостраничного документа в виде отдельного файла.

Для установки PDF-принтера нужно установить отдельный пакет:

sudo apt-get install cups-pdf

Затем создать на Raspberry Pi папку для хранения получаемых pdf-файлов и прописать к ней права доступа:

mkdir -p /mnt/usbstorage/PDF
sudo chown pi:lpadmin /mnt/usbstorage/PDF
sudo chmod 777 /mnt/usbstorage/PDF

И отредактировать файл конфигурации:

sudo nano /etc/cups/cups-pdf.conf

В нем нас интересуют следующие строки:

#Out /var/spool/cups-pdf/${USER}
#AnonDirName /var/spool/cups-pdf/ANONYMOUS
#Spool /var/spool/cups-pdf/SPOOL
#TitlePref 0

Их нужно раскомментировать (удалить знак #) и изменить следующим образом:

Out /mnt/usbstorage/PDF
AnonDirName /mnt/usbstorage/PDF
Spool /mnt/usbstorage/PDF
TitlePref 1

Первые 3 строки меняют пути сохранения pdf-файлов в созданную нами директорию на внешнем носителе, а четвертая строка меняет формат генерации названия выдаваемого файла. Дело в том, что с настройкой по умолчанию CUPS-PDF не осиливает длинные русскоязычные названия документов и в результате не сохраняет сгенерированные pdf-файлы на диск. После изменения этой настройки проблема уходит.

После чего остается перезагрузить сервер CUPS:

sudo service cups restart

А затем установить новый принтер и подключить его к компьютеру под Windows, эти шаги идентичны шагам по установке и подключению обычного принтера, описанным выше.

Заключение

Вот так за полчаса времени можно создать принт-сервер.

И если для офисов эта тема неактуальна (там, как правило, стоит свой сервер и принтеры расшариваются на всю локальную сеть через него), то для дома это очень удобное решение.

Кстати, принт-серверы промышленного производства стоят примерно столько же, сколько и сам Raspberry Pi. Только покупая принт-сервер вы получаете устройство с одной единственной функцией, а Raspberry Pi — многозадачное устройство, способное помимо сетевого доступа к принтерам еще и хранить ваш медиаконтент, и выступать в качестве приватного облака, и электронную библиотеку на себе держать, и выполнять еще много полезных функций.

Raspberry Pi 3B (английская сборка)в интернет-магазине GearBest Raspberry Pi 3B (китайская сборка)в интернет-магазине GearBest

Понравилась статья? Выразите благодарность автору переводом любой суммы на ваше усмотрение :)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *