Реорганизация структуры заметок v2.0

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

Основные улучшения:
 Inbox-first подход для новых заметок
 Тематическая организация по 8 областям знаний
 Шаблоны с метаданными для структурированности
 Система связей между заметками
 Динамические дашборды с аналитикой
 Централизованная техническая документация без дублирования
This commit is contained in:
Andrey Epifancev
2025-08-09 22:11:50 +04:00
parent d2d511276f
commit e96fec3709
37 changed files with 1001 additions and 6 deletions

View File

@@ -0,0 +1,255 @@
# Traefik Reverse Proxy - Конфигурации
**[[Обзор системы|← Назад к обзору]]**
## Docker Compose конфигурация
### Основной файл: `/DOCKER/reverse-proxy/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
- --certificatesresolvers.letsencrypt.acme.email=your_email@aepif.ru
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
# TCP Routing
- --providers.docker.exposedByDefault=false
ports:
- "80:80" # HTTP
- "443:443" # HTTPS
- "8080:8080" # Dashboard
- "2222:2222" # SSH для Git
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- traefik_data:/data
networks:
- proxy
labels:
# Самонастройка для Dashboard
- 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
# 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:
name: proxy
driver: bridge
```
## Command Line Arguments
### API Configuration
- `--api.dashboard=true` - Включает веб-интерфейс Dashboard
- `--api.insecure=true` - **⚠️ Небезопасно**: Доступ к API без аутентификации на порту 8080
### Provider Configuration
- `--providers.docker=true` - Включает Docker provider для автодискавери
- `--providers.docker.exposedbydefault=false` - Сервисы не экспонируются автоматически
- `--providers.docker.network=proxy` - Использует сеть `proxy` для подключения
### Entrypoints
- `--entrypoints.web.address=:80` - HTTP entrypoint
- `--entrypoints.websecure.address=:443` - HTTPS entrypoint
- `--entrypoints.ssh.address=:2222` - TCP entrypoint для SSH
### SSL Certificate Management
- `--certificatesresolvers.letsencrypt.acme.email=your_email@aepif.ru` - Email для Let's Encrypt
- `--certificatesresolvers.letsencrypt.acme.storage=/data/acme.json` - Файл хранения сертификатов
- `--certificatesresolvers.letsencrypt.acme.tlschallenge=true` - Использует TLS-01 challenge
## Port Mapping
| Внешний порт | Внутренний порт | Назначение |
|--------------|-----------------|------------|
| 80 | 80 | HTTP трафик (редирект на HTTPS) |
| 443 | 443 | HTTPS трафик |
| 8080 | 8080 | Dashboard (небезопасно) |
| 2222 | 2222 | SSH для Git operations |
## Volume Configuration
### traefik_data
- **Назначение**: Хранение SSL сертификатов и конфигурации
- **Содержимое**:
- `acme.json` - Let's Encrypt сертификаты
- Конфигурационные файлы Traefik
### Docker Socket
```yaml
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
```
- **Назначение**: Доступ к Docker API для service discovery
- **Режим**: Read-only для безопасности
## Network Configuration
### Proxy Network
```yaml
networks:
proxy:
name: proxy
driver: bridge
```
**Важно**: Эта сеть должна быть создана заранее и подключена ко всем сервисам, которые должны быть доступны через Traefik.
## Labels Configuration
### Self-configuration для Dashboard
```yaml
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
```
### HTTP to HTTPS Redirect
```yaml
labels:
- 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
```
## Dynamic Configuration Examples
### Типичные labels для сервиса
```yaml
labels:
- traefik.enable=true
- traefik.http.routers.service-name.rule=Host(`service.aepif.ru`)
- traefik.http.routers.service-name.tls.certresolver=letsencrypt
- traefik.http.services.service-name.loadbalancer.server.port=80
```
### С Authelia middleware
```yaml
labels:
- traefik.enable=true
- traefik.http.routers.protected-service.rule=Host(`protected.aepif.ru`)
- traefik.http.routers.protected-service.tls.certresolver=letsencrypt
- traefik.http.routers.protected-service.middlewares=authelia@docker
- traefik.http.services.protected-service.loadbalancer.server.port=80
```
### TCP routing (для SSH)
```yaml
labels:
- traefik.enable=true
- traefik.tcp.routers.git-ssh.rule=HostSNI(`*`)
- traefik.tcp.routers.git-ssh.entrypoints=ssh
- traefik.tcp.services.git-ssh.loadbalancer.server.port=22
```
## SSL/TLS Configuration
### ACME Settings
- **Challenge Type**: TLS-01 (HTTP challenge через порт 443)
- **Storage**: `/data/acme.json` внутри контейнера
- **Email**: Обязательно указать для уведомлений о истечении сертификатов
- **Domains**: Автоматически из Host rules в labels
### Security Headers (рекомендуемые)
```yaml
labels:
- traefik.http.middlewares.security-headers.headers.frameDeny=true
- traefik.http.middlewares.security-headers.headers.sslRedirect=true
- traefik.http.middlewares.security-headers.headers.browserXssFilter=true
- traefik.http.middlewares.security-headers.headers.contentTypeNosniff=true
- traefik.http.middlewares.security-headers.headers.forceSTSHeader=true
- traefik.http.middlewares.security-headers.headers.stsIncludeSubdomains=true
- traefik.http.middlewares.security-headers.headers.stsPreload=true
- traefik.http.middlewares.security-headers.headers.stsSeconds=31536000
```
## Middleware Configuration
### Redirect to HTTPS
```yaml
- traefik.http.middlewares.redirect-to-https.redirectscheme.scheme=https
```
### Rate Limiting
```yaml
- traefik.http.middlewares.rate-limit.ratelimit.burst=100
- traefik.http.middlewares.rate-limit.ratelimit.average=50
```
### CORS Headers
```yaml
- traefik.http.middlewares.cors.headers.accessControlAllowOriginList=*
- traefik.http.middlewares.cors.headers.accessControlAllowMethods=GET,OPTIONS,PUT,POST,DELETE
- traefik.http.middlewares.cors.headers.accessControlAllowHeaders=*
```
## Environment Variables
Traefik поддерживает конфигурацию через переменные окружения:
```yaml
environment:
- TRAEFIK_API_DASHBOARD=true
- TRAEFIK_PROVIDERS_DOCKER=true
- TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=:80
- TRAEFIK_ENTRYPOINTS_WEBSECURE_ADDRESS=:443
- TRAEFIK_CERTIFICATESRESOLVERS_LETSENCRYPT_ACME_EMAIL=your_email@aepif.ru
```
## Безопасность конфигурации
### ⚠️ Проблемы безопасности в текущей конфигурации
1. **Dashboard без аутентификации**: `--api.insecure=true` делает Dashboard доступным без авторизации
2. **Docker socket**: Доступ к Docker API может быть использован для эскалации привилегий
### 🔒 Рекомендации по улучшению безопасности
1. Убрать `--api.insecure=true` и настроить аутентификацию для Dashboard
2. Добавить middleware для Dashboard:
```yaml
- traefik.http.routers.traefik.middlewares=authelia@docker
```
3. Использовать Docker socket proxy для ограничения доступа к Docker API
## Связанные файлы
- **[[Развертывание]]** - инструкции по первоначальной настройке
- **[[Администрирование]]** - управление и мониторинг
- **[[../Authelia Authentication/Конфигурации]]** - настройка middleware аутентификации