Свой сервис скриншотов — это небольшое веб-приложение, которое принимает картинку от программы захвата экрана и сразу возвращает короткую ссылку на неё. Живёт он на обычном виртуальном сервере, и главное требование к площадке — не мощность процессора, а место на диске и право запускать свои скрипты: в каталоге такие тарифы собраны в разделе VPS с большим диском под хранилище, цены там начинаются от 140 ₽/мес. Обычный виртуальный хостинг подходит только для самых скромных сценариев, и ниже разберём границу.
Материал для тех, кто устал зависеть от чужих сервисов: то ссылка протухла через 30 дней, то на странице появилась реклама, то картинку удалили без объяснений. Посчитаем, сколько гигабайт съедают скриншоты при разной нагрузке и какой сервер под это брать. Разберём, что поставить из программ и как настроить загрузку по шагам. И отдельно — как закрыть сервис от посторонних, чтобы он не превратился в свалку чужих файлов.
Что делает сервис скриншотов и из каких частей он состоит
Со стороны пользователя всё выглядит просто: нажал сочетание клавиш, выделил область экрана, через секунду в буфере обмена лежит ссылка вида https://shot.example.ru/a1b2c3.png. Внутри за этой секундой стоят три отдельные вещи, и каждую придётся настроить.
Первая — клиент на вашем компьютере. Это программа захвата: ShareX под Windows, Flameshot под Linux, встроенный снимок экрана в macOS плюс небольшой скрипт. Все они умеют одно и то же — отправить готовый файл HTTP-запросом на произвольный адрес и подставить ответ сервера в буфер обмена.
Вторая часть — приёмник на сервере. Скрипт, который проверяет ключ доступа, смотрит на тип файла, придумывает ему случайное имя, кладёт в каталог и отвечает строкой с URL. Третья — веб-сервер, который потом раздаёт этот файл посетителям; обычно это Nginx, лёгкий и хорошо раздающий статику.
Сколько места съедают скриншоты: считаем в гигабайтах
Скриншот интерфейса в формате PNG весит от 200 до 800 КБ — разброс зависит от разрешения монитора и количества градиентов в кадре. Снимок терминала с чёрным фоном уместится в 200 КБ, снимок дашборда с графиками на 4K-мониторе легко выйдет за 700 КБ. Для расчётов удобно брать среднее — 500 КБ на файл.
Если конвертировать снимки в WebP, средний вес падает примерно вдвое, до 250 КБ, при визуально неотличимом качестве. Конвертацию делает либо сам клиент захвата, либо серверный скрипт при приёме. Экономия прямо переводится в деньги: диск — самая дорогая часть тарифа в этом сценарии.
| Загрузок в день | Файлов за месяц | Объём в PNG | Объём в WebP |
|---|---|---|---|
| 100 | 3000 | 1,5 ГБ | 0,75 ГБ |
| 300 | 9000 | 4,5 ГБ | 2,2 ГБ |
| 1000 | 30 000 | 15 ГБ | 7,5 ГБ |
| 3000 | 90 000 | 45 ГБ | 22 ГБ |
Тысяча загрузок в день — это 15 ГБ в месяц при среднем весе и до 25 ГБ, если снимки крупные. Личный сервис одного человека обычно живёт в режиме 20–50 загрузок в день, то есть меньше 1 ГБ в месяц. Небольшая команда поддержки на 10 человек укладывается в 3–5 ГБ.
Отсюда вывод: диск на 40–60 ГБ закрывает год работы команды без всякой уборки, а с автоудалением старых файлов хватит и меньшего. Проблема начинается не с объёма, а с бесконтрольной загрузки — об этом отдельный раздел ниже.

Какая конфигурация сервера нужна под эту задачу
Сервис скриншотов почти не грузит процессор. Приём файла — это одна проверка и запись на диск, раздача статики через Nginx стоит доли миллисекунды на запрос. Реальную нагрузку создаёт только конвертация в WebP и генерация превью, и то в момент загрузки.
Память нужна на веб-сервер, интерпретатор скрипта и запас на пиковые всплески. Одного гигабайта хватает для голого приёмника, но с базой данных, панелью и превьюшками комфортнее на двух. Скорость диска влияет на отдачу: NVMe против обычного SATA-SSD даст разницу заметную при сотнях одновременных просмотров, но не при десятках.
Ориентиры по нагрузке выглядят так.
| Сценарий | Ядра | Память | Диск |
|---|---|---|---|
| Личный сервис, до 50 загрузок в день | 1 | 1 ГБ | 15–20 ГБ |
| Команда 5–20 человек | 1 | 2 ГБ | 40 ГБ |
| Публичный сервис, до 1000 загрузок в день | 2 | 4 ГБ | 100 ГБ |
| Скриншоты в документации и поддержке клиентов | 2 | 4 ГБ | 200 ГБ и внешнее хранилище |
Тип диска стоит выбирать осознанно: тарифы с NVMe и SSD собраны в разделе VPS на SSD и NVMe. Для архива старых снимков подойдёт и медленный HDD — их всё равно открывают редко.
Сколько стоит сервер под хранение скриншотов
В разделе хранилищ каталога сейчас восемь провайдеров, и разброс цен между ними больше чем втрое. Дешёвые тарифы дают много места при слабом процессоре — как раз то, что нужно для файлов; дорогие продают вычислительную мощность, которая здесь простаивает. Графа с числом тарифов подсказывает, где легче подобрать конфигурацию впритык под свои гигабайты.
| Провайдер | Цена от | Базовая конфигурация | Тарифов в каталоге |
|---|---|---|---|
| 1cloud | 140 ₽/мес | 100 ГБ SSD | 79 |
| Miran | 190 ₽/мес | 100 ГБ SSD | 59 |
| Selectel | 200 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ NVMe | 69 |
| Beget | 330 ₽/мес | 1 ядро, 1 ГБ, 10 ГБ NVMe | 7 |
| IQHost | 350 ₽/мес | 1 ядро, 2 ГБ, 15 ГБ SSD | 17 |
| Timeweb Cloud | 477 ₽/мес | 1 ядро, 1 ГБ, 15 ГБ NVMe | 4 |
| Activecloud | 490 ₽/мес | по запросу | — |
| Cloud4Y | 500 ₽/мес | по запросу | — |
Данные проверены 04.09.2026.
Самый дешёвый вход — 1cloud со 140 ₽/мес и сразу 100 ГБ SSD в базовом тарифе: для файлового сервиса это редкое сочетание, обычно за такие деньги дают 10 ГБ. Похожую логику предлагает Miran — 190 ₽/мес и те же 100 ГБ, при этом в его линейке есть SAS и HDD, что для архива снимков дешевле NVMe.
Если сервис будет расти и потребуются снапшоты, объектное хранилище и приватная сеть, разумнее сразу смотреть на Selectel с 69 тарифами и площадками в Москве и Петербурге. Когда бюджет совсем скромный, а место нужно минимальное, подойдут и общие недорогие конфигурации из раздела дешёвых VPS — от 59 ₽/мес.
VPS, виртуальный хостинг или объектное хранилище
Три площадки решают задачу по-разному, и выбор зависит от того, сколько людей будет пользоваться сервисом. Виртуальный хостинг умеет принимать файлы по FTP и отдавать их по HTTP, скрипт на PHP там тоже запустится. Ограничения — квота на число файлов в файловой системе, лимит на размер загрузки в 8–32 МБ и отсутствие доступа к планировщику задач cron с нужной точностью.
Для личного сервиса на пару снимков в день хостинга хватит. Как только появляются автоудаление, конвертация в WebP и ограничение скорости загрузок, нужен полноценный сервер с правами root, то есть полного администратора машины, — иначе половину задуманного не настроить.
Третий путь — объектное хранилище с S3-совместимым интерфейсом (S3 — общепринятый стандарт обращения к таким хранилищам, его понимают почти все программы). Файлы лежат не на диске сервера, а в облаке, и платите вы за фактические гигабайты и трафик. Схема удобна, когда объём растёт непредсказуемо: 45 ГБ снимков в облаке стоят дешевле, чем VPS с диском на 100 ГБ, а масштабируется это без переезда. Механику подробно разбирает материал про своё облачное хранилище.
Что поставить на сервер: три рабочих варианта
Готовых решений много, и они сильно отличаются по трудозатратам. Первый вариант — минимальный приёмник на 40 строк кода. Скрипт на PHP или Python проверяет заголовок с ключом, сохраняет файл под случайным именем из шести символов и возвращает ссылку. Никакой базы данных, никакого веб-интерфейса: список файлов — это содержимое каталога.
Второй вариант — готовый движок галереи вроде Chevereto или Lychee. Он даёт веб-интерфейс, альбомы, пользователей, поиск и превью, но тянет за собой MySQL и требует уже 2 ГБ памяти. Смысл появляется, когда скриншотами пользуется команда и нужен общий доступ к архиву.
Третий вариант — файловый комбайн вроде Nextcloud или S3-совместимого MinIO. Ресурсов ему нужно от 4 ГБ памяти, зато скриншоты становятся частью общего хранилища с мобильными клиентами и синхронизацией папок.
Для 90 % задач достаточно первого варианта. Он не ломается при обновлениях, не имеет уязвимостей в чужом коде и переносится на новый сервер копированием одной папки. Похожая логика описана в разборе хостинга для картинок.
Установка по шагам: от заказа сервера до первой ссылки
Ниже — сценарий для минимального приёмника на чистой Ubuntu 24.04. Он занимает около часа вместе с ожиданием DNS. Все команды выполняются от пользователя с правами sudo — то есть с возможностью выполнять административные действия.
Перед стартом заведите домен или поддомен — короткий, из 5–8 символов, чтобы ссылки не растягивались. Дальше по порядку.
- Закажите сервер: 1 ядро, 2 ГБ памяти, 40 ГБ NVMe, образ Ubuntu 24.04. При заказе сразу добавьте SSH-ключ, чтобы не входить по паролю.
- Подключитесь по SSH и обновите пакеты командой
apt update && apt upgrade -y— она подтягивает свежие версии всего установленного. - Включите файрвол:
ufw allow 22,80,443/tcpи затемufw enable. Открытыми останутся только порт 22/TCP для входа по SSH и веб-порты 80/TCP и 443/TCP. - Поставьте Nginx и PHP-FPM:
apt install nginx php-fpm -y. Первый раздаёт файлы, второй исполняет скрипт приёма. - Создайте каталог
/var/www/shots/filesи отдайте его владение пользователю веб-сервера командойchown -R www-data:www-data /var/www/shots. - Положите скрипт приёма в
/var/www/shots/upload.php, задайте в нём секретный ключ длиной от 32 символов и путь к каталогу файлов. - Направьте A-запись домена на IP сервера и выпустите бесплатный сертификат Let’s Encrypt — без HTTPS современные клиенты откажутся отправлять файлы.
Осталась настройка клиента. В ShareX это раздел Custom Uploader: указываете адрес https://ваш-домен/upload.php, метод POST, имя поля файла и заголовок с ключом. В ответе прописываете, что ссылку брать из тела ответа целиком. Первый же снимок после сохранения настроек должен вернуть работающий URL.

Как не собрать чужой мусор: лимиты, сроки и типы файлов
Открытая форма загрузки без единого ограничения находится ботами за считаные дни. Дальше сценарий предсказуем: через ваш сервер начинают раздавать чужие архивы, исполняемые файлы и фишинговые страницы, диск забивается, а IP-адрес попадает в чёрные списки. Восстанавливать репутацию адреса долго и муторно.
Защита строится на четырёх независимых рубежах, и каждый закрывает свой класс проблем. Ключ доступа отсекает посторонних, проверка типа файла — попытки залить не картинку, лимит размера — попытки забить диск одним запросом, срок хранения — постепенное разрастание архива.
Настраивается это так.
- Задайте в Nginx
client_max_body_size 10m— сервер откажет любому файлу тяжелее 10 МБ, не дочитывая его до конца. - Проверяйте не расширение, а сигнатуру файла: разрешайте только PNG, JPEG и WebP по первым байтам содержимого.
- Требуйте секретный ключ в заголовке запроса. Без него скрипт должен отвечать кодом 403 («доступ запрещён») и ничего не записывать.
- Включите ограничение частоты запросов — например, 20 загрузок в минуту с одного IP-адреса.
- Поставьте в планировщик задач cron ежедневную уборку:
find /var/www/shots/files -type f -mtime +90 -deleteудаляет всё, к чему не прикасались 90 дней. - Настройте оповещение о заполнении диска выше 80 % — иначе о переполнении вы узнаете от переставшего работать сервиса.
Срок хранения выбирайте по смыслу. Скриншоты для переписки в мессенджере живут неделю, снимки для документации нужны годами. Разумный компромисс — 90 дней по умолчанию и отдельная папка без автоудаления для того, что решили сохранить.
Домен, HTTPS и короткие ссылки
Длина ссылки имеет практическое значение: скриншотами делятся в чатах и тикетах, и адрес из 80 символов выглядит подозрительно. Домен из 5–7 букв плюс имя файла из 6 случайных символов дают ссылку около 30 символов — компактно и читаемо.
Случайное имя важно ещё и для приватности. Если файлы называются по порядку, любой желающий переберёт номера и выкачает весь архив. Шести символов из латиницы и цифр хватает на 2 миллиарда комбинаций — перебор становится бессмысленным.
Сертификат для HTTPS выпускается бесплатно и обновляется автоматически каждые 90 дней. Без него браузеры пометят страницу как небезопасную, а часть клиентов захвата просто откажется отправлять данные. Настройка занимает 5 минут и делается одной командой утилиты certbot — она сама получает сертификат и ставит его продление на автомат.
Бэкапы и что будет, если диск умрёт
Файлы скриншотов невосстановимы. Базу данных можно пересоздать, сайт — развернуть из репозитория, а снимок экрана, сделанный полгода назад, существует в единственном экземпляре. Поэтому резервное копирование здесь не формальность.
Минимальная схема — ежедневная синхронизация каталога файлов на второе место утилитой rsync или rclone. Инкрементальная копия 45 ГБ снимков после первой полной выгрузки занимает минуты, потому что меняются только новые файлы. Хранить копию на том же сервере бессмысленно: диск умирает вместе с обеими версиями.
Второй уровень — снапшоты всей машины средствами провайдера. Они стоят обычно 5–10 % от цены тарифа и позволяют откатить сервер целиком после неудачного обновления. Механику резервного копирования и настройку расписания подробно разбирает инструкция по бэкапам VPS.
Трафик, нагрузка и наплыв посетителей
Загрузка файлов почти не создаёт исходящего трафика, а вот раздача создаёт. Если один скриншот посмотрели 500 раз, это 500 умножить на 500 КБ, то есть 250 МБ отданных данных с одного файла. Популярная картинка в крупном чате легко даст несколько гигабайт за вечер.
Большинство провайдеров в российском сегменте не ограничивают объём трафика жёстко, но урезают скорость канала на дешёвых тарифах — типично до 100 Мбит/с. Этого хватает на 25 одновременных отдач картинки по 500 КБ за секунду. Если сервис публичный, смотрите тарифы с широким каналом в разделе VPS с безлимитным трафиком.
От наплыва спасает отдача файлов напрямую через Nginx, минуя PHP: скрипт нужен только на приёме, а на раздаче он лишний и съедает память при каждом запросе. Помогает и длительное кеширование в браузере — файл под случайным именем никогда не меняется.
Частые ошибки
Большинство проблем со своим сервисом скриншотов возникает не из-за сложной техники, а из-за пропущенных мелочей на старте. Все они дешёвы в предотвращении и дороги в исправлении.
Ниже — то, что чаще всего приходится переделывать через месяц после запуска. Пройдитесь по списку до того, как отправите первую ссылку коллегам.
- Открытая загрузка без ключа доступа — сервер находят боты за 3–7 дней.
- Имена файлов по счётчику вместо случайных: весь архив выкачивается перебором.
- Отсутствие лимита размера — один запрос на 5 ГБ забивает диск целиком.
- Скриншоты в PNG без конвертации: переплата за диск ровно вдвое.
- Бэкап на тот же диск, где лежат оригиналы.
- Диск на 10 ГБ «на попробовать» — заканчивается через полгода и требует переезда.
Отдельная категория — забытый мониторинг. Сервис работает молча месяцами, и о том, что место кончилось, вы узнаёте по ошибке загрузки в самый неподходящий момент. Простое письмо при заполнении диска на 80 % закрывает вопрос.
Частые вопросы
Хватит ли обычного виртуального хостинга? Для личного использования на 5–10 снимков в день — да, скрипт приёма на PHP там запустится. Ограничат вас квота на число файлов, лимит загрузки в 8–32 МБ и невозможность настроить автоудаление и ограничение частоты запросов.
Сколько места брать на старте? Считайте по формуле: загрузок в день умножить на 30 дней и на 0,5 МБ. Для команды до 20 человек это 3–5 ГБ в месяц, и диск на 40 ГБ закроет больше года работы даже без уборки старых файлов.
Насколько дешевле хранить в WebP? Средний вес падает с 500 до 250 КБ, то есть ровно вдвое. При тысяче загрузок в день это разница между 15 и 7,5 ГБ в месяц — на дистанции в год экономия составляет около 90 ГБ.
Можно ли обойтись без своего домена? Технически да, сервис будет работать по IP-адресу. Но без домена не выпустить сертификат для HTTPS, ссылки получатся длинными и некрасивыми, а при переезде на другой сервер все старые адреса перестанут открываться.
Что делать со старыми скриншотами? Настроить автоудаление по возрасту файла — 90 дней покрывает почти все рабочие сценарии. Всё, что нужно хранить дольше, переносите в отдельный каталог без правила уборки или выгружайте в объектное хранилище.
Какой минимальный бюджет на всё? Сервер от 140 ₽/мес плюс домен около 200–300 ₽ в год. Сертификат HTTPS бесплатный, софт тоже, так что годовое содержание личного сервиса укладывается примерно в 2000 ₽.
Итог
Свой сервис скриншотов — одна из самых простых задач для аренды сервера: процессор простаивает, память нужна в объёме 1–2 ГБ, а вся инженерия сводится к диску и ограничениям на загрузку. Тысяча снимков в день превращается в 15 ГБ в месяц, а при конвертации в WebP — в 7,5 ГБ, и это укладывается в базовые тарифы от 140 до 200 ₽/мес.
Главное — не оставлять загрузку открытой: ключ доступа, лимит в 10 МБ, белый список форматов и уборка старше 90 дней превращают потенциальную файлопомойку в аккуратный рабочий инструмент. Подобрать сервер с нужным объёмом диска можно в разделе VPS под хранилище файлов, где собраны восемь провайдеров с ценами от 140 ₽/мес.