Принт-сервер – это программно-аппаратный комплекс, позволяющий осуществлять общий доступ к принтеру по локальной сети.
В роли принт-сервера могут выступать роутеры с портами для подключения USB-устройств. Принт-серверы продаются в виде отдельных устройств с портами USB и Ethernet. А некоторые продвинутые модели принтеров сами по себе обладают поддержкой беспроводной печати.
Также принт-сервер можно сделать своими руками при помощи одноплатного компьютера Raspberry Pi и сервера печати CUPS (Common UNIX Printing System). Созданию принт-сервера на основе Raspberry Pi и посвящена эта статья.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- USB-принтер
- Локальная сеть
Установка и настройка принт-сервера 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 только с локальной машины, то теперь он будет слушать обращения к этому порту с любого устройства.
Было – стало:
Но это не все.
Теперь нужно добавить еще несколько новых строк в этом же файле, чтобы открыть доступ к админ-панели по локальной сети.
Если не сделать этого, то при попытке зайти в веб-интерфейс будет отображаться ошибка 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 для применения сделанных изменений:
sudo service cups restart
Если все сделано правильно, то веб-интерфейс CUPS станет доступен по адресу http://ip-адрес-raspberry-pi:631 из браузера.
Подключение принтера к принт-серверу CUPS
Принт-сервер CUPS установлен и настроен, теперь осталось подключить к нему наш принтер.
Убеждаемся, что принтер включен и подсоединен к Raspberry Pi по USB, после чего заходим в веб-интерфейс CUPS:
Переходим на вкладку “Администрирование”:
Убеждаемся, что стоит галочка на “Разрешить совместный доступ к принтерам, подключенным к этой системе” и жмем на “Добавить принтер”:
В нем выбираем свой принтер из списка обнаруженных системой. В моем примере это будет Brother HL-2132R. Нажимаем “Применить” и выбираем подходящий драйвер:
Нужно выбрать из списка драйвер для своей модели принтера, но если таковых нет – скорее всего подойдет драйвер от соседней модели того же модельного ряда. В этом примере я устанавливаю драйвер от модели HL-2135 на принтер HL-2132.
После завершения установки переходим на вкладку “Принтеры”, выбираем там добавленный принтер и пытаемся напечатать пробную страницу через меню “Обслуживание”:
Успешная печать пробной страницы – признак того, что драйвер для принтера подобран верно. Если с пробной страницей возникают проблемы, если принтер не печатает ее вообще или выдает пустые листы без текста – значит проблема в подборе драйвера. Нужно удалять установленный принтер и устанавливать его заново, указывая при этом другие драйвера.
Тут еще раз хочу обратить внимание на важность установки пакета Foomatic, упоминаемого в начале этой инструкции. Без него шанс не обнаружить драйвера для своего принтера в списке довольно велики, т.к. стандартный набор драйверов CUPS весьма скуден.
Подключение сетевого принтера к Windows-устройству
Предположим, что установка драйвера для подключенного к принт-серверу CUPS принтера прошла успешно. Теперь нужно подружить с этим принтером компьютер, работающий под управлением Windows.
Если на Raspberry Pi установлена Samba, то ярлык принтера автоматически появится в “Сетевом окружении” вместе с другими расшаренными на “малине” ресурсами. Однако подключить принтер к компьютеру с этого ярлыка мне так и не удалось: раз за разом Windows выдавала ошибку доступа. Как решить эту проблему я так и не понял, но оказалось, что есть более простой и быстрый способ добавления принтера в систему.
Забываем вообще про наличие Samba. Вместо этого переходим в веб-интерфейс CUPS на страницу нашего принтера:
И копируем сетевой путь к нему из адресной строки.
После чего открываем “Устройства и принтеры” в панели управления, жмем “Добавить принтер”, затем “Необходимый принтер отсутствует в списке” в открывшемся окне, и далее указываем сетевой путь к нашему принтеру – тот самый, скопированный из адресной строки браузера:
На этом установка завершается, а принтером можно пользоваться так, будто бы он подключен непосредственно к этому компьютеру.
Доступ к сетевому принтеру с устройств под управлением iOS
Любым принтером, расшаренным через принт-сервер CUPS, можно пользоваться с любого iOS-устройства, а также с компьютеров Mac вообще без установки драйверов.
Это обусловлено тем, что CUPS поддерживает созданную корпорацией Apple технологию беспроводной печати AirPrint:
Вот так выглядит окно печати на айфоне.
Что тут еще сказать? Принтер просто обнаруживается и просто работает.
Добавляем в систему 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
Отличное руководство, спасибо, а есть идея как Canon mf4010 настроить?
А что с ним не так, нет в списке? Если так, то пробовать выставлять наиболее близкие модели и печатать пробную страницу для проверки. Где пробная страница отпечатается без проблем – тот конфиг и оставлять.
Спасибо, перерыл тонну инфы и понял что это не возможно, у них проблемы с CUPS, психанул и продал его, добавил и купил Brother небо и земля. А статьи супер, мне очень нравятся, пишите еще, в хозяйстве уже 3 малинка живет )))
А что делать если, пишет что все установилось но файла по адресу /etc/cups/cupsd.conf вообще не существует и папки “cups” в “etc” тоже нет?
не хватает статьи по настройке sane )
Был бы еще сканер под рукой). Возьму на заметку в качестве темы.
А если это МФУшка, то только принтер будет работать?
Да, скорее всего.
Посмотрите вот инструкцию: http://forums.zyxmon.org/viewtopic.php?f=5&t=32&p=19338#p19338
Вчера настраивали.
Статья очень понравилась. Однако возникло пару уточняющих вопросов. Какую именно ОС вы использовали (я понял что debian based, но все же)? И можно ли использовать принтсервер по wifi?
Что-то не получается обойти вопрос с аутентификацией. Делаю, как описано, потом уже и сам загуглил. так вот все равно просит ввести имя и пароль в момент, когда хочу добавить принтер….
Есть идея почему?
Может есть какой-то стандартный пользователь? Я уже пробовал что-то вроде user:user, admin:admin, etc
Ох, уже не помню я как делал.
Попробую установить заново с нуля и отпишусь.
Нужно ввести имя своего сервера (чаще всего это “pi”), и пароль, который вы установили для своего сервера.
Имя сервера ещё можно узнать командой “whoami”.
Источник: https://www.cups.org/faq.html
А есть ли возможность сделать управление всеми принтерам через веб сайт, допустим я бегу домой но по дороге кидаю документ на распечатку на сайте, а дома он меня ждёт уже напечатнный?
Спасибо за статью, очень полезно! Я так понимаю, на других моделях Raspberry тоже это можно провернуть? В наличии есть Raspberry pi zero w. Только понадобится usb-otg переходник для подключения принтера.
Да, на других моделях тоже можно.
Спасибо!