Wydajny i minimalistyczny serwer IPTV z wbudowaną obsługą strumieniowania IceCast, do tworzenia własnych, całodobowych kanałów telewizyjnych oraz wizualnych stacji radiowych online.
Find a file
2026-07-28 09:21:12 +02:00
cmd/iptv-server Initial Commit 2026-07-28 09:21:12 +02:00
internal Initial Commit 2026-07-28 09:21:12 +02:00
web Initial Commit 2026-07-28 09:21:12 +02:00
.dockerignore Initial Commit 2026-07-28 09:21:12 +02:00
.gitignore Initial Commit 2026-07-28 09:21:12 +02:00
config.toml Initial Commit 2026-07-28 09:21:12 +02:00
docker-compose.yml Initial Commit 2026-07-28 09:21:12 +02:00
Dockerfile Initial Commit 2026-07-28 09:21:12 +02:00
go.mod Initial Commit 2026-07-28 09:21:12 +02:00
go.sum Initial Commit 2026-07-28 09:21:12 +02:00
iptv-server Initial Commit 2026-07-28 09:21:12 +02:00
README.md Initial Commit 2026-07-28 09:21:12 +02:00
test_ffmpeg.sh Initial Commit 2026-07-28 09:21:12 +02:00

CardboardTV

Wydajny i minimalistyczny serwer IPTV z wbudowaną obsługą strumieniowania IceCast, do tworzenia własnych, całodobowych kanałów telewizyjnych oraz wizualnych stacji radiowych online.

Funkcje

  • Kanały TV (Wideo): Płynne odtwarzanie własnych bibliotek plików wideo w pętli 24/7 z wykorzystaniem HLS.
  • Kanały Muzyczne (Radio): Odtwarzanie muzyki jako strumień audio IceCast z jednoczesnym, zsynchronizowanym generowaniem obrazu wideo (płynnie obracająca się płyta winylowa, okładki albumów, metadane piosenek).
  • Automatyczne EPG: Wbudowany, dynamicznie generowany przewodnik po programach (EPG) zawsze zsynchronizowany ze strumieniem na ekranie.
  • Web Player: Nowoczesny interfejs webowy (dostępny pod porcie 8080) do wygodnego oglądania kanałów i przeglądania ramówki w przeglądarce.

Wymagania i struktura katalogów

Zanim uruchomisz serwer na nowej maszynie, upewnij się, że masz przygotowane następujące elementy w katalogu głównym:

  • config.toml główny plik konfiguracyjny z ustawieniami serwera.
  • channels/ folder, w którym każdy utworzony kanał posiada własny podfolder ze swoim plikiem config.toml.
  • media/ folder, do którego należy wrzucić pliki multimedialne (wideo: .mp4, .mkv lub audio: .mp3, .flac).
  • web/static/streams/ pusty folder, do którego Docker musi mieć uprawnienia zapisu (tutaj będą tymczasowo generowane fragmenty HLS).

Przykładowa konfiguracja kanału

Aby dodać nowy kanał muzyczny, utwórz folder w channels/ (np. channels/moje_radio/config.toml):

id = "mojeradio"
name = "Moje Super Radio"
type = "music" # 'normal' dla kanałów wideo, 'music' dla radia
media_dir = "./media/muzyka"
play_mode = "random" # 'random' (losowo) lub 'sequential' (po kolei)
enable_iptv_video = true
enable_web_radio = true

Jak uruchomić (Docker)

Serwer jest zoptymalizowany i całkowicie samowystarczalny po spakowaniu do obrazu Docker. Najprostszą metodą uruchomienia jest użycie docker compose.

  1. Uruchom serwer w tle:
services:
  iptv-server:
    image: git.andus.dev/andus/cardboardtv:latest
    ports:
      - "8080:8080"
    volumes:
      - ./config.toml:/app/config.toml:z
      - ./channels:/app/channels:z
      - ./media:/app/media:z
      - ./web/static/streams:/app/web/static/streams:z
    depends_on:
      - icecast
    restart: unless-stopped

  icecast:
    image: infiniteproject/icecast:latest
    ports:
      - "8000:8000"
    environment:
      - ICECAST_SOURCE_PASSWORD=hackme
      - ICECAST_ADMIN_PASSWORD=hackme
      - ICECAST_PASSWORD=hackme
      - ICECAST_RELAY_PASSWORD=hackme
    restart: unless-stopped
docker compose up -d
  1. Otwórz przeglądarkę i wejdź na:
http://localhost:8080

Aby całkowicie wyłączyć serwer, wpisz: docker-compose down