Files
infrastructure/docs/archive/04-PHASE4-REMOTE-GAMING.md
XTRM-Unraid b250493d5a
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
Major documentation restructure - consolidated docs
New Structure:
- 01-NETWORK-MAP.md - Network topology, IPs, Docker networks, services
- 02-SERVICES-CRITICAL.md - DNS, Auth, Routing (P0/P1 services)
- 03-SERVICES-OTHER.md - All non-critical services
- 04-HARDWARE-INVENTORY.md - Physical devices and specs
- 05-CHANGELOG.md - Major events only

New Folders:
- docs/archive/ - Legacy docs (read-only reference)
- docs/wip/ - Planned changes and ideas
  - UPGRADE-2026-HARDWARE.md - N5 Air + N100 migration plan
  - GITOPS-CONTAINERS.md - Phase 2 container GitOps

Changes:
- Moved all 22 legacy docs to archive/
- Consolidated container IPs, physical map, and services into single network map
- Extracted critical vs non-critical service classification
- Simplified changelog to major events only

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 11:17:33 +02:00

5.7 KiB

Phase 4: Remote Gaming (Sunshine + Moonlight)

Status: 🔄 IN PROGRESS

Last Updated: 2026-01-19


Current Progress

Task Status Notes
Tailscale on Nobara Complete IP: 100.98.57.73
VA-API verification Complete RX 6600 H.264/HEVC encoding working
Sunshine Flatpak Failed Capture methods incompatible
Native Sunshine Pending Recommended installation method
Moonlight pairing Pending Awaiting Sunshine setup

Verified Hardware

  • GPU: AMD Radeon RX 6600M (Navi 23) + AMD Radeon 680M (integrated)
  • Driver: Mesa Gallium 25.3.2 (radeonsi, navi23, LLVM 21.1.7)
  • VA-API: v1.22 with H.264 and HEVC encode support

Tailscale Network

Device Tailscale IP Status
xtrm-pc (Nobara) 100.98.57.73 Online
kaloyans-macbook-air 100.68.118.59 Online
xtrm-unraid 100.100.208.70 Online

Flatpak Issues Encountered

The Flatpak version of Sunshine failed due to:

  1. wlr capture: Missing wlr-export-dmabuf protocol (KDE Plasma incompatible)
  2. PipeWire capture: XDG portal permissions blocked in sandbox
  3. KMS capture: Cannot apply setcap to sandboxed binaries

Solution: Use native DNF installation instead.


Goal

Enable low-latency 60FPS game streaming from Nobara Linux (AMD GPU) to MacBook and Android devices, using Tailscale for optimal network pathing.


Architecture Overview

                    ┌─────────────────────────────────┐
                    │  Tailscale Mesh Network         │
                    │  (Encrypted, P2P when possible) │
                    └─────────────────┬───────────────┘
                                      │
         ┌────────────────────────────┼────────────────────────────┐
         │                            │                            │
         ▼                            ▼                            ▼
┌─────────────────┐        ┌─────────────────┐        ┌─────────────────┐
│ Nobara Gaming PC│        │ MacBook         │        │ Android Device  │
│ xtrm-pc         │        │ Moonlight Client│        │ Moonlight Client│
│ 100.98.57.73    │        │ 100.68.118.59   │        │                 │
│ AMD RX 6600     │        │                 │        │                 │
└─────────────────┘        └─────────────────┘        └─────────────────┘

Step 1: Remove Flatpak (if installed)

flatpak remove dev.lizardbyte.app.Sunshine -y

Step 2: Install Native Sunshine

sudo dnf copr enable lizardbyte/stable -y
sudo dnf install sunshine -y

Step 3: Set KMS Capture Permission

sudo setcap cap_sys_admin+p $(readlink -f $(which sunshine))

Step 4: Enable Service

systemctl --user enable --now sunshine

Step 5: Configure Sunshine

  1. Open https://localhost:47990
  2. Set admin password
  3. Go to Configuration → Video:
    • Encoder: vaapi
    • Adapter: /dev/dri/renderD128

Moonlight Client Setup

MacBook

Moonlight already installed. Add PC:

  • Host: 100.98.57.73 (Tailscale IP)
  • Or hostname: xtrm-pc (if MagicDNS enabled)

Pairing

  1. Open Moonlight, add xtrm-pc
  2. Enter 4-digit PIN shown in Moonlight
  3. Input PIN in Sunshine Web UI → PIN Pairing

VA-API Verification Output

vainfo: VA-API version: 1.22 (libva 2.22.0)
vainfo: Driver version: Mesa Gallium driver 25.3.2 for AMD Radeon RX 6600M
vainfo: Supported profile and entrypoints
      VAProfileH264ConstrainedBaseline: VAEntrypointEncSlice
      VAProfileH264Main               : VAEntrypointEncSlice
      VAProfileH264High               : VAEntrypointEncSlice
      VAProfileHEVCMain               : VAEntrypointEncSlice
      VAProfileHEVCMain10             : VAEntrypointEncSlice

Firewall Configuration (Optional)

Restrict Sunshine to Tailscale network only:

sudo firewall-cmd --permanent --zone=trusted --add-source=100.64.0.0/10
sudo firewall-cmd --permanent --zone=trusted --add-port=47984-48010/tcp
sudo firewall-cmd --permanent --zone=trusted --add-port=47998-48010/udp
sudo firewall-cmd --permanent --zone=trusted --add-port=47989-47990/tcp
sudo firewall-cmd --reload

Streaming Settings

Setting LAN Value Remote Value
Bitrate 50-80 Mbps 20-40 Mbps
FPS 60-120 60
Resolution Native 1080p
Codec HEVC HEVC

Verification Checklist

  • Tailscale running on Nobara: 100.98.57.73
  • VA-API encoding verified: H.264 + HEVC
  • Sunshine installed (native)
  • KMS capture working
  • Sunshine Web UI accessible
  • Moonlight paired
  • Desktop streaming works
  • Game streaming at 60 FPS

Troubleshooting

Encoder Fails

# Verify VA-API
vainfo

# Check Sunshine logs
journalctl --user -u sunshine -f

Connection Issues

# Check Tailscale connectivity
tailscale ping kaloyans-macbook-air

# Verify ports
ss -tlnp | grep sunshine