Enhance API with OIDC support, including login and callback endpoints. Update environment variables for OIDC configuration in .env.example. Add new features to the catalog service for listing software families, Minecraft versions, and deployment regions. Implement server management actions such as kill, delete, and update in the servers module. Integrate feature flags for maintenance mode in server operations. Update pnpm-lock.yaml with new dependencies and versions.
This commit is contained in:
@@ -15,10 +15,19 @@
|
||||
"cancel": "Abbrechen",
|
||||
"back": "Zurück",
|
||||
"footer": "Selbstgehostete Minecraft-Server-Plattform.",
|
||||
"servers": "Server"
|
||||
"servers": "Server",
|
||||
"features": "Funktionen",
|
||||
"pricing": "Preise",
|
||||
"docs": "Dokumentation",
|
||||
"status": "Status",
|
||||
"impressum": "Impressum",
|
||||
"privacy": "Datenschutz",
|
||||
"terms": "AGB",
|
||||
"admin": "Admin",
|
||||
"phaseBadge": "MVP · Phasen 0–9"
|
||||
},
|
||||
"landing": {
|
||||
"badge": "Phase 0 · Control Plane",
|
||||
"badge": "MVP · Phase 9 abgeschlossen",
|
||||
"title": "Minecraft-Server on demand",
|
||||
"subtitle": "Erstellen, konfigurieren und betreiben Sie Minecraft-Server über ein zentrales Webpanel — mandantenfähig, skalierbar und produktionsbereit.",
|
||||
"ctaPrimary": "Jetzt starten",
|
||||
@@ -205,7 +214,36 @@
|
||||
"players": "Spieler",
|
||||
"worlds": "Welten",
|
||||
"backups": "Backups",
|
||||
"addons": "Add-ons"
|
||||
"addons": "Add-ons",
|
||||
"software": "Software",
|
||||
"schedules": "Zeitpläne",
|
||||
"access": "Zugriffe"
|
||||
},
|
||||
"wizard": {
|
||||
"stepsLabel": "Erstellungsschritte",
|
||||
"steps": {
|
||||
"basics": "Grundlagen",
|
||||
"software": "Software",
|
||||
"review": "Prüfen"
|
||||
},
|
||||
"next": "Weiter",
|
||||
"back": "Zurück"
|
||||
},
|
||||
"software": {
|
||||
"title": "Software",
|
||||
"description": "Installierte Server-Software und Version.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Software-Informationen konnten nicht geladen werden.",
|
||||
"family": "Software-Familie",
|
||||
"version": "Minecraft-Version",
|
||||
"edition": "Edition",
|
||||
"changeHint": "Software-Wechsel wird in einer zukünftigen Version unterstützt.",
|
||||
"reinstall": "Software neu installieren",
|
||||
"reinstalling": "Wird neu installiert…",
|
||||
"reinstallConfirm": "Server-Software wirklich neu installieren? Zuerst wird ein Backup erstellt.",
|
||||
"reinstallStarted": "Neuinstallation gestartet. Der Server ist während der Installation nicht verfügbar.",
|
||||
"reinstallError": "Neuinstallation konnte nicht gestartet werden.",
|
||||
"reinstallStoppedHint": "Stoppen Sie den Server, bevor Sie die Software neu installieren."
|
||||
},
|
||||
"console": {
|
||||
"loading": "Wird geladen…",
|
||||
@@ -233,10 +271,27 @@
|
||||
"save": "Speichern",
|
||||
"saving": "Wird gespeichert…",
|
||||
"saved": "Datei gespeichert.",
|
||||
"upload": "Hochladen",
|
||||
"uploading": "Wird hochgeladen…",
|
||||
"uploaded": "Datei hochgeladen.",
|
||||
"delete": "Löschen",
|
||||
"deleted": "Gelöscht.",
|
||||
"deleteConfirm": "{name} wirklich löschen?",
|
||||
"archive": "Auswahl archivieren",
|
||||
"archiving": "Wird archiviert…",
|
||||
"archived": "Archiv erstellt.",
|
||||
"unarchive": "Archiv entpacken",
|
||||
"unarchiving": "Wird entpackt…",
|
||||
"unarchived": "Archiv-Entpackung gestartet.",
|
||||
"unarchiveConfirm": "{name} ins aktuelle Verzeichnis entpacken?",
|
||||
"errors": {
|
||||
"loadFailed": "Verzeichnis konnte nicht geladen werden.",
|
||||
"readFailed": "Datei konnte nicht gelesen werden.",
|
||||
"saveFailed": "Datei konnte nicht gespeichert werden."
|
||||
"saveFailed": "Datei konnte nicht gespeichert werden.",
|
||||
"deleteFailed": "Datei konnte nicht gelöscht werden.",
|
||||
"uploadFailed": "Datei konnte nicht hochgeladen werden.",
|
||||
"archiveFailed": "Archiv konnte nicht erstellt werden.",
|
||||
"unarchiveFailed": "Archiv konnte nicht entpackt werden."
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
@@ -280,14 +335,32 @@
|
||||
"loading": "Wird geladen…",
|
||||
"onlineCount": "Spieler online",
|
||||
"whitelistCount": "Whitelist-Einträge",
|
||||
"operatorsCount": "Operatoren",
|
||||
"onlineTitle": "Spieler online",
|
||||
"whitelistTitle": "Whitelist",
|
||||
"operatorsTitle": "Operatoren",
|
||||
"bansTitle": "Gebannte Spieler",
|
||||
"bansEmpty": "Keine gebannten Spieler.",
|
||||
"empty": "Keine Spieler online.",
|
||||
"retry": "Erneut versuchen",
|
||||
"kick": "Kicken",
|
||||
"addWhitelist": "Zur Whitelist hinzufügen",
|
||||
"addOperator": "Operator hinzufügen",
|
||||
"addBan": "Spieler bannen",
|
||||
"remove": "Entfernen",
|
||||
"fields": {
|
||||
"name": "Spielername",
|
||||
"uuid": "UUID",
|
||||
"reason": "Grund"
|
||||
},
|
||||
"columns": {
|
||||
"name": "Spieler",
|
||||
"ping": "Ping"
|
||||
"ping": "Ping",
|
||||
"actions": "Aktionen"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Spielerliste konnte nicht geladen werden."
|
||||
"loadFailed": "Spielerliste konnte nicht geladen werden.",
|
||||
"actionFailed": "Aktion fehlgeschlagen."
|
||||
}
|
||||
},
|
||||
"worlds": {
|
||||
@@ -347,6 +420,473 @@
|
||||
"remove": "Entfernen",
|
||||
"installed": "Installiert",
|
||||
"empty": "Noch keine Add-ons installiert."
|
||||
},
|
||||
"schedules": {
|
||||
"title": "Zeitpläne",
|
||||
"description": "Geplante Start-, Stopp- und Wartungsaktionen.",
|
||||
"loading": "Wird geladen…",
|
||||
"empty": "Noch keine Zeitpläne vorhanden.",
|
||||
"create": "Zeitplan erstellen",
|
||||
"edit": "Bearbeiten",
|
||||
"save": "Änderungen speichern",
|
||||
"cancel": "Abbrechen",
|
||||
"delete": "Löschen",
|
||||
"enable": "Aktivieren",
|
||||
"disable": "Deaktivieren",
|
||||
"saving": "Wird gespeichert…",
|
||||
"deleteConfirm": "Zeitplan \"{name}\" wirklich löschen?",
|
||||
"fields": {
|
||||
"name": "Name",
|
||||
"cron": "Cron-Ausdruck",
|
||||
"timezone": "Zeitzone",
|
||||
"taskType": "Aufgabe",
|
||||
"enabled": "Aktiv",
|
||||
"command": "Konsolenbefehl",
|
||||
"commandPlaceholder": "say Server startet neu"
|
||||
},
|
||||
"columns": {
|
||||
"name": "Name",
|
||||
"cron": "Cron",
|
||||
"task": "Aufgabe",
|
||||
"status": "Status",
|
||||
"actions": "Aktionen"
|
||||
},
|
||||
"status": {
|
||||
"enabled": "Aktiv",
|
||||
"disabled": "Inaktiv"
|
||||
},
|
||||
"taskTypes": {
|
||||
"START": "Server starten",
|
||||
"STOP": "Server stoppen",
|
||||
"RESTART": "Server neu starten",
|
||||
"BACKUP": "Backup erstellen",
|
||||
"CONSOLE_COMMAND": "Befehl ausführen",
|
||||
"UPDATE_CHECK": "Updates prüfen",
|
||||
"MAINTENANCE": "Wartung"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Zeitpläne konnten nicht geladen werden.",
|
||||
"saveFailed": "Zeitplan konnte nicht gespeichert werden.",
|
||||
"deleteFailed": "Zeitplan konnte nicht gelöscht werden."
|
||||
}
|
||||
},
|
||||
"access": {
|
||||
"title": "Zugriffe",
|
||||
"description": "Freigaben und Berechtigungen für diesen Server.",
|
||||
"loading": "Wird geladen…",
|
||||
"empty": "Noch keine Mitglieder. Laden Sie jemanden ein, um diesen Server zu teilen.",
|
||||
"invite": "Mitglied einladen",
|
||||
"sendInvite": "Einladung senden",
|
||||
"inviting": "Wird gesendet…",
|
||||
"cancel": "Abbrechen",
|
||||
"remove": "Entfernen",
|
||||
"inviteSuccess": "Mitglied erfolgreich eingeladen.",
|
||||
"invitePending": "Einladung vermerkt. Der Benutzer muss sich registrieren, bevor er auf diesen Server zugreifen kann.",
|
||||
"removeConfirm": "{name} von diesem Server entfernen?",
|
||||
"fields": {
|
||||
"email": "E-Mail-Adresse",
|
||||
"emailPlaceholder": "benutzer@beispiel.de",
|
||||
"role": "Rolle"
|
||||
},
|
||||
"columns": {
|
||||
"member": "Mitglied",
|
||||
"email": "E-Mail",
|
||||
"role": "Rolle",
|
||||
"status": "Status",
|
||||
"actions": "Aktionen"
|
||||
},
|
||||
"roles": {
|
||||
"OWNER": "Inhaber",
|
||||
"ADMIN": "Administrator",
|
||||
"OPERATOR": "Operator",
|
||||
"DEVELOPER": "Entwickler",
|
||||
"VIEWER": "Betrachter"
|
||||
},
|
||||
"status": {
|
||||
"active": "Aktiv",
|
||||
"pending": "Ausstehend"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Mitglieder konnten nicht geladen werden.",
|
||||
"inviteFailed": "Einladung konnte nicht gesendet werden.",
|
||||
"removeFailed": "Mitglied konnte nicht entfernt werden."
|
||||
}
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"nav": {
|
||||
"label": "Kontonavigation",
|
||||
"dashboard": "Dashboard",
|
||||
"servers": "Server",
|
||||
"billing": "Abrechnung",
|
||||
"profile": "Profil",
|
||||
"notifications": "Benachrichtigungen",
|
||||
"security": "Sicherheit"
|
||||
},
|
||||
"billing": {
|
||||
"title": "Abrechnung",
|
||||
"subtitle": "Credits und Transaktionsverlauf.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Abrechnungsdaten konnten nicht geladen werden.",
|
||||
"balanceTitle": "Aktuelles Guthaben",
|
||||
"periodStart": "Abrechnungszeitraum ab {date}",
|
||||
"creditsLabel": "Verbleibende Credits",
|
||||
"transactionsTitle": "Transaktionen",
|
||||
"transactionsEmpty": "Noch keine Transaktionen in diesem Zeitraum.",
|
||||
"columns": {
|
||||
"date": "Datum",
|
||||
"type": "Typ",
|
||||
"amount": "Betrag",
|
||||
"reference": "Referenz"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profil",
|
||||
"subtitle": "Ihre Kontoinformationen.",
|
||||
"loading": "Wird geladen…",
|
||||
"notSignedIn": "Nicht angemeldet.",
|
||||
"accountInfo": "Kontodaten",
|
||||
"accountInfoDescription": "Profilinformationen aus Ihrem Konto.",
|
||||
"fields": {
|
||||
"email": "E-Mail",
|
||||
"username": "Benutzername",
|
||||
"displayName": "Anzeigename",
|
||||
"emailVerified": "E-Mail verifiziert",
|
||||
"twoFactor": "Zwei-Faktor-Auth"
|
||||
},
|
||||
"yes": "Ja",
|
||||
"no": "Nein",
|
||||
"enabled": "Aktiv",
|
||||
"disabled": "Inaktiv",
|
||||
"securityHint": "Passwort, 2FA und Sitzungen verwalten unter",
|
||||
"securityLink": "Sicherheit"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Benachrichtigungen",
|
||||
"subtitle": "E-Mail- und In-App-Benachrichtigungen.",
|
||||
"loading": "Wird geladen…",
|
||||
"listTitle": "Neueste Benachrichtigungen",
|
||||
"unreadCount": "{count, plural, one {# ungelesene Benachrichtigung} other {# ungelesene Benachrichtigungen}}",
|
||||
"allRead": "Alles gelesen.",
|
||||
"markRead": "Als gelesen markieren",
|
||||
"markAllRead": "Alle als gelesen markieren",
|
||||
"emptyTitle": "Keine Benachrichtigungen",
|
||||
"emptyDescription": "Sie haben noch keine Benachrichtigungen erhalten.",
|
||||
"preferencesTitle": "Einstellungen",
|
||||
"preferencesDescription": "Wählen Sie, welche Benachrichtigungen Sie pro Kanal erhalten.",
|
||||
"enabled": "Aktiv",
|
||||
"disabled": "Inaktiv",
|
||||
"channels": {
|
||||
"IN_APP": "In-App",
|
||||
"EMAIL": "E-Mail",
|
||||
"WEBHOOK": "Webhook",
|
||||
"DISCORD": "Discord"
|
||||
},
|
||||
"types": {
|
||||
"SERVER_READY": "Server bereit",
|
||||
"SERVER_START_FAILED": "Serverstart fehlgeschlagen",
|
||||
"SERVER_STOPPED": "Server gestoppt",
|
||||
"IDLE_STOP_WARNING": "Leerlauf-Stopp-Warnung",
|
||||
"BACKUP_SUCCESS": "Backup erfolgreich",
|
||||
"BACKUP_FAILED": "Backup fehlgeschlagen",
|
||||
"RESTORE_SUCCESS": "Wiederherstellung erfolgreich",
|
||||
"RESTORE_FAILED": "Wiederherstellung fehlgeschlagen",
|
||||
"CREDITS_LOW": "Wenig Credits",
|
||||
"BILLING_ISSUE": "Abrechnungsproblem",
|
||||
"INVITE": "Einladung",
|
||||
"NODE_INCIDENT": "Node-Vorfall",
|
||||
"MAINTENANCE": "Wartung",
|
||||
"SECURITY": "Sicherheit",
|
||||
"NEW_LOGIN": "Neue Anmeldung",
|
||||
"TWO_FA_CHANGED": "Zwei-Faktor geändert"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Benachrichtigungen konnten nicht geladen werden.",
|
||||
"markReadFailed": "Benachrichtigung konnte nicht aktualisiert werden.",
|
||||
"preferencesFailed": "Einstellungen konnten nicht gespeichert werden."
|
||||
}
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"backToPanel": "Zurück zum Panel",
|
||||
"nav": {
|
||||
"label": "Admin-Navigation",
|
||||
"dashboard": "Dashboard",
|
||||
"nodes": "Nodes",
|
||||
"users": "Benutzer",
|
||||
"jobs": "Jobs",
|
||||
"audit": "Audit"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Admin-Dashboard",
|
||||
"subtitle": "Plattformweite Kennzahlen und Systemstatus.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Dashboard-Daten konnten nicht geladen werden.",
|
||||
"generatedAt": "Stand: {time}",
|
||||
"stats": {
|
||||
"activeUsers": "Aktive Benutzer",
|
||||
"totalServers": "Server gesamt",
|
||||
"runningServers": "Laufende Server",
|
||||
"queueLength": "Warteschlange",
|
||||
"onlineNodes": "Online-Nodes",
|
||||
"failedJobs24h": "Fehlgeschlagene Jobs (24h)",
|
||||
"openAbuseReports": "Offene Abuse-Reports",
|
||||
"openTickets": "Offene Tickets"
|
||||
}
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Game-Nodes",
|
||||
"subtitle": "Node-Status und Wartungsaktionen.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Nodes konnten nicht geladen werden.",
|
||||
"empty": "Keine Nodes registriert.",
|
||||
"drain": "Drain",
|
||||
"maintenance": "Wartung",
|
||||
"exitMaintenance": "Wartung beenden",
|
||||
"actionError": "Aktion fehlgeschlagen.",
|
||||
"columns": {
|
||||
"name": "Node",
|
||||
"status": "Status",
|
||||
"servers": "Server",
|
||||
"ram": "RAM",
|
||||
"actions": "Aktionen"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"title": "Benutzer",
|
||||
"subtitle": "Benutzerkonten suchen und verwalten.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Benutzer konnten nicht geladen werden.",
|
||||
"empty": "Keine Benutzer gefunden.",
|
||||
"searchPlaceholder": "E-Mail oder Benutzername…",
|
||||
"search": "Suchen",
|
||||
"suspend": "Sperren",
|
||||
"unsuspend": "Entsperren",
|
||||
"actionError": "Aktion fehlgeschlagen.",
|
||||
"columns": {
|
||||
"user": "Benutzer",
|
||||
"status": "Status",
|
||||
"roles": "Rollen",
|
||||
"servers": "Server",
|
||||
"actions": "Aktionen"
|
||||
}
|
||||
},
|
||||
"jobs": {
|
||||
"title": "Hintergrund-Jobs",
|
||||
"subtitle": "Aktuelle und kürzlich abgeschlossene Queue-Jobs.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Jobs konnten nicht geladen werden.",
|
||||
"empty": "Keine Jobs gefunden.",
|
||||
"columns": {
|
||||
"queue": "Queue",
|
||||
"job": "Job",
|
||||
"status": "Status",
|
||||
"attempts": "Versuche",
|
||||
"created": "Erstellt"
|
||||
}
|
||||
},
|
||||
"audit": {
|
||||
"title": "Audit-Log",
|
||||
"subtitle": "Plattformweite Sicherheits- und Lifecycle-Ereignisse.",
|
||||
"loading": "Wird geladen…",
|
||||
"loadError": "Audit-Ereignisse konnten nicht geladen werden.",
|
||||
"empty": "Keine Ereignisse gefunden.",
|
||||
"loadMore": "Mehr laden",
|
||||
"columns": {
|
||||
"time": "Zeit",
|
||||
"action": "Aktion",
|
||||
"user": "Benutzer",
|
||||
"entity": "Entität"
|
||||
}
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"pricing": {
|
||||
"title": "Preise",
|
||||
"description": "Transparente Tarife für Minecraft-Server-Hosting.",
|
||||
"cta": "Jetzt registrieren →",
|
||||
"tiers": {
|
||||
"starter": {
|
||||
"name": "Starter",
|
||||
"description": "Ideal zum Ausprobieren.",
|
||||
"price": "Kostenlos",
|
||||
"features": ["2 GB RAM", "1 Server", "Idle-Shutdown", "Community-Support"]
|
||||
},
|
||||
"standard": {
|
||||
"name": "Standard",
|
||||
"description": "Für kleine Communities.",
|
||||
"price": "Credits",
|
||||
"features": ["4 GB RAM", "3 Server", "Backups", "Modrinth Add-ons"]
|
||||
},
|
||||
"pro": {
|
||||
"name": "Pro",
|
||||
"description": "Für anspruchsvolle Welten.",
|
||||
"price": "Credits",
|
||||
"features": ["8+ GB RAM", "Unbegrenzte Server*", "Prioritäts-Queue", "WHMCS-Integration"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"title": "Funktionen",
|
||||
"description": "Alles für professionelles Minecraft-Server-Hosting.",
|
||||
"items": {
|
||||
"control": {
|
||||
"title": "Zentrale Steuerung",
|
||||
"description": "Lifecycle, Konsole, Dateien und Properties über ein einheitliches Panel."
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Multi-Node",
|
||||
"description": "Horizontale Skalierung mit Agent-basierter Orchestrierung."
|
||||
},
|
||||
"security": {
|
||||
"title": "Sicherheit",
|
||||
"description": "Sessions, 2FA, CSRF-Schutz und auditierbare Aktionen."
|
||||
},
|
||||
"billing": {
|
||||
"title": "Credit-Abrechnung",
|
||||
"description": "Laufzeitbasierte Abrechnung mit transparentem Guthaben."
|
||||
},
|
||||
"backups": {
|
||||
"title": "Backups & Welten",
|
||||
"description": "Manuelle und geplante Backups, Welt-Upload und -Download."
|
||||
},
|
||||
"whmcs": {
|
||||
"title": "WHMCS-Integration",
|
||||
"description": "Provisioning, SSO und Abrechnung über WHMCS."
|
||||
}
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "Systemstatus",
|
||||
"description": "Aktueller Betriebsstatus der Plattformkomponenten.",
|
||||
"operational": "Betriebsbereit",
|
||||
"selfHostedNote": "Status basiert auf Self-Hosted-Deployment. Konfigurieren Sie Health-Checks für Live-Monitoring.",
|
||||
"components": {
|
||||
"api": {
|
||||
"name": "API",
|
||||
"description": "REST Control Plane unter /api/v1"
|
||||
},
|
||||
"worker": {
|
||||
"name": "Worker",
|
||||
"description": "BullMQ Hintergrundverarbeitung"
|
||||
},
|
||||
"panel": {
|
||||
"name": "Web-Panel",
|
||||
"description": "Next.js Benutzeroberfläche"
|
||||
},
|
||||
"dns": {
|
||||
"name": "DNS / Edge",
|
||||
"description": "Join-to-Start und Edge-Gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
"docs": {
|
||||
"title": "Dokumentation",
|
||||
"description": "Einstieg, API-Referenz und Betriebshinweise.",
|
||||
"openapi": "Interaktive API-Dokumentation:",
|
||||
"openapiLink": "OpenAPI / Swagger",
|
||||
"cta": "Konto erstellen →",
|
||||
"sections": {
|
||||
"gettingStarted": {
|
||||
"title": "Erste Schritte",
|
||||
"body": "Registrieren Sie sich, verifizieren Sie Ihre E-Mail, erstellen Sie einen Server über den mehrstufigen Assistenten und starten Sie ihn über das Dashboard."
|
||||
},
|
||||
"api": {
|
||||
"title": "API",
|
||||
"body": "Die REST-API unter /api/v1 bietet Endpunkte für Auth, Server-Lifecycle, Dateien, Backups und Admin-Funktionen. Authentifizierung erfolgt über Session-Cookies."
|
||||
},
|
||||
"operations": {
|
||||
"title": "Betrieb",
|
||||
"body": "Deployen Sie Control Plane, Worker und Node-Agent über Docker Compose oder Ansible. Siehe docs/operations im Repository."
|
||||
},
|
||||
"whmcs": {
|
||||
"title": "WHMCS",
|
||||
"body": "Das Server-Modul provisioniert Dienste automatisch. SSO ermöglicht nahtlosen Zugang aus dem WHMCS Client Area."
|
||||
}
|
||||
}
|
||||
},
|
||||
"impressum": {
|
||||
"title": "Impressum",
|
||||
"description": "Angaben gemäß § 5 TMG.",
|
||||
"notice": "Dies ist ein Impressums-Entwurf. Ersetzen Sie die Platzhalterangaben vor dem Produktivbetrieb.",
|
||||
"sections": {
|
||||
"operator": {
|
||||
"title": "Anbieter",
|
||||
"body": "HexaHost\nPlattform für Game-Server-Hosting"
|
||||
},
|
||||
"address": {
|
||||
"title": "Anschrift",
|
||||
"body": "HexaHost\nMusterstraße 1\n12345 Musterstadt\nDeutschland"
|
||||
},
|
||||
"contact": {
|
||||
"title": "Kontakt",
|
||||
"body": "E-Mail: kontakt@hexahost.example\nTelefon: +49 (0) 123 456789"
|
||||
},
|
||||
"responsible": {
|
||||
"title": "Verantwortlich für den Inhalt nach § 55 Abs. 2 RStV",
|
||||
"body": "Max Mustermann\nHexaHost\nMusterstraße 1\n12345 Musterstadt"
|
||||
},
|
||||
"register": {
|
||||
"title": "Registereintrag",
|
||||
"body": "Registergericht: Amtsgericht Musterstadt\nRegisternummer: HRB 12345\nUSt-IdNr.: DE123456789"
|
||||
},
|
||||
"dispute": {
|
||||
"title": "Streitbeilegung",
|
||||
"body": "Wir sind nicht bereit oder verpflichtet, an Streitbeilegungsverfahren vor einer Verbraucherschlichtungsstelle teilzunehmen."
|
||||
}
|
||||
}
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Datenschutzerklärung",
|
||||
"description": "Informationen zur Verarbeitung personenbezogener Daten.",
|
||||
"sections": {
|
||||
"controller": {
|
||||
"title": "Verantwortlicher",
|
||||
"body": "Der Betreiber dieser selbstgehosteten Instanz ist für die Datenverarbeitung verantwortlich. Passen Sie diese Erklärung an Ihre Organisation an."
|
||||
},
|
||||
"data": {
|
||||
"title": "Erhobene Daten",
|
||||
"body": "Wir verarbeiten Kontodaten (E-Mail, Benutzername), Sitzungsinformationen, Server-Metadaten und Nutzungsdaten zur Abrechnung."
|
||||
},
|
||||
"cookies": {
|
||||
"title": "Cookies",
|
||||
"body": "Session-Cookies (hgc_session) und CSRF-Cookies (hgc_csrf) sind für die Authentifizierung erforderlich."
|
||||
},
|
||||
"rights": {
|
||||
"title": "Ihre Rechte",
|
||||
"body": "Sie haben das Recht auf Auskunft, Berichtigung, Löschung und Datenübertragbarkeit gemäß DSGVO."
|
||||
},
|
||||
"contact": {
|
||||
"title": "Kontakt",
|
||||
"body": "Wenden Sie sich für Datenschutzanfragen an den in Ihrem Impressum genannten Betreiber."
|
||||
}
|
||||
}
|
||||
},
|
||||
"terms": {
|
||||
"title": "Allgemeine Geschäftsbedingungen",
|
||||
"description": "Nutzungsbedingungen der Plattform.",
|
||||
"sections": {
|
||||
"scope": {
|
||||
"title": "Geltungsbereich",
|
||||
"body": "Diese AGB gelten für die Nutzung der Minecraft-Server-Hosting-Plattform durch registrierte Benutzer."
|
||||
},
|
||||
"usage": {
|
||||
"title": "Nutzung",
|
||||
"body": "Server dürfen nur für legale Zwecke betrieben werden. Missbrauch kann zur Sperrung führen."
|
||||
},
|
||||
"billing": {
|
||||
"title": "Abrechnung",
|
||||
"body": "Credits werden nach Laufzeit verbraucht. Guthaben ist nicht übertragbar, sofern nicht anders vereinbart."
|
||||
},
|
||||
"liability": {
|
||||
"title": "Haftung",
|
||||
"body": "Der Betreiber haftet nur bei Vorsatz und grober Fahrlässigkeit. Datenverluste sind durch eigene Backups abzusichern."
|
||||
},
|
||||
"changes": {
|
||||
"title": "Änderungen",
|
||||
"body": "Der Betreiber kann diese Bedingungen mit angemessener Frist ändern. Fortgesetzte Nutzung gilt als Zustimmung."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,10 +15,19 @@
|
||||
"cancel": "Cancel",
|
||||
"back": "Back",
|
||||
"footer": "Self-hosted Minecraft server platform.",
|
||||
"servers": "Servers"
|
||||
"servers": "Servers",
|
||||
"features": "Features",
|
||||
"pricing": "Pricing",
|
||||
"docs": "Documentation",
|
||||
"status": "Status",
|
||||
"impressum": "Legal notice",
|
||||
"privacy": "Privacy",
|
||||
"terms": "Terms",
|
||||
"admin": "Admin",
|
||||
"phaseBadge": "MVP · Phases 0–9"
|
||||
},
|
||||
"landing": {
|
||||
"badge": "Phase 0 · Control Plane",
|
||||
"badge": "MVP · Phase 9 complete",
|
||||
"title": "Minecraft servers on demand",
|
||||
"subtitle": "Create, configure, and operate Minecraft servers through a central web panel — multi-tenant, scalable, and production-ready.",
|
||||
"ctaPrimary": "Get started",
|
||||
@@ -205,7 +214,36 @@
|
||||
"players": "Players",
|
||||
"worlds": "Worlds",
|
||||
"backups": "Backups",
|
||||
"addons": "Add-ons"
|
||||
"addons": "Add-ons",
|
||||
"software": "Software",
|
||||
"schedules": "Schedules",
|
||||
"access": "Access"
|
||||
},
|
||||
"wizard": {
|
||||
"stepsLabel": "Creation steps",
|
||||
"steps": {
|
||||
"basics": "Basics",
|
||||
"software": "Software",
|
||||
"review": "Review"
|
||||
},
|
||||
"next": "Next",
|
||||
"back": "Back"
|
||||
},
|
||||
"software": {
|
||||
"title": "Software",
|
||||
"description": "Installed server software and version.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load software information.",
|
||||
"family": "Software family",
|
||||
"version": "Minecraft version",
|
||||
"edition": "Edition",
|
||||
"changeHint": "Software switching will be supported in a future release.",
|
||||
"reinstall": "Reinstall software",
|
||||
"reinstalling": "Reinstalling…",
|
||||
"reinstallConfirm": "Reinstall server software? A backup will be created first.",
|
||||
"reinstallStarted": "Reinstall started. The server will be unavailable during installation.",
|
||||
"reinstallError": "Could not start reinstall.",
|
||||
"reinstallStoppedHint": "Stop the server before reinstalling software."
|
||||
},
|
||||
"console": {
|
||||
"loading": "Loading…",
|
||||
@@ -233,10 +271,27 @@
|
||||
"save": "Save",
|
||||
"saving": "Saving…",
|
||||
"saved": "File saved.",
|
||||
"upload": "Upload",
|
||||
"uploading": "Uploading…",
|
||||
"uploaded": "File uploaded.",
|
||||
"delete": "Delete",
|
||||
"deleted": "Deleted.",
|
||||
"deleteConfirm": "Delete {name}?",
|
||||
"archive": "Archive selected",
|
||||
"archiving": "Archiving…",
|
||||
"archived": "Archive created.",
|
||||
"unarchive": "Extract archive",
|
||||
"unarchiving": "Extracting…",
|
||||
"unarchived": "Archive extraction started.",
|
||||
"unarchiveConfirm": "Extract {name} into the current directory?",
|
||||
"errors": {
|
||||
"loadFailed": "Could not load directory.",
|
||||
"readFailed": "Could not read file.",
|
||||
"saveFailed": "Could not save file."
|
||||
"saveFailed": "Could not save file.",
|
||||
"deleteFailed": "Could not delete file.",
|
||||
"uploadFailed": "Could not upload file.",
|
||||
"archiveFailed": "Could not create archive.",
|
||||
"unarchiveFailed": "Could not extract archive."
|
||||
}
|
||||
},
|
||||
"properties": {
|
||||
@@ -280,14 +335,32 @@
|
||||
"loading": "Loading…",
|
||||
"onlineCount": "Online players",
|
||||
"whitelistCount": "Whitelist entries",
|
||||
"operatorsCount": "Operators",
|
||||
"onlineTitle": "Online players",
|
||||
"whitelistTitle": "Whitelist",
|
||||
"operatorsTitle": "Operators",
|
||||
"bansTitle": "Banned players",
|
||||
"bansEmpty": "No banned players.",
|
||||
"empty": "No players online.",
|
||||
"retry": "Retry",
|
||||
"kick": "Kick",
|
||||
"addWhitelist": "Add to whitelist",
|
||||
"addOperator": "Add operator",
|
||||
"addBan": "Ban player",
|
||||
"remove": "Remove",
|
||||
"fields": {
|
||||
"name": "Player name",
|
||||
"uuid": "UUID",
|
||||
"reason": "Reason"
|
||||
},
|
||||
"columns": {
|
||||
"name": "Player",
|
||||
"ping": "Ping"
|
||||
"ping": "Ping",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Could not load player list."
|
||||
"loadFailed": "Could not load player list.",
|
||||
"actionFailed": "Action failed."
|
||||
}
|
||||
},
|
||||
"worlds": {
|
||||
@@ -347,6 +420,473 @@
|
||||
"remove": "Remove",
|
||||
"installed": "Installed",
|
||||
"empty": "No add-ons installed yet."
|
||||
},
|
||||
"schedules": {
|
||||
"title": "Schedules",
|
||||
"description": "Scheduled start, stop, and maintenance actions.",
|
||||
"loading": "Loading…",
|
||||
"empty": "No schedules yet.",
|
||||
"create": "Create schedule",
|
||||
"edit": "Edit",
|
||||
"save": "Save changes",
|
||||
"cancel": "Cancel",
|
||||
"delete": "Delete",
|
||||
"enable": "Enable",
|
||||
"disable": "Disable",
|
||||
"saving": "Saving…",
|
||||
"deleteConfirm": "Delete schedule \"{name}\"?",
|
||||
"fields": {
|
||||
"name": "Name",
|
||||
"cron": "Cron expression",
|
||||
"timezone": "Timezone",
|
||||
"taskType": "Task",
|
||||
"enabled": "Enabled",
|
||||
"command": "Console command",
|
||||
"commandPlaceholder": "say Server restarting"
|
||||
},
|
||||
"columns": {
|
||||
"name": "Name",
|
||||
"cron": "Cron",
|
||||
"task": "Task",
|
||||
"status": "Status",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"status": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
},
|
||||
"taskTypes": {
|
||||
"START": "Start server",
|
||||
"STOP": "Stop server",
|
||||
"RESTART": "Restart server",
|
||||
"BACKUP": "Create backup",
|
||||
"CONSOLE_COMMAND": "Run command",
|
||||
"UPDATE_CHECK": "Check for updates",
|
||||
"MAINTENANCE": "Maintenance"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Could not load schedules.",
|
||||
"saveFailed": "Could not save schedule.",
|
||||
"deleteFailed": "Could not delete schedule."
|
||||
}
|
||||
},
|
||||
"access": {
|
||||
"title": "Access",
|
||||
"description": "Sharing and permissions for this server.",
|
||||
"loading": "Loading…",
|
||||
"empty": "No members yet. Invite someone to share this server.",
|
||||
"invite": "Invite member",
|
||||
"sendInvite": "Send invite",
|
||||
"inviting": "Sending…",
|
||||
"cancel": "Cancel",
|
||||
"remove": "Remove",
|
||||
"inviteSuccess": "Member invited successfully.",
|
||||
"invitePending": "Invite noted. The user must register before they can access this server.",
|
||||
"removeConfirm": "Remove {name} from this server?",
|
||||
"fields": {
|
||||
"email": "Email address",
|
||||
"emailPlaceholder": "user@example.com",
|
||||
"role": "Role"
|
||||
},
|
||||
"columns": {
|
||||
"member": "Member",
|
||||
"email": "Email",
|
||||
"role": "Role",
|
||||
"status": "Status",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"roles": {
|
||||
"OWNER": "Owner",
|
||||
"ADMIN": "Admin",
|
||||
"OPERATOR": "Operator",
|
||||
"DEVELOPER": "Developer",
|
||||
"VIEWER": "Viewer"
|
||||
},
|
||||
"status": {
|
||||
"active": "Active",
|
||||
"pending": "Pending"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Could not load members.",
|
||||
"inviteFailed": "Could not send invite.",
|
||||
"removeFailed": "Could not remove member."
|
||||
}
|
||||
}
|
||||
},
|
||||
"account": {
|
||||
"nav": {
|
||||
"label": "Account navigation",
|
||||
"dashboard": "Dashboard",
|
||||
"servers": "Servers",
|
||||
"billing": "Billing",
|
||||
"profile": "Profile",
|
||||
"notifications": "Notifications",
|
||||
"security": "Security"
|
||||
},
|
||||
"billing": {
|
||||
"title": "Billing",
|
||||
"subtitle": "Credits and transaction history.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load billing data.",
|
||||
"balanceTitle": "Current balance",
|
||||
"periodStart": "Billing period from {date}",
|
||||
"creditsLabel": "Credits remaining",
|
||||
"transactionsTitle": "Transactions",
|
||||
"transactionsEmpty": "No transactions in this period yet.",
|
||||
"columns": {
|
||||
"date": "Date",
|
||||
"type": "Type",
|
||||
"amount": "Amount",
|
||||
"reference": "Reference"
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
"subtitle": "Your account information.",
|
||||
"loading": "Loading…",
|
||||
"notSignedIn": "Not signed in.",
|
||||
"accountInfo": "Account details",
|
||||
"accountInfoDescription": "Profile information from your account.",
|
||||
"fields": {
|
||||
"email": "Email",
|
||||
"username": "Username",
|
||||
"displayName": "Display name",
|
||||
"emailVerified": "Email verified",
|
||||
"twoFactor": "Two-factor auth"
|
||||
},
|
||||
"yes": "Yes",
|
||||
"no": "No",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"securityHint": "Manage password, 2FA, and sessions at",
|
||||
"securityLink": "Security"
|
||||
},
|
||||
"notifications": {
|
||||
"title": "Notifications",
|
||||
"subtitle": "Email and in-app notifications.",
|
||||
"loading": "Loading…",
|
||||
"listTitle": "Recent notifications",
|
||||
"unreadCount": "{count, plural, one {# unread notification} other {# unread notifications}}",
|
||||
"allRead": "All caught up.",
|
||||
"markRead": "Mark read",
|
||||
"markAllRead": "Mark all read",
|
||||
"emptyTitle": "No notifications",
|
||||
"emptyDescription": "You have not received any notifications yet.",
|
||||
"preferencesTitle": "Preferences",
|
||||
"preferencesDescription": "Choose which notifications you receive on each channel.",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"channels": {
|
||||
"IN_APP": "In-app",
|
||||
"EMAIL": "Email",
|
||||
"WEBHOOK": "Webhook",
|
||||
"DISCORD": "Discord"
|
||||
},
|
||||
"types": {
|
||||
"SERVER_READY": "Server ready",
|
||||
"SERVER_START_FAILED": "Server start failed",
|
||||
"SERVER_STOPPED": "Server stopped",
|
||||
"IDLE_STOP_WARNING": "Idle stop warning",
|
||||
"BACKUP_SUCCESS": "Backup succeeded",
|
||||
"BACKUP_FAILED": "Backup failed",
|
||||
"RESTORE_SUCCESS": "Restore succeeded",
|
||||
"RESTORE_FAILED": "Restore failed",
|
||||
"CREDITS_LOW": "Low credits",
|
||||
"BILLING_ISSUE": "Billing issue",
|
||||
"INVITE": "Invite",
|
||||
"NODE_INCIDENT": "Node incident",
|
||||
"MAINTENANCE": "Maintenance",
|
||||
"SECURITY": "Security",
|
||||
"NEW_LOGIN": "New login",
|
||||
"TWO_FA_CHANGED": "Two-factor changed"
|
||||
},
|
||||
"errors": {
|
||||
"loadFailed": "Could not load notifications.",
|
||||
"markReadFailed": "Could not update notification.",
|
||||
"preferencesFailed": "Could not save preferences."
|
||||
}
|
||||
}
|
||||
},
|
||||
"admin": {
|
||||
"backToPanel": "Back to panel",
|
||||
"nav": {
|
||||
"label": "Admin navigation",
|
||||
"dashboard": "Dashboard",
|
||||
"nodes": "Nodes",
|
||||
"users": "Users",
|
||||
"jobs": "Jobs",
|
||||
"audit": "Audit"
|
||||
},
|
||||
"dashboard": {
|
||||
"title": "Admin dashboard",
|
||||
"subtitle": "Platform-wide metrics and system status.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load dashboard data.",
|
||||
"generatedAt": "As of {time}",
|
||||
"stats": {
|
||||
"activeUsers": "Active users",
|
||||
"totalServers": "Total servers",
|
||||
"runningServers": "Running servers",
|
||||
"queueLength": "Queue length",
|
||||
"onlineNodes": "Online nodes",
|
||||
"failedJobs24h": "Failed jobs (24h)",
|
||||
"openAbuseReports": "Open abuse reports",
|
||||
"openTickets": "Open tickets"
|
||||
}
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Game nodes",
|
||||
"subtitle": "Node status and maintenance actions.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load nodes.",
|
||||
"empty": "No nodes registered.",
|
||||
"drain": "Drain",
|
||||
"maintenance": "Maintenance",
|
||||
"exitMaintenance": "Exit maintenance",
|
||||
"actionError": "Action failed.",
|
||||
"columns": {
|
||||
"name": "Node",
|
||||
"status": "Status",
|
||||
"servers": "Servers",
|
||||
"ram": "RAM",
|
||||
"actions": "Actions"
|
||||
}
|
||||
},
|
||||
"users": {
|
||||
"title": "Users",
|
||||
"subtitle": "Search and manage user accounts.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load users.",
|
||||
"empty": "No users found.",
|
||||
"searchPlaceholder": "Email or username…",
|
||||
"search": "Search",
|
||||
"suspend": "Suspend",
|
||||
"unsuspend": "Unsuspend",
|
||||
"actionError": "Action failed.",
|
||||
"columns": {
|
||||
"user": "User",
|
||||
"status": "Status",
|
||||
"roles": "Roles",
|
||||
"servers": "Servers",
|
||||
"actions": "Actions"
|
||||
}
|
||||
},
|
||||
"jobs": {
|
||||
"title": "Background jobs",
|
||||
"subtitle": "Current and recently completed queue jobs.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load jobs.",
|
||||
"empty": "No jobs found.",
|
||||
"columns": {
|
||||
"queue": "Queue",
|
||||
"job": "Job",
|
||||
"status": "Status",
|
||||
"attempts": "Attempts",
|
||||
"created": "Created"
|
||||
}
|
||||
},
|
||||
"audit": {
|
||||
"title": "Audit log",
|
||||
"subtitle": "Platform-wide security and lifecycle events.",
|
||||
"loading": "Loading…",
|
||||
"loadError": "Could not load audit events.",
|
||||
"empty": "No events found.",
|
||||
"loadMore": "Load more",
|
||||
"columns": {
|
||||
"time": "Time",
|
||||
"action": "Action",
|
||||
"user": "User",
|
||||
"entity": "Entity"
|
||||
}
|
||||
}
|
||||
},
|
||||
"public": {
|
||||
"pricing": {
|
||||
"title": "Pricing",
|
||||
"description": "Transparent plans for Minecraft server hosting.",
|
||||
"cta": "Register now →",
|
||||
"tiers": {
|
||||
"starter": {
|
||||
"name": "Starter",
|
||||
"description": "Great for trying things out.",
|
||||
"price": "Free",
|
||||
"features": ["2 GB RAM", "1 server", "Idle shutdown", "Community support"]
|
||||
},
|
||||
"standard": {
|
||||
"name": "Standard",
|
||||
"description": "For small communities.",
|
||||
"price": "Credits",
|
||||
"features": ["4 GB RAM", "3 servers", "Backups", "Modrinth add-ons"]
|
||||
},
|
||||
"pro": {
|
||||
"name": "Pro",
|
||||
"description": "For demanding worlds.",
|
||||
"price": "Credits",
|
||||
"features": ["8+ GB RAM", "Unlimited servers*", "Priority queue", "WHMCS integration"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"title": "Features",
|
||||
"description": "Everything for professional Minecraft server hosting.",
|
||||
"items": {
|
||||
"control": {
|
||||
"title": "Central control",
|
||||
"description": "Lifecycle, console, files, and properties through a unified panel."
|
||||
},
|
||||
"nodes": {
|
||||
"title": "Multi-node",
|
||||
"description": "Horizontal scaling with agent-based orchestration."
|
||||
},
|
||||
"security": {
|
||||
"title": "Security",
|
||||
"description": "Sessions, 2FA, CSRF protection, and auditable actions."
|
||||
},
|
||||
"billing": {
|
||||
"title": "Credit billing",
|
||||
"description": "Runtime-based billing with transparent balance."
|
||||
},
|
||||
"backups": {
|
||||
"title": "Backups & worlds",
|
||||
"description": "Manual and scheduled backups, world upload and download."
|
||||
},
|
||||
"whmcs": {
|
||||
"title": "WHMCS integration",
|
||||
"description": "Provisioning, SSO, and billing through WHMCS."
|
||||
}
|
||||
}
|
||||
},
|
||||
"status": {
|
||||
"title": "System status",
|
||||
"description": "Current operational status of platform components.",
|
||||
"operational": "Operational",
|
||||
"selfHostedNote": "Status reflects self-hosted deployment. Configure health checks for live monitoring.",
|
||||
"components": {
|
||||
"api": {
|
||||
"name": "API",
|
||||
"description": "REST control plane at /api/v1"
|
||||
},
|
||||
"worker": {
|
||||
"name": "Worker",
|
||||
"description": "BullMQ background processing"
|
||||
},
|
||||
"panel": {
|
||||
"name": "Web panel",
|
||||
"description": "Next.js user interface"
|
||||
},
|
||||
"dns": {
|
||||
"name": "DNS / Edge",
|
||||
"description": "Join-to-start and edge gateway"
|
||||
}
|
||||
}
|
||||
},
|
||||
"docs": {
|
||||
"title": "Documentation",
|
||||
"description": "Getting started, API reference, and operations guides.",
|
||||
"openapi": "Interactive API documentation:",
|
||||
"openapiLink": "OpenAPI / Swagger",
|
||||
"cta": "Create account →",
|
||||
"sections": {
|
||||
"gettingStarted": {
|
||||
"title": "Getting started",
|
||||
"body": "Register, verify your email, create a server through the multi-step wizard, and start it from the dashboard."
|
||||
},
|
||||
"api": {
|
||||
"title": "API",
|
||||
"body": "The REST API at /api/v1 provides endpoints for auth, server lifecycle, files, backups, and admin functions. Authentication uses session cookies."
|
||||
},
|
||||
"operations": {
|
||||
"title": "Operations",
|
||||
"body": "Deploy control plane, worker, and node agent via Docker Compose or Ansible. See docs/operations in the repository."
|
||||
},
|
||||
"whmcs": {
|
||||
"title": "WHMCS",
|
||||
"body": "The server module provisions services automatically. SSO enables seamless access from the WHMCS client area."
|
||||
}
|
||||
}
|
||||
},
|
||||
"impressum": {
|
||||
"title": "Legal notice",
|
||||
"description": "Information according to applicable law (German Impressum).",
|
||||
"notice": "This is a template legal notice. Replace placeholder details before production use.",
|
||||
"sections": {
|
||||
"operator": {
|
||||
"title": "Service provider",
|
||||
"body": "HexaHost\nGame server hosting platform"
|
||||
},
|
||||
"address": {
|
||||
"title": "Address",
|
||||
"body": "HexaHost\nMusterstraße 1\n12345 Musterstadt\nGermany"
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contact",
|
||||
"body": "Email: kontakt@hexahost.example\nPhone: +49 (0) 123 456789"
|
||||
},
|
||||
"responsible": {
|
||||
"title": "Responsible for content (§ 55 Abs. 2 RStV)",
|
||||
"body": "Max Mustermann\nHexaHost\nMusterstraße 1\n12345 Musterstadt"
|
||||
},
|
||||
"register": {
|
||||
"title": "Commercial register",
|
||||
"body": "Register court: Amtsgericht Musterstadt\nRegistration number: HRB 12345\nVAT ID: DE123456789"
|
||||
},
|
||||
"dispute": {
|
||||
"title": "Dispute resolution",
|
||||
"body": "We are not obliged or willing to participate in dispute resolution proceedings before a consumer arbitration board."
|
||||
}
|
||||
}
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy policy",
|
||||
"description": "Information on processing personal data.",
|
||||
"sections": {
|
||||
"controller": {
|
||||
"title": "Controller",
|
||||
"body": "The operator of this self-hosted instance is responsible for data processing. Adapt this policy to your organization."
|
||||
},
|
||||
"data": {
|
||||
"title": "Data collected",
|
||||
"body": "We process account data (email, username), session information, server metadata, and usage data for billing."
|
||||
},
|
||||
"cookies": {
|
||||
"title": "Cookies",
|
||||
"body": "Session cookies (hgc_session) and CSRF cookies (hgc_csrf) are required for authentication."
|
||||
},
|
||||
"rights": {
|
||||
"title": "Your rights",
|
||||
"body": "You have the right to access, rectify, delete, and port your data under applicable privacy law."
|
||||
},
|
||||
"contact": {
|
||||
"title": "Contact",
|
||||
"body": "For privacy requests, contact the operator listed in your legal notice."
|
||||
}
|
||||
}
|
||||
},
|
||||
"terms": {
|
||||
"title": "Terms of service",
|
||||
"description": "Terms of use for the platform.",
|
||||
"sections": {
|
||||
"scope": {
|
||||
"title": "Scope",
|
||||
"body": "These terms apply to use of the Minecraft server hosting platform by registered users."
|
||||
},
|
||||
"usage": {
|
||||
"title": "Usage",
|
||||
"body": "Servers may only be operated for lawful purposes. Abuse may result in suspension."
|
||||
},
|
||||
"billing": {
|
||||
"title": "Billing",
|
||||
"body": "Credits are consumed based on runtime. Balance is non-transferable unless otherwise agreed."
|
||||
},
|
||||
"liability": {
|
||||
"title": "Liability",
|
||||
"body": "The operator is liable only for intent and gross negligence. Protect against data loss with your own backups."
|
||||
},
|
||||
"changes": {
|
||||
"title": "Changes",
|
||||
"body": "The operator may change these terms with reasonable notice. Continued use constitutes acceptance."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user