Update-Check im System-Tab, Worker-Adressfeld mit Heimnetz-Warnung, Save-Knopf raus aus dem Worker-Tab
Ampel / ampel (push) Successful in 28s
Ampel / ampel (push) Successful in 28s
1. Update-Erkennung (Commander-Frage 'wie kriegen wir Updates mit?'): GET /system/updates vergleicht installierte Versionen (Worker-Info) mit makemkv.com (Versionsnummer der Download-Seite) und der HandBrake- GitHub-Release-API (releases/latest), 12 h gecacht. Einstellungen -> System: 'Auf Updates prüfen' + fertiger Update-Befehl bei MakeMKV. Selbst-Update gibt es bewusst NICHT (waere Docker-Socket-Zugriff); dafuer ist MAKEMKV_VERSION jetzt per .env uebersteuerbar — Update ohne Code-Aenderung. HandBrake-Abweichung wird als Info dargestellt (Debian-Paket hinkt der offiziellen Version bewusst hinterher). 2. Worker-Anbindung: editierbares Adressfeld statt stillschweigend window.location.hostname — Befund: ueber die externe Domain kopierte Befehle liefen in den Reverse-Proxy (401) und Worker koennen Redis/ Postgres eh nur im Heimnetz erreichen. Amber-Warnung bei oeffentlich aussehender Adresse, Anleitung ergaenzt. 3. 'Einstellungen speichern' ist im Worker-Tab ausgeblendet — dort gibt es nichts zu speichern, der Knopf verwirrte nur. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -41,9 +41,20 @@ export default function WorkerVerwaltung() {
|
||||
const [workers, setWorkers] = useState<WorkerInfo[]>([])
|
||||
const [kopiert, setKopiert] = useState(false)
|
||||
const [variante, setVariante] = useState<'linux' | 'windows'>('linux')
|
||||
const [rippyHost, setRippyHost] = useState(window.location.hostname)
|
||||
const { theme } = useDarkMode()
|
||||
const { toast } = useToast()
|
||||
|
||||
// Worker verbinden sich DIREKT mit Redis/Postgres (6379/5432) — das geht
|
||||
// nur im Heimnetz. Wer das UI gerade über eine externe Domain (Reverse-
|
||||
// Proxy) aufruft, würde sonst Befehle mit der falschen Adresse kopieren
|
||||
// (Befund 24.07.: 401 vom Proxy statt Installer).
|
||||
const siehtOeffentlichAus =
|
||||
!/^(\d{1,3}\.){3}\d{1,3}$/.test(rippyHost) &&
|
||||
!rippyHost.endsWith('.local') &&
|
||||
rippyHost !== 'localhost' &&
|
||||
rippyHost.includes('.')
|
||||
|
||||
const laden = (manuell = false) => {
|
||||
api.get('/capabilities')
|
||||
.then(r => {
|
||||
@@ -59,7 +70,6 @@ export default function WorkerVerwaltung() {
|
||||
return () => clearInterval(interval)
|
||||
}, [])
|
||||
|
||||
const rippyHost = window.location.hostname
|
||||
const installBefehl = variante === 'linux'
|
||||
? [
|
||||
`git clone <rippy-repo-url> rippy && cd rippy`,
|
||||
@@ -141,6 +151,29 @@ export default function WorkerVerwaltung() {
|
||||
{/* Neue Maschine anbinden — zwei Varianten */}
|
||||
<div className={`rounded-lg p-4 border ${theme === 'dark' ? 'border-slate-700 bg-slate-800/50' : 'border-slate-200 bg-slate-50'}`}>
|
||||
<h3 className={`font-medium mb-2 ${theme === 'dark' ? 'text-slate-100' : 'text-slate-900'}`}>Maschine als Encoding-Worker anbinden</h3>
|
||||
|
||||
{/* Rippy-Adresse für die Befehle: Worker reden DIREKT mit Redis/
|
||||
Postgres — das geht nur im Heimnetz, nie über die externe Domain */}
|
||||
<div className="mb-3">
|
||||
<label className={`block text-xs font-medium mb-1 ${theme === 'dark' ? 'text-slate-400' : 'text-slate-500'}`}>
|
||||
Rippy-Adresse aus Sicht des Workers (Heimnetz-IP oder -Name)
|
||||
</label>
|
||||
<input
|
||||
value={rippyHost}
|
||||
onChange={e => setRippyHost(e.target.value.trim())}
|
||||
className={`w-full max-w-xs px-3 py-2 border rounded-lg text-sm font-mono focus:ring-2 focus:ring-indigo-500 focus:border-transparent ${theme === 'dark' ? 'bg-slate-800 border-slate-600 text-slate-200' : 'bg-white border-slate-300 text-slate-900'}`}
|
||||
placeholder="192.168.178.162"
|
||||
/>
|
||||
{siehtOeffentlichAus && (
|
||||
<p className={`text-xs mt-1.5 px-2.5 py-1.5 rounded-lg inline-block ${theme === 'dark' ? 'bg-amber-900/30 text-amber-300' : 'bg-amber-50 text-amber-700'}`}>
|
||||
⚠️ Das sieht nach einer externen Domain aus (Reverse-Proxy). Worker verbinden sich
|
||||
direkt mit Redis/Postgres (Ports 6379/5432) — das geht nur im Heimnetz, und der
|
||||
Proxy blockt den Installer-Download (401). Hier die <strong>LAN-IP</strong> der
|
||||
Rippy-Maschine eintragen, z. B. 192.168.178.162.
|
||||
</p>
|
||||
)}
|
||||
</div>
|
||||
|
||||
<div className="flex gap-2 mb-3">
|
||||
{([['linux', '🐧 Linux (Docker)'], ['windows', '🪟 Windows (nativ, ohne Docker)']] as const).map(([wert, label]) => (
|
||||
<button
|
||||
|
||||
Reference in New Issue
Block a user