github sgoudelis/ground-station v0.5.0

latest release: v0.5.1
7 hours ago

Docker Image

Version: 0.5.0
Environment: production
Git Commit: 32537da
Build Date: 20260609

📖 View Project Documentation

Commits in this release:

  • 32537da fix: update target number validation logic in selector bar
  • 3d052d5 refactor: reorder navigation items to move earthview below celestial options
  • 5d961f7 feat: add time-offset callouts for selected paths and improve past/future orbit rendering
  • 5136705 feat: add test for satellite group renaming during sync and update group name logic
  • 4f83cbc fix: adjust overlay zIndex to use modal layer for proper stacking
  • 94e1fff feat: enhance location wizard with backup restore step and optimize GNSS-SDR build
  • ca689a0 feat: add station metadata and improve location handling
  • 160d67f feat: add customizable map dragging and zooming options
  • 6c93640 fix: adjust label positioning to respect canvas edges
  • aecc4e3 feat: categorize satellite groups with new icons and subheaders
  • a8116c3 refactor: rename overview components and Redux logic to earthview
  • 712689f refactor: adjust tab scroll button behavior in target-selector-bar
  • ece0f34 refactor: integrate AdminSystemPageLayout into system pages and update navigation segment for hardware
  • 0a4fa77 chore: update dependencies in backend and frontend
  • 64f1c39 remove: deprecate and delete camera and rotator components
  • 1f59608 refactor: modularize location handling and migrate to MapLibre
  • 89983cb refactor: simplify location form header logic and adjust dialog layout
  • ea56e87 feat: add wizard UI for location setup in frontend
  • 1eac93b feat: add callsign support for locations in backend and frontend
  • b52118b test: add unit tests for location CRUD and handler logic
  • ed1086f feat: switch default map engine to MapLibre and remove beta labels
  • 8929bf8 feat: add dynamic orbit path splitting and enhance polyline rendering
  • f609570 feat: add tests and enhance cache logic for satellite path tracking
  • 236c13e feat: improve orbit rendering and label offset customization
  • 87f44c2 fix: improve target number fallback logic and tracker labeling
  • ee493aa feat: introduce non-satellite target tracking and elevation-based AOS/LOS logic
  • d68b927 feat: adjust Sun label positioning in single-tracked mode and improve label offset logic
  • efa4135 fix: filter out non-renderable bodies and improve solar system canvas accuracy
  • 5d6f8b6 refactor: simplify celestial vector cache handling and remove redundant command mismatch logic
  • 337599e fix: resolve ID collision and improve cache logic for celestial vectors
  • a5296b4 feat: add IAUs-recognized dwarf planets and support for "dwarf" body type
  • 2e6fd37 increase: extend MAX_ZOOM limit to 60000 for improved solar system canvas scalability
  • 2af4ca2 refactor: remove unused ephemeris fallback logic and add targeted tests for observer sampling behavior
  • 401dc68 refactor: unify arrow and label bias handling for clearer offscreen target placement
  • 9910069 feat: add locale-based distance formatting to solar system view
  • 307c72d feat: add fullscreen support to solar system view and toolbar controls
  • 62e3bc2 refactor: preserve rig control fields in target normalization and simplify frontend handling
  • 62f4afb feat: add tests for rig control normalization and update payload handling
  • 95556e0 feat: add async tracker mission vector refresh and debounce logic
  • 6a93467 refactor: remove unused ephemeris error handling and fallback projection logic
  • 45969ab feat: overhaul celestial vectors schema and frontend solar system visualization
  • 40df4a8 add tooltips to map control buttons for improved accessibility and usability
  • 3da851d feat: add fullscreen handling and resize support for target map component
  • a8a2c19 feat: add altitude to satellite path data and improve cache schema versioning
  • d3287bb refactor: fix indentation for satellite markers in target map component
  • 4f21099 feat: add MapLibre Globe projection support and integrate in target map components
  • 12bf8ed feat: add padding for MapLibre coverage fitting to improve map framing
  • 498e26e refactor: remove overview-map.jsx and consolidate logic into existing MapLibre components
  • 9cb9b1b feat: improve satellite position validation and enhance altitude/velocity labels
  • 878d8c4 feat: refine MapLibre popup theming for tracked and non-tracked targets
  • 0e95c0b feat: add dynamic tooltip orientation handling for MapLibre popups
  • 5770ad8 feat: add engine-specific zoom persistence and migration for MapLibre and Leaflet
  • 0ac3915 feat: allow MapLibre to preserve user-requested zoom levels
  • 83e9f42 feat: add satellite error handling and improve propagation robustness
  • 9b17d4d fix: enforce whiteSpace: 'nowrap' for tooltips and popups across components
  • 35c8701 feat: add support for engine-specific map zoom handling
  • 703e7a4 feat: enhance MapLibre overlays with accurate terminator projections and satellite tracking
  • b833fc7 refactor: extract attribution bar into reusable OverviewAttributionBar component for map components
  • f799214 feat: add custom theming for MapLibre popups in overview map
  • abc6dec feat: implement satellite overview map using MapLibre
  • 75f08c4 ci: optimize and refactor backend test workflow
  • 49ab891 feat: add lazy loading for SoapySDR workers and improve optional dependency handling
  • af2caff feat: add canonical target name resolution for tracking entities
  • 8346908 fix: prevent placeholder position objects from being emitted in tracker data
  • ce311f3 test: add unit tests for dispatcher response normalization and error handling
  • f1ff1a1 feat: add control and maintenance handlers for backend commands and unify frontend socket API calls
  • 26b8ba5 refactor: remove WebRTC-related components and backend routes
  • f2534f1 chore: update zeroconf to 0.149.7 in backend dependencies
  • ccb282f chore: bump version to 0.4.13

Pull the Docker image:

For AMD64 systems:

docker pull --platform linux/amd64 ghcr.io/sgoudelis/ground-station:0.5.0

For ARM64 systems (Raspberry Pi, etc):

docker pull --platform linux/arm64 ghcr.io/sgoudelis/ground-station:0.5.0

Or pull architecture-specific tags directly:

# AMD64
docker pull ghcr.io/sgoudelis/ground-station:0.5.0-amd64

# ARM64
docker pull ghcr.io/sgoudelis/ground-station:0.5.0-arm64

Run the container:

Option 1: With SoapySDR Remote Server Discovery (Recommended)

Uses host networking to enable mDNS discovery of SoapySDR remote servers:

# AMD64
docker run -d \
  --platform linux/amd64 \
  --network host \
  --name ground-station \
  --restart unless-stopped \
  --device=/dev/bus/usb \
  --privileged \
  -v /path/to/data:/app/backend/data \
  -e GS_ENVIRONMENT=production \
  -e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
  ghcr.io/sgoudelis/ground-station:0.5.0
# ARM64 (Raspberry Pi, etc)
docker run -d \
  --platform linux/arm64 \
  --network host \
  --name ground-station \
  --restart unless-stopped \
  -v /dev:/dev \
  --privileged \
  -v /path/to/data:/app/backend/data \
  -e GS_ENVIRONMENT=production \
  -e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
  ghcr.io/sgoudelis/ground-station:0.5.0

Option 2: Standard Bridge Mode (No SoapySDR Remote Discovery)

Uses standard bridge networking with port mapping:

# AMD64
docker run -d \
  --platform linux/amd64 \
  -p 7000:7000 \
  --name ground-station \
  --restart unless-stopped \
  --device=/dev/bus/usb \
  --privileged \
  -v /path/to/data:/app/backend/data \
  -e GS_ENVIRONMENT=production \
  -e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
  ghcr.io/sgoudelis/ground-station:0.5.0
# ARM64 (Raspberry Pi, etc)
docker run -d \
  --platform linux/arm64 \
  -p 7000:7000 \
  --name ground-station \
  --restart unless-stopped \
  -v /dev:/dev \
  --privileged \
  -v /path/to/data:/app/backend/data \
  -e GS_ENVIRONMENT=production \
  -e GR_BUFFER_TYPE=vmcirc_mmap_tmpfile \
  ghcr.io/sgoudelis/ground-station:0.5.0

Note: Replace /path/to/data with your desired data directory path. Option 1 (host networking) is required for automatic mDNS discovery of SoapySDR remote servers. Option 2 works for local SDRs and all other features. For ARM64, using -v /dev:/dev ensures all USB devices are accessible.

After starting the container, access the web interface at http://<YOUR_HOST>:7000

Upgrading an existing container:

# Stop and remove the existing container
docker stop ground-station
docker rm ground-station

# Pull the new version
docker pull ghcr.io/sgoudelis/ground-station:0.5.0

# Run the container again (use the appropriate command above for your architecture)

Multi-arch support:

This image supports linux/amd64 and linux/arm64 platforms. Docker will automatically pull the correct architecture for your system.

Full Changelog: v0.4.13...v0.5.0

Don't miss a new ground-station release

NewReleases is sending notifications on new releases.