Sign inSign up

gaboita/acestream-engine

By gaboita

Updated 7 days ago

Self-maintained AceStream engine, auto-rebuilt on new releases. See gabo-it/Acestream-Manager.

Image
0

2.2K

gaboita/acestream-engine repository overview

AceStream Manager — Engine

Self-maintained AceStream engine image, part of the AceStream Manager stack.

This image is not meant to be run standalone — it's one of three services (acestream, acexy, webui) that make up the full stack, orchestrated via Docker Compose.

🚀 Quick start (full stack)

Create a docker-compose.yml with the content below, adjust any values directly in it, then run docker compose up -d. No separate .env file needed.

services:
  acestream:
    image: ghcr.io/gabo-it/acestream-engine:latest
    container_name: acestream-engine
    restart: unless-stopped
    environment:
      HTTP_PORT: "6677"
      PORT: "44556"
      ACCESS_TOKEN: ""          # set this if this port is reachable beyond your LAN
      # Any official engine flag goes in this one line — reference:
      # https://docs.acestream.net/developers/engine-command-line-options/
      ENGINE_FLAGS: "--client-console --bind-all --live-cache-type memory"
      # Containers default to UTC — edit to your IANA timezone (e.g.
      # Europe/Rome) for correctly-timed container clocks/logs.
      TZ: "UTC"
    expose:
      - "6677"
    ports:
      - "6677:6677"
      - "44556:44556/tcp"
      - "44556:44556/udp"
    networks:
      - acestream-net
    healthcheck:
      test: ["CMD-SHELL", "wget -q -t1 -O- http://127.0.0.1:6677/webui/api/service?method=get_version | grep -q '\"error\": null'"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 25s
    tmpfs:
      - /srv/ace/.ACEStream:size=512m,mode=1777   # keeps all engine caching in RAM

  acexy:
    image: ghcr.io/javinator9889/acexy:0.2.2
    container_name: acexy
    restart: unless-stopped
    depends_on:
      acestream:
        condition: service_healthy
    environment:
      ACEXY_HOST: acestream
      ACEXY_PORT: "6677"
      ACEXY_LISTEN_ADDR: ":8080"
      ACEXY_NO_RESPONSE_TIMEOUT: 30s   # raise if streams fail with "timeout awaiting response headers"
      ACEXY_BUFFER_SIZE: 4.2MiB        # raise if playback is choppy
      ACEXY_CLIENT_EVICTION_TIMEOUT: 10s
      TZ: "UTC"
    ports:
      - "8080:8080"
    networks:
      - acestream-net

  webui:
    image: ghcr.io/gabo-it/acestream-webui:latest
    container_name: acestream-webui
    restart: unless-stopped
    depends_on:
      - acexy
    environment:
      PORT: "4000"
      DB_PATH: /data/acestream.db
      ACESTREAM_HTTP_PORT: "6677"
      TZ: "UTC"
    volumes:
      - webui-data:/data
    ports:
      - "4000:4000"
    networks:
      - acestream-net

  # Optional: self-hosted EPG translation / cross-alphabet matching.
  # Disabled by default: docker compose --profile translate up -d
  # Then: Playlist → "LibreTranslate URL" → http://libretranslate:5000
  libretranslate:
    image: libretranslate/libretranslate:latest
    container_name: libretranslate
    restart: unless-stopped
    profiles: ["translate"]
    environment:
      # ~200MB RAM per language loaded — adjust to your actual EPG languages.
      LT_LOAD_ONLY: en,it,ru
    volumes:
      - libretranslate-models:/home/libretranslate/.local
    networks:
      - acestream-net
    # Edit directly to match your hardware — no .env needed.
    deploy:
      resources:
        limits:
          cpus: '1'
          memory: 1G

  # Optional: Cloudflare WARP for the webui's own outbound requests only —
  # not connected to AceStream/acexy traffic, nothing routed through it yet.
  # ⚠️ Requires NET_ADMIN — a much broader permission than anything else here.
  # Disabled by default: docker compose --profile warp up -d
  warp:
    image: caomingjun/warp
    container_name: warp
    restart: unless-stopped
    profiles: ["warp"]
    cap_add:
      - NET_ADMIN
    sysctls:
      - net.ipv6.conf.all.disable_ipv6=0
      - net.ipv4.conf.all.src_valid_mark=1
    environment:
      - WARP_SLEEP=2
    volumes:
      - warp-data:/var/lib/cloudflare-warp
    networks:
      - acestream-net

networks:
  acestream-net:
    driver: bridge

volumes:
  webui-data:
  libretranslate-models:
  warp-data:

docker compose up -d alone starts the three core services — libretranslate is a separate profile and stays off unless requested: docker compose --profile translate up -d. Only needed for optional EPG translation / cross-alphabet channel matching; self-hosted, no third-party service involved. Its CPU/RAM limits above are deliberate — translation is real neural inference and, uncapped, can peg every core on a shared host.

🔗 Full project

GitHub: gabo-it/Acestream-Manager

See the main repository for:

  • Full feature list (channel management, EPG, playlists, search, football schedules, and more)
  • Configuration reference and troubleshooting
  • Building from source

🏷️ Tags

  • latest — always the most recent build
  • <version> (e.g. 3.2.11) — matches the bundled AceStream engine version
  • v1.0, v1.1, ... — pinned to a specific stable release of the whole stack

🔄 Auto-rebuilt

This image is automatically rebuilt via GitHub Actions whenever a new AceStream engine version is published upstream — see .github/workflows/docker-build.yml.

🙏 Credits

Built on top of the official AceStream engine.

Tag summary

Content type

Image

Digest

sha256:50b039fd2

Size

140.6 MB

Last updated

7 days ago

docker pull gaboita/acestream-engine