50 пунктов~60 мин

Подготовка сервера к продакшну

Пошаговый чеклист настройки Ubuntu VPS для production: безопасность, Docker, Nginx, SSL, бэкапы, мониторинг.

serverproductionubuntusecuritydockernginxssl
0/50
0%

Вы арендовали VPS, получили доступ по SSH. Просто залить код и запустить Docker? Нет. Production-сервер — это экосистема из безопасности, мониторинга, резервных копий и оптимизации. Этот чеклист проведёт вас через каждый шаг.

1

Требования к серверу

Убедитесь, что ваш VPS соответствует минимальным требованиям.

0/5

LTS = 5 лет поддержки и обновлений безопасности. Большинство гайдов и инструкций написаны для Ubuntu.

Для стека NestJS + React + PostgreSQL + Redis нужно минимум 4 GB.

2

Первый вход и обновление системы

Подключение к серверу и установка базовых утилит.

0/3
ssh root@YOUR_SERVER_IP
apt update && apt upgrade -y
apt install -y curl wget git vim htop ufw
3

Настройка Firewall (UFW)

Настраивать firewall нужно ДО того, как вы его включите. Иначе рискуете заблокировать себе доступ.

0/6
sudo ufw default deny incoming
sudo ufw default allow outgoing

Если включить UFW без этого правила — вы потеряете доступ к серверу.

sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable
sudo ufw status numbered

НЕ открывайте PostgreSQL (5432), Redis (6379), pgAdmin (8082) для внешнего доступа. Используйте SSH-туннель.

4

Безопасный доступ по SSH

Создание пользователя, настройка SSH-ключей и отключение root.

0/5

Работать от root — плохая практика. Создайте отдельного пользователя.

adduser username
usermod -aG sudo username

SSH-ключи безопаснее паролей. Скопируйте публичный ключ с локальной машины.

ssh-copy-id username@YOUR_SERVER_IP

В НОВОМ терминале проверьте: ssh username@YOUR_SERVER_IP. Не закрывайте текущую сессию!

# /etc/ssh/sshd_config
PermitRootLogin no
PasswordAuthentication no
sudo systemctl restart sshd
5

Установка Docker

0/6
sudo apt remove docker docker-engine docker.io containerd runc
sudo apt install -y ca-certificates curl gnupg lsb-release
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker $USER
newgrp docker
docker --version
docker compose version
6

Установка и настройка Nginx

0/4
sudo apt install -y nginx
sudo systemctl status nginx
sudo mkdir -p /etc/nginx/sites-available /etc/nginx/sites-enabled /etc/nginx/conf.d
sudo nginx -t
sudo systemctl restart nginx
7

SSL-сертификаты (Let's Encrypt)

Перед получением SSL убедитесь, что DNS записи настроены и домен указывает на сервер.

0/5

Let's Encrypt проверяет DNS при выдаче сертификата.

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
sudo systemctl status certbot.timer
sudo certbot renew --dry-run
8

Мониторинг и логирование

0/4
sudo apt install -y htop
sudo tail -f /var/log/nginx/access.log
sudo tail -f /var/log/nginx/error.log
docker logs -f container_name
sudo journalctl -u nginx -f
sudo journalctl -u docker -f
9

Резервное копирование

0/3
#!/bin/bash
BACKUP_DIR="/backups/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR

docker exec postgres pg_dump -U your_user your_db | gzip > $BACKUP_DIR/backup_$DATE.sql.gz

# Удалить бэкапы старше 7 дней
find $BACKUP_DIR -name "backup_*.sql.gz" -mtime +7 -delete
sudo chmod +x /usr/local/bin/backup-db.sh
sudo crontab -e
# Добавить: 0 3 * * * /usr/local/bin/backup-db.sh
10

Финальная проверка

Убедитесь, что всё работает перед запуском приложения.

0/9
sudo ufw status
docker --version

Подробный гайд по этой теме:

Читать полную статью →