Ga naar hoofdinhoud

Quick start

Dit hoofdstuk brengt je in een minuut of tien van niets naar een draaiende server waarop je kunt inloggen, met één gescande serie — op basis van de referentie-docker-compose.yml uit de repository-root. Alles zit erin, inclusief een development-Keycloak met een kant-en-klare realm. Zelf breng je alleen een TMDB-sleutel mee (optioneel) en, voor een testvideo, ffmpeg.

Dit is een uitprobeer-opstelling: development-identity-provider, standaardwachtwoorden, wildcard-redirect-URI's. Bevalt het, dan beschrijft Installatie hoe je er iets blijvends van maakt.

1. Vereisten​

  • Docker of Podman met Compose v2. Het compose-bestand gebruikt depends_on: condition: service_completed_successfully, en dat begrijpt het oude Compose v1 niet. docker compose version (of podman-compose --version) moet werken.
  • Een TMDB-API-sleutel (optioneel maar aangeraden). Maak een account op themoviedb.org en kopieer het API Read Access Token uit Settings → API. Zonder sleutel draait alles, maar blijven series en films zonder beschrijvingen en artwork.
  • ffmpeg op de host (optioneel) — hieronder alleen gebruikt om een testvideo te genereren. Sla dit over als je de server op echte media richt.

2. Haal de stack binnen en configureer hem​

Kloon de repository (of download alleen docker-compose.yml en keycloak/Ister-realm.json, met dezelfde relatieve indeling):

git clone https://github.com/ister-app/server.git
cd server

Open docker-compose.yml en plak je TMDB-token in APP_ISTER_SERVER_TMDB_APIKEY (of laat hem leeg om metadata over te slaan).

Eén regel hostconfiguratie is nodig: de OIDC-issuer-URL moet er voor de servercontainer en voor je browser hetzelfde uitzien, en beide gebruiken http://keycloak:8060. Laat die hostnaam in /etc/hosts naar localhost wijzen:

echo "127.0.0.1 keycloak" | sudo tee -a /etc/hosts

3. Maak een testserie (optioneel)​

De scanner herkent media aan map- en bestandsnamen (naamgevingsconventies). Genereer een testaflevering van drie seconden:

mkdir -p "media/shows/Test Show (2024)/Season 01"
ffmpeg -f lavfi -i color=size=1280x720:rate=25:color=yellow \
-f lavfi -i anullsrc=channel_layout=stereo:sample_rate=44100 \
-map 0 -map 1 -metadata:s:a:0 language=eng -t 3 \
"media/shows/Test Show (2024)/Season 01/Test Show - s01e01.mkv"

Echte media werkt precies zo: alles onder ./media/shows/ wordt gescand als de library shows.

4. Starten​

docker compose up -d

De eerste start trekt de images binnen, draait de Flyway-migraties, importeert de Keycloak-realm en start de server. Controleer of de server op is (de management-endpoints op poort 8081 zijn alleen binnen het compose-netwerk bereikbaar; wil je die vanaf de host curlen, voeg dan - "8081:8081" toe aan de ports van de server):

curl -s http://localhost:8080/.well-known/ister

Een JSON-antwoord betekent dat de server draait.

De gebundelde realm bevat één testaccount, ister / ister, met zowel de rol user als admin. De Keycloak-beheerconsole zelf staat op http://keycloak:8060 (admin / admin).

5. Scannen en controleren — zonder client​

Haal een token op voor de testgebruiker (de client ister heeft direct-access grants aan, dus een password-grant vanuit curl werkt):

TOKEN=$(curl -s -d 'grant_type=password&client_id=ister&username=ister&password=ister' \
http://keycloak:8060/realms/Ister/protocol/openid-connect/token | \
python3 -c 'import sys,json;print(json.load(sys.stdin)["access_token"])')

Start een scan van alle libraries (een mutation die alleen admins mogen aanroepen):

curl -s http://localhost:8080/graphql \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"query":"mutation { scanLibraries }"}'

Scannen is asynchroon — het loopt via RabbitMQ, en met een TMDB-sleutel kost het ophalen van metadata een paar seconden extra. Vraag daarna op wat er gevonden is:

curl -s http://localhost:8080/graphql \
-H "Authorization: Bearer $TOKEN" -H 'Content-Type: application/json' \
-d '{"query":"query { shows { totalElements content { name releaseYear } } }"}'

"totalElements":1 met je testserie in content betekent dat de hele pijplijn — scanner, RabbitMQ, database, authenticatie — werkt.

6. Kijken met de player​

Installeer een Ister-player-app, richt hem op http://localhost:8080 en log in als ister / ister via de gebundelde Keycloak. Afspelen transcodeert on-the-fly naar HLS; de eerste segmenten van een stream laten een paar seconden op zich wachten.

En dan verder​