Yandex Cloud
Поиск
Связаться с намиПопробовать бесплатно
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Практические руководства
    • Все руководства
      • Публикация обновлений для игр с помощью Cloud CDN
      • Создание SAP-программы в Yandex Cloud
      • Развертывание сервера Minecraft в Yandex Cloud
      • Развертывание мультиплеер-сервера для GTA V в Yandex Cloud
      • Конвертация видео в GIF на Python
      • Настройка печати с Cloud Desktop на локальный принтер в Linux

В этой статье:

  • Перед началом работы
  • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте локальную машину
  • Настройте рабочий стол
  • Проверьте результат
  • Диагностика ошибок
  • Как удалить созданные ресурсы
  1. Прикладные решения
  2. Прочее
  3. Настройка печати с Cloud Desktop на локальный принтер в Linux

Настройка печати с Yandex Cloud Desktop на локальный принтер в Linux

Статья создана
Yandex Cloud
Обновлена 22 декабря 2025 г.
  • Перед началом работы
    • Необходимые платные ресурсы
  • Подготовьте инфраструктуру
  • Настройте локальную машину
  • Настройте рабочий стол
  • Проверьте результат
    • Диагностика ошибок
  • Как удалить созданные ресурсы

Важно

Часть ресурсов, необходимых для прохождения практического руководства, доступны только в регионе Россия.

Это руководство поможет настроить печать файлов из Yandex Cloud Desktop на принтер, подключенный к локальной машине под управлением Linux. Решение основано на использовании общего каталога: задания на печать из облачной среды сохраняются в общий каталог, а локальная система перехватывает их и направляет на физический принтер.

Примечание

В руководстве приведен пример подключения виртуального принтера для печати в PDF-файл. Чтобы распечатывать на принтере, который подключен к вашей локальной машине (серверу), добавьте этот принтер в сервере печати CUPS. При этом не потребуется установка драйвера печати в PDF printer-driver-cups-pdf, настройка /etc/cups/cups-pdf.conf и создание каталога /tmp/cups-pdf-output, а также раздел проверки PDF-файлов.

Чтобы настроить печать с рабочего стола Cloud Desktop на локальном принтере в Linux:

  1. Подготовьте облако к работе.
  2. Подготовьте инфраструктуру.
  3. Настройте локальную машину.
  4. Настройте рабочий стол.
  5. Проверьте результат.

Если созданные ресурсы вам больше не нужны, удалите их.

Перед началом работыПеред началом работы

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсыНеобходимые платные ресурсы

В стоимость поддержки инфраструктуры входят:

  • Плата за использование вычислительных ресурсов, дисков и исходящий трафик рабочего стола (см. тарифы Yandex Cloud Desktop).
  • Плата за время использования NAT-шлюза и исходящий через него трафик (см. тарифы Yandex Virtual Private Cloud).

Подготовьте инфраструктуруПодготовьте инфраструктуру

Если у вас еще нет рабочего стола, создайте его:

  1. Создайте сеть и подсеть для рабочего стола.
  2. Настройте NAT-шлюз для рабочего стола.
  3. Создайте группу рабочих столов. При создании выберите образ с ОС на базе Linux, например Ubuntu 20.04.
  4. Создайте рабочий стол.

Настройте локальную машинуНастройте локальную машину

Настройте локальную машину для приема файлов с рабочего стола.

Linux
  1. Установите необходимые инструменты:

    • Утилиту inotify-tools.
    • Сервер печати CUPS.
    • Пакет printer-driver-cups-pdf — для проверки печати на виртуальном принтере PDF. Для настройки физического принтера установите драйвер этого принтера.
    • Пакет Samba.

    Для этого выполните команды:

    sudo apt update
    sudo apt install inotify-tools cups printer-driver-cups-pdf samba
    
  2. Создайте общий каталог /srv/printdrop и настройте к нему доступ:

    sudo mkdir -p /srv/printdrop
    sudo chown lp:lp /srv/printdrop
    sudo chmod 0770 /srv/printdrop
    

    Каталог предназначен для обмена файлами между рабочим столом и локальной машиной.

  3. Настройте Samba:

    1. Откройте файл /etc/samba/smb.conf:

      sudo nano /etc/samba/smb.conf
      
    2. Добавьте код в конце файла:

      [printdrop]
        path = /srv/printdrop
        browseable = yes
        writable = yes
        guest ok = yes
        force user = lp
        force group = lp
        create mask = 0660
        directory mask = 0770
      
  4. Настройте CUPS:

    1. Откройте файл /etc/cups/cups-pdf.conf:

      sudo nano /etc/cups/cups-pdf.conf
      
    2. Найдите строку Out ${HOME}/PDF или #Out ${HOME}/PDF и замените ее на следующую:

      Out /tmp/cups-pdf-output
      
  5. Создайте каталог /tmp/cups-pdf-output и настройте к нему доступ:

    sudo mkdir -p /tmp/cups-pdf-output
    sudo chown lp:lp /tmp/cups-pdf-output
    sudo chmod 755 /tmp/cups-pdf-output
    

    Каталог предназначен для хранения файлов, отправленных на печать.

    Примечание

    Для физического принтера не надо настраивать /etc/cups/cups-pdf.conf и /tmp/cups-pdf-output. Добавьте принтер в CUPS через интерфейс администрирования http://localhost:631, выбрав Administration → Add Printer или командой lpadmin. Затем узнайте имя очереди (имя физического принтера) командой lpstat -p.

  6. Настройте сервис для слежения за общим каталогом:

    1. Создайте файл print-watcher.sh:

      sudo nano /usr/local/bin/print-watcher.sh
      
    2. Вставьте код в файл print-watcher.sh:

      #!/bin/bash
      WATCH_DIR="/srv/printdrop"
        PRINTER="PDF" # локально установленный принтер
        USER="lp" # пользователь, для которого инициируется печать
        inotifywait -m -e close_write,moved_to --format '%w%f' "$WATCH_DIR" | while read FILE; do
          if [[ "${FILE,,}" == *.pdf ]]; then
            lp -U "$USER" -d "$PRINTER" "$FILE" && rm -f "$FILE"
          fi
        done
      

      Примечание

      Для физического принтера в параметре PRINTER="PDF" вместо PDF укажите имя физического принтера (имя очереди).

    3. Сделайте файл исполняемым:

      sudo chmod +x /usr/local/bin/print-watcher.sh
      
    4. Создайте сервисный файл print-watcher.service:

      sudo nano /etc/systemd/system/print-watcher.service
      
    5. Вставьте код в файл print-watcher.service:

      [Unit]
        Description=Watch printdrop and print files
        
        [Service]
        ExecStart=/usr/local/bin/print-watcher.sh
        Restart=always
        User=lp
        Group=lp
        
        [Install]
        WantedBy=multi-user.target
      
  7. Активируйте службу и перезапустите сервисы печати и обмена файлами:

    sudo systemctl daemon-reload
    sudo systemctl restart cups
    sudo systemctl restart smbd
    sudo systemctl enable --now print-watcher.service
    

    Результат:

    Created symlink /etc/systemd/system/multi-user.target.wants/print-watcher.service → /etc/systemd/system/print-watcher.service.
    
  8. Проверьте работу сервиса, выполнив команду:

    systemctl status print-watcher.service
    

    Результат:

    ● print-watcher.service - Watch printdrop and print files
        Loaded: loaded (/etc/systemd/system/print-watcher.service; enabled; preset: enabled)
        Active: active (running) since ...
        ...
    
  9. Сохраните публичный IPv4-адрес вашей локальной машины. Вы можете узнать его, например, с помощью сервиса Яндекс Интернетометр. Этот адрес потребуется для монтирования общего каталога на рабочем столе.

Настройте рабочий столНастройте рабочий стол

Настройте рабочий стол для отправки файлов на локальную машину.

Linux
  1. Подключитесь к рабочему столу.

  2. Установите сервер CUPS и пакет cifs-utils:

    sudo apt update
    sudo apt install cups
    sudo apt-get install cifs-utils
    
  3. Настройте бэкенд для виртуального принтера:

    1. Создайте файл /usr/lib/cups/backend/printdrop:

      sudo nano /usr/lib/cups/backend/printdrop
      
    2. Вставьте код в файл:

      #!/bin/bash
      export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
      if test "$#" = "0"; then
        echo 'file printdrop:/printdrop "PrintDrop" "/printdrop"'
        exit 0
      fi
      
      DROP_DIR="/home/<имя_пользователя_стола>/printdrop"
      mkdir -p /tmp/cups-shared
      
      JOBFILE="$6"  # если CUPS передал файл как аргумент
      TS=$(date +%s)-$RANDOM
      OUT="$DROP_DIR/job-$TS.pdf"
      SHARED_OUT="/tmp/cups-shared/job-$TS.pdf"
      
      if [ -n "$JOBFILE" ] && [ -f "$JOBFILE" ]; then
        cp "$JOBFILE" "$SHARED_OUT"
        chmod -R 777 /tmp/cups-shared
        sudo -u <имя_пользователя_стола> /usr/local/bin/copy-as-user.sh "$SHARED_OUT" "$OUT"
      else
        cat - > "$SHARED_OUT"
        sudo -u <имя_пользователя_стола> /usr/local/bin/copy-as-user.sh "$SHARED_OUT" "$OUT"
      fi
      

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

    3. Настройте доступ к файлу:

      sudo chmod 755 /usr/lib/cups/backend/printdrop
      sudo chown root:root /usr/lib/cups/backend/printdrop
      
  4. Настройте доступ к общему каталогу:

    1. Создайте файл /usr/local/bin/copy-as-user.sh:

      sudo nano /usr/local/bin/copy-as-user.sh
      
    2. Вставьте код вспомогательного скрипта:

      #!/bin/bash
      mv "$1" "$2.tmp"
      mv "$2.tmp" "$2"
      
    3. Настройте доступ к файлу:

      sudo chmod +x /usr/local/bin/copy-as-user.sh
      sudo chown root:root /usr/local/bin/copy-as-user.sh
      
    4. Настройте права:

      sudo visudo
      
    5. В конце открывшегося файла вставьте строку:

      lp ALL=(<имя_пользователя_стола>) NOPASSWD: /usr/local/bin/copy-as-user.sh
      

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

  5. Создайте виртуальный принтер и активируйте его:

    sudo lpadmin -p DropPrinter -E -v printdrop:/printdrop
    sudo cupsenable DropPrinter
    sudo cupsaccept DropPrinter
    

    В результате появится сообщение о добавлении нового принтера.

  6. Создайте каталог для монтирования общего каталога:

    sudo mkdir -p ~/printdrop
    
  7. Смонтируйте общий каталог:

    sudo mount -t cifs //<IP-адрес_локальной_машины>/printdrop ~/printdrop -o guest,uid=$(id -u),gid=$(id -g)
    

    Укажите сохраненный ранее IPv4-адрес.

Проверьте результатПроверьте результат

Чтобы проверить результат, отправьте на печать PDF-файл.

Linux
  1. На рабочем столе создайте или скачайте любой PDF-файл.

  2. На рабочем столе отправьте на печать PDF-файл, выбрав созданный виртуальный принтер.

    В результате отобразится сообщение о поступлении файла в очередь печати.

  3. На локальной машине проверьте очередь печати виртуального принтера PDF.

Диагностика ошибокДиагностика ошибок

Для диагностики воспользуйтесь следующими командами на локальной машине.

Linux
  • Посмотреть логи CUPS, связанные с получением заданий на печать:

    sudo tail -n 10 /var/log/cups/access_log
    

    Результат:

    ...
    localhost - - [15/Nov/2025:21:55:01 +0000] "POST /printers/PDF HTTP/1.1" 200 394 Create-Job successful-ok
    localhost - - [15/Nov/2025:21:55:01 +0000] "POST /printers/PDF HTTP/1.1" 200 408591 Send-Document successful-ok
    
  • Посмотреть логи ошибок CUPS:

    sudo tail -n 10 /var/log/cups/error_log
    

    Подобные записи сообщают об ошибках:

    ...
    W [15/Nov/2025:21:55:01 +0000] [Job 34] Backend cups-pdf returned status 5 (cancel job)
    
  • Посмотреть PDF-файлы, созданные виртуальным принтером:

    sudo ls -l /tmp/cups-pdf-output/
    

    Результат:

    total 472
    -rw------- 1 lp lp 239840 Nov 17 19:37 job-1763408227-8471-job_2.pdf
    ...
    

Как удалить созданные ресурсыКак удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы:

  1. Удалите NAT-шлюз.
  2. Удалите рабочий стол.

При необходимости удалите подсети, сеть и группу рабочих столов.

Была ли статья полезна?

Предыдущая
Конвертация видео в GIF на Python
Следующая
Все руководства
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»