[{"data":1,"prerenderedAt":637},["ShallowReactive",2],{"content-en-\u002Fguide\u002Fconfigure-cms":3},{"id":4,"title":5,"author":6,"body":7,"date":6,"description":629,"extension":630,"meta":631,"navigation":632,"path":633,"seo":634,"stem":635,"tags":6,"__hash__":636},"content_en\u002Fguide\u002Fconfigure-cms.md","Configure CMS",null,{"type":8,"value":9,"toc":607},"minimark",[10,15,19,24,54,58,63,66,86,90,93,132,139,143,146,150,157,161,164,169,172,204,257,261,295,325,367,371,374,403,414,418,440,461,465,471,491,494,498,522,526,529,546,549,553,557,564,570,574,577,603],[11,12,14],"h1",{"id":13},"configure-cms-connection","Configure CMS Connection",[16,17,18],"p",{},"After installing a player, you need to connect it to your Xibo CMS.",[20,21,23],"h2",{"id":22},"what-you-need","What You Need",[25,26,27,36,43],"ul",{},[28,29,30,31,35],"li",{},"A running ",[32,33,34],"strong",{},"Xibo CMS"," instance (v3 or v4)",[28,37,38,39,42],{},"The ",[32,40,41],{},"CMS server key"," (found in CMS → Administration → Settings → Display Settings → CMS Secret Key)",[28,44,38,45,48,49,53],{},[32,46,47],{},"CMS URL"," (e.g. ",[50,51,52],"code",{},"https:\u002F\u002Fyour-cms.example.com",")",[20,55,57],{"id":56},"step-1-enter-cms-credentials","Step 1: Enter CMS Credentials",[59,60,62],"h3",{"id":61},"kiosk-images-first-boot-wizard","Kiosk images (first-boot wizard)",[16,64,65],{},"The setup wizard appears automatically on first boot. Enter:",[67,68,69,74,80],"ol",{},[28,70,71,73],{},[32,72,47],{}," — your Xibo CMS address",[28,75,76,79],{},[32,77,78],{},"CMS Key"," — the server key from CMS settings",[28,81,82,85],{},[32,83,84],{},"Display Name"," — a name to identify this display (e.g. \"Lobby Screen 1\")",[59,87,89],{"id":88},"electron-player","Electron Player",[16,91,92],{},"On first launch, the player shows a setup page. Enter the same three fields. You can also configure via command line:",[94,95,100],"pre",{"className":96,"code":97,"language":98,"meta":99,"style":99},"language-bash shiki shiki-themes material-theme-lighter github-light github-dark","xiboplayer-electron --cms-url=https:\u002F\u002Fyour-cms.example.com --cms-key=YOUR_KEY --display-name=\"Lobby\"\n","bash","",[50,101,102],{"__ignoreMap":99},[103,104,107,111,115,118,121,125,129],"span",{"class":105,"line":106},"line",1,[103,108,110],{"class":109},"sbgvK","xiboplayer-electron",[103,112,114],{"class":113},"stzsN"," --cms-url=https:\u002F\u002Fyour-cms.example.com",[103,116,117],{"class":113}," --cms-key=YOUR_KEY",[103,119,120],{"class":113}," --display-name=",[103,122,124],{"class":123},"sjJ54","\"",[103,126,128],{"class":127},"s_sjI","Lobby",[103,130,131],{"class":123},"\"\n",[16,133,134,135,138],{},"Or edit the config file at ",[50,136,137],{},"~\u002F.config\u002Fxiboplayer\u002Felectron\u002Fconfig.json",".",[59,140,142],{"id":141},"chromium-player","Chromium Player",[16,144,145],{},"The Chromium player opens the PWA setup page in the browser. Enter CMS URL, key, and display name directly in the form.",[59,147,149],{"id":148},"pwa-browser","PWA (browser)",[16,151,152,153,156],{},"Navigate to ",[50,154,155],{},"https:\u002F\u002Fyour-cms.example.com\u002Fplayer\u002Fpwa\u002F"," and enter the CMS key and display name on the setup page.",[59,158,160],{"id":159},"config-templates-rpmdeb-installs","Config Templates (RPM\u002FDEB installs)",[16,162,163],{},"For automated deployments or managing multiple displays, use config templates instead of the setup wizard. Templates separate secrets (CMS credentials) from configuration profiles (kiosk, dev, sync).",[165,166,168],"h4",{"id":167},"secrets","Secrets",[16,170,171],{},"Create your secrets file once per CMS. The templates read from it automatically.",[94,173,175],{"className":96,"code":174,"language":98,"meta":99,"style":99},"cp \u002Fusr\u002Fshare\u002Fxiboplayer-electron\u002Fconfigs\u002Fsecrets.env.example \\\n   ~\u002F.config\u002Fxiboplayer\u002Fsecrets.env\nnano ~\u002F.config\u002Fxiboplayer\u002Fsecrets.env\n",[50,176,177,189,195],{"__ignoreMap":99},[103,178,179,182,185],{"class":105,"line":106},[103,180,181],{"class":109},"cp",[103,183,184],{"class":127}," \u002Fusr\u002Fshare\u002Fxiboplayer-electron\u002Fconfigs\u002Fsecrets.env.example",[103,186,188],{"class":187},"s_hVV"," \\\n",[103,190,192],{"class":105,"line":191},2,[103,193,194],{"class":127},"   ~\u002F.config\u002Fxiboplayer\u002Fsecrets.env\n",[103,196,198,201],{"class":105,"line":197},3,[103,199,200],{"class":109},"nano",[103,202,203],{"class":127}," ~\u002F.config\u002Fxiboplayer\u002Fsecrets.env\n",[94,205,210],{"className":206,"code":207,"filename":208,"language":209,"meta":99,"style":99},"language-ini shiki shiki-themes material-theme-lighter github-light github-dark","CMS_URL=https:\u002F\u002Fyour-cms.example.com\nCMS_KEY=your-server-key\nAPI_CLIENT_ID=your-oauth-client-id\nAPI_CLIENT_SECRET=your-oauth-client-secret\n","secrets.env","ini",[50,211,212,226,236,246],{"__ignoreMap":99},[103,213,214,218,222],{"class":105,"line":106},[103,215,217],{"class":216},"sFlF4","CMS_URL",[103,219,221],{"class":220},"sP7_E","=",[103,223,225],{"class":224},"su5hD","https:\u002F\u002Fyour-cms.example.com\n",[103,227,228,231,233],{"class":105,"line":191},[103,229,230],{"class":216},"CMS_KEY",[103,232,221],{"class":220},[103,234,235],{"class":224},"your-server-key\n",[103,237,238,241,243],{"class":105,"line":197},[103,239,240],{"class":216},"API_CLIENT_ID",[103,242,221],{"class":220},[103,244,245],{"class":224},"your-oauth-client-id\n",[103,247,249,252,254],{"class":105,"line":248},4,[103,250,251],{"class":216},"API_CLIENT_SECRET",[103,253,221],{"class":220},[103,255,256],{"class":224},"your-oauth-client-secret\n",[165,258,260],{"id":259},"profiles","Profiles",[262,263,266,269],"card",{"icon":264,"title":265},"i-lucide-monitor","Kiosk",[16,267,268],{},"Production mode. Fullscreen, mouse hidden, no debug UI, error-only logging. Use for deployed signage displays.",[94,270,272],{"className":96,"code":271,"language":98,"meta":99,"style":99},"apply.sh electron-kiosk electron\napply.sh chromium-kiosk chromium\n",[50,273,274,285],{"__ignoreMap":99},[103,275,276,279,282],{"class":105,"line":106},[103,277,278],{"class":109},"apply.sh",[103,280,281],{"class":127}," electron-kiosk",[103,283,284],{"class":127}," electron\n",[103,286,287,289,292],{"class":105,"line":191},[103,288,278],{"class":109},[103,290,291],{"class":127}," chromium-kiosk",[103,293,294],{"class":127}," chromium\n",[262,296,299,302],{"icon":297,"title":298},"i-lucide-code","Development",[16,300,301],{},"Windowed mode with debug overlays, keyboard controls (T=timeline, D=downloads, S=setup), verbose logging. Use for testing and troubleshooting.",[94,303,305],{"className":96,"code":304,"language":98,"meta":99,"style":99},"apply.sh electron-dev electron\napply.sh chromium-dev chromium\n",[50,306,307,316],{"__ignoreMap":99},[103,308,309,311,314],{"class":105,"line":106},[103,310,278],{"class":109},[103,312,313],{"class":127}," electron-dev",[103,315,284],{"class":127},[103,317,318,320,323],{"class":105,"line":191},[103,319,278],{"class":109},[103,321,322],{"class":127}," chromium-dev",[103,324,294],{"class":127},[262,326,329,332],{"icon":327,"title":328},"i-lucide-layout-grid","Multi-Display Sync",[16,330,331],{},"Synchronized playback across multiple screens. One lead coordinates timing, followers stagger layout transitions.",[94,333,335],{"className":96,"code":334,"language":98,"meta":99,"style":99},"apply.sh electron-sync-lead electron-sync-lead\napply.sh electron-sync-follower electron-sync-follower-1 PORT=8771 DISPLAY_NAME=follower-1\n",[50,336,337,347],{"__ignoreMap":99},[103,338,339,341,344],{"class":105,"line":106},[103,340,278],{"class":109},[103,342,343],{"class":127}," electron-sync-lead",[103,345,346],{"class":127}," electron-sync-lead\n",[103,348,349,351,354,357,360,364],{"class":105,"line":191},[103,350,278],{"class":109},[103,352,353],{"class":127}," electron-sync-follower",[103,355,356],{"class":127}," electron-sync-follower-1",[103,358,359],{"class":127}," PORT=",[103,361,363],{"class":362},"srdBf","8771",[103,365,366],{"class":127}," DISPLAY_NAME=follower-1\n",[165,368,370],{"id":369},"custom-overrides","Custom overrides",[16,372,373],{},"Pass variables on the command line to override template defaults:",[94,375,377],{"className":96,"code":376,"language":98,"meta":99,"style":99},"apply.sh electron-kiosk electron DISPLAY_NAME=\"Lobby Screen 1\" PORT=8770\n",[50,378,379],{"__ignoreMap":99},[103,380,381,383,385,388,391,393,396,398,400],{"class":105,"line":106},[103,382,278],{"class":109},[103,384,281],{"class":127},[103,386,387],{"class":127}," electron",[103,389,390],{"class":127}," DISPLAY_NAME=",[103,392,124],{"class":123},[103,394,395],{"class":127},"Lobby Screen 1",[103,397,124],{"class":123},[103,399,359],{"class":127},[103,401,402],{"class":362},"8770\n",[16,404,405,406,409,410,413],{},"Template syntax: ",[50,407,408],{},"{{VAR}}"," is required, ",[50,411,412],{},"{{VAR:default}}"," has a fallback. Empty OAuth fields are removed automatically so the display uses manual CMS authorization instead.",[165,415,417],{"id":416},"reset-a-player","Reset a player",[262,419,422,425],{"icon":420,"title":421},"i-lucide-trash-2","Cache clear",[16,423,424],{},"Clears browser cache (GPU cache, compiled code, blob storage) but keeps CMS auth, media files, and service worker data.",[94,426,428],{"className":96,"code":427,"language":98,"meta":99,"style":99},"clean.sh electron cache\n",[50,429,430],{"__ignoreMap":99},[103,431,432,435,437],{"class":105,"line":106},[103,433,434],{"class":109},"clean.sh",[103,436,387],{"class":127},[103,438,439],{"class":127}," cache\n",[262,441,444,447],{"icon":442,"title":443},"i-lucide-rotate-ccw","Full wipe",[16,445,446],{},"Removes all player data. The display re-registers with the CMS as a new device.",[94,448,450],{"className":96,"code":449,"language":98,"meta":99,"style":99},"clean.sh electron full\n",[50,451,452],{"__ignoreMap":99},[103,453,454,456,458],{"class":105,"line":106},[103,455,434],{"class":109},[103,457,387],{"class":127},[103,459,460],{"class":127}," full\n",[20,462,464],{"id":463},"step-2-authorize-in-cms","Step 2: Authorize in CMS",[16,466,467,468,138],{},"After the player registers, it appears in your CMS with status ",[32,469,470],{},"Waiting for Authorization",[67,472,473,476,482,485],{},[28,474,475],{},"Open your CMS admin UI",[28,477,478,479],{},"Go to ",[32,480,481],{},"Displays",[28,483,484],{},"Find your new display (status: Waiting)",[28,486,487,488],{},"Click ",[32,489,490],{},"Authorize",[16,492,493],{},"The player will pick up the authorization on its next collection cycle (typically within 30 seconds).",[20,495,497],{"id":496},"step-3-assign-content","Step 3: Assign Content",[67,499,500,506,516,519],{},[28,501,502,503],{},"In CMS, go to ",[32,504,505],{},"Schedule",[28,507,508,509,512,513],{},"Create or select a ",[32,510,511],{},"Campaign"," or ",[32,514,515],{},"Layout",[28,517,518],{},"Schedule it to your display or display group",[28,520,521],{},"The player downloads media and starts playback automatically",[20,523,525],{"id":524},"display-settings","Display Settings",[16,527,528],{},"Once authorized, the CMS pushes display settings to the player including:",[25,530,531,534,537,540,543],{},[28,532,533],{},"Collection interval (how often the player checks for updates)",[28,535,536],{},"Download window (restrict large downloads to off-hours)",[28,538,539],{},"Screenshot interval",[28,541,542],{},"Log level",[28,544,545],{},"XMR channel (for real-time push commands)",[16,547,548],{},"These are configured per-display or per-display-group in CMS → Displays → Edit Display → Display Settings.",[20,550,552],{"id":551},"verifying-connection","Verifying Connection",[59,554,556],{"id":555},"from-the-player","From the player",[16,558,559,560,563],{},"Press ",[50,561,562],{},"T"," to toggle the timeline overlay. If the schedule is loaded and layouts are listed, the connection is working.",[16,565,559,566,569],{},[50,567,568],{},"D"," to see download progress for media files.",[59,571,573],{"id":572},"from-the-cms","From the CMS",[16,575,576],{},"In CMS → Displays, check:",[25,578,579,585,591,597],{},[28,580,581,584],{},[32,582,583],{},"Status",": should show a green tick (authorized and communicating)",[28,586,587,590],{},[32,588,589],{},"Last Access",": should show a recent timestamp",[28,592,593,596],{},[32,594,595],{},"Storage",": shows remaining disk space on the player",[28,598,599,602],{},[32,600,601],{},"Screenshot",": if configured, shows the latest screenshot from the player",[604,605,606],"style",{},"html pre.shiki code .sbgvK, html code.shiki .sbgvK{--shiki-light:#E2931D;--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .stzsN, html code.shiki .stzsN{--shiki-light:#91B859;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sjJ54, html code.shiki .sjJ54{--shiki-light:#39ADB5;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .s_sjI, html code.shiki .s_sjI{--shiki-light:#91B859;--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s_hVV, html code.shiki .s_hVV{--shiki-light:#90A4AE;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .srdBf, html code.shiki .srdBf{--shiki-light:#F76D47;--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sFlF4, html code.shiki .sFlF4{--shiki-light:#E53935;--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sP7_E, html code.shiki .sP7_E{--shiki-light:#39ADB5;--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .su5hD, html code.shiki .su5hD{--shiki-light:#90A4AE;--shiki-default:#24292E;--shiki-dark:#E1E4E8}",{"title":99,"searchDepth":197,"depth":197,"links":608},[609,610,622,623,624,625],{"id":22,"depth":191,"text":23},{"id":56,"depth":191,"text":57,"children":611},[612,613,614,615,616],{"id":61,"depth":197,"text":62},{"id":88,"depth":197,"text":89},{"id":141,"depth":197,"text":142},{"id":148,"depth":197,"text":149},{"id":159,"depth":197,"text":160,"children":617},[618,619,620,621],{"id":167,"depth":248,"text":168},{"id":259,"depth":248,"text":260},{"id":369,"depth":248,"text":370},{"id":416,"depth":248,"text":417},{"id":463,"depth":191,"text":464},{"id":496,"depth":191,"text":497},{"id":524,"depth":191,"text":525},{"id":551,"depth":191,"text":552,"children":626},[627,628],{"id":555,"depth":197,"text":556},{"id":572,"depth":197,"text":573},"Register your display with a Xibo CMS and authorize it.","md",{},true,"\u002Fguide\u002Fconfigure-cms",{"title":5,"description":629},"guide\u002Fconfigure-cms","s0Wzxju8W4aOOsiRjuO3ZWo2vt4gm8giIKJExCn6cjY",1775148105252]