# Инструкция по развертыванию Global-IT24 на Ubuntu с Traefik ## Предварительные требования 1. Ubuntu Server (20.04 или новее) 2. Docker и Docker Compose установлены 3. Traefik настроен как reverse proxy 4. Домен направлен на ваш сервер ## Шаг 1: Настройка Traefik Если Traefik еще не настроен, создайте базовую конфигурацию: ```bash # Создайте сеть для Traefik docker network create traefik-public # Создайте директорию для Traefik mkdir -p ~/traefik cd ~/traefik ``` Создайте `docker-compose.yml` для Traefik: ```yaml version: '3.8' services: traefik: image: traefik:v2.10 container_name: traefik restart: unless-stopped security_opt: - no-new-privileges:true networks: - traefik-public ports: - "80:80" - "443:443" volumes: - /etc/localtime:/etc/localtime:ro - /var/run/docker.sock:/var/run/docker.sock:ro - ./traefik.yml:/traefik.yml:ro - ./acme.json:/acme.json - ./config.yml:/config.yml:ro labels: - "traefik.enable=true" - "traefik.http.routers.traefik.entrypoints=web" networks: traefik-public: external: true ``` Создайте `traefik.yml`: ```yaml api: dashboard: true insecure: false entryPoints: web: address: ":80" http: redirections: entryPoint: to: websecure scheme: https websecure: address: ":443" http: tls: certResolver: letsencrypt providers: docker: endpoint: "unix:///var/run/docker.sock" exposedByDefault: false network: traefik-public file: filename: /config.yml certificatesResolvers: letsencrypt: acme: email: your-email@example.com storage: acme.json httpChallenge: entryPoint: web ``` Создайте файл для SSL сертификатов: ```bash touch acme.json chmod 600 acme.json ``` Запустите Traefik: ```bash docker-compose up -d ``` ## Шаг 2: Развертывание Global-IT24 1. **Клонируйте или скопируйте проект на сервер:** ```bash cd /home/your-user # Скопируйте папку global_it24_landing на сервер ``` 2. **Создайте .env файл:** ```bash cd global_it24_landing cp .env.example .env nano .env ``` Отредактируйте `.env`: ```env DOMAIN=ваш-домен.ru NEXT_PUBLIC_SITE_URL=https://ваш-домен.ru NODE_ENV=production ``` 3. **Соберите и запустите контейнер:** ```bash # Сборка образа docker-compose build # Запуск контейнера docker-compose up -d # Проверка логов docker-compose logs -f ``` ## Шаг 3: Проверка работы 1. Откройте браузер и перейдите на ваш домен 2. Проверьте, что HTTPS работает корректно 3. Проверьте мобильную версию сайта ## Команды для управления ```bash # Перезапуск контейнера docker-compose restart # Остановка контейнера docker-compose down # Просмотр логов docker-compose logs -f # Обновление после изменений docker-compose down docker-compose build docker-compose up -d # Проверка статуса docker-compose ps ``` ## Оптимизация производительности 1. **Включите кэширование в Traefik** (добавьте в labels): ```yaml - "traefik.http.middlewares.cache-control.headers.customResponseHeaders.Cache-Control=public, max-age=31536000" ``` 2. **Настройте компрессию** (добавьте в labels): ```yaml - "traefik.http.middlewares.compress.compress=true" - "traefik.http.routers.global-it24-secure.middlewares=compress@docker" ``` 3. **Ограничьте ресурсы контейнера** (добавьте в docker-compose.yml): ```yaml deploy: resources: limits: cpus: '1' memory: 512M reservations: cpus: '0.5' memory: 256M ``` ## Резервное копирование ```bash # Создайте скрипт для бэкапа cat > backup.sh << 'EOF' #!/bin/bash BACKUP_DIR="/backup/global-it24" DATE=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR docker-compose exec global-it24-web tar czf - /app > $BACKUP_DIR/backup_$DATE.tar.gz EOF chmod +x backup.sh ``` ## Мониторинг ```bash # Проверка использования ресурсов docker stats global-it24-landing # Проверка здоровья контейнера docker inspect --format='{{.State.Health.Status}}' global-it24-landing ``` ## Устранение неполадок ### Контейнер не запускается: ```bash docker-compose logs global-it24-web ``` ### Проблемы с SSL: ```bash docker logs traefik # Проверьте acme.json ``` ### Сайт недоступен: ```bash # Проверьте, что контейнер работает docker ps | grep global-it24 # Проверьте сеть docker network inspect traefik-public # Проверьте порты netstat -tulpn | grep -E '80|443' ``` ## Безопасность 1. Регулярно обновляйте Docker образы 2. Используйте файрвол (ufw): ```bash sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable ``` 3. Настройте автоматические обновления безопасности: ```bash sudo apt install unattended-upgrades sudo dpkg-reconfigure --priority=low unattended-upgrades ``` ## Контакты для поддержки При возникновении проблем проверьте логи и документацию Traefik: https://doc.traefik.io/traefik/