<p>The default runtime and the latest published version of each game library are prepared automatically on active hosts. New versions leave running servers on their selected files.</p>
<sectionclass="selection"aria-label="Deployment host and game files">
<divclass="title"><h3>Host and game files</h3><buttontype="button"disabled={disabled||loading}onclick={()=>{onchange?.();voidload();}}>Refresh hosts</button></div>
{#ifloading}<prole="status">Loading host readiness and libraries…</p>{/if}
<label>Game host<selectbind:value={selection.hostId}disabled={disabled||loading}onchange={()=>onchange?.()}><optionvalue="">Choose a host</option>{#eachhostsascandidate}<optionvalue={candidate.id}disabled={candidate.readiness!=='ready'}>{candidate.name} · {candidate.connectionState} · {hostReadinessLabel(candidate.readiness)}</option>{/each}</select></label>
{#if!loading&&!hosts.some(candidate=>candidate.readiness==='ready')}<p>No deployment-ready hosts. <ahref="/hosts"target="_blank"rel="noopener">Set up a host</a>, then refresh.</p>{/if}
<label>Game host<selectbind:value={selection.hostId}disabled={disabled||loading}onchange={()=>onchange?.()}><optionvalue="">Choose a host</option>{#eachhostsascandidate}<optionvalue={candidate.id}disabled={candidate.mode!=='active'||!!candidate.decommission||!candidate.credentialActive}>{candidate.name} · {candidate.connectionState} · {candidate.preparation?.state==='preparing'?'Preparing automatically':hostReadinessLabel(candidate.readiness)}</option>{/each}</select></label>
{#if!loading&&!hosts.length}<p><ahref="/hosts"target="_blank"rel="noopener">Add a host</a>. Its runtime and published game files will be prepared automatically.</p>{/if}
{#eachgamesasgame}<label>{game==='t5'?'Black Ops I':'Black Ops II'} game-file version<selectbind:value={selection.libraryIds[game]}disabled={disabled||loading||!host}onchange={()=>onchange?.()}><optionvalue="">Choose an immutable library version</option>{#eachversions.filter(version=>version.game===game)asversion}<optionvalue={version.id}disabled={!cacheReady(version.id)}>{version.name} · {version.version} · {cacheReady(version.id)?'Ready on host':'Not cached on host'}</option>{/each}</select></label>{/each}
<p><ahref="/game-files"target="_blank"rel="noopener">Upload a game folder or download a version to a host</a>, then refresh. Each launch stays pinned to its selected library version.</p>
{#ifhost&&!imageReady}<pclass="error">Prepare this runtime image from <ahref={`/hosts/${host.id}`}target="_blank"rel="noopener">host setup</a> before launch.</p>{/if}
{#eachgamesasgame}<label>{game==='t5'?'Black Ops I':'Black Ops II'} game-file version<selectbind:value={selection.libraryIds[game]}disabled={disabled||loading||!host}onchange={()=>onchange?.()}><optionvalue="">Choose an immutable library version</option>{#eachversions.filter(version=>version.game===game)asversion}<optionvalue={version.id}>{version.name}·{version.version}·{cacheReady(version.id)?'Ready on host':'Awaiting host copy'}</option>{/each}</select></label>{#ifhost&&selection.libraryIds[game]&&!cacheReady(selection.libraryIds[game])}<p>The selected files must finish preparation before launch. The latest published versions download automatically; older versions can be prepared from <ahref="/game-files"target="_blank"rel="noopener">Game Files</a>.</p>{/if}{/each}
<p><ahref="/game-files"target="_blank"rel="noopener">Publish a game folder</a> to make it available automatically on hosts. Each launch stays pinned to its selected version. Setup progress refreshes automatically.</p>
<details><summary>Advanced: runtime override</summary><p>The configured default runtime is prepared automatically. Custom images must be prepared from the host page.</p><label>Plutainer runtime image<inputrequiredbind:value={selection.image}disabled={disabled}onchange={()=>onchange?.()}/></label></details>
{#ifhost&&!imageReady}<p>Waiting for runtime preparation. <ahref={`/hosts/${host.id}`}target="_blank"rel="noopener">View host setup</a>.</p>{/if}
{#ifnetwork}<details><summary>Network overrides</summary><label>Local bind address<inputbind:value={selection.bindAddress}placeholder={host?.bindAddress??'Host default'}disabled={disabled}onchange={()=>onchange?.()}/></label><label>Public / NAT address<inputbind:value={selection.publicAddress}placeholder={host?.publicAddress||'Host default'}disabled={disabled}onchange={()=>onchange?.()}/></label><label>Public / NAT port<inputtype="number"min="1"max="65535"bind:value={selection.publicPort}placeholder="Sameaslocalport"disabled={disabled}onchange={()=>onchange?.()}/></label><p>Public mapping does not change the local Docker port reservation.</p></details>{/if}
</section>
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.