91 lines
6.5 KiB
PHP
91 lines
6.5 KiB
PHP
<?php
|
|
|
|
return [
|
|
'title' => 'Integrationen',
|
|
'subtitle' => 'Angebundene Dienste, gruppiert nach Zweck — Zugangsdaten und Einstellungen nebeneinander, nicht auf getrennten Seiten nach Speicherort.',
|
|
|
|
'payments_title' => 'Zahlungen (Stripe)',
|
|
'payments_body' => 'Der Secret Key, mit dem Zahlungen entgegengenommen und Webhooks geprüft werden.',
|
|
|
|
'dns_title' => 'DNS (Hetzner)',
|
|
'dns_body' => 'API-Token, Zone und wo Traefik seine dynamische Konfiguration erwartet.',
|
|
'dns_zone' => 'DNS-Zone',
|
|
'dns_zone_hint' => 'Zum Beispiel clupilot.com — Kundeninstanzen erhalten <subdomain>.<Zone>.',
|
|
'traefik_path' => 'Traefik: Pfad für dynamische Konfiguration',
|
|
'traefik_path_hint' => 'Verzeichnis auf dem Traffic-Host, in das Routen geschrieben werden.',
|
|
|
|
'monitoring_title' => 'Monitoring',
|
|
'monitoring_body' => 'API-Token und wo die Kuma-Bridge erreichbar ist.',
|
|
'monitoring_url' => 'Monitoring-Bridge-URL',
|
|
'monitoring_url_hint' => 'Zum Beispiel http://kuma-bridge:8080. Leer lässt Monitoring aus.',
|
|
|
|
'vpn_title' => 'VPN/WireGuard',
|
|
'vpn_body' => 'Wie ein neuer Host CluPilot als VPN-Hub erreicht. Der private Hub-Schlüssel bleibt in der Serverdatei — hier stehen nur der öffentliche Teil und die Adresse.',
|
|
'wg_endpoint' => 'Hub-Endpunkt',
|
|
'wg_endpoint_hint' => 'Öffentlich erreichbare Adresse und Port, z. B. vpn.clupilot.com:51820.',
|
|
'wg_hub_pubkey' => 'Hub-Public-Key',
|
|
'wg_hub_pubkey_hint' => 'Ausgabe von wg pubkey < /etc/wireguard/privatekey auf diesem Server.',
|
|
|
|
'ssh_title' => 'SSH-Identität',
|
|
'ssh_body' => 'Der Schlüssel, der auf jedem neuen Host hinterlegt wird — öffentlicher und privater Teil zusammen an einer Stelle.',
|
|
'ssh_public_key' => 'SSH-Schlüssel (öffentlich)',
|
|
'ssh_public_key_hint' => 'Wird bei der Host-Aufnahme in authorized_keys eingetragen.',
|
|
|
|
'save_settings' => 'Einstellungen speichern',
|
|
'settings_saved' => 'Gespeichert. Der neue Wert gilt ab sofort.',
|
|
|
|
// .env-Editor (Teil B).
|
|
'env_title' => 'Erweitert: Serverdatei (.env)',
|
|
'env_subtitle' => 'Alles, was oben kein eigenes Feld hat — roh, wie auf dem Server. Ohne diesen Editor bräuchte es dafür eine Shell.',
|
|
'env_locked' => 'Gesperrt. Oben entsperren, um die Serverdatei zu sehen.',
|
|
|
|
'env_danger_title' => 'Diese Zeilen können die Konsole selbst aussperren',
|
|
'env_danger_body' => 'Ein falscher Wert in einer dieser Zeilen macht die Konsole für Sie selbst unerreichbar: APP_KEY, DB_* (Datenbankverbindung), REDIS_* (Sitzungen, Cache, Warteschlange), SESSION_*. Nicht gesperrt — volle Kontrolle war die Entscheidung —, aber diese Zeilen verdienen einen zweiten Blick.',
|
|
|
|
'env_vault_title' => 'Von der Zugangsdaten-Verwaltung verwaltet',
|
|
'env_vault_body' => 'SecretVault::get() bevorzugt einen hier hinterlegten Wert und weicht nur auf die Serverdatei aus, wenn keiner hinterlegt ist. Solange oben ein Wert hinterlegt ist, ändert die passende Zeile unten nichts — sonst widerspräche sich die Konsole selbst.',
|
|
'env_vault_active' => 'hinterlegt — diese Zeile wirkt nicht',
|
|
'env_vault_inactive' => 'nicht hinterlegt — diese Zeile gilt',
|
|
|
|
'env_label' => 'Inhalt von .env',
|
|
'env_save' => 'Speichern',
|
|
|
|
'env_backup_title' => 'Sicherung',
|
|
'env_backup_body' => 'Vor jedem Speichern wird eine Kopie neben .env abgelegt (Dateiname .env.bak-Zeitstempel). Sie werden nicht automatisch gelöscht.',
|
|
|
|
// queue, queue-provisioning, scheduler und reverb lesen .env nur beim
|
|
// eigenen Start. Bis hierher war das Homework — „starten Sie das jetzt
|
|
// selbst neu" — dieselbe Klage wie beim Update-Knopf davor: über die
|
|
// Kommandozeile nacharbeiten, was die Konsole schon wusste. Speichern
|
|
// löst das jetzt selbst aus (App\Livewire\Admin\Integrations::saveEnv()):
|
|
// den Konfigurations-Cache leeren (sofort, ohne den Host-Agenten — dafür
|
|
// braucht es keine besonderen Rechte) und den Neustart beim Agenten
|
|
// anfordern (App\Services\Deployment\UpdateChannel::requestRestart()).
|
|
'env_restart_title' => 'Was beim Speichern automatisch passiert',
|
|
'env_restart_body' => 'queue, queue-provisioning, scheduler und reverb lesen .env nur beim eigenen Start. Speichern hier löst deshalb automatisch aus: der Konfigurations-Cache wird geleert, und diese vier Dienste werden neu gestartet. Diese Konsole selbst (app) wird dabei nie angefasst — sie bedient gerade die Anfrage, die das ausgelöst hat, und ihr PHP liest .env bei jeder neuen Anfrage ohnehin frisch.',
|
|
'env_restarting' => 'Dienste werden neu gestartet …',
|
|
'env_restart_done' => 'Dienste neu gestartet.',
|
|
|
|
'env_save_title' => '.env wirklich überschreiben?',
|
|
'env_save_body' => 'Sie enthält jedes Zugangsdatum im System. Eine Sicherung wird zuvor angelegt, und die betroffenen Dienste werden nach dem Speichern automatisch neu gestartet.',
|
|
'env_save_confirm' => 'Überschreiben',
|
|
// Drei Ausgänge nach dem Schreiben, nie eine geschönte Erfolgsmeldung: der
|
|
// Neustart wurde angefordert, oder er konnte es nicht — weil der
|
|
// Host-Agent nicht läuft oder weil schon etwas anderes läuft — und dann
|
|
// steht hier der manuelle Befehl statt eines Versprechens.
|
|
'env_saved_restarting' => 'Gespeichert. Sicherung: :backup. Konfigurations-Cache geleert — queue, queue-provisioning, scheduler und reverb werden jetzt neu gestartet.',
|
|
'env_saved_restart_busy' => 'Gespeichert. Sicherung: :backup. Es läuft gerade schon eine andere Anfrage an den Update-Dienst — der Neustart entfällt diesmal automatisch. Bitte manuell ausführen: docker compose restart queue queue-provisioning scheduler reverb.',
|
|
'env_saved_no_agent' => 'Gespeichert. Sicherung: :backup. Der Update-Dienst auf dem Server läuft nicht — queue, queue-provisioning, scheduler und reverb halten noch die alten Werte. Bitte manuell ausführen: docker compose restart queue queue-provisioning scheduler reverb.',
|
|
// Nur wenn keine .env vorher existierte — dann gibt es nichts zu sichern.
|
|
'env_no_previous_file' => 'keine, da zuvor keine Datei existierte',
|
|
|
|
'env_invalid' => 'Zeile :line ist weder leer, noch ein Kommentar, noch SCHLÜSSEL=Wert. Nichts wurde gespeichert.',
|
|
'env_empty' => 'Eine leere Datei würde jede Einstellung löschen. Nichts wurde gespeichert.',
|
|
// Die Reiter. Getrennt nach dem, wofür ein Abschnitt da ist — nicht danach,
|
|
// welcher Speichermechanismus einen Wert zufällig hält.
|
|
'tab' => [
|
|
'services' => 'Dienste',
|
|
'platform' => 'Plattform',
|
|
'env' => 'Umgebung (.env)',
|
|
],
|
|
]; |