Getting Started

Sofie Core is the server and web UI of the Sofie TV Studio Automation System, used for live TV news production by NRK since 2018. It provides the rundown/producer UI, the studio and show-style configuration, and the DDP endpoint that Sofie gateways (playout, MOS, live status) connect to. Available as an open web service in Eyevinn Open Source Cloud.

This OSC service is Sofie Core only (server, web UI and the in-process job worker). The gateways (playout, MOS, etc.) are not included. They run next to your studio hardware and connect to this instance. Sofie Core on OSC uses FerretDB instead of MongoDB.

Prerequisites

  • If you have not already done so, sign up for an Eyevinn OSC account
  • A running FerretDB instance in OSC and its connection string

Step 1: Create a FerretDB instance

Create a FerretDB instance by following the FerretDB getting started guide and wait until it is running. Copy its connection string, which has the form mongodb://<user>:<password>@<host>:27017.

Step 2: Store the database URL as a secret

Navigate to the Sofie Core service and go to the "Service Secrets" tab. Create a secret:

  • sofiedburl: the FerretDB connection string from Step 1

Step 3: Create the Sofie Core instance

On the Sofie Core service page, create a new instance and fill in:

Field Description
Name Unique instance name
DatabaseUrl {{secrets.sofiedburl}}

The other fields in the Configuration table are optional. The instance gets a persistent volume at /data.

Step 4: Open the UI

Open the instance URL shown on the instance card. The Sofie web UI loads and the first start creates the database structure automatically. Follow the Sofie documentation to install blueprints and configure a studio.

Step 5: Connect gateways

Point a Sofie gateway (for example playout-gateway) at the instance URL on port 443 using the Sofie gateway --host and --port options, with --port 443 and TLS as described in the gateway documentation.

Configuration

Setting Description Example
Name Unique instance name mystudio
DatabaseUrl (required) FerretDB connection string. A database name (sofie) is appended if the URL has none {{secrets.sofiedburl}}
DatabaseName Database to use when the URL has none sofie
DbPollIntervalMs How often changes are polled, in ms (default 2000, minimum 100) 2000
LogLevel Log verbosity info
EnableHeaderAuth / PermissionsHeader Header-based authentication when running behind an auth proxy false

Snapshots are stored on the persistent volume in /data/sofie-store.

Limitations

  • FerretDB has no change streams, so this service polls the database instead. Changes are picked up after at most one poll interval (2 seconds by default) instead of instantly, and each watched collection is re-read every interval. Raise DbPollIntervalMs for large databases.
  • Only a single Sofie Core instance should run against a database.
  • Sofie Core is only useful with blueprints and gateways attached.
  • The service has so far only been tested locally against FerretDB 2.7.0.

Resources