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
DbPollIntervalMsfor 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.