From 75ab4fb87a8e74d55af18282f99ae5340962d6c2 Mon Sep 17 00:00:00 2001 From: alex-chevski Date: Fri, 13 Mar 2026 13:32:05 +0300 Subject: [PATCH 1/4] feat: add LiveKit Egress and MinIO integration - Add livekit-egress service for video call recording - Add MinIO S3-compatible storage for recordings - Configure S3 storage in egress.yaml - Add MINIO_* environment variables - Update LIVEKIT_API_KEY to match dev2 configuration - Remove sensitive credentials from egress.yaml (use ENV vars instead) --- .env.infra-example | 12 +++++++++--- .gitignore | 1 + docker-compose.yml | 44 +++++++++++++++++++++++++++++++++++++++++++- livekit/egress.yaml | 11 +++++++++++ 4 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 livekit/egress.yaml 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..cb2ea71 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: /config/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..708da79 --- /dev/null +++ b/livekit/egress.yaml @@ -0,0 +1,11 @@ +ws_url: wss://livekit.eatv.io + +redis: + address: livekit-redis:6379 + +storage: + s3: + region: us-east-1 + bucket: eatvio-recordings + endpoint: https://testing.eatv.io + force_path_style: true From 7c12551b27007f966f5650af2d2cb4152628349d Mon Sep 17 00:00:00 2001 From: alex-chevski Date: Fri, 13 Mar 2026 13:39:13 +0300 Subject: [PATCH 2/4] feat: add php8.4-sodium --- phpdocker/php-fpm/Dockerfile | 1 + 1 file changed, 1 insertion(+) 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; \ From 326b58a02d871633a2b2baa8dadf97dbc913ce7a Mon Sep 17 00:00:00 2001 From: alex-chevski Date: Fri, 13 Mar 2026 14:17:05 +0300 Subject: [PATCH 3/4] fix(config): move egress.yaml to project root and use env variables --- docker-compose.yml | 2 +- livekit/egress.yaml => livekit_egress.yaml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) rename livekit/egress.yaml => livekit_egress.yaml (51%) diff --git a/docker-compose.yml b/docker-compose.yml index cb2ea71..b1df023 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -240,7 +240,7 @@ services: AWS_SECRET_ACCESS_KEY: ${MINIO_ROOT_PASSWORD} LIVEKIT_URL: ${LIVEKIT_URL} REDIS_HOST: livekit-redis:6379 - EGRESS_CONFIG_FILE: /config/egress.yaml + EGRESS_CONFIG_FILE: livekit_egress.yaml volumes: - ./livekit/egress.yaml:/config/egress.yaml:ro diff --git a/livekit/egress.yaml b/livekit_egress.yaml similarity index 51% rename from livekit/egress.yaml rename to livekit_egress.yaml index 708da79..60a04d0 100644 --- a/livekit/egress.yaml +++ b/livekit_egress.yaml @@ -1,4 +1,4 @@ -ws_url: wss://livekit.eatv.io +ws_url: ${LIVEKIT_WS_URL} redis: address: livekit-redis:6379 @@ -6,6 +6,6 @@ redis: storage: s3: region: us-east-1 - bucket: eatvio-recordings - endpoint: https://testing.eatv.io + bucket: ${MINIO_BUCKET} + endpoint: https://${MINIO_PUBLIC_HOST} force_path_style: true From 309442e0457640df6aff35f2c216c47b07730657 Mon Sep 17 00:00:00 2001 From: alex-chevski Date: Fri, 13 Mar 2026 14:18:37 +0300 Subject: [PATCH 4/4] fix(docker-compose): correct egress config volume path --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index b1df023..2f7a30d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -242,7 +242,7 @@ services: REDIS_HOST: livekit-redis:6379 EGRESS_CONFIG_FILE: livekit_egress.yaml volumes: - - ./livekit/egress.yaml:/config/egress.yaml:ro + - ./livekit_egress.yaml:/config/egress.yaml:ro networks: web: