Snel aan de slag
Op deze pagina
De engine draaien
Mini Engine is één Rust-programma. Het serveert de API, de websockets, de demopagina en de geïnstalleerde spellen vanaf één adres. Je hebt geen aparte frontend-build nodig om te spelen.
Wat je nodig hebt #
- Toegang tot de privérepository
Casb02/mini-engineen een checkout ervan. - Een Rust-toolchain via
rustup. Derust-toolchain.tomlin de repository kiest het stabiele kanaal metclippyenrustfmt. - Een moderne browser. Voor de 3D-dobbelstenen van Common Dice is WebGL 2 nodig; zonder WebGL toont het spel dezelfde uitkomst als tekst.
Starten #
Vanuit de root van de checkout:
cargo runOpen localhost:3000/demo. Kies een spel, stel de kamer in en deel de code. / verwijst zelf door naar /demo.
Standaard luistert de engine alleen op 127.0.0.1:3000, dus alleen deze computer kan meedoen.
Spelen met telefoons op je wifi #
Laat de engine op alle netwerkinterfaces luisteren:
MINI_ENGINE_BIND=0.0.0.0:3000 cargo runOpen op de telefoons http://<LAN-IP>:3000/demo, bijvoorbeeld http://192.168.1.20:3000/demo. Gebruik dat LAN-adres ook op de computer van de spelleider, zodat alle apparaten dezelfde origin gebruiken.
Waarom dezelfde origin? De engine weigert browserverzoeken van een andere origin met
403 origin_forbidden. Een verzoek met eenOrigin-header moet overeenkomen met het adres waarop de engine wordt bezocht, of inMINI_ENGINE_ORIGINSstaan.
Omgevingsvariabelen #
| Variabele | Standaard | Betekenis |
|---|---|---|
MINI_ENGINE_BIND |
127.0.0.1:3000 |
Adres en poort waarop de engine luistert |
MINI_ENGINE_DB |
data/mini-engine.sqlite |
SQLite-bestand voor kamers, accounts en resultaten |
MINI_ENGINE_GAMES |
games |
Map met gamepackages |
MINI_ENGINE_WEB |
web |
Map met de demopagina en de SDK-bundle |
MINI_ENGINE_ORIGINS |
leeg | Extra toegestane browser-origins, kommagescheiden, met schema en poort |
MINI_ENGINE_ADMIN_TOKEN |
leeg | Zet beheer aan; minstens 32 tekens |
MINI_ENGINE_PUBLIC_URL |
http://localhost:3000 |
Publiek adres voor links in bevestigingsmails, zonder / aan het eind |
MINI_ENGINE_SMTP_URL |
leeg | SMTP-server voor bevestigingsmails, als URL (zie het voorbeeld hieronder). Zonder deze variabele komen de mails met de link alleen in de log. |
MINI_ENGINE_MAIL_FROM |
Mini Engine <noreply@localhost> |
Afzender van de mails |
MINI_ENGINE_TRUST_PROXY |
leeg | Achter een reverse proxy: x-forwarded-for, of een headernaam zoals cf-connecting-ip. Alleen zetten als de engine uitsluitend via die proxy bereikbaar is. |
Paden zijn relatief aan de werkmap. Buiten Docker Compose wordt .env niet automatisch ingelezen; exporteer de waarden zelf. De repository bevat een .env.example als voorbeeld:
MINI_ENGINE_BIND=127.0.0.1:3000
MINI_ENGINE_DB=data/mini-engine.sqlite
MINI_ENGINE_GAMES=games
MINI_ENGINE_WEB=web
# MINI_ENGINE_ORIGINS=http://localhost:3000,http://192.168.1.20:3000
# MINI_ENGINE_ADMIN_TOKEN=
# MINI_ENGINE_PUBLIC_URL=https://miniengine.nl
# MINI_ENGINE_SMTP_URL=smtps://user:password@smtp.example.com:465
# MINI_ENGINE_MAIL_FROM=Mini Engine <noreply@miniengine.nl>
# MINI_ENGINE_TRUST_PROXY=x-forwarded-forLokaal hoef je geen SMTP in te stellen. Registreer je een account, dan staat de bevestigingslink in de uitvoer van de engine; open die link in dezelfde browser waarin je bent ingelogd.
Spellen toevoegen of wijzigen #
De engine laadt gamepackages bij het opstarten. Na het toevoegen of wijzigen van een spel herstart je de engine. Wijzig of verwijder packages tussen speelsessies, niet tijdens een avond: gameversies worden nog niet aan lopende kamers vastgezet.
Controleren of alles werkt #
curl http://localhost:3000/api/healthHet antwoord is {"status":"ok","version":"0.4.0"}, met de versie uit Cargo.toml. De spellencatalogus staat op /api/v1/games.
In een container doet mini-engine healthcheck hetzelfde: het commando slaagt als /api/health een 200 geeft.
Back-ups #
mini-engine backup backups/mini-engine.sqliteDit maakt een consistente kopie van de database uit MINI_ENGINE_DB, ook terwijl de engine draait. Het doelbestand mag nog niet bestaan. Draai je de engine met cargo run, gebruik dan cargo run -- backup <bestand>.
Volgende stap #
Maak je eerste kamer, of draai de engine in Docker zodat kamers en accounts een herstart overleven. Voor een publieke server met een eigen domein en bevestigingsmails, zie hosten op Coolify.