PRIVATE ALPHA

Start a node

Compose the smallest useful node: SRT push input with HLS and LL-HLS output.

1. Write JSONC

Save this as dispergo.jsonc. It enables one anonymous SRT listener for a trusted local network and two independent HTTP outputs.

{
  "server": {
    "operational": {"host": "0.0.0.0", "port": 9091}
  },
  "input": {
    "srt": {
      "push": {
        "enabled": true,
        "listener": {
          "host": "0.0.0.0",
          "port": 6001,
          "allowAnonymous": true
        }
      }
    }
  },
  "output": {
    "root": "/var/lib/dispergo",
    "lowWaterMarkBytes": 67108864,
    "http": {
      "listener": {"host": "0.0.0.0", "port": 8080},
      "hls": {"enabled": true},
      "llhls": {"enabled": true}
    }
  }
}

Anonymous SRT is explicit, not safe by default. Use a 10 to 80 byte passphrase instead of allowAnonymous outside a trusted or filtered network.

2. Run

IMAGE=ghcr.io/dispergo/server:vMAJOR.MINOR.PATCH
docker pull "$IMAGE"

docker run --rm --name dispergo \
  --read-only \
  -p 6001:6001/udp \
  -p 127.0.0.1:8080:8080/tcp \
  -p 127.0.0.1:9091:9091/tcp \
  --mount type=bind,src="$(pwd)/dispergo.jsonc",dst=/etc/dispergo/dispergo.jsonc,readonly \
  --tmpfs /var/lib/dispergo:rw,noexec,nosuid,size=1g,uid=65532,gid=65532,mode=0770 \
  "$IMAGE"

The container is non-root and reads its configuration from /etc/dispergo/dispergo.jsonc. The temporary output volume is only for this first run.

curl --fail http://127.0.0.1:9091/livez
curl --fail http://127.0.0.1:9091/readyz

3. Push media

The SRT streamid is the canonical stream ID. This command publishes a test stream named demo:

ffmpeg -re \
  -f lavfi -i 'testsrc2=size=1280x720:rate=25' \
  -f lavfi -i 'sine=frequency=1000:sample_rate=48000' \
  -c:v libx264 -preset veryfast -tune zerolatency \
  -g 50 -keyint_min 50 -sc_threshold 0 \
  -c:a aac -f mpegts \
  'srt://127.0.0.1:6001?mode=caller&streamid=demo'

4. Check output

GET :9091/api/v1/streams/demo
Input, tracks, health and enabled output state.
http://127.0.0.1:8080/hls/demo/master.m3u8
Traditional HLS multivariant playlist.
http://127.0.0.1:8080/llhls/demo/master.m3u8
Low-latency HLS multivariant playlist.