Registry / web-framework / signalk-server

signalk-server

JSON →
library2.25.0jsnpmunverified

Signal K Server is an open-source Node.js application that functions as a central data hub for marine electronics, implementing the Signal K standard for boats. It aggregates data from various sources such as NMEA 0183, NMEA 2000, and SeaTalk, then makes this information available to other applications and devices via WebSockets and HTTP APIs. Currently at stable version 2.25.0, the project maintains an active release cadence with frequent minor and patch updates, often including beta versions, addressing features, fixes, and performance improvements. Key differentiators include its role as a vendor-agnostic data standard implementer, its extensibility through a robust plugin architecture, and its ability to run efficiently on embedded hardware like Raspberry Pis and Victron Cerbo GX devices. It enables a wide range of functionalities such as serving as a wireless AIS and navigation hub for popular marine apps, providing anchor watches, functioning as a weather station, and generating automatic logbooks.

npm install signalk-server
INSTALL
IMPORT
SIG · SIGNALK-SERVER
S
signalk-server
web-frameworkjavascriptv2.25.0
Install
—
Import
—
Disk
—
Pass rate
0/ 6
Env Coverage0 / 6
glibc
18–22
musl
18–22
Install & Compatibility
Where this runs
tested against v? · npm install
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
node 18–226 runs
build_error
glibc
node 18–226 runs
build_error
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

start
✓ import { start } from 'signalk-server'
✗ const start = require('signalk-server').start
The primary programmatic entry point to initiate the Signal K server process. It accepts a configuration object.
stop
✓ import { stop } from 'signalk-server'
✗ const stop = require('signalk-server').stop
Used for gracefully shutting down a programmatically started Signal K server instance. Takes the server instance returned by `start`.
Server
✓ import { Server } from 'signalk-server/lib/server'
✗ import { App } from 'signalk-server'
The core server class. Primarily for advanced embedding or testing purposes, typically not needed for standard server operation. The import path is internal and subject to change across versions.

Demonstrates how to programmatically start and stop a Signal K server instance with a basic configuration, listening on a specified port. This is useful for embedding or testing.

import { start, stop } from 'signalk-server'; import path from 'path'; import { fileURLToPath } = from 'url'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); async function runSignalKServer() { const serverConfig = { port: 3000, // For a minimal example, the server will use its default paths for plugins, webapps, etc. // In a production application or custom setup, you might specify: // configPath: path.join(__dirname, 'my-config'), // pluginsPath: path.join(__dirname, 'my-plugins'), // security: { strategy: 'none' } // Use with caution; disables security for development }; console.log(`Attempting to start Signal K server on port ${serverConfig.port}...`); let serverInstance; try { // The start function returns a server object which contains the express app and other components serverInstance = await start(serverConfig); console.log(`Signal K Server is running on http://localhost:${serverConfig.port}`); console.log(`Admin UI available at http://localhost:${serverConfig.port}/admin`); console.log('Press Ctrl+C to stop the server.'); // Keep the process alive until SIGINT (Ctrl+C) is received process.on('SIGINT', async () => { console.log('\nReceived SIGINT. Shutting down Signal K server...'); if (serverInstance) { await stop(serverInstance); console.log('Signal K server has been stopped.'); } process.exit(0); }); } catch (error) { console.error('Failed to start Signal K server:', error.message); if (error.code === 'EADDRINUSE') { console.error(`Port ${serverConfig.port} is already in use. Please choose another port or stop the conflicting process.`); } process.exit(1); } } runSignalKServer();
signalk-server --version
Debug
Known issues
breakingNode.js Version Update: Signal K Server now requires Node.js 22 or higher, with version 2.24.0 updating the default to Node.js 24. Older Node.js environments will fail to run the server.
fix
Upgrade your Node.js environment to version 24 (LTS recommended) using `nvm install 24 && nvm use 24` or your preferred Node.js version manager.
affects: >=2.22.0
breakingSecurity Defaults Changes: Version 2.24.0 changed the default `allow_readonly` to `false` when security is enabled, potentially restricting read access for previously unauthenticated clients. Version 2.25.0 introduced `DISABLE_SECURITY_ACTIVATION` for specific overrides, and WebSocket provider connections to secured remote servers now require authentication.
fix
Review your server's security configuration, adjust `allow_readonly` setting, or configure authentication for remote WebSocket providers. Exercise caution if using `DISABLE_SECURITY_ACTIVATION` as it can weaken security.
affects: >=2.24.0
breakingRemoval of ARMv7 Container Images: Starting with version 2.22.0, official Docker container image support for `arm/v7` platforms has been dropped. Users deploying on older ARM-based devices (e.g., some Raspberry Pi models) will need to use older server versions or compile images themselves.
fix
Upgrade to `arm/v8` (64-bit ARM) hardware or use `signalk-server` versions prior to 2.22.0 if `arm/v7` compatibility is strictly required.
affects: >=2.22.0
gotchaAdmin UI Migration to React 19: The server's Admin UI was migrated to React 19 in v2.22.0, with naming changes completed in v2.24.0-beta.4. While offering new features and improvements, users may experience changes in the interface and potential incompatibilities with custom themes or very old browser versions.
fix
Clear browser cache if UI issues arise after an upgrade. Report any significant UI breakage or compatibility problems to the project maintainers.
affects: >=2.22.0
gotchaBacon.js Library Upgrade: An internal dependency, `baconjs`, was upgraded from v1.0.1 to v3.0 in version 2.24.0. While primarily an internal change, it could potentially affect custom plugins or advanced integrations that might have implicitly relied on older `baconjs` behaviors or type definitions.
fix
Plugin developers should verify compatibility of their plugins with the updated `baconjs` version if they directly or indirectly interact with its streams or related APIs. Update plugins to their latest compatible versions.
affects: >=2.24.0
Errors
Common errors & fixes
Error: The Signal K server requires Node.js version 22 or higher. You are running vX.Y.Z.
The installed Node.js version is older than the minimum required by `signalk-server`.
fix
Upgrade Node.js to version 24 (LTS recommended) using a tool like `nvm` (`nvm install 24 && nvm use 24`).
Error: listen EADDRINUSE: address already in use :::3000
The default port (3000) or a configured port is already being used by another application on your system.
fix
Stop the application currently occupying the port, or configure `signalk-server` to use a different port by modifying its `settings.json` or by passing a `port` option to the `start` function if used programmatically.
WebSocket connection failed: 401 Unauthorized (or 403 Forbidden) after server upgrade.
Security enhancements in `signalk-server` versions >=2.24.0, such as requiring authentication for WebSocket provider connections or setting `allow_readonly: false` by default when security is enabled.
fix
Configure proper authentication credentials for your WebSocket provider connections, or explicitly set `allow_readonly: true` in your server's security configuration if anonymous read access is intended (with awareness of security implications).
TypeError: baconStream.onValue is not a function (or similar Bacon.js related errors from a plugin).
An older plugin is incompatible with the `baconjs` v3 upgrade that occurred in `signalk-server` v2.24.0.
fix
Update the problematic plugin to its latest version, or check the plugin's documentation for compatibility with `signalk-server` versions >=2.24.0. If no update is available, consider reporting the issue to the plugin developer or temporarily downgrading `signalk-server`.
Upgrade
Version history
2.25.0latest on npm
Audit
Dependencies

No dependency data recorded yet.

Agent activity
9 hits · last 30 days
node
6
Bingbot
1
OpenAI (training)
1
Resources
signalk-server — npm install signalk-server · libregistry