## Предварительные требования ### Системные требования - 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=$(