Signal K quick install, Raspberry Pi, Proxmox, Ubuntu, Debian

Updated 2026-08-06 !

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
Since SK have its own interface, via the built in WEB-server, you can use the OS:s without GUI which will minimize the installation and the OS update procedure.

SK install
If you are using Debian check out "Debian fix" below. (Also valid for a Debian Proxmox LXC)

There is a good SK installation instruction for RPi but will do a compact one here(also working for Ubuntu, Debian) where ju start, logged on as the SK user, via ssh/terminal doing an update

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

install Node.js(V24 LTS) and NPM 
(Use the same commands for update to a new Node.js version !)

curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash -

sudo apt 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 => 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 !

Debian "fix"
To make setup script "signalk-server-setup" it wilneed some special handling which could be...., as root,  install with "apt update && apt install curl sudo", "adduser signalk". With "visudo" add "signalk ALL=(ALL:ALL) ALL" just below "root ALL=(ALL:ALL) ALL" which will make that you don't have to use a password. Then log in a terminal session with user "signalk" and go on as above.

Proxmox and serial devices
In Proxmox I created a Debian 13 container, LXC, and installed SK according to the info above. It worked fine but will add some notes regarding "Device Passthrough" for an Actisense NGT-1(AN), but it could be any serial device.

In this case on the CT/Guest run "getent group dialout" to confirm that 20 is the GID
and then add the SK user, "signalk", to the group "sudo usermod -aG dialout signalk"

On the Node/Host retrieve the path to AN with "ls -l /dev/serial/by-id/"

In the Proxmox GUI at the CT/Guest "Add => Device Passthrough"

Device Path: /dev/serial/by-id/usb-Actisense_NGT-1-A_1F30F-if00-port0

GID in CT: 20 


In SK setup the connection "Data => Connections => Add"

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? Yes

? 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'


Comments

Popular posts, last 30 days

iCloud drive sync, or mount, with a Linux, Ubuntu, device

Installing Ubuntu 24.04 or 26.04 on an old MacBook Air(2011)

NetworkManager UI and access point, hotspot

Home Assistant with VirtualBox or Proxmox or Linux KVM ???

Raspberry Pi OS Lite with GUI, RDP, VNC, Chromium

Understand/Install Openplotter/OpenCPN/SignalK, I

AIS receiver and dispatcher ! The best ?!

SeaTalk1 to NMEA 0183 converter, DIY

IVT, Bosch heat pump easy integration, Home Assistant