Contents

Как сделать почти любой принтер сетевым для печати с телефона и не только

Проблема:

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

Тот самый принтер

Однако, из интерфейсов у принтера есть только usb, который не очень удобно подключать к современной технике через переходники и ходить постоянно подключать для печати одного документа раздражает.


Решение

Решено было сделать принтер сетевым, а доступ к нему расшарить через сервер, чтобы у потребителей не было проблем а какие драйвера необходимо установить для работы хотелось сделать абстракцию для печати и оказалась она существует.

OpenPrinting CUPS. Формально это open-source имплементация протокола печати.


Требования

Если вы захотите повторить мою настройку, необходимо соблюсти несколько требований

  1. Принтер, необходимо проверить, что он поддерживается через поиск на примере моего принтера обращаем на надпись в шапке works Mostly.
  2. Сервер, подключенный к сети, именного с него будет осуществляться подключение принтера.
  3. Docker, работающий на сервере, существуют готовые образы и чтобы не заниматься настройкой гораздо удобнее запустить так.

Установка

  1. Устанавливаем docker, если его нет
  2. Подключаем принтер к серверу, в моем случае по usb
  3. Запускам docker-compose файл
  4. Настраиваем принтер в админке
  5. Наслаждаемся работой и печатью с любых устройств

Теперь подробно про запуск

Docker-compose

Для удобной настройки я сделал все в docker-compose.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
version: "3.2"
services:
  deluge:
    image: chuckcharlie/cups-avahi-airprint:latest
    # доступ к host сети
    network_mode: host
    container_name: cups
    environment:
      - CUPSADMIN=admin
      - CUPSPASSWORD=admin
    devices:
    # пробрасываем usb
      - /dev/bus/usb:/dev/bus/usb
    volumes:
      - type: bind
        source: /home/user/services
        target: /services
      - type: bind
        source: /home/user/config
        target: /config

    restart: unless-stopped
Несколько комментариев, network_mode: host необходим для работы airprint, если просто пробросить порты не заведется. /dev/bus/usb необходим для доступа по usb к принтеру. Пути для volume стоит тоже изменить, на любые подходящие вам.

Настройки в админке

  1. Открываем админку, она будет доступна по адресу <адрес сервера>:631/

    Админка

  2. Переходим в раздел Administration <адрес сервера>:631/admin, Add printer
  3. Выбираем принтер подключенный по usb

    Добавление принтера

  4. Даем название принтеру и обязательно нажимаем галочку поделиться принтером (Share this printer)

    Шаринг принтера

  5. Принтер успешно добавлен и должен быть доступен с других устройств

    Принтер обнаружен

Ссылки