Как настроить VPS с нуля на Ubuntu 24.04: полная инструкция для начинающих
Пошаговая инструкция: первый вход по SSH, создание пользователя, настройка UFW-фаервола, установка Nginx, SSL-сертификат.

- IP-адрес VPS — провайдер выдаёт его сразу после создания сервера.
- Пароль root — приходит на email или указывается при создании.
- Терминал — на macOS/Linux он встроен. На Windows: PowerShell, Windows Terminal или PuTTY.
- Домен — нужен только для шага с SSL. Если домена нет — пропустите шаги 6–7 или используйте IP.
При первом подключении терминал спросит подтвердить отпечаток сервера — введитеКоманда · bashssh root@IP_ВАШЕГО_СЕРВЕРА # Например: ssh root@185.22.63.101
yes. Затем введите пароль root.
Windows: SSH встроен в PowerShell начиная с Windows 10. Просто откройте PowerShell и выполните ту же команду. Если не работает — установите PuTTY или Windows Terminal из Microsoft Store.
После успешного входа вы увидите приглашение командной строки: root@vps-hostname:~# — это значит, вы на сервере с правами root.
2. Обновление системы
Сразу после входа обновите список пакетов и установите свежие версии. Это закрывает известные уязвимости безопасности.
Команда обновит список репозиториев (Команда · bashapt update && apt upgrade -y
apt update), установит все доступные обновления (apt upgrade -y). Флаг -y автоматически подтверждает все вопросы.
Процесс занимает 1–3 минуты. После завершения установите несколько полезных утилит:
3. Создание пользователя Работать постоянно от root — плохая практика: одна ошибка может сломать всю систему. Создайте обычного пользователя и дайте ему права sudo (выполнять команды от имени администратора).Команда · bashapt install -y curl wget git htop nano ufw fail2ban # curl/wget — загрузка файлов # git — для работы с репозиториями # htop — мониторинг ресурсов # nano — удобный текстовый редактор # ufw — фаервол # fail2ban — защита от перебора паролей
Проверьте что пользователь создан и имеет права sudo:Команда · bash# Создаём пользователя (замените 'myuser' на своё имя) adduser myuser # Система спросит пароль и дополнительные данные # Остальные поля можно пропустить нажав Enter # Добавляем пользователя в группу sudo usermod -aG sudo myuser
4. SSH-ключи и безопасный вход Вход по паролю небезопасен — боты постоянно пытаются подобрать пароли к серверам. Вход по SSH-ключу гораздо надёжнее. Генерация ключа (на вашем компьютере, не на сервере):Команда · bashsu - myuser sudo whoami # Должен вывести: root exit # Возвращаемся к root
После этого появятся два файла: ~/.ssh/id_ed25519 (приватный ключ — никому не давать) и ~/.ssh/id_ed25519.pub (публичный ключ — его копируем на сервер). Копирование ключа на сервер:Команда · bashssh-keygen -t ed25519 -C "your@email.com" # Нажмите Enter для пути по умолчанию (~/.ssh/id_ed25519) # Можете добавить passphrase или оставить пустым
На Windows или еслиКоманда · bashssh-copy-id myuser@IP_СЕРВЕРА # Введёт пароль пользователя один раз и скопирует ключ
ssh-copy-id недоступна — вручную:
Важно: проверьте что вход по ключу работает — откройте новый терминал, выполнитеКоманда · bash# На сервере, от имени myuser: mkdir -p ~/.ssh && chmod 700 ~/.ssh nano ~/.ssh/authorized_keys # Вставьте содержимое файла id_ed25519.pub # Ctrl+X, Y, Enter — сохранить и выйти chmod 600 ~/.ssh/authorized_keys
ssh myuser@IP_СЕРВЕРА. Вошли без пароля — только тогда отключайте парольный вход. Иначе заблокируете себя.
Отключение входа по паролю и root-доступа:
Найдите и измените (или добавьте) следующие строки:Команда · bashnano /etc/ssh/sshd_config
Сохраните файл (Ctrl+X, Y, Enter) и перезапустите SSH:Команда · bashPermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes
Проверка: откройте новый терминал и попробуйте войти:Команда · bashsystemctl restart sshd
ssh myuser@IP_СЕРВЕРА. Должны войти по ключу без пароля. Попытка войти от root должна быть отклонена.
5. Настройка фаервола UFW
UFW (Uncomplicated Firewall) — простой в настройке фаервол для Ubuntu. По умолчанию он закрывает все входящие соединения, кроме тех, что мы явно разрешили.
Критически важно: перед включением UFW обязательно разрешите SSH (порт 22), иначе заблокируете себя, потеряете доступ к серверу.
Вывод должен выглядеть примерно так:Команда · bash# Запрещаем все входящие соединения по умолчанию ufw default deny incoming # Разрешаем все исходящие ufw default allow outgoing # ОБЯЗАТЕЛЬНО: разрешаем SSH ufw allow OpenSSH # Разрешаем HTTP и HTTPS (если нужен веб-сервер) ufw allow 'Nginx Full' # Включаем фаервол ufw enable # Ответьте y на вопрос о подтверждении # Проверяем статус ufw status verbose
Если на сервере работает что-то ещё, то добавляйте правила по необходимости:Команда · bashStatus: active To Action From -- ------ ---- OpenSSH ALLOW IN Anywhere Nginx Full ALLOW IN Anywhere
ufw allow 3000 (Node.js), ufw allow 5432 (PostgreSQL, только для локального — лучше не открывать наружу).
6. Установка Nginx
Nginx — быстрый и лёгкий веб-сервер. Подходит как для раздачи статических файлов, так и в роли reverse proxy перед Node.js, Python или PHP-приложением.
Откройте браузер и перейдите по IP вашего сервера — должна открыться страница «Welcome to nginx!». Это значит всё работает. Настройка виртуального хоста для домена (заменитеКоманда · bash# Устанавливаем Nginx apt install nginx -y # Запускаем и добавляем в автозагрузку systemctl start nginx systemctl enable nginx # Проверяем статус systemctl status nginx
example.ru на свой домен):
Содержимое файла:Команда · bashnano /etc/nginx/sites-available/example.ru
Применяем конфигурацию:Команда · bashserver { listen 80; server_name example.ru www.example.ru; root /var/www/example.ru; index index.html index.php; location / { try_files $uri $uri/ =404; } }
7. SSL-сертификат (Let's Encrypt) Let's Encrypt выдаёт бесплатные SSL-сертификаты. Certbot — официальный клиент для получения и автоматического обновления сертификатов. Требование: перед этим шагом домен должен быть направлен на IP вашего сервера через DNS A-запись. Данное требование можно проверить используя Certbot.Команда · bash# Создаём папку для сайта mkdir -p /var/www/example.ru echo "<h1>Работает!</h1>" > /var/www/example.ru/index.html # Активируем конфиг ln -s /etc/nginx/sites-available/example.ru /etc/nginx/sites-enabled/ # Проверяем синтаксис nginx -t # Перезагружаем Nginx systemctl reload nginx
Certbot автоматически изменит конфигурацию Nginx и настроит HTTPS. Проверьте что работает:Команда · bash# Устанавливаем Certbot apt install certbot python3-certbot-nginx -y # Получаем сертификат (замените домен) certbot --nginx -d example.ru -d www.example.ru # Certbot спросит email и попросит принять условия # Выберите вариант с автоматическим редиректом HTTP → HTTPS
Certbot автоматически добавляет задание в cron или systemd timers — до истечения срока сертификат будет обновляться самостоятельно. 8. Базовый мониторинг Несколько команд, которые пригодятся для диагностики:Команда · bash# Проверяем автообновление сертификата certbot renew --dry-run # Должно вывести: Congratulations, all simulated renewals succeeded
Для постоянного мониторинга рассмотрите: Netdata (лёгкий, устанавливается одной командой), Grafana + Prometheus (для серьёзных проектов), или мониторинг от провайдера (Selectel, VK Cloud, Yandex Cloud имеют встроенные дашборды). Итоговый чеклист настройкиКоманда · bash# Нагрузка на CPU и RAM (интерактивно) htop # Использование диска df -h # Использование RAM free -h # Последние входы на сервер last -n 20 # Логи Nginx (ошибки) tail -f /var/log/nginx/error.log # Логи системы journalctl -xe # Открытые порты ss -tlnp
- Первый вход по SSH и проверка доступа.
- Система обновлена, базовые утилиты установлены.
- Создан пользователь с sudo-правами.
- Настроены SSH-ключи, вход по паролю отключён.
- Root-вход по SSH отключён.
- Фаервол UFW настроен, лишние порты закрыты.
- Nginx установлен и запущен.
- Виртуальный хост для домена настроен.
- SSL-сертификат получен, HTTPS работает.
- Автообновление сертификата настроено.
passwd root.
Что делать если UFW заблокировал SSH? Войдите через аварийную консоль провайдера (VNC/KVM). Выполните:
ufw disable,
затем проверьте правила ufw status verbose, добавьте ufw allow OpenSSH и снова включите ufw enable. Именно для таких случаев важно иметь доступ к консоли провайдера.
Как подключиться к VPS по SSH с Windows? В Windows 10/11 SSH встроен в PowerShell и CMD — просто откройте терминал и выполните ssh root@IP_СЕРВЕРА. Альтернативы: PuTTY (графический клиент), Windows Terminal из Microsoft Store, или WSL (Linux-подсистема Windows).
Как изменить порт SSH с 22 на другой? Откройте /etc/ssh/sshd_config и измените или добавьте строку Port 2222 (любой порт от 1024 до 65535). Добавьте новый порт в UFW: ufw allow 2222/tcp. Перезапустите sshd: systemctl restart sshd. Не закрывайте текущую сессию — проверьте подключение в новом терминале командой ssh -p 2222 myuser@IP.
Fail2ban уже установлен — нужно ли его настраивать? Базовая конфигурация работает из коробки и уже защищает SSH. Для более тонкой настройки отредактируйте /etc/fail2ban/jail.local — там можно изменить количество попыток до бана и время блокировки. Проверить статус: fail2ban-client status sshd.Нужна помощь с выбором?
Откройте каталог и сравните провайдеров по параметрам, важным для вашего проекта




