Конфигурация для внешнего Traefik

This commit is contained in:
DeepAgent
2025-10-25 13:32:33 +00:00
parent 9f77a9c773
commit 65065dce94
7 changed files with 582 additions and 242 deletions

File diff suppressed because one or more lines are too long

View File

@@ -1,9 +1,17 @@
# Домен вашего сайта # Домен вашего сайта
DOMAIN=global-it24.example.com DOMAIN=video.mscsrv.ru
# URL сайта (используется для метатегов и canonical URL) # URL сайта (используется для метатегов и canonical URL)
NEXT_PUBLIC_SITE_URL=https://global-it24.example.com NEXT_PUBLIC_SITE_URL=https://video.mscsrv.ru
# IP адреса
# Traefik хост
TRAEFIK_HOST=192.168.50.59
# IP этого сервера (где запущен контейнер)
# Укажите IP текущего хоста в локальной сети
APP_HOST_IP=192.168.50.X
# Для production окружения # Для production окружения
NODE_ENV=production NODE_ENV=production

View File

@@ -1,122 +1,55 @@
# Инструкция по развертыванию Global-IT24 на Ubuntu с Traefik # Инструкция по развертыванию Global-IT24 на Ubuntu с внешним Traefik
## Архитектура
- **Traefik:** 192.168.50.59 (внешний хост)
- **Приложение:** Ваш сервер (докер контейнер на порту 3000)
- **Домен:** video.mscsrv.ru
## Предварительные требования ## Предварительные требования
1. Ubuntu Server (20.04 или новее) 1. Ubuntu Server (20.04 или новее)
2. Docker и Docker Compose установлены 2. Docker и Docker Compose установлены
3. Traefik настроен как reverse proxy 3. Traefik уже настроен на хосте 192.168.50.59
4. Домен направлен на ваш сервер 4. Домен video.mscsrv.ru направлен на 192.168.50.59
5. Сетевая связность между хостами (порт 3000 доступен из 192.168.50.59)
## Шаг 1: Настройка Traefik ## Шаг 1: Подготовка сервера приложения
Если Traefik еще не настроен, создайте базовую конфигурацию: ### 1.1 Установка Docker (если не установлен)
```bash ```bash
# Создайте сеть для Traefik # Обновление системы
docker network create traefik-public sudo apt update && sudo apt upgrade -y
# Создайте директорию для Traefik # Установка зависимостей
mkdir -p ~/traefik sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
cd ~/traefik
# Добавление репозитория Docker
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Установка Docker
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Добавление пользователя в группу docker
sudo usermod -aG docker $USER
newgrp docker
# Проверка установки
docker --version
docker compose version
``` ```
Создайте `docker-compose.yml` для Traefik: ### 1.2 Подготовка проекта
```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 ```bash
touch acme.json # Перейдите в директорию проекта
chmod 600 acme.json cd /path/to/global_it24_landing
```
Запустите Traefik: # Создайте .env файл
```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 cp .env.example .env
nano .env nano .env
``` ```
@@ -124,66 +57,373 @@ nano .env
Отредактируйте `.env`: Отредактируйте `.env`:
```env ```env
DOMAIN=ваш-домен.ru DOMAIN=video.mscsrv.ru
NEXT_PUBLIC_SITE_URL=https://ваш-домен.ru NEXT_PUBLIC_SITE_URL=https://video.mscsrv.ru
TRAEFIK_HOST=192.168.50.59
APP_HOST_IP=192.168.50.X # Замените на IP текущего сервера
NODE_ENV=production NODE_ENV=production
``` ```
3. **Соберите и запустите контейнер:** ### 1.3 Проверка сетевой доступности
```bash ```bash
# Сборка образа # Узнайте IP текущего хоста
docker-compose build hostname -I
# Запуск контейнера # С хоста Traefik (192.168.50.59) должен быть доступ к этому IP:3000
docker-compose up -d # Проверьте после запуска контейнера
# Проверка логов
docker-compose logs -f
``` ```
## Шаг 3: Проверка работы ## Шаг 2: Запуск приложения
1. Откройте браузер и перейдите на ваш домен ### 2.1 Сборка и запуск контейнера
2. Проверьте, что HTTPS работает корректно
3. Проверьте мобильную версию сайта ```bash
# Автоматическое развертывание
./deploy.sh
# Или вручную:
docker compose build --no-cache
docker compose up -d
```
### 2.2 Проверка работы контейнера
```bash
# Проверка статуса
./status.sh
# или
docker compose ps
# Просмотр логов
./logs.sh
# или
docker compose logs -f
# Проверка доступности локально
curl http://localhost:3000
```
### 2.3 Проверка доступности из сети
```bash
# С хоста Traefik (192.168.50.59) выполните:
curl http://192.168.50.X:3000
# Замените 192.168.50.X на IP вашего сервера
```
## Шаг 3: Настройка Traefik (на хосте 192.168.50.59)
### 3.1 Создание конфигурации
На хосте Traefik создайте файл конфигурации для file provider:
```bash
# Перейдите в директорию конфигурации Traefik
cd /path/to/traefik/config
# Создайте файл конфигурации
nano global-it24.yml
```
Скопируйте содержимое из `traefik-config-example.yml`, заменив:
- `192.168.50.X` на реальный IP сервера с приложением
### 3.2 Пример конфигурации
```yaml
http:
routers:
global-it24:
rule: "Host(`video.mscsrv.ru`)"
entryPoints:
- web
middlewares:
- redirect-to-https
service: global-it24-service
global-it24-secure:
rule: "Host(`video.mscsrv.ru`)"
entryPoints:
- websecure
middlewares:
- security-headers
- compress
service: global-it24-service
tls:
certResolver: letsencrypt
services:
global-it24-service:
loadBalancer:
servers:
- url: "http://192.168.50.X:3000" # IP сервера приложения
healthCheck:
path: /
interval: 30s
timeout: 10s
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true
security-headers:
headers:
customResponseHeaders:
X-Frame-Options: "SAMEORIGIN"
X-Content-Type-Options: "nosniff"
X-XSS-Protection: "1; mode=block"
sslRedirect: true
stsSeconds: 31536000
compress:
compress: {}
```
### 3.3 Перезагрузка Traefik
```bash
# На хосте Traefik
docker restart traefik
# или
docker compose restart traefik
# Проверка логов Traefik
docker logs traefik -f
```
## Шаг 4: Проверка работы
1. **Локальная проверка:**
```bash
curl -v http://localhost:3000
```
2. **Проверка через Traefik:**
```bash
curl -v http://video.mscsrv.ru
curl -v https://video.mscsrv.ru
```
3. **Проверка в браузере:**
- Откройте https://video.mscsrv.ru
- Проверьте мобильную версию
- Проверьте SSL сертификат
## Команды для управления ## Команды для управления
```bash ```bash
# На сервере приложения:
# Перезапуск контейнера # Перезапуск контейнера
docker-compose restart ./update.sh
# или
docker compose restart
# Остановка контейнера # Остановка контейнера
docker-compose down ./stop.sh
# или
docker compose down
# Просмотр логов # Просмотр логов
docker-compose logs -f ./logs.sh
# или
# Обновление после изменений docker compose logs -f
docker-compose down
docker-compose build
docker-compose up -d
# Проверка статуса # Проверка статуса
docker-compose ps ./status.sh
# Обновление после изменений
docker compose down
docker compose build --no-cache
docker compose up -d
# Резервное копирование
./backup.sh
``` ```
## Оптимизация производительности ## Оптимизация и безопасность
1. **Включите кэширование в Traefik** (добавьте в labels): ### Файрвол на сервере приложения
```yaml
- "traefik.http.middlewares.cache-control.headers.customResponseHeaders.Cache-Control=public, max-age=31536000" ```bash
# Установка UFW
sudo apt install ufw
# Разрешаем SSH
sudo ufw allow 22/tcp
# Разрешаем порт 3000 ТОЛЬКО с хоста Traefik
sudo ufw allow from 192.168.50.59 to any port 3000 proto tcp
# Включаем файрвол
sudo ufw enable
# Проверка правил
sudo ufw status verbose
``` ```
2. **Настройте компрессию** (добавьте в labels): ### Мониторинг
```yaml
- "traefik.http.middlewares.compress.compress=true" ```bash
- "traefik.http.routers.global-it24-secure.middlewares=compress@docker" # Использование ресурсов
docker stats global-it24-landing
# Проверка здоровья
docker inspect --format='{{.State.Health.Status}}' global-it24-landing
# Системные ресурсы
htop
``` ```
3. **Ограничьте ресурсы контейнера** (добавьте в docker-compose.yml): ### Автоматический перезапуск при сбое
```yaml
Docker Compose уже настроен с `restart: unless-stopped`, контейнер будет автоматически перезапускаться.
### Логирование
```bash
# Ротация логов Docker
sudo nano /etc/docker/daemon.json
```
Добавьте:
```json
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
```
Перезапустите Docker:
```bash
sudo systemctl restart docker
docker compose up -d
```
## Обновление приложения
### Быстрое обновление (без изменения кода)
```bash
./update.sh
```
### Полное обновление (с пересборкой)
```bash
# Остановка
docker compose down
# Обновление кода (git pull или копирование файлов)
# Пересборка и запуск
./deploy.sh
```
## Резервное копирование
### Автоматическое резервное копирование
```bash
# Создание резервной копии
./backup.sh
# Настройка автоматического бэкапа (cron)
crontab -e
```
Добавьте:
```cron
# Резервное копирование каждый день в 3:00
0 3 * * * cd /path/to/global_it24_landing && ./backup.sh >> /var/log/backup-global-it24.log 2>&1
```
### Восстановление из резервной копии
```bash
# Остановка текущего контейнера
docker compose down
# Восстановление из архива
cd /path/to/restore
tar -xzf backup_YYYYMMDD_HHMMSS.tar.gz
# Запуск
cd global_it24_landing
./deploy.sh
```
## Устранение неполадок
### Контейнер не запускается
```bash
# Просмотр логов
docker compose logs global-it24-web
# Проверка конфигурации
docker compose config
# Пересборка с нуля
docker compose down
docker system prune -a
./deploy.sh
```
### Сайт недоступен через Traefik
1. **Проверка доступности приложения локально:**
```bash
curl http://localhost:3000
```
2. **Проверка доступности из сети Traefik:**
```bash
# На хосте Traefik (192.168.50.59)
curl http://192.168.50.X:3000
```
3. **Проверка логов Traefik:**
```bash
# На хосте Traefik
docker logs traefik -f
```
4. **Проверка файрвола:**
```bash
sudo ufw status
# Убедитесь, что порт 3000 открыт для 192.168.50.59
```
5. **Проверка конфигурации Traefik:**
```bash
# Проверьте файл global-it24.yml
# Убедитесь, что IP адрес правильный
```
### Проблемы с SSL
Проверьте на хосте Traefik:
```bash
# Логи Traefik
docker logs traefik | grep -i error
# Проверка сертификатов
ls -la /path/to/acme.json
```
### Высокое использование ресурсов
```bash
# Ограничение ресурсов в docker-compose.yml
# Добавьте в сервис global-it24-web:
deploy: deploy:
resources: resources:
limits: limits:
@@ -194,72 +434,58 @@ deploy:
memory: 256M 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
``` ```
Internet
## Мониторинг
[DNS: video.mscsrv.ru] → 192.168.50.59
```bash
# Проверка использования ресурсов [Traefik: 192.168.50.59]
docker stats global-it24-landing ↓ (проксирует на)
[App Server: 192.168.50.X:3000]
# Проверка здоровья контейнера
docker inspect --format='{{.State.Health.Status}}' global-it24-landing [Docker Container: 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):
1. **Ограничьте доступ к порту 3000** только с хоста Traefik
2. **Регулярно обновляйте** Docker образы и систему
3. **Используйте сильные пароли** для SSH
4. **Настройте fail2ban** для защиты от брутфорса
5. **Мониторинг логов** на подозрительную активность
### Fail2ban (опционально)
```bash ```bash
sudo ufw allow 80/tcp sudo apt install fail2ban
sudo ufw allow 443/tcp sudo systemctl enable fail2ban
sudo ufw enable sudo systemctl start fail2ban
``` ```
3. Настройте автоматические обновления безопасности: ## Производительность
### Рекомендации:
1. Используйте SSD диски
2. Минимум 2GB RAM для сервера
3. Настройте swap если RAM < 4GB
4. Регулярно очищайте неиспользуемые Docker образы:
```bash ```bash
sudo apt install unattended-upgrades docker system prune -a
sudo dpkg-reconfigure --priority=low unattended-upgrades
``` ```
## Контакты для поддержки ## Контакты для поддержки
При возникновении проблем проверьте логи и документацию Traefik: https://doc.traefik.io/traefik/ При возникновении проблем:
1. Проверьте логи контейнера: `./logs.sh`
2. Проверьте статус: `./status.sh`
3. Проверьте доступность из сети
4. Проверьте конфигурацию Traefik
5. Проверьте файрвол и сетевую связность
Документация Traefik: https://doc.traefik.io/traefik/
Документация Docker: https://docs.docker.com/

64
check-network.sh Executable file
View File

@@ -0,0 +1,64 @@
#!/bin/bash
# Скрипт для проверки сетевой связности с Traefik
source .env 2>/dev/null || true
TRAEFIK_HOST=${TRAEFIK_HOST:-192.168.50.59}
APP_PORT=${APP_PORT:-3000}
echo "🔍 Проверка сетевой связности..."
echo ""
# Получаем IP адреса текущего хоста
echo "📍 IP адреса текущего хоста:"
hostname -I
echo ""
# Проверка доступности локально
echo "🏠 Проверка локального доступа (localhost:${APP_PORT})..."
if curl -s -o /dev/null -w "%{http_code}" http://localhost:${APP_PORT} | grep -q "200"; then
echo "✅ Приложение доступно локально"
else
echo "❌ Приложение НЕ доступно локально"
echo " Проверьте: docker compose ps"
fi
echo ""
# Проверка доступности контейнера
echo "🐳 Статус контейнера:"
docker compose ps 2>/dev/null || echo "⚠️ Docker Compose не запущен"
echo ""
# Проверка порта
echo "🔌 Проверка открытых портов:"
if command -v netstat &> /dev/null; then
netstat -tulpn | grep ${APP_PORT} || echo "⚠️ Порт ${APP_PORT} не прослушивается"
elif command -v ss &> /dev/null; then
ss -tulpn | grep ${APP_PORT} || echo "⚠️ Порт ${APP_PORT} не прослушивается"
fi
echo ""
# Инструкции для проверки с Traefik хоста
echo "📋 Для проверки доступности с хоста Traefik (${TRAEFIK_HOST}):"
echo ""
echo " Выполните на хосте ${TRAEFIK_HOST}:"
echo " curl http://\${APP_HOST_IP}:${APP_PORT}"
echo ""
echo " Где \${APP_HOST_IP} - один из IP адресов выше"
echo ""
# Проверка файрвола
echo "🔥 Проверка файрвола (UFW):"
if command -v ufw &> /dev/null; then
sudo ufw status 2>/dev/null || echo "⚠️ UFW не установлен или требует sudo"
else
echo "⚠️ UFW не установлен"
fi
echo ""
echo "💡 Рекомендации:"
echo " 1. Убедитесь, что порт ${APP_PORT} открыт для ${TRAEFIK_HOST}"
echo " 2. Проверьте файрвол: sudo ufw allow from ${TRAEFIK_HOST} to any port ${APP_PORT}"
echo " 3. Используйте один из IP адресов выше в конфигурации Traefik"

View File

@@ -1,7 +1,7 @@
#!/bin/bash #!/bin/bash
# Скрипт для быстрого развертывания Global-IT24 на Ubuntu с Traefik # Скрипт для быстрого развертывания Global-IT24 на Ubuntu с внешним Traefik
set -e set -e
@@ -11,47 +11,56 @@ echo "🚀 Развертывание Global-IT24..."
if [ ! -f .env ]; then if [ ! -f .env ]; then
echo "⚠️ Файл .env не найден. Создаю из .env.example..." echo "⚠️ Файл .env не найден. Создаю из .env.example..."
cp .env.example .env cp .env.example .env
echo "📝 Отредактируйте файл .env и запустите скрипт снова." echo "📝 Отредактируйте файл .env (укажите APP_HOST_IP) и запустите скрипт снова."
exit 1 exit 1
fi fi
# Загрузка переменных окружения # Загрузка переменных окружения
source .env source .env
# Проверка наличия сети traefik-public # Проверка APP_HOST_IP
if ! docker network inspect traefik-public >/dev/null 2>&1; then if [ -z "$APP_HOST_IP" ] || [ "$APP_HOST_IP" = "192.168.50.X" ]; then
echo "📡 Создаю сеть traefik-public..." echo "⚠️ Пожалуйста, укажите APP_HOST_IP в файле .env"
docker network create traefik-public echo "📝 Текущий IP адрес сервера:"
hostname -I
exit 1
fi fi
# Остановка предыдущей версии # Остановка предыдущей версии
echo "🛑 Остановка предыдущей версии..." echo "🛑 Остановка предыдущей версии..."
docker-compose down 2>/dev/null || true docker compose down 2>/dev/null || true
# Сборка нового образа # Сборка нового образа
echo "🔨 Сборка Docker образа..." echo "🔨 Сборка Docker образа..."
docker-compose build --no-cache docker compose build --no-cache
# Запуск контейнера # Запуск контейнера
echo "▶️ Запуск контейнера..." echo "▶️ Запуск контейнера..."
docker-compose up -d docker compose up -d
# Ожидание готовности # Ожидание готовности
echo "⏳ Ожидание готовности сервиса..." echo "⏳ Ожидание готовности сервиса..."
sleep 10 sleep 10
# Проверка статуса # Проверка статуса
if docker-compose ps | grep -q "Up"; then if docker compose ps | grep -q "Up"; then
echo "✅ Развертывание успешно завершено!" echo "✅ Развертывание успешно завершено!"
echo "🌐 Сайт доступен по адресу: ${NEXT_PUBLIC_SITE_URL}"
echo "" echo ""
echo "📊 Статус контейнера:" echo "📊 Статус контейнера:"
docker-compose ps docker compose ps
echo "" echo ""
echo "📝 Для просмотра логов используйте: docker-compose logs -f" echo "🌐 Сайт будет доступен по адресу: ${NEXT_PUBLIC_SITE_URL}"
echo " после настройки Traefik на хосте ${TRAEFIK_HOST}"
echo ""
echo "🔧 Настройте Traefik (см. traefik-config-example.yml):"
echo " - IP приложения: ${APP_HOST_IP}:3000"
echo " - Домен: ${DOMAIN}"
echo ""
echo "📝 Для просмотра логов используйте: ./logs.sh"
echo "🧪 Локальная проверка: curl http://localhost:3000"
else else
echo "❌ Ошибка при запуске контейнера!" echo "❌ Ошибка при запуске контейнера!"
echo "📝 Логи:" echo "📝 Логи:"
docker-compose logs docker compose logs
exit 1 exit 1
fi fi

View File

@@ -7,41 +7,16 @@ services:
context: . context: .
dockerfile: Dockerfile dockerfile: Dockerfile
args: args:
NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://global-it24.local} NEXT_PUBLIC_SITE_URL: ${NEXT_PUBLIC_SITE_URL:-https://video.mscsrv.ru}
container_name: global-it24-landing container_name: global-it24-landing
restart: unless-stopped restart: unless-stopped
ports:
- "3000:3000"
environment: environment:
- NODE_ENV=production - NODE_ENV=production
- NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL:-https://global-it24.local} - NEXT_PUBLIC_SITE_URL=${NEXT_PUBLIC_SITE_URL:-https://video.mscsrv.ru}
networks: - PORT=3000
- traefik-public - HOSTNAME=0.0.0.0
labels:
# Включаем Traefik для этого контейнера
- "traefik.enable=true"
# Настройка HTTP
- "traefik.http.routers.global-it24.rule=Host(`${DOMAIN:-global-it24.local}`)"
- "traefik.http.routers.global-it24.entrypoints=web"
- "traefik.http.routers.global-it24.middlewares=redirect-to-https@docker"
# Настройка HTTPS
- "traefik.http.routers.global-it24-secure.rule=Host(`${DOMAIN:-global-it24.local}`)"
- "traefik.http.routers.global-it24-secure.entrypoints=websecure"
- "traefik.http.routers.global-it24-secure.tls=true"
- "traefik.http.routers.global-it24-secure.tls.certresolver=letsencrypt"
# Middleware для редиректа HTTP -> HTTPS
- "traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https"
- "traefik.http.middlewares.redirect-to-https.redirectscheme.permanent=true"
# Указываем порт сервиса
- "traefik.http.services.global-it24.loadbalancer.server.port=3000"
# Middleware для заголовков безопасности
- "traefik.http.middlewares.security-headers.headers.customResponseHeaders.X-Frame-Options=SAMEORIGIN"
- "traefik.http.middlewares.security-headers.headers.customResponseHeaders.X-Content-Type-Options=nosniff"
- "traefik.http.middlewares.security-headers.headers.customResponseHeaders.X-XSS-Protection=1; mode=block"
- "traefik.http.routers.global-it24-secure.middlewares=security-headers@docker"
healthcheck: healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/"] test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:3000/"]
interval: 30s interval: 30s
@@ -49,6 +24,5 @@ services:
retries: 3 retries: 3
start_period: 40s start_period: 40s
networks: # Для работы с внешним Traefik не требуется сеть
traefik-public: # Traefik будет обращаться к контейнеру по IP хоста на порту 3000
external: true

View File

@@ -0,0 +1,59 @@
# Пример конфигурации для Traefik File Provider
# Этот файл нужно добавить в вашу конфигурацию Traefik на хосте 192.168.50.59
http:
routers:
global-it24:
rule: "Host(`video.mscsrv.ru`)"
entryPoints:
- web
middlewares:
- redirect-to-https
service: global-it24-service
global-it24-secure:
rule: "Host(`video.mscsrv.ru`)"
entryPoints:
- websecure
middlewares:
- security-headers
- compress
service: global-it24-service
tls:
certResolver: letsencrypt
# Или укажите путь к сертификатам:
# certFile: /path/to/cert.pem
# keyFile: /path/to/key.pem
services:
global-it24-service:
loadBalancer:
servers:
# Замените 192.168.50.X на реальный IP хоста, где запущен контейнер
- url: "http://192.168.50.X:3000"
healthCheck:
path: /
interval: 30s
timeout: 10s
middlewares:
redirect-to-https:
redirectScheme:
scheme: https
permanent: true
security-headers:
headers:
customResponseHeaders:
X-Frame-Options: "SAMEORIGIN"
X-Content-Type-Options: "nosniff"
X-XSS-Protection: "1; mode=block"
Referrer-Policy: "strict-origin-when-cross-origin"
sslRedirect: true
stsSeconds: 31536000
stsIncludeSubdomains: true
stsPreload: true
compress:
compress: {}