Skip to content

Configuration

norsk-ctl keeps its state in ~/.norsk-ctl/. Two files live there: a daemon config (config.yaml) that the server reads at boot, and a state database (norsk-ctl.db) that holds running instance and plugin state.

FileWho writes itPurpose
~/.norsk-ctl/config.yamlnorsk-ctl init (server side)Daemon settings — network mode, license, image tags, TLS
~/.norsk-ctl/norsk-ctl.dbThe daemonSQLite state (plugins, instances). Do not edit by hand

Written by norsk-ctl init and read by the daemon at startup. Example:

~/.norsk-ctl/config.yaml
networkMode: docker
licenseMode: byol
licenseFile: /Users/alice/licenses/norsk.json
defaultStudioTag: 1.27.0
defaultMediaTag: 1.0.402
defaultWorkingDirectory: /Users/alice/norsk-data
securityMode: tls
certPath: /etc/norsk-ctl/tls/cert.pem
keyPath: /etc/norsk-ctl/tls/key.pem
certSource: user
FieldValuesDescription
networkModedocker | host | hybridHow containers are networked. See Network Modes
licenseModebyol | marketplaceWhere the license comes from
licenseFilepathRequired when licenseMode: byol. Path to the Norsk license JSON
marketplaceProvidergcp | awsRequired when licenseMode: marketplace
defaultStudioTagimage tagDefault Studio container tag (overridable per launch)
defaultMediaTagimage tagDefault Media container tag (overridable per launch)
defaultWorkingDirectorypathDefault host directory mounted as /data in instance containers
hostIpIPHost IP advertised to clients (derived from externalUrl if unset)
externalUrlURLPublic URL where the proxy is reachable (e.g. https://norsk.example.com)
examplesDirectorypathOverride for the seed-examples source tree
containerUseruid:gidUser/group containers run as (auto-detected on Linux)
proxyHeaderheader nameCustom header injected into proxy requests
certPathpathTLS certificate file (when securityMode: tls)
keyPathpathTLS key file (when securityMode: tls)
certSourcemkcert | user | certbotHow the cert was provisioned (affects renewal behaviour)
securityModetls | insecuretls → HTTPS via nginx; insecure → HTTP only
runModestandard | demodemo is set by norsk-ctl demo and enables the demo banner in the UI

The CLI always talks to a daemon on the same machine. Default port is 8333. Override with --port <n> per-invocation, or set NORSK_CTL_PORT in the environment (honoured by both the daemon and the CLI).

Remote management happens through the web UI (behind the nginx + oauth2-proxy front door), not the CLI.

SQLite file holding plugin enabled/disabled state, launched instance metadata, and other daemon-managed state. Managed entirely by the daemon — do not edit by hand.

If you want to start fresh, stop the daemon and delete ~/.norsk-ctl/ (or just norsk-ctl.db to keep your config). norsk-ctl init --force does the same plus resets the config.