- Создана новая организационная структура с эмодзи-папками - Добавлена система Inbox для быстрого захвата идей - Созданы шаблоны для всех типов заметок с YAML метаданными - Перенесен весь контент из старой структуры в новую - Добавлен главный дашборд с динамическими запросами - Создано подробное руководство по использованию системы - Техническая документация реорганизована по типам Основные улучшения: ✅ Inbox-first подход для новых заметок ✅ Тематическая организация по 8 областям знаний ✅ Шаблоны с метаданными для структурированности ✅ Система связей между заметками ✅ Динамические дашборды с аналитикой ✅ Централизованная техническая документация без дублирования
325 lines
9.8 KiB
Markdown
325 lines
9.8 KiB
Markdown
# 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/Развертывание]]** - следующий шаг развертывания |