Documentazione
MCSManager
Colleghi un pannello MCSManager e Provibr vi effettua il provisioning, controlla e importa i server di gioco. Questa pagina illustra ciò che differisce dagli altri pannelli di gioco.
Chiave API
MCSManager si autentica con un’unica chiave API: nessun client OAuth2 e nessuna coppia di chiavi. Ne crei una nel pannello, sotto il proprio account, e la incolli in Provibr insieme all’URL del pannello.
- Host: l’URL completo del pannello con la porta, per esempio http://panel.example.com:23333. MCSManager usa HTTP in chiaro sulla 23333 in modo predefinito, e non c’è porta che Provibr possa aggiungere senza indovinare.
- Chiave API: la chiave di 32 caratteri generata dal pannello. C’è una chiave per utente del pannello e crearne una seconda sovrascrive la prima, quindi conviene dare a Provibr un utente dedicato invece dell’account usato ogni giorno.
- Impronta TLS (facoltativa): solo per un host https://, per fissare il certificato.
La chiave deve appartenere a un amministratore: creare, modificare ed eliminare istanze sono tutte rotte riservate agli amministratori, quindi una chiave di un utente comune può leggere il pannello ma non può fornire nulla. Provibr lo verifica al test della connessione, non al primo ordine. È inoltre un mandato ampio: la stessa chiave apre la gestione dei file e quella degli utenti del pannello, ed è la seconda ragione per dedicarle un utente proprio.
Trasporto
MCSManager serve HTTP in chiaro sulla porta 23333 e non porta con sé alcun certificato. Se il pannello sta dietro un reverse proxy con TLS, inserisca l’impronta di quel proxy; l’agente si fida allora di quel solo certificato invece di disattivare la verifica. La legga con:
openssl s_client -connect <host>:443 </dev/null 2>/dev/null | \
openssl x509 -noout -fingerprint -sha256Lasci il campo vuoto con un certificato di un’autorità pubblica, e anche quando il pannello è raggiungibile solo via http: un’impronta accanto a un indirizzo http viene rifiutata, perché non c’è alcun certificato da fissare. Un pannello in http funziona, ma la chiave API e tutto ciò che fa l’integrazione viaggiano allora in chiaro.
Istanze
Un’istanza MCSManager è in sostanza un comando di avvio e una cartella di lavoro. Non c’è egg, non c’è codice di gioco e non c’è un modello con variabili, quindi Provibr non costruisce un server da una voce di catalogo: il comando di avvio viene dal piano di gioco che lei scrive.
Piani
Un piano di gioco porta il comando di avvio e, se il server ne ha bisogno, il modo di arrestarlo. L’ordine passa da un piano: ciò che gira viene dal piano, e il daemon su cui l’istanza atterra viene dalle impostazioni dell’integrazione, oppure viene scelto per lei quando il pannello ne ha uno solo.
- Comando di avvio: obbligatorio. Nient’altro decide che cosa gira, quindi, a differenza di un pannello con gli egg, non c’è alcun valore predefinito su cui ripiegare.
- Comando di arresto: facoltativo. Vuoto significa ^C, la notazione propria di MCSManager per SIGINT e il valore predefinito del pannello; un server Minecraft vuole stop.
- Timeout di arresto: facoltativo. Vuoto significa il valore predefinito del pannello, 10 secondi, dopo i quali il daemon interviene in modo duro.
Collocazione
MCSManager elenca i suoi daemon e riporta la memoria totale di ciascuno, quindi il motore di collocazione ha un tetto reale su cui ordinare, più di quanto offrano PufferPanel e GameAP. Su un pannello con un solo daemon, che è l’installazione ordinaria, l’agente lo sceglie da sé e non c’è nulla da compilare.
Sospensione
MCSManager sospende tramite una scadenza posta sull’istanza, e il pannello la fa rispettare da sé: il daemon rifiuta di avviare un’istanza il cui termine è passato. È quindi la sospensione onesta: chi entra direttamente nell’interfaccia di MCSManager non può avviare un server sospeso da Provibr, cosa che con PufferPanel e GameAP non vale.
- La sospensione arresta anche il server. Il controllo proprio del pannello gira una volta all’ora, quindi senza questo secondo passo un’istanza in esecuzione continuerebbe fino a sessanta minuti dopo la sospensione.
- La ripresa ripristina la scadenza precedente invece di cancellarla. Se una scadenza era già stata impostata, cancellarla trasformerebbe in silenzio l’istanza in una che non scade mai.
Docker
MCSManager esegue un’istanza in due modi: come processo semplice in una pty, oppure dentro un contenitore Docker. Ogni limite di risorse che il pannello conosce (memoria, CPU, disco) appartiene al secondo. Un processo semplice gira senza cgroup, senza tetto di memoria e senza quota di disco.
Ciò che Provibr non fa
Non c’è console: il terminale di MCSManager passa da socket.io con un heartbeat proprio invece che da un websocket semplice, e l’indirizzo di daemon che il pannello restituisce è locale, irraggiungibile per un agente altrove. Non ci sono nemmeno grafici d’uso. CPU e memoria sono misure reali, ma il disco è fissato a zero nel daemon e la rete manca del tutto. Due dei quattro grafici resterebbero quindi a zero per sempre. La reinstallazione viene rifiutata con una ragione leggibile, perché MCSManager reinstalla solo da una preimpostazione e Provibr non crea da una. Creare, avviare, arrestare, riavviare, terminare, leggere lo stato, sospendere, riprendere, eliminare e importare istanze esistenti funzionano tutte.