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.
| cmd/iptv-server | ||
| internal | ||
| web | ||
| .dockerignore | ||
| .gitignore | ||
| config.toml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| go.mod | ||
| go.sum | ||
| iptv-server | ||
| README.md | ||
| test_ffmpeg.sh | ||
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 plikiemconfig.toml.media/– folder, do którego należy wrzucić pliki multimedialne (wideo:.mp4,.mkvlub 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.
- 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
- Otwórz przeglądarkę i wejdź na:
http://localhost:8080
Aby całkowicie wyłączyć serwer, wpisz: docker-compose down