Files
second-mind-aep/⚙️ Техническое/🖥️ Серверы/Traefik Reverse Proxy/Развертывание.md
Andrey Epifancev e96fec3709 Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками
- Добавлена система Inbox для быстрого захвата идей
- Созданы шаблоны для всех типов заметок с YAML метаданными
- Перенесен весь контент из старой структуры в новую
- Добавлен главный дашборд с динамическими запросами
- Создано подробное руководство по использованию системы
- Техническая документация реорганизована по типам

Основные улучшения:
 Inbox-first подход для новых заметок
 Тематическая организация по 8 областям знаний
 Шаблоны с метаданными для структурированности
 Система связей между заметками
 Динамические дашборды с аналитикой
 Централизованная техническая документация без дублирования
2025-08-09 22:11:50 +04:00

325 lines
9.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Traefik Reverse Proxy - Развертывание
**[[Обзор системы|← Назад к обзору]]**
## Предварительные требования
### Системные требования
- **Docker**: версия 20.10+
- **Docker Compose**: версия 2.0+
- **Операционная система**: Linux (Ubuntu 20.04+ рекомендуется)
- **RAM**: минимум 512MB для Traefik
- **Дисковое пространство**: 1GB для логов и SSL сертификатов
### Сетевые требования
- **Публичный IP**: Для Let's Encrypt ACME challenge
- **Открытые порты**: 80, 443, 2222 (для SSH Git), 8080 (Dashboard)
- **Доступ к DNS**: Для настройки A-записей
### DNS настройка
Перед развертыванием настройте DNS записи:
```bash
# A записи для всех поддоменов
traefik.aepif.ru IN A YOUR_SERVER_IP
auth.aepif.ru IN A YOUR_SERVER_IP
notes.aepif.ru IN A YOUR_SERVER_IP
git.aepif.ru IN A YOUR_SERVER_IP
webhook.aepif.ru IN A YOUR_SERVER_IP
```
## Создание сети proxy
### Шаг 1: Создание Docker network
```bash
# Создаем external сеть для всех сервисов
docker network create proxy
# Проверяем создание
docker network ls | grep proxy
```
### Важность proxy сети
Сеть `proxy` позволяет:
- Изолировать веб-трафик от внутренних сетей
- Автоматически подключать сервисы к Traefik
- Обеспечить безопасность через сегментацию сети
## Подготовка файлов
### Шаг 2: Создание директории
```bash
# Создаем рабочую директорию
mkdir -p /docker/reverse-proxy
cd /docker/reverse-proxy
```
### Шаг 3: Создание docker-compose.yml
```yaml
version: '3.8'
services:
traefik:
image: traefik:v3.0
container_name: traefik
command:
# API и Dashboard
- --api.dashboard=true
- --api.insecure=true
# Docker Provider
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --providers.docker.network=proxy
# Entrypoints
- --entrypoints.web.address=:80
- --entrypoints.websecure.address=:443
- --entrypoints.ssh.address=:2222
# SSL Configuration - ЗАМЕНИТЕ EMAIL!
- --certificatesresolvers.letsencrypt.acme.email=YOUR_EMAIL@domain.com
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
# Logging
- --log.level=INFO
- --accesslog=true
ports:
- "80:80"
- "443:443"
- "8080:8080"
- "2222:2222"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
- traefik.enable=true
- traefik.http.routers.traefik.rule=Host(`traefik.aepif.ru`)
- traefik.http.routers.traefik.tls.certresolver=letsencrypt
- traefik.http.routers.traefik.service=api@internal
# Global HTTP to HTTPS redirect
- traefik.http.routers.http-catchall.rule=hostregexp(`{host:.+}`)
- traefik.http.routers.http-catchall.entrypoints=web
- traefik.http.routers.http-catchall.middlewares=redirect-to-https
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
restart: unless-stopped
volumes:
traefik_data:
networks:
proxy:
external: true
```
**⚠️ Важно**: Замените `YOUR_EMAIL@domain.com` на свой email адрес!
## Первый запуск
### Шаг 4: Запуск Traefik
```bash
# Переходим в директорию с конфигурацией
cd /docker/reverse-proxy
# Запускаем в detached режиме
docker-compose up -d
# Проверяем статус
docker-compose ps
```
### Шаг 5: Проверка логов
```bash
# Смотрим логи запуска
docker-compose logs -f traefik
# Должны увидеть сообщения о:
# - Создании routers и services
# - Успешном запуске API
# - Подключении к Docker provider
```
## Проверка работоспособности
### Шаг 6: Тестирование Dashboard
```bash
# Проверяем доступность Dashboard
curl -I http://YOUR_SERVER_IP:8080
# Проверяем HTTPS редирект
curl -I http://traefik.aepif.ru
# Должен вернуть 301/302 редирект на HTTPS
```
### Шаг 7: Проверка SSL сертификатов
```bash
# Проверяем получение SSL сертификата
curl -I https://traefik.aepif.ru
# Проверяем детали сертификата
openssl s_client -connect traefik.aepif.ru:443 -servername traefik.aepif.ru | openssl x509 -noout -text
```
## Настройка firewall
### Шаг 8: Конфигурация UFW (Ubuntu)
```bash
# Разрешаем необходимые порты
sudo ufw allow 22/tcp # SSH
sudo ufw allow 80/tcp # HTTP
sudo ufw allow 443/tcp # HTTPS
sudo ufw allow 2222/tcp # Git SSH
sudo ufw allow 8080/tcp # Dashboard (временно)
# Включаем firewall
sudo ufw enable
# Проверяем статус
sudo ufw status
```
## Мониторинг и диагностика
### Проверка состояния
```bash
# Статус контейнера
docker ps | grep traefik
# Использование ресурсов
docker stats traefik --no-stream
# Логи в реальном времени
docker logs traefik -f
```
### Dashboard интерфейс
- **URL**: http://YOUR_SERVER_IP:8080 или https://traefik.aepif.ru
- **Разделы**:
- **HTTP Routers**: Настроенные маршруты
- **HTTP Services**: Backend сервисы
- **HTTP Middlewares**: Промежуточное ПО
- **TLS**: SSL сертификаты
## Устранение проблем
### Проблема: Сертификат не получается
```bash
# Проверяем DNS записи
nslookup traefik.aepif.ru
# Проверяем доступность порта 443 извне
telnet YOUR_SERVER_IP 443
# Смотрим логи ACME
docker logs traefik | grep acme
```
### Проблема: Dashboard недоступен
```bash
# Проверяем, что контейнер запущен
docker ps | grep traefik
# Проверяем порт
netstat -tulpn | grep :8080
# Проверяем логи
docker logs traefik --tail 50
```
### Проблема: Сервисы не обнаруживаются
```bash
# Проверяем сеть proxy
docker network inspect proxy
# Проверяем подключение Traefik к Docker socket
docker logs traefik | grep docker
# Проверяем labels сервисов
docker inspect SERVICE_CONTAINER | grep -A 10 Labels
```
## Безопасность после установки
### Рекомендации по безопасности
1. **Закрыть порт 8080**: Настроить аутентификацию для Dashboard
2. **Ограничить доступ к Docker socket**: Использовать Docker socket proxy
3. **Настроить логирование**: Централизованный сбор логов
4. **Мониторинг**: Настроить алерты на проблемы с сертификатами
### Закрытие небезопасного Dashboard
После настройки всех сервисов, отредактируйте docker-compose.yml:
```yaml
command:
- --api.dashboard=true
# Убираем эту строку:
# - --api.insecure=true
```
И добавьте middleware для аутентификации:
```yaml
labels:
- traefik.http.routers.traefik.middlewares=authelia@docker
```
## Следующие шаги
После успешного развертывания Traefik:
1. **[[../Authelia Authentication/Развертывание]]** - Настройка аутентификации
2. **[[../Git Service/Развертывание]]** - Развертывание Git сервера
3. **[[../Second Mind Setup/Развертывание]]** - Настройка системы заметок
4. **[[Администрирование]]** - Ежедневное управление
## Автоматизация развертывания
### Скрипт развертывания
```bash
#!/bin/bash
# deploy-traefik.sh
set -e
echo "🚀 Развертывание Traefik Reverse Proxy"
# Проверяем Docker
if ! command -v docker &> /dev/null; then
echo "❌ Docker не установлен"
exit 1
fi
# Создаем сеть
docker network create proxy 2>/dev/null || echo "Сеть proxy уже существует"
# Создаем директорию
mkdir -p /docker/reverse-proxy
cd /docker/reverse-proxy
# Запрашиваем email
read -p "📧 Введите email для Let's Encrypt: " ACME_EMAIL
# Создаем docker-compose.yml с введенным email
cat > docker-compose.yml << EOF
# Вставляем конфигурацию с заменой email
EOF
# Запускаем
docker-compose up -d
echo "✅ Traefik развернут успешно"
echo "🌐 Dashboard: http://$(curl -s ipinfo.io/ip):8080"
```
## Связанные документы
- **[[Конфигурации]]** - детальные настройки конфигурации
- **[[Администрирование]]** - управление и мониторинг
- **[[../Authelia Authentication/Развертывание]]** - следующий шаг развертывания