Ga naar hoofdinhoud

Configuratie

Alles is een Spring-property en elke property is te overschrijven via omgevingsvariabelen (relaxed binding: app.ister.server.nameAPP_ISTER_SERVER_NAME). Veel instellingen hebben daarnaast een eigen korte env var, hieronder vermeld. De standaardwaarden zijn verstandig voor een single-node thuisopstelling.

Kernservices

InstellingEnv varStandaardOpmerkingen
Databasehost / poort / naamDB_HOST / DB_PATH / DB_NAMElocalhost / 5432 / isterPostgreSQL
Database-inloggegevensDB_USER / DB_PASSWORDister / isterwijzig dit in productie
ConnectionpoolDB_POOL_SIZE20afspelen waaiert uit naar veel gelijktijdige queries
RabbitMQSPRING_RABBITMQ_HOST / _PORT / _USERNAME / _PASSWORDlocalhost, user/password
OIDC-issuerOIDC_URLKeycloak-compatibel; bijv. https://keycloak.example.com/realms/Home

Identiteit en paden

InstellingEnv varStandaardOpmerkingen
app.ister.server.nameAPP_ISTER_SERVER_NAMETest servermoet uniek zijn per node
app.ister.server.urlAPP_ISTER_SERVER_URLhttp://localhost:8080hoe clients én andere nodes deze node bereiken
app.ister.cluster.nameAPP_ISTER_CLUSTER_NAMEde servernaamdezelfde waarde op elke node van een cluster
CachemapCACHE_DIR/cache/afbeeldingen, podcastdownloads
Tijdelijke mapTMP_DIR/tmp/ister/HLS-transcode-uitvoer

Metadata en talen

InstellingEnv varStandaardOpmerkingen
app.ister.server.TMDB.apikeyAPP_ISTER_SERVER_TMDB_APIKEYniet gezetTMDB API read access token. Zonder deze wordt het ophalen van film-/seriemetadata overgeslagen — je krijgt kale bestandsnamen.
app.ister.server.TMDB.max-requests-per-second30blijft onder TMDB's limiet van ~40 rps
app.ister.languagesISTER_LANGUAGESen,nlkommagescheiden ISO-639-1-tags; de eerste = primair. Bepaalt in welke talen metadata wordt opgehaald én welke talen de zoekindex krijgt. Wijzigen vereist een re-scan plus reindexSearch — zie Zoeken.

Zoeken (Typesense)

Env varStandaard
TYPESENSE_ENABLEDfalse
TYPESENSE_HOST / TYPESENSE_PORT / TYPESENSE_PROTOCOLlocalhost / 8108 / http
TYPESENSE_API_KEY / TYPESENSE_COLLECTIONleeg / media

Zie Zoeken voor de procedure om in te schakelen en te herindexeren.

Transcoding

InstellingEnv varStandaardOpmerkingen
FFmpeg-mapFFMPEG_DIR/usr/binmap met ffmpeg/ffprobe
mkvextract / subtile-ocrMKVEXTRACT / SUBTILE_OCR/usr/bin/...extractie en OCR van beeldondertitels
app.ister.transcoder.hls.hwaccelHLS_HWACCELnonevaapi (Intel/AMD) of nvdec (NVIDIA); het compose-bestand toont de benodigde device-mappings
app.ister.transcoder.hls.hwaccel-deviceHLS_HWACCEL_DEVICE/dev/dri/renderD128alleen VAAPI
app.ister.transcoder.hls.max-concurrent-filesHLS_MAX_CONCURRENT_FILES2gelijktijdig getranscodeerde bestanden; pre-transcoding deelt dit budget

Continue watching

Env varStandaardOpmerkingen
CONTINUE_WATCHING_HISTORY_DAYS150hoe ver de continue-watching-lijst terugkijkt; bepaalt ook wat pre-transcoding warm houdt
CONTINUE_WATCHING_REBUILD_CRON0 30 3 * * *nachtelijke zelfherstel-rebuild
CONTINUE_WATCHING_REBUILD_ENABLEDtrue

Cache-opschoning en podcasts

InstellingStandaardOpmerkingen
CACHE_CLEANUP_ENABLED / CACHE_CLEANUP_CRONtrue / 0 30 4 * * *dagelijkse zombie-sweep van cache- en tmp-mappen
CACHE_CLEANUP_DRY_RUNtruehij logt alleen totdat je dit op false zet — zie Onderhoud
CACHE_CLEANUP_MIN_AGE24hverwijdert nooit bestanden jonger dan dit
app.ister.server.cache-cleanup.podcast-retention-days30gedownloade podcastafleveringen verlopen hierna, tenzij iemand middenin een aflevering zit
app.ister.worker.podcast.auto-download-count3nieuwste afleveringen die per feed automatisch worden gedownload
app.ister.worker.podcast.refresh-cron0 10 * * * *feeds elk uur verversen

Externe metadata-endpoints

Elke externe service die de server aanroept is een property met de echte service als standaard, dus normaal stel je hier niets van in. Ze bestaan zodat een deployment via een proxy of mock kan lopen — de CI van de chart wijst ze allemaal naar één WireMock-pod:

spring.cloud.openfeign.client.config.tmdb.url, app.ister.worker.tmdb.image-base, app.ister.worker.musicbrainz.base / .coverart-release-base / .coverart-release-group-base / .commons-filepath-base, app.ister.worker.openlibrary.base / .covers-base / .author-photo-base, app.ister.worker.wikidata.entity-base / .api-base, app.ister.worker.wikipedia.summary-template, app.ister.api.podcast.itunes-base.

Libraries en directories

app.ister.disk.libraries[n].* en app.ister.disk.directories[n].* bepalen wat er gescand wordt — volledig behandeld in Libraries en media-indeling.

Lokale overrides (ontwikkeling)

Draai je vanuit de broncode, dan gaan machinespecifieke instellingen in gegitignorede *-local.properties-bestanden naast het properties-bestand van de module (bijv. core/src/main/resources/core-local.properties); ./gradlew bootRun activeert automatisch het local-profiel. Containerdeployments gebruiken in plaats daarvan omgevingsvariabelen.