Provoz Social Stream Ninja bez grafického rozhraní

Nechte celou desktopovou aplikaci zachytávat na domácím serveru Ubuntu/Debian nebo VPS bez fyzického monitoru.

Přejít na počáteční nastavení, HTTP API, MCP, Owncast a Rocket.Chat, nebo kontrola zachytávání.

Ano — použijte běžný Linux AppImage

Stáhněte běžnou aplikaci pro Linux a nastavte jí oprávnění ke spuštění. Na VPS bez desktopu samotné spuštění AppImage nestačí: použijte virtuální displej a přepínač --ssapp-headless-control . Níže uvedené kroky udrží zachytávání chatu v chodu po odpojení SSH i restartu serveru.

Režim bez grafického rozhraní udržuje okna Electron SSApp skrytá, ale stránky zdrojů jsou stále skutečná okna prohlížeče. Linux proto potřebuje virtuální displej, například Xvfb. Nejde o malého chatového démona běžícího jen na pozadí.

Režim bez grafického rozhraní nevytváří veřejné ovládací API. Ovladač na jiném počítači používá stejnou relaci Social Stream a běžný přenos WebRTC nebo hostovaný WebSocket jako ostatní pracovní postupy dálkového ovládání.

Než začnete

  • Použijte Ubuntu 22.04+, Debian 12+ nebo podobnou distribuci Linuxu.
  • Pro malé nastavení počítejte alespoň se 2 GB paměti, pro více oken zdrojů s větší kapacitou.
  • Vyberte trvalý adresář profilu pro nastavení, zdroje, relace a data prohlížeče.
  • Naplánujte jednorázovou relaci desktopu nebo VNC pro přihlášení a další soukromé nastavení.

Nejsnáze se na dálku provozují veřejné URL zdrojů bez nutnosti přihlášení. OAuth, CAPTCHA, hesla, soubory cookie a nastavení účtu stále vyžadují člověka.

1. Nainstalujte Xvfb a AppImage

sudo apt-get update
sudo apt-get install -y xvfb x11-utils xauth curl
sudo mkdir -p /opt/socialstream
sudo mv ./YOUR_DOWNLOADED_FILE.AppImage /opt/socialstream/socialstreamninja.AppImage
sudo chmod 755 /opt/socialstream/socialstreamninja.AppImage

Stáhněte aktuální Linux AppImage ze stránky stažení Social Stream Ninja. Vyberte stažení odpovídající architektuře serveru (uname -m) a potom nahraďte YOUR_DOWNLOADED_FILE.AppImage výše jeho přesným názvem souboru. Kopie zdrojového kódu ani samostatná instalace Node nejsou potřeba.

2. Připravte profil a jednou se přihlaste

Pro nastavení a službu na pozadí používejte stejný účet i datový adresář. Vytvořte vyhrazený účet:

id ssapp >/dev/null 2>&1 || sudo useradd --system --create-home --home-dir /var/lib/ssapp --shell /usr/sbin/nologin ssapp
sudo install -d -o ssapp -g ssapp -m 700 /var/lib/ssapp
sudo apt-get install -y x11vnc
sudo -u ssapp Xvfb :99 -screen 0 1920x1080x24 -nolisten tcp -extension GLX

Nechte tento terminál běžet. Ve druhém terminálu SSH otevřete SSApp viditelně na daném virtuálním displeji:

sudo -u ssapp env DISPLAY=:99 SSAPP_USER_DATA_DIR=/var/lib/ssapp SSAPP_HEADLESS_CONTROL=0 \
  /opt/socialstream/socialstreamninja.AppImage --ozone-platform=x11 --no-hwa

Ve třetím terminálu SSH spusťte dočasný přístup VNC omezený na samotný server:

sudo -u ssapp x11vnc -display :99 -localhost -rfbport 5900 -nopw -forever

Na vlastním počítači otevřete tunel SSH:

ssh -N -L 5900:127.0.0.1:5900 you@your-server

Připojte prohlížeč VNC k localhost:5900. Nastavte ID relace Social Stream a volitelné heslo, přidejte zdroje a dokončete všechna přihlášení. Zapněte Automaticky aktivovat (Auto-activate) u zdrojů, které chcete spouštět při startu SSApp. Zkopírujte si odkazy na dok chatu a překryv vybrané zprávy pro pozdější použití.

Po nastavení ukončete SSApp a potom zastavte VNC, tunel a Xvfb pomocí Ctrl+C v jejich terminálech. Nespouštějte nastavení a službu současně nad stejným profilem. VNC připojené k již bezgrafické instanci obvykle ukáže prázdný displej, protože její okna jsou skrytá.

Použijte SSAPP_USER_DATA_DIR, nikoli přepínač Chromium --user-data-dir. Přihlášení dokončete na VPS; soubory cookie prohlížeče zkopírované z jiného OS nemusí jít dešifrovat.

3. Spusťte aplikaci bez grafického rozhraní

sudo -u ssapp env SSAPP_USER_DATA_DIR=/var/lib/ssapp xvfb-run -a -s "-screen 0 1920x1080x24 -nolisten tcp -extension GLX" \
  /opt/socialstream/socialstreamninja.AppImage \
  --ozone-platform=x11 --ssapp-headless-control --no-hwa

Tento --ssapp-headless-control ponechává okna aplikace skrytá. Tento příkaz v popředí skončí, když jej zastavíte; pro provoz bez dozoru použijte níže uvedenou službu systemd. Hlavní aplikace stále potřebuje Xvfb; --ozone-platform=headless nenahrazuje virtuální displej.

4. Ovládejte ji z jiného počítače

V aplikaci bez grafického rozhraní i vzdáleném ovladači použijte stejné ID relace Social Stream a volitelné heslo. Běžným přenosem je WebRTC. Pokud se pro prostředí nehodí, použijte režim hostovaného serveru WebSocket Social Stream.

Podporované vzdálené ovládání umí přidávat, spouštět, zastavovat, restartovat, ztlumovat a skrývat veřejné zdroje. Nedokončuje na dálku přihlášení, OAuth, CAPTCHA, soubory cookie, přihlašovací údaje ani jiné soukromé nastavení účtu.

Viz Relace, hesla, přenos a režimy serveru když se vzdálený ovladač připojí, ale zprávy nebo příkazy nepřicházejí.

Udržujte běh pomocí systemd

Nejprve zastavte aplikaci v popředí pomocí Ctrl+C. Vytvořte /etc/systemd/system/ssapp.service s sudo nano /etc/systemd/system/ssapp.service a vložte tuto jednotku:

[Unit]
Description=Social Stream Ninja (headless)
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=ssapp
StateDirectory=ssapp
WorkingDirectory=/opt/socialstream
Environment=SSAPP_USER_DATA_DIR=/var/lib/ssapp
ExecStart=/usr/bin/xvfb-run -a -s "-screen 0 1920x1080x24 -nolisten tcp -extension GLX" /opt/socialstream/socialstreamninja.AppImage --ozone-platform=x11 --ssapp-headless-control --no-hwa
Restart=on-failure
RestartSec=10
KillSignal=SIGTERM
TimeoutStopSec=30

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now ssapp
journalctl -u ssapp -f

Služba používá účet a profil vytvořené v kroku 2. Spouští se při startu systému a po selhání aplikace se restartuje. Pokud jste změnili instalační cestu, aktualizujte ExecStart tak, aby odpovídalo.

Volitelné HTTP API pro skripty na VPS

Režim bez grafického rozhraní nezapíná ovládací API. Pro jeho zapnutí pro službu spusťte sudo systemctl edit ssapp a uložte toto přepsání:

[Service]
Environment=SSAPP_CONTROL_API=1
sudo systemctl daemon-reload
sudo systemctl restart ssapp
curl -sS http://127.0.0.1:17777/api/v1/capabilities
curl -sS http://127.0.0.1:17777/api/v1/status

Pro ruční spuštění přidejte --ssapp-control-api místo toho k příkazu aplikace. Následující příkazy spusťte v shellu SSH na VPS. API záměrně nemá token a naslouchá pouze na 127.0.0.1; je oddělené od webového serveru Owncast nebo Rocket.Chat. Ponechte je místní.

Přečtěte ssappVersion, apiVersiona nejprve podporované platformy v přehledu schopností. Pokud je například podporován Twitch, přidejte zdroj (nahraďte CHANNEL_NAME):

curl -sS http://127.0.0.1:17777/api/v1/command \
  -H 'Content-Type: application/json' \
  -d '{"action":"addSource","value":{"target":"twitch","username":"CHANNEL_NAME","autoActivate":true}}'

curl -sS http://127.0.0.1:17777/api/v1/command \
  -H 'Content-Type: application/json' \
  -d '{"action":"getSources","value":{}}' 

Zkopírujte stabilní identifikátor zdroje id z vráceného seznamu zdrojů a nahraďte SOURCE_ID níže. Přidání zdroje jej ponechá neaktivní; autoActivate ovládá budoucí spuštění aplikace.

curl -sS http://127.0.0.1:17777/api/v1/command \
  -H 'Content-Type: application/json' \
  -d '{"action":"startSource","value":{"sourceId":"SOURCE_ID"}}'

curl -sS http://127.0.0.1:17777/api/v1/command \
  -H 'Content-Type: application/json' \
  -d '{"action":"getSourceDiagnostics","value":{"sourceId":"SOURCE_ID"}}'

curl -sS http://127.0.0.1:17777/api/v1/command \
  -H 'Content-Type: application/json' \
  -d '{"action":"stopSource","value":{"sourceId":"SOURCE_ID"}}' 

Zkontrolujte ok a payload v každé odpovědi; selhání vracejí error. Po změně načtěte stav. Pokud vyprší časový limit požadavku, před opakováním zkontrolujte stav. Před změnou polí připojení zdroj zastavte. Příkazy opětovného načtení, odstranění a vypnutí vyžadují confirm: true.

curl -N http://127.0.0.1:17777/api/v1/events sleduje proud Server-Sent Events až do Ctrl+C. Viz průvodce API a MCP pro úplnou příručku. Jde o ovládání aplikace/zdrojů; akce překryvů, například výběr zprávy chatu k zobrazení, používají dok Social Stream a příkazy Social Stream.

Volitelné MCP pro klienta AI na VPS

MCP umožňuje kompatibilnímu klientovi AI volat ovládání SSApp jako nástroje. Zapněte výše uvedené API a nechte hlavní službu aplikace spuštěnou. Zaregistrujte tuto konfiguraci v klientovi běžícím na VPS:

{
  "mcpServers": {
    "social-stream": {
      "command": "/opt/socialstream/socialstreamninja.AppImage",
      "args": ["--ssapp-mcp", "--ozone-platform=headless"],
      "env": {
        "SSAPP_CONTROL_URL": "http://127.0.0.1:17777"
      }
    }
  }
}

Umístění konfigurace závisí na klientovi. Spouští se samostatný adaptér přes standardní vstup/výstup; nespouští hlavní aplikaci zachytávání. Klient na domácím počítači by mířil na vlastní localhost, nikoli na VPS. Z jiného počítače používejte běžné dálkové ovládání Social Stream.

Přibalený adaptér je dostupný od SSApp 0.4.7; verze 0.4.14 a novější oznamují úplnou sadu nástrojů ještě před dostupností aplikace. O tom, která volání fungují, stále rozhodují aktuální schopnosti. Samostatná instalace Node není potřeba. Přepínač Ozone pro režim bez grafického rozhraní zde platí pouze pro adaptér MCP; hlavní aplikace stále potřebuje Xvfb.

Zkuste: „Zavolej ssapp_get_capabilities, potom ssapp_get_status a ssapp_list_sources. Řekni mi, které zdroje zachytávají a zda některý hlásí chyby.“ Nástroje zahrnují také spuštění/zastavení zdrojů, diagnostiku, zachycené události, snímky obrazovky a schválené interakce s okny aplikace. Soukromá přihlášení a CAPTCHA stále vyžadují člověka.

Podívejte se na průvodce místním ovládacím API a MCP pro volitelnou dovednost agenta, kompatibilitu verzí a další ovládání.

Owncast, Rocket.Chat a vybrané zprávy

SSApp můžete spouštět na stejném VPS jako Owncast a Rocket.Chat, pokud má dost prostředků. Samotná instalace SSApp nepřipojí Rocket.Chat ani nevloží překryvy do videa.

Supported chat source → SSApp → Social Stream dock / featured overlay
                                           ↓
Video input → server broadcaster renders overlays → Owncast → viewers

Ve zdrojových stromech zkontrolovaných pro tohoto průvodce není vestavěný konektor Rocket.Chat. Pro přenos těchto zpráv do Social Stream je potřeba samostatná integrace. Než nastavíte překryv videa, ověřte, že zprávy přicházejí do doku.

Použijte URL doku a překryvu vybrané zprávy zkopírované při nastavení se stejnou relací/heslem a přenosem. Kliknutím na zachycenou zprávu v doku ji vyberte k zobrazení. Serverový vysílací program potřebuje vykreslování zdroje Prohlížeč, aby tyto stránky umístil nad video před odesláním sloučeného vysílání do Owncast. Viz pokyny Owncast pro vysílání. SSApp není tento vysílací program.

Překryv umístěný nad vloženým přehrávačem na vašem webu je jiná možnost: zobrazuje se na dané stránce, není součástí videa přijímaného jinými přehrávači nebo nahrávkami. Owncast dokumentuje vkládání videa a chatu.

Chcete-li vypnout domácí počítač, musí zdroj videa, vysílací program, zachytávání chatu i případná integrace Rocket.Chat běžet nezávisle na něm. Nároky vykreslování a kódování videa plánujte odděleně od paměti pro zachytávání chatu SSApp.

Než systém necháte bez dozoru, ověřte celý pracovní postup

  1. Pošlete skutečnou zprávu do připojeného chatu a ověřte její příchod do doku Social Stream.
  2. Vyberte tuto zprávu k zobrazení a ověřte změnu překryvu vybrané zprávy. U Owncast ji ověřte i ve skutečném videu pro diváky.
  3. Odpojte VNC a SSH a několik minut posílejte další zprávy. Zachytávání by mělo pokračovat.
  4. Spusťte sudo systemctl restart ssappa poté ověřte návrat stejné relace a zdrojů i příjem nových zpráv automaticky aktivovanými zdroji.
  5. Během údržby restartujte VPS a zopakujte kontrolu zpráv. Samotný běžící proces nebo úspěšná odpověď API nedokazují funkční zachytávání chatu.

Použijte sudo systemctl status ssapp a sudo journalctl -u ssapp -n 100 --no-pager pro stav služby a poslední protokoly. Pro záměrné zastavení použijte sudo systemctl stop ssapp.

Při aktualizaci zastavte službu a zálohujte /var/lib/ssapp, nahraďte AppImage na stejné cestě a znovu spusťte službu. Předchozí spustitelný soubor si ponechte, dokud nová verze neprojde kontrolami zpráv.

Řešení potíží

ProblémCo zkontrolovat
Missing X server or $DISPLAYSpusťte přes xvfb-run nebo spusťte Xvfb a nastavte DISPLAY.
Xvfb se ihned ukončíPonechte -extension GLX v argumentech Xvfb; některé nainstalované ovladače GPU narušují spouštění GLX.
AppImage nelze připojitRozbalte pomocí ./socialstreamninja.AppImage --appimage-extract v zapisovatelném adresáři a poté vložte rozbalenou složku do /opt/socialstream/squashfs-root. Nahraďte cestu AppImage v příkazech nastavení, služby a MCP hodnotou /opt/socialstream/squashfs-root/socialstreamninja.
Vzdálené příkazy nepřicházejíOvěřte, že obě strany používají stejnou relaci a heslo a že je připojené WebRTC nebo režim hostovaného WebSocket.
Zdroje nebo nastavení se míchají mezi instancemiKaždé instanci přidělte jiné SSAPP_USER_DATA_DIR a virtuální displej.