Trail project / Linux server and LoRa gateway

Limited Underground Trail Server

A planned Linux server appliance with its own dedicated Trail-compatible LoRa device, a LAN administration interface, geographic storage, and bounded large-file delivery.

Clean VM reproduction and bounded API scaffold verified - reserved LAN and live radio pendingEvidence updated August 29, 2026Work in progress

Overview

A server that joins the Trail radio network through its own device.

The accepted provisional direction reuses established server infrastructure while keeping the Trail-specific radio boundary explicit.

Radio boundary

One dedicated server-radio device.

A Trail-compatible LoRa device participates in the radio network and connects to the Linux server through the simulator-tested LUSR/1 USB contract. Hardware and firmware compatibility remain unproven.

Operator access

One dashboard, locally and across the LAN.

A minimal graphical session opens the administration interface on the server. Other authorized local-network machines can reach the same interface by IP.

Large files

Use IP delivery where LoRa is the wrong transport.

The server can publish digest-bound manifests and provide separately supported downloads for firmware, map packages, or other files that do not belong on the radio network.

Roadmap

Build the smallest functional Linux appliance first.

Architecture, the first host profile, and the local server-radio contract are selected; clean VM reproduction, the bounded API scaffold, and host-side contract simulation passed, while reserved-LAN and hardware acceptance remain open.

Current foundationAccepted direction

Server Option V0

Debian 13.6.0, ASP.NET Core, PostgreSQL/PostGIS, Caddy, MapLibre/PMTiles, and one dedicated USB-connected Trail LoRa device.

Web access
Local browser plus LAN access by reserved server IPv4 address
First transport
Plain HTTP on the trusted LAN; trusted HTTPS is deferred
Evidence today
Clean Debian VM reproduction, post-reboot host verification, bounded .NET 8 API, and twelve LUSR/1 host-simulator cases passed; hardware radio, database, and final LAN acceptance remain open
First functional serverHost profile in progress

Debian host and live server radio

Reproducible installation, persistent queues, live receive/transmit processing, LAN dashboard access, database recovery, and one exact dedicated server-radio binding.

Hardware
No supported server-radio target selected
Deployment
Debian 13.6.0 amd64 clean VM passed install, provision, reboot, kiosk, and full verifier
Acceptance
Software-host reproduction and temporary-NAT checks passed; reserved physical-LAN and second-machine acceptance remain open

Capabilities

A useful prototype, not a working server.

The current repository provides a concrete interface direction, public architecture records, and a reproducible host-profile starting point.

Available

Interactive administration-interface prototype.

Demonstration screens cover operations, people, devices, communications, locations, alerts, readiness, updates, backups, and server settings.

Accepted direction

Reusable infrastructure is selected.

Established Linux, web, database, geographic, file-delivery, and map components avoid creating generic infrastructure from scratch.

Unavailable

No live radio, database, or final-LAN deployment.

The bounded service reports operational false and radio unavailable. Its LUSR/1 worker is disabled by default and has no serial or USB transport, hardware connection, persistent queue, or durable receive authority.

Components

Clear boundaries keep the server replaceable.

Each reusable component has one job; Trail-specific behavior remains inside explicit project code and contracts.

Radio gateway

Dedicated Trail-compatible LoRa device over USB.

Owns radio participation, packet protection, and a bounded host interface.

Linux application

Modular server, persistent queues, and administration.

Processes validated radio events, schedules outbound traffic, stores history, and exposes operator workflows.

IP services

LAN dashboard, maps, and large files.

Kept separate from the LoRa link so large content and administration do not distort the radio protocol.

Technology

Reuse proven infrastructure; build only the Trail-specific layer.

Option V0 is provisional and individual components may change after implementation evidence.

Operating system

Debian 13.6.0 host profile

Local interface
LightDM, Openbox, and Chromium kiosk on loopback
LAN interface
Dashboard by reserved IPv4 address; SSH and HTTP only from the configured LAN
Status
Clean Hyper-V reproduction passed; reserved physical-LAN and second-machine acceptance remain pending
Application

ASP.NET Core

Reuse
Web APIs, background services, health checks, configuration, authentication, and administration UI foundation
Custom work
USB gateway, Trail queues, processing rules, manifests, and operator workflows
Status
Phase A health/configuration deployment passed; the disabled-by-default Phase B LUSR/1 worker passed eleven lifecycle simulator cases with no serial, USB, TX, or RX acknowledgement authority
Local radio contract

LUSR/1 over USB

Boundary
Versioned COBS framing, canonical CBOR, logical identity, bounded credits, and opaque on-air payloads
Recovery
Idempotent transmit IDs, durable receive-before-ack, reconnect reconciliation, and explicit reboot uncertainty
Status
Twelve compact .NET 8 simulator cases passed; no Heltec, USB device, firmware, or RF link was tested
Data

PostgreSQL and PostGIS

Records
Messages, alerts, devices, radio observations, delivery queues, and audit history
Geography
Locations, tracks, proximity, spatial indexes, and later geofencing
Status
No schema or migration exists
Web and files

Caddy, MapLibre, and PMTiles

Caddy
LAN reverse proxy, static files, HTTP range requests, and later TLS
MapLibre
Map rendering for the local and LAN dashboard
PMTiles
Packaged basemaps and bounded large map archives

Development status

Foundation, bounded service, and local bridge lifecycle verified.

The verified host, API, contract, and hardware-free bridge remain limited development milestones, not an operational Trail Server or a completed deployment.

Architecture

Option V0 and LUSR/1 accepted.

The public record captures the Linux, LAN, dedicated-radio, storage, map, and large-file boundaries plus the simulator-tested local USB contract.

Repository

Standalone public project foundation.

Architecture, status, decisions, backlog, interface prototype, host-profile assets, and the bounded .NET 8 service scaffold are organized independently from OpenTrail firmware and Android work.

Next gate

Verify the final reserved-LAN boundary.

Assign the private router reservation, then prove HTTP and SSH access plus bounded blocked-port denial from a second machine on that LAN.

Documentation

Read the current architecture and its limits.

The repository is the authority for Trail Server decisions and implementation status.

GitHub repository

The public Trail Server project.

Follow the architecture, interface prototype, decisions, validation, and future implementation.

Limited Underground Trail Server on GitHub

The repository now contains architecture, interface-prototype, host-profile evidence, a bounded non-operational service scaffold, and a disabled hardware-free radio bridge. It does not contain a functional or supported server release.

Open repository

Contribute

Improve the reusable foundation without overstating it.

Useful early contributions focus on Linux deployment, USB recovery, geographic storage, accessibility, and bounded protocol review.

Linux

Reproducible appliance and USB reliability.

Help test the selected Debian profile, service recovery, stable device paths, and local-network access.

Server

Persistence, queues, and failure recovery.

Review migrations, idempotency, bounded retries, backups, and restoration behavior.

Interface

Accessible local operations.

Improve the administration prototype while keeping demonstration data and unavailable functions visibly labeled.