Draai je eigen versie van deze dienst, met je eigen naam, adres en IPTV-abonnement: een website in de stijl van Videoland en een eigen Android-app voor tv en telefoon. Installeren duurt ongeveer 20 minuten.
Gebruik je Portainer? Dan installeer je alles als één stack, zonder iets te downloaden of te bouwen. De containers halen de software zelf op.
hoekitv,
kies Web editor en plak deze stack:
Laden…
APP_NAME=HoekiTV PUBLIC_URL=https://tv.mijndomein.nl LAN_URL= ADMIN_USER=admin ADMIN_PASSWORD=kies-een-sterk-wachtwoord HTTP_PORT=8080 IPTV_SERVER=http://provider.example:8080 IPTV_USERNAME= IPTV_PASSWORD= IPTV_M3U_URL= IPTV_TYPE= IPTV_MAX_STREAMS=
| Variabele | Betekenis |
|---|---|
APP_NAME | Naam van jouw dienst en app |
PUBLIC_URL | Adres waarop jij en de app de dienst bereiken (https aanbevolen) |
LAN_URL (optioneel) | Intern adres, bijv. http://192.168.1.10:8080. De app gebruikt dat thuis automatisch: sneller zappen, niet via de proxy |
ADMIN_USER / ADMIN_PASSWORD | Jouw beheerdersaccount, alleen gebruikt bij de eerste start |
HTTP_PORT | Poort op je server; zet je reverse proxy (Nginx Proxy Manager, Traefik, Pangolin) hierop |
IPTV_* | Xtream: server + gebruikersnaam + wachtwoord, of alleen IPTV_M3U_URL. Leeg laten mag: dan stel je het later in de website in |
IPTV_TYPE (optioneel) | dispatcharr als je Dispatcharr gebruikt: IPTV_SERVER = adres van Dispatcharr (bijv. http://dispatcharr:9191), gebruikersnaam + XC-wachtwoord van een Dispatcharr-gebruiker. Dispatcharr kan ook in dezelfde stack draaien: zie het blok dispatcharr in de stack |
IPTV_MAX_STREAMS (optioneel) | Hoeveel streams tegelijk mogen (kijkers + opnames). Leeg = wat de provider opgeeft, anders 1. Later aan te passen in Instellingen > IPTV-bron > Geavanceerd |
http://<server>:8080 of via je eigen domein.apk-builder.
data. Daarna bouw je een nieuwe app-versie, zodat ook de apps worden bijgewerkt.
Alles over bijwerken en wat er nieuw is: Bijwerken en nieuw.De stack opent de app alleen op http://<server>:HTTP_PORT. Voor een eigen domein met https zet je je eigen
reverse proxy ervoor. Https is nodig voor Chromecast; de Android-app werkt ook via http, maar dan onversleuteld.
| Instelling | Waarom |
|---|---|
PUBLIC_URL = je https-adres, bijv. https://tv.mijndomein.nl | De Android-app opent dit adres; na een wijziging een nieuwe app-versie bouwen |
| Geen inlogscherm van de proxy (geen SSO, pincode of Basic Auth) | De app heeft een eigen login. Chromecast en de Android-app kunnen niet langs een extra inlogscherm |
| Buffering uit, lange timeouts | Livestreams lopen urenlang door |
# weg bij de service newt en zet PANGOLIN_ENDPOINT, NEWT_ID
en NEWT_SECRET bij de omgevingsvariabelen. Draait Newt al ergens anders in je netwerk, dan sla je deze stap over.app poort 8080 (Newt in de stack), of
<ip-van-de-server> poort HTTP_PORT (Newt elders).PUBLIC_URL op het https-adres.http, host <ip-van-de-server>, poort HTTP_PORT.proxy_buffering off; proxy_request_buffering off; proxy_read_timeout 3600s; proxy_send_timeout 3600s;
Voeg aan de service app de gebruikelijke labels toe (router met je domein en certresolver, service-poort 8080)
en hang hem aan je Traefik-netwerk. Traefik buffert standaard niet; er is verder niets bijzonders nodig.
Zonder Portainer gebruik je het installatiescript op de Docker-machine:
curl -fsSL https://videoland.amsterdam2.nl/download/iptv-webapp-docker.tar.gz | tar -xz cd iptv-webapp/docker
chmod +x install.sh ./install.sh
| Vraag | Voorbeeld | Waarvoor |
|---|---|---|
| Naam van de app | HoekiTV | Website, Android-app en tv-banner |
| Publiek adres | https://tv.mijndomein.nl | De Android-app opent dit adres |
| https via Caddy? | Ja / nee | Ja: automatisch certificaat (poort 80 en 443 nodig). Nee: eigen reverse proxy naar de app-poort |
| Poort | 8080 | Poort van de app op de machine |
| Beheerder | admin + wachtwoord (min. 8 tekens) | Jouw eerste account |
| IPTV-abonnement | Xtream, M3U-link of later | Kan ook later in de website worden ingesteld |
Nieuwe versie: kies Nieuwe app-versie bouwen in hetzelfde paneel. Alle apps tonen dan "Update vereist" en werken zichzelf bij.
Voer deze opdrachten uit in de map iptv-webapp/docker:
| Opdracht | Wat het doet |
|---|---|
docker compose logs -f app | Logboek bekijken |
docker compose restart app | App herstarten |
docker compose up -d --build | Bijwerken nadat je een nieuw pakket hebt uitgepakt (zie Bijwerken) |
docker compose down | Stoppen (je gegevens blijven bewaard) |
Naam of adres wijzigen: pas .env aan, voer docker compose up -d uit en bouw een nieuwe app-versie.
<naam>_data.
Daarin staan alle instellingen, gebruikers en de ondertekeningssleutel van de app. Raak je die sleutel kwijt,
dan kunnen geïnstalleerde apps niet meer worden bijgewerkt en moet iedereen de app opnieuw installeren.Pak het pakket per dienst uit in een eigen map (bijvoorbeeld tv-familie en tv-vrienden) en voer in elke map
./install.sh uit, met een andere app-naam en poort. Elke dienst krijgt eigen containers, gegevens en een eigen app.
Gebruik dan één reverse proxy voor https in plaats van Caddy per dienst.
| Probleem | Oplossing |
|---|---|
| Website niet bereikbaar | docker compose ps en docker compose logs app; controleer poort en firewall |
| Bouwen van de app mislukt | docker compose logs apk-builder; vaak te weinig geheugen (minimaal 4 GB) |
| Geen https-certificaat | Domein moet naar de machine wijzen en poort 80/443 moet open staan |
| Geen zenders of films | Controleer het abonnement onder Instellingen → IPTV-bron |
| Geen geluid in de browser | Browsers spelen geen Dolby/DTS af; gebruik de Android-app |