Salta al contenuto

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.
In un’installazione nuova di MCSManager le chiavi API sono disattivate. Finché non vengono attivate in Impostazioni → API, ogni chiamata risponde 403 Insufficient Permissions: la stessa risposta di una chiave revocata, e nulla al suo interno indica quell’interruttore.

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:

shell
openssl s_client -connect <host>:443 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
I comandi e l’output del terminale sono in inglese ovunque, nel pannello e in queste pagine. Un solo testo, una sola verità: quello che legge qui è letteralmente ciò che il suo host le restituirà.

Lasci 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.

Il pannello porta sì 63 preimpostazioni di installazione, ma nessuna ha un identificatore: MCSManager cerca una preimpostazione per titolo e descrizione, una frase intera, i titoli non sono univoci ed entrambi i valori seguono la lingua del pannello. Un collegamento fondato su questo si rompe non appena qualcuno cambia lingua al pannello, ed è per questo che Provibr non le propone come elenco a discesa.

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.
Il comando di avvio non passa da una shell. MCSManager lo divide sugli spazi e passa i pezzi come argomenti, quindi virgolette, pipe e redirezioni non fanno quello che ci si aspetta: una costruzione bash -c torna come errore di analisi dentro il server. Metta in un file di script tutto ciò che richiede una shell e avvii quel file.

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.

Con più daemon, indichi quello predefinito nelle impostazioni dell’integrazione. Se resta vuoto, Provibr rifiuta l’ordine invece di indovinare: un’istanza non si sposta su un’altra macchina in un secondo momento.

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.
Quel campo di scadenza è di MCSManager: la sua modalità commerciale lo usa per vendere istanze a ore. Con quella modalità attiva il pannello scrive nello stesso campo di Provibr e i due si sovrascrivono a vicenda, perciò Provibr rifiuta le credenziali finché resta accesa.

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.

Su un pannello senza Docker, dunque, non c’è alcun limite. Provibr non rifiuta un pannello simile, perché ogni comando vi funziona, ma un piano che promette 2 GB di memoria promette allora qualcosa che il pannello non fa rispettare. Verifichi che Docker sia installato prima di venderci un prodotto delimitato; Provibr lo segnala sull’integrazione quando manca.

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.