Sign inSign up

gaboita/acestream-webui

By gaboita

Updated 6 days ago

Web UI for AceStream channels, EPG & playlists. See gabo-it/Acestream-Manager.

Image
Networking
Web servers
Content management system
1

2.2K

gaboita/acestream-webui repository overview

AceStream Manager — Web UI

The web interface of AceStream Manager: a self-hosted, self-maintained Docker stack for AceStream — channel management, EPG, playlists, search, and more, all from your browser.

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

Create a docker-compose.yml with the content below, adjust any values directly in it (ports, engine limits, acexy tuning), then run docker compose up -d. Works whether you clone the GitHub repo or just paste this into a Portainer stack — 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 & setup instructions

GitHub: gabo-it/Acestream-Manager

The main repository has the full README covering configuration, troubleshooting, building from source, and more advanced deployment options.

✨ What it does

  • Dashboard (upcoming programs, recently added channels, quick stats) and a Live TV view with now/next info per channel
  • Channel CRUD, bulk import, per-source auto-refresh scheduling
  • EPG import with cross-alphabet tvg-id/logo matching and optional program-title translation (via self-hosted LibreTranslate)
  • AceStream search with bulk import
  • Dual playlists (MPEG-TS + HLS), built-in web player, VLC/AcePlayer options
  • Add-Ons: cast to remote VLC instances, active Jellyfin control (test connection, trigger library refresh), a LAN scanner to find both, optional Cloudflare WARP status check
  • Reachability/version indicators next to each engine URL in Settings, config export/import

🏷️ Tags

  • latest — always the most recent build
  • v1.0, v1.1, ... — pinned to a specific stable release

🔄 Auto-rebuilt

Published automatically via GitHub Actions on every push to main — see .github/workflows/docker-build.yml.

Tag summary

Content type

Image

Digest

sha256:ce0f03a0f

Size

349.7 MB

Last updated

6 days ago

docker pull gaboita/acestream-webui