Social Stream Ninja'yı başsız modda çalıştırın

Ubuntu veya Debian ev sunucusunda ya da VPS'de fiziksel monitör olmadan tam masaüstü uygulamasının yakalama yapmasını sağlayın.

Şuraya geçin: ilk kurulum, HTTP API, MCP, Owncast ve Rocket.Chat, veya yakalamayı kontrol etme.

Evet — normal Linux AppImage'ını kullanın

Normal Linux uygulamasını indirin ve çalıştırılabilir yapın. Masaüstü olmayan VPS'de yalnızca AppImage'ı başlatmak yetmez: sanal ekran ve şu bayrağı kullanın: --ssapp-headless-control bayrağını. Aşağıdaki adımlar SSH bağlantısını kestikten ve sunucu yeniden başladıktan sonra sohbet yakalamayı çalışır durumda tutar.

Başsız mod SSApp'in Electron pencerelerini gizler, ancak kaynak sayfaları hâlâ gerçek tarayıcı pencereleridir. Bu nedenle Linux'ta Xvfb gibi sanal ekran gerekir. Bu, yalnızca arka planda çalışan küçük bir sohbet hizmeti değildir.

Başsız mod herkese açık kontrol API'si oluşturmaz. Başka bir bilgisayardaki kontrolcü, diğer uzaktan kontrol iş akışlarıyla aynı Social Stream oturumunu ve normal WebRTC veya barındırılan WebSocket aktarımını kullanır.

Başlamadan önce

  • Ubuntu 22.04+, Debian 12+ veya benzer Linux dağıtımı kullanın.
  • Küçük kurulum için en az 2 GB, birden fazla kaynak penceresi için daha fazla bellek ayırın.
  • Ayarlar, kaynaklar, oturumlar ve tarayıcı verileri için kalıcı bir profil dizini seçin.
  • Oturum açma ve diğer özel kurulum işlemleri için tek seferlik masaüstü veya VNC oturumu planlayın.

Oturum açma gerektirmeyen herkese açık kaynak URL'lerini uzaktan işletmek en kolaydır. OAuth, CAPTCHA, parolalar, çerezler ve hesap kurulumu hâlâ insan gerektirir.

1. Xvfb ve AppImage'ı kurun

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

Güncel Linux AppImage'ını şu kaynaktan indirin: Social Stream Ninja indirme sayfası. Sunucunuzun mimarisine uygun indirmeyi seçin (uname -m), ardından şunu değiştirin: YOUR_DOWNLOADED_FILE.AppImage yukarıda, tam dosya adıyla. Kaynak kodunu indirmek veya ayrı Node kurulumu gerekmez.

2. Profili hazırlayın ve bir kez oturum açın

Kurulumda ve arka plan hizmetinde aynı hesabı ve veri dizinini kullanın. Özel bir hesap oluşturun:

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

Bu terminali çalışır durumda bırakın. İkinci SSH terminalinde SSApp'i o sanal ekranda görünür biçimde açın:

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

Üçüncü SSH terminalinde, yalnızca sunucunun kendisiyle sınırlı geçici VNC erişimini başlatın:

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

Kendi bilgisayarınızda bir SSH tüneli açın:

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

VNC görüntüleyicinizi şuraya bağlayın: localhost:5900. Social Stream oturum kimliğini ve isteğe bağlı parolayı ayarlayın, kaynakları ekleyin ve gerekli oturum açma işlemlerini tamamlayın. Şunu etkinleştirin: Otomatik etkinleştir SSApp başladığında başlatmak istediğiniz kaynaklarda. Daha sonra kullanmak için sohbet paneli ve öne çıkan mesaj katmanı bağlantılarınızı kopyalayın.

Kurulumdan sonra SSApp'ten çıkın; ardından VNC, tünel ve Xvfb'yi kendi terminallerinde Ctrl+C ile durdurun. Kurulumu ve hizmeti aynı profilde eşzamanlı çalıştırmayın. Zaten başsız çalışan örneğe bağlanan VNC, pencereleri gizli olduğu için normalde boş ekran gösterir.

Kullanın: SSAPP_USER_DATA_DIR; Chromium'un şu seçeneğini değil: --user-data-dir. Oturum açma işlemlerini VPS'de tamamlayın; başka bir işletim sisteminden kopyalanan tarayıcı çerezlerinin şifresi çözülemeyebilir.

3. Uygulamayı başsız modda başlatın

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

Bu --ssapp-headless-control bayrağı uygulama pencerelerini gizli tutar. Bu ön plan komutu siz durdurduğunuzda durur; gözetimsiz kullanım için aşağıdaki systemd hizmetini kullanın. Ana uygulama hâlâ Xvfb gerektirir; --ozone-platform=headless sanal ekranın yerini almaz.

4. Başka bir bilgisayardan kontrol edin

Başsız uygulamada ve uzaktan kontrolcüde aynı Social Stream oturum kimliğini ve isteğe bağlı parolayı kullanın. Normal aktarım WebRTC'dir. Ortama uygun değilse Social Stream'in barındırılan WebSocket sunucu modunu kullanın.

Desteklenen uzaktan kontroller herkese açık kaynakları ekleyebilir, başlatabilir, durdurabilir, yeniden başlatabilir, sessize alabilir ve gizleyebilir. Oturum açma, OAuth, CAPTCHA, çerez, kimlik bilgisi veya diğer özel hesap kurulumlarını uzaktan tamamlamazlar.

Bkz. Oturumlar, parolalar, aktarım ve sunucu modları uzaktan kontrolcü bağlanıyor ama mesaj veya komut gelmiyorsa.

systemd ile çalışır durumda tutun

Önce ön plandaki uygulamayı Ctrl+C ile durdurun. Şunu oluşturun: /etc/systemd/system/ssapp.service şununla: sudo nano /etc/systemd/system/ssapp.service ve şu birimi yapıştırın:

[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

Hizmet, 2. adımda oluşturulan hesabı ve profili kullanır. Sistem açılışında başlar, uygulama hatasından sonra yeniden başlar. Kurulum yolunu değiştirdiyseniz şunu güncelleyin: ExecStart eşleşecek şekilde.

VPS'deki betikler için isteğe bağlı HTTP API

Başsız mod kontrol API'sini etkinleştirmez. Hizmetiniz için etkinleştirmek üzere şunu çalıştırın: sudo systemctl edit ssapp ve şu geçersiz kılmayı kaydedin:

[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

Elle başlatmak için şunu ekleyin: --ssapp-control-api bunun yerine uygulama komutuna. Aşağıdaki komutları SSH kabuğunda çalıştırın: VPS'de. API bilerek token kullanmaz ve yalnızca şu adrese bağlanır: 127.0.0.1; Owncast veya Rocket.Chat web sunucunuzdan ayrıdır. Yerel tutun.

Okuyun: ssappVersion, apiVersion, ve yeteneklerdeki desteklenen platformları önce kontrol edin. Örneğin Twitch destekleniyorsa bir kaynak ekleyin (şunu değiştirin: 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":{}}' 

Kaynağın sabit şu değerini kopyalayın: id dönen kaynak listesinden ve şunu değiştirin: SOURCE_ID aşağıda. Eklenen kaynak etkin değildir; autoActivate gelecekteki uygulama başlatmalarını kontrol eder.

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"}}' 

Kontrol edin: ok ve payload her yanıtta; hatalar şu değeri döndürür: error. Değişiklikten sonra durumu okuyun. İstek zaman aşımına uğrarsa yeniden denemeden önce durumu kontrol edin. Bağlantı alanlarını değiştirmeden önce kaynağı durdurun. Yeniden yükleme, kaldırma ve kapatma komutları şunu gerektirir: confirm: true.

curl -N http://127.0.0.1:17777/api/v1/events Ctrl+C'ye kadar Sunucudan Gönderilen Etkinlikler akışını takip eder. Bkz. API ve MCP kılavuzu tam başvuru kaynağı için. Bunlar uygulama/kaynak kontrolleridir; sohbet mesajını öne çıkarma gibi katman işlemleri Social Stream panelini ve şu arayüzü kullanır: Social Stream komutları.

VPS'deki yapay zekâ istemcisi için isteğe bağlı MCP

MCP, uyumlu bir yapay zekâ istemcisinin SSApp kontrollerini araç olarak çağırmasını sağlar. Yukarıdaki API'yi etkinleştirin ve ana uygulama hizmetini çalışır durumda tutun. Bu yapılandırmayı şu ortamda çalışan istemciye kaydedin: VPS'de:

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

Yapılandırma konumu istemciye bağlıdır. Bu, standart girdi/çıktı üzerinden ayrı bir bağdaştırıcı başlatır; ana yakalama uygulamasını başlatmaz. Ev bilgisayarınızdaki istemci VPS'nize değil, kendi localhost'una bağlanır. Başka bilgisayardan Social Stream'in normal uzaktan kontrollerini kullanın.

Paketteki bağdaştırıcı SSApp 0.4.7'den itibaren kullanılabilir; 0.4.14 ve sonrası, uygulama kullanılabilir olmadan bile tüm araç kümesini bildirir. Hangi çağrıların çalışacağını yine canlı yetenekler belirler. Ayrı Node kurulumu gerekmez. Buradaki başsız Ozone bayrağı yalnızca MCP bağdaştırıcısına uygulanır; ana uygulama için Xvfb'yi koruyun.

Deneyin: “ssapp_get_capabilities, ardından ssapp_get_status ve ssapp_list_sources çağrılarını yap. Hangi kaynakların yakalama yaptığını ve hata bildiren olup olmadığını söyle.” Araçlar kaynak başlatma/durdurma, tanılama, yakalanan etkinlikler, ekran görüntüleri ve onaylı uygulama penceresi etkileşimlerini de kapsar. Özel oturum açma ve CAPTCHA hâlâ insan gerektirir.

Bkz. Yerel kontrol API'si ve MCP kılavuzu isteğe bağlı aracı becerisi, sürüm uyumluluğu ve daha fazla kontrol için.

Owncast, Rocket.Chat ve öne çıkan mesajlar

Yeterli kaynağı varsa SSApp'i Owncast ve Rocket.Chat ile aynı VPS'de çalıştırabilirsiniz. SSApp'i kurmak, tek başına Rocket.Chat'i bağlamaz veya katmanları videoya eklemez.

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

Bu kılavuz için incelenen kaynak ağaçlarında yerleşik Rocket.Chat bağlayıcısı yoktur. Bu mesajları Social Stream'e almak için ayrı entegrasyon gerekir. Video katmanını yapılandırmadan önce mesajların panele ulaştığını doğrulayın.

Kurulumda kopyalanan panel ve öne çıkan mesaj katmanı URL'lerini aynı oturum/parola ve aktarım yöntemiyle kullanın. Öne çıkarmak için panelde yakalanmış bir mesaj seçin. Birleşik yayını Owncast'e göndermeden önce bu sayfaları videonun üzerine yerleştirmek için sunucudaki yayıncı yazılımınız tarayıcı kaynağı oluşturmayı desteklemelidir. Bkz. Owncast yayın yönergeleri. SSApp bu video yayıncısı değildir.

Web sitenizde gömülü oynatıcının üzerine konumlandırılan katman farklı bir seçenektir: diğer oynatıcıların veya kayıtların aldığı videonun parçası olmak yerine yalnızca o sayfada görünür. Owncast şu konuyu belgeler: video ve sohbet gömme.

Ev bilgisayarınızı kapatabilmeniz için video kaynağı, yayıncı yazılımı, sohbet yakalama ve varsa Rocket.Chat entegrasyonu ondan bağımsız çalışmaya devam etmelidir. Video işleme ve kodlama kaynaklarını SSApp'in sohbet yakalama belleğinden ayrı hesaplayın.

Gözetimsiz bırakmadan önce tüm iş akışını kontrol edin

  1. Bağlı sohbette gerçek bir mesaj gönderin ve Social Stream panelinize ulaştığını doğrulayın.
  2. Mesajı öne çıkarın ve öne çıkan mesaj katmanının değiştiğini doğrulayın. Owncast için gerçek izleyici videosunda da kontrol edin.
  3. VNC ve SSH bağlantısını kesin, ardından birkaç dakika boyunca daha fazla mesaj gönderin. Yakalama devam etmelidir.
  4. Çalıştırın: sudo systemctl restart ssapp, ardından aynı oturumun ve kaynakların geri geldiğini ve otomatik etkinleşen kaynakların yeni mesajları aldığını doğrulayın.
  5. Bakım aralığında VPS'yi yeniden başlatın ve mesaj kontrolünü tekrarlayın. Tek başına çalışan işlem veya başarılı API yanıtı, sohbet yakalamanın çalıştığını kanıtlamaz.

Kullanın: sudo systemctl status ssapp ve sudo journalctl -u ssapp -n 100 --no-pager hizmet durumu ve son günlükler için. Bilerek durdurmak için şunu kullanın: sudo systemctl stop ssapp.

Güncellemelerde hizmeti durdurun ve şunu yedekleyin: /var/lib/ssapp, AppImage'ı aynı yolda değiştirin ve hizmeti yeniden başlatın. Yeni sürüm mesaj kontrollerini geçene kadar önceki çalıştırılabilir dosyayı saklayın.

Sorun giderme

SorunKontrol edilecekler
Missing X server or $DISPLAYŞunun üzerinden başlatın: xvfb-run veya Xvfb'yi başlatıp şunu ayarlayın: DISPLAY.
Xvfb hemen kapanıyorŞunu bırakın: -extension GLX Xvfb bağımsız değişkenlerinde; bazı kurulu GPU sürücüleri GLX başlangıcını bozar.
AppImage bağlanamıyorŞununla çıkarın: ./socialstreamninja.AppImage --appimage-extract yazılabilir bir dizinde; ardından çıkarılan klasörü şuraya koyun: /opt/socialstream/squashfs-root. Kurulum, hizmet ve MCP komutlarındaki AppImage yolunu şununla değiştirin: /opt/socialstream/squashfs-root/socialstreamninja.
Uzaktan komutlar gelmiyorİki tarafın aynı oturumu ve parolayı kullandığını, WebRTC veya barındırılan WebSocket modunun bağlı olduğunu doğrulayın.
Kaynaklar veya ayarlar örnekler arasında karışıyorHer örneğe farklı bir SSAPP_USER_DATA_DIR ve sanal ekran verin.