Reverse proxy on iptv m3u is a project to proxyfie an m3u file and to proxyfie an Xtream iptv service (client API).
M3U
M3U service convert an iptv m3u file into a web proxy server.
It’s transform all the original tracks to an new url pointing on the proxy.
Xtream code client api
proxy on Xtream code (client API)
support live, vod, series and full epg
M3u Example
Original iptv m3u file
#EXTM3U
#EXTINF:-1 tvg-ID="examplechanel1.com" tvg-name="chanel1" tvg-logo="http://ch.xyz/logo1.png" group-title="USA HD",CHANEL1-HD
http://iptvexample.net:1234/12/test/1
#EXTINF:-1 tvg-ID="examplechanel2.com" tvg-name="chanel2" tvg-logo="http://ch.xyz/logo2.png" group-title="USA HD",CHANEL2-HD
http://iptvexample.net:1234/13/test/2
#EXTINF:-1 tvg-ID="examplechanel3.com" tvg-name="chanel3" tvg-logo="http://ch.xyz/logo3.png" group-title="USA HD",CHANEL3-HD
http://iptvexample.net:1234/14/test/3
#EXTINF:-1 tvg-ID="examplechanel4.com" tvg-name="chanel4" tvg-logo="http://ch.xyz/logo4.png" group-title="USA HD",CHANEL4-HD
http://iptvexample.net:1234/15/test/4
What M3U proxy IPTV do
- convert chanels url to new endpoints
- convert original m3u file with new routes pointing to the proxy
Start proxy server example
iptv-proxy --m3u-url http://example.com/get.php?username=user&password=pass&type=m3u_plus&output=m3u8 \
--port 8080 \
--hostname proxyexample.com \
--user test \
--password passwordtest
That’s give you an m3u file on a specific endpoint iptv.m3u
in our example
http://proxyserver.com:8080/iptv.m3u?username=test&password=passwordtest
All the new routes pointing on your proxy server
#EXTM3U
#EXTINF:-1 tvg-ID="examplechanel1.com" tvg-name="chanel1" tvg-logo="http://ch.xyz/logo1.png" group-title="USA HD",CHANEL1-HD
http://proxyserver.com:8080/12/test/1?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel2.com" tvg-name="chanel2" tvg-logo="http://ch.xyz/logo2.png" group-title="USA HD",CHANEL2-HD
http://proxyserver.com:8080/13/test/2?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel3.com" tvg-name="chanel3" tvg-logo="http://ch.xyz/logo3.png" group-title="USA HD",CHANEL3-HD
http://proxyserver.com:8080/14/test/3?username=test&password=passwordtest
#EXTINF:-1 tvg-ID="examplechanel4.com" tvg-name="chanel4" tvg-logo="http://ch.xyz/logo4.png" group-title="USA HD",CHANEL4-HD
http://proxyserver.com:8080/15/test/4?username=test&password=passwordtest
Xtream code client API example
% iptv-proxy --m3u-url http://example.com:1234/get.php?username=user&password=pass&type=m3u_plus&output=m3u8 \
--port 8080 \
--hostname proxyexample.com \
## put xtream flags if you want to add xtream proxy
--xtream-user xtream_user \
--xtream-password xtream_password \
--xtream-base-url http://example.com:1234 \
--user test \
--password passwordtest
What Xtream proxy do
- convert xtream
xtream-user
andxtream-password
into newuser
andpassword
- convert
xtream-base-url
withhostname
andport
Original xtream credentials
user: xtream_user
password: xtream_password
base-url: http://example.com:1234
New xtream credentials
user: test
password: passwordtest
base-url: http://proxyexample.com:8080
All xtream live, streams, vod, series… are proxyfied!
You can get the m3u file with the original Xtream api request:
http://proxyexample.com:8080/get.php?username=test&password=passwordtest&type=m3u_plus&output=ts
Installation
Download lasted release
Or
% go install
in root repository
With Docker
Prerequisite
- Add an m3u URL in
docker-compose.yml
or add local file iniptv
folder HOSTNAME
andPORT
to expose- Expose same container port as the
PORT
ENV variable
ports:
# have to be the same as ENV variable PORT
- 8080:8080
environment:
# if you are using m3u remote file
# M3U_URL: http://example.com:1234/get.php?username=user&password=pass&type=m3u_plus&output=m3u8
M3U_URL: /root/iptv/iptv.m3u
# Port to expose the IPTVs endpoints
PORT: 8080
# Hostname or IP to expose the IPTVs endpoints (for machine not for docker)
HOSTNAME: localhost
GIN_MODE: release
## Xtream-code proxy configuration
## (put these env variables if you want to add xtream proxy)
XTREAM_USER: xtream_user
XTREAM_PASSWORD: xtream_password
XTREAM_BASE_URL: "http://example.com:1234"
USER: test
PASSWORD: testpassword
Start
% docker-compose up -d
TLS – https with traefik
Put files of ./traekik
folder in root repo
docker-compose
sample with traefik:
version: "3"
services:
iptv-proxy:
build:
context: .
dockerfile: Dockerfile
volumes:
# If your are using local m3u file instead of m3u remote file
# put your m3u file in this folder
- ./iptv:/root/iptv
container_name: "iptv-proxy"
restart: on-failure
expose:
# have to be the same as ENV variable PORT
- 443
labels:
- "traefik.enable=true"
- "traefik.frontend.rule=Host:iptv.proxyexample.xyz"
environment:
# if you are using m3u remote file
# M3U_URL: https://example.com/iptvfile.m3u
M3U_URL: /root/iptv/iptv.m3u
# Port to expose the IPTVs endpoints
PORT: 443
# Hostname or IP to expose the IPTVs endpoints (for machine not for docker)
HOSTNAME: iptv.proxyexample.xyz
GIN_MODE: release
# Inportant to activate https protocol on proxy links
HTTPS: 1
## Xtream-code proxy configuration
XTREAM_USER: xtream_user
XTREAM_PASSWORD: xtream_password
XTREAM_BASE_URL: "http://example.tv:8080"
#will be used for m3u and xtream auth proxy
USER: test
PASSWORD: testpassword
traefik:
restart: unless-stopped
image: traefik:v1.7.16
read_only: true
command: --web
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- ./acme.json:/acme.json
- ./traefik.toml:/traefik.toml
Replace iptv.proxyexample.xyz
in docker-compose.yml
and traefik.toml
with your desired domain.
$ touch acme.json && chmod 600 acme.json
$ docker-compose up -d