technische-infrastructuur:backups

๐Ÿ’พ Backups

Backups zijn een essentieel onderdeel van de continuรฏteit van Tulpencraft.

Een Minecraft-server kan altijd opnieuw worden geรฏnstalleerd. De werelddata, configuraties, databasegegevens en andere unieke gegevens kunnen echter niet zomaar opnieuw worden opgebouwd.

Daarom worden backups gezien als een afzonderlijke beveiligingslaag naast de productieomgeving.


Het doel van backups is het kunnen herstellen van Tulpencraft na bijvoorbeeld:

  • ๐Ÿ–ฅ๏ธ een defecte VM;
  • ๐Ÿ’พ storageproblemen;
  • ๐Ÿ—‘๏ธ per ongeluk verwijderde bestanden;
  • โš™๏ธ een foutieve configuratie;
  • ๐Ÿ”Œ een defecte plugin;
  • ๐Ÿ’ฅ een servercrash;
  • ๐Ÿฆ  een beveiligingsincident;
  • ๐Ÿ‘ค menselijke fouten;
  • ๐Ÿ—๏ธ een migratie naar andere infrastructuur;
  • ๐Ÿ–ฅ๏ธ verlies van een fysieke host.

De belangrijkste vraag bij backups is daarom niet:

โ€œHebben we een backup?โ€

maar:

โ€œKunnen we daadwerkelijk herstellen wanneer dat nodig is?โ€


Tulpencraft draait momenteel op de gedeelde Proxmox-host:

id="kz6n8a"
๐Ÿ–ฅ๏ธ hv002
โ”‚
โ”œโ”€โ”€ ๐Ÿ–ฅ๏ธ mc-proxy001
โ”‚   โ”œโ”€โ”€ Velocity
โ”‚   โ”œโ”€โ”€ Lobby
โ”‚   โ”œโ”€โ”€ Database
โ”‚   โ””โ”€โ”€ overige diensten
โ”‚
โ”œโ”€โ”€ ๐ŸŽฎ Survival VM
โ”‚
โ”œโ”€โ”€ ๐ŸŽฏ Events VM
โ”‚
โ””โ”€โ”€ โž• toekomstige VM's

De host beschikt over NVMe-storage.

De productiegegevens van Tulpencraft bevinden zich daardoor momenteel binnen de infrastructuur van hv002.

Dit betekent ook dat de Proxmox-host zelf geen ideale enige backupbestemming is.


Een Proxmox snapshot is niet hetzelfde als een backup.

Een snapshot kan handig zijn vรณรณr een wijziging:

id="t3j8sk"
VM
 โ”‚
 โ”œโ”€โ”€ Snapshot vรณรณr wijziging
 โ”‚
 โ””โ”€โ”€ Wijziging uitvoeren

Een backup is bedoeld om gegevens ook na een ernstiger incident te kunnen herstellen.

Bijvoorbeeld:

id="z7m2wk"
Productie
   โ”‚
   โ–ผ
๐Ÿ’พ Backup
   โ”‚
   โ–ผ
๐Ÿ“ฆ Afzonderlijke opslag

Een snapshot op dezelfde fysieke storage beschermt dus niet tegen het verlies van die storage.


Niet iedere VM hoeft noodzakelijkerwijs op exact dezelfde manier te worden geback-upt.

Voor Tulpencraft zijn vooral de volgende gegevens belangrijk.

De belangrijkste data van een Minecraft-server bestaat uit de werelddata.

Bijvoorbeeld:

id="yqv8d3"
/srv/minecraft/survival/world/
/srv/minecraft/survival/world_nether/
/srv/minecraft/survival/world_the_end/

Deze data is uniek en kan vaak niet opnieuw worden gegenereerd zonder voortgang van spelers te verliezen.


Ook configuratiebestanden zijn belangrijk.

Voorbeelden:

id="x3m7ah"
/srv/minecraft/survival/server.properties
/srv/minecraft/survival/config/
/srv/minecraft/survival/plugins/

Hierin kunnen onder andere instellingen van plugins, permissions en gameplay worden opgeslagen.


Plugin-JAR's zijn meestal opnieuw te downloaden.

Toch kunnen lokale pluginconfiguraties en data essentieel zijn.

Daarom is het verstandig om niet alleen de JAR-bestanden, maar de relevante pluginmappen mee te nemen.


De huidige database draait intern op:

id="8c5q7u"
mc-proxy001

Databasegegevens moeten onderdeel zijn van de backupstrategie.

Daarbij moet rekening worden gehouden met het verschil tussen:

  • een volledige VM-backup;
  • een database-dump;
  • een consistente databasebackup.

Een databasebackup moet bij voorkeur worden gemaakt op een manier die de consistentie van de database waarborgt.


Voor een snelle recovery kunnen ook belangrijke systeemconfiguraties worden bewaard.

Denk bijvoorbeeld aan:

id="6s0g0j"
/etc/systemd/system/
/etc/firewalld/
/etc/ssh/
/etc/selinux/

Niet ieder bestand hoeft afzonderlijk te worden geback-upt wanneer de volledige VM wordt meegenomen.


Omdat Tulpencraft op Proxmox draait, ligt het voor de hand om VM's op VM-niveau te kunnen back-uppen.

Conceptueel:

id="t4f7ra"
             Proxmox
                โ”‚
       โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
       โ”‚        โ”‚        โ”‚
       โ–ผ        โ–ผ        โ–ผ
   Proxy VM  Survival  Events
       โ”‚        โ”‚        โ”‚
       โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                โ”‚
                โ–ผ
             ๐Ÿ’พ Backup

Een volledige VM-backup kan een belangrijk hulpmiddel zijn bij disaster recovery.

Proxmox VE ondersteunt hiervoor onder andere integratie met Proxmox Backup Server. Voor VM's worden daarbij block-level backups gebruikt.


Een belangrijke regel is:

De backup moet onafhankelijk zijn van de productieomgeving.

Wanneer productie en backup op dezelfde fysieke storage staan, biedt de backup weinig bescherming tegen een fysiek storageprobleem.

Daarom is de gewenste architectuur bijvoorbeeld:

id="v2y8q4"
                 ๐Ÿ–ฅ๏ธ hv002
                    โ”‚
              Tulpencraft VM's
                    โ”‚
                    โ–ผ
                ๐Ÿ’พ Backup
                    โ”‚
                    โ–ผ
          ๐Ÿ“ฆ Afzonderlijke storage

In een verdere volwassen infrastructuur kan dit bijvoorbeeld een afzonderlijke backupserver of Proxmox Backup Server zijn.


Een mogelijke toekomstige oplossing is Proxmox Backup Server (PBS).

PBS is specifiek ontworpen voor het maken en beheren van backups van Proxmox-omgevingen.

Een mogelijke architectuur:

id="5t9m9c"
             ๐Ÿ–ฅ๏ธ Proxmox
                 โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚        โ”‚        โ”‚
        โ–ผ        โ–ผ        โ–ผ
      Proxy   Survival   Events
        โ”‚        โ”‚        โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                 โ”‚
                 โ–ผ
        ๐Ÿ—„๏ธ Proxmox Backup Server
                 โ”‚
                 โ–ผ
             ๐Ÿ’พ Backup

Hierdoor wordt de backupomgeving logisch en fysiek gescheiden van de productie-VM's.


Wanneer backups gevoelige gegevens bevatten, kan encryptie worden toegepast.

Proxmox ondersteunt client-side backup-encryptie met AES-256-GCM.

Daarbij geldt een belangrijke regel:

De encryptiesleutel mag niet uitsluitend op de productieserver worden bewaard.

Wanneer de server en de sleutel tegelijkertijd verloren gaan, kan de backup namelijk niet meer worden hersteld. Proxmox waarschuwt hier expliciet voor.

Een veilige situatie is bijvoorbeeld:

๐Ÿ–ฅ๏ธ Productie
      โ”‚
      โ”œโ”€โ”€ ๐Ÿ’พ Encrypted backup
      โ”‚
      โ””โ”€โ”€ ๐Ÿ”‘ Backup key
              โ”‚
              โ–ผ
       ๐Ÿ” Afzonderlijk
          beveiligd opgeslagen

Wanneer encrypted backups worden gebruikt, moeten encryptiesleutels afzonderlijk worden beheerd.

De sleutel hoort niet uitsluitend:

  • op dezelfde VM;
  • op dezelfde fysieke host;
  • op dezelfde backupstorage;

te staan.

De sleutel moet beschikbaar zijn wanneer een restore noodzakelijk is.

Daarom moet bij de backupdocumentatie altijd worden vastgelegd:

  • welke sleutel wordt gebruikt;
  • waar deze veilig wordt bewaard;
  • wie toegang heeft;
  • hoe een restore met de sleutel wordt uitgevoerd.

De gewenste frequentie hangt af van het soort data.

Voorbeeld:

DataGewenste frequentie
๐ŸŒ Survival wereldRegelmatig
๐Ÿ—„๏ธ DatabaseRegelmatig
โš™๏ธ ConfiguratiesBij wijzigingen + periodiek
๐ŸŽฏ EventsAfhankelijk van gebruik
๐Ÿ–ฅ๏ธ Volledige VMPeriodiek
๐Ÿงฉ PluginsBij wijzigingen + VM-backup

De exacte frequenties worden vastgesteld zodra de definitieve backupomgeving is ingericht.


Niet iedere backup hoeft permanent te worden bewaard.

Een retentiebeleid kan bijvoorbeeld bestaan uit:

id="m2j5s4"
Dagelijkse backups
      โ”‚
      โ”œโ”€โ”€ recente dagen
      โ”‚
      โ–ผ
Wekelijkse backups
      โ”‚
      โ”œโ”€โ”€ langere termijn
      โ”‚
      โ–ผ
Maandelijkse backups
      โ”‚
      โ””โ”€โ”€ langetermijnbewaring

Het exacte beleid wordt bepaald op basis van:

  • beschikbare storage;
  • belang van de data;
  • herstelvereisten;
  • groeisnelheid;
  • kosten.

Proxmox Backup Server ondersteunt onder andere prune- en retentionbeleid voor het beheren van oude backups.


Een backup die nooit is getest, is geen gegarandeerde backup.

Daarom moet periodiek worden gecontroleerd of backups daadwerkelijk kunnen worden hersteld.

Een eenvoudige test:

id="j8a6qg"
๐Ÿ’พ Backup
   โ”‚
   โ–ผ
๐Ÿ–ฅ๏ธ Testomgeving
   โ”‚
   โ–ผ
โ–ถ๏ธ VM starten
   โ”‚
   โ–ผ
๐Ÿ”Ž Data controleren
   โ”‚
   โ–ผ
โœ… Restore geslaagd

Bij een restore-test wordt onder andere gecontroleerd:

  • start de VM;
  • start het operating system;
  • zijn bestanden aanwezig;
  • start Minecraft;
  • zijn configuraties aanwezig;
  • is de database beschikbaar;
  • zijn werelden bruikbaar;
  • functioneren plugins.

Bij een ernstig incident kan een volledige infrastructuurrestore noodzakelijk zijn.

Bijvoorbeeld wanneer:

id="2oz7t6"
๐Ÿ–ฅ๏ธ hv002
   โ”‚
   โ–ผ
โŒ verloren / onbeschikbaar
   โ”‚
   โ–ผ
๐Ÿ—„๏ธ Backup beschikbaar
   โ”‚
   โ–ผ
๐Ÿ–ฅ๏ธ Nieuwe Proxmox-infrastructuur
   โ”‚
   โ–ผ
๐Ÿ’พ VM's herstellen
   โ”‚
   โ–ผ
๐ŸŽฎ Tulpencraft opnieuw beschikbaar

Daarom moeten backups niet alleen bestanden bevatten, maar moet ook duidelijk zijn hoe de infrastructuur opnieuw wordt opgebouwd.

De OS-installatie, server-hardening en installatieprocedures worden daarom afzonderlijk gedocumenteerd in deze wiki.


Wanneer Tulpencraft groeit, kan de backuparchitectuur verder worden uitgebreid.

Een mogelijke toekomstige omgeving:

id="r5o2x1"
                 ๐Ÿ–ฅ๏ธ Proxmox Node
                       โ”‚
        โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
        โ”‚              โ”‚              โ”‚
        โ–ผ              โ–ผ              โ–ผ
   mc-proxy001    mc-db001       mc-lobby001
        โ”‚
        โ–ผ
    Game servers
        โ”‚
        โ–ผ
       ๐ŸŽฎ
        โ”‚
        โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                              โ”‚
                              โ–ผ
                    ๐Ÿ—„๏ธ Backup Server
                              โ”‚
                              โ–ผ
                       ๐Ÿ’พ Backup storage

Bij verdere groei kan eventueel een tweede fysieke locatie of externe backup worden toegevoegd.


Een backup op een andere fysieke locatie biedt bescherming tegen incidenten waarbij een volledige locatie verloren gaat.

Denk bijvoorbeeld aan:

  • brand;
  • stroomproblemen;
  • fysieke schade;
  • hardwarefalen;
  • menselijke fouten;
  • ransomware;
  • verlies van de volledige hostingomgeving.

Een mogelijke volwassen backupstrategie is daarom:

๐Ÿข Productie
    โ”‚
    โ–ผ
๐Ÿ—„๏ธ Lokale backup
    โ”‚
    โ–ผ
๐ŸŒ Externe/off-site backup

Dit hoeft niet direct bij de start van Tulpencraft volledig te worden ingericht, maar vormt wel een mogelijk toekomstig onderdeel van de infrastructuur.


Backups zijn zelf een belangrijk beveiligingsobject.

Een backup kan immers dezelfde gevoelige gegevens bevatten als de productieomgeving.

Daarom gelden onder andere:

  • ๐Ÿ”’ beperkte toegang;
  • ๐Ÿ”‘ sterke authenticatie;
  • ๐Ÿ” encryptie waar nodig;
  • ๐Ÿ“‹ logging van beheeractiviteiten;
  • ๐Ÿงน gecontroleerde retentie;
  • ๐Ÿงช periodieke restore-tests.

Een backup mag nooit worden beschouwd als een โ€œveilige kopieโ€ die zonder verdere beveiliging kan worden opgeslagen.


De backupomgeving moet zelf eveneens worden gemonitord.

Belangrijke controles zijn bijvoorbeeld:

  • laatste succesvolle backup;
  • leeftijd van de laatste backup;
  • beschikbare backupstorage;
  • mislukte backupjobs;
  • restore-testresultaten;
  • bereikbaarheid van de backupserver.

Een backup die stilletjes drie weken geleden voor het laatst succesvol heeft gedraaid, moet als probleem worden gezien.

Daarom kan Zabbix worden gebruikt om belangrijke backupstatussen te monitoren.

Zie:


OnderdeelHuidige situatie
๐Ÿ–ฅ๏ธ VirtualisatieProxmox VE
๐Ÿ–ฅ๏ธ Hosthv002
โšก ProductiestorageNVMe
๐Ÿ’พ VM'sTulpencraft VM's
๐Ÿ—„๏ธ DatabaseIntern op mc-proxy001
๐Ÿ“Š MonitoringZabbix
๐Ÿ—„๏ธ BackupplatformNog verder vast te leggen
๐ŸŒ Off-site backupToekomstig
๐Ÿ” Backup-encryptieAfhankelijk van definitieve backupoplossing
๐Ÿงช Restore-testsOnderdeel van de toekomstige backupprocedure

De backuparchitectuur wordt verder uitgewerkt zodra de definitieve backupoplossing en opslaglocatie zijn vastgesteld.


Binnen Tulpencraft gelden de volgende uitgangspunten:

  1. ๐Ÿ’พ Belangrijke data wordt geback-upt.
  2. ๐Ÿ–ฅ๏ธ Backups mogen niet uitsluitend op dezelfde fysieke host staan als productie.
  3. ๐ŸŒ Kritieke backups worden bij voorkeur ook extern/off-site bewaard.
  4. ๐Ÿ” Gevoelige backups worden adequaat beveiligd.
  5. ๐Ÿ”‘ Encryptiesleutels worden afzonderlijk van de backupdata beheerd.
  6. ๐ŸงŠ Snapshots zijn geen backups.
  7. ๐Ÿงช Backups worden periodiek getest door een restore uit te voeren.
  8. ๐Ÿ“Š Backupjobs worden gemonitord.
  9. ๐Ÿ“† Retentie wordt bewust ingericht.
  10. ๐Ÿšจ Een backupstrategie moet ook een daadwerkelijke disaster recovery mogelijk maken.

  • technische-infrastructuur/backups.txt
  • Laatst gewijzigd: 2026/08/23 11:09
  • door rroethof