Деплой сайта на сервере

Docker · Nginx · Cloudflare · SSL · CI/CD

1. Подготовка сервера

Обновляем систему и ставим базовые утилиты.

sudo apt update && sudo apt upgrade -y

2. Установка Docker, docker-compose, Nginx

Ставим Docker и включаем автозапуск.

sudo apt install docker.io -y sudo systemctl enable docker sudo systemctl start docker

Добавляем пользователя в группу docker:

sudo usermod -aG docker $USER

3. Docker Compose

Простой контейнер для сайта:

services: mysite: image: nginx:alpine ports: - "8081:80" volumes: - ./html:/usr/share/nginx/html

4. Nginx reverse proxy

Проксируем домен на Docker контейнер.

server { listen 80; server_name mysite.ru www.mysite.ru; location / { proxy_pass http://localhost:8081; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }

5. Cloudflare DNS (либо другой сервис)

Настраиваем домен:

  • A → @ → IP сервера
  • A → www → IP сервера

Важно: сначала DNS only - (серое облако)

6. SSL сертификат

Установка HTTPS через Certbot:

sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d mysite.ru -d www.mysite.ru

7. Проверка системы

docker ps sudo systemctl status nginx sudo ss -tulpn | grep :80 curl http://localhost:8081

8. Архитектура проекта

Internet → Cloudflare → Nginx → Docker → Website

⚠️ Частые ошибки

  • Certbot timeout → DNS не обновился(это может занять некоторое время)
  • Connection refused → nginx не слушает 80 порт
  • Docker OK, сайт не работает → нет proxy_pass