Skip to content

IberianSoldierPC/HTTPAceProxy

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

738 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

HTTPAceProxy

Docker Pulls GitHub Release License

HTTPAceProxy allows you to watch Ace Stream live streams and torrent files over HTTP. Access Ace Stream content through a simple HTTP interface compatible with VLC, KODI, IPTV apps, and modern browsers.

✨ Features

  • 🎯 Direct Streaming - Access Ace Stream content via HTTP URLs
  • πŸ“Ί Pre-configured Channels - 1300+ channels ready to use (NewEra, Elcano & AcePL plugins)
  • πŸ‘₯ Multi-Client & Multi-Channel - Multiple users can watch different channels simultaneously
  • πŸ”Œ Plugin System - Extensible architecture for custom channel sources
  • πŸ“Š Real-time Statistics - Monitor connections, bandwidth, and system resources
  • 🐳 Docker Ready - Multi-architecture support (AMD64, ARM64, ARM32)
  • 🌐 Reverse Proxy Compatible - Works with Nginx, Nginx Proxy Manager, Caddy
  • πŸ”„ Auto-updates - Playlists refresh automatically from IPFS and API sources

πŸš€ Quick Start

Using Docker (Recommended)

1. Standalone HTTPAceProxy (connect to external Ace Stream)

docker run -d \
  --name httpaceproxy \
  -p 8888:8888 \
  -e ACESTREAM_HOST=your_acestream_host \
  -e ACESTREAM_API_PORT=62062 \
  -e ACESTREAM_HTTP_PORT=6878 \
  -e MAX_CONNECTIONS=10 \
  -e MAX_CONCURRENT_CHANNELS=5 \
  jopsis/httpaceproxy:latest

2. All-in-One (HTTPAceProxy + AceServe Engine)

Complete solution with HTTPAceProxy and AceServe (lightweight Ace Stream Engine):

# Download compose file
curl -O https://raw.githubusercontent.com/jopsis/HTTPAceProxy/master/docker-compose-aio.yml

# Start services (automatically selects x64, arm64, or arm32 image)
docker-compose -f docker-compose-aio.yml up -d

AceServe Images:

  • jopsis/aceserve:latest - AMD64/Intel systems, ARM64 (Raspberry Pi 4, Apple Silicon), ARM32 (Raspberry Pi 3 and older)

Features:

  • Built-in healthcheck - HTTPAceProxy waits for AceServe to be ready before starting
  • Automatic dependency management with depends_on: service_healthy
  • No manual configuration needed

Access

Once running, access HTTPAceProxy at:

http://localhost:8888

Dashboards:

http://localhost:8888/stat          # Real-time statistics
http://localhost:8888/statplugin    # Channel browser with peer checking

Playlists:

http://localhost:8888/newera   (322 sports channels)
http://localhost:8888/elcano   (71 curated channels)
http://localhost:8888/acepl    (1000+ channels from Acestream API)

πŸ“– Documentation

🎬 Usage Examples

Direct Content ID Access

http://localhost:8888/content_id/HASH/stream.ts
http://localhost:8888/pid/HASH/stream.ts

Individual Channel from Plugins

http://localhost:8888/newera/channel/DAZN%201%20FHD.m3u8
http://localhost:8888/elcano/channel/Eurosport%201.ts

In VLC

# Open Network Stream (Ctrl+N)
vlc "http://localhost:8888/newera"

# Or command line
vlc "http://localhost:8888/content_id/HASH/stream.ts"

In KODI

  1. Install PVR IPTV Simple Client
  2. Configure β†’ Add-ons β†’ My Add-ons β†’ PVR clients
  3. PVR IPTV Simple Client β†’ Configure
  4. M3U Play List URL: http://localhost:8888/newera

πŸ‘₯ Multi-Client & Multi-Channel Support

HTTPAceProxy supports multiple simultaneous connections with intelligent broadcast management:

Multiple Clients, Same Channel

  • βœ… Unlimited clients can watch the same channel simultaneously
  • βœ… Efficient resource usage - one Ace Stream connection shared by all viewers
  • βœ… Automatic broadcast management - starts when first client connects, stops when last disconnects

Multiple Clients, Different Channels

  • βœ… Up to 5 different channels streaming concurrently (configurable)
  • βœ… Each channel has its own dedicated Ace Stream connection
  • βœ… Independent lifecycle management per channel
  • βœ… Automatic cleanup when channels become inactive

Architecture

Client A1, A2, A3 β†’ Broadcast A (DAZN 1)     β†’ AceStream Connection 1
Client B1         β†’ Broadcast B (Eurosport)  β†’ AceStream Connection 2
Client C1, C2     β†’ Broadcast C (La Liga TV) β†’ AceStream Connection 3

Configuration

Docker (Recommended): Configure via environment variables in docker-compose.yml:

environment:
  - MAX_CONNECTIONS=10           # Maximum total client connections (default: 10)
  - MAX_CONCURRENT_CHANNELS=5    # Maximum different channels (default: 5)

Direct Python: Edit aceconfig.py:

maxconns = 10              # Maximum total client connections
maxconcurrentchannels = 5  # Maximum different channels simultaneously

Example Scenarios:

  • 10 clients watching DAZN 1 β†’ Uses 1 channel slot, 10 connections
  • 3 clients on DAZN 1 + 2 clients on Eurosport 1 β†’ Uses 2 channel slots, 5 connections
  • 5 different channels with 1 client each β†’ Uses all 5 slots (limit reached), 5 connections
  • For 50 clients and 10 different channels: Set MAX_CONNECTIONS=50 and MAX_CONCURRENT_CHANNELS=10

πŸ”Œ Active Plugins

Plugin Channels Description Source
NewEra 322 Sports channels (La Liga, Champions, DAZN, NBA, F1, etc.) IPFS
Elcano 71 Curated sports selection IPFS
AcePL 1000+ Official Acestream API channels (Sports, Movies, Regional, etc.) Acestream API
Stat - Real-time statistics and monitoring dashboard Built-in
StatPlugin - Channel browser with availability & peer checking Built-in

πŸ› οΈ Requirements

  • Python: 3.10+ (Python 3.11 recommended)
  • Dependencies:
    • gevent >= 25.9.1
    • psutil >= 7.2.1
    • requests >= 2.32.0
  • Ace Stream Engine: Required (local or remote)
    • Recommended: AceServe (lightweight Docker image by jopsis)
    • Alternative: Official Ace Stream Engine

πŸ—οΈ Installation Methods

Method 1: Docker (Recommended)

See Docker Setup Guide for detailed instructions.

Method 2: Direct Python

# Clone repository
git clone https://github.com/jopsis/HTTPAceProxy.git
cd HTTPAceProxy

# Install dependencies
pip install -r requirements.txt

# Configure (optional)
cp aceconfig.py.example aceconfig.py
# Edit aceconfig.py with your settings

# Run
python acehttp.py

Method 3: Using Make

make install  # Install dependencies
make run      # Start server
make docker   # Build Docker image

See Quick Start Guide for more options.

βš™οΈ Configuration

Environment Variables (Docker)

# Ace Stream Engine connection
ACESTREAM_HOST=127.0.0.1       # Ace Stream Engine host
ACESTREAM_API_PORT=62062       # Ace Stream API port
ACESTREAM_HTTP_PORT=6878       # Ace Stream HTTP port

# HTTPAceProxy settings
ACEPROXY_PORT=8888             # HTTPAceProxy port

# Connection limits (optional)
MAX_CONNECTIONS=10             # Maximum total client connections (default: 10)
MAX_CONCURRENT_CHANNELS=5      # Maximum different channels simultaneously (default: 5)

# Plugin control (optional)
ENABLED_PLUGINS=all            # Which plugins to enable (default: all)
                               # Options: 'all', 'newera,acepl,stat', 'stat,statplugin', etc.
                               # Available: newera, elcano, acepl, stat, statplugin

# Plugin playlist URLs (optional - uses defaults if not set)
NEWERA_PLAYLIST_URL=           # Custom NewEra playlist URL
ELCANO_PLAYLIST_URL=           # Custom Elcano playlist URL

Configuration File

Edit aceconfig.py to customize:

  • Ace Stream Engine connection
  • HTTP server settings (host, port)
  • Security settings (firewall, max connections)
  • Multi-channel settings (concurrent channels, max clients)
  • Plugin configurations

Key Configuration Options:

# Via aceconfig.py (or environment variables in Docker):
maxconns = 10                  # Maximum total client connections (env: MAX_CONNECTIONS)
maxconcurrentchannels = 5      # Maximum different channels simultaneously (env: MAX_CONCURRENT_CHANNELS)
httpport = 8888                # HTTPAceProxy listening port
ace = {                        # Ace Stream Engine connection
    'aceHostIP': '127.0.0.1',  # env: ACESTREAM_HOST
    'aceAPIport': '62062',     # env: ACESTREAM_API_PORT
    'aceHTTPport': '6878'      # env: ACESTREAM_HTTP_PORT
}

See acedefconfig.py for all available options.

Plugin Control

Control which plugins are loaded using the ENABLED_PLUGINS environment variable:

Enable all plugins (default):

environment:
  - ENABLED_PLUGINS=all

Enable specific plugins only:

# Only playlist plugins (no dashboards)
environment:
  - ENABLED_PLUGINS=newera,elcano,acepl

# Only dashboards (no playlists)
environment:
  - ENABLED_PLUGINS=stat,statplugin

# Only NewEra and Stats
environment:
  - ENABLED_PLUGINS=newera,stat,statplugin

# Only AcePL plugin
environment:
  - ENABLED_PLUGINS=acepl

Disable all plugins:

environment:
  - ENABLED_PLUGINS=

Available plugins:

  • newera - 322 sports channels (IPFS)
  • elcano - 71 curated channels (IPFS)
  • acepl - 1000+ channels (Acestream API)
  • stat - Real-time statistics dashboard
  • statplugin - Channel browser with peer checking

Notes:

  • Plugin names are case-insensitive
  • Use comma-separated list for multiple plugins
  • Invalid plugin names will be logged as warnings and ignored
  • The server will show enabled/disabled plugins in the logs on startup

Custom Playlist URLs

Override the default playlist URLs for NewEra and Elcano plugins using environment variables:

NewEra Plugin URL:

environment:
  - NEWERA_PLAYLIST_URL=https://your-custom-url/playlist.m3u

Elcano Plugin URL:

environment:
  - ELCANO_PLAYLIST_URL=https://your-custom-url/playlist.m3u

Example - Use custom URLs for both:

environment:
  - ENABLED_PLUGINS=newera,elcano,stat,statplugin
  - NEWERA_PLAYLIST_URL=https://my-server.com/newera.m3u
  - ELCANO_PLAYLIST_URL=https://<PROYECTO>-ids.vercel.app/hashes_acestream.m3u

Default URLs:

  • NewEra: https://ipfs.io/ipns/<IDIPFS>/data/listas/lista_fuera_iptv.m3u
  • Elcano: https://<PROYECTO>-ids.vercel.app/hashes_acestream.m3u

Notes:

  • If not specified, plugins use their default URLs
  • URLs can point to IPFS, HTTPS, or local files (file:///path/to/playlist.m3u)
  • Changes require container restart to take effect
  • Custom URLs will be shown in the startup logs

Connection Limits Examples

Configure limits based on your use case:

Personal Use (1-5 users):

environment:
  - MAX_CONNECTIONS=10
  - MAX_CONCURRENT_CHANNELS=3

Family/Small Group (5-15 users):

environment:
  - MAX_CONNECTIONS=25
  - MAX_CONCURRENT_CHANNELS=5

Shared Server (15-50 users):

environment:
  - MAX_CONNECTIONS=100
  - MAX_CONCURRENT_CHANNELS=15

Important Notes:

  • Multiple clients watching the same channel only count as 1 channel slot
  • Each different channel requires 1 channel slot and a dedicated AceStream connection
  • Total connections includes all clients across all channels
  • Adjust based on your server resources and bandwidth

🌐 Reverse Proxy Setup

HTTPAceProxy works behind reverse proxies. See detailed guides:

Important: Disable HTTP/2 and buffering for best streaming performance.

πŸ“Š Monitoring & Dashboards

HTTPAceProxy provides two modern web dashboards for monitoring:

Statistics Dashboard (/stat)

http://localhost:8888/stat

Real-time system monitoring with:

  • Active connections and client IPs
  • System resources (CPU, RAM, disk)
  • Download/upload speeds per client
  • Connection duration and peer statistics
  • Auto-refresh every 2 seconds

Plugin Channels Dashboard (/statplugin)

http://localhost:8888/statplugin

Browse and check all available channels with:

  • Channel List: All channels from all plugins
  • Availability Check: Verify if content exists (fast check)
  • Peer Check: Start stream briefly to count active peers (deep check)
  • Bulk Operations: "Check All" and "Peers All" buttons per plugin
  • Filter: Search channels by name
  • Cache: Results cached for faster subsequent checks

Features:

  • Check individual channels or entire plugins at once
  • Visual indicators: Available (green), Unavailable (red), Unknown (gray)
  • Peer count display: P2P peers + HTTP peers
  • Progress bar for bulk operations

πŸ”§ Troubleshooting

Stream doesn't start

  1. Verify Ace Stream Engine is running:

    curl http://ACESTREAM_HOST:62062/webui/api/service?method=get_version
  2. Check HTTPAceProxy logs:

    docker logs httpaceproxy -f
  3. Test direct access (without proxy):

    curl -I http://localhost:8888/stat

High latency or buffering

  1. Increase network cache in VLC (3000ms recommended)
  2. Verify reverse proxy has buffering disabled
  3. Check available bandwidth and peers

Connection closes immediately

  • If using reverse proxy: Disable HTTP/2, increase timeouts
  • See NGINX-NPM-SETUP.md for configuration

πŸ—οΈ Building from Source

Local Build

docker build -t httpaceproxy:local .

Multi-architecture Build

docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t httpaceproxy:multi .

GitHub Actions

Automatic builds are configured for:

  • Push to master/main β†’ latest tag
  • Release tags β†’ version-specific tags
  • Multi-arch: AMD64 + ARM64

🀝 Contributing

Contributions are welcome! Areas for improvement:

  • Plugin Development - Add new channel sources
  • Documentation - Translations, examples
  • Testing - Multi-platform testing
  • Features - EPG integration, authentication, etc.

Creating a Plugin

See plugins/PluginInterface_example.py for a template.

  1. Create plugins/yourplugin_plugin.py
  2. Define handlers (URL paths)
  3. Implement handle(connection) method
  4. Add configuration in plugins/config/yourplugin.py

πŸ“„ License

GPL-3.0 License - See LICENSE file for details.

⚠️ Legal Notice

Be careful with torrent/streaming content. Depending on your country's copyright laws, you may face legal consequences for viewing or distributing copyrighted material without authorization.

This software is provided for legitimate uses only. The authors are not responsible for any misuse.

πŸ”— Links

πŸ“ˆ Project Statistics

  • Language: Python 3.11
  • Lines of Code: ~9,000+
  • Active Plugins: 5 (NewEra, Elcano, AcePL, Stat, StatPlugin)
  • Available Channels: 1390+ (322 NewEra + 71 Elcano + 1000+ AcePL)
  • Concurrent Channels: Up to 5 different streams simultaneously (configurable)
  • Multi-Client: Unlimited clients per channel
  • Supported Architectures: AMD64, ARM64, ARM32 (armv7)
  • Docker Image Size: ~200MB
  • Web Dashboards: 2 (Statistics + Channel Browser)

Latest Version: Check Releases for the latest stable version.

Need Help? Open an issue or check the documentation links above.

About

Forking for update to NewEra and add ace

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 74.8%
  • HTML 18.8%
  • CSS 2.8%
  • JavaScript 1.9%
  • Shell 1.1%
  • Makefile 0.3%
  • Dockerfile 0.3%