A two-file embedded networking library in C providing a TCP/IP stack, TLS 1.3, HTTP, WebSocket, MQTT and firmware OTA updates for microcontrollers.
owntracks/recorder
A lightweight server that stores and serves location data published by the OwnTracks mobile apps via MQTT or HTTP, without an external database.
- Stars
- 1,222
- Forks
- 147
- Open issues
- 12
- Last commit
- 11 days ago
What is it?
OwnTracks Recorder subscribes to an MQTT broker or accepts HTTP POST requests carrying OwnTracks JSON messages, then writes the location data into plain files on disk. It serves that data through a built-in REST API and a WebSocket server, which powers a live map that updates as new positions arrive.
The companion command-line tool ocat reads the stored data directly and prints it as JSON, GeoJSON, CSV, GPX, XML and other formats, with filters for user, device and time range. Reverse geocoding can attach addresses and country codes to points, using providers such as OpenCage or Google, or a local revgeod service.
The program is written in C and is designed to run on low-end hardware. It is distributed as Debian packages, a Docker image, and source code that can be built with make, and it can be extended with Lua hooks.
Key features
- 01Receives location data from MQTT subscriptions or HTTP POST
- 02Stores data in plain files without an external database
- 03Built-in REST API and WebSocket live map
- 04ocat command-line tool exports JSON, GeoJSON, CSV, GPX and XML
- 05Reverse geocoding with OpenCage, Google, or revgeod
- 06Lua hooks for customizing behavior
Use cases
- Keeping a private location history for your own OwnTracks devices on a home server
- Tracking family members' phones on a local map without sending data to a third-party service
- Running on a low-power device such as a Raspberry Pi
- Exporting location history to GPX or CSV for analysis
Quick start
- 1
Install the Docker image from Docker Hub
docker pull owntracks/recorder - 2
Launch the Recorder subscribing to the OwnTracks topic
./ot-recorder 'owntracks/#' - 3
Open the web interface in a browser at the default address
Things to know
- Packages are offered only for a limited set of Linux distributions; other platforms require building from source.
- Requires an MQTT broker such as Mosquitto unless you use HTTP mode.
- Map features need your own map API keys.
- License is not clearly specified in the metadata.
In collections
Topics
FAQ
- What is recorder?
- A lightweight server that stores and serves location data published by the OwnTracks mobile apps via MQTT or HTTP, without an external database. OwnTracks Recorder subscribes to an MQTT broker or accepts HTTP POST requests carrying OwnTracks JSON messages, then writes the location data into plain files on disk. It serves that data through a built-in REST API and a WebSocket server, which powers a live map that updates as new positions arrive.
- Is recorder free to use? What license does it have?
- recorder is open source under the Other license. Check the license terms before using it in commercial products.
- Is recorder still maintained?
- Actively maintained. The last commit to recorder was on Oct 27, 2026.
- What can I use recorder for?
- Keeping a private location history for your own OwnTracks devices on a home server Tracking family members' phones on a local map without sending data to a third-party service Running on a low-power device such as a Raspberry Pi Exporting location history to GPX or CSV for analysis
- How do I install recorder?
- Install the Docker image from Docker Hub: docker pull owntracks/recorder Launch the Recorder subscribing to the OwnTracks topic: ./ot-recorder 'owntracks/#' Open the web interface in a browser at the default address
- Where can I get recorder?
- The source code and installation instructions are on GitHub: https://github.com/owntracks/recorder
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
Self-hosted location timeline that turns GPS data from apps like OwnTracks and Overland into stays, trips, and analytics, an alternative to Google Timeline.
Python/Java/Vue backend server for xiaozhi-esp32 ESP32 voice devices, supporting MQTT+UDP, WebSocket, MCP, voiceprint recognition and knowledge base.
A cross-platform C/C++ network library with an event loop plus TCP/UDP, SSL, HTTP, WebSocket, MQTT and Redis client/server support.
An ergonomic Rust HTTP client with async and blocking APIs, JSON, multipart, proxies, cookies and rustls TLS.
Realtime JSON document database backend using Operational Transformation for multi-user collaborative editing and live sync.