> ssh you@your-server_

СВОЙ СЕРВЕР ДЛЯ СКРИНШОТОВYOUR OWN SCREENSHOT SERVER

Звучит страшно, а на деле — минут пятнадцать. Нужны всего две вещи: доступ по SSH и папка, которую сервер отдаёт наружу по HTTP. Дальше программа всё делает сама. It sounds harder than it is — about fifteen minutes. You need exactly two things: SSH access and a folder the server publishes over HTTP. ScreenZilla handles the rest.

// как это работает// how it works

ScreenZilla подключается по SFTP поверх SSH — это не FTP, отдельный доступ заводить не нужно: подойдёт обычный SSH-логин. Порт по умолчанию 22. ScreenZilla connects over SFTP on top of SSH — not FTP. No separate account needed: a regular SSH login works. Default port 22.

Программа сама создаёт папки групп на сервере, если их нет. Вам нужно подготовить только корневую папку. The app creates group folders on the server itself if they are missing. You only prepare the root folder.

После загрузки она собирает ссылку так: публичный адрес + папка группы + имя файла. Значит веб-сервер должен отдавать ту же папку, куда идёт загрузка. After upload it builds the link as public URL + group folder + file name. So the web server must publish the very folder you upload into.

// вариант А — у вас уже есть хостинг// option A — you already have hosting

Если у вас есть сайт на обычном хостинге, скорее всего всё уже готово. Проверьте в панели управления, что доступен SSH — у большинства провайдеров он включается одной галочкой. If you already run a site on shared hosting, you are probably set. Check the control panel for SSH access — most providers enable it with one switch.

Дальше создайте папку внутри той, что уже раздаётся по HTTP: Then create a folder inside the one already served over HTTP:

mkdir -p ~/public_html/shots

Путь у разных провайдеров называется по-своему: public_html, www, httpdocs или /var/www/имя-сайта/public. Посмотрите в панели, где лежит корень сайта. The path differs by provider: public_html, www, httpdocs or /var/www/site/public. Check where your site root is.

Всё. Переходите к настройкам программы. That's it. Move on to the app settings.

// вариант Б — VPS с нуля// option B — a VPS from scratch

Берёте самый дешёвый VPS с Ubuntu. Для скриншотов хватит минимальной конфигурации — это нагрузка на диск, а не на процессор. Take the cheapest Ubuntu VPS. The minimum tier is plenty — screenshots load the disk, not the CPU.

1. Отдельный пользователь и папка1. A separate user and folder

adduser shots
mkdir -p /var/www/shots
chown -R shots:www-data /var/www/shots
chmod 755 /var/www/shots

Отдельный пользователь нужен, чтобы программа не ходила на сервер под root. A separate user keeps the app from logging in as root.

2. Раздача по HTTP2. Serving over HTTP

С Caddy — сертификат он получит сам: With Caddy, the certificate is obtained automatically:

shots.example.com {
    root * /var/www/shots
    encode gzip
    header X-Content-Type-Options "nosniff"
    file_server
}

С nginx:With nginx:

server {
    listen 80;
    server_name shots.example.com;
    root /var/www/shots;
    autoindex off;
    add_header X-Content-Type-Options "nosniff";
}

Затем certbot --nginx -d shots.example.com для HTTPS. И не забудьте A-запись домена на IP сервера. Then certbot --nginx -d shots.example.com for HTTPS. And point the domain's A record at the server IP.

// а домен обязательно покупать?// do I need to buy a domain?

Нет. Есть три способа обойтись без покупки. No. There are three ways around it.

У вас уже есть сайтYou already have a site
Значит есть и домен. Заведите поддомен вроде shots.вашсайт.ру — это бесплатно и делается в панели хостинга за минуту. Then you already have a domain. Add a subdomain like shots.yoursite.com — free, and takes a minute in the control panel.

Технический поддомен хостингаThe host's technical subdomain
Большинство хостингов выдают бесплатный адрес сразу при регистрации — искать в панели раздел «технический домен». У Beget это ваш-логин-от-панели.beget.tech, по одному на аккаунт. Для скриншотов такого адреса достаточно: покупать ничего не нужно. SSL к нему подключается там же в панели, бесплатно. Most hosts hand out a free address at signup — look for "technical domain" in the panel. At Beget it is your-panel-login.beget.tech, one per account. That is enough for screenshots — nothing to buy. SSL is enabled from the same panel, free.

Просто IP-адресJust the IP address
Работает: в поле публичного адреса пишете http://123.45.67.89. Но есть подвох — HTTPS на голом IP не получить: Let's Encrypt сертификаты для IP-адресов не выдаёт. Ссылки будут по http://, браузер пометит их как незащищённые, а часть мессенджеров такие ссылки не разворачивает в превью. It works: put http://123.45.67.89 as the public URL. The catch — you cannot get HTTPS for a bare IP: Let's Encrypt does not issue certificates for IP addresses. Links will be plain http://, browsers mark them as not secure, and some messengers will not show a preview.

Свой домен стоит недорого — порядка пары сотен рублей в год за .ru. Если скриншотами делитесь с заказчиками или коллегами, короткий свой адрес выглядит заметно солиднее, чем набор цифр. Но начать можно и без него. Your own domain is cheap — a couple of dollars a year for most zones. If you share screenshots with clients or colleagues, a short address of your own looks far better than a string of digits. But you can start without one.

// что вписать в программе// what to fill in the app

Настройки → раздел SFTP:Settings → SFTP section:

ХостIP сервера или доменserver IP or domain

Порт — 22

Логин / парольот созданного пользователя. Надёжнее — SSH-ключ, поле для него рядомof the user you created. An SSH key is safer — there's a field for it

Папка на сервере/var/www/shots

Публичный адресhttps://shots.example.com

Сделайте пробный скриншот. Ссылка попадёт в буфер обмена — откройте её в браузере. Take a test screenshot. The link lands in your clipboard — open it in a browser.

// если не заработало// if it doesn't work

Ссылка отдаёт 403The link returns 403
Веб-сервер не может прочитать папку. Чаще всего дело в правах на родительские каталоги: если папка лежит в домашней директории с правами 700, снаружи её не видно. Проверьте цепочку namei -l /var/www/shots. The web server cannot read the folder. Usually the parent directories are at fault: a folder inside a 700 home directory is invisible from outside. Check the chain with namei -l /var/www/shots.

Ссылка отдаёт 404, хотя файл загрузился404, though the file uploaded fine
Папка загрузки и папка раздачи — разные. Это самая частая ошибка: программа кладёт файл в одно место, а веб-сервер смотрит в другое. The upload folder and the served folder are not the same. This is the most common mistake.

Не подключается вовсеIt won't connect at all
Проверьте, что это именно SSH-доступ, а не FTP — программе нужен SFTP. И что порт 22 открыт: некоторые провайдеры вешают SSH на другой порт. Make sure it is SSH access, not FTP — the app needs SFTP. And that port 22 is open: some providers move SSH elsewhere.

Браузер скачивает картинку вместо показаThe browser downloads the image instead of showing it
Веб-сервер отдаёт неверный Content-Type. Для nginx проверьте, что подключён mime.types. The web server sends the wrong Content-Type. For nginx, check that mime.types is included.

// где взять хостинг// where to get hosting

Мы ни с кем не связаны и ничего не получаем за эти ссылки. Цены меняются — смотрите на сайтах. We have no affiliation and get nothing for these links. Prices change — check the sites.

Россия, простой хостингRussia, shared hosting

Beget · Timeweb · Reg.ru
Подходит, если уже есть сайт. Убедитесь, что в тарифе есть SSH. Good if you already run a site. Make sure the plan includes SSH.

Россия, VPSRussia, VPS

Beget · Timeweb Cloud · Selectel · VDSina
Полный контроль. Оплата в рублях, поддержка на русском. Full control, roubles, Russian-speaking support.

Зарубежные VPSInternational VPS

Hetzner · DigitalOcean · Vultr · Contabo
Дешевле за гигабайт, но оплата картой не из России. Cheaper per gigabyte; payment needs a non-Russian card.

Застряли? Напишите на support@screenzilla.app — разберёмся. Если в инструкции чего-то не хватает, тем более напишите: допишем. Stuck? Write to support@screenzilla.app. If something is missing here, tell us and we'll add it.