Настройка печати на Synology с принтером HP LaserJet Professional M1132 MFP

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Synology NAS может выполнять роль принт-сервера, позволяя печатать документы по сети без необходимости постоянно держать компьютер включённым. В этой статье я расскажу, как настроить печать через CUPS (Common UNIX Printing System) на примере HP LaserJet Professional M1132 MFP, подключённого по USB.

Это актуально для старых принтеров, у которых имеется только USB-порт, без LAN и WiFi.

В качестве рабочей отправной точки я использовал репозиторий: https://github.com/ziwork/synology-airprint

Перед запуском Docker Container на DSM7 Synology запустите эти команды в терминале SSH:

  • sudo synosystemctl stop cupsd

  • sudo synosystemctl stop cups-lpd

  • sudo synosystemctl stop cups-service-handler

  • sudo synosystemctl disable cupsd

  • sudo synosystemctl disable cups-lpd

  • sudo synosystemctl disable cups-service-handler

В качестве терминала я использую PuTTY

1. Подключение принтера к Synology

Подключите HP LaserJet Professional M1132 MFP к USB-порту Synology NAS и убедитесь, что устройство распознано.

Войдите в NAS через SSH и выполните команду:

lsusb

Ожидаемый вывод должен содержать строку, например:

__1-1 03f0:042a:0100 00  2.00  480MBit/s 98mA 3IFs (Hewlett-Packard HP LaserJet Professional M1132 MFP)

2. Развёртывание CUPS в Docker через Jenkins

Я использую для развертывания контейнеров Jenkins, так как он дает больше гибкости и возможностей. Я точно не помню, какой инструкцией я пользовался для его развертывания, возможно эта: https://www.christian-knedel.de/ru/post/2021/march/20210321-docker-jenkins/

Также Jenkins я использовал, так как по умолчанию у меня не выполнялись команды docker для развертывания контейнера даже через sudo и пришлось сделать много настроек, чтобы решить эту проблему. В общем Jenkins - проще :)

Тем не менее команда Docker, если не будете использовать Jenkins:

docker run --name cups --restart unless-stopped --net host \
  --device=/dev/bus/usb:/dev/bus/usb \
  --privileged \
  -v /volume1/docker/cups/services:/services \
  -v /volume1/docker/cups/config:/config \
  -e CUPSADMIN=admin \
  -e CUPSPASSWORD=password \
  linuxserver/cups

Шаг 1: Создание директорий для CUPS

Перед развёртыванием создадим папки для хранения конфигурации:

mkdir -p /volume1/docker/cups/services
mkdir -p /volume1/docker/cups/config
chmod -R 777 /volume1/docker/cups

Шаг 2: Настройка Jenkins Pipeline

Если CUPS должен развернуться автоматически через Jenkins, создайте Jenkins Pipeline со следующим Jenkinsfile:

pipeline {
    agent any

    environment {
        CUPS_CONTAINER_NAME = "cups"
        CUPS_IMAGE = "linuxserver/cups"
        SERVICES_DIR = "/volume1/docker/cups/services"
        CONFIG_DIR = "/volume1/docker/cups/config"
        CUPS_ADMIN = "admin"
        CUPS_PASSWORD = "password"
    }

    stages {
        stage('Cleanup old container') {
            steps {
                script {
                    def isExisting = sh(script: "docker ps -aq -f name=${CUPS_CONTAINER_NAME}", returnStdout: true).trim()
                    if (isExisting) {
                        echo "Stopping and removing old container..."
                        sh "docker stop ${CUPS_CONTAINER_NAME} || true"
                        sh "docker rm ${CUPS_CONTAINER_NAME} || true"
                    } else {
                        echo "Container ${CUPS_CONTAINER_NAME} does not exist. Skipping removal."
                    }
                }
            }
        }

        stage('Deploy CUPS Container') {
            steps {
                script {
                    sh """
                    docker run --name ${CUPS_CONTAINER_NAME} --restart unless-stopped --net host \
                      --device=/dev/bus/usb:/dev/bus/usb \
                      --privileged \
                      -v ${SERVICES_DIR}:/services \
                      -v ${CONFIG_DIR}:/config \
                      -e CUPSADMIN=${CUPS_ADMIN} \
                      -e CUPSPASSWORD=${CUPS_PASSWORD} \
                      ${CUPS_IMAGE}
                    """
                }
            }
        }

        stage('Verify CUPS is Running') {
            steps {
                script {
                    def isRunning = sh(script: "docker ps -q -f name=${CUPS_CONTAINER_NAME}", returnStdout: true).trim()
                    if (isRunning) {
                        echo "CUPS контейнер успешно запущен!"
                    } else {
                        error "CUPS контейнер не запустился!"
                    }
                }
            }
        }
    }

    post {
        success {
            echo "CUPS успешно развернут через Jenkins!"
        }
        failure {
            echo "Ошибка при развертывании CUPS контейнера."
        }
    }
}

Шаг 3: Запуск пайплайна

  1. Создайте новый Jenkins Pipeline Job.

  2. Вставьте код в Pipeline Script в Jenkins.

  3. Запустите Pipeline – он автоматически развернёт CUPS.

После успешного запуска CUPS Web UI будет доступен по адресу:

Источник: https://habr.com/ru/articles/885826/


Интересные статьи

Интересные статьи

Привет, меня зовут Евгений, я разработчик из Байовэр в компании НЛМК ИТ.Довелось мне тут столкнуться с разработкой системы опытно-промышленных испытаний на производстве, и если описать это к...
10 лет назад мы начинали бизнес студии с разработки сайтов на CMS 1С-Битрикс. Сегодня наш основной стек связан с подходом Single Page Application на Symfony и Nuxt, но клиенты по-прежнему просят сайты...
В июне 2023 года я начал работать фрилансером в сфере UX-дизайна. Для этого мне требовался компьютер. К сожалению, спустя 7 лет верной службы мой MacBook Pro отправился на покой. И не из-за того, чт...
Меня зовут Саша — я лидирую дизайн-команду в “Онлайн Патенте”. Сейчас для нас настало время перемен, мы активно занимаемся редизайном наших продуктов, медиа и прочих визуальных коммуникаций. Поэтому в...
Одной из «киллер-фич» 12й версии Битрикса была объявлена возможность отдавать статические файлы из CDN, тем самым увеличивая скорость работы сайта. Попробуем оценить практический выигрыш от использова...