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