June 23, 2025

Signal K quick install, Raspberry Pi, Ubuntu

Updated 2025-06-23 !

I have got some questions installing, just, Signal K(SK) so will do a summary with links.

Signal K is the hub to receive data, from different devices in different data formats, and send it on to different equipment, or databases, in different formats. Most common for standard marine equipment are the old NMEA 0183 and the newer NMEA 2000 protocol which is also handled. 

Besides the SK "hub" function developers have created plugins for different purposes. This is due to that SK is open-source ! Sharing is caring !

In this post you can check the devices I'm using connected to the SK server and also my setup.

Intro
OS
The installation is valid for both Raspberry Pi OS(ROS) and Ubuntu(UOS). Since SK have its own interface, via a built in WEB-server, you can use the ROS Lite version or the UOS Server lite version(Without GUI) which will minimize the installation.

OpenCPN and OpenPlotter 
If you want an advanced open-Source navigation application please check OpenCPN(OC).

So why mention OC when this post concerns SK ?

It could be that the best solution for you is to use both SK and OC. Check this post where another software package, OpenPlotter, is doing the total installation of both.

SK install
There is a good SK installation instruction, for RPi, but will do a compact one here, where ju start with a  update

sudo apt update && sudo apt full-upgrade -y && sudo apt clean

Via ssh/terminal install Node.js(V22 LTS) and NPM 

curl -fsSL https://deb.nodesource.com/setup_22.x -o nodesource_setup.sh
sudo -E bash nodesource_setup.sh
sudo apt-get install -y nodejs
sudo npm install -g npm@latest

and check the install with

node -v && npm -v

Install Bonjour (mDNS)

sudo apt install libnss-mdns avahi-utils libavahi-compat-libdnssd-dev

Install the SK server with 

sudo npm install -g signalk-server


(There could be some warnings but it's OK)

Testing
Test the server with a sample logfile


signalk-server --sample-nmea0183-data

In a WEB browser check with, (If You are using another Hostname, change)


http://raspberrypi:3000/

and the SK dashboard will show. In the upper left corner click on "Webapps => @signalk/freeboard-sk", (FSK) and a world map will open with a boat symbol in the south of Finland. Zoom in and watch the boat approaching Österby.

Setup
Terminate the SK server with "Ctrl + C" and run the SK server setup

sudo signalk-server-setup

Check setup dialog below.
(Don't use SSL to keep it simple.)

Configuration and use
In this link you can learn more.

Updating installation
In this link you can learn more.

Offline charts
The charts that are displayed are online charts and if you use the application offline you can download offline charts.

Signal K FAQ
Really usable info is found here !

Migrate a Signal K server
This method was used to migrate a SK server, Raspberry pi, from Bullseye, Node 16 to Bookworm Node 20.  On the source SK server update the server and all plugins. The following objects are needed on the target SK server

  • $HOME/.signalk/package.json, file
  • $HOME/.signalk/settings.json, file
  • $HOME/.signalk/plugin-config-data, directory

Create a target server installing Signal K, logon and then remove/rename

  • $HOME/.signalk/node_modules (Will disable the installed plugins)
  • $HOME/.signalk/settings.json (SK server settings)
  • $HOME/.signalk/package.json (Node.js metadata)

Restore the files settings.json and package.json, from the source server, to target server in folder $HOME/.signalk/

In $HOME/.signalk/ run npm install which will install all the plugins listed in package.json

Remove/rename $HOME/.signalk/plugin-config-data (Plugin settings)

Restore the plugin-config-data folder, from the source server, to target server in folder $HOME/.signalk/

Restart the SK target server and check the result.

A nice way to copy data from one server to another is using command scp which demands that ssh is activated on both SK servers. So for example use below command copying the folder plugin-config-data.

pi@source:~/.signalk $ scp -r plugin-config-data pi@target.local:

Remark
And don't forget to check out the embedded NodeRed(NR) plugin that will handle "any" input to be used with SK and forwarded to your NMEA devices (With appropriate hardware). NR should be installed via SK app store.

Enjoy !

Setup dialog (sudo signalk-server-setup)

  ____    _                           _     _  __

 / ___|  (_)   __ _   _ __     __ _  | |   | |/ /

 \___ \  | |  / _` | | '_ \   / _` | | |   | ' / 

  ___) | | | | (_| | | | | | | (_| | | |   | . \ 

 |____/  |_|  \__, | |_| |_|  \__,_| |_|   |_|\_\

              |___/                              


YOU ARE LOGGED IN AS pi AND THE SERVER WILL BE STARTED AS THIS USER


? Enter the location to store server configuration: /home/pi/.signalk

? Enter your vessel name: Zest

? Enter your mmsi if you have one: 


The Signal K default port is 3000

Port 80 does not require ":3000" in the browser and app interfaces


? Do you want to use port 80? No

? Do you want to enable SSL? No

  Creating your server base deltas at /home/pi/.signalk/baseDeltas.json

  Creating your server settings at /home/pi/.signalk/settings.json

  Creating package.json

  Creating your server startup script at /home/pi/.signalk/signalk-server

  Updating file ownership and permissions

  Setting up your server to start Signal K when booting up 

  Running 'systemctl daemon-reload'

  Running 'systemctl enable signalk.service'

  Running 'systemctl enable signalk.socket'

  Running 'systemctl stop signalk.service'

  Running 'systemctl restart signalk.socket'

  Running 'systemctl restart signalk.service'


No comments:

Post a Comment

Feel free to leave a comment ! ... but due to a lot of spam comments I have to moderate them. Will reply ASAP !