Принт-сервер — это программно-аппаратный комплекс, позволяющий осуществлять общий доступ к принтеру по локальной сети.
В роли принт-сервера могут выступать роутеры с портами для подключения 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 переходник для подключения принтера.
Да, на других моделях тоже можно.
Спасибо!
Добрый день, сделал как здесь написано, при установке принтера пишет ошибка, не найден. Подключаю малинку к виндовс сервер 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 и при установке принтера на сервере так же выдает ошибку и не подключается, при ручной установке через ЛПР тоже не печатает.
Спасибо, все исчерпывающе просто и доступно. Подключил себе Эпсон L800
Спасибо за статью, в первый раз установил принтер без каких-либо проблем, а вот сегодня столкнулся с такой проблемой что, cups не может найти дравйвера для принтера… Принтер xerox 3117. Спасибо!
Версия программы отличается от установленой вами. В новой версии нет окна с выбором драйвера.