Startup Configuration

The majority of your interaction with Norsk is through the SDK / gRPC API, where you create and configure your media nodes. There are however a small number of configuration parameters that are fixed for the lifespan of the container and are setup through a json configuration file. This file is supplied to norsk in much the same way as the license file, so for example:

docker run \
  --mount type=bind,source=/home/user/norskConfig,target=/mnt/config,readonly \
  norskvideo/norsk:latest \
  --license-file /mnt/config/license.json \
  --startup-config-file /mnt/config/startup.json

where your norskConfig folder contains both your license and your startup configuration. The configuration file itself is json structured as follows:

{ "media":
    { "publicWeb":
        { "ip": "0.0.0.0"
        , "port": 8080
        }
    , "supportWeb":
        { "ip": "0.0.0.0"
        , "port": 6791
        }
    , "serviceHost":
        { "ip": "127.0.0.1"
        , "port": 6790
        }
    , "browserIngestConfig":
        { "additionalArgs": []
        }
    }
}

with the following meanings:

  • media.publicWeb.ip: The IP Address that the public web interface binds to. The public web interface hosts URLs that you would typically expect to publish externally, such as HLS playlists and CMAF segments. Individual media nodes document the URLs that they expose.

  • media.publicWeb.port: The port that the public web interface binds to.

  • media.supportWeb.ip: The IP Address that the support web interface binds to. The support web interface hosts URLs that would typically be kept internal, such as the Visualiser and Prometheus metrics endpoints.

  • media.supportWeb.port: The port that the support web interface binds to.

  • media.serviceHost.ip: The IP Address that the gRPC Service interface binds to. It is strongly encouraged to not change this from the default of 127.0.0.1, since running client code on a remote machine from the docker container is not a supported configuration. However, it may be useful in local development if, for example, a team is accessing a shared host but wish to keep their javascript edits and runs local.

  • media.serviceHost.port: The port that the gRPC Service interface binds to.

  • media.browserIngestConfig.additionalArgs: An array of strings of chromium statup flags, for example to enable features currently in development (e.g. "--canvas-2d-layers").

The values shown in the above json are the defaults; you only need to provide json to override the value(s) that you wish to change - for example, this would be a perfectly valid startup configuration file:

{ "media": { "browserIngestConfig": { "additionalArgs": ["--canvas-2d-layers"] } } }