Title: Boat Position
Author: Niels Olsen
Published: <strong>May 31, 2026</strong>
Last modified: May 31, 2026

---

Search plugins

![](https://ps.w.org/boat-position/assets/banner-772x250.png?rev=3555344)

![](https://ps.w.org/boat-position/assets/icon-256x256.png?rev=3555344)

# Boat Position

 By [Niels Olsen](https://profiles.wordpress.org/pcio/)

[Download](https://downloads.wordpress.org/plugin/boat-position.zip)

 * [Details](https://wordpress.org/plugins/boat-position/#description)
 * [Reviews](https://wordpress.org/plugins/boat-position/#reviews)
 *  [Installation](https://wordpress.org/plugins/boat-position/#installation)
 * [Development](https://wordpress.org/plugins/boat-position/#developers)

 [Support](https://wordpress.org/support/plugin/boat-position/)

## Description

Boat Position turns your WordPress site into a live tracking and logbook service
for your boat.

The plugin is designed around the Teltonika RUTX50 router (*), a compact Linux-based
5G router with built-in GPS.
 A shell script on the router sends a position to your
site every minute. The plugin stores each position, runs a state machine to group
positions into trips and legs, and serves two public pages:

 * **Live map** (`/boat-position/map`) — shows the current position on an OpenStreetMap/
   OpenSeaMap map with a rotating arrow icon when underway and an idle indicator
   when stopped.
 * **Logbook** (`/boat-position/history`) — calendar sidebar with trip history. 
   Click any day to see the full route on the map. Logged-in editors can label harbour
   names and merge incorrectly split trips.

Over 150 Danish harbours are included as seed data so harbour names are detected
automatically from GPS coordinates.

No third-party services or API keys are required beyond your own WordPress site.
Maps are rendered using the free Leaflet.js library with OpenStreetMap and OpenSeaMap
tiles.

(*) There are other alternatives to using the RTUTX50 router, any device that has
access to a GPS and the internet can be configured as the source of position data.

E.g. a linux machine like Rasberry PI connected to either its own GPS or the boat
NMEA data.

## Screenshots

 * [[
 * Live map — current boat position with directional arrow on OpenSeaMap.
 * [[
 * Logbook — calendar sidebar, trip list, and route drawn on the map.

## Installation

 1. Upload the `boat-position` directory to `/wp-content/plugins/`.
 2. Activate the plugin in **Plugins** in the WordPress admin.
 3. Go to **Settings  Boat Position** to set a secret API key and find the router configuration
    instructions.
 4. Follow the router setup guide in **Plugins  Boat Position  About** to configure
    your router’s `sendgps.sh` script and cron job.
 5. Send a test position from a command prompt to verify the endpoint is working before
    installing on the boat.

After activation, if `/boat-position/map` returns a 404, go to **Settings  Permalinks**
and click **Save Changes** to flush the rewrite rules.

## FAQ

### How do I use this plugin?

Install and activate the plugin, then go to **Settings  Boat Position**. Set a secret
API key, then follow the router configuration guide in the About page to set up 
your router’s cron job.

### Does it only work with the RUTX50 router?

No. Any device that can send an HTTP POST request with `lat`, `lon`, `speed`, `course`,
and `gps_time` fields to the REST endpoint will work. The About page documents the
exact format.

### Where are the public pages?

The plugin registers two pages automatically — no WordPress pages or shortcodes 
are needed:

 * Live map: `https://yoursite.com/boat-position/map`
 * Logbook: `https://yoursite.com/boat-position/history`

### Can I avoid storing the secret key in the database?

Yes. Define the key as a constant in `wp-config.php`:

define( ‘PCIO_BOAT_POSITION_API_KEY’, ‘your-secret-key-here’ );

When this constant is present, the database option is ignored and the settings field
is shown as read-only.

### The logbook is empty — no trips appear.

Check that the router is sending data by looking at your database’s `wp_boat_positions`
table. If rows are present but no trips appear, the trip engine may not have processed
them yet — visit the ingest endpoint directly or check the About page for the manual
trigger curl command.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Boat Position” is open source software. The following people have contributed to
this plugin.

Contributors

 *   [ Niels Olsen ](https://profiles.wordpress.org/pcio/)

[Translate “Boat Position” into your language.](https://translate.wordpress.org/projects/wp-plugins/boat-position)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/boat-position/), check
out the [SVN repository](https://plugins.svn.wordpress.org/boat-position/), or subscribe
to the [development log](https://plugins.trac.wordpress.org/log/boat-position/) 
by [RSS](https://plugins.trac.wordpress.org/log/boat-position/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 1.0

 * Initial release.

## Meta

 *  Version **1.0.0**
 *  Last updated **10 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.0**
 *  PHP version ** 8.1 or higher **
 * Tags
 * [Boat](https://wordpress.org/plugins/tags/boat/)[gps](https://wordpress.org/plugins/tags/gps/)
   [logbook](https://wordpress.org/plugins/tags/logbook/)[map](https://wordpress.org/plugins/tags/map/)
   [tracking](https://wordpress.org/plugins/tags/tracking/)
 *  [Advanced View](https://wordpress.org/plugins/boat-position/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/boat-position/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/boat-position/reviews/)

## Contributors

 *   [ Niels Olsen ](https://profiles.wordpress.org/pcio/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/boat-position/)

## Donate

Would you like to support the advancement of this plugin?

 [ Donate to this plugin ](https://www.paypal.com/donate/?hosted_button_id=DFM2JV8JKTTM6)