Skip to content
/ xg2g Public

HLS streaming gateway for Enigma2 receivers – Universal H.264/AAC delivery for modern clients

License

Notifications You must be signed in to change notification settings

ManuGH/xg2g

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

489 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

xg2g - Next Gen to Go

CI Go Report Card License

HLS streaming gateway for Enigma2 satellite/DVB-T2 receivers. Stream to Safari, iOS, Chrome, and any modern browser.

Why xg2g?

Your Problem xg2g Solution
Enigma2 MPEG-TS doesn't work in Safari/iOS ✅ Universal H.264/AAC/HLS
Manual transcoding profiles per device ✅ Server-enforced policy
No observability in streaming stack ✅ Metrics, logs, health probes
Unstable DIY setups ✅ Production-tested builds

Quickstart

Prerequisites: Docker + Enigma2 receiver on your network

docker run -d --name xg2g --net=host \
  -e XG2G_OWI_BASE="http://192.168.1.10" \
  -e XG2G_API_TOKEN="$(openssl rand -hex 32)" \
  -e XG2G_API_TOKEN_SCOPES="v3:admin" \
  ghcr.io/manugh/xg2g:3.1.7

Open http://localhost:8088/ui/

Next steps: ConfigurationArchitectureADRs

Features

  • 🎯 Universal Delivery: H.264/AAC/fMP4 for all devices
  • 📊 Observability: Prometheus, OpenTelemetry, structured logs
  • 🔒 Security: Fail-closed auth, scope enforcement
  • Quality: CI gates, contract tests, smoke tests

The Universal Policy

xg2g enforces a strict Universal Delivery Policy:

Component Specification
Video H.264 (AVC)
Audio AAC
Container fMP4 (Fragmented MP4)
Protocol HLS

Tier-1 compliant with Apple HLS Guidelines.

Non-Goals:

  • ❌ HEVC by default (compatibility first)
  • ❌ UI transcoding controls (fixed server policy)
  • ❌ Browser workarounds (Safari is the reference)
  • ❌ Direct copy (always remux to guarantee container)

Status

Component Status Guarantee
API Stable (v3) SemVer
WebUI Stable Thin Client
Streaming Production Universal Policy

Documentation

FFmpeg

xg2g requires FFmpeg for media processing. Docker images include a pinned FFmpeg build (7.1.3) - no manual configuration needed.

For local development: make setup builds FFmpeg to /opt/xg2g/ffmpeg (Linux) or your custom prefix. See FFmpeg Build Guide for details.

To use your local build:

export XG2G_FFMPEG_BIN="/opt/xg2g/ffmpeg/bin/ffmpeg"
export LD_LIBRARY_PATH="/opt/xg2g/ffmpeg/lib"

Offline Testing

This repository supports deterministic offline testing (air-gap capable).

See: OFFLINE_TEST.md

Quick check:

export GOTOOLCHAIN=local
export GOPROXY=off GOSUMDB=off GOVCS="*:off"
make quality-gates-offline

License

PolyForm Noncommercial 1.0.0

  • ✅ Free for personal, homelab, and educational use
  • ❌ Commercial use requires permission

About

HLS streaming gateway for Enigma2 receivers – Universal H.264/AAC delivery for modern clients

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Sponsor this project

Packages

 
 
 

Contributors 3

  •  
  •  
  •