Snel aan de slag
Op deze pagina
Hosten op Coolify
Deze pagina beschrijft hoe Mini Engine 0.4 in productie draait op een eigen Coolify-server, met https://miniengine.nl als voorbeeld en bevestigingsmails vanaf noreply@miniengine.nl. Vervang die adressen door je eigen domein.
Alles wat de engine nodig heeft, staat in de repository: een Dockerfile met healthcheck, het compose-bestand compose.coolify.yaml en de omgevingsvariabelen hieronder.
1. DNS voor de site #
Maak bij je domeinbeheerder deze records:
| Type | Naam | Waarde |
|---|---|---|
A |
@ |
IPv4-adres van je Coolify-server |
AAAA |
@ |
IPv6-adres van de server, als die er een heeft |
CNAME |
www |
miniengine.nl (optioneel) |
Coolify vraagt zelf een Let's Encrypt-certificaat aan zodra de records naar de server wijzen.
2. Mail en mail-DNS #
Accounts krijgen een bevestigingsmail (zie accounts). Daarvoor heb je een SMTP-dienst nodig die mail mag versturen namens je domein, bijvoorbeeld Postmark, Brevo, Mailgun, Resend of de SMTP van je eigen mailhosting. Voeg het domein daar toe; de provider geeft je de DNS-records om het te verifiëren. Meestal zijn dat:
| Type | Naam | Waarde |
|---|---|---|
TXT |
@ |
SPF-record van je provider |
TXT of CNAME |
<selector>._domainkey |
DKIM-sleutel van de provider |
TXT |
_dmarc |
DMARC-beleid |
CNAME |
bijvoorbeeld pm-bounces |
Bounce-domein, als je provider dat vraagt |
SPF en DMARC zien er ongeveer zo uit:
@ TXT v=spf1 include:<provider> ~all
_dmarc TXT v=DMARC1; p=quarantine; rua=mailto:dmarc@miniengine.nlEen domein heeft één SPF-record. Heb je er al een, voeg de include dan toe aan dat record.
Begin eventueel met DMARC op p=none, kijk een paar dagen mee in de rapporten en ga dan naar quarantine.
De engine verwacht de SMTP-gegevens als één URL:
smtps://GEBRUIKER:WACHTWOORD@smtp.provider.example:465
smtp://GEBRUIKER:WACHTWOORD@smtp.provider.example:587?tls=requiredTekens als @, : of / in de gebruikersnaam of het wachtwoord moet je URL-coderen; @ wordt %40.
3. De applicatie in Coolify #
- Kies New Resource → Private Repository (with GitHub App) en daarna
Casb02/mini-engine, branchmain. - Kies Build Pack: Docker Compose met het compose-bestand
compose.coolify.yaml. - Zet bij de service
enginehet domein ophttps://miniengine.nl, en eventueelhttps://www.miniengine.nl. De engine luistert op poort 3000. - Vul in het tabblad Environment Variables de variabelen hieronder in.
- Klik op Deploy. Coolify bouwt de image, start de container en wacht tot de healthcheck groen is.
Omgevingsvariabelen #
| Variabele | Waarde |
|---|---|
MINI_ENGINE_ADMIN_TOKEN |
Verplicht. De uitvoer van openssl rand -hex 32; minstens 32 tekens. Bewaar hem in je wachtwoordmanager. |
MINI_ENGINE_SMTP_URL |
Verplicht. De SMTP-URL uit stap 2. Markeer hem als secret. |
MINI_ENGINE_MAIL_FROM |
Mini Engine <noreply@miniengine.nl> (standaard) |
MINI_ENGINE_PUBLIC_URL |
https://miniengine.nl (standaard). De basis voor links in mails. |
MINI_ENGINE_TRUST_PROXY |
x-forwarded-for (standaard). Staat Cloudflare als proxy voor Coolify, gebruik dan cf-connecting-ip. |
MINI_ENGINE_ORIGINS |
Leeg, tenzij een ander adres de engine vanuit de browser moet aanroepen |
RUST_LOG |
mini_engine=info,tower_http=warn (standaard) |
Het compose-bestand zet de paden zelf: de database op /app/data/mini-engine.sqlite, de spellen in /app/games en de demo in /app/web. Ontbreekt een verplichte variabele, dan start de deploy niet.
MINI_ENGINE_TRUST_PROXY bepaalt van welk IP-adres een verzoek komt, en dus voor wie de aanvraaglimieten tellen. Zonder deze variabele delen alle bezoekers het adres van de proxy. Zet hem alleen als de engine uitsluitend via die proxy bereikbaar is.
Healthcheck en opslag #
De container controleert zichzelf met mini-engine healthcheck (elke 30 seconden). Dat commando vraagt /api/health op en slaagt bij een 200.
De database staat in het volume mini-engine-data (/app/data). Dat volume blijft bestaan bij een nieuwe deploy: kamers, accounts, uploads en resultaten overleven een herstart.
4. Na de eerste deploy #
Open
https://miniengine.nl/demo/account, maak je eigen account en bevestig je e-mailadres via de mail.Log met de me-CLI in als beheerder en maak dev-keys voor mensen met een bevestigd adres:
Shellme admin login me admin token create dani --label laptopDe CLI praat standaard met
https://miniengine.nl. Voor een ander domein voeg je--server https://jouw-domeintoe.Komt er geen mail aan, kijk dan bij Logs van de service. Een SMTP-fout staat daar als
bevestigingsmail niet verstuurd. ZonderMINI_ENGINE_SMTP_URLschrijft de engine de bevestigingslink in de log. Als beheerder kun je een adres ook met de hand bevestigen metme admin account verify <gebruikersnaam>; zie beheer.
5. Back-ups #
Maak in Coolify onder Scheduled Tasks een taak voor de service engine, met als frequentie 0 3 * * * (elke nacht om 03:00):
mini-engine backup /app/data/backups/mini-engine-$(date +%F).sqlite && ls -1t /app/data/backups/mini-engine-*.sqlite | tail -n +4 | xargs -r rm -fmini-engine backup <bestand> maakt een consistente kopie van de database (VACUUM INTO), ook terwijl er gespeeld wordt. Het doelbestand mag nog niet bestaan; ontbrekende mappen maakt het commando zelf. Het tweede deel bewaart alleen de drie nieuwste kopieën, zodat de schijf niet volloopt. Het draait alleen als de nieuwe back-up gelukt is. Wil je er meer bewaren, verhoog dan de 4 in tail -n +4 (aantal plus één).
De back-ups staan dan nog op dezelfde server. Haal de map backups/ geregeld naar een andere plek, bijvoorbeeld met rsync naar een andere machine.
Terugzetten: stop de service, vervang /app/data/mini-engine.sqlite door een back-up, verwijder eventuele -wal- en -shm-bestanden ernaast en start de service opnieuw.
6. Updaten #
Zet in Coolify Auto Deploy aan, of deploy met de hand na een merge naar main. Tijdens het wisselen van container zijn de websockets even weg; de SDK verbindt zelf opnieuw en kamers lopen door. Kamers die een versie van een geüploade game spelen, houden die versie.
7. Docs op docs.miniengine.nl #
Deze documentatie draait op GitHub Pages onder https://docs.miniengine.nl/. Zo is dat ingericht:
- Maak een DNS-record
CNAMEdocs→casb02.github.io. - Ga in
Casb02/mini-engine-docsnaar Settings → Pages → Custom domain, vuldocs.miniengine.nlin en zet Enforce HTTPS aan zodra het certificaat er is. - Zet in
.github/workflows/pages.ymlde build-omgevingDOCS_BASE=/, zodat de 404-pagina naar de root verwijst.
Variabelen in één oogopslag #
| Variabele | Standaard | Wat |
|---|---|---|
MINI_ENGINE_BIND |
0.0.0.0:3000 |
Adres en poort |
MINI_ENGINE_DB |
/app/data/mini-engine.sqlite |
SQLite-database |
MINI_ENGINE_PUBLIC_URL |
https://miniengine.nl |
Basis voor links in mails |
MINI_ENGINE_SMTP_URL |
verplicht | SMTP voor bevestigingsmails |
MINI_ENGINE_MAIL_FROM |
noreply@miniengine.nl |
Afzender, met de naam Mini Engine |
MINI_ENGINE_ADMIN_TOKEN |
verplicht | Beheer en dev-keys, minstens 32 tekens |
MINI_ENGINE_TRUST_PROXY |
x-forwarded-for |
Waar het IP-adres van de bezoeker vandaan komt |
MINI_ENGINE_ORIGINS |
leeg | Extra toegestane browser-origins |
RUST_LOG |
mini_engine=info,… |
Logniveau |
Voor een server op je eigen netwerk zonder Coolify, zie de engine draaien en draaien met Docker.