Cors для контейнера AceStream engine

Я взял контейнер vstavrinov/acestream-engine:latest, хотел разместить его на хостинге для трансляции, но при http запросах на сервер возникает ошибка CORS. Возможно как-то разрешить политику CORS на сервере Ace Stream engine?

FROM python:3.8
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
ENV BASE_URL="https://download.acestream.media/linux"
ENV ACE_VERSION="3.1.75rc4_ubuntu_18.04_x86_64_py3.8"
ENV PYTHONDONTWRITEBYTECODE=0
RUN useradd --shell /bin/bash --home-dir /srv/ace --create-home ace
USER ace
WORKDIR /srv/ace
ADD setup.cfg .
RUN curl --progress-bar $BASE_URL/acestream_$ACE_VERSION.tar.gz | tar xzf -; \
    cd lib; unzip \*.egg; rm *.egg; cd;                                      \
    ln -s /dev/shm/.ACEStream .ACEStream;                                    \
    pip install --no-cache-dir --upgrade --requirement requirements.txt
CMD mkdir /dev/shm/.ACEStream; \
    ./start-engine             \
        --client-console       \
        --live-cache-type memory

Hello, I have placed a docker container on the hosting. I want to make requests there and get a response as m3u8. Only I get a response in the form of .ts returned with port 6878 (with port does not work, only without port). Question, how can I fix it?

Без понимания конечной цели на этот вопрос трудно ответить однозначно:

  • если цель в том, чтобы дать клиенту веб-интерфейс к уже запущенному на устройстве пользователя движку Ace Stream, то см. JavaScript Library - Ace Stream Wiki
  • если же цель в том, чтобы отдавать уже готовый HTTP поток или HLS/M3U плейлист, который воспроизводится в плеере, и не требует запущенного на устройстве пользователя движка Ace Stream, то сам движок нужно “прятать” за прокси сервером - “прямым” (HTTP AceProxy) или “обратным” (nginx).
    В случае nginx сам движок лучше запускать на отдельном IP/хосте, тогда конфиг nginx может выглядеть как-то так:
HTTP
server {
    listen 6878;
    server_name ace.host;
    return 301 http://$server_name:80$request_uri;
}
server {
	listen 80;
	server_name ace.host;
	
	access_log /var/log/nginx/ace_access.log;
	error_log /var/log/nginx/ace_error.log;

    location / {
	proxy_pass http://ace_engine_IP:6878;
	proxy_read_timeout 300;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_redirect http://ace.host:6878/ http://ace.host:80/;
        proxy_intercept_errors on;
    }
}

или

HTTPS
server {
    listen 80;
    server_name ace.host;
    return 301 https://$server_name:443$request_uri;
}
server {
    listen 6878;
    server_name ace.host;
    return 301 https://$server_name:443$request_uri;
}
server {
	listen 443 ssl http2;
	server_name ace.host;
	
	access_log /var/log/nginx/ace_access.log;
	error_log /var/log/nginx/ace_error.log;

    location / {
	proxy_pass http://ace_engine_IP:6878;
	proxy_read_timeout 300;
	proxy_set_header Host $host;
	proxy_set_header X-Real-IP $remote_addr;
	proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
	proxy_redirect http://ace.host:6878/ https://ace.host:443/;
        proxy_intercept_errors on;
    }
}

С CORS разобрался, возникает другая проблема. Получаю .m3u8, начинается подгрузка .ts для трансляции, но на 3-4 части происходит ошибка в браузере.

На firefox:
NS_BINDING_ABORTED

На chrome:
canceled

Он принимает первые 2 .ts файла и дальше не отвечает. С чем это может быть связано?

Скриншот из Firefox: https://post-images.org/photo-page.php?photo=YsyoHMTC

Ответ с сервера nginx

127.0.0.1 - - [05/Aug/2024:09:39:20 +0000] "GET /ace/m/88c482d9e57b1a031c032344f9c00cf7b36da8d9/f528764d624db129b32c21fbca0cb8d6.m3u8 HTTP/1.1" 200 186 "http://localhost:5173/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"
127.0.0.1 - - [05/Aug/2024:09:39:21 +0000] "GET /ace/m/88c482d9e57b1a031c032344f9c00cf7b36da8d9/f528764d624db129b32c21fbca0cb8d6.m3u8 HTTP/1.1" 200 283 "http://localhost:5173/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"
127.0.0.1 - - [05/Aug/2024:09:39:21 +0000] "GET /ace/c/88c482d9e57b1a031c032344f9c00cf7b36da8d9/0.ts HTTP/1.1" 200 5150072 "http://localhost:5173/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"
127.0.0.1 - - [05/Aug/2024:09:39:24 +0000] "GET /ace/m/88c482d9e57b1a031c032344f9c00cf7b36da8d9/f528764d624db129b32c21fbca0cb8d6.m3u8 HTTP/1.1" 200 478 "http://localhost:5173/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"
127.0.0.1 - - [05/Aug/2024:09:39:25 +0000] "GET /ace/c/88c482d9e57b1a031c032344f9c00cf7b36da8d9/1.ts HTTP/1.1" 200 5912222 "http://localhost:5173/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:128.0) Gecko/20100101 Firefox/128.0"

Обращаясь через POSTMAN напрямую я получаю ответ со статусом 200 и 9мб фрагмент трансляции