From b451b52a57c3e4c98cb39644a176be0239d66b1e Mon Sep 17 00:00:00 2001 From: Mikei386 <44135113+Mikei386@users.noreply.github.com> Date: Thu, 1 Oct 2026 23:17:13 +0200 Subject: [PATCH] Use WireGuard access address for application and API links --- docker-ui.js | 4 ++-- endpoint-ui.js | 8 ++++---- network-ui.js | 14 ++++++++++++++ 3 files changed, 20 insertions(+), 6 deletions(-) diff --git a/docker-ui.js b/docker-ui.js index d298bad..825aadd 100644 --- a/docker-ui.js +++ b/docker-ui.js @@ -6,11 +6,11 @@ window.DockerUI=(()=>{ 'ltx-deskweb':{title:'LTX DeskWEB',description:'LTX-Webstudio für Videoerzeugung über Decks originale LTX-Laufzeit.',port:8118,hint:'Videoprofil freigeben und in der Steuerung Video starten.'}, 'athena-swarm-ui':{title:'SwarmUI',description:'API By URL · Oberfläche für Decks ComfyUI-Laufzeit.',port:8125,hint:'In der Steuerung Video mit ComfyUI starten.'} }; - function appInfo(c){const a=apps[c.name];return a?`
${esc(a.description)}
${esc(a.title)} öffnen →${esc(a.hint)} SSH-Tunnel: Port ${a.port}.
`:'';} + function appInfo(c){const a=apps[c.name];return a?`${esc(a.description)}
${esc(a.title)} öffnen →${esc(a.hint)} Port ${a.port}.
`:'';} async function api(action='',data){const r=await fetch('/api/v1/docker'+action,data?{method:'POST',headers:{'Content-Type':'application/json','X-Athena-Deck':'1'},body:JSON.stringify(data)}:{});if(r.status===401){location.reload();throw Error('Bitte erneut anmelden.');}const value=await r.json();if(!r.ok)throw Error(value.error||'Docker-Anfrage fehlgeschlagen');return value;} function html(services=false){return `${services?'Zusätzliche Oberflächen werden getrennt von Modellen und Laufzeiten verwaltet. Hier erscheinen ausschließlich ausdrücklich für Deck markierte Anwendungscontainer.':'Optionale Umgebung für zusätzliche Studios. Native Modelllaufzeiten bleiben unabhängig davon.'}
`;} function bind(services=false){const panel=document.querySelector('#docker-panel'),message=document.querySelector('#docker-message');let signature='',pending=false,timer; - async function refresh(){clearTimeout(timer);try{if(pending)return;const s=await api();if(!panel.isConnected)return;const next=JSON.stringify(s);if(signature!==next){signature=next;const running=s.job?.state==='running'; + async function refresh(){clearTimeout(timer);try{if(pending)return;const [s]=await Promise.all([api(),DeckLinks.refresh()]);if(!panel.isConnected)return;const next=JSON.stringify(s);if(signature!==next){signature=next;const running=s.job?.state==='running'; if(services){panel.innerHTML=`Beide Container-Labels müssen gesetzt sein:
io.athena-deck.managed=true\nio.athena-deck.role=applicationKeine automatische Übernahme vorhandener Container. Labels werden beim Erstellen in Docker Compose gesetzt. Starten und Stoppen betrifft nur markierte Container. Löschen entfernt den Container einschließlich seiner beschreibbaren Schicht; Images und Volumes bleiben erhalten.
Docker-Verbindung prüfen →'+esc(s.message)+'
${esc(c.image)}
${esc(c.state)} · ${esc(c.status)}
${appInfo(c)}Docker ist erreichbar. Kein Container trägt beide erforderlichen Labels. Bestehende Router-, WireGuard- und andere Container bleiben ausgeblendet.
${s.reachable?'Daemon erreichbar · Verbindung über begrenzten Systemhelfer':s.helper_available?'Systemhelfer erreichbar · Docker-Daemon nicht erreichbar':'Systemhelfer nicht verbunden'}
${esc(s.message)}
${s.job?`${esc(s.job.state)} · ${esc(s.job.phase)}
`:''}${!s.installed&&s.install_supported&&!running?'':``}Keine automatische Aktualisierung vorhandener Docker-Installationen. NVIDIA Container Toolkit und Treiber sind separate Voraussetzungen für GPU-Container. Die Paketinstallation wird nicht mitten im Vorgang abgebrochen.
Weitere Dienste öffnen →${active==='switching'?`Wechsel zu ${e(modeLabels[v.target_mode]||v.target_mode)}`:(s.reachable||active==='separator')?`Aktiver Betrieb: ${e(modeLabels[active]||active)}`:'Betrieb gestoppt'}
${switching||loading||pending||s.state==='stopping'?`${e(reason)} Einrichten →
`:''}${(current&&(v.error||s.error||selected==='llm'&&s.worker.error))?`${e(v.error||s.error||s.worker.error)}
`:''}${e(url)}${ready?'Erreichbar':'Erreichbar, sobald dieser Betrieb bereit ist'} · Port ${selected==='separator'?8108:s.port}
${v.separator?.models?.filter(m=>m.installed).length||0} Modellpakete bereit · Gewichte laden beim Trennauftrag und werden anschließend entladen.
Audio-Trennoberfläche öffnen →`:selected==='llm'?`${s.counts.llm.available} Chatprofile freigegeben · ${e(s.worker.profile_name||'Gewichte laden bei der ersten Anfrage')}
`:selected==='music'?`${e(v.music_profiles?.map(p=>p.name).join(', ')||'Kein Musikprofil freigegeben')} · Gewichte laden bei Anfrage
${available?`LadyPoly YuE2 öffnen →${!ready?'Vor dem Generieren Musik starten.
':''}`:''}`:`${e(v.service?.name||'Kein Videomodell ausgewählt')} · ${v.runtime_kind==='original'?'LTX Original':'ComfyUI'} · Gewichte laden bei Generierung
${ready?`${v.runtime_kind==='original'?'LTX DeskWEB':'ComfyUI'} öffnen →`:''}`}Im LLM-Betrieb stehen auch freigegebene Bild-, TTS- und STT-Profile bereit.
Endpunkt und Port einstellen →
${s.scheduler.active_requests} laufende · ${s.scheduler.waiting_requests} wartende Aufträge
${active==='switching'?`Wechsel zu ${e(modeLabels[v.target_mode]||v.target_mode)}`:(s.reachable||active==='separator')?`Aktiver Betrieb: ${e(modeLabels[active]||active)}`:'Betrieb gestoppt'}
${switching||loading||pending||s.state==='stopping'?`${e(reason)} Einrichten →
`:''}${(current&&(v.error||s.error||selected==='llm'&&s.worker.error))?`${e(v.error||s.error||s.worker.error)}
`:''}${e(url)}${ready?'Erreichbar':'Erreichbar, sobald dieser Betrieb bereit ist'} · Port ${selected==='separator'?8108:s.port}
${v.separator?.models?.filter(m=>m.installed).length||0} Modellpakete bereit · Gewichte laden beim Trennauftrag und werden anschließend entladen.
Audio-Trennoberfläche öffnen →`:selected==='llm'?`${s.counts.llm.available} Chatprofile freigegeben · ${e(s.worker.profile_name||'Gewichte laden bei der ersten Anfrage')}
`:selected==='music'?`${e(v.music_profiles?.map(p=>p.name).join(', ')||'Kein Musikprofil freigegeben')} · Gewichte laden bei Anfrage
${available?`LadyPoly YuE2 öffnen →${!ready?'Vor dem Generieren Musik starten.
':''}`:''}`:`${e(v.service?.name||'Kein Videomodell ausgewählt')} · ${v.runtime_kind==='original'?'LTX Original':'ComfyUI'} · Gewichte laden bei Generierung
${ready?`${v.runtime_kind==='original'?'LTX DeskWEB':'ComfyUI'} öffnen →`:''}`}Im LLM-Betrieb stehen auch freigegebene Bild-, TTS- und STT-Profile bereit.
Endpunkt und Port einstellen →
${s.scheduler.active_requests} laufende · ${s.scheduler.waiting_requests} wartende Aufträge