Setup
Four doors,
the same five minutes.
Siparu is a Signal K plugin. If your boat already runs Signal K it is one click in her AppStore and you are done. If she does not, you are putting Signal K on something first, and these are the three boxes boats end up on. Every door leads to the same five minutes at the end of this page. If you do not yet know which door is yours, or whether she needs a gateway first, start with Will it work on my boat?
Last checked 7 October 2026 against signalk-server 2.33.0
A. She already runs Signal K
Nothing to install on the machine itself. Siparu is pure JavaScript with no native modules, so it goes in from the AppStore the way any plugin does and there is nothing to compile.
- Open the Signal K admin on the boat, http://<boat-ip>:3000, and sign in if it asks. The address is the computer's on her network: your router's device list has it, a Pi also answers at <hostname>.local, and hostname -I prints it on the Pi itself.
- Apps & Plugins → Store. Search Siparu and press Install.
- Restart, in the top bar of the admin page. A minute or two.
- Webapps → Siparu. The dashboard is already reading her bridge, on the boat, over her own wifi. No account, no internet, nothing to pay.
- Security → Users. Signal K ships with its security switched off. Add an admin user before you pair: with security off, anyone on the boat's network can read her history, and Siparu keeps pairing and log edits locked until you close it. Two things follow. From now on every screen aboard signs in to Signal K before Siparu opens. On Signal K 2.31 and newer with Siparu 0.2.19 or later, any account you add there will do, a read-only one for the crew included; on an older server Signal K hands a plugin's pages only to admins, so a read-only user sees "Sign-in required" and no further. And under Security → Settings, Allow Readonly Access lets anyone on the network read Signal K's own live feed without signing in; on a shared marina or crew network, leave it off.
- To watch her from ashore, open Remote in Siparu and press Turn on. Type the code it shows into the iPhone app, or into siparu.app/app in any browser, and approve it on the boat's own screen.
Siparu runs on Signal K 2.18 and newer, on Node 20 and newer. That is the floor it supports, not what you should install today: a fresh Signal K asks for Node 22.
B. Raspberry Pi
The box most boats end up on. A Pi 3B+ or newer, 64-bit Raspberry Pi OS, and Lite is enough: Signal K has no use for a desktop. Give her a wired connection to the boat's network if you can, and a proper power supply. A Pi that browns out mid-write is the one fault that costs you a day of history.
The card first, and this is where a laptop comes in. Raspberry Pi Imager, on the laptop, writes Raspberry Pi OS Lite (64-bit) to the card, and its Customisation tab is where she gets a hostname, a user and password, the boat's wifi, and SSH switched on under Remote Access. Boot the Pi from the card, then from the laptop:
ssh <user>@<hostname>.local
The laptop is needed for this and for the commands below, once. It does not stay aboard, and when you are done Signal K's admin page is at http://<hostname>.local:3000, or at the Pi's address in your router's device list.
Node next. The version in Raspberry Pi OS is older than Signal K accepts, so take it from NodeSource:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - sudo apt install -y nodejs node -v
Then Signal K itself:
sudo npm install -g signalk-server sudo signalk-server-setup
The setup tool asks for a folder, a vessel name, an MMSI, whether to use port 80 and whether to turn SSL on, and that is all it asks. Its last two questions default to no, which is the answer you want: that is what leaves her admin page on port 3000 without SSL. When it is run with sudo it also writes a systemd service, which is what makes her come back on her own after a power cut; systemctl is-enabled signalk should answer enabled. It never asks where her instruments are, and until you tell it, Signal K starts with no data source and the dashboard reads "No instruments reporting". That step is below, and it takes two minutes.
One folder is worth a copy once she is paired: ~/.signalk/plugin-config-data/siparu/. It holds her key file and her link to Siparu beside her history, and a card that dies takes it with it. Copy it to the laptop now and then; restoring it onto a fresh card brings her back as the same boat.
Then follow door A.
C. Mac mini
Plenty of boats already have one in the saloon running the AV, and it makes a good enough Signal K box. The install is the same as a Pi's, with one difference worth knowing before you start: nothing here makes her come back after a reboot on its own.
Node 22 or newer, from nodejs.org or from Homebrew:
brew install node@22 node -v
Then the server:
sudo npm install -g signalk-server sudo signalk-server-setup
The setup tool writes her settings and then quietly skips the part that matters most on a boat. It only knows how to install a systemd service, macOS has none, and it says nothing when it steps over that step. It does not ask where her instruments are either; that step is below, the same on a Mac as on a Pi. Start her by hand to check the install:
signalk-server
To have her start on her own, write a launch daemon at /Library/LaunchDaemons/app.siparu.signalk.plist. Check where the binary actually landed first, because the answer differs between an Apple silicon Mac and an Intel one:
which signalk-server # /opt/homebrew/bin/signalk-server (Apple silicon) # /usr/local/bin/signalk-server (Intel)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>app.siparu.signalk</string>
<key>ProgramArguments</key> <array>
<string>/opt/homebrew/bin/signalk-server</string>
</array>
<key>UserName</key> <string>YOUR-USER</string>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
</dict>
</plist>
sudo chown root:wheel /Library/LaunchDaemons/app.siparu.signalk.plist sudo launchctl load -w /Library/LaunchDaemons/app.siparu.signalk.plist
Two settings left, and both are about a machine that is meant to be unattended. A Mac that goes to sleep records nothing, and a Mac that stays off after a power cut records nothing either:
sudo pmset -a sleep 0 disksleep 0 sudo pmset -a autorestart 1
Then follow door A.
D. Victron Cerbo GX
Venus OS Large carries Signal K already, so there is nothing to install on the Cerbo beyond the right image. Siparu builds nothing native, and that is what lets it install on a Cerbo at all: a plugin that needs a compiler does not go on one. The same door serves every GX that runs the Large image: Cerbo GX, Cerbo-S GX, Ekrano GX, Venus GX, Octo GX, and the MultiPlus-II GX and EasySolar-II GX. The older Color Control GX and the CanVU GX cannot run it; a boat with one of those is a Pi away, door B.
- Settings → General → Firmware → Online updates. Set Image type to Large, then check for updates and install.
- Settings → General → Access & Security → Access level. Set it to User & installer. The password is ZZZ unless your dealer changed it. Switching Signal K on needs this level.
- Settings → Integrations → Venus OS Large Features → Signal K. Switch it on. On older firmware the same switch sits under Settings → Venus OS Large features.
- Open the Signal K admin at http://<cerbo-ip>:3000. Node and Signal K came with the image, so the npm steps in doors B and C do not apply here.
- Then follow door A.
Two GX things worth knowing. Victron's own warning: running Signal K and Node-RED at the same time can overload a GX device and make it unstable. A Cerbo handles it better than the older Venus GX, but if you already lean on Node-RED, watch the load before you add anything else. And her raw history goes on the GX data partition, 500 MB at most by default and pruned oldest hour first; a full data partition is a fault we have seen on a GX, so if other things share it, lower History storage limit (MB) in the plugin's settings.
Tell Signal K where her instruments are
Signal K reads what it is pointed at, and a fresh install is pointed at nothing. Doors B and C need this step; a Cerbo comes with its own connections, and a boat that already runs Signal K most likely has one already. Her dashboard settles it either way: if it reads "No instruments reporting", she has not. In the admin page: Data → Connections, then Add. The form wants three things: what kind of data, how it arrives, and where.
- NMEA 2000 through a USB gateway, an Actisense NGT-1 or the like. Data Type NMEA 2000, source Actisense NGT-1 (canboatjs), and the serial port the gateway appeared as; Signal K lists the ports it can see, usually /dev/ttyUSB0 on a Pi.
- NMEA 2000 through a network gateway, a Yacht Devices YDWG-02 or YDEN-02. Data Type NMEA 2000, source Yacht Devices RAW TCP (canboatjs), then the gateway's address on the boat's network and the port of the server you set to RAW in the gateway's own web page; from the factory its first server speaks NMEA 0183, not RAW.
- NMEA 0183 through a USB adapter. Data Type NMEA 0183, source Serial, the adapter's port, and a baud rate of 4800, or 38400 if an AIS receiver shares the line.
- NMEA 0183 over the boat's wifi, from a plotter that broadcasts it. Data Type NMEA 0183, source TCP Client or UDP as the plotter's manual says, and the plotter's address and port.
Save, restart the server, and Data → Browser in the admin page fills with paths within a minute. If it stays empty, nothing is arriving at Signal K yet: check the port, the baud rate, that the gateway's own light says it sees the bus, and that something on the bus is switched on.
Then the same five minutes
Whichever door you came through, the rest is identical, and none of it hands anyone a password, a network, or a device.
- Install from the AppStore. One click in Signal K.
- Restart the server. A minute or two.
- Open the dashboard. It is already running, on the boat, over her own wifi, at http://<boat-ip>:3000/signalk-siparu/.
- Open a free account at siparu.app/app, or sign in to the iPhone app with one. The code is claimed into an account, so this comes first.
- Claim from your phone or browser. Type the code her screen is showing.
- Approve on board. One tap on the boat's screen, and she is live ashore. The dashboard aboard stays free; watching her from ashore is a membership, €360 a year for one boat, and the pricing is on the home page.
- Add a second screen while you are at it. A phone or a tablet: sign in on it, and it appears under Screens on her page ashore. A browser needs one press more, Authorise on her Remote page, before it joins the list. Either way, approve it from the screen you already hold, and she starts sealing to it within five minutes. Do this now rather than later: a new screen is approved by one you already have, and if the only one you have is lost, the way back is to pair again at the boat.
When it does not go
- Siparu is not in the Store list. The list is cached. Restart the server, then look again in Apps & Plugins → Store with the filter on All rather than Installed.
- It installs but the webapp is not there. Signal K mounts webapps by package name: the address is /signalk-siparu/, not /siparu/.
- The dashboard is up but empty. Siparu reads what Signal K reports, so if Signal K itself has no data source connected, there is nothing to show yet. The data connection step is the fix, and the setup tool does not do it for you.
- The dashboard reads "No instruments reporting". Three causes, in the order to check them: Signal K has no data connection yet (the step above); the connection is there but nothing on the bus is switched on, which is the normal reading alongside with the panel off; or the connection is wrong, a port or a baud rate, and Data → Browser stays empty with the instruments on.
- Her engines do not show. The engines on many boats speak their own language and are not on the instrument network at all, so the Engine tab does not appear: Siparu shows the bridge in full and the engines not at all, and that is the boat, not the software. A second small gateway fixes it if you want it fixed; write to us before buying one.
- npm complains about the Node version. The current Signal K server asks for Node 22 or newer. Siparu itself runs on 20, but the server under it does not.
- Pairing is refused. The Remote tab says why, in one of these sentences:
- Signal K security is off, so Siparu will not pair, unpair or edit the log. Add an admin user under Security → Users, or, on a boat whose network you mean to leave open, accept the open-network risk in the plugin's settings.
- Cannot reach Siparu. Check the boat is online (DNS, port 443, captive portal). Her uplink, not her pairing: a marina wifi that wants a sign-in page, or no internet at all.
- Too many pairing attempts from this network. Wait an hour and try again. Counted per address, and on Starlink or marina wifi she shares hers with everyone behind it.
- The code expired. Nothing was linked. A code lives an hour. Press New code.
- That account does not own this boat. She is still linked as before. She is already paired to another account; unpair her there first, or sign in to that one.
- That account already holds as many boats as its plan allows. Make room in that account, then pair again.
- Siparu already holds different keys for this boat. Unlink her and pair again. The one case where unlinking first is the right move: a reinstall that lost her key file, so the keys ashore and aboard no longer match.
- She says "Siparu no longer recognises this boat. Pair her again." Do exactly that, from the Remote tab, with Pair again. Do not press Turn off first: unlinking throws away the proof that she is this boat, and the account ends up with a dead duplicate of her. Pairing again keeps her history and her account as they are.
- She says "Another copy of this boat is connected to Siparu." Two installs carry her identity: the old box is still on, or a card you restored is running beside the one it was copied from. Switch one off. The other reconnects on its own.
- She went quiet after a network change. Three things break when the marina or the router changes. The Pi has to join the new wifi. A gateway reached over the network keeps its old address, so the data connection in Signal K points at nothing; Data → Connections is where to put the new one. And a marina wifi that wants a sign-in page every day holds her offline until somebody aboard signs in; the Remote tab then reads Cannot reach Siparu. Is the boat online?
- The dashboard says "Not recording her history". The disk refused the last row, and the sentence names why: the data partition is full, the card is mounted read-only after an I/O error, or the user the plugin runs as cannot write there. She retries on every frame and the notice clears the moment one lands; until then the logbook has a hole. A full disk is the common one on a GX; see door D.
- She says "The key file on this boat cannot be read." Restore keys.json from your copy of ~/.signalk/plugin-config-data/siparu/, or unlink her and pair again, which issues new keys and asks each of your screens to be approved again.
- She recorded a passage wrong. Two stops that were one passage are joined from the Voyage tab aboard, by hand, and separated again the same way; there is no splitting and no editing of times. It is done on the boat only: the shore can read her log and cannot change a line of it, which is the point.
Still stuck: write to us. A person answers, and an install that will not go is exactly the kind of thing worth writing about.