Настройка VPS Ubuntu и Debian: порты, пакеты, окружение
Настройка VPS Ubuntu и Debian проверяется простой перезагрузкой. Сайт открылся на новом сервере, а после перезагрузки перестал отвечать, ведь веб-сервер не был добавлен в автозапуск. Проверка после каждого шага настройки помогает обнаружить такую ошибку до того, как сервер понадобится в работе.
Статья рассчитана на новый VPS с Ubuntu 24.04 LTS или Debian 13. На нём будет работать веб-сервер Nginx. Нужен чистый образ без панели управления, Docker и своих сетевых правил.
Какие пакеты установить в первую очередь на Ubuntu или Debian VPS?
Для первоначальной настройки хватит SSH-сервера, sudo для работы администратора, ca-certificates для проверки сертификатов и curl для проверки веб-сервиса. Сетевой экран UFW пригодится, если правила доступа ещё не настроены другим инструментом. Состав образа у провайдеров различается, поэтому часть этих пакетов может уже стоять.
Как выбрать образ под свою задачу
До заказа VPS стоит проверить в документации приложения, какие выпуски ОС и архитектуры оно поддерживает. Готовые программы для amd64 и arm64 различаются, поэтому нужен вариант под процессор вашего сервера.
Ubuntu 24.04 LTS получает стандартные обновления безопасности до мая 2029 года. Условия для отдельных пакетов зависят от раздела репозитория. У Debian 13 полная поддержка заявлена до августа 2028 года. Затем часть пакетов и архитектур продолжит получать исправления безопасности до июня 2030 года. Сроки опубликованы на страницах Ubuntu и Debian. В апреле 2026 года вышла Ubuntu 26.04 LTS со стандартной поддержкой до мая 2031, и если собираетесь выбирать её, для нового сервера стоит проверить, поддерживает ли её ваше приложение. Пример ниже собран на 24.04, потому что под неё чаще готовы сторонние репозитории.
Как установить Ubuntu на VPS, решает панель провайдера, так как новый сервер создаётся из готового образа. Переустановка может удалить данные работающего сервера, поэтому мы берём пустой VPS. После первого входа две команды покажут ОС и архитектуру:
cat /etc/os-release
dpkg --print-architecture
Название образа, версия ОС, архитектура и дата создания пригодятся при восстановлении.
Доступ по SSH и права администратора
Настройка VPS сервера на Ubuntu начинается с доступа: без рабочего SSH остальные шаги проверить нечем. SSH даёт доступ к командной строке сервера. Имя пользователя и адрес выдаёт провайдер. В примерах ниже USER и SERVER_IP нужно заменить своими значениями. Команда для подключения выполняется на вашем компьютере, а остальные команды – на VPS, если не указано иное:
ssh USER@SERVER_IP
Если SSH использует нестандартный порт, к команде нужен параметр -p с его номером. При первом входе клиент покажет отпечаток ключа сервера. Его нужно сверить через панель провайдера или аварийную консоль. Если отпечатка в панели нет, консольная команда ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub покажет отпечаток ключа Ed25519. В клиенте для сравнения должен быть выбран тот же тип ключа.
Для установки пакетов обычному пользователю нужны права администратора. Команда sudo -l покажет разрешённые действия. На новом VPS у администратора обычно есть разрешение ALL на запуск любых команд. Если провайдер выдал только root, отдельного администратора можно создать с помощью этих команд:
apt update
apt install sudo
adduser admin
usermod -aG sudo admin
Если SSH-ключей ещё нет, создайте пару на своём компьютере: ssh-keygen -t ed25519. Закрытый ключ остаётся у вас. Открытый ключ из файла с расширением .pub нужно добавить в ~/.ssh/authorized_keys выбранного пользователя на VPS. Знак ~ означает его домашний каталог. При доступном входе по паролю утилита ssh-copy-id USER@SERVER_IP перенесёт ключ с компьютера автоматически. Если её нет, ключ можно добавить вручную через консоль. У каталога ~/.ssh должны быть права 700, у файла – 600, владельцем должен быть выбранный пользователь.
Для проверки входа по ключу откройте на компьютере новый терминал:
ssh -S none -o PreferredAuthentications=publickey USER@SERVER_IP
Эта команда создаёт отдельное соединение и проверяет именно ключ. Если при входе спросят парольную фразу, это фраза от самого ключа, а не пароль пользователя на сервере. После входа sudo -l должен показать прежние права. Старый сеанс пока оставьте открытым, а аварийная консоль поможет исправить ошибку, если SSH станет недоступен.
Откуда система получает пакеты
APT устанавливает программы из репозиториев – источников пакетов для выбранной ОС. Их адреса обычно уже есть в образе. Файл с настройками в Ubuntu 24.04 можно прочитать так:
cat /etc/apt/sources.list.d/ubuntu.sources
В Debian 13 часто используется файл debian.sources:
cat /etc/apt/sources.list.d/debian.sources
Если файла нет, команда ls /etc/apt/sources.list.d/ покажет другие имена. Образ провайдера также может хранить источники в старом формате /etc/apt/sources.list.
В записях Ubuntu 24.04 ожидается кодовое имя noble, у Debian 13 – trixie. Суффикс -security обозначает обновления безопасности. Замена кодового имени подключит пакеты другого релиза и может нарушить работу системы при обновлении.
После проверки источников обновление выполняется одинаково в обеих системах:
sudo apt update
sudo apt upgrade
Первая обновляет сведения о пакетах, вторая устанавливает доступные обновления. После успешного apt update команда apt-cache policy покажет источники и их приоритеты. Если APT сообщает об ошибке подписи или недоступном источнике, сначала нужно устранить её. Проверку подписей отключать нельзя, без неё APT не проверит подлинность пакетов.
Для примера хватит штатных репозиториев. Адрес стороннего источника и его ключ берите только из документации того, кто его выпускает, и только в разделе для вашей ОС. PPA собирают под конкретный выпуск Ubuntu: на Debian такие пакеты могут не встать или потянуть за собой чужие зависимости, хотя APT в обеих системах одинаковый.
Какие программы нужны для начала
Для нашей страницы не нужны ни графическая оболочка, ни база данных. Перед установкой Nginx добавим три вспомогательных пакета:
sudo apt install ca-certificates curl ufw
dpkg-query -W ca-certificates curl ufw
Пакет ca-certificates содержит доверенные корневые сертификаты, они нужны программам для проверки HTTPS-соединений. curl поможет отправить запрос к сайту из терминала. UFW управляет сетевыми правилами, его настройкой займёмся до установки Nginx, поскольку пакет веб-сервера может сразу запустить службу.
Вторая команда выводит версии пакетов. Её результат пригодится для сравнения после обновления.
Утилиты вроде htop для просмотра процессов можно добавить позже. Здесь нужна команда ss, а если её нет, поможет sudo apt install iproute2.
Какие порты открыть
Чтобы сервис был доступен извне, программа должна принимать соединения на нужном порту, а сетевой экран – пропускать их. Разрешение в UFW само по себе ничего не запускает. Команда sudo ss -lntp показывает программы, которые ждут TCP-соединений, и адреса, на которых они доступны.
Адрес 127.0.0.1 означает доступ только внутри VPS, 0.0.0.0 – все локальные IPv4-адреса, [::] – все локальные IPv6-адреса. У SSH нужно проверить номер порта. Ниже используется стандартный 22, если у вас другой, замените его до выполнения команд.
Как открыть порт и не выставить лишние сервисы наружу?
Понять, как открыть порт на VPS сервере Ubuntu, помогает разделение на два слоя: программа должна принимать соединения, а сетевой экран – пропускать их. Поэтому в экране оставляют разрешения только для используемых портов, а остальные входящие запрещают по умолчанию. Исключение – отдельный сетевой экран провайдера, там доступ нужно разрешить ещё раз.
Перед включением правил разрешите текущий порт SSH и подготовьте аварийную консоль. В примере UFW будет единственным инструментом управления правилами внутри VPS. На сервер с уже настроенными nftables, Docker или панелью управления этот набор команд без проверки переносить нельзя. Порядок для чистой машины:
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw enable
sudo ufw status verbose
Порт 80 предназначен для тестовой страницы по HTTP. Статус UFW должен быть active, а в списке разрешений – порты SSH и HTTP. При включённом IPv6 нужны и соответствующие правила с пометкой v6. Настройка VPS Debian на этом шаге не отличается: UFW ставится из тех же репозиториев, и команды совпадают. Подробнее о правилах – в руководстве UFW.
Теперь повторите проверочный вход с параметром -S none. Старый сеанс продолжит работать, даже если правило закрыло порт, поэтому проверять нужно новым подключением. Сайт проверим после запуска Nginx.
Время, язык и файлы приложения
Если часы сервера спешат или отстают, программы могут отвергать действующие сертификаты. При разных часовых поясах на серверах труднее сопоставлять события в журналах. Время и синхронизацию покажет timedatectl status, имя машины – hostnamectl status.
Единый часовой пояс UTC задаётся командой sudo timedatectl set-timezone UTC. Она меняет часовой пояс, не настраивая синхронизацию. Если синхронизации нет, нужно проверить службу времени образа: например, systemd-timesyncd или chrony.
Локаль задаёт язык сообщений, формат дат и чисел. Команда locale покажет её настройки, locale -a – доступные варианты. Рабочую C.UTF-8 можно оставить.
Команда export меняет окружение только текущей оболочки, а системная служба под управлением systemd стартует со своим набором переменных. Задают его директивами Environment и EnvironmentFile в юните службы. Пароли и токены в командную строку не вписывают, так как строка запуска видна в выводе ps любому пользователю системы и оседает в истории оболочки. Секреты выносят в отдельный файл, который читает приложение или сам юнит через EnvironmentFile, с правами 600 и владельцем – учётной записью приложения.
Какие шаги настройки отличаются в Ubuntu и Debian?
1. Источники пакетов: у релизов разные кодовые имена и адреса репозиториев; чужие записи APT переносить нельзя.
2. Версии программ: нужный пакет или способ его настройки может отличаться, поэтому инструкция должна соответствовать выбранному выпуску.
3. Состав образа: начальная учётная запись, наличие sudo, служба времени и сетевые настройки зависят также от провайдера.
Запуск Nginx и проверка перезагрузки
Пакет Nginx содержит готовую службу. Системный менеджер systemd запустит её сейчас и при следующей загрузке VPS:
sudo apt install nginx
dpkg-query -W nginx
sudo nginx -t
sudo systemctl enable --now nginx
Команда nginx -t проверяет конфигурацию. При ошибке запускать следующие команды рано: в сообщении обычно указаны файл и строка, требующие внимания. Ключ --now запускает службу сразу, enable включает её автозапуск.
В стандартной конфигурации пакета файлы сайта лежат в /var/www/html. Этот путь указан в параметре root файла /etc/nginx/sites-enabled/default. Перед созданием страницы его стоит сверить. При другом каталоге сайта путь в командах ниже нужно заменить. Мы добавим отдельный файл с коротким текстом:
printf 'vps-ok\n' | sudo tee /var/www/html/health.txt
sudo chown root:root /var/www/html/health.txt
sudo chmod 644 /var/www/html/health.txt
curl --fail --show-error http://127.0.0.1/health.txt
для статической страницы, рабочим процессам Nginx не требуется право менять её. Ожидаемый ответ на запрос – vps-ok.
Теперь можно перезапустить Nginx и посмотреть, вернулся ли он к работе:
sudo systemctl restart nginx
systemctl status nginx --no-pager
sudo journalctl -u nginx -n 30 --no-pager
Статус active (running) подтверждает, что служба работает. Журнал помогает найти ошибки запуска. Ошибки обработки запросов ищите в /var/log/nginx/error.log. После перезапуска нужен тот же запрос curl. Затем команда sudo reboot перезагрузит VPS и разорвёт SSH-сеанс. После загрузки должны снова работать вход по SSH и запрос к странице, ожидаемый статус Nginx – active (running).
Обновления и короткая проверка сайта
Если локальный запрос вернул vps-ok, Nginx отдаёт файл. Проверка с вашего компьютера покажет, доступен ли он через интернет. В команде нужен внешний IPv4-адрес сервера:
curl --fail --show-error --max-time 10 http://SERVER_IP/health.txt
Ожидается тот же текст vps-ok. Если снаружи ответа нет, стоит проверить адрес, порт в ss, правила UFW и сетевой экран провайдера, если он есть. Для доступа по IPv6 нужна отдельная проверка, так как запрос по IPv4 его не проверяет.
Эта тестовая страница работает по HTTP без шифрования. Перед публикацией сайта с авторизацией или личными данными нужны домен, сертификат и настройка HTTPS. После этого нужен доступ к порту 443 и запрос по имени сайта с проверкой сертификата.
Обновления лучше назначать на время, когда допустим короткий перезапуск. До обновления сохраняйте /etc/nginx и файлы сайта вне VPS. В копию стоит включить настройки UFW, список репозиториев и версии из dpkg-query -W. Секретные файлы в такой копии тоже требуют защиты. Базу данных, если она есть, копируют её собственными средствами резервного копирования.
После обновления повторяется уже знакомая проверка: nginx -t, состояние службы, новое соединение по SSH и запрос к странице с компьютера. Время запуска автоматических обновлений покажет systemctl list-timers --all. Настройки установленного unattended-upgrades находятся в /etc/apt/apt.conf.d/. История операций APT хранится в /var/log/apt/history.log. Пришедшие обновления ядра могут потребовать перезагрузки, это стоит учитывать на сервере с работающими приложениями.
В инструкции восстановления стоит указать версию образа, источники пакетов и расположение копий конфигурации. Рядом запишите, как подключиться к серверу после восстановления: пользователь, адрес, порт и место хранения ключа. Сам закрытый ключ должен оставаться в защищённом хранилище.
Пробное восстановление на отдельном VPS покажет, хватает ли сохранённых файлов и записей. После перезагрузки должны работать SSH и страница сайта, а правила сетевого экрана – совпадать с исходными. Успешный результат подтвердит, что настройку можно повторить.
Хорошая настройка VPS Ubuntu – та, которую можно повторить на чистом образе и проверить тем же smoke test после обновления. Если после переустановки из того же образа сервер отвечает на SSH, тестовая страница отдаёт условный vps-ok, а правила сетевого экрана совпадают с записанными, окружение воспроизводимо. Всё, что нельзя повторить по своей же инструкции, при следующем сбое придётся собирать заново и по памяти.














