Вы купили VPS-сервер и не знаете, что делать дальше? Разбираю шаг за шагом, как безопасно подготовить сервер к работе, даже если вы впервые открыли терминал.
Кому подойдет этот чек-лист?
Чек-лист по настройке сервера подойдет разработчикам, владельцам сайтов и основателям стартапов, которые просматривают гайды в стиле «VPS-хостинг для начинающих» и хотят убедиться, что их проект готов к запуску и соответствует техническим требованиям.
Что делать сразу после покупки VPS сервера
Представим, что вы уже выбрали хостинг и купили сервер. Если это не так, то советуем просто вбить в поисковике «арендовать дешевый VPS сервер» и выбрать нужный. Цены разные, начинаются от 300 рублей в месяц.
Проверка характеристик VPS
Обязательно обратите внимание на характеристики сервера, который планируете арендовать. Почему это важно? От характеристик VPS напрямую зависят скорость и стабильность вашего сайта или приложения. Если ресурсов не хватает, проект будет тормозить, даже при идеальной настройке.
Для одностраничных сайтов достаточно 1-2 vCPU, 1-2 Гб RAM и 30-40 Гб SSD. Для интернет-магазинов, CRM или приложений 4 vCPU, 4-8 Гб RAM и 80-160 Гб SSD. Если работаете с базами данных или ML, выбирайте тарифы с SSD NVMe и скоростью сети 200 Мбит/с.
Итак, хостинг выбрали.
Настройка локации VPS
Далее выбираем оптимальную локацию VPS сервера. Почему это важно?
Чем ближе сервер к вашим пользователям, тем быстрее загружается сайт. Локация влияет и на SEO, поскольку поисковики учитывают скорость отклика.
Если большинство ваших пользователей в России, выбирайте московские или санкт-петербургские дата-центры. Для международных проектов подойдут серверы в Европе (например, Германия или Нидерланды), низкие пинги и высокий аптайм. Чем ближе сервер к аудитории, тем быстрее работает сайт. Например, VPS от Cloud4box уже поставляется с оптимальными настройками для Linux/Windows и возможностью выбора дата-центра в России, Европе, Америке или странах Азии.
Настройка операционной системы
Далее выбираем и настраиваем операционную систему. Выбор ОС зависит от задач проекта. Например, Linux и ее подвиды — Ubuntu, Debian, AlmaLinux — подходят для сайтов, CMS, приложений на PHP, Python, Node.js. Linux прост в настройке и потребляет меньше по сравнению с Windows Server. ОС требует меньше оперативной памяти и CPU для работы системы, оставляя больше ресурсов для сайтов и приложений. Windows Server подходит для проектов на .NET, MSSQL, 1С и других корпоративных приложений, где нужен графический интерфейс.
Для новичков рекомендуем начинать с Linux (Ubuntu). Как правило, это наиболее распространенная и прогрессивная ОС из всех перечисленных.
Далее нужно проверить сервер и подготовить его к безопасной работе. ОЗУ, процессор, место на диске. Это важно, чтобы потом сайты и приложения работали стабильно.
На Linux можно проверить так:
lscpu #информация о процессоре
free -h #доступная память
df -h #свободное место на диске
Также можно проверить тип виртуализации:
systemd-detect-virt
Как настроить VPS на Linux
После установки ОС необходимо выполнить подключение к VPS через SSH. После покупки вы получите IP, логин и пароль root. На Linux достаточно открыть терминал и выполнить команду:
ssh root@IP_вашего_сервера
SSH — это стандарт безопасного подключения к серверу. Что будет, если его не подключить? Если использовать небезопасные способы подключения, такие как FTP или Telnet, например, вы рискуете передавать пароли в открытом виде.
По умолчанию SSH использует порт 22. Именно через него происходит подключение к серверу.
Если при подключении возникает ошибка, проверьте, что этот порт открыт в настройках брандмауэра вашего компьютера или хостинга.
После подключения вы сможете проверять ресурсы, обновлять систему и устанавливать нужные пакеты.
Обновите систему и базовые пакеты для Linux
Даже новый VPS может содержать устаревшие пакеты, поэтому первым делом их важно обновить:
sudo apt update && sudo apt upgrade -y
Что делают эти команды:
sudo apt updateобновляет список доступных пакетов и их версий из репозиториев Ubuntu. Команда скачивает информацию о том, какие программы можно обновить.sudo apt upgrade -yустанавливает все доступные обновления для уже установленных пакетов. Флаг -y автоматически отвечает «да» на все вопросы. Без него система будет запрашивать подтверждение для каждого пакета.&&логический оператор «И». Вторая команда выполнится только если первая завершилась без ошибок.
Обновления закрывают уязвимости безопасности, исправляют ошибки и улучшают стабильность системы. Автоматические обновления удобны для тестовых серверов, но на продакшн-серверах лучше выполнять обновления вручную, чтобы не прерывать работу сервисов
После обновления системы установите полезные утилиты для работы с сервером:
sudo apt install iptables ipset net-tools nano rsync parted -y
iptables, ipsetуправление сетевыми правилами и фильтрация трафика;net-toolsдиагностика сети и проверка подключений;nanoредактирование конфигурационных файлов;rsyncсинхронизация и копирование файлов;partedуправление разделами диска.
Если вы только начинаете, можно установить минимальный набор: rsync и net-tools. Остальное добавите по мере необходимости. Но установка всех утилит сразу не навредит и займет 1–2 минуты.
Убедитесь, что все установилось корректно.
Проверка версий установленных утилит:
iptables --version
rsync --version
nano --version
Проверка сетевых настроек:
ifconfig
или (если ifconfig не работает)
ip addr show
Если команды выводят версии или информацию, то все установлено правильно. После команды apt upgrade система может попросить перезагрузку (появится сообщение о /var/run/reboot-required). Перезагрузите сервер командой sudo reboot и подключитесь заново через пару минут.
Создайте отдельного пользователя с правами администратора и запретите root по умолчанию
Нужно подключиться под пользователем root, после создать нужного пользователя с правами sudo, а после заблокировать в конфигурации SSH-сервера подключение с помощью пользователя root.
Подключитесь под root и создайте нового пользователя с правами sudo:
adduser admin
usermod -aG sudo admin
Система попросит задать пароль. Используйте сложную конфигурацию минимум из 12 символов с буквами, цифрами и спецсимволами.
Настройте SSH-ключ для входа (на локальной машине)
На вашем компьютере (не на сервере!) откройте терминал и создайте SSH-ключ:
ssh-keygen -t ed25519 -C "your_email@example.com"
Система спросит, куда сохранить ключ. По умолчанию это ~/.ssh/id_ed25519 (что означает папку .ssh в вашей домашней директории). Нажмите Enter.
Что означает ~/.ssh/:
~сокращение для вашей домашней папки (на Linux это /home/ваше_имя/);.ssh/скрытая папка, где хранятся все SSH-ключи и конфигурации.
После выбора пути система предложит задать пароль для ключа. Рекомендуем его задать для дополнительной защиты, даже если кто-то украдет файл ключа с вашего компьютера, без пароля он не сможет им воспользоваться.
Будут созданы два файла:
~/.ssh/id_ed25519приватный ключ. НИКОГДА и НИКОМУ его не передавайте.~/.ssh/id_ed25519.pubпубличный ключ, его копируем на сервер.
Скопируйте ключ на сервер
Теперь перенесите публичный ключ на сервер:
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@IP_вашего_сервера
Введите пароль пользователя admin, который вы создали на шаге 1. Команда автоматически добавит ваш ключ в файл ~/.ssh/authorized_keysна сервере.
ВАЖНО! Проверьте вход под новым пользователем
Не закрывайте текущую сессию с root! Откройте новое окно терминала и попробуйте подключиться:
ssh admin@IP_вашего_сервера
Если вы задали пароль для SSH-ключа, система попросит его ввести. Если всё работает — отлично, переходим дальше. Если не работает, у вас ещё есть открытая сессия root для исправления ошибок.
Проверьте права sudo
Находясь под пользователем admin, выполните тестовую команду с sudo:
sudo ls /root
Если команда отработала (вывела содержимое папки) — все настроено правильно.
Настройте конфигурацию SSH-сервера
Теперь можно безопасно отключить вход под root и парольную аутентификацию. Откройте конфигурацию SSH:
sudo nano /etc/ssh/sshd_config
Найдите и измените следующие строки (уберите символ #, если он есть):
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
Сохраните файл (Ctrl+O, Enter, Ctrl+X в nano).
Перезапустите SSH-сервер
Применяем изменения:
sudo systemctl restart sshd
Финальная проверка
Не закрывая текущую сессию, откройте еще одно окно терминала и проверьте вход по ключу:
ssh admin@IP_вашего_сервера
Вы должны войти БЕЗ запроса пароля пользователя, только пароль SSH-ключа, если вы его задавали.
Попробуйте подключиться под root, должен быть отказ:
ssh root@IP_вашего_сервера
Должно быть: Permission denied
Только после успешной проверки закрывайте старые сессии!
Где хранить SSH-ключи
Приватный ключ (
~/.ssh/id_ed25519) хранится ТОЛЬКО на вашем компьютере, никогда не передавайте его.Публичный ключ (
~/.ssh/id_ed25519.pub) копируется на сервер, его можно передавать.Сделайте резервную копию приватного ключа на зашифрованном USB-носителе.
Если нужно подключаться с разных компьютеров:
Создайте отдельный SSH-ключ на каждом устройстве
Добавьте все публичные ключи на сервер. На каждом устройстве выполните:
ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@IP_вашего_сервера
Все ключи будут добавлены в ~/.ssh/authorized_keys на сервере.
Что делать, если заблокировали себя
Если все-таки заблокировали доступ:
Используйте консоль VPS в панели управления хостинга (она работает всегда).
Войдите под root через консоль.
Откройте
/etc/ssh/sshd_configи временно верните:
PermitRootLogin yes
PasswordAuthentication yes
Перезапустите SSH:
systemctl restart sshdПодключитесь с вашего компьютера и исправьте ошибки.
Повторите настройку правильно.
После базовой настройки можно усилить безопасность:
Вместо порта 22 используйте нестандартный (например, 2222):
sudo nano /etc/ssh/sshd_config
Измените значение в строке:
Port с 22 на 2222
Не забудьте открыть новый порт в firewall ДО перезапуска SSH:
sudo ufw allow 2222/tcp
sudo systemctl restart sshd
Подключение теперь через:
ssh -p 2222 admin@IP_вашего_сервера
Ограничьте количество попыток входа
Добавьте в /etc/ssh/sshd_config:
MaxAuthTries 3
MaxSessions 2
Это позволит только 3 попытки ввода пароля и максимум 2 одновременных сессии.
Отключите X11 Forwarding, если не используете
X11Forwarding no
Чек-лист настройки SSH
Создан новый пользователь с sudo-правами.
SSH-ключ сгенерирован на локальной машине.
Публичный ключ скопирован на сервер.
Проверен вход под новым пользователем с ключом.
Проверены sudo-права.
Отключен вход под root (
PermitRootLogin no).Отключена парольная аутентификация (
PasswordAuthentication no).SSH-сервер перезапущен.
Проверен вход в новом окне терминала.
Сохранена резервная копия SSH-ключа.
Настройте firewall (UFW)
И оставьте открытыми только необходимые порты SSH/RDP, 80, 443. Для Ubuntu удобнее всего использовать UFW Это инструмент, который идёт вместе с ОС.
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80,443/tcp # HTTP и HTTPS
sudo ufw enable
Можно внести правила и не применять их сразу, чтобы случайно не заблокировать себя. UFW достаточно для новичка, iptables или firewalld пригодятся, если вы хотите детально управлять трафиком.
Настройте swap
Swap (файл подкачки) — это резервная память на диске, которую система использует, когда заканчивается оперативная память (RAM). Swap нужен, чтобы сервер не падал при нехватке ОЗУ.
sudo fallocate -l 2G /swapfile
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
echo '/swapfile none swap sw 0 0' | sudo tee -a /etc/fstab
Как выбрать размер? В команде выше замените 2G на нужный размер.
Рекомендуем размер swap 2-4 Гб для VPS с 1-8 Гб ОЗУ. Для серверов с 8+ Гб не имеет смысла делать swap больше 4-8 Гб.
Важные нюансы:
Для серверов виртуализации (Proxmox, VMware, KVM) с большим объемом RAM (32-64+ Гб) swap должен быть 16-32 Гб. Виртуальные машины могут одновременно потреблять много памяти, и недостаточный swap приведет к падению хоста.
Для баз данных (MySQL, PostgreSQL) с активной работой, swap лучше делать 0.5-1x от RAM, так как базы данных очень чувствительны к производительности, и активный swap их сильно замедлит.
Для веб-серверов и обычных приложений 2-4 Гб swap достаточно независимо от объёма RAM.
Swap не влияет на скорость сайта при нормальной работе, но повышает надежность под нагрузкой. Сервер не упадет с ошибкой «Out of Memory», а продолжит работать, пусть и медленнее. Правда будьте осторожны с высоконагруженными приложениями, они могут сильно замедлиться при активном использовании swap, так как скорость диска в 100-1000 раз медленнее оперативной памяти. Если видите постоянное использование swap, пора добавить RAM.
Установите Fail2ban
Fail2ban блокирует попытки взлома через подбор паролей:
sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban
Пример базовой конфигурации:
/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/auth.log
maxretry = 7
bantime = 1d
Fail2ban следит за логами сервера. Если кто-то пытается подобрать пароль, например, через SSH, программа блокирует IP злоумышленника на заданное время. Таким образом предотвращаются попытки взлома. Также Fail2ban снижает нагрузку на сервисы, потому что блокирует злоумышленников, которые могли бы постоянно отправлять запросы и нагружать сервер подборами паролей.
Проверьте сеть
Перед началом работы убедитесь, что у сервера есть доступ в интернет:
ping google.com
curl и домен хостинга, например, https://cloud4box.ru
Команда ping проверяет отклик сервера в сети. curl означает, что сервер может получать и отправлять HTTP-запросы. Если есть проблемы с сетью, их нужно исправить до продолжения настройки, иначе следующие шаги, например установка пакетов, могут происходить с ошибками.
Настройте резервное копирование
Лучше делать бэкапы сразу после настройки VPS. Для небольшого проекта достаточно делать локальные копии на сервере, а затем выгружать их в облако или на удаленный FTP.
Какая файловая система у вашего VPS?
Большинство VPS-хостингов по умолчанию используют файловую систему ext4 (Extended File System 4). Она надежная, быстрая, но не поддерживает моментальные снимки (snapshots).
Проверьте, какая у вас файловая система:
df -T
Если видите ext4, используйте методы бэкапа для ext4 (большинство случаев). Если видите btrfs или zfs, у вас продвинутая ФС с поддержкой снимков (редкость на обычных VPS).
Простое локальное копирование (для ext4). Этот метод подходит для быстрого создания резервной копии всей системы на том же сервере.
Создание папки для бэкапа:
sudo mkdir -p /backup
Первое полное копирование:
sudo rsync -aAXv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ /backup/
Что делает эта команда:
-aархивный режим (сохраняет права, владельцев, даты);-Aсохраняет ACL (списки контроля доступа);-Xсохраняет расширенные атрибуты;-vпоказывает процесс копирования;--deleteудаляет файлы в бэкапе, которых уже нет в источнике;--excludeисключает системные папки, которые не нужно копировать.
Проверка бэкапа:
du -sh /backup
ls -la /backup
Вы должны увидеть структуру, похожую на корневую систему.
Если что-то сломалось, восстановите систему:
sudo rsync -aAXv --delete \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found"} \
/backup/ /
Эта команда перезапишет текущие файлы бэкапом!
Инкрементальные бэкапы. Инкрементальные бэкапы копируют только изменения с момента последнего бэкапа. Это экономит место и время.
Создание структуры для инкрементальных бэкапов:
sudo mkdir -p /backup/incremental
Первый полный бэкап:
sudo rsync -aAXv --delete \
--link-dest=/backup/full \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ /backup/full/
Последующие инкрементальные бэкапы. Создайте папку с текущей датой:
BACKUP_DATE=$(date +%Y-%m-%d_%H-%M)
sudo rsync -aAXv --delete \
--link-dest=/backup/full \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ /backup/incremental/$BACKUP_DATE/
Эта команда создаст копию только измененных файлов, а неизмененные файлы будут жесткими ссылками на полный бэкап.
Бэкапы в облако или на удаленный сервер
Локальные бэкапы хороши, но если сервер полностью выйдет из строя, вы потеряете все. Поэтому важно копировать бэкапы за пределы VPS.
Бэкап на другой VPS через rsync плюс SSH
Если у вас есть второй сервер или NAS, на втором сервере создайте пользователя для бэкапов:
ssh backup_user@второй_сервер
mkdir -p ~/backups/vps1
На основном VPS настройте SSH-ключ для беспарольного доступа:
ssh-keygen -t ed25519 -f ~/.ssh/backup_key -N ""
ssh-copy-id -i ~/.ssh/backup_key.pub backup_user@второй_сервер
Выполните бэкап на удаленный сервер:
sudo rsync -aAXv -e "ssh -i /root/.ssh/backup_key" \
--exclude={"/dev/*","/proc/*","/sys/*","/tmp/*","/run/*","/mnt/*","/media/*","/lost+found","/backup/*"} \
/ backup_user@второй_сервер:~/backups/vps1/
Бэкап в облачное хранилище
Установите rclone, это универсальный инструмент для работы с облаками:
sudo apt install rclone -y
Настройте подключение к облаку:
rclone config
Следуйте инструкциям для вашего облака (Google Drive, Dropbox, AWS S3, и т.д.). Отправьте бэкап в облако:
rclone sync /backup/ remote:vps-backups/, где remote — имя, которое вы задали при настройке.
Снапшоты хостинга (самый простой)
Многие VPS-хостинги предлагают встроенные снапшоты (моментальные копии всего диска).
Преимущества снапшотов хостинга:
Один клик для создания и восстановления.
Копируется весь диск целиком (включая конфигурации).
Не занимает место на вашем VPS.
Быстрое восстановление за минуты.
Недостатки:
Обычно платные (от 50₽ до 300₽ за снапшот).
Хранятся на том же хостинге (если хостинг упадёт, снапшоты тоже).
Ограниченное количество (обычно 1–5 снапшотов).
Как использовать:
Зайдите в панель управления хостингом.
Найдите раздел «Snapshots» или «Резервные копии».
Нажмите «Создать снапшот».
Задайте имя (например, «before-update-2024-10-28»).
Дождитесь завершения (5-15 минут).
Создавайте снапшот перед каждым важным изменением (обновление ПО, изменение конфигураций, установка нового софта).
Вывод
Настроить VPS-сервер не так сложно, как кажется на первый взгляд, главное — выбрать подходящий хостинг. Лично я пользуюсь VPS от Cloud4box, но вы можете выбрать любой другой, у которого положительные отзывы. Следуя нашему чек-листу, вы за 30-40 минут получите безопасный и стабильный сервер, готовый к работе. Вы уже защитили сервер от взлома, настроили резервное копирование данных и подготовили систему к стабильной работе под нагрузкой.
Теперь можно устанавливать веб-сервер, базу данных и деплоить приложение. Не забывайте регулярно проверять логи, обновлять систему и делать бэкапы перед важными изменениями. Помните, что безопасность сервера — постоянный процесс. Раз в неделю проверяйте логи Fail2ban, раз в месяц проверяйте работу бэкапов, и ваш VPS прослужит вам долго и надежно.
И вот еще несколько команд для мониторинга:
Проверка нагрузки на сервер:
htopПроверка заблокированных IP в Fail2ban: sudo
fail2ban-client status sshdПроверка использования диска:
df -hПроверка использования памяти и swap:
free -hПросмотр активных подключений:
sudo ss -tunlp
Комментарии (3)

SlavikF
10.11.2025 13:41Нарвался на такую проблему:
Запустил себе виртуалку на Oracle Cloud, SSH работает, а другие порты - не работают (80, 443...).
Настроил в их cloud: network security groups (NSGs), security lists... Всё равно порты недоступны.
На самой виртуалке Ubuntu - firewall не запущен.
Оказалось, что Oracle в образы Ubuntu уже "включает" какой-то конфиг iptables, который по умолчанию блокирует большинство портов. Решилось вот этой командой:
sudo iptables -I INPUT -j ACCEPT
dimuska139
А если потом нужно будет переехать на другой сервер, то опять вручную нужно будет всё это делать? Я далёк от devops-технологий, но думал, что может Asible какой-нибудь можно использовать для такого.
maximaleshin
Так можно всё настроить, сделать образ, скачать его или скопировать куда-нибудь. Потом из образа в пару кликов на любом другом VPS развернуть.