Ga naar hoofdinhoud

Onderhoud en probleemoplossing

Ister is ontworpen om voor zichzelf te zorgen: caches worden opgeschoond, de continue-watching-lijst herstelt zichzelf, en mislukt achtergrondwerk wordt bewaard voor inspectie. Dit hoofdstuk behandelt de bewegende delen die je moet kennen, wat je moet back-uppen en de gebruikelijke verdachten wanneer iets er raar uitziet.

Geplande taken

TaakModuleSchema (standaard)Wat hij doet
Cache-opschoningdiskdagelijks, 04:30verwijdert cachebestanden waar geen databaserij naar verwijst ("zombies"); laat podcastdownloads ouder dan podcast-retention-days (30) verlopen, tenzij iemand middenin een aflevering zit
Tmp-transcode-opschoningtranscoderdagelijks, 04:30dezelfde sweep voor de tijdelijke HLS-transcodemap
Pre-transcodeworkerelke 15 minwarmt HLS-uitvoer op voor wat gebruikers waarschijnlijk als volgende afspelen
Continue-watching-rebuildworker's nachts, 03:30herberekent de continue-watching-lijst van elke gebruiker vanaf nul; verwijdert items waarvan de media weg is
Podcast-verversingworkerelk uurhaalt elke geabonneerde feed op, zet downloads van nieuwe afleveringen in de queue
Token-sweepscore/transcodercontinu / 12 ulaten streamtokens en afspeelsessies verlopen; verversen node-tokens

Belangrijk: de cache-opschoning wordt geleverd met app.ister.server.cache-cleanup.dry-run=true — standaard logt hij alleen wat hij zou verwijderen. Draai een deploy of twee, controleer of de logregels er verstandig uitzien, en zet dan CACHE_CLEANUP_DRY_RUN=false om daadwerkelijk schijfruimte terug te winnen. Hij komt nooit aan bestanden jonger dan CACHE_CLEANUP_MIN_AGE (24u), en nooit aan je media.

Back-up

PostgreSQL is de enige bron van waarheid — het is het enige dat je moet back-uppen (plus je mediabestanden, die sowieso van jou zijn; de server wijzigt ze nooit). Al het andere is opnieuw op te bouwen:

DataWaarHerstel
Afbeeldingscache, podcastdownloadsCACHE_DIRre-scan / analyzeLibrary; podcasts worden opnieuw gedownload
HLS-segmentenTMP_DIRworden op verzoek opnieuw getranscodeerd
Typesense-indexTypesense-volumeéén reindexSearch-mutation
RabbitMQ-queuesbrokervluchtig werk; een verloren bericht vertraagt hooguit metadata tot de volgende scan

Dus: pg_dump op een schema, en doe geen moeite om de caches te back-uppen.

Monitoring

  • Actuator op poort 8081: /actuator/health voor probes, /actuator/prometheus om te scrapen.
  • Dead-letter-queue — mislukte achtergrondevents worden met backoff opnieuw geprobeerd en belanden daarna in de RabbitMQ-queue app.ister.server.dead-letter, met de exception bewaard in de berichtheaders. Houd de diepte in de gaten (RabbitMQ-management-UI op 15672, of Prometheus); een groeiende dead-letter-queue is het vroegste teken dat scannen of het ophalen van metadata faalt.
  • Live activiteit — de GraphQL-subscription serverActivity (zichtbaar op de activiteitenpagina van de client) toont waar elke node op dit moment mee bezig is.

Probleemoplossing

Geen metadata na een scan (kale bestandsnamen, geen posters) — vrijwel altijd een ontbrekende of verkeerde TMDB-key (app.ister.server.TMDB.apikey, een API read access token): zonder die wordt het ophalen van metadata overgeslagen. Stel hem in en draai dan analyzeLibrary om aan te vullen. Controleer ook de dead-letter-queue op rate-limit- of netwerkfouten.

Afspelen start nooit / geen transcode — de server kan FFmpeg niet draaien. Controleer of FFMPEG_DIR naar een map wijst met ffmpeg en ffprobe (in de officiële image staan ze in /usr/bin). Probeer bij problemen met hardwareversnelling eerst HLS_HWACCEL=none om de GPU-opstelling (device-mapping, render-groep) van de pipeline te isoleren.

Item ontbreekt in (of blijft hangen in) continue watching — de lijst is voorberekend; als een client voortgang via een ongebruikelijk pad heeft weggeschreven, kan hij achterlopen. De nachtelijke rebuild (03:30) repareert dit; hij draait ook eenmalig bij het opstarten wanneer de tabel leeg is.

Zoeken geeft niets terug — Typesense staat uit, is onbereikbaar, of is na het inschakelen nooit geherindexeerd. Zie Zoeken.

Schijf loopt vol — controleer of de cache-opschoning nog in dry-run staat (zie hierboven), en kijk naar de grootte van CACHE_DIR/TMP_DIR in verhouding tot podcastretentie en pre-transcode-activiteit.

Nieuwe bestanden verschijnen niet — er is geen filesystem-watcher; draai scanLibrary. Worden bestanden wel gevonden maar verkeerd geclassificeerd, vergelijk hun paden dan met de verwachte indeling.

Voor een dieper begrip van elk van deze subsystemen begin je bij het architectuuroverzicht.