Files
Andrey Epifancev e96fec3709 Реорганизация структуры заметок v2.0
- Создана новая организационная структура с эмодзи-папками
- Добавлена система Inbox для быстрого захвата идей
- Созданы шаблоны для всех типов заметок с YAML метаданными
- Перенесен весь контент из старой структуры в новую
- Добавлен главный дашборд с динамическими запросами
- Создано подробное руководство по использованию системы
- Техническая документация реорганизована по типам

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

8.8 KiB
Raw Permalink Blame History

Описание

Traefik Reverse Proxy - центральный компонент инфраструктуры aepif.ru, обеспечивающий маршрутизацию трафика, автоматические SSL сертификаты и интеграцию с системой аутентификации.

Архитектура системы

graph TB
    A[Internet] --> B[Traefik v3.0]
    B --> C[Second Mind - notes.aepif.ru]
    B --> D[Gitea - git.aepif.ru]
    B --> E[Authelia - auth.aepif.ru]
    B --> F[Webhook Service - webhook.aepif.ru]
    B --> G[Traefik Dashboard - traefik.aepif.ru]
    
    H[Let's Encrypt] --> B
    I[Docker Socket] --> B
    
    subgraph "SSL Certificates"
        H
        J[ACME Storage]
    end
    
    subgraph "Service Discovery"
        I
        K[Docker Labels]
    end

Основные функции

Reverse Proxy

  • Назначение: Централизованная точка входа для всех сервисов
  • Технология: Traefik v3.0
  • Порты:
    • 80 (HTTP) - автоматический редирект на HTTPS
    • 443 (HTTPS) - основной трафик
    • 8080 - Dashboard (небезопасен в production)
    • 2222 - SSH для Git-сервера

SSL Management

  • Let's Encrypt: Автоматическое получение и обновление сертификатов
  • ACME Challenge: TLS challenge для валидации доменов
  • Автоматический редирект: HTTP → HTTPS для всех сервисов
  • Хранение: Персистентные сертификаты в volume

Service Discovery

  • Docker Integration: Автоматическое обнаружение сервисов через Docker API
  • Label-based Configuration: Настройка маршрутизации через Docker labels
  • Dynamic Configuration: Изменения конфигурации без перезапуска

Конфигурация

Docker Compose

Основная конфигурация в /DOCKER/reverse-proxy/docker-compose.yml:

services:
  traefik:
    image: traefik:v3.0
    command:
      - --api.dashboard=true
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --entrypoints.web.address=:80
      - --entrypoints.websecure.address=:443
      - --entrypoints.ssh.address=:2222
      - --certificatesresolvers.letsencrypt.acme.tlschallenge=true
    ports:
      - "80:80"
      - "443:443" 
      - "8080:8080"
      - "2222:2222"

Entrypoints

  • web (80): HTTP трафик с редиректом на HTTPS
  • websecure (443): HTTPS трафик
  • ssh (2222): TCP трафик для Git SSH

Middlewares

  • redirect-to-https: Автоматический редирект HTTP → HTTPS
  • authelia@docker: Интеграция с Forward Auth

Маршрутизация

HTTP Routes

Домен Сервис Middleware Порт
notes.aepif.ru Second Mind authelia@docker 80
git.aepif.ru Gitea - 3000
auth.aepif.ru Authelia - 9091
webhook.aepif.ru Webhook Service - 3000
traefik.aepif.ru Dashboard - api@internal

TCP Routes

  • SSH Git Access: git.aepif.ru:2222 → Gitea container port 22

Сетевая архитектура

Proxy Network

networks:
  proxy:
    name: proxy
    driver: bridge

Все сервисы, которые должны быть доступны через Traefik, подключаются к сети proxy.

Labels Configuration

Пример конфигурации сервиса через labels:

labels:
  - traefik.enable=true
  - traefik.http.routers.service.rule=Host(`service.aepif.ru`)
  - traefik.http.routers.service.tls.certresolver=letsencrypt
  - traefik.http.services.service.loadbalancer.server.port=80

SSL Сертификаты

Let's Encrypt Integration

  • Email: your_email@aepif.ru для уведомлений
  • Challenge Type: TLS Challenge
  • Storage: /data/acme.json в контейнере
  • Автоматическое обновление: Traefik обновляет сертификаты автоматически

Wildcard Certificates

Для поддержки wildcard сертификатов потребуется DNS Challenge с API ключами DNS провайдера.

Dashboard

Доступ

  • URL: https://traefik.aepif.ru
  • Порт: 8080 (insecure mode)
  • Функции: Мониторинг роутеров, сервисов, middleware

Безопасность

⚠️ Внимание: Dashboard в текущей конфигурации доступен без аутентификации. В production рекомендуется:

  • Отключить insecure API (--api.insecure=false)
  • Добавить middleware для аутентификации
  • Ограничить доступ по IP

Мониторинг

Metrics

  • Prometheus: Встроенная поддержка метрик Prometheus
  • Health Checks: Автоматические проверки состояния backend сервисов
  • Access Logs: Детальные логи запросов

Troubleshooting

# Проверка статуса Traefik
curl -I https://traefik.aepif.ru

# Логи Traefik
docker logs traefik -f

# Проверка конфигурации
docker exec traefik traefik version

Безопасность

TLS Configuration

  • Минимальная версия: TLS 1.2
  • Cipher Suites: Современные безопасные шифры
  • HSTS: HTTP Strict Transport Security headers

Rate Limiting

Можно настроить ограничение запросов через middleware:

labels:
  - traefik.http.middlewares.ratelimit.ratelimit.burst=100
  - traefik.http.middlewares.ratelimit.ratelimit.average=50

Производительность

Load Balancing

  • Алгоритм: Round Robin (по умолчанию)
  • Health Checks: Автоматическое исключение неисправных backend'ов
  • Connection Pooling: Переиспользование соединений

Caching

  • Static Content: Заголовки кеширования для статических файлов
  • Compression: Автоматическое сжатие ответов

Структура файлов

/DOCKER/reverse-proxy/
├── docker-compose.yml    # Основная конфигурация Traefik
└── volumes/
    └── traefik_data/     # ACME сертификаты и данные
        └── acme.json     # Let's Encrypt сертификаты

Интеграции

Docker Integration

  • Automatic Service Discovery: Обнаружение сервисов через Docker API
  • Label-based Configuration: Настройка через labels в docker-compose
  • Hot Reload: Изменения применяются без перезапуска

Authelia Integration

  • Forward Auth: Интеграция с Authelia для централизованной аутентификации
  • Headers: Передача информации о пользователе в backend сервисы

Backup и восстановление

Критически важные данные

  • acme.json: SSL сертификаты Let's Encrypt
  • docker-compose.yml: Конфигурация сервиса
  • traefik.yml: Статическая конфигурация (если используется)

Процедура backup

# Backup SSL сертификатов
docker cp traefik:/data/acme.json ./backup/acme.json

# Backup всего volume
docker run --rm -v traefik_data:/data -v $(pwd):/backup alpine tar czf /backup/traefik_data.tar.gz -C /data .

Связанные сервисы

Связанные документы