diff --git a/.env.infra-example b/.env.infra-example index 85db77a..5d3cfa4 100644 --- a/.env.infra-example +++ b/.env.infra-example @@ -18,10 +18,16 @@ PROD_DB_HOST="10.nn.n.n" PROD_DB_PORT="10nn" MY_APP_GIT_URL="ssh://git@10.55.5.123:222/eatvio/eatvio.git" LIVEKIT_URL="livekit.eatv.io" -LIVEKIT_WS_URL="livekit.eatv.io" +LIVEKIT_WS_URL=wss://livekit.eatv.io LIVEKIT_TURN_DOMAIN="turn.eatv.io" -LIVEKIT_API_KEY=APITRajpYFYdtk9 -LIVEKIT_API_SECRET=VKCfO954C3OU0IeeXxZ1fiUDx9ZmWtvNNp9fCHRfO2JH +LIVEKIT_API_KEY= +LIVEKIT_API_SECRET= LIVEKIT_PORT=7880 LIVEKIT_RTC_TCP_PORT=7881 LIVEKIT_TURN_UDP_PORT=3478 + +# MinIO S3 Configuration +MINIO_PUBLIC_HOST=testing.eatv.io +MINIO_ROOT_USER=minioadmin +MINIO_ROOT_PASSWORD=minioadminpass +MINIO_BUCKET=eatvio-recordings diff --git a/.gitignore b/.gitignore index b020775..feac693 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ app/ mysql_data/ typesense-data/ +minio_data/.minio.sys diff --git a/docker-compose.yml b/docker-compose.yml index 5ed9410..2f7a30d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -164,6 +164,28 @@ services: labels: - "traefik.enable=false" + minio: + image: minio/minio:latest + command: server /data --console-address ":9001" + environment: + MINIO_ROOT_USER: ${MINIO_ROOT_USER} + MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD} + TZ: Europe/Moscow + volumes: + - ./minio_data:/data + networks: + - ns-eatvio + - web + ports: + - "9010:9000" # S3 API + - "9011:9001" # Web-консоль MinIO (опционально) + labels: + - "traefik.docker.network=web" + - "traefik.enable=true" + - "traefik.frontend.rule=Host:${MINIO_PUBLIC_HOST}" + - "traefik.port=9000" + - "traefik.protocol=http" + livekit: image: livekit/livekit-server:latest depends_on: @@ -198,10 +220,30 @@ services: labels: - "traefik.docker.network=web" - "traefik.enable=true" - - "traefik.frontend.rule=Host:turn.eatv.io,livekit.eatv.io" + - "traefik.frontend.rule=Host:${LIVEKIT_TURN_DOMAIN},${LIVEKIT_URL}" - "traefik.port=${LIVEKIT_PORT:-7880}" - "traefik.protocol=http" + livekit-egress: + image: livekit/egress:latest + restart: always + depends_on: + - livekit + - livekit-redis + networks: + - ns-eatvio + environment: + LIVEKIT_API_KEY: ${LIVEKIT_API_KEY} + LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET} + LIVEKIT_WS_URL: ${LIVEKIT_WS_URL} + AWS_ACCESS_KEY_ID: ${MINIO_ROOT_USER} + AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD} + LIVEKIT_URL: ${LIVEKIT_URL} + REDIS_HOST: livekit-redis:6379 + EGRESS_CONFIG_FILE: livekit_egress.yaml + volumes: + - ./livekit_egress.yaml:/config/egress.yaml:ro + networks: web: external: true diff --git a/livekit_egress.yaml b/livekit_egress.yaml new file mode 100644 index 0000000..60a04d0 --- /dev/null +++ b/livekit_egress.yaml @@ -0,0 +1,11 @@ +ws_url: ${LIVEKIT_WS_URL} + +redis: + address: livekit-redis:6379 + +storage: + s3: + region: us-east-1 + bucket: ${MINIO_BUCKET} + endpoint: https://${MINIO_PUBLIC_HOST} + force_path_style: true diff --git a/phpdocker/php-fpm/Dockerfile b/phpdocker/php-fpm/Dockerfile index 8ac338a..e2ec43b 100644 --- a/phpdocker/php-fpm/Dockerfile +++ b/phpdocker/php-fpm/Dockerfile @@ -13,6 +13,7 @@ RUN apt-get update && \ php8.4-memcached \ php8.4-pgsql \ php8.4-xdebug \ + php8.4-sodium \ python3-pkg-resources supervisor ffmpeg jpegoptim \ nodejs && npm install -g npm@latest \ apt-get clean; \