Configuratiereferentie
Het bestand
Section titled “Het bestand”De configuratie is bewust een eenvoudig, leesbaar tekstbestand en geen database. Het kan met cp worden geback-upt, met de kopie van vorige week worden vergeleken, in versiebeheer worden vastgelegd en via SSH met de hand worden bewerkt wanneer de webinterface onbereikbaar is — precies wanneer u het hardst iets moet wijzigen. Er is geen aparte statusopslag die ermee in de pas moet blijven.
Castmux herschrijft het bestand telkens wanneer in de webinterface iets wordt gewijzigd, dus handmatige wijzigingen en wijzigingen via de interface zijn dezelfde bewerking op hetzelfde bestand. Handmatig bewerken terwijl de service draait, brengt het risico mee dat uw wijziging door de volgende actie in de interface wordt overschreven; stop de service, bewerk het bestand en start de service weer.
Bij een upgrade worden sleutels die een nieuwere release heeft toegevoegd automatisch aangevuld met hun standaardwaarden, dus een ouder bestand blijft werken. Voordat er iets wordt gewijzigd, wordt een .pre-migration-kopie van het origineel geschreven; dat is het bestand om terug te zetten als een migratie niet doet wat u wilt.
Opdrachtregelopties
Section titled “Opdrachtregelopties”—config
Pad naar het configuratiebestand. Standaard config.yaml in de werkmap. Bij uitrol als container wordt een expliciet pad in een gekoppeld volume meegegeven, normaal /config/config.yaml.
—port
TCP-poort voor de webinterface en de HTTP-API. Standaard 8080. De API heeft geen aparte poort; er is één listener.
-debug
Uitgebreide logging, inclusief volledige engine-opdrachtregels en details per herstart. Nuttig bij het diagnosticeren van een zender die niet wil starten. Het is veel uitvoer; laat het niet permanent aan staan op een apparaat met een kleine logpartitie.
Omgevingsvariabelen
Section titled “Omgevingsvariabelen”CASTMUX_WEB_USERNAME
Gebruikersnaam voor de webinterface en de API.
CASTMUX_WEB_PASSWORD
Wachtwoord voor de webinterface en de API.
Een volledig toegelicht voorbeeld
Section titled “Een volledig toegelicht voorbeeld”Een werkend bestand voor een kleine locatie: twee zenders, één via HLS en één via SRT, beide meegestuurd op één DVB-C-multiplex en ook op multicast.
global: default_engine: tsduck # pass-through unless a channel overrides it udp_device: 192.168.10.4 # source address, NOT the egress interface startup_stagger_seconds: 3 hls_live_start_index: -1 on_demand_enabled: true on_demand_fail_open: true # viewer detection broken => keep streaming igmp_active_query: true igmp_grace_seconds: 90 igmp_linger_seconds: 30 igmp_query_interval_seconds: 30 igmp_interfaces: - eth0 - eth1 enable_dummy_listeners: true overwrite_srt_latency: true overwrite_pkt_size: true ping_hosts: - 192.168.10.1 # the site gateway - origin.example.net # the content provider location_name: Seaview Court re_seller: Northern AV ts_monitoring: true ts_pcr_jitter_max_ms: 200 licence: identity_dir: /config/identity # must be on a persistent volume site_ref: seaview-court
streams: - id: 1 name: Example One # also the DVB service name and metric label description: Main lounge line-up active: true source: type: hls url: https://origin.example.net/one/master.m3u8 destination: address: 239.10.0.1 port: 5000 force_always_on: false # on-demand: runs when somebody joins engine: tsduck epg_id: example-one.uk # the channel's id in the XMLTV guide resolution_profile: hd # closest rung wins; not an exact-match filter min_output_kbps: 500 pdt_shift_ms: 0 # 0 disables the PDT drift restart
- id: 2 name: Example Two description: Contribution feed from the studio active: true source: type: srt url: srt://feed.example.net:9001?streamid=two destination: address: 239.10.0.2 port: 5000 force_always_on: true # always on air, viewers or not engine: tsduck resolution_profile: "" # SRT has no ladder; nothing to select min_output_kbps: 500
dvb_muxes: - id: 1 name: Mux A device: 0 # modulator device index frequency: 474000000 # Hz, not MHz qam: 256 symbol_rate: 6900 network_id: 1 ts_id: 1 network_name: Seaview Court active: true channel_ids: [1, 2] # order decides slot, PID block, service IDGlobale instellingen
Section titled “Globale instellingen”Alles onder global geldt voor elke zender, tenzij de zender het overschrijft. Een wijziging via de webinterface wordt zonder herstart op draaiende zenders toegepast; dit zijn dus live instellingen, geen instellingen die alleen bij het opstarten gelden.
| Sleutel | Standaard | Doel |
|---|---|---|
| Engines en uitvoer | ||
| default_engine | tsduck | Welke engine zenders gebruiken als ze er zelf geen noemen. De pass-through-engine behoudt de oorspronkelijke PID's, audiosporen en taaldescriptors; de remux-engine herschrijft ze, wat sommige apparatuur verderop in de keten vereist. Zie Streaming-engines. |
| udp_device | leeg | Bronadres voor uitgaande UDP. Let goed op: dit bindt het bronadres en kiest niet de uitgaande interface — de kernel raadpleegt nog steeds de routeringstabel om te bepalen via welke poort de pakketten vertrekken. Gaat multicast via de verkeerde interface naar buiten, corrigeer dan de route, niet dit. |
| startup_stagger_seconds | 3 | Tussentijd tussen de starts van zenders bij het opstarten. Anders opent elke zender tegelijk zijn bron, en acht gelijktijdige HLS-starts op een uplink van 100 Mbit verzadigen die tijdens de eerste segmentburst, zodat alle acht mislukken in plaats van één. Stel 0 in om het uit te schakelen als het uw uplink echt niets uitmaakt. |
| hls_live_start_index | -1 | Bij welk segment van de live playlist wordt begonnen, geteld vanaf de live edge. -1 is het laatste segment. Dichter bij de edge betekent minder latency en minder buffer om jitter van de originserver op te vangen; verder terug is toleranter en loopt verder achter op live. |
| overwrite_pkt_size | true | Forceer volledige UDP-datagrammen van 1316 bytes op HLS-zenders — zeven transportpakketten per datagram, wat settopboxen verwachten. Zonder deze instelling produceren sommige bronnen korte datagrammen en verspillen ze een merkbaar deel van de lijn. |
| overwrite_srt_latency | true | Leid de SRT-latency af uit de gemeten round-trip time naar de afzender in plaats van een vaste waarde te gebruiken. Een met de hand ingestelde latency die voor het ene pad goed was, is meestal fout voor de volgende locatie. |
| On-demand en IGMP | ||
| on_demand_enabled | true | Hoofdschakelaar voor kijkergestuurd streamen. Staat die uit, dan draait elke als actief gemarkeerde zender continu, ongeacht of er iets kijkt. |
| on_demand_fail_open | true | Laat zenders doorstreamen wanneer kijkerdetectie niet beschikbaar is — capture kan niet starten, de interface verdwijnt, de bewaker stopt. Laat dit aan staan. Met deze instelling uit is het faalscenario een gebouw vol zwarte schermen, veroorzaakt door een monitoringonderdeel, en dat is in alle opzichten erger dan een beetje verspilde bandbreedte. |
| igmp_active_query | true | Verstuur zelf IGMP general queries. Clients melden zich ongevraagd alleen op het moment dat ze zich aanmelden en blijven daarna stil tot erom wordt gevraagd, dus zonder queries verliest een herstart alle kennis van bestaande kijkers. Schakel dit alleen uit als het segment al een echte querier heeft; twee queriers op één segment is slordig, maar niet fataal. |
| igmp_grace_seconds | 90 | Hoe lang een kijker stil mag blijven voordat hij als vertrokken wordt beschouwd. Moet ruim boven igmp_query_interval_seconds liggen, anders verwijdert één verloren report een kijker die nog kijkt. |
| igmp_linger_seconds | 30 | Hoe lang een zender blijft draaien nadat de laatste kijker is vertrokken. Dit maakt zappen draaglijk: terugkeren binnen het linger-venster is direct, in plaats van een koude start te betalen. |
| igmp_query_interval_seconds | 30 | Interval tussen general queries. Lager betekent sneller detecteren dat een toestel met de stekker is uitgezet, ten koste van meer besturingsverkeer. |
| igmp_interfaces | alle met een adres | Op welke interfaces membership wordt gecapturet. De standaard omvat elke interface waarop een adres is ingesteld. Noem ze expliciet op een box met meerdere NIC's waarvan er maar één naar de televisies wijst. |
| enable_dummy_listeners | true | Houd aan elke groep een lokale afnemer gekoppeld. Zonder die afnemer stapelen pakketten naar een groep waarbij niemand is aangemeld zich op in de socketbuffers en veroorzaken ze uiteindelijk overlopen die eruitzien als bronstoringen. |
| Monitoring en locatie-identiteit | ||
| ts_monitoring | true | Meet de transportstreamkwaliteit van elke zender — bitrate en de spreiding daarvan, PCR-timing, transport- en continuity-fouten — voor de grafieken per zender en de geëxporteerde meetwaarden. Op een pass-through-zender loopt de meting in de eigen pijplijn van de zender; op een remux-zender luistert een tweede, alleen-lezen proces naar de multicastgroep van de zender, zodat het meet wat een ontvanger werkelijk krijgt. Beide observeren alleen en veranderen de stream nooit. Stel false in om op een zwaar belast apparaat het kleine CPU-verbruik per zender te besparen. |
| ts_pcr_jitter_max_ms | 200 | Hoe ver, in milliseconden, een programme clock reference mag afwijken van de werkelijke timing van zijn pakket voordat het telt als een PCR-jittergebeurtenis. Dit is een tolerantie voor leveringsbursts, niet de nauwkeurigheidswaarde uit MPEG-2: SRT-originservers interleaven vaak in bursts van ongeveer 160 ms, en een relay die HLS herverpakt, levert hele segmenten in één keer. 200 laat gewone interleaving door en markeert de bursts die de buffer van een ontvanger echt zou moeten opvangen. Verhoog de waarde als een bekend burstige originserver de grafiek overspoelt met gebeurtenissen waar niemand iets mee kan. |
| ping_hosts | lege lijst | Extra hosts voor de bereikbaarheidsmonitor, bovenop wat uit de configuratie wordt afgeleid. De nuttige vermeldingen zijn de gateway van de locatie en de content-originserver: als een zender uitvalt, is de eerste vraag of de locatie het internet kwijt is of de leverancier de zender, en dit geeft het antwoord. |
| location_name | leeg | De locatie die dit apparaat bedient, zoals u die zou noemen — getoond als Location in Settings. Ze labelt geëxporteerde meetwaarden, zodat een vloot apparaten in één dashboard uit elkaar te houden is; ze wordt als locatienaam aan de licentieserver gemeld; en ze is de DVB-C-netwerknaam die settopboxen tonen, tenzij er expliciet een is ingesteld. Deze sleutel heette vroeger hotel_name; een ouder bestand wordt bij het laden automatisch gemigreerd. |
| re_seller | leeg | De partner of installateur die verantwoordelijk is voor de locatie. Ook een metriclabel, om een dashboard te filteren tot het apparatenpark van één reseller. |
Engineparameters
Section titled “Engineparameters”Deze sleutels bevatten ruwe argumentstrings die aan de onderliggende programma’s worden doorgegeven: FFmpeg voor remux-zenders, TSDuck voor pass-through-zenders en mpv voor de HDMI-uitgang. Ze staan bewust niet in de webinterface. Ze kunnen worden gewijzigd door het bestand te bewerken of via PUT /api/settings, en het opslaan van elk ervan herstart elke actieve zender.
De reden om ze buiten de interface te houden, is de impact. Elke string geldt voor elke zender die die engine gebruikt. Een engine die door één fout argument niet start, haalt de hele zenderlijst in één keer uit de lucht, niet één zender. Een veld dat dat met een gebouw kan doen, hoort niet één toetsaanslag verwijderd te zijn van een beheerder die een zender probeert te hernoemen.
| Sleutel | Standaard | Doel |
|---|---|---|
| ffmpeg_params | meegeleverde waarde | Opties helemaal aan het begin van de FFmpeg-opdrachtregel van elke remux-zender, vóór de invoer — timestampherstel, probegrootte en buffering. De meegeleverde waarde is afgestemd op HLS-originservers; de probegrootte van 15 MB is de reden dat startup_stagger_seconds bestaat. Is de sleutel leeg, dan wordt in plaats daarvan een minimale -fflags +genpts -rw_timeout 10000000 gebruikt. |
| ffmpeg_udp_params | meegeleverde waarde | Querystring die wordt toegevoegd aan de udp://-uitvoer-URL van elke remux-zender: TTL, datagramgrootte, socket- en FIFO-buffers. Twee delen worden gedeeld of overschreven. De ttl hier wordt ook door pass-through-zenders gebruikt, zodat beide engines dezelfde TTL op de lijn zetten. En met overwrite_pkt_size aan wordt elke pkt_size van HLS-zenders verwijderd, omdat de applicatie de datagramgrootte zelf instelt. |
| ffmpeg_preview_params | meegeleverde waarde | Extra opties voor het FFmpeg-proces van de browserpreview, ingevoegd vóór de invoer. Ze beïnvloeden alleen previews, nooit wat op de lijn gaat. |
| tsduck_params | leeg | Extra tsp-opties en -plugins, toegevoegd aan elke pass-through-zender na de ingebouwde verwerking en vóór de kwaliteitsmeting en de uitvoer. Twee ingebouwde stappen maken er plaats voor: noemt het de plugin svrename of sdt, dan wordt de automatische DVB-servicenaamgeving overgeslagen in plaats van verdubbeld; en kiest het zelf een HLS-trede (bijvoorbeeld --lowest-bitrate), dan wordt de standaardselectie van de hoogste bitrate niet toegevoegd, omdat tsp twee selectors weigert. |
| mpv_params | meegeleverde waarde | Extra opties voor de speler van de HDMI-uitgang, toegevoegd na de keuzes voor beeldscherm en audio op de HDMI-pagina. mpv volgt het laatste voorkomen van een optie, dus een vlag hier overschrijft de bijbehorende keuzelijst. De meegeleverde waarde noemt een specifieke weergavecontext en audiokaart; verwijder die vlaggen op andere hardware dan waarvoor ze zijn geschreven en gebruik in plaats daarvan de selecties op de HDMI-pagina. |
HDMI-uitgang
Section titled “HDMI-uitgang”Het blok hdmi_stream onder global configureert de HDMI-uitgang. Alles daarin wordt ingesteld vanaf de HDMI-pagina.
| Sleutel | Standaard | Doel |
|---|---|---|
| hdmi_stream.name | leeg | Label voor de uitgang in de statusweergave en de logs. |
| hdmi_stream.stream_id | geen | De id van de zender die moet worden afgespeeld. De speler meldt zich aan bij de multicastgroep van die zender, via het udp_device-adres als dat is ingesteld. 0, of de id van een verwijderde zender, laat de uitgang zonder iets om af te spelen, en het log zegt welke van de twee. |
| hdmi_stream.active | false | Start en stopt het afspelen. |
| hdmi_stream.vo | standaard van de speler | De video-uitvoer van de speler, zoals gpu, gpu-next of drm. De twee gpu-uitvoeren krijgen automatisch een DRM/KMS-context, omdat een apparaat geen desktop heeft om op te tekenen. |
| hdmi_stream.drm_device | standaard van de speler | Het beeldschermapparaat, als pad zoals /dev/dri/card0. Nodig op hardware met meer dan één displaycontroller, waar de standaard de verkeerde aansluiting kan zijn. |
| hdmi_stream.audio_device | standaard van de speler | Het audio-uitvoerapparaat, of none voor beeld zonder geluid. Namen van audioapparaten verschillen per bord, dus een waarde die van een ander apparaat is gekopieerd, is de gebruikelijke reden dat de speler niet start. |
Licentie
Section titled “Licentie”Het blok licence onder global bepaalt hoe het apparaat zich identificeert bij de licentieserver. Het adres en de ondertekeningssleutel van de server zijn in de release ingebouwd en zijn geen instellingen. server_url of token_public_key in dit blok worden geaccepteerd maar genegeerd, en bij het opstarten wordt daarover een waarschuwing gelogd.
| Sleutel | Standaard | Doel |
|---|---|---|
| licence.identity_dir | /config/identity | Waar het apparaat zijn apparaatsleutel, certificaat en laatste licentiestatus bewaart. Dit moet op persistente opslag staan. Zonder die opslag genereert elke nieuwe aanmaak van de container een nieuwe identiteit, die voor de licentieserver een nieuw, niet-goedgekeurd apparaat is, en blijft streamen geblokkeerd tot het opnieuw is goedgekeurd. |
| licence.enroll_key | leeg | Optionele vooraf gedeelde inschrijvingssleutel, geleverd bij een partij apparaten. Behandel die als een wachtwoord: ze wordt nooit naar de logs geschreven, maar is leesbaar voor iedereen die dit bestand kan lezen. |
| licence.site_ref | leeg | Een vrije-tekstreferentie, zoals een order- of locatienummer, die bij de inschrijving wordt meegestuurd om het apparaat bij de goedkeuring te helpen herkennen. Het is een hint voor mensen, geen inloggegeven. |
| licence.agent_version | de draaiende versie | De softwareversie die aan de licentieserver wordt gemeld. Laat dit leeg. |
Instellingen per zender
Section titled “Instellingen per zender”Elke vermelding onder streams is één zender: één bron, één bestemming, één set bewakingsregels.
| Sleutel | Standaard | Doel |
|---|---|---|
| Identiteit | ||
| id | toegewezen | Numerieke identificatie, uniek binnen het bestand. Het is de identificatie in API-paden en in channel_ids op een multiplex. Identificaties worden na verwijdering hergebruikt, dus behandel er geen als een permanente verwijzing voor een extern systeem. |
| name | verplicht | Weergavenaam. Die is niet cosmetisch: ze wordt ook de DVB-servicenaam in de zenderlijst van de televisie, en het label aan de geëxporteerde meetwaarden van deze zender. Een zender hernoemen verandert wat kijkers zien en waarop uw dashboard groepeert. |
| description | leeg | Vrije tekst voor de beheerder. Wordt nergens verzonden. |
| epg_id | leeg | De identificatie van deze zender in de XMLTV-programmagids — de eigen zender-id van de gids, meestal iets als rtl.de. Wordt ingesteld op de EPG-pagina, en zorgt ervoor dat een gidssynchronisatie programma's voor deze zender opslaat. Leeg betekent geen gidsgegevens voor de zender. Zie Programmagids (EPG). |
| managed_by | leeg | Wie eigenaar is van de zender. Leeg betekent dat een beheerder hem heeft toegevoegd, en dan wordt hij door niets anders gewijzigd. licence betekent dat de licentieserver hem heeft geleverd: die kan bij elke vernieuwing de bron en bestemming van de zender vervangen, dus de webinterface laat hem niet bewerken of verwijderen. Stel licence niet met de hand in op een zender die u zelf hebt gemaakt — de volgende vernieuwing kan hem overschrijven. |
| active | true | Of de zender überhaupt is ingesteld om te draaien. Een inactieve zender blijft in het bestand staan maar wordt nooit gestart; zo zet u een zender buiten gebruik zonder zijn instellingen te verliezen. |
| Bron | ||
| source.type | hls | Een van hls, srt, rtmp of mpegts. mpegts is een gewone transportstream, via UDP (udp://group:port) of HTTP (http(s)://…) — zie MPEG-TS-bronnen. Het type bepaalt meer dan het ophalen: alleen HLS heeft een ladder, dus resolutieprofielen gelden alleen voor HLS. |
| source.url | verplicht | De origin-URL. Voor HLS moet dit normaal de masterplaylist zijn, geen variant — geef Castmux de ladder en laat het resolutieprofiel kiezen, zodat de zender blijft werken als de originserver zijn treden herindeelt. |
| Bestemming | ||
| destination.address | verplicht | IPv4-bestemming. Gebruik voor distributie binnen een gebouw het administratief begrensde multicastbereik 239.0.0.0/8. Unicast wordt geaccepteerd voor punt-tot-puntverbindingen. |
| destination.port | verplicht | UDP-bestemmingspoort. Verschillende groepen mogen een poort delen; dezelfde groep en poort bij twee zenders is een dubbele zender en levert op beide onkijkbaar beeld op. |
| Gedrag | ||
| force_always_on | false | Laat deze zender continu draaien en negeer kijkerdetectie. Gebruik dit voor een zender die direct beschikbaar moet zijn, of voor een zender op een DVB-C-multiplex, waar er om te beginnen geen IGMP-membership is om waar te nemen. |
| engine | overgenomen | Overschrijf default_engine voor deze zender. De gebruikelijke reden is een bron die de pass-through-engine niet kan lezen, of één apparaat verderop in de keten dat per se geremuxte uitvoer wil. |
| resolution_profile | leeg | Een van 4k, fullhd, hd, sd, mobile, of leeg voor de eigen keuze van de originserver. Bij de selectie wint de dichtstbijzijnde hoogte, en bij gelijkspel de hogere bitrate — een zender die 480p streamt als niemand 576p publiceert, is beter dan een zender die weigert te starten. De keuze wordt per start toegepast en nooit naar dit bestand teruggeschreven. Zie Resolutieprofielen. |
| Bewaking — alleen in het configuratiebestand | ||
| min_output_kbps | 500 | De ondergrens waaronder deze zender wordt beschouwd als niet producerend, en wordt herstart. Verlaag die voor radio en andere services met alleen audio: een radiozender van 128 kbps die wordt gemeten tegen een drempel op videoniveau, wordt permanent als stil beoordeeld en in een lus herstart. Niet beschikbaar in de webinterface. |
| pdt_shift_ms | 0 | Herstartdrempel voor drift van de programme-date-time, in milliseconden: springt de opgegeven tijdlijn van de bron meer dan dit, dan wordt de zender herstart in plaats van door te draaien op een kapotte klok. 0 schakelt de controle uit; dat is de standaard, omdat een originserver die legitiem opnieuw stempelt anders herstarts zou veroorzaken. Niet beschikbaar in de webinterface. |
Instellingen van DVB-C-multiplexen
Section titled “Instellingen van DVB-C-multiplexen”Elke vermelding onder dvb_muxes is één RF-draaggolf: een set zenders samengevoegd tot één transportstream en gemoduleerd op het coaxnetwerk. Zie DVB-C-multiplexing voor het kiezen van de RF-parameters.
| Sleutel | Waarde | Doel |
|---|---|---|
| Identiteit | ||
| id | toegewezen | Numerieke identificatie van de multiplex, gebruikt in API-paden. |
| name | verplicht | Label van de multiplex voor de beheerder. Wordt niet verzonden. |
| device | index of pad | Op welke modulatorhardware deze multiplex wordt uitgezonden, aangeduid met een index of een apparaatpad, afhankelijk van de geplaatste kaart. Eén multiplex per apparaat. |
| RF-parameters | ||
| frequency | Hz | Middenfrequentie van de draaggolf, in hertz, niet in megahertz. 474000000, niet 474. Moet passen in het frequentieplan van het bestaande kabelnet in het gebouw en mag niet botsen met een draaggolf die daar al aanwezig is. |
| qam | 16 / 32 / 64 / 128 / 256 | Modulatieorde. Hoger draagt meer bitrate in dezelfde 8 MHz en verdraagt minder ruis. Op gezonde coax binnen een gebouw is 256-QAM normaal; ga lager als de bekabeling oud, sterk gesplitst of van onbekende kwaliteit is. |
| symbol_rate | ksym/s | Symboolsnelheid van de draaggolf. Samen met de modulatieorde bepaalt dit de totale bitrate die beschikbaar is voor alle services in de multiplex, en dus is dit het getal dat bepaalt hoeveel zenders erin passen. |
| Signalering | ||
| network_id | geheel getal | Netwerkidentificatie die aan ontvangers wordt gesignaleerd. Houd die gelijk over alle multiplexen op één locatie, zodat toestellen ze als één netwerk behandelen en niet als meerdere. |
| ts_id | geheel getal | Transportstreamidentificatie. Moet uniek zijn onder de multiplexen op de locatie; duplicaten zorgen ervoor dat toestellen tijdens een scan de ene zenderlijst met de andere overschrijven. |
| network_name | tekst | Netwerknaam die aan ontvangers wordt gesignaleerd. Dit is de tekst die een gast tijdens het afstemmen ziet, dus normaal de naam van het gebouw. |
| active | true | Of de multiplex wordt uitgezonden. Op false zetten stopt de draaggolf; televisies tonen dan de hele zenderlijst als ontbrekend, niet als één dode zender. |
| Inhoud | ||
| channel_ids | geordende lijst | De meegestuurde zenders, op id. De volgorde is van belang. De positie in deze lijst bepaalt het slot, het PID-blok dat aan de service wordt toegewezen en de service-identificatie. Het herschikken van de lijst geeft services dus een nieuwe identiteit, en televisies die al hebben gescand, moeten mogelijk opnieuw worden afgestemd om weer met u overeen te komen. Voeg waar mogelijk achteraan toe. |
Back-up maken en terugzetten
Section titled “Back-up maken en terugzetten”Maak een back-up van de hele configuratiemap, niet alleen van config.yaml. Naast de configuratie bevat die de licentie-identiteit van het apparaat en de gegevens van de programmagids:
| In de map | Wat het is |
|---|---|
| config.yaml | De configuratie die op deze pagina wordt beschreven. |
| config.yaml.pre-migration | Het bestand zoals het was voordat de laatste upgrade het wijzigde. Het bestand om terug te zetten als een migratie niet doet wat u wilt. |
| identity/ | De apparaatsleutel en het certificaat van het apparaat voor de licentieserver. Raakt u die kwijt, dan is het teruggezette apparaat voor de licentieserver een nieuw, niet-goedgekeurd apparaat, en streamt het niet tot het opnieuw is goedgekeurd. |
| epg.db | Opgeslagen gegevens van de programmagids. Die kunnen opnieuw worden opgebouwd door de gidsbronnen opnieuw te synchroniseren, dus bewaren is handig maar niet essentieel. |
De paden hangen af van aan welke kant van de container u zit. Met de installatie uit deze handleiding is de map /opt/castmux/config op de host, en ziet de container die als /config. Het configuratiebestand is dus /opt/castmux/config/config.yaml vanuit een shell op het apparaat, en /config/config.yaml binnen de container. Back-ups worden vanaf de host gemaakt:
# on the appliance (host), as root: the files are owned by rootsudo cp -a /opt/castmux/config /backup/seaview-court-$(date +%F)Kopiëren terwijl de service draait, gaat normaal goed, omdat config.yaml alleen wordt herschreven wanneer een instelling wordt opgeslagen. Sla tijdens het kopiëren geen wijzigingen op in de webinterface. Voor een kopie die gegarandeerd consistent is, inclusief epg.db midden in een gidssynchronisatie, stopt u eerst de container.
Om terug te zetten stopt u de container, zet u de map terug en start u de container weer. Bestanden vervangen onder een draaiende container werkt niet: de draaiende service schrijft bij de volgende wijziging zijn eigen kopie van config.yaml over de uwe heen.
# on the appliance (host)sudo docker stop castmuxsudo rm -rf /opt/castmux/configsudo cp -a /backup/seaview-court-2026-04-11 /opt/castmux/configsudo docker start castmuxGebruik met Docker Compose in plaats daarvan sudo docker compose stop en sudo docker compose start in /opt/castmux. Hebt u een andere hostmap gekoppeld via een bind mount, vervang dan overal /opt/castmux/config door die map.
Omdat het bestand gewone YAML is, dient de config.yaml uit een back-up ook als startpunt voor een tweede locatie: wijzig de adressen, de namen en de RF-parameters, en de rest wordt overgenomen. Kopieer hiervoor alleen config.yaml, nooit identity/. Twee apparaten met dezelfde identiteit zijn voor de licentieserver hetzelfde apparaat. Dat is vandaag een handmatig proces.
Export en import met één klik vanuit de webinterface, en het klonen van een configuratie over een vloot locaties, staan op de roadmap.