Инструкции

Как настроить VPS с нуля

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

Обновлено 01.10.2026≈ 7 мин чтения
Содержание 11

Что у вас есть на старте

После оплаты провайдер присылает три вещи: IP-адрес сервера, имя пользователя (обычно root) и пароль либо ваш SSH-ключ. Всё остальное — пустая Ubuntu.

Инструкция ниже написана под Ubuntu 22.04 или 24.04. Под Debian всё то же самое. Какую версию Ubuntu выбрать и как потом обновлять систему — в статье Ubuntu на VPS: какую версию выбрать и как обновлять.

Если вы хотите управлять сервером не командами, а через браузер, прочитайте статью Панель управления хостингом и VPS до того, как ставить на сервер сайты: панель ставят только на чистую систему.

Одно предупреждение до начала. Пока вы читаете этот абзац, ваш новый сервер уже перебирают роботы: свежий IP с открытым SSH начинают прощупывать в первые же минуты. Пункты 2–4 — не паранойя, а необходимый минимум. Их делают сразу, а не «потом, когда дойдут руки».

1. Подключиться по SSH

На Mac и Linux откройте терминал, на Windows — PowerShell или встроенный OpenSSH:

ssh root@ВАШ_IP

Первый раз система спросит, доверяете ли вы этому серверу — отвечаете yes. Дальше вводите пароль из письма провайдера. Пароль при вводе не отображается, даже звёздочками: это нормально, печатайте вслепую и жмите Enter.

Если пустили по ключу — пароль не спросят вовсе.

Где взять IP и пароль, как подключиться со старой Windows и что значат ошибки подключения — в отдельной инструкции «Как подключиться к VPS по SSH».

2. Обновить систему

apt update && apt upgrade -y

Первая команда обновляет список пакетов, вторая — сами пакеты. На свежем сервере это займёт пару минут. Если после обновления система попросит перезагрузиться — перезагрузите: reboot, подождите полминуты и подключитесь снова.

3. Завести обычного пользователя

Работать под root постоянно не стоит: любая опечатка выполняется с неограниченными правами. Создаём себе отдельного пользователя и даём ему право повышать привилегии через sudo.

adduser ivan
usermod -aG sudo ivan

Вместо ivan — любое имя. Команда спросит пароль и несколько необязательных полей, их можно пропустить, нажимая Enter.

Теперь скопируем на нового пользователя ваш способ входа. Если вы заходили по ключу:

rsync --archive --chown=ivan:ivan ~/.ssh /home/ivan

Откройте второе окно терминала и проверьте, что новый пользователь заходит:

ssh ivan@ВАШ_IP
Обязательно второе окно, не закрывая первое. Если что-то пойдёт не так, у вас останется открытая сессия под root, чтобы всё починить. Это самая частая причина, по которой люди теряют доступ к собственному серверу.

4. Закрыть вход по паролю и под root

Это тот самый шаг, который отсекает почти все автоматические взломы. Делайте его, только убедившись, что вход по ключу под новым пользователем работает.

Сначала положите свой публичный ключ на сервер. На своём компьютере:

ssh-copy-id ivan@ВАШ_IP

Если ключа ещё нет, создайте его: ssh-keygen -t ed25519.

Теперь на сервере открываем настройку SSH:

sudo nano /etc/ssh/sshd_config

Находим и приводим к такому виду три строки (если строки закомментированы знаком #, знак убираем):

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes

Сохраняем: Ctrl+O, Enter, Ctrl+X. Проверяем настройки и применяем:

sudo sshd -t && sudo systemctl restart ssh

Первая половина команды проверяет файл настроек. Если в нём ошибка, она покажет, в какой строке, и SSH перезапускаться не будет — исправьте строку и повторите. Ошибок нет — SSH перезапустится молча.

Одна ловушка. В Ubuntu часть настроек SSH лежит в папке /etc/ssh/sshd_config.d/, и файлы оттуда читаются раньше основного, а из повторяющихся настроек действует первая. Если там есть строка PasswordAuthentication yes — например, в файле 50-cloud-init.conf, — вход по паролю останется открытым, что бы ни было написано в sshd_config. Проверьте, что действует на самом деле:

sudo sshd -T | grep -Ei 'passwordauthentication|permitrootlogin'

Должно быть passwordauthentication no и permitrootlogin no. Если где-то yes, найдите эту строку в файлах папки sshd_config.d, поменяйте на no и снова выполните проверку с перезапуском.

И снова — не закрывая текущего окна — проверьте вход из нового.

5. Включить фаервол

sudo ufw allow OpenSSH
sudo ufw allow 80
sudo ufw allow 443
sudo ufw enable

Порядок важен: сначала разрешаем SSH, потом включаем фаервол. Если сделать наоборот, вы отрежете себя от сервера. Порты 80 и 443 нужны сайту; если сайта не будет, их можно не открывать.

Проверить, что получилось: sudo ufw status.

6. Поставить веб-сервер

Если на сервере будет сайт:

sudo apt install nginx -y

Откройте в браузере http://ВАШ_IP — увидите приветственную страницу nginx. Значит, работает.

Файлы сайта кладутся в /var/www/, настройки — в /etc/nginx/sites-available/. После правки настроек всегда проверяйте их перед применением:

sudo nginx -t
sudo systemctl reload nginx

nginx -t покажет ошибку до того, как она положит сайт. Привыкните к этой паре команд.

Как описать в nginx свой сайт, оставить один адрес — с www или без — и разобраться с ошибками 403, 404 и 502, разобрано в инструкции Как разместить сайт на VPS.

7. Выдать сайту сертификат

Бесплатный сертификат Let's Encrypt выдаёт программа Certbot. Перед этим домен должен указывать на IP вашего сервера, а порт 80 — быть открытым: через него Certbot подтверждает домен. Разработчики Certbot советуют ставить его через snap. Если раньше вы ставили Certbot из пакетов системы, сначала удалите его: sudo apt-get remove certbot. Дальше — три команды:

sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/local/bin/certbot
sudo certbot --nginx -d example.ru -d www.example.ru

Certbot сам пропишет настройки в nginx и поставит таймер, который продлевает сертификат, когда до конца срока остаётся меньше трети. Проверить, что автопродление живо: sudo certbot renew --dry-run. Подробнее — в инструкции «Бесплатный SSL-сертификат»: там же переадресация с HTTP на HTTPS и что делать, если после установки нет замка.

8. Настроить время и подкачку

Мелочи, о которых вспоминают поздно.

Часовой пояс, чтобы логи читались по-человечески:

sudo timedatectl set-timezone Europe/Moscow

Файл подкачки — на сервере с 1–2 ГБ памяти он спасает от внезапного падения процессов:

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

Короткий список, чтобы ничего не забыть

  1. Зашли по SSH.
  2. Обновили систему.
  3. Создали пользователя с sudo.
  4. Положили SSH-ключ, проверили вход из второго окна.
  5. Запретили вход по паролю и под root, проверили через sshd -T.
  6. Включили ufw, не забыв разрешить SSH.
  7. Поставили nginx, если нужен сайт.
  8. Выдали сертификат.
  9. Поставили часовой пояс и подкачку.
Всё это делается один раз и занимает полчаса. Дальше сервер живёт сам: обновления накатываются командой из пункта 2 раз в пару недель, сертификат продлевается автоматически.

Что почитать дальше

Проверено и обновлено: 01.10.2026