# ๐Ÿ’พ 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. --- ## ๐ŸŽฏ Doel van backups 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?"** --- ## ๐Ÿ—๏ธ Huidige infrastructuur Tulpencraft draait momenteel op de gedeelde Proxmox-host: ```text 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**. --- ## โš ๏ธ Backups zijn geen snapshots Een Proxmox snapshot is niet hetzelfde als een backup. Een snapshot kan handig zijn vรณรณr een wijziging: ```text id="t3j8sk" VM โ”‚ โ”œโ”€โ”€ Snapshot vรณรณr wijziging โ”‚ โ””โ”€โ”€ Wijziging uitvoeren ``` Een backup is bedoeld om gegevens ook na een ernstiger incident te kunnen herstellen. Bijvoorbeeld: ```text id="z7m2wk" Productie โ”‚ โ–ผ ๐Ÿ’พ Backup โ”‚ โ–ผ ๐Ÿ“ฆ Afzonderlijke opslag ``` Een snapshot op dezelfde fysieke storage beschermt dus niet tegen het verlies van die storage. --- ## ๐Ÿ›ก๏ธ Wat moet worden geback-upt? Niet iedere VM hoeft noodzakelijkerwijs op exact dezelfde manier te worden geback-upt. Voor Tulpencraft zijn vooral de volgende gegevens belangrijk. ### ๐ŸŽฎ Minecraft-werelden De belangrijkste data van een Minecraft-server bestaat uit de werelddata. Bijvoorbeeld: ```text 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. --- ### โš™๏ธ Configuraties Ook configuratiebestanden zijn belangrijk. Voorbeelden: ```text 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. --- ### ๐Ÿงฉ Plugins 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. --- ### ๐Ÿ—„๏ธ Database De huidige database draait intern op: ```text 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. --- ### ๐Ÿ” Systeemconfiguratie Voor een snelle recovery kunnen ook belangrijke systeemconfiguraties worden bewaard. Denk bijvoorbeeld aan: ```text 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. --- ## ๐Ÿ–ฅ๏ธ VM-backups Omdat Tulpencraft op Proxmox draait, ligt het voor de hand om VM's op VM-niveau te kunnen back-uppen. Conceptueel: ```text 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. --- ## ๐Ÿ’พ Backupbestemming 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: ```text 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. --- ## ๐Ÿ—„๏ธ Proxmox Backup Server 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: ```text id="5t9m9c" ๐Ÿ–ฅ๏ธ Proxmox โ”‚ โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚ โ”‚ โ–ผ โ–ผ โ–ผ Proxy Survival Events โ”‚ โ”‚ โ”‚ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ–ผ ๐Ÿ—„๏ธ Proxmox Backup Server โ”‚ โ–ผ ๐Ÿ’พ Backup ``` Hierdoor wordt de backupomgeving logisch en fysiek gescheiden van de productie-VM's. --- ## ๐Ÿ” Backup-encryptie 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: ```text ๐Ÿ–ฅ๏ธ Productie โ”‚ โ”œโ”€โ”€ ๐Ÿ’พ Encrypted backup โ”‚ โ””โ”€โ”€ ๐Ÿ”‘ Backup key โ”‚ โ–ผ ๐Ÿ” Afzonderlijk beveiligd opgeslagen ``` --- ## ๐Ÿ”‘ Backup-sleutels 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. --- ## ๐Ÿ”„ Backupfrequentie De gewenste frequentie hangt af van het soort data. Voorbeeld: | Data | Gewenste frequentie | | ------------------ | --------------------------- | | ๐ŸŒ Survival wereld | Regelmatig | | ๐Ÿ—„๏ธ Database | Regelmatig | | โš™๏ธ Configuraties | Bij wijzigingen + periodiek | | ๐ŸŽฏ Events | Afhankelijk van gebruik | | ๐Ÿ–ฅ๏ธ Volledige VM | Periodiek | | ๐Ÿงฉ Plugins | Bij wijzigingen + VM-backup | De exacte frequenties worden vastgesteld zodra de definitieve backupomgeving is ingericht. --- ## ๐Ÿ“† Retentie Niet iedere backup hoeft permanent te worden bewaard. Een retentiebeleid kan bijvoorbeeld bestaan uit: ```text 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. --- ## ๐Ÿงช Restore-tests Een backup die nooit is getest, is geen gegarandeerde backup. Daarom moet periodiek worden gecontroleerd of backups daadwerkelijk kunnen worden hersteld. Een eenvoudige test: ```text 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. --- ## ๐Ÿšจ Disaster recovery Bij een ernstig incident kan een volledige infrastructuurrestore noodzakelijk zijn. Bijvoorbeeld wanneer: ```text 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. --- ## ๐Ÿ—๏ธ Toekomstige infrastructuur Wanneer Tulpencraft groeit, kan de backuparchitectuur verder worden uitgebreid. Een mogelijke toekomstige omgeving: ```text 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. --- ## ๐ŸŒ Off-site backups 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: ```text ๐Ÿข 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. --- ## ๐Ÿ” Security 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. --- ## ๐Ÿ“Š Monitoring 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: * [[technische-infrastructuur:monitoring|Monitoring & logging]] --- ## ๐Ÿ“Œ Huidige situatie | Onderdeel | Huidige situatie | | ------------------- | -------------------------------------------- | | ๐Ÿ–ฅ๏ธ Virtualisatie | Proxmox VE | | ๐Ÿ–ฅ๏ธ Host | `hv002` | | โšก Productiestorage | NVMe | | ๐Ÿ’พ VM's | Tulpencraft VM's | | ๐Ÿ—„๏ธ Database | Intern op `mc-proxy001` | | ๐Ÿ“Š Monitoring | Zabbix | | ๐Ÿ—„๏ธ Backupplatform | **Nog verder vast te leggen** | | ๐ŸŒ Off-site backup | **Toekomstig** | | ๐Ÿ” Backup-encryptie | Afhankelijk van definitieve backupoplossing | | ๐Ÿงช Restore-tests | Onderdeel van de toekomstige backupprocedure | > De backuparchitectuur wordt verder uitgewerkt zodra de definitieve backupoplossing en opslaglocatie zijn vastgesteld. --- ## ๐ŸŒท Uitgangspunten 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. --- ## ๐Ÿ“š Gerelateerde documentatie * [[technische-infrastructuur:overzicht|Technische infrastructuur]] * [[technische-infrastructuur:os-installatie|OS-installatie]] * [[technische-infrastructuur:rocky-linux-10|Rocky Linux 10]] * [[technische-infrastructuur:server-hardening|Server hardening]] * [[technische-infrastructuur:firewall|Firewall]] * [[technische-infrastructuur:selinux|SELinux]] * [[technische-infrastructuur:systemd|systemd]] * [[technische-infrastructuur:storage|Storage]] * [[technische-infrastructuur:monitoring|Monitoring & logging]] * [[serverinfrastructuur:overzicht|Serverinfrastructuur]] --- ## ๐Ÿ“– Externe documentatie * [Proxmox VE Administration Guide](https://pve.proxmox.com/pve-docs/pve-admin-guide.pdf) * [Proxmox Backup Server](https://www.proxmox.com/en/proxmox-backup-server) * [Proxmox Backup Server Documentation](https://pbs.proxmox.com/docs/)