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

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

Дата Автор 26 комментариев 37 940 просмотров

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

В роли принт-сервера могут выступать роутеры с портами для подключения 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

Автор статьи:
Дмитрий
Руководитель отдела в IT-компании. Веду этот блог с 2013 года, пишу о гаджетах и домашней автоматизации, обозреваю одноплатные компьютеры, неспешно собираю «умный дом».

26 комментария на «Raspberry Pi 3. Установка и настройка принт-сервера CUPS»

    • А что с ним не так, нет в списке? Если так, то пробовать выставлять наиболее близкие модели и печатать пробную страницу для проверки. Где пробная страница отпечатается без проблем — тот конфиг и оставлять.

  1. Спасибо, перерыл тонну инфы и понял что это не возможно, у них проблемы с CUPS, психанул и продал его, добавил и купил Brother небо и земля. А статьи супер, мне очень нравятся, пишите еще, в хозяйстве уже 3 малинка живет )))

  2. А что делать если, пишет что все установилось но файла по адресу /etc/cups/cupsd.conf вообще не существует и папки «cups» в «etc» тоже нет?

  3. Статья очень понравилась. Однако возникло пару уточняющих вопросов. Какую именно ОС вы использовали (я понял что debian based, но все же)? И можно ли использовать принтсервер по wifi?

  4. Что-то не получается обойти вопрос с аутентификацией. Делаю, как описано, потом уже и сам загуглил. так вот все равно просит ввести имя и пароль в момент, когда хочу добавить принтер….
    Есть идея почему?

  5. А есть ли возможность сделать управление всеми принтерам через веб сайт, допустим я бегу домой но по дороге кидаю документ на распечатку на сайте, а дома он меня ждёт уже напечатнный?

  6. Спасибо за статью, очень полезно! Я так понимаю, на других моделях Raspberry тоже это можно провернуть? В наличии есть Raspberry pi zero w. Только понадобится usb-otg переходник для подключения принтера.

  7. Добрый день, сделал как здесь написано, при установке принтера пишет ошибка, не найден. Подключаю малинку к виндовс сервер 2016 по впн, через роутер микротик. Сможете помочь подключить?

    • Добрый день. Предполагаю, что проблема из-за того, что компьютер и малина находятся в разных подсетях, но по настройке микротика ничего конкретного подсказать не могу.

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

      • Решил попробовать через самбу, устанавливаю по вашей ссылке https://dmitrysnotes.ru/raspberry-pi-3-organizaciya-setevogo-dostupa-k-fajlam-cherez-samba и на 3 шаге ступор, не может найти tracker-sparql-2.0 (1.0 0.16 0.14) попытался поставить по ссылкаv с github, вынес себе весь мозг но такою установку не осилил, вопрос поможет установка самбы в моем случае с принтером, и если да то подскажите как установить недостающие компоненты.

      • Подключил просто малину с Убунтой с КАПС сервером в локалку с Виндовс сервер 2016 и при установке принтера на сервере так же выдает ошибку и не подключается, при ручной установке через ЛПР тоже не печатает.

  8. Спасибо за статью, в первый раз установил принтер без каких-либо проблем, а вот сегодня столкнулся с такой проблемой что, cups не может найти дравйвера для принтера… Принтер xerox 3117. Спасибо!

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

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

[Хамство, оскорбления и попытки крауд-маркетинга будут удалены]