omniaHandleiding
Voor technisch beheerders

Beheer, backups en herstel

Plan beheer als een terugkerende taak. Beschikbaarheid, berichtverwerking, uploads, backups en bewaartermijnen vragen ieder om een eigen controle.

Dagelijkse controles

  • Gebruik /health/live voor procesleven en /health/ready voor de gereedheid van de rol. Een levend proces is niet noodzakelijk gereed.
  • Bekijk workerfouten en achterstallige berichten. Een geaccepteerde opdracht betekent niet dat een extern bericht al is afgeleverd.
  • Controleer schijfruimte, opslag en de refresh-coördinatievolumes van web en admin.
  • Gebruik herleidbare operatie- en foutcodes bij support; zet geen tokens of complete persoonsgegevens in tickets.

Een backup maken

De productie-Compose bevat een backupprofiel:

docker compose -f deploy/compose.prod.yaml \
  --env-file deploy/.env.prod --profile backup run --rm backup

Controleer locatie en retentie in het gekozen voorbeeldbestand. Leg naast de database ook de benodigde bestandsopslag en veilig beheerde configuratie vast. Test terugzetten in een afzonderlijke omgeving en controleer functioneel of een editie, registratie en bestand nog bereikbaar zijn.

Bijwerken

Lees de releasenotities en upgradeaandachtspunten van deploy/README.md. Bouw of haal de bij elkaar horende images op; laat de migratierol afronden vóór de rollen herstarten. Controleer daarna de gebruikersreizen opnieuw.

Een workerstart kan ook retentieopruiming uitvoeren. Controleer gewijzigde bewaartermijnen vóór de upgrade, niet pas na een opschoonronde.

Bewaartermijnen instellen

Bewaartermijnen staan onder Omnia:Retention. Elke benoemde termijn heeft een vaste eenheid die in de code is vastgelegd; je kunt de lengte wijzigen, niet de eenheid.

  • Dagen: Omnia__Retention__Periods__<Name>=<dagen>, een geheel getal van 0 of meer.
  • Kalendermaanden: Omnia__Retention__Periods__<Name>__Months=<maanden>, een geheel getal van 1 of meer. De termijn telt vanaf de laatste dag van de editie in de tijdzone van het evenement. De gegevens verdwijnen aan het eind van dezelfde kalenderdag zoveel maanden later: 6 maanden na 15 mei is het eind van 15 november. Heeft die maand zo’n dag niet, dan telt de laatste dag van de maand: 6 maanden na 31 augustus is het eind van 28 februari, of 29 februari in een schrikkeljaar.

Een termijn in de verkeerde eenheid, in beide eenheden of met een ongeldige waarde laat de worker bij de start stoppen met exitcode 64 en een melding die de te wijzigen instelling noemt. De maandvorm is beschikbaar sinds de gecontroleerde revisie, maar nog geen enkele termijn gebruikt kalendermaanden; de spec voor de eerste toepassing (omnia-spec #365) is nog open.

Zet de instelling in de omgeving van de worker. In het productieprofiel van Compose betekent dat worker.environment in compose.prod.yaml of een override; een waarde alleen in .env.prod wordt niet aan de worker doorgegeven. Voorbeelden van termijnen in dagen zijn CfpEmergencyContact (30 dagen) en McpAuditRecord (60 dagen).

MCP en assistentkoppelingen

Het MCP-endpoint bestaat alleen als de API een geldige publieke origin in OMNIA_API_URL heeft. De metadata van de beschermde bron vraagt daarnaast een ingestelde identiteitsprovider.

  • Misbruikbudget: MCP heeft een eigen groep per adres, mcp, standaard 1.000 verzoeken per venster van één minuut. Pas dit aan met Omnia__Network__AbuseBudget__Groups__mcp__PerAddress, …__Window en …__MaxBodyBytes (standaard 256 KiB). De voorbeeldbestanden in deploy noemen deze sleutels niet. Bij overschrijding volgt 429 met Retry-After.
  • Bewaartermijn van de audit: MCP-auditrecords worden standaard 60 dagen bewaard en door de dagelijkse workerronde verwijderd. Wijzig dit met Omnia__Retention__Periods__McpAuditRecord=<dagen>.

Koppelingen voor personen en agents beheer je alleen via de API; er is geen beheerscherm.

Upgradenotities 13–14 november 2026

Deze notities gaan over de platformwijzigingen die op 13 en 14 november 2026 zijn samengevoegd. Pas ze toe naast de notities in deploy/README.md, die ze nog niet noemt.

  1. Controleer bestellingen vóór ConstrainOrderBuyerShape. De migratie voegt de databaseregel ck_orders_buyer_shape toe. Zij mislukt (SQLSTATE 23514) als een rij de regel al overtreedt: een persoon als koper met een bedrijfsnaam of btw-nummer, of een bedrijf als koper zonder naam. Omnia zelf heeft zo’n rij nooit geschreven, maar controleer eerst gegevens die buiten Omnia zijn geïmporteerd of bewerkt:

    SELECT id, buyer_kind, buyer_company_name, buyer_vat_identification
    FROM commerce.orders
    WHERE NOT ((buyer_kind = 'Person' AND buyer_company_name IS NULL
                AND buyer_vat_identification IS NULL)
            OR (buyer_kind = 'Company' AND buyer_company_name IS NOT NULL
                AND buyer_company_name ~ '[^ ]'));

    De query mag geen rijen opleveren. Corrigeer gevonden rijen vóór de upgrade. De nieuwe lengtegrenzen gelden alleen voor nieuwe bestellingen; bestaande rijen veranderen niet.

  2. Controleer orderregels vóór TightenOrderLineAttachment. De regel ck_order_lines_attachment eist nu dat elke optieregel de ticketregel noemt waar zij bij hoort. Deze query mag geen rijen opleveren:

    SELECT id FROM commerce.order_lines
    WHERE NOT ((ticket_type_id IS NULL) = (attached_to_line_id IS NOT NULL));
  3. Migraties met alleen data voor wissing. AddCommerceErasureDomains en AddSponsorsAcceptanceJournalErasureDomain voegen alleen openstaande domeinrijen toe aan lopende wisverzoeken. Er zijn geen instellingen nodig. Met wissing uit wordt niets verwerkt.

  4. AddActionLinkReceiptSubject. Voegt de betrokken persoon van het ontvangstbewijs en twee indexen toe en registreert de bewijzen als wisdomein. De optionele instelling KeepReceiptsFor staat hierboven.

  5. Nieuwe vorm voor bewaartermijnen in kalendermaanden. Beschikbaar, maar nog door geen enkele termijn gebruikt. Bestaande instellingen in dagen blijven geldig.

De controle van workshopplaatsen die op 14 november is samengevoegd (#2580) heeft geen migratie, instelling of zichtbaar effect.

14 november 2026 (later)

Platformrevisie fb1761f7be16. Nog twee migraties; geen van beide vraagt een instelling.

  1. SponsorPackageBenefitTypes (Sponsors). Vervangt de controleregel ck_packages_benefits op sponsors.packages, zodat ook de soorten booth, leadScanning en sponsoredTalkSlot zijn toegestaan, met één regel per soort. De regel wordt alleen verruimd, dus bestaande pakketten blijven geldig en vooraf controleren is niet nodig. Zie voordelen van een pakket.
  2. AddTicketTypeTermsVersion (Commerce). Voegt commerce.ticket_types.terms_version toe, een geheel getal, niet leeg, met standaardwaarde 1. Bestaande tickettypen beginnen bij versie 1 en een replica die nog op de vorige release draait kan rijen blijven toevoegen. Zie registratievoorwaarden en hun versie.

De weigering van publicatie nadat een evenementdag is verwijderd (#2548) heeft geen migratie of instelling.

Refresh-coördinatie veilig herstellen

Verwijder of herstel de refresh-journalvolumes niet terwijl oude aanmeldcookies nog geldig kunnen zijn. De journal voorkomt hergebruik van al verbruikte refresh-tokens. Een oudere backup kan dat geheugen verliezen.

De platformprocedure beëindigt eerst de relevante aanmeldsessies, bijvoorbeeld door zowel OMNIA_WEB_SESSION_SECRET als OMNIA_ADMIN_SESSION_SECRET te wijzigen terwijl de apps gestopt zijn. Volg de specifieke herstelprocedure; docker compose down -v is geen normale herstelstap en verwijdert ook data.

Leg incident, oorzaak, uitgevoerd herstel en verificatie vast. Houd archiveren en persoonsgegevens wissen gescheiden van technisch backupbeheer.

Over dit hoofdstuk

Broncode gecontroleerd; praktijkcontrole nodig

Gecontroleerd op 2026-11-14 · platform fb1761f7

Bronnen: 26 · 27 · Implementatie

Van eerste voorstel tot evenement: volg jouw rol, keuzes en volgende stap.