Если вам нужно создать скриншоты сайтов из консоли сервера Linux, вы можете использовать готовый Docker контейнер screenshoter (https://github.com/mingalevme/screenshoter). Это HTTP сервис в Docker контейнере на базе Google Puppeteer.
В самом простом случае можно запустить контейнер screenshoter так:
# docker pull mingalevme/screenshoter
# docker run -d --restart always -p 8080:8080 --name screenshoter mingalevme/screenshoter
Теперь, чтобы сделать скриншот сайта достаточно обратится к API через HTTP. Просто выполните команду curl:
# curl "http://localhost:8080/screenshot?url=https://vmblog.ru" > ~/sitescreen.png
В результате скриншот сайта будет сохранен в файле ~/sitescreen.png.
Можно указать расширение экрана клиента, для которого нужно создать скриншот:
# curl "http://localhost:8080/screenshot?url=https://vmblog.ru&viewport-width=1920&viewport-height=1080" > ~/1920-1080-vmblog_screen.png
Такое решение по созданию скриншотов можно использовать в любой системой мониторинга на базе вебхуков.
Можно запустить контейнер Screenshoter с Nginx для проксирования обращения. Для этого воспользуйтесь таким docker-compose.yml:
version: "3.1" services: screenshoter-app: image: mingalevme/screenshoter restart: always screenshoter-nginx: image: nginx:alpine ports: - "80:80" volumes: - ./screenshoter.nginx.conf:/etc/nginx/conf.d/default.conf - "/var/log/nginx:/var/log/nginx" - "/var/cache/nginx:/var/cache/nginx" - "/dev/null:/var/cache/screenshoter" depends_on: - screenshoter-app
Теперь вы можете создавать скриншоты сайтов прямо из браузера.
http://192.168.13.25:8080/screenshot?url=https://vmblog.ru&full=true&format=jpeg
У screenshoter довольно много параметров. Можно указать user-agent, cookies, device-scale-factor, transparency и т.д. Полный список параметров screenshoter доступен на странице проекта на GitHub.