Acestream (engine) + Bonus (Acexy)
Taimado - Last Update 25/01/2026IMPORTANTE: No quiero ni un solo privado preguntando por listas. El que me abra uno preguntando por listas de enlaces lo baneo sin más preguntas. No doy soporte ni recomendaciones en ese sentido. El que avisa no es traidor.
Parece que en las últimas fechas hay movimiento en torno al tema de los streamings vía acestream en las distintas plataformas, y cómo no en la que más nos afecta, véase CE/LE.
En el siguiente tuto voy a explicar cómo instalar Acestream engine en un equipo con CE/LE y docker corriendo en el mismo. Básicamente lo que vamos a poder hacer es acceder de forma remota, ya sea en la propia LAN o en nuestra VPN preferida a dicho engine y poder visualizar desde muestro reproductor preferido el stream correspondiente.
Para este tuto voy a usar la funcionalidad stacks de Portainer, por lo cómodo que resulta para todo el mundo, en especial para aquellos que tienen pocos conocimientos de docker, por lo que si eres de éstos y no tienes todavía instalado ni docker ni Portainer estás tardando en instalarlos.
Llegados a este punto muchos ya os estaréis preguntando qué eso del bonus del título de este post. Básicamente (y esto es opcional) estamos hablando de instalar un proxy que nos permita conectar varios clientes a dicho engine para que de esta forma varios clientes puedan bien ver el mismo stream o streams diferentes...Y esto lo haremos con Acexy.
Así todo si solo quieres el engine para poder acceder a él de forma local con un único cliente (por ejemplo el IPTV Simple Client de Kodi) vete al apartado 1.
En caso de que quieres aprovechar las funcionalidades que ofrece Acexy y poder acceder con varios clientes a uno o varios streams simultáneamente ya sea en la propia LAN o desde el exterior (haciendo uso de una VPN) avanza hasta el apartado 2.
1.- Instalación únicamente de Acestream Engine en equipo reproductor:
Entramos en Portainer y en el menú de la izquierda pulsamos sobre #stacks:

Una vez pulsada la opción stacks nos vamos arriba a la derecha donde pone Add stack:

No aparecerá una nueva pantalla en la que nos tendremos que fijar en varios campos:

En el apartado Name es donde le pondremos un nombre a nuestro nuevo stack, por ejemplo Acestream.
El apartado seleccionado en azul llamado Web Editor nos permitira introducir el compose directamente en el editor que aparece más abajo. Nos dirigimos al mismo y pegamos lo siguiente:
services:
aceserve:
image: jopsis/aceserve:latest
# platform: linux/arm64
logging:
driver: none
container_name: aceserve-arm32
restart: unless-stopped
ports:
- "6878:6878"
- "8622:8621"
Nota: si tenéis problemas a la hora de copiar/pegar el compose copiadlo desde la fuente del creador en GitHub
En esta compose he seleccionado la imagen precisa para los equipos con arm32. Si el tuyo es arm64 solo tendrías que descomentar (eliminar la # de la línea plattform: linux:/arm64)
Tened en cuenta que hay que tener especial cuidado con los espacios y las tabulaciones.
Lo siguiente será hacer el deploy del stack. Para ello bajamos un poco hasta que veamos un botón blanco llamado Deploy the stack. Lo pulsamos y si todo está hecho correctamente al rato ya tendremos nuestro contenedor corriendo.

Si ahora os desplazáis en el menú de la derecha al apartado contenedores ya os debería de aparecer ahí:

Si bien NO es obligatorio es recomendable hacer un port forwarding (un dstNAT si nos ponemos escrupulosos y usamos por ejemplo un Mikrotik) en nuestro router de los puertos 8621/TCP y 8621/UDP hacia el servidor que aloja el engine.
Lo más complicado ya lo tenemos. Ahora si lo que queremos es por ejemplo poder visualizar desde Kodi enlaces acestream de una lista m3u usando el IPTV Simple Client tan solo tenemos que cargar la lista en el IPTV Simple Client y listo. Las IP de los streamings de la lista deberían de apuntar hacia el localhost (127.0.0.1) en el puerto 6878, tal y como podéis ver en la siguiente captura:

2. Instalación de Acexy + Acestream Engine
Básicamente Acexy es un proxy que recibe las llamadas a los enlaces de acestream por un puerto determinado TCP, en este caso el 8080 (aportando de esta forma una capa más de estabilidad), les otorga un id de cliente único y redirige la petición al acestream engine.
Esto implica que necesitaremos (como es obvio) instalar el propio Acexy pero también hacer unos cambios en la lista m3u que pretendemos visualizar desde el o los clientes locales o remotos.
No voy a explicar cómo instalar una VPN aquí, porque no es es sitio dedicado a ello, lo único que voy a indicar es cómo instalar Acexy y los cambios que hay que hacer en la lista m3u.
Empecemos por el stack. Si eres nuevo en esto de los stacks te lo explico en el punto 1.
services:
acexy:
# platform: linux/arm64
image: ghcr.io/javinator9889/acexy:latest
container_name: acexy
restart: unless-stopped
ports:
- 8080:8080/tcp
environment:
ACEXY_LISTEN_ADDR: ":8080" # Listen on port 8080
ACEXY_SCHEME: "http" # Use HTTP
ACEXY_HOST: "acestream" # Host is "acestream" or the name of the AceStream service
ACEXY_PORT: "6878" # Port is 6878
ACEXY_M3U8_STREAM_TIMEOUT: "60s" # Timeout is 60 seconds when in M3U8 mode
ACEXY_M3U8: "false" # Disable M3U8 mode
ACEXY_EMPTY_TIMEOUT: "60s" # Timeout to close the connection if no data is received
ACEXY_BUFFER_SIZE: 4MB # Buffer size is 4MB
ACEXY_NO_RESPONSE_TIMEOUT: "10s" # Timeout to close the connection if no response is received
links:
- aceserve
depends_on:
- aceserve
networks:
- acexy-aceserve
aceserve:
container_name: aceserve-arm32
# platform: linux/arm64
ports:
- "6878:6878"
- "8621:8621"
image: jopsis/aceserve:latest
restart: unless-stoppped
networks:
- acexy-aceserve
networks:
acexy-aceserve:
driver: bridge
De nuevo os hago notar que si vuestra arquitectura es arm64 tendréis que descomentar la línea # platform: linux/arm64.
Nota: Si tenéis problemas a la hora de copiar y pegar este compose en vuestro stack copiadlo directamente del raw del git del creador. Pegadlo en como viene ahí y una vez hecho esto incluid la arquitectura de vuestro equipo, ya sea arm32 o arm64.
NO es obligatorio pero sí recomendable hacer un port forwarding (un dstNAT si nos ponemos escrupulosos y usamos por ejemplo un Mikrotik) en nuestro router de los puertos 8621/TCP y 8621/UDP hacia el servidor que aloja el engine.
Como muchos ya os habréis dado cuenta esta nueva configuración implica que hay que hacer algún cambio en la lista a cargar por parte de los clientes de visionado, ya sean locales (de la misma LAN) como remotos (VPN).
Si bien podemos tener varias listas mapeadas lo más práctico puede ser cambiar directamente la IP 127.0.0.1 que es la IP loopback, o lo que es lo mismo, una IP que siempre apunta al propio equipo por la IP que tiene en vuestra LAN. Del mismo modo el puerto 6878 que aparece en la lista también se debe cambiar, ya que al usar Acexy este escuchará las llamadas al puerto 8080, que es el mapeado, tal y como podéis ver en el compose/stack de más arriba. con todo la lista m3u debería de tener el siguiente aspecto:

Como podéis ver ahora los clientes dirigirán las llamadas a la IP donde se aloja el servidor que corre Acexy + Acestream engine, en este caso 192.168.1.57 y el puerto 8080 que corresponde al usado por Acexy.
Obviamente vosotros tendríais que modificar la lista con la IP de vuestro servidor.
BONUS:
En ocasiones cuando hay múltiples clientes accediendo a Acexy a veces alguno de ellos en vez de hacer una petición GET o POST hace una petición HEAD, devolviendo Acexy un error 405. Esto si ocurre una vez no es problema pero si se repite mucho se bloquea Acexy.
El problema es que no se puede solventar simplemente con un healtcheck. Acexy aparentemente sigue ON pero no redirige nada al motor con lo que no se preproduce nada. ¿Solución? Usar Acexy con un dominio local apuntando al container de Acexy creando para ello un nuevo proxy host en el NPM:

A continuación dentro de las opciones del nuevo proxy host prohibiremos las llamadas HEAD al mismo. ¿Cómo? Fácil, en la pestaña advanced, introduciendo:
if ($request_method = HEAD) { return 405;}
De tal forma que nos quedaría así en el Nginx Proxy Manager:

Al hacer esto si lanzamos a modo de test una petición HEAD al proxy host de Acexy será el NPM el que resuelva y devuelva el error 405 y no el propio Acexy, evitando de esta forma que el contenedor se bloquee.
