Naar de inhoud

Documentatie

MCSManager

Koppel een MCSManager-paneel en Provibr levert, bedient en importeert er gameservers op. Deze pagina beschrijft wat afwijkt van de andere gamepanelen.

API-sleutel

MCSManager werkt met één API-sleutel, zonder OAuth2-client en zonder sleutelpaar. Maak er een aan in het paneel onder je account en plak hem samen met de paneel-URL in Provibr.

  • Host: de volledige paneel-URL inclusief de poort, bijvoorbeeld http://panel.example.com:23333. MCSManager draait standaard op plain HTTP op 23333, en er is geen poort die Provibr zonder gokken kan aanvullen.
  • API-sleutel: de sleutel van 32 tekens die het paneel aanmaakt. Er is één sleutel per paneelgebruiker en een tweede aanmaken overschrijft de eerste, dus geef Provibr een eigen paneelgebruiker in plaats van het account waarin je zelf werkt.
  • TLS-fingerprint (optioneel): alleen bij een https://-host, om het certificaat vast te pinnen.
API-sleutels staan in een verse MCSManager-installatie uit. Tot je ze aanzet onder Instellingen → API antwoordt elke aanroep met 403 Insufficient Permissions, hetzelfde antwoord als bij een ingetrokken sleutel, en niets erin wijst naar die schakelaar.

De sleutel moet van een beheerder zijn: instances aanmaken, wijzigen en verwijderen zijn alle drie beheerdersroutes, dus een sleutel van een gewone gebruiker kan het paneel wel lezen maar niets leveren. Provibr controleert dat bij de verbindingstest, niet pas bij de eerste bestelling. Het is bovendien een breed mandaat: dezelfde sleutel opent het bestandsbeheer en het gebruikersbeheer van het paneel. Dat is de tweede reden om hem een eigen gebruiker te geven.

Transport

MCSManager levert plain HTTP op poort 23333 en brengt zelf geen certificaat mee. Staat het paneel achter een reverse proxy met TLS, vul dan de fingerprint van die proxy in; de agent vertrouwt dan dat ene certificaat in plaats van de controle uit te zetten. Lees hem uit met:

shell
openssl s_client -connect <host>:443 </dev/null 2>/dev/null | \
  openssl x509 -noout -fingerprint -sha256
Commando's en terminaluitvoer zijn overal Engels, in het paneel en op deze pagina's. Één tekst, één waarheid: wat je hier leest is letterlijk wat je host teruggeeft.

Laat het veld leeg bij een certificaat van een publieke autoriteit, en ook als het paneel alleen over http bereikbaar is. Een fingerprint naast een http-adres wordt geweigerd, want er is geen certificaat om te pinnen. Een paneel op plain http werkt, maar de API-sleutel en alles wat de integratie doet reizen dan onversleuteld.

Instances

Een MCSManager-instance is in wezen een startcommando en een werkmap. Er is geen egg, geen game code en geen template met variabelen, dus Provibr bouwt geen server uit een catalogusregel: het startcommando komt uit het game-plan dat je schrijft.

Het paneel draagt wel 63 installatiepresets, maar geen enkele heeft een identifier. MCSManager zoekt een preset op zijn titel en zijn omschrijving, een volzin, de titels zijn niet uniek, en beide waarden volgen de taal van het paneel. Een koppeling daarop breekt zodra iemand het paneel op een andere taal zet, en daarom biedt Provibr ze niet als keuzelijst aan.

Plannen

Een game-plan draagt het startcommando en, als de server dat nodig heeft, hoe hij gestopt wordt. Bestellen is plan-gedreven: wat er draait komt uit het plan, en de daemon waarop hij landt komt uit de instellingen van de integratie, of wordt voor je gekozen als het paneel er maar één heeft.

  • Startcommando: verplicht. Niets anders bepaalt wat er draait, dus anders dan bij een paneel met eggs is er geen standaard om op terug te vallen.
  • Stopcommando: optioneel. Leeg betekent ^C, MCSManagers eigen notatie voor SIGINT en de standaard van het paneel; een Minecraft-server wil stop.
  • Stoptimeout: optioneel. Leeg betekent de standaard van het paneel, 10 seconden, waarna de daemon hard ingrijpt.
Het startcommando gaat niet door een shell. MCSManager splitst het op spaties en geeft de delen als argumenten door, dus quotes, pipes en omleidingen doen niet wat je verwacht. Een bash -c-constructie komt terug als een parse-fout in de server zelf. Zet wat een shell nodig heeft in een scriptbestand en start dat bestand.

Plaatsing

MCSManager somt zijn daemons op en meldt van elke daemon het totale geheugen, dus de plaatsingsengine heeft een echte bovengrens om op te rangschikken, meer dan PufferPanel en GameAP geven. Op een paneel met één daemon, en dat is de gewone installatie, kiest de agent hem zelf en valt er niets in te vullen.

Bij meerdere daemons zet je de standaarddaemon in de instellingen van de integratie. Laat je hem leeg, dan weigert Provibr de bestelling in plaats van te gokken: een instance is achteraf niet naar een andere machine te verplaatsen.

Opschorten

MCSManager schort op via een vervaltijdstip op de instance, en het paneel handhaaft dat zelf: de daemon weigert een instance te starten waarvan de tijd verstreken is. Dat maakt dit de eerlijke soort opschorting: wie rechtstreeks in de MCSManager-interface inlogt, kan een door Provibr opgeschorte server niet starten, en dat geldt bij PufferPanel en GameAP juist niet.

  • Opschorten stopt de server ook. De eigen controle van het paneel draait één keer per uur, dus zonder die tweede stap zou een draaiende instance na het opschorten nog tot zestig minuten doordraaien.
  • Hervatten zet de vorige vervaltijd terug in plaats van hem te wissen. Stond er al een vervaldatum, dan zou wissen de instance stilzwijgend veranderen in een instance die nooit afloopt.
Dat vervalveld is van MCSManager zelf: zijn business mode verkoopt er instances per uur mee. Staat business mode aan, dan schrijft het paneel in hetzelfde veld als Provibr en overschrijven ze elkaars werk. Daarom weigert Provibr de inloggegevens zolang hij aan staat.

Docker

MCSManager draait een instance op twee manieren: als kaal proces in een pty, of in een Docker-container. Elke resourcelimiet die het paneel heeft, of dat nu geheugen, cpu of schijf is, hoort bij de tweede. Een kaal proces draait zonder cgroup, zonder geheugengrens en zonder schijfquotum.

Op een paneel zonder Docker is er dus helemaal niets begrensd. Provibr weigert zo'n paneel niet, want elk commando werkt erop, maar een plan dat 2 GB geheugen belooft, belooft dan iets wat het paneel niet afdwingt. Controleer of Docker geïnstalleerd is voordat je er een begrensd product op verkoopt; Provibr meldt het op de integratie als hij ontbreekt.

Wat Provibr niet doet

Er is geen console: de terminal van MCSManager loopt over socket.io met een eigen heartbeat in plaats van over een kale websocket, en het daemonadres dat het paneel teruggeeft is een lokaal adres dat een agent elders niet kan bereiken. Verbruiksgrafieken zijn er ook niet. Cpu en geheugen zijn echte metingen, maar schijf staat in de daemon hardgecodeerd op nul en netwerk ontbreekt volledig, dus twee van de vier grafieken zouden voorgoed op nul staan. Herinstalleren wordt met een leesbare reden geweigerd, want MCSManager herinstalleert alleen uit een preset en Provibr maakt niet uit een preset aan. Aanmaken, starten, stoppen, herstarten, killen, status lezen, opschorten, hervatten, verwijderen en bestaande instances importeren werken allemaal.