vault backup: 2025-08-04 12:49:10
This commit is contained in:
@@ -298,4 +298,4 @@ ssh-keyscan -p 2222 git.aepif.ru >> ~/.ssh/known_hosts
|
||||
- Environment переменных контейнеров
|
||||
- Примонтированных SSH ключах
|
||||
|
||||
Следующий документ: [[Развертывание]]
|
||||
Следующий документ: [[Мой сервер/Second Mind Setup/Развертывание]]
|
||||
@@ -94,5 +94,5 @@ graph TB
|
||||
|
||||
Для развертывания системы изучите:
|
||||
- [[Мой сервер/Second Mind Setup/Конфигурации]] - настройки всех сервисов
|
||||
- [[Развертывание]] - пошаговая инструкция установки
|
||||
- [[Администрирование]] - обслуживание и мониторинг
|
||||
- [[Мой сервер/Second Mind Setup/Развертывание]] - пошаговая инструкция установки
|
||||
- [[Мой сервер/Second Mind Setup/Администрирование]] - обслуживание и мониторинг
|
||||
@@ -339,4 +339,4 @@ docker exec -it second_mind_nginx ls -la /usr/share/nginx/html/
|
||||
- ✅ Полнотекстовый поиск и граф связей
|
||||
- ✅ SSL сертификаты для всех доменов
|
||||
|
||||
Следующий документ: [[Администрирование]]
|
||||
Следующий документ: [[Мой сервер/Second Mind Setup/Администрирование]]
|
||||
508
Мой сервер/Инфраструктура/Администрирование.md
Normal file
508
Мой сервер/Инфраструктура/Администрирование.md
Normal file
@@ -0,0 +1,508 @@
|
||||
# Инфраструктура - Администрирование
|
||||
|
||||
## Мониторинг системы
|
||||
|
||||
### Проверка статуса всех сервисов
|
||||
|
||||
```bash
|
||||
# Статус инфраструктурных сервисов
|
||||
cd /DOCKER/reverse-proxy && docker-compose ps
|
||||
cd /DOCKER/auth && docker-compose ps
|
||||
|
||||
# Общий статус системы
|
||||
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
||||
|
||||
# Использование ресурсов
|
||||
docker stats --no-stream traefik authelia auth_redis
|
||||
```
|
||||
|
||||
### Мониторинг Traefik
|
||||
|
||||
#### Dashboard и метрики
|
||||
|
||||
```bash
|
||||
# Проверка Traefik dashboard
|
||||
curl -I https://traefik.aepif.ru/dashboard/
|
||||
|
||||
# Просмотр конфигурации маршрутов
|
||||
curl https://traefik.aepif.ru/api/http/routers | jq
|
||||
|
||||
# Проверка SSL сертификатов
|
||||
curl https://traefik.aepif.ru/api/http/routers | jq '.[] | select(.tls) | {name, rule, tls}'
|
||||
|
||||
# Статистика сервисов
|
||||
curl https://traefik.aepif.ru/api/http/services | jq
|
||||
```
|
||||
|
||||
#### Логи Traefik
|
||||
|
||||
```bash
|
||||
# Просмотр логов в реальном времени
|
||||
cd /DOCKER/reverse-proxy
|
||||
docker-compose logs -f traefik
|
||||
|
||||
# Поиск ошибок SSL
|
||||
docker-compose logs traefik | grep -i "acme\|ssl\|tls"
|
||||
|
||||
# Анализ трафика
|
||||
docker-compose logs traefik | grep -E "GET|POST" | tail -20
|
||||
```
|
||||
|
||||
### Мониторинг Authelia
|
||||
|
||||
#### Проверка аутентификации
|
||||
|
||||
```bash
|
||||
# Health check Authelia
|
||||
curl https://auth.aepif.ru/api/health
|
||||
|
||||
# Проверка конфигурации
|
||||
cd /DOCKER/auth
|
||||
docker exec authelia authelia validate-config /config/configuration.yml
|
||||
|
||||
# Статистика пользователей
|
||||
docker exec authelia sqlite3 /config/db.sqlite3 "SELECT * FROM user_preferences;"
|
||||
```
|
||||
|
||||
#### Анализ логов аутентификации
|
||||
|
||||
```bash
|
||||
# Логи Authelia
|
||||
cd /DOCKER/auth
|
||||
docker-compose logs -f authelia
|
||||
|
||||
# Поиск неуспешных попыток входа
|
||||
docker-compose logs authelia | grep -i "authentication\|failed\|banned"
|
||||
|
||||
# Статистика входов по пользователям
|
||||
docker-compose logs authelia | grep "Successful" | cut -d' ' -f8 | sort | uniq -c
|
||||
```
|
||||
|
||||
### Мониторинг Redis
|
||||
|
||||
```bash
|
||||
# Статус Redis
|
||||
cd /DOCKER/auth
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" info
|
||||
|
||||
# Количество активных сессий
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" info keyspace
|
||||
|
||||
# Список ключей сессий
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "authelia*"
|
||||
|
||||
# Время жизни сессий
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*" | head -5 | xargs -I {} docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" ttl {}
|
||||
```
|
||||
|
||||
## Обслуживание SSL сертификатов
|
||||
|
||||
### Проверка статуса сертификатов
|
||||
|
||||
```bash
|
||||
# Просмотр всех сертификатов
|
||||
cd /DOCKER/reverse-proxy
|
||||
docker exec traefik cat /data/acme.json | jq '.letsencrypt.Certificates[] | {domains: .domain.main, expires: .certificate}' 2>/dev/null || echo "Нет сертификатов"
|
||||
|
||||
# Проверка срока действия сертификата
|
||||
echo | openssl s_client -connect aepif.ru:443 2>/dev/null | openssl x509 -noout -dates
|
||||
|
||||
# Проверка для всех доменов
|
||||
for domain in traefik.aepif.ru auth.aepif.ru notes.aepif.ru git.aepif.ru webhook.aepif.ru; do
|
||||
echo "=== $domain ==="
|
||||
echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -subject -dates
|
||||
echo
|
||||
done
|
||||
```
|
||||
|
||||
### Принудительное обновление сертификатов
|
||||
|
||||
```bash
|
||||
# Удаление старых сертификатов (ОСТОРОЖНО!)
|
||||
cd /DOCKER/reverse-proxy
|
||||
docker-compose stop traefik
|
||||
docker volume rm reverse-proxy_traefik_data
|
||||
docker volume create traefik_data
|
||||
docker-compose up -d traefik
|
||||
|
||||
# Проверка получения новых сертификатов
|
||||
docker-compose logs -f traefik | grep -i acme
|
||||
```
|
||||
|
||||
## Управление пользователями
|
||||
|
||||
### Добавление нового пользователя
|
||||
|
||||
```bash
|
||||
# Генерация хеша пароля
|
||||
NEW_PASSWORD="secure-password-123"
|
||||
PASSWORD_HASH=$(docker run --rm authelia/authelia:latest authelia hash-password "$NEW_PASSWORD")
|
||||
|
||||
# Редактирование базы пользователей
|
||||
cd /DOCKER/auth
|
||||
cp authelia/users_database.yml authelia/users_database.yml.backup
|
||||
|
||||
cat >> authelia/users_database.yml << EOF
|
||||
|
||||
newuser:
|
||||
displayname: "New User"
|
||||
password: "$PASSWORD_HASH"
|
||||
email: newuser@aepif.ru
|
||||
groups:
|
||||
- users
|
||||
EOF
|
||||
|
||||
# Применение изменений
|
||||
docker-compose restart authelia
|
||||
|
||||
# Проверка
|
||||
docker-compose logs authelia | grep -i "user\|config"
|
||||
```
|
||||
|
||||
### Смена пароля пользователя
|
||||
|
||||
```bash
|
||||
# Генерация нового хеша
|
||||
NEW_PASSWORD="new-secure-password"
|
||||
PASSWORD_HASH=$(docker run --rm authelia/authelia:latest authelia hash-password "$NEW_PASSWORD")
|
||||
|
||||
# Редактирование файла пользователей
|
||||
cd /DOCKER/auth
|
||||
nano authelia/users_database.yml
|
||||
|
||||
# Замените строку password для нужного пользователя
|
||||
# Перезапуск Authelia
|
||||
docker-compose restart authelia
|
||||
```
|
||||
|
||||
### Удаление пользователя
|
||||
|
||||
```bash
|
||||
# Создание резервной копии
|
||||
cd /DOCKER/auth
|
||||
cp authelia/users_database.yml authelia/users_database.yml.backup
|
||||
|
||||
# Редактирование (удалить секцию пользователя)
|
||||
nano authelia/users_database.yml
|
||||
|
||||
# Очистка сессий пользователя из Redis
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*username*" | xargs docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" del
|
||||
|
||||
# Перезапуск
|
||||
docker-compose restart authelia
|
||||
```
|
||||
|
||||
## Управление политиками доступа
|
||||
|
||||
### Добавление нового защищенного сервиса
|
||||
|
||||
```bash
|
||||
# Редактирование конфигурации Authelia
|
||||
cd /DOCKER/auth
|
||||
nano authelia/configuration.yml
|
||||
|
||||
# Добавить новое правило в секцию access_control.rules:
|
||||
# - domain: newservice.aepif.ru
|
||||
# policy: one_factor
|
||||
|
||||
# Применение изменений
|
||||
docker-compose restart authelia
|
||||
```
|
||||
|
||||
### Изменение политик безопасности
|
||||
|
||||
```bash
|
||||
# Для более строгой безопасности (требует 2FA)
|
||||
cd /DOCKER/auth
|
||||
nano authelia/configuration.yml
|
||||
|
||||
# Изменить policy с one_factor на two_factor для нужных доменов
|
||||
# - domain: notes.aepif.ru
|
||||
# policy: two_factor
|
||||
|
||||
# Перезапуск
|
||||
docker-compose restart authelia
|
||||
```
|
||||
|
||||
## Обновления
|
||||
|
||||
### Обновление Traefik
|
||||
|
||||
```bash
|
||||
cd /DOCKER/reverse-proxy
|
||||
|
||||
# Проверка текущей версии
|
||||
docker exec traefik traefik version
|
||||
|
||||
# Получение новой версии
|
||||
docker-compose pull traefik
|
||||
|
||||
# Обновление с сохранением конфигурации
|
||||
docker-compose up -d traefik
|
||||
|
||||
# Проверка логов
|
||||
docker-compose logs -f traefik
|
||||
```
|
||||
|
||||
### Обновление Authelia
|
||||
|
||||
```bash
|
||||
cd /DOCKER/auth
|
||||
|
||||
# Создание резервной копии конфигурации
|
||||
tar czf authelia_backup_$(date +%Y%m%d).tar.gz authelia/
|
||||
|
||||
# Проверка текущей версии
|
||||
docker exec authelia authelia --version
|
||||
|
||||
# Получение новой версии
|
||||
docker-compose pull authelia
|
||||
|
||||
# Обновление
|
||||
docker-compose up -d authelia
|
||||
|
||||
# Проверка совместимости конфигурации
|
||||
docker exec authelia authelia validate-config /config/configuration.yml
|
||||
```
|
||||
|
||||
### Обновление Redis
|
||||
|
||||
```bash
|
||||
cd /DOCKER/auth
|
||||
|
||||
# Создание дампа данных
|
||||
docker exec auth_redis redis-cli -a "$REDIS_PASSWORD" save
|
||||
|
||||
# Обновление образа
|
||||
docker-compose pull redis
|
||||
docker-compose up -d redis
|
||||
|
||||
# Проверка работоспособности
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" ping
|
||||
```
|
||||
|
||||
## Резервное копирование
|
||||
|
||||
### Автоматический backup скрипт
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# /opt/scripts/infrastructure_backup.sh
|
||||
|
||||
BACKUP_DIR="/opt/backups/infrastructure"
|
||||
DATE=$(date +%Y%m%d_%H%M%S)
|
||||
|
||||
mkdir -p $BACKUP_DIR
|
||||
|
||||
echo "Starting infrastructure backup - $DATE"
|
||||
|
||||
# Backup Traefik data (SSL сертификаты)
|
||||
echo "Backing up Traefik data..."
|
||||
docker run --rm -v reverse-proxy_traefik_data:/data -v $BACKUP_DIR:/backup alpine \
|
||||
tar czf /backup/traefik_data_$DATE.tar.gz -C /data .
|
||||
|
||||
# Backup Authelia configuration
|
||||
echo "Backing up Authelia config..."
|
||||
tar czf $BACKUP_DIR/authelia_config_$DATE.tar.gz -C /DOCKER/auth authelia/
|
||||
|
||||
# Backup Redis data
|
||||
echo "Backing up Redis data..."
|
||||
docker exec auth_redis redis-cli -a "$REDIS_PASSWORD" save
|
||||
docker run --rm -v auth_redis_data:/data -v $BACKUP_DIR:/backup alpine \
|
||||
tar czf /backup/redis_data_$DATE.tar.gz -C /data .
|
||||
|
||||
# Backup environment files
|
||||
echo "Backing up environment files..."
|
||||
tar czf $BACKUP_DIR/env_files_$DATE.tar.gz \
|
||||
/DOCKER/reverse-proxy/.env \
|
||||
/DOCKER/auth/.env \
|
||||
/DOCKER/reverse-proxy/docker-compose.yml \
|
||||
/DOCKER/auth/docker-compose.yml
|
||||
|
||||
# Cleanup old backups (keep 7 days)
|
||||
find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
|
||||
|
||||
echo "Infrastructure backup completed - $DATE"
|
||||
```
|
||||
|
||||
### Настройка автоматического backup
|
||||
|
||||
```bash
|
||||
# Создание скрипта
|
||||
sudo mkdir -p /opt/scripts
|
||||
sudo nano /opt/scripts/infrastructure_backup.sh
|
||||
sudo chmod +x /opt/scripts/infrastructure_backup.sh
|
||||
|
||||
# Создание директории для бэкапов
|
||||
sudo mkdir -p /opt/backups/infrastructure
|
||||
|
||||
# Добавление в crontab (ежедневно в 2:00)
|
||||
echo "0 2 * * * /opt/scripts/infrastructure_backup.sh >> /var/log/infrastructure_backup.log 2>&1" | sudo crontab -
|
||||
```
|
||||
|
||||
### Восстановление из backup
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# Восстановление инфраструктуры из backup
|
||||
|
||||
BACKUP_DATE="20250804_020000" # Измените на нужную дату
|
||||
BACKUP_DIR="/opt/backups/infrastructure"
|
||||
|
||||
# Остановка сервисов
|
||||
cd /DOCKER/reverse-proxy && docker-compose down
|
||||
cd /DOCKER/auth && docker-compose down
|
||||
|
||||
# Восстановление Traefik data
|
||||
docker volume rm reverse-proxy_traefik_data
|
||||
docker volume create reverse-proxy_traefik_data
|
||||
docker run --rm -v reverse-proxy_traefik_data:/data -v $BACKUP_DIR:/backup alpine \
|
||||
tar xzf /backup/traefik_data_$BACKUP_DATE.tar.gz -C /data
|
||||
|
||||
# Восстановление Authelia config
|
||||
rm -rf /DOCKER/auth/authelia
|
||||
tar xzf $BACKUP_DIR/authelia_config_$BACKUP_DATE.tar.gz -C /DOCKER/auth/
|
||||
|
||||
# Восстановление Redis data
|
||||
docker volume rm auth_redis_data
|
||||
docker volume create auth_redis_data
|
||||
docker run --rm -v auth_redis_data:/data -v $BACKUP_DIR:/backup alpine \
|
||||
tar xzf /backup/redis_data_$BACKUP_DATE.tar.gz -C /data
|
||||
|
||||
# Восстановление env файлов
|
||||
tar xzf $BACKUP_DIR/env_files_$BACKUP_DATE.tar.gz -C /
|
||||
|
||||
# Запуск сервисов
|
||||
cd /DOCKER/reverse-proxy && docker-compose up -d
|
||||
cd /DOCKER/auth && docker-compose up -d
|
||||
|
||||
echo "Восстановление завершено"
|
||||
```
|
||||
|
||||
## Диагностика проблем
|
||||
|
||||
### Проблемы с маршрутизацией
|
||||
|
||||
```bash
|
||||
# Проверка правил маршрутизации в Traefik
|
||||
curl https://traefik.aepif.ru/api/http/routers | jq '.[] | {name, rule, service}'
|
||||
|
||||
# Проверка состояния сервисов
|
||||
curl https://traefik.aepif.ru/api/http/services | jq '.[] | {name, status}'
|
||||
|
||||
# Тест конкретного маршрута
|
||||
curl -H "Host: notes.aepif.ru" http://localhost/
|
||||
```
|
||||
|
||||
### Проблемы с аутентификацией
|
||||
|
||||
```bash
|
||||
# Проверка Forward Auth middleware
|
||||
curl -v https://notes.aepif.ru/
|
||||
|
||||
# Проверка сессий в Redis
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*"
|
||||
|
||||
# Тест API Authelia
|
||||
curl -v https://auth.aepif.ru/api/verify
|
||||
|
||||
# Сброс заблокированного пользователя
|
||||
docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" keys "*banned*" | xargs docker exec -it auth_redis redis-cli -a "$REDIS_PASSWORD" del
|
||||
```
|
||||
|
||||
### Проблемы с SSL
|
||||
|
||||
```bash
|
||||
# Проверка ACME логов
|
||||
docker logs traefik 2>&1 | grep -i acme
|
||||
|
||||
# Тест получения сертификата вручную
|
||||
docker exec traefik sh -c "curl -I http://test.aepif.ru/.well-known/acme-challenge/test"
|
||||
|
||||
# Проверка файла acme.json
|
||||
docker exec traefik ls -la /data/
|
||||
docker exec traefik cat /data/acme.json | jq '.letsencrypt.Certificates | length'
|
||||
```
|
||||
|
||||
## Мониторинг производительности
|
||||
|
||||
### Настройка метрик
|
||||
|
||||
```bash
|
||||
# Добавление Prometheus метрик в Traefik
|
||||
cd /DOCKER/reverse-proxy
|
||||
nano docker-compose.yml
|
||||
|
||||
# Добавить в command секцию:
|
||||
# - --metrics.prometheus=true
|
||||
# - --metrics.prometheus.addEntryPointsLabels=true
|
||||
# - --metrics.prometheus.addServicesLabels=true
|
||||
|
||||
docker-compose up -d traefik
|
||||
```
|
||||
|
||||
### Анализ производительности
|
||||
|
||||
```bash
|
||||
# Статистика запросов к Traefik
|
||||
curl https://traefik.aepif.ru/metrics
|
||||
|
||||
# Анализ времени ответа
|
||||
curl -w "@curl-format.txt" -o /dev/null -s https://notes.aepif.ru/
|
||||
|
||||
# Создание файла curl-format.txt:
|
||||
cat > curl-format.txt << 'EOF'
|
||||
time_namelookup: %{time_namelookup}s\n
|
||||
time_connect: %{time_connect}s\n
|
||||
time_appconnect: %{time_appconnect}s\n
|
||||
time_pretransfer: %{time_pretransfer}s\n
|
||||
time_redirect: %{time_redirect}s\n
|
||||
time_starttransfer: %{time_starttransfer}s\n
|
||||
----------\n
|
||||
time_total: %{time_total}s\n
|
||||
EOF
|
||||
```
|
||||
|
||||
## Автоматизация обслуживания
|
||||
|
||||
### Скрипт проверки системы
|
||||
|
||||
```bash
|
||||
#!/bin/bash
|
||||
# /opt/scripts/infrastructure_health_check.sh
|
||||
|
||||
echo "=== Infrastructure Health Check $(date) ==="
|
||||
|
||||
# Проверка статуса контейнеров
|
||||
echo "Container Status:"
|
||||
docker ps --filter "name=traefik" --filter "name=authelia" --filter "name=auth_redis" --format "table {{.Names}}\t{{.Status}}"
|
||||
|
||||
# Проверка доступности сервисов
|
||||
echo -e "\nService Availability:"
|
||||
for service in traefik.aepif.ru auth.aepif.ru; do
|
||||
if curl -s -o /dev/null -w "%{http_code}" https://$service | grep -q "200\|302"; then
|
||||
echo "$service: OK"
|
||||
else
|
||||
echo "$service: FAILED"
|
||||
fi
|
||||
done
|
||||
|
||||
# Проверка SSL сертификатов (срок действия)
|
||||
echo -e "\nSSL Certificates:"
|
||||
for domain in traefik.aepif.ru auth.aepif.ru; do
|
||||
expiry=$(echo | openssl s_client -connect $domain:443 -servername $domain 2>/dev/null | openssl x509 -noout -enddate | cut -d= -f2)
|
||||
echo "$domain expires: $expiry"
|
||||
done
|
||||
|
||||
# Проверка использования диска
|
||||
echo -e "\nDisk Usage:"
|
||||
df -h /var/lib/docker | tail -1
|
||||
|
||||
echo -e "\n=== End Health Check ==="
|
||||
```
|
||||
|
||||
Система администрирования настроена! Теперь у вас есть полный контроль над инфраструктурой.
|
||||
|
||||
Связанные документы:
|
||||
- [[Инфраструктура - Обзор системы]]
|
||||
- [[Second Mind - Администрирование]]
|
||||
148
Мой сервер/Инфраструктура/Развертывание.md
Normal file
148
Мой сервер/Инфраструктура/Развертывание.md
Normal file
@@ -0,0 +1,148 @@
|
||||
## Предварительные требования
|
||||
|
||||
### Системные требования
|
||||
- Ubuntu/Debian сервер с минимум 2GB RAM
|
||||
- Docker и Docker Compose установлены
|
||||
- Открыты порты: 80, 443, 2222, 8080
|
||||
- Настроены DNS записи для поддоменов
|
||||
|
||||
### Подготовка DNS
|
||||
|
||||
Создайте A-записи для всех поддоменов:
|
||||
```dns
|
||||
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
|
||||
```
|
||||
|
||||
## Порядок развертывания
|
||||
|
||||
⚠️ **Важно**: Инфраструктурные сервисы должны быть развернуты **первыми**, так как все остальные приложения зависят от них.
|
||||
|
||||
### Последовательность установки:
|
||||
1. **Traefik Reverse Proxy** (сначала)
|
||||
2. **Authelia Authentication** (после Traefik)
|
||||
3. **Second Mind** (после обеих частей инфраструктуры)
|
||||
|
||||
## 1. Развертывание Traefik
|
||||
|
||||
### Подготовка директорий
|
||||
|
||||
```bash
|
||||
# Создание директории проекта
|
||||
mkdir -p /DOCKER/reverse-proxy
|
||||
cd /DOCKER/reverse-proxy
|
||||
|
||||
# Создание volume для данных Traefik
|
||||
docker volume create traefik_data
|
||||
```
|
||||
|
||||
### Создание .env файла
|
||||
|
||||
```bash
|
||||
cat > .env << 'EOF'
|
||||
DOMAIN=aepif.ru
|
||||
ADMIN_EMAIL=epifantsev1aa@gmail.com
|
||||
EOF
|
||||
```
|
||||
|
||||
### Создание docker-compose.yml
|
||||
|
||||
```bash
|
||||
cat > docker-compose.yml << 'EOF'
|
||||
version: '3.8'
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v3.0
|
||||
container_name: traefik
|
||||
command:
|
||||
- --api.dashboard=true
|
||||
- --providers.docker=true
|
||||
- --providers.docker.exposedbydefault=false
|
||||
- --providers.docker.network=proxy
|
||||
- --entrypoints.web.address=:80
|
||||
- --entrypoints.websecure.address=:443
|
||||
- --entrypoints.ssh.address=:2222
|
||||
- --certificatesresolvers.letsencrypt.acme.email=epifantsev1aa@gmail.com
|
||||
- --certificatesresolvers.letsencrypt.acme.storage=/data/acme.json
|
||||
- --certificatesresolvers.letsencrypt.acme.tlschallenge=true
|
||||
- --providers.docker.exposedByDefault=false
|
||||
- --api.insecure=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
|
||||
- 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
|
||||
EOF
|
||||
```
|
||||
|
||||
### Создание сети и запуск
|
||||
|
||||
```bash
|
||||
# Создание внешней сети proxy
|
||||
docker network create proxy
|
||||
|
||||
# Запуск Traefik
|
||||
docker-compose up -d
|
||||
|
||||
# Проверка статуса
|
||||
docker-compose ps
|
||||
docker-compose logs -f
|
||||
```
|
||||
|
||||
### Проверка работы Traefik
|
||||
|
||||
```bash
|
||||
# Проверка HTTP → HTTPS редиректа
|
||||
curl -I http://traefik.aepif.ru
|
||||
|
||||
# Проверка HTTPS
|
||||
curl -I https://traefik.aepif.ru
|
||||
|
||||
# Проверка dashboard (должен быть доступен)
|
||||
curl -I https://traefik.aepif.ru/dashboard/
|
||||
```
|
||||
|
||||
## 2. Развертывание Authelia
|
||||
|
||||
### Подготовка директорий
|
||||
|
||||
```bash
|
||||
# Создание директории проекта
|
||||
mkdir -p /DOCKER/auth/authelia
|
||||
cd /DOCKER/auth
|
||||
```
|
||||
|
||||
### Генерация секретов
|
||||
|
||||
```bash
|
||||
# Генерация всех необходимых секретов
|
||||
JWT_SECRET=$(openssl rand -base64 48)
|
||||
SESSION_SECRET=$(openssl rand -base64 48)
|
||||
STORAGE_KEY=$(openssl rand -base64 24)
|
||||
REDIS_PASSWORD=$(
|
||||
Reference in New Issue
Block a user