ServerAID
Найти гайд, команду, тег… ⌘ K
Серверный стек

Серверный стек на Ubuntu: nginx, БД, Docker

Этот раздел про инфраструктуру, на которой живёт типичное веб-приложение: фронт-прокси, база данных, контейнеры, кэш. Здесь карта стека и порядок, в котором его обычно поднимают на Ubuntu Server.

Из чего собирается типовой стек

Веб-приложение на Ubuntu обычно живёт в одной из двух топологий: либо «всё на хосте» (nginx + сервис + БД на одной машине), либо «контейнеры под Compose» (nginx-прокси хоста + Compose-стек с приложением и БД). Базовый набор компонентов один:

  • Фронт-прокси: nginx терминирует HTTPS, отдаёт статику, проксирует динамику.
  • Приложение: бэкенд-сервис (Python/Node/Go/.NET/PHP) под systemd или в контейнере.
  • База данных: PostgreSQL или MySQL — обычно отдельным контейнером или нативным сервисом.
  • Кэш и очереди: Redis / RabbitMQ для тяжёлых сценариев.

Каждый компонент имеет свой раздел в гайде.

nginx как reverse proxy

nginx — стандартный фронт для любого приложения: терминирует SSL (через certbot), отдаёт статику быстро, проксирует динамические запросы на upstream. Настройка proxy_pass, заголовков, кэширования и WebSocket — в nginx reverse proxy на Ubuntu.

Docker Compose: стек одной командой

Compose описывает многосервисный стек в одном YAML и поднимает его одной командой. Подходит для приложений из 2-10 контейнеров, для типичной связки «бэкенд + БД + Redis». Установка Docker + Compose, базовый docker-compose.yml и production-практики — в Docker Compose на Ubuntu.

База данных: PostgreSQL или MySQL

Для приложения на одну машину БД ставят либо нативно (apt install postgresql), либо в Compose-контейнер с volume под /var/lib/postgresql/data. Бэкапы делаются через pg_dump/mysqldump плюс файловую копию /var/lib/... после остановки. Регулярный дамп складывается в объектное хранилище через rsync.

HTTPS и сертификаты

Любой публичный фронт-сервис должен ходить только по HTTPS. На Ubuntu это делается через certbot + Let's Encrypt с автообновлением. См. Let's Encrypt и certbot на Ubuntu.

Безопасность стека

UFW закрывает всё, кроме 80/443 и SSH. Контейнеры публикуют порты только нужные. См. UFW на Ubuntu для базовой настройки фаервола и SSH-ключи на Ubuntu для безопасного доступа.

Что запускать через systemd, что — через Compose

Простое правило: если сервис один и без зависимостей — systemd-юнит проще и легче. Если связка из 3+ компонентов с общей сетью и volumes — Compose. nginx и БД на хосте остаются под systemd, прикладные сервисы заворачиваются в Compose. Подробнее про systemd — в systemd-юнит и systemctl enable.

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

Compose в проде — это плохо?

Нет, если у вас одна машина и стек до 10 сервисов. Compose стабильный и production-ready. Kubernetes имеет смысл от десятков сервисов с автоскейлом, для одной VPS — оверкилл.

Где терминировать HTTPS — на nginx-хосте или в контейнере?

На nginx-хосте. Так certbot получает прямой доступ к 80 порту для ACME-challenge, и SSL-сертификаты не дублируются по контейнерам.

Какую БД ставить — PostgreSQL или MySQL?

Для нового проекта без специфических ограничений — PostgreSQL: строже к типам, мощнее JSONB, лучше планировщик. MySQL — если приложение уже завязано на него или нужен MySQL-специфичный фичи (вроде master-slave-репликации с минимальными настройками).

Запускать Docker от root опасно?

Доступ к сокету /var/run/docker.sock эквивалентен root-доступу к хосту. Не давайте его недоверенным пользователям и не пробрасывайте сокет в публичные контейнеры.

Что запомнить

  • nginx — фронт-прокси по умолчанию: HTTPS, статика, proxy_pass.
  • Compose — для связок 2-10 сервисов; одиночные сервисы — systemd.
  • БД на хосте или в Compose, главное — внешний бэкап через pg_dump + rsync.
  • HTTPS обязательно через certbot, никакой публичный 80 порт без редиректа.
  • UFW закрывает всё, кроме 80/443 и SSH; контейнеры публикуют порты явно.
  • Docker-сокет — это root, не давайте его никому, кому не доверяете.

Похожие материалы

Серверный стек

docker compose на Ubuntu 24.04: установка и рабочий compose.yaml

docker compose v2 — официальный плагин Docker для запуска многоконтейнерных приложений одним конфигом. Разбираем установку через официальный репозиторий Docker на Ubuntu 24.04 LTS, базовый `compose.yaml` с volumes и healthcheck, рестарт-политики, профили и запуск compose-стека как systemd-сервиса.

Редакция
Серверный стек

nginx reverse proxy на Ubuntu: рабочий конфиг с заголовками и SSL

Reverse proxy — фронт, который принимает запросы из интернета и передаёт их вашему Node.js, Python или Docker-контейнеру. Разбираем `proxy_pass`, правильные заголовки `X-Forwarded-For` и `Host`, балансировку через `upstream`, прокси к Docker, WebSocket-апгрейд и SSL termination через certbot. Конфиги под Ubuntu 24.04 LTS.

Редакция
Хранилище в Ubuntu: разметка, файловые системы, снапшоты
Файловые системы

Хранилище в Ubuntu: разметка, файловые системы, снапшоты

Этот раздел про дисковый стек Ubuntu: как разметить диск, на каких слоях живут LVM и btrfs, чем снапшоты лучше копий, что писать в fstab. Карта раздела с переходами на детальные гайды.

Михаил Орлов
Ubuntu Desktop: GNOME, Wayland, драйверы
Рабочий стол

Ubuntu Desktop: GNOME, Wayland, драйверы

Этот раздел про обычный Ubuntu — тот, что стоит на ноутбуке или рабочей станции, а не на сервере. GNOME как оболочка, Wayland против Xorg, проприетарные драйверы NVIDIA, Bluetooth, аудио. Карта раздела с переходами на детальные гайды.

Ольга Воронова