Files
second-mind-aep/Мой сервер/Инфраструктура/Развертывание.md
2025-08-04 12:49:10 +04:00

4.1 KiB
Raw Blame History

Предварительные требования

Системные требования

  • Ubuntu/Debian сервер с минимум 2GB RAM
  • Docker и Docker Compose установлены
  • Открыты порты: 80, 443, 2222, 8080
  • Настроены DNS записи для поддоменов

Подготовка DNS

Создайте 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

Порядок развертывания

⚠️ Важно: Инфраструктурные сервисы должны быть развернуты первыми, так как все остальные приложения зависят от них.

Последовательность установки:

  1. Traefik Reverse Proxy (сначала)
  2. Authelia Authentication (после Traefik)
  3. Second Mind (после обеих частей инфраструктуры)

1. Развертывание Traefik

Подготовка директорий

# Создание директории проекта
mkdir -p /DOCKER/reverse-proxy
cd /DOCKER/reverse-proxy

# Создание volume для данных Traefik
docker volume create traefik_data

Создание .env файла

cat > .env << 'EOF'
DOMAIN=aepif.ru
ADMIN_EMAIL=epifantsev1aa@gmail.com
EOF

Создание docker-compose.yml

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

Создание сети и запуск

# Создание внешней сети proxy
docker network create proxy

# Запуск Traefik
docker-compose up -d

# Проверка статуса
docker-compose ps
docker-compose logs -f

Проверка работы Traefik

# Проверка 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

Подготовка директорий

# Создание директории проекта
mkdir -p /DOCKER/auth/authelia
cd /DOCKER/auth

Генерация секретов

# Генерация всех необходимых секретов
JWT_SECRET=$(openssl rand -base64 48)
SESSION_SECRET=$(openssl rand -base64 48) 
STORAGE_KEY=$(openssl rand -base64 24)
REDIS_PASSWORD=$(