- PVSM.RU - https://www.pvsm.ru -
Synology NAS может выполнять роль принт-сервера, позволяя печатать документы по сети без необходимости постоянно держать компьютер включённым. В этой статье я расскажу, как настроить печать через CUPS (Common UNIX Printing System) на примере HP LaserJet Professional M1132 MFP, подключённого по USB.
Это актуально для старых принтеров, у которых имеется только USB-порт, без LAN и WiFi.
В качестве рабочей отправной точки я использовал репозиторий: https://github.com/ziwork/synology-airprint [1]
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
Подключите 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)
Я использую для развертывания контейнеров Jenkins, так как он дает больше гибкости и возможностей. Я точно не помню, какой инструкцией я пользовался для его развертывания, возможно эта: https://www.christian-knedel.de/ru/post/2021/march/20210321-docker-jenkins/ [2]
Также 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
Перед развёртыванием создадим папки для хранения конфигурации:
mkdir -p /volume1/docker/cups/services
mkdir -p /volume1/docker/cups/config
chmod -R 777 /volume1/docker/cups
Если 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 контейнера."
}
}
}
Создайте новый Jenkins Pipeline Job.
Вставьте код в Pipeline Script в Jenkins.
Запустите Pipeline – он автоматически развернёт CUPS.

После успешного запуска CUPS Web UI будет доступен по адресу:
👉 http://<IP вашего NAS>:631
Перейдите в браузере на страницу CUPS:
http://<IP вашего NAS>:631
Затем войдите с admin/password.
Перейдите в Administration → Add Printer.
Выберите принтер в списке usb://HP/LaserJet_Professional_M1132_MFP.
Выберите драйвер:
Если HP LaserJet Professional M1132 MFP есть в списке — выберите его.

После добавления выполните Print Test Page, чтобы убедиться, что печать работает.
Для корректной работы драйвера HP потребуется HPLIP Plugin.
Войдите в контейнер:
docker exec -it cups bash
Скачайте HPLIP Plugin:
wget https://developers.hp.com/sites/default/files/hplip-3.21.12-plugin.run
chmod +x hplip-3.21.12-plugin.run
Запустите установку:
./hplip-3.21.12-plugin.run
Согласитесь с установкой плагина (Yes).
После установки плагина перезапустите CUPS:
docker restart cups
Теперь попробуйте снова напечатать тестовую страницу через CUPS UI.
Откройте Параметры → Принтеры и сканеры.
Нажмите Добавить принтер или сканер.
Принтер должен быть предложен автоматически:

Если Windows не нашла принтер, нажмите "Принтер, который мне нужен, отсутствует в списке".
Выберите "Добавить принтер по IP-адресу", введите:
http://<IP Synology>:631/printers/HP_LaserJet_Professional_M1132_MFP
Выберите подходящий драйвер
Завершите настройку и попробуйте распечатать тестовую страницу.
На Android принтер должен быть доступен автоматически при выборе функции печати в любом приложении

Проектирую солюшн и архитектуру приложений в крупной компании Казахстана. Специализируюсь на low-code решениях, платформенном инжиниринге и DDD.
https://solution-architect.kz
[3]Веду блог в телеграм канале на русском языке https://t.me/architectkz [4]
Теперь ваш Synology NAS выполняет роль принт-сервера, и вы можете печатать с любого устройства в сети, включая Windows и Android.
Если у вас другой принтер, процесс будет аналогичным, но могут понадобиться другие драйверы.
🚀 Теперь печать работает без необходимости держать ПК включённым! 🚀
Автор: manifest1
Источник [5]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/jenkins/411940
Ссылки в тексте:
[1] https://github.com/ziwork/synology-airprint: https://github.com/ziwork/synology-airprint
[2] https://www.christian-knedel.de/ru/post/2021/march/20210321-docker-jenkins/: https://www.christian-knedel.de/ru/post/2021/march/20210321-docker-jenkins/
[3] https://solution-architect.kz
: https://solution-architect.kz%EF%BF%BC
[4] https://t.me/architectkz: https://t.me/architectkz
[5] Источник: https://habr.com/ru/articles/885826/?utm_campaign=885826&utm_source=habrahabr&utm_medium=rss
Нажмите здесь для печати.