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)
This commit is contained in:
2026-03-13 13:32:05 +03:00
parent 13b5b738f4
commit 75ab4fb87a
4 changed files with 64 additions and 4 deletions

View File

@@ -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

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@
app/
mysql_data/
typesense-data/
minio_data/.minio.sys

View File

@@ -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

11
livekit/egress.yaml Normal file
View File

@@ -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