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.
- π― 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
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:latestComplete 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 -dAceServe 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
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)
- Quick Start Guide - Installation and setup
- Usage Guide - Complete usage examples (VLC, KODI, IPTV apps)
- Plugin Documentation - NewEra, Elcano and AcePL plugin details
- Plugin Control - Enable/disable plugins via environment variables
- Docker Setup - Advanced Docker configuration
- Ace Stream Setup - Configure Ace Stream Engine
- Connection Limits - Configure client and channel limits
- Nginx Proxy Manager Setup - Reverse proxy configuration
http://localhost:8888/content_id/HASH/stream.ts
http://localhost:8888/pid/HASH/stream.ts
http://localhost:8888/newera/channel/DAZN%201%20FHD.m3u8
http://localhost:8888/elcano/channel/Eurosport%201.ts
# Open Network Stream (Ctrl+N)
vlc "http://localhost:8888/newera"
# Or command line
vlc "http://localhost:8888/content_id/HASH/stream.ts"- Install PVR IPTV Simple Client
- Configure β Add-ons β My Add-ons β PVR clients
- PVR IPTV Simple Client β Configure
- M3U Play List URL:
http://localhost:8888/newera
HTTPAceProxy supports multiple simultaneous connections with intelligent broadcast management:
- β 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
- β 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
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
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 simultaneouslyExample 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=50andMAX_CONCURRENT_CHANNELS=10
| 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 |
- 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
See Docker Setup Guide for detailed instructions.
# 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.pymake install # Install dependencies
make run # Start server
make docker # Build Docker imageSee Quick Start Guide for more options.
# 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 URLEdit 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.
Control which plugins are loaded using the ENABLED_PLUGINS environment variable:
Enable all plugins (default):
environment:
- ENABLED_PLUGINS=allEnable 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=aceplDisable 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 dashboardstatplugin- 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
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.m3uElcano Plugin URL:
environment:
- ELCANO_PLAYLIST_URL=https://your-custom-url/playlist.m3uExample - 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.m3uDefault 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
Configure limits based on your use case:
Personal Use (1-5 users):
environment:
- MAX_CONNECTIONS=10
- MAX_CONCURRENT_CHANNELS=3Family/Small Group (5-15 users):
environment:
- MAX_CONNECTIONS=25
- MAX_CONCURRENT_CHANNELS=5Shared Server (15-50 users):
environment:
- MAX_CONNECTIONS=100
- MAX_CONCURRENT_CHANNELS=15Important 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
HTTPAceProxy works behind reverse proxies. See detailed guides:
- Nginx Proxy Manager - NGINX-NPM-SETUP.md
- Nginx Standalone - README.Docker.md
- Caddy - README.Docker.md
Important: Disable HTTP/2 and buffering for best streaming performance.
HTTPAceProxy provides two modern web dashboards for monitoring:
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
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
-
Verify Ace Stream Engine is running:
curl http://ACESTREAM_HOST:62062/webui/api/service?method=get_version -
Check HTTPAceProxy logs:
docker logs httpaceproxy -f
-
Test direct access (without proxy):
curl -I http://localhost:8888/stat
- Increase network cache in VLC (3000ms recommended)
- Verify reverse proxy has buffering disabled
- Check available bandwidth and peers
- If using reverse proxy: Disable HTTP/2, increase timeouts
- See NGINX-NPM-SETUP.md for configuration
docker build -t httpaceproxy:local .docker buildx build --platform linux/amd64,linux/arm64,linux/arm/v7 -t httpaceproxy:multi .Automatic builds are configured for:
- Push to master/main β
latesttag - Release tags β version-specific tags
- Multi-arch: AMD64 + ARM64
Contributions are welcome! Areas for improvement:
- Plugin Development - Add new channel sources
- Documentation - Translations, examples
- Testing - Multi-platform testing
- Features - EPG integration, authentication, etc.
See plugins/PluginInterface_example.py for a template.
- Create
plugins/yourplugin_plugin.py - Define handlers (URL paths)
- Implement
handle(connection)method - Add configuration in
plugins/config/yourplugin.py
GPL-3.0 License - See LICENSE file for details.
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.
- GitHub Repository: https://github.com/jopsis/HTTPAceProxy
- Docker Hub: https://hub.docker.com/r/jopsis/httpaceproxy
- Ace Stream: https://acestream.org
- Issue Tracker: https://github.com/jopsis/HTTPAceProxy/issues
- 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.