Удельта

Пошаговая инструкция · Самостоятельная установка

Как подготовить Ubuntu 26.04 к установке системы на сервер

Подготовим сервер для установки приложения: проверим доступ, создадим пользователя, настроим сеть и добавим нужные инструменты. Docker, Nginx и Certbot устанавливайте по требованиям выбранной системы.

Что подготовить и как читать инструкцию #

Подготовим чистый Ubuntu Server 26.04 LTS перед установкой приложения. Нужны IP сервера, имя пользователя с sudo и SSH-ключ или начальный пароль от провайдера. Здесь не устанавливается само приложение; после проверки вернитесь к его статье.

Основные шаги нужны всем сценариям. Docker устанавливайте для статьи с контейнерами. Nginx и Certbot из последних шагов нужны, когда HTTPS обслуживает веб-сервер на хосте, в том числе перед Gitea и Uptime Kuma. Nextcloud, Jitsi и Zulip настраивают Nginx в собственных шагах; Mailu, mailcow и ONLYOFFICE содержат свой Nginx и управление сертификатами. Для Proxmox, VPN, телефонии, RustDesk и Restic дополнительный веб-сервер не требуется. На одних портах 80/443 должен работать один внешний веб-сервер.

Команды выполняйте в терминале сервера после подключения по SSH, если шаг не указывает другое место. sudo даёт команде права администратора. Действия в браузере выполняйте на своём компьютере. Домены, IP-адреса и значения ВАШ_ПАРОЛЬ из примеров заменяйте своими до выполнения команды.

Двигайтесь по одному шагу и проверяйте результат перед следующим. Блок с <<EOF или другим именем завершения копируйте целиком: он записывает содержимое одного файла. При работе в nano сохраняйте файл клавишами Ctrl+O, Enter и выходите Ctrl+X. Если прервали SSH-сеанс, снова перейдите в указанный каталог; переменные предыдущего сеанса потребуется задать заново.

Шаг 1. Подключитесь к серверу #

На своём компьютере откройте Terminal или PowerShell. Замените ubuntu именем пользователя от провайдера, 203.0.113.10 — IP сервера. Если ключ имеет другое имя, используйте ssh -i /путь/к/ключу пользователь@IP. При первом входе сверяйте отпечаток с данными провайдера.

Подключитесь к серверу
ssh ubuntu@203.0.113.10

Открылось приглашение командной строки сервера. Пароль sudo вводится без отображения символов — это нормально.

Шаг 2. Проверьте ОС и архитектуру #

Теперь команды относятся серверу. /etc/os-release сообщает выпуск Ubuntu, uname — архитектуру процессора. Официальная инструкция приложения может требовать другую ОС; такие исключения названы в ней.

Проверьте ОС и архитектуру
cat /etc/os-release
uname -m

ОС соответствует выбранной статье; x86_64 означает amd64, aarch64 — ARM64.

Шаг 3. Проверьте диск и память #

df показывает занятые файловые системы, free — память. Сравните место и RAM с требованиями своей системы. Свободное место системного раздела не заменяет место на отдельном диске данных.

Проверьте диск и память
df -h
free -h

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

Шаг 4. Проверьте синхронизацию времени #

Правильное время нужно сертификатам, журналам и токенам входа. При выключенной синхронизации включите её командой sudo timedatectl set-ntp true и повторите проверку.

Проверьте синхронизацию времени
timedatectl status

System clock synchronized показывает yes.

Шаг 5. Обновите список пакетов #

apt update получает информацию о доступных версиях, но ещё не меняет установленные программы.

Обновите список пакетов
sudo apt update

Нет ошибки репозитория или проверки подписи.

Шаг 6. Установите обновления Ubuntu #

Команда обновляет уже установленные пакеты. Этот сценарий относится новому серверу; при обновлении рабочего сервера нужны его собственные правила обслуживания.

Установите обновления Ubuntu
sudo apt upgrade -y

Обновление завершилось без ошибок.

Шаг 7. Добавьте базовые инструменты #

curl скачивает файлы, Git — исходники, openssl создаёт случайные секреты, nano редактирует текст, UFW управляет сетевыми правилами. Остальные инструменты используются в статьях серии.

Добавьте базовые инструменты
sudo apt install -y ca-certificates curl gnupg git openssl jq ufw nano python3

Пакеты установлены успешно.

Шаг 8. Проверьте необходимость перезагрузки #

Если команда ниже вывела требование перезагрузки, выполните sudo reboot. SSH отключится; подождите загрузку и снова подключитесь с компьютера командой шага 1. Если вывода нет, перезагрузка сейчас не требуется.

Проверьте необходимость перезагрузки
test ! -f /var/run/reboot-required || cat /var/run/reboot-required

После нужной перезагрузки SSH снова работает.

Шаг 9. Сохраните SSH-доступ в firewall #

До включения UFW разрешаем SSH. Профиль OpenSSH подразумевает стандартный 22; если порт изменён, вместо него разрешите настоящий порт через sudo ufw allow НОМЕР/tcp.

Сохраните SSH-доступ в firewall
sudo ufw allow OpenSSH

Ваш SSH-порт разрешён; текущее соединение пока не закрывайте.

Шаг 10. Разрешите порты веб-приложения #

Для HTTP/HTTPS нужны TCP 80/443. Эти же порты разрешите в панели провайдера. Asterisk, VPN и другие специальные службы потребуют дополнительных правил из своей статьи.

Разрешите порты веб-приложения
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Разрешены только нужные вам порты, не порты базы данных.

Шаг 11. Включите и проверьте UFW #

Подтвердите включение клавишей y. Оставьте текущее соединение открытым и проверьте новый SSH-вход во втором окне компьютера.

Включите и проверьте UFW
sudo ufw enable
sudo ufw status verbose

UFW active; второй вход работает. Если нет, исправьте правила через первое соединение или консоль провайдера.

Шаг 12. Направьте домен на сервер #

В панели домена создайте A-запись имени приложения с публичным IPv4. Ниже app.example.com — пример; замените его своим. AAAA добавляйте только при работающем IPv6.

Направьте домен на сервер
getent ahostsv4 app.example.com

Проверка имени возвращает публичный IP сервера. Иначе исправьте запись и дождитесь её обновления.

Шаг 13. Добавьте ключ репозитория Docker при необходимости #

Дальше до тестового hello-world выполняйте шаги только для статьи с Docker. Подпись позволяет apt проверять пакеты официального источника. Docker Desktop на сервере не нужен.

Добавьте ключ репозитория Docker при необходимости
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Файл docker.asc скачан без ошибки; он доступен для чтения apt.

Шаг 14. Подключите официальный репозиторий #

Блок записывает docker.sources и автоматически выбирает кодовое имя установленной Ubuntu и архитектуру. Копируйте весь блок до завершающего EOF.

Подключите официальный репозиторий
sudo tee /etc/apt/sources.list.d/docker.sources >/dev/null <<EOF
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF

Файл источника создан для вашей ОС.

Шаг 15. Установите Docker Engine и Compose #

Обновим список после нового репозитория и установим Engine с Compose plugin. Engine запускает контейнеры, Compose описывает согласованный набор сервисов.

Установите Docker Engine и Compose
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Установка завершилась без ошибок.

Шаг 16. Проверьте службу и версии #

Включим Docker при загрузке сервера и проверим клиент/сервер, а затем Compose. Пока команды идут с sudo.

Проверьте службу и версии
sudo systemctl enable --now docker
sudo docker version
sudo docker compose version

docker version показывает Server; compose version возвращает версию.

Шаг 17. Разрешите Docker своему пользователю #

Группа docker даёт широкие права управления сервером. Добавляйте только доверенного пользователя, которым выполняете установку; не выполняйте этот шаг из sudo -i вместо него. Затем выйдите из SSH через exit и подключитесь заново.

Разрешите Docker своему пользователю
sudo usermod -aG docker "$USER"

После нового входа id -nG содержит docker.

Шаг 18. Запустите тестовый контейнер #

Эти команды выполняются после повторного SSH-входа обычным пользователем. Hello-world скачивает маленький образ, печатает проверочное сообщение и удаляется благодаря --rm.

Запустите тестовый контейнер
id -nG
docker version
docker compose version
docker run --rm hello-world

Есть Hello from Docker!; команды работают без sudo.

Шаг 19. Установите Nginx, если он нужен статье #

Этот шаг нужен для веб-приложения с Nginx на хосте. Перед установкой убедитесь через sudo ss -lntp, что 80/443 не занимает другая служба. На чистой Ubuntu установим пакет из репозитория ОС; отдельный сторонний репозиторий не нужен.

Установите Nginx, если он нужен статье
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginx

Nginx установлен и запущен со стартовым сайтом. Если порт занят, сначала разберите схему своей статьи; не останавливайте неизвестную службу.

Шаг 20. Установите Certbot из snap #

Certbot выпускает сертификаты Let’s Encrypt. Используем рекомендованную разработчиком установку через snap: модуль Nginx уже включён. На чистой Ubuntu сначала установим snapd. Если Certbot уже стоит через apt, не смешивайте две установки: используйте инструкции именно своего комплекта приложения либо удалите прежний пакет перед переходом на snap.

Установите Certbot из snap
sudo apt install -y snapd
sudo snap install --classic certbot

Snap сообщил, что certbot установлен. Во всех следующих командах этой серии используется /snap/bin/certbot, поэтому создание дополнительной ссылки в PATH не требуется.

Шаг 21. Проверьте Nginx и Certbot #

Проверим конфигурацию и версии инструментов. Здесь ещё нет приложения и доменного сертификата: сайт и HTTPS будут отдельными шагами в его инструкции. После каждого изменения Nginx сначала выполните nginx -t; reload выполняйте только при успехе.

Проверьте Nginx и Certbot
sudo nginx -t
/snap/bin/certbot --version
sudo systemctl is-active nginx

Nginx сообщает successful и active, Certbot выводит версию. Возвращайтесь к инструкции приложения: сохраните файл сайта, подключите его, затем получите сертификат и проверьте продление.

Шаг 22. Сохраните секреты будущего приложения #

Когда статья попросит случайный секрет, генератор ниже даст 64 hex-символа. Сохраните результат в менеджере паролей и нужном параметре приложения. После создания .env в его каталоге выполните chmod 600 .env; здесь общей папки приложения и общего .env ещё нет.

Сохраните секреты будущего приложения
openssl rand -hex 32

Секрет сохранён; вы знаете, в каком файле конкретной системы он используется.

Если результат шага отличается #

Вернитесь к проверке того шага, на котором появилась ошибка. Первая ошибка в выводе обычно полезнее последних строк: последующие команды могли не получить нужный файл или работающую службу. Не повторяйте установку целиком поверх частично настроенного приложения.

Если страница не открывается, сначала проверьте домен и входящие порты, затем состояние приложения и его журнал. Если сайт открывается, но отдельное действие не работает, проверьте связанные компоненты — обработчик фоновых задач, почту или права пользователя. Официальные источники в конце статьи относятся к выбранному способу установки.

Обсудить установку и настройку

Материал был полезен?

Сообщить об ошибке или задать вопрос редакции

Сообщение увидит редакция. Не указывайте пароли и личные данные. Текст удаляется через 180 дней.

О материале

ИнфраструктураРуководствоЗадача: установитьУровень: практика

Последнее обновление:

Обсуждение

Комментарии проходят подтверждение адреса и проверку редакцией.