Веб-разработка

Настройка VPS с нуля на Ubuntu: первые шаги для владельца сайта

Пошаговая инструкция для владельца сайта: как подготовить новый VPS на Ubuntu к работе — от первого входа по SSH до SSL и резервных копий.

Настройка VPS с нуля на Ubuntu: первые шаги для владельца сайта

Настройка VPS с нуля на Ubuntu сводится к нескольким обязательным шагам: обновить систему, создать отдельного пользователя с правами sudo, настроить вход по SSH-ключу и запретить вход по паролю, включить firewall, установить веб-сервер, PHP и базу данных, выпустить SSL-сертификат и настроить резервное копирование. На всё это у подготовленного человека уходит 1–2 часа. Ниже — пошаговая инструкция для Ubuntu 22.04 и 24.04 LTS с командами, которые можно копировать.

Терминал Linux на ноутбуке

Что подготовить до начала

Перед настройкой у вас должны быть:

  • Сам VPS с установленной Ubuntu LTS. Для одного сайта на CMS на старте хватает 1–2 vCPU, 2 ГБ памяти и 20–40 ГБ NVMe. Подходящие варианты — Timeweb Cloud и AdminVPS; конфигурации и цены уточняйте на сайтах провайдеров.
  • IP-адрес сервера и пароль root — их присылает провайдер после создания сервера.
  • Домен, A-запись которого вы направите на IP сервера. Зарегистрировать домен можно, например, в REG.RU.
  • SSH-клиент: в macOS и Linux — встроенный терминал, в Windows 10/11 — встроенный OpenSSH в PowerShell.

Если пока не уверены, что вам нужен именно VPS, прочитайте статью Виртуальный хостинг или VPS.

Шаг 1. Первое подключение и обновление системы

Подключитесь к серверу под root:

ssh root@IP_СЕРВЕРА

При первом подключении подтвердите отпечаток ключа сервера, введите пароль. Затем обновите список пакетов и установленное ПО:

apt update && apt upgrade -y

Сразу установите часовой пояс, чтобы логи и задания по расписанию были в понятном времени:

timedatectl set-timezone Europe/Moscow

Шаг 2. Отдельный пользователь вместо root

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

adduser admin
usermod -aG sudo admin

Вместо admin можно выбрать любое имя — лучше не очевидное.

Шаг 3. Вход по SSH-ключу

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

ssh-keygen -t ed25519 -C "my-laptop"

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

ssh-copy-id admin@IP_СЕРВЕРА

Проверьте, что вход по ключу работает: ssh admin@IP_СЕРВЕРА должен пустить вас без пароля учётной записи.

Запрет входа по паролю и под root

Откройте конфигурацию SSH:

sudo nano /etc/ssh/sshd_config

Установите параметры:

PermitRootLogin no
PasswordAuthentication no

В Ubuntu часть настроек может переопределяться файлами в каталоге /etc/ssh/sshd_config.d/ — проверьте, что там нет PasswordAuthentication yes. Перезапустите службу:

sudo systemctl restart ssh

Важно: не закрывайте текущую сессию, пока не проверите вход по ключу в новом окне терминала. Если что-то пошло не так, вы сможете вернуть настройки. В крайнем случае у большинства провайдеров есть консоль VNC в панели управления.

Защита доступа к серверу по SSH-ключу

Шаг 4. Firewall и защита от перебора

В Ubuntu есть простой firewall UFW. Разрешите SSH и веб-трафик, остальное закройте:

sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status

Порядок важен: сначала разрешите SSH, потом включайте firewall, иначе потеряете доступ.

Установите fail2ban — он блокирует IP-адреса, с которых идёт подбор паролей:

sudo apt install fail2ban -y
sudo systemctl enable --now fail2ban

Включите автоматическую установку обновлений безопасности:

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

Подробнее о защите сервера — в статье Безопасность VPS.

Шаг 5. Веб-сервер, PHP и база данных

Для большинства сайтов на PHP оптимальна связка nginx + PHP-FPM + MariaDB или MySQL. Установите её из стандартных репозиториев Ubuntu:

sudo apt install nginx mariadb-server php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip php-intl -y

Версия PHP будет той, что входит в выпуск Ubuntu (8.1 в 22.04, 8.3 в 24.04). Проверьте, что службы запущены:

systemctl status nginx
systemctl status mariadb

Защита базы данных

Запустите встроенный мастер, который удалит тестовую базу и анонимных пользователей:

sudo mysql_secure_installation

Затем создайте базу и отдельного пользователя для сайта:

sudo mysql
CREATE DATABASE site_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'site_user'@'localhost' IDENTIFIED BY 'СЛОЖНЫЙ_ПАРОЛЬ';
GRANT ALL PRIVILEGES ON site_db.* TO 'site_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

Конфигурация сайта в nginx

Создайте каталог сайта и файл конфигурации /etc/nginx/sites-available/example.ru:

server {
    listen 80;
    server_name example.ru www.example.ru;
    root /var/www/example.ru;
    index index.php index.html;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

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

Путь к сокету PHP-FPM зависит от версии: посмотрите его командой ls /run/php/. Включите сайт и проверьте конфигурацию:

sudo mkdir -p /var/www/example.ru
sudo chown -R www-data:www-data /var/www/example.ru
sudo ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

Шаг 6. SSL-сертификат Let’s Encrypt

Когда A-запись домена указывает на сервер, выпустите бесплатный сертификат через certbot:

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d example.ru -d www.example.ru

Certbot сам пропишет сертификат в конфигурацию nginx и настроит перенаправление на HTTPS. Автопродление работает через системный таймер; проверить его можно командой:

sudo certbot renew --dry-run

Типичные ошибки при выпуске сертификата разобраны в статье SSL на VPS: Let’s Encrypt.

Защищённое HTTPS-соединение в браузере

Шаг 7. Резервное копирование

Сервер без бэкапов — это риск потерять сайт целиком. Минимальная схема: ежедневный дамп базы данных и архив файлов, которые копируются за пределы сервера. Пример дампа базы:

mysqldump --single-transaction site_db | gzip > /backup/site_db_$(date +%F).sql.gz

Копирование на другой сервер или хранилище через rsync:

rsync -az /backup/ user@backup-server:/backups/site/

Добавьте эти команды в скрипт и запускайте по расписанию через cron. Многие провайдеры также предлагают снапшоты сервера — включите их как дополнительный уровень защиты. Как построить надёжную схему, описано в статье Стратегия бэкапов на VPS.

Итоговый чек-лист

Задача Зачем Готово, если
Обновление системы Закрыть известные уязвимости apt upgrade не предлагает обновлений
Пользователь с sudo Не работать под root Вход под новым пользователем работает
SSH-ключ, запрет паролей Защита от подбора Вход по паролю отклоняется
UFW и fail2ban Закрыть лишние порты ufw status показывает только 22, 80, 443
nginx, PHP, MariaDB Работа сайта Тестовая страница открывается
SSL HTTPS и доверие браузеров Сайт открывается по https без предупреждений
Бэкапы Восстановление после сбоя Копия проверена восстановлением

Совет: записывайте всё, что делаете на сервере, в простой текстовый файл — команды, пути, пароли храните в менеджере паролей. Через полгода это сэкономит часы, а при передаче сервера другому специалисту станет готовой документацией.

Чек-лист настройки сервера

Частые вопросы

Какую версию Ubuntu выбрать?

Выбирайте последнюю LTS-версию, которую поддерживает ваша CMS и провайдер. LTS-выпуски получают обновления безопасности годами, промежуточные версии — около девяти месяцев.

Может, проще поставить панель управления?

Панель упрощает рутину: создание сайтов, баз, сертификатов. Но базовую безопасность — ключи, firewall, обновления — всё равно стоит настроить вручную. Сравнение панелей — в статье Панель управления сервером.

Нужно ли менять порт SSH?

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

Сколько ресурсов съедает сама система?

Ubuntu Server без графики с nginx, PHP-FPM и MariaDB в простое занимает несколько сотен мегабайт памяти. Основное потребление — процессы PHP и база при работе сайта.

Итог

Базовая настройка VPS — это обновления, отдельный пользователь, SSH-ключи, firewall, веб-сервер с PHP и базой, SSL и бэкапы. Выполнив эти шаги, вы получите безопасную основу для сайта. Если не хотите разбираться сами — поможем подобрать и настроить сервер под ключ: смотрите услугу аренда сервера и хостинга.

В статье есть партнёрские ссылки: если вы зарегистрируетесь по ним, студия получит вознаграждение, для вас цена не меняется.

Читать дальше

Статьи по теме

Начать проект

Давайте сделаем крутой проект вместе

Расскажите о задаче — мы бесплатно проанализируем нишу, предложим решение и назовём сроки со стоимостью. Без навязчивых звонков.

Телефон

8 (926) 837 76 68

Почта

info@pear-advert.ru

Офис

Москва, ул. Гиляровского, 57с1

Оставьте заявку

Ответим в течение рабочего дня

Выберите тип проекта

Данные используются только для ответа на заявку и хранятся не дольше трёх лет.