Пошаговая инструкция · Самостоятельная установка
Как подготовить 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 statusSystem clock synchronized показывает yes.
Шаг 5. Обновите список пакетов #
apt update получает информацию о доступных версиях, но ещё не меняет установленные программы.
sudo apt updateНет ошибки репозитория или проверки подписи.
Шаг 6. Установите обновления 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.
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-вход во втором окне компьютера.
sudo ufw enable
sudo ufw status verboseUFW active; второй вход работает. Если нет, исправьте правила через первое соединение или консоль провайдера.
Шаг 12. Направьте домен на сервер #
В панели домена создайте A-запись имени приложения с публичным IPv4. Ниже app.example.com — пример; замените его своим. AAAA добавляйте только при работающем IPv6.
getent ahostsv4 app.example.comПроверка имени возвращает публичный IP сервера. Иначе исправьте запись и дождитесь её обновления.
Шаг 13. Добавьте ключ репозитория Docker при необходимости #
Дальше до тестового hello-world выполняйте шаги только для статьи с Docker. Подпись позволяет apt проверять пакеты официального источника. Docker Desktop на сервере не нужен.
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 описывает согласованный набор сервисов.
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 versiondocker version показывает Server; compose version возвращает версию.
Шаг 17. Разрешите Docker своему пользователю #
Группа docker даёт широкие права управления сервером. Добавляйте только доверенного пользователя, которым выполняете установку; не выполняйте этот шаг из sudo -i вместо него. Затем выйдите из SSH через exit и подключитесь заново.
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 установим пакет из репозитория ОС; отдельный сторонний репозиторий не нужен.
sudo apt update
sudo apt install -y nginx
sudo systemctl enable --now nginxNginx установлен и запущен со стартовым сайтом. Если порт занят, сначала разберите схему своей статьи; не останавливайте неизвестную службу.
Шаг 20. Установите Certbot из snap #
Certbot выпускает сертификаты Let’s Encrypt. Используем рекомендованную разработчиком установку через snap: модуль Nginx уже включён. На чистой Ubuntu сначала установим snapd. Если Certbot уже стоит через apt, не смешивайте две установки: используйте инструкции именно своего комплекта приложения либо удалите прежний пакет перед переходом на snap.
snapsudo apt install -y snapd
sudo snap install --classic certbotSnap сообщил, что certbot установлен. Во всех следующих командах этой серии используется /snap/bin/certbot, поэтому создание дополнительной ссылки в PATH не требуется.
Шаг 21. Проверьте Nginx и Certbot #
Проверим конфигурацию и версии инструментов. Здесь ещё нет приложения и доменного сертификата: сайт и HTTPS будут отдельными шагами в его инструкции. После каждого изменения Nginx сначала выполните nginx -t; reload выполняйте только при успехе.
sudo nginx -t
/snap/bin/certbot --version
sudo systemctl is-active nginxNginx сообщает successful и active, Certbot выводит версию. Возвращайтесь к инструкции приложения: сохраните файл сайта, подключите его, затем получите сертификат и проверьте продление.
Шаг 22. Сохраните секреты будущего приложения #
Когда статья попросит случайный секрет, генератор ниже даст 64 hex-символа. Сохраните результат в менеджере паролей и нужном параметре приложения. После создания .env в его каталоге выполните chmod 600 .env; здесь общей папки приложения и общего .env ещё нет.
openssl rand -hex 32Секрет сохранён; вы знаете, в каком файле конкретной системы он используется.
Если результат шага отличается #
Вернитесь к проверке того шага, на котором появилась ошибка. Первая ошибка в выводе обычно полезнее последних строк: последующие команды могли не получить нужный файл или работающую службу. Не повторяйте установку целиком поверх частично настроенного приложения.
Если страница не открывается, сначала проверьте домен и входящие порты, затем состояние приложения и его журнал. Если сайт открывается, но отдельное действие не работает, проверьте связанные компоненты — обработчик фоновых задач, почту или права пользователя. Официальные источники в конце статьи относятся к выбранному способу установки.