For transparency, the short URL and the direct raw GitHub URL are both shown below. The short URL currently redirects to the same installer script.
Quick install using the short URL:
curl -fsSL https://bit.ly/4naEQhR | sudo bashQuick install using the direct raw GitHub URL:
curl -fsSL https://raw.githubusercontent.com/itdevconsulting/HomeSkyQLiveStreamingPlayer/main/scripts/install-from-github.sh | sudo bashAlternative one-liners using the short URL:
wget -qO- https://bit.ly/4naEQhR | sudo bashAlternative one-liners using the direct raw GitHub URL:
wget -qO- https://raw.githubusercontent.com/itdevconsulting/HomeSkyQLiveStreamingPlayer/main/scripts/install-from-github.sh | sudo bashLocal repo install from the repository root on the target Linux machine:
chmod +x scripts/install-linux.sh
sudo ./scripts/install-linux.shOptional second listener with app auth bypassed:
sudo UNAUTHENTICATED_PORT=5222 ./scripts/install-linux.shUse that second port only behind your existing edge authentication layer. The normal PORT listener keeps the app's built-in authenticator flow.
After install, you can also enable, disable, or change that second listener from the app's Setup page. Those listener settings are saved in local-settings.json and take effect after the service restarts.
What it does:
- clones or updates
https://github.com/itdevconsulting/HomeSkyQLiveStreamingPlayer - hard-resets and cleans the source checkout on re-runs so it matches the latest remote branch exactly
- installs FFmpeg if
ffmpegis missing - installs the
.NET 10SDK if no10.xSDK is available - publishes the app in
Release - stops
SkyStreamingServicebefore replacing the deployed app - fully replaces
/opt/skystreamingservice/appwith the latest published build - writes or updates the
SkyStreamingServicesystemd service and restarts it - installs a root updater helper and a systemd path unit so the app can queue GitHub updates
- preserves local app state on re-runs:
local-settings.jsonauth-settings.jsontranscoder-settings.jsondirect-skyq-presets.jsonskyq-cache.jsonsky-stream-cache.jsonruntime/
Useful commands:
sudo systemctl status SkyStreamingService
sudo systemctl start SkyStreamingService
sudo systemctl stop SkyStreamingService
sudo systemctl restart SkyStreamingService
sudo journalctl -u SkyStreamingService -f
sudo journalctl -u SkyStreamingService-update -n 100 --no-pagerUninstall:
Stop and remove the service only:
sudo systemctl stop SkyStreamingService
sudo systemctl disable SkyStreamingService
sudo systemctl stop SkyStreamingService-update.path
sudo systemctl disable SkyStreamingService-update.path
sudo rm -f /etc/systemd/system/SkyStreamingService.service
sudo rm -f /etc/systemd/system/SkyStreamingService-update.service
sudo rm -f /etc/systemd/system/SkyStreamingService-update.path
sudo rm -f /usr/local/sbin/skystreaming-update
sudo systemctl daemon-reloadRemove the deployed app and local runtime state as well:
sudo rm -rf /opt/skystreamingservice
sudo rm -rf /var/lib/skystreamingservice
sudo rm -rf /usr/local/src/homeskyqlivestreamingplayer
sudo userdel skystreamingservice 2>/dev/null || true
sudo groupdel skystreamingservice 2>/dev/null || trueNotes:
- This does not uninstall system-wide
.NETorffmpegpackages because they may be shared with other apps. - If you want to preserve your local presets and auth/runtime files, skip removing
/opt/skystreamingserviceand/var/lib/skystreamingservice.
Default app URL:
http://127.0.0.1:5221/
Setup and login:
- Open
http://127.0.0.1:5221/setupfrom the server itself, your LAN, or over Tailscale. - Confirm the detected FFmpeg path and save setup.
- Enter the email address you want to use for remote access.
- Generate the QR code and scan it with your authenticator app.
- External users then sign in at
/auth/loginwith that email and the current TOTP code.
Trusted setup networks:
localhost- RFC1918 LAN ranges such as
192.168.x.x - Tailscale range
100.64.0.0/10
Cloudflare Zero Trust / Tailscale:
- keep the app private and put Cloudflare Zero Trust or Tailscale in front of it
- first-time authenticator enrollment must still be done from a trusted local/Tailscale network
- for Cloudflare, point the private origin/tunnel at
http://127.0.0.1:5221 - if you enable
UNAUTHENTICATED_PORT, point your edge at that second port instead and let the edge own authentication
Sky Stream LAN:
- keep the puck on its UK-egress gateway; do not move it onto the player’s default route
- install this service on that gateway box (or another host that already has a NIC on the Stream LAN)
- Tailscale is for opening the browser UI, not for Sky Remote TCP 8091
- from the gateway box,
nmap -Pn -sT -p 8091 <puck-ip>must showopen, notfiltered
Source checkout used by the bootstrap installer:
/usr/local/src/homeskyqlivestreamingplayer