Как настроить VPS с нуля — пошаговая инструкция для Ubuntu
📖 Гайды

Как настроить VPS с нуля — пошаговая инструкция для новичка

Марина
Марина
📅 27 мая 2026 👁 155 просмотров
Как настроить VPS с нуля — пошаговая инструкция для новичка

После покупки VPS сервер приходит в исходном состоянии: только ОС, root-доступ по паролю и никакой защиты. Эта статья показывает, как настроить VPS с нуля — от первого подключения до работающего веб-сервера с SSL-сертификатом и резервным копированием. Если вы только выбираете провайдера — начните с выбора подходящего VPS в нашем каталоге, а если уже определились, читайте дальше. Среди начинающих пользователей востребована подборка лучших VPS для начинающих — там конкретные тарифы с оценками.

Шаг 1. Подключение к VPS по SSH

SSH (Secure Shell) — протокол зашифрованного удалённого подключения к серверу. Через него выполняются все команды из этой инструкции. Без SSH работа с VPS невозможна — веб-панелей управления здесь нет.

После покупки VPS провайдер присылает три параметра: IP-адрес сервера, логин (обычно root) и пароль. Тип виртуализации тоже важен — KVM-серверы поддерживают загрузку своего ядра, что нужно для части инструментов безопасности.

Подключение через PuTTY (для Windows)

PuTTY — бесплатный SSH-клиент для Windows. Порядок подключения:

  1. Скачать PuTTY с официального сайта putty.org.
  2. В поле Host Name (or IP address) ввести IP-адрес сервера.
  3. Порт — 22, тип соединения — SSH.
  4. Нажать Open.
  5. При первом подключении PuTTY покажет предупреждение о ключе хоста — нажать Accept.
  6. Ввести логин root и пароль из письма провайдера.

Начиная с Windows 10 1809 SSH-клиент встроен в систему. PuTTY или Windows Terminal — разницы нет, выбирайте удобный вариант.

Подключение через терминал (macOS / Linux)

Открыть терминал и выполнить команду:

ssh root@ВАШ_IP_АДРЕС

При первом подключении система запросит подтверждение отпечатка ключа — ввести yes. Затем ввести пароль. Курсор при вводе пароля не двигается — это нормально, Linux скрывает символы.

После входа появится приглашение вида root@hostname:~#. Это означает активную сессию суперпользователя с полным доступом к серверу.

Шаг 2. Обновление системы

Первое действие после входа на сервер — обновление всех пакетов. Это устраняет известные уязвимости в ОС и предустановленном ПО. Серверы с устаревшими пакетами компрометируются в течение нескольких часов после публикации новых эксплойтов — пропускать этот шаг не стоит.

Для Ubuntu и Debian (большинство VPS-провайдеров в каталоге сравнить VPS с Ubuntu предлагают именно эти дистрибутивы):

apt update && apt upgrade -y

Для CentOS, AlmaLinux, Rocky Linux:

dnf update -y

Команда apt update обновляет список доступных пакетов, apt upgrade -y — устанавливает обновления без запроса подтверждения. Флаг -y автоматически отвечает «да» на все вопросы. После завершения сервер может попросить перезагрузку — выполнить reboot и снова подключиться по SSH.

Дополнительно рекомендуется установить unattended-upgrades для автоматических обновлений безопасности:

apt install unattended-upgrades -y
dpkg-reconfigure --priority=low unattended-upgrades

Шаг 3. Базовая безопасность сервера

Сервер с root-доступом по паролю и открытым SSH — мишень для автоматических брутфорс-атак. Боты перебирают пароли круглосуточно; по данным провайдеров, новый VPS получает первые попытки подбора в течение 30 минут после появления в сети. Три шага ниже закрывают основные векторы атаки.

Создание нового пользователя и отключение root-доступа

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

adduser имя_пользователя

Система запросит пароль и несколько необязательных полей (имя, телефон) — поля можно пропустить, нажав Enter. Добавить пользователя в группу sudo:

usermod -aG sudo имя_пользователя

Открыть новый терминал и проверить, что новый пользователь входит и может выполнять команды с sudo. После проверки — отключить root-вход по SSH. Открыть файл конфигурации:

nano /etc/ssh/sshd_config

Найти строку PermitRootLogin yes и изменить на:

PermitRootLogin no

Сохранить файл (Ctrl+O, Enter, Ctrl+X) и перезапустить SSH-демон:

systemctl restart sshd

Не закрывайте текущий терминал до проверки нового подключения. Если допустить ошибку в конфиге и закрыть единственную сессию — потеряете доступ к серверу.

Настройка SSH-ключей вместо паролей

SSH-ключи надёжнее паролей: ключ длиной 256 бит невозможно подобрать перебором. Сгенерировать пару ключей на локальном компьютере (не на сервере):

ssh-keygen -t ed25519 -C "комментарий, например email"

Алгоритм ed25519 — современный стандарт; он быстрее и безопаснее устаревшего RSA-2048. Команда создаст два файла: ~/.ssh/id_ed25519 (приватный ключ, хранить только локально) и ~/.ssh/id_ed25519.pub (публичный ключ, его отправляют на сервер).

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

ssh-copy-id имя_пользователя@ВАШ_IP_АДРЕС

После этого вход на сервер будет происходить без пароля. Дополнительно можно отключить вход по паролю полностью — в sshd_config установить PasswordAuthentication no. Подробнее о работе с ключами — в официальной документации Ubuntu по SSH-ключам.

Установка и настройка Fail2ban

Fail2ban отслеживает системные логи и автоматически блокирует IP-адреса, с которых поступают подозрительные запросы. По умолчанию после 5 неудачных попыток входа IP блокируется на 10 минут. Установка:

apt install fail2ban -y

Создать локальный конфиг (оригинальный файл jail.conf перезаписывается при обновлениях — изменения вносить только в jail.local):

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
nano /etc/fail2ban/jail.local

Минимальная конфигурация для защиты SSH (найти секцию [sshd] или добавить в конец файла):

[sshd]
enabled = true
port = ssh
maxretry = 3
bantime = 3600
findtime = 600

Параметры: maxretry = 3 — блокировать после трёх неудачных попыток, bantime = 3600 — на один час, findtime = 600 — считать попытки за последние 10 минут. Применить конфигурацию:

systemctl restart fail2ban
systemctl enable fail2ban

Проверить статус и список заблокированных IP:

fail2ban-client status sshd

Шаг 4. Настройка файрвола (UFW)

UFW (Uncomplicated Firewall) — надстройка над iptables, которая упрощает управление правилами. Для новичков UFW предпочтительнее прямой работы с iptables: меньше шансов допустить ошибку в синтаксисе и заблокировать себя.

Установить UFW (в Ubuntu обычно уже присутствует):

apt install ufw -y

Настроить правила до включения файрвола — в строгом порядке:

ufw allow OpenSSH
ufw allow 80/tcp
ufw allow 443/tcp

Важно: не выполняйте ufw enable до того, как разрешили SSH-порт. Если включить файрвол без правила для SSH — потеряете доступ к серверу. Провайдер сможет помочь только через VNC-консоль.

Включить файрвол и проверить статус:

ufw enable
ufw status

Вывод команды должен показать три разрешённых правила: OpenSSH (порт 22), 80/tcp и 443/tcp. Всё остальное входящее — блокируется по умолчанию. Исходящий трафик UFW не ограничивает.

Для продвинутых задач — управление правилами через iptables напрямую, nftables или Firewalld (для CentOS/AlmaLinux). UFW подходит для большинства веб-проектов.

Шаг 5. Установка веб-сервера Nginx

Для размещения сайтов на VPS нужен веб-сервер. Nginx — предпочтительный выбор для большинства задач: потребляет меньше памяти при высокой нагрузке, отлично справляется с отдачей статики, служит обратным прокси для Node.js, Python, PHP-FPM. Apache актуален для тех, кто уже работает с .htaccess — например, при переносе сайта на VPS для WordPress.

Установка Nginx

apt install nginx -y
systemctl start nginx
systemctl enable nginx

Команда systemctl enable добавляет Nginx в автозагрузку — сервис поднимется автоматически после перезагрузки сервера. Проверить работу: открыть в браузере адрес http://ВАШ_IP_АДРЕС. Должна появиться стандартная страница «Welcome to nginx!».

Базовая конфигурация виртуального хоста

Каждый сайт в Nginx описывается отдельным блоком server. Создать конфиг для домена:

nano /etc/nginx/sites-available/example.com

Шаблон конфига для сайта:

server {
    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;
    root /var/www/example.com/html;
    index index.html index.htm index.php;

    location / {
        try_files $uri $uri/ =404;
    }

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;
}

Активировать конфиг и перезапустить Nginx:

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

Команда nginx -t проверяет синтаксис конфига перед применением. Если выводит test is successful — всё в порядке. Никогда не перезапускайте Nginx без предварительной проверки конфига на продакшн-сервере.

Шаг 6. Установка PHP и MySQL

Стек LEMP (Linux + Nginx + MySQL/MariaDB + PHP) — стандартная среда для запуска WordPress, Laravel, Bitrix и большинства PHP-приложений.

Установка PHP

Для Ubuntu 22.04 актуальная версия PHP — 8.1, для Ubuntu 24.04 — 8.3. Установить PHP-FPM и необходимые расширения:

apt install php-fpm php-mysql php-cli php-curl php-mbstring php-xml php-zip -y

PHP-FPM запускает PHP как отдельный процесс и передаёт запросы от Nginx через FastCGI. Добавить обработку PHP в конфиг виртуального хоста — внутрь блока server {}:

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

Путь к сокету PHP-FPM зависит от версии PHP. Уточнить актуальный путь:

ls /run/php/

Установка MySQL (MariaDB)

MariaDB — полностью совместимая с MySQL замена с открытым кодом. На Ubuntu 22.04/24.04 из стандартных репозиториев устанавливается MariaDB:

apt install mariadb-server -y
mysql_secure_installation

Скрипт mysql_secure_installation задаёт несколько вопросов: установить пароль для root, удалить анонимных пользователей, отключить удалённый вход root, удалить тестовую базу. На все вопросы ответить «Y».

Создать базу данных и пользователя для приложения:

mysql -u root -p

Внутри MySQL-консоли:

CREATE DATABASE mysite_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'mysite_user'@'localhost' IDENTIFIED BY 'надёжный_пароль';
GRANT ALL PRIVILEGES ON mysite_db.* TO 'mysite_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Кодировка utf8mb4 поддерживает полный Unicode включая emoji — использовать вместо устаревшей utf8.

Шаг 7. Подключение SSL-сертификата через Let’s Encrypt

Let’s Encrypt выдаёт бесплатные SSL-сертификаты автоматически. Отличие от платных: у Let’s Encrypt нет коммерческой гарантии и OV/EV-валидации (проверки юридического лица). Для большинства сайтов — блогов, магазинов, сервисов — бесплатного сертификата достаточно.

Перед установкой убедитесь, что A-запись домена указывает на IP-адрес вашего сервера. Certbot проверяет это при выдаче сертификата.

Установить Certbot и плагин для Nginx:

apt install certbot python3-certbot-nginx -y

Получить и установить сертификат (Certbot автоматически изменит конфиг Nginx):

certbot --nginx -d example.com -d www.example.com

Certbot запросит email для уведомлений об истечении сертификата и согласие с условиями использования. После успешного выполнения Nginx будет автоматически перенаправлять HTTP на HTTPS.

Сертификаты Let’s Encrypt действуют 90 дней. Certbot устанавливает задание cron для автоматического продления. Проверить, что продление работает:

certbot renew --dry-run

Полная документация и инструкции для других веб-серверов — на сайте официальной документации Certbot.

Шаг 8. Мониторинг сервера

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

Просмотр текущей нагрузки на CPU, RAM и процессы в реальном времени:

apt install htop -y
htop

Свободное место на дисках:

df -h

Использование оперативной памяти:

free -m

Логи Nginx в реальном времени:

journalctl -u nginx -f

Флаг -f включает режим слежения — новые строки добавляются по мере поступления. Прерывается по Ctrl+C.

Netdata — веб-панель мониторинга, которая устанавливается одной командой и сразу показывает графики нагрузки, сетевой активности и состояния сервисов:

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel

После установки веб-интерфейс доступен на порту 19999. Не забудьте открыть порт в UFW, если планируете доступ извне: ufw allow 19999/tcp. На продакшн-сервере лучше закрыть порт и настроить туннель через SSH.

Шаг 9. Настройка резервного копирования

Бэкап — единственная страховка от потери данных при сбое диска, ошибочном rm -rf или взломе. Провайдерские снапшоты удобны, но они охватывают весь сервер целиком и стоят дополнительно. Для гибкого контроля — собственные скрипты.

Создать директорию для бэкапов и скрипт:

mkdir -p /var/backups/mysite
nano /usr/local/bin/backup.sh

Содержимое скрипта:

#!/bin/bash
DATE=$(date +%Y-%m-%d)
BACKUP_DIR="/var/backups/mysite"
SITE_DIR="/var/www/example.com"
DB_NAME="mysite_db"
DB_USER="mysite_user"
DB_PASS="надёжный_пароль"

# Архив файлов сайта
tar -czf "$BACKUP_DIR/files-$DATE.tar.gz" "$SITE_DIR"

# Дамп базы данных
mysqldump -u "$DB_USER" -p"$DB_PASS" "$DB_NAME" | gzip > "$BACKUP_DIR/db-$DATE.sql.gz"

# Удалить бэкапы старше 14 дней
find "$BACKUP_DIR" -type f -mtime +14 -delete

Сделать скрипт исполняемым и добавить в cron:

chmod +x /usr/local/bin/backup.sh
crontab -e

Добавить строку для запуска каждую ночь в 3:00:

0 3 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1

Хранить бэкапы только на том же сервере — плохая практика: при отказе диска потеряете и данные, и резервные копии. Оптимально — отправлять архивы в облачное хранилище (Backblaze B2, Яндекс Диск, S3-совместимое хранилище) или на VPS в Германии как на географически удалённый узел. Большинство VPS в России предоставляют дополнительное блочное хранилище за отдельную плату — можно монтировать как резервный диск.

Ну и в заключение: что настроено

После выполнения всех шагов сервер готов к работе. Вот что сделано:

  • SSH-подключение — вход через терминал или PuTTY
  • Обновление системы — актуальные пакеты и патчи безопасности
  • Новый пользователь sudo, root-вход по SSH отключён
  • SSH-ключи вместо паролей — брутфорс исключён
  • Fail2ban — автоматическая блокировка атак
  • UFW файрвол — открыты только порты 22, 80, 443
  • Nginx — веб-сервер с виртуальным хостом
  • PHP-FPM + MariaDB — стек для PHP-приложений
  • SSL-сертификат Let’s Encrypt с автоматическим продлением
  • Мониторинг — htop, df, journalctl
  • Cron-бэкап — ежедневные архивы файлов и базы данных

Дальнейшие шаги зависят от задачи: установка CMS (WordPress, Drupal), деплой Node.js или Python-приложения, настройка почтового сервера. Для каждого случая — отдельные гайды. Если провайдер ещё не выбран или нужно сменить текущий — сравните 45 провайдеров и выберите VPS с нужными параметрами в нашем каталоге.

Поделиться:
Марина
Редактор · FREEHOSTING
Главный редактор FREEHOSTING. С 2020 года тестирует VDS, VPS и хостинг-провайдеров — арендует серверы, нагружает их реальными проектами и пишет честные обзоры по итогам. Помогает читателям выбирать хостинг под свои задачи: от Telegram-бота до production-сайта.