Docker Image
Version: 0.8.25
Environment: production
Git Commit: 8438e30
Build Date: 20261111
Commits in this release:
- 8438e30 chore(version): bump to v0.8.25
- db2dfb4 test: reflect legacy UUID schema for inserts
- f362b1c feat(earthview): add recent group visibility settings
- 85c69d3 test: update scheduler transmitter option queries
- e607ce7 feat(filebrowser): show APRS station paths and packet history
- 06f2952 feat(scheduler): group transmitter search results by band
- dd6d33a fix(horizons): request CSV vector table with state columns
- ec4e8bf feat(packetmap): lift aircraft markers by altitude
- 2386980 fix(satellites): keep catalog controls disabled while loading
- dc32441 test: stabilize frontend component queries
- 20a363a fix(packetmap): apply transmitter type filters to map markers
- a91ea96 feat(packetmap): add APRS station info panel
- bd611d3 fix(navigation): show continuous observation count badge in scheduler nav
- a1609a0 fix(navigation): show only latest observation failure in scheduler nav
- 61bb14a feat(navigation): show scheduled and continuous observation status in scheduler nav
- 690db5c temp: add 2026-11 README screenshot captures for manual review
- 0981b76 test: stabilize UUID storage and continuous observation tests
- fdd7e8d fix(hardware): keep control header status badges compact
- 1a1e985 fix(target): remove raw orbit data from info island
- 1f4c14d fix(hardware): wait for rotator to settle before cleanup disconnect
- 5580719 feat(waterfall): create continuous observations from live sessions
- 80e1667 test(waterfall): cover continuous observation markers and SDR locks
- 601dbf4 fix(waterfall): lock receiver controls for continuous observation viewers
- f15a156 feat(continuous): add LoRa profile selection to observation forms
- 77ed3cc fix(continuous): remove redundant observations header icon
- d6247dc feat(dashboard): show relative next observation start times
- c6fae5d fix(hardware): retain manual rotator control after stop
- 0f4d1cb fix(common): keep entity header actions beside names
- e7e6f72 fix(waterfall): isolate SDR parameters when switching devices
- 1e1b7bf feat(continuous): add persistent observation management
- a0c0f82 fix(grid): keep compact table footers visible
- 11cbc7d fix(packetmap): show transmitter copy actions directly in context menu
- efc0318 fix(hardware): reconnect rotators to confirm stationarity before handoff
- cdfa07a fix(waterfall): add dividers to Bias-T warning dialog
- bee74fe fix(waterfall): require voltage warning confirmation before enabling Bias-T
- fc6565b fix(packetmap): stop toasting automatic playback jumps
- d3f6af4 fix(packetmap): reveal selected historical transmitters at recorded positions
- 0602070 feat(packetmap): add transmitter context actions menu
- 424dee9 test(uhd): deliver config updates after hardware ack
- 5f613db fix(scheduler): use full-screen dialogs on mobile
- 21a4909 fix(waterfall): ignore stale SDR tuning updates and wait for hardware ack
- 84b9d3a feat(dashboard): add floating draggable manual rotator controls
- e485efb fix(waterfall): support native UHD bandwidth ranges and receiver readback
- fa17eea fix(satdump): route manual observation processing through bundles
- 2fe3535 feat(filebrowser): add download confirmation and recording processing action
- a56ed29 fix(satdump): keep automated products in observation bundles
- 854bca4 fix(hardware): remove configured SDRs table header
- 809f965 fix(celestial): avoid forcing NORAD prefix in entity headers
- 1db191f fix(celestial): hide unknown health badges
- 0e7871d feat(celestial): add unified entity info header
- 93b1c6e fix(icons): replace misapplied GPS constellation icons on UFO sats
- eff75e2 fix(satdump): block unsafe pipelines and output paths
- 2661a34 chore(hardware): remove sigmf probe test marker
- da7b53d chore(hardware): add sigmf probe test marker
- 004cfb7 feat(celestial): add target crosshairs and tooltips in solar canvas
- fe4305d fix(rotator): clear Stop warning when tracking resumes
- 8013bc6 feat(scheduler): add shared SDR parameter controls
- 73de64a fix(packetmap): compact transmitter type filter
- bb27e05 fix(hardware): compact activity indicator in header
- 4fd91de fix(observations): disconnect cleanup without Stop
- 864fa65 feat(icons): rebuild 32 GPS family icons from real per-block renders
- 24bcb88 feat(icons): rebuild 32 GPS family icons from real per-block renders
- fba5d62 fix(targets): highlight running observations with tab striping
- a488ede feat(hardware): unify operational status indicators
- b840739 feat(icons): replace Es'hail 2 (43700) icon with full-spacecraft render
- 3819af0 fix(packetmap): reduce radiosonde marker sizes
- 79b23f7 fix(hardware): make SoapySDR discovery manual-only
- 943cb0b feat(icons): add 78 missing satellite icons from production 404 backlog
- c41c1d7 fix(observations): wait for unsupported Stop rotator handoff
- 6dbeab1 feat(hardware): add device Pause separate from Stop
- 9e371c7 fix(hardware): dedupe device error feedback
- 279ac37 fix(hardware): keep dismissed device alerts closed
- 320abad fix(db): store UUIDs as text on SQLite
- 2169ccc feat(hardware): add quick edit from hardware popover
- 04a2093 feat(hardware): allow tracker connect manual rotator handoff
- 071054a fix(deploy): colorize nginx access logs like backend
- 8bed9aa fix(observations): keep running observation ownership on OBS tab
- c2b69b4 fix(hardware): quietly detach released control owners
- 6b843dc fix(hardware): renew tracker liveness on acquire
- d76d896 fix(deploy): align nginx access log format with app logs
- fa4fd6c fix(hardware): allow rotator acquire during unconfirmed motion
- 6a3a168 fix(observations): disconnect rotator cleanup without stop
- 6db7e01 fix(demodulators): preserve BPSK FLL tracking gain
- 57b564d fix(observations): show inline validation and starting soon status
- eca0754 feat(hardware): allow operator disconnect override
- a622e64 feat(dashboard): replace hardware popover with device control panel
- 75c0153 fix(observations): prevent released hardware from being reclaimed
- 07b8158 feat(hardware): add rotator Stop capability setting
- e31972f feat(hardware): add manual device control panel
- d9760fc feat(dashboard): add unified observations popover
- 0193dfe feat(dashboard): replace VFO audio popover with VFO status control
- e6b01a7 feat(filebrowser): add responsive source and summary table view
- 035b9b5 fix(filebrowser): remove satellite emoji from table header
- c600bf0 fix(observations): preserve running stop jobs during sync
- d686489 feat(packetmap): add squawk code explanations to flight instruments
- b2d8281 feat(packetmap): add aircraft capture folder access from transmitter info
- 307efde feat(packetmap): unify pan and zoom handling for manual navigation
- 52ee927 feat(packetmap): auto-adjust playback for hidden aircraft in history
- 0742ce5 feat(branding): replace green-blue logo with Meridian logo across app
- e40b673 feat(branding): add Meridian logo roundel alongside current brand assets
- f5dd86b feat(filebrowser): add item-type-based purging with i18n and UI enhancements
- 4781c9f feat(search): add comprehensive indexing for aircraft, nodes, and radiosondes
- 0c9952c refactor(dashboard): improve layout scrolling and icon responsiveness
- 5709d45 test(packetmap): ensure uninterrupted mouse pan during live fixes
- 08f8219 feat(packetmap): unify aircraft color palette with theme-based accent
- 16914e2 feat(packetmap): migrate to MapLibre for map rendering and marker logic
- 9bbdf85 feat(packetmap): add aircraft reception states and signal aging
- b8bd2ea feat(packetmap): update three-window layout for better desktop and mobile responsiveness
- 05b57d5 feat(filebrowser): add flight path map with interactive filtering, segmenting, and i18n
- 93ff169 feat(waterfall): add LoRa profile selection with grouped presets and regional support
- 2d3cb47 feat(filebrowser): add detailed aircraft history display with i18n and metadata support
- 3401022 refactor(satconfig): remove user override support and simplify config priority
- 8e11e62 feat(ui): replace SensorsIcon with DynamicFeedOutlinedIcon in background observations popover
- 9b971e4 feat(filebrowser): add Meshtastic node filtering with i18n support
- cf5d069 feat(filebrowser): add formatted capture run labels with localized timestamps
- e7dafe4 feat(waterfall): add SDR detachment support with local VFO deactivation
- 7097559 feat(waterfall): support independent receiving sessions and enhance stream detachment
- f11269c feat(waterfall): support background streaming on stop and update UI messaging
- 67fdba0 feat(session): add background session support for SDR observations
- 5028d27 feat(filebrowser): add "Last Activity" sorting and update default chronology
- 491570e feat(flow-layout): refine decoder-to-browser routing and add connection tests
- d0aac82 test(waterfall): add ADS-B tab interaction and socket connection tests
- 8e6fe39 fix(packetmap): simplify row border color logic in transmitter list
- 42da109 feat(filebrowser): add APRS station captures and dialog functionality
- 465649b feat(packetmap): add Meshtastic map marker and renderer for node display
- 6ab67b6 feat(packetmap): remove transmitter table and integrate Meshtastic info panel
- 6ce9901 feat(filebrowser): add bundle type badges and icons for capture folders
- 2a2f86a feat(parser): add Meshtastic packet decoding and telemetry support
- ee02d3a feat(lora): add Meshtastic sync word support with signed hardware offsets
- 8c2ad53 feat(waterfall): add Meshtastic regional tuning ranges
- 07baaad feat(server): add Uvicorn fork cleanup to prevent socket retention in workers
- a81b49d feat(packetmap): implement bounded live window with aircraft expiry logic
- d008bca feat(packetmap): optimize aircraft marker updates and transmitter table behavior
- 28e342c feat(packetmap): synchronize telemetry playback across table and map
- 815bddf feat(packetmap): add toggleable live updates with playback freeze support
- 3cdbd76 feat(packetmap): add toggleable live updates with playback freeze support
- c9dd9af feat(packetmap): add flight instruments with telemetry and playback support
- 9cba762 fix(packetmap): improve camera locking and view persistence during navigation
- c19e525 test(packetmap): enhance transmitter table column visibility tests
- 3281f38 feat(packetmap): add aircraft selection crosshair and refine stale marker display
- aa58807 feat(packetmap): add ground distance column in transmitter table
- 63a10e7 feat(hardware): add Soapy servers panel with remote SDR management
- 5973075 feat(hardware): add SoapySDR manual probe controls with backend and frontend tests
- 0078876 feat(waterfall): add IF filter bandwidth tests and backend handler
- 9e510d2 feat(waterfall): add IF filter bandwidth management and driver integration
- 78ab5ac chore(docker): update SoapySDRPlay3 to commit 48bd8b4
- 47479d2 feat(packetmap): add transmitter column management with reset and toggle all
- 562aec0 feat(packetmap): add emergency squawk handling and priority indicators
- 20b8c08 feat(packetmap): display aircraft symbols in transmitter info panel
- 6864ea6 feat(packetmap): add detailed aircraft icons with multiple models
- ca2e9c7 feat(packetmap): add dynamic aircraft shadows and improved marker styling
- e0248e1 refactor(packetmap): remove transmitter legend and radio visibility lists
- c0d1f4d feat(packetmap): add persistent camera handling and transmitter-centered views
- 195afe0 refactor(aircraft): remove outdated classification and operator info notes
- cbd1ce9 feat(aircraft): replace "military status" with broader "classification" field
- 11eb6be feat(aircraft): integrate Mictronics aircraft enrichment and metadata handling
- 75a3a1c feat(filebrowser): add independent filters for weather balloons and aircraft
- 2731633 feat(waterfall): centralize table and tab styles for consistency
- 16fdc04 feat(waterfall): enhance decoded packets view with footer and table consistency
- d0b71dc feat(adsb): implement ADS-B decoding, indexing, and live tracking modules
- c4c8b21 feat(packetmap): add stale marker handling and improve icon scaling
- 8638a9a feat(filebrowser): refactor dialog components with reusable styles and details layout
- 8d6328d feat(soapysdr): ensure probe reaping and graceful handling of timeouts/cancellations
- 304eb16 feat(packetmap): update default tile layer to Esri Dark Canvas
- 6a24b00 fix(fft): remove accidental debug comment in averager
- 2004050 fix(events): prevent HTTP connection inheritance in pass worker pool
- 2713b14 feat(packetmap): add APRS symbol rendering and playback support
- e72a873 feat(packetmap): add labeled visibility circles and radiosonde marker names
- 025bcd7 feat(filebrowser): optimize library refresh with coalescing and visibility-based queries
- 77ea368 feat(radiosonde): add flexible RS41 block parsing with checksum validation
- 7fd0dfd feat(hardware): add manual rotator control with enhanced UI and backend integration
- cb65c5e feat(filebrowser): add radiosonde folder grouping, migration tools, and UI enhancements
- 521c359 feat(packetmap): add radiosonde visibility radii and enhanced marker icons
- 1e8a890 refactor(earthview): consolidate table settings dialogs into reusable grid toolbar
- b58862b feat(packetmap): add LIVE mode for real-time packet tracking
- 6789402 feat(packetmap): remove transmitter type component and add date range selector
- af6524f feat(background-tasks): enhance worker lifecycle management and shutdown reliability
- 7c7665f feat(packetmap): add flexible packet map layout and date range controls
- ffa86c2 feat(decoded-packets): display radiosonde serials as sender identifier
- a59efb9 feat(radiosonde): add altitude-aware receiver distance metrics and map fitting
- 730202f feat(filebrowser): add reusable position map component for telemetry packets
- f517756 test(performance-monitor): add decoder input capability tests and refine IQ decoder logic
- 8c9e1c1 feat(radiosonde): implement radiosonde decoding with multi-frame support and validation
- c36827a test(satellite-info): refine test assertions for dialog title and future passes table
- c19ff63 test(theming): wrap test components with ThemeProvider for MUI compatibility
- 41db353 refactor(satellite-info): simplify grid sizing logic for consistent layouts
- 37b0f94 style(tables): align satellite passes table cells for improved readability
- bd58dcb feat(dialogs): standardize dialog layouts and improve mobile responsiveness
- fe013e7 feat(common): add
GroundStationLogoGreenBlueas importable data URL - 11a012c feat(frontend/backend): batch tracker telemetry and optimize dialog rendering
- c4d28be refactor(audio): remove Web Worker pipeline and simplify VFO audio scheduling
- 5ff713a refactor(filebrowser): remove 'unsupported' telemetry type and associated badge
- ae6b962 style(scheduler): update timeline header typography for improved hierarchy and emphasis
- 231d80c feat(filebrowser): add telemetry status detection and badges for observation files
- 5f53d7e refactor(settings): simplify location form banner styling with theme utility
- 2aa95d7 feat(scheduler): display observation status banner above table in observations tab - Added
ObservationStatusBannerto display upcoming observation status in the observations tab. - Updated scheduler test to validate presence and visibility of the status banner. - ef5488f feat(scheduler): refactor layout with tabbed views and improved data loading - Replaced grid layout with
PageTabsLayoutfor tabbed navigation between monitored satellites and scheduled observations. - Added automatic data loading for observations in the background before opening relevant tabs. - Refactoredmain-layoutand removed redundantuseEffectcalls fromobservations-table. - Updated styles and localized strings to improve consistency and readability. - Added tests to validate tab behavior, data rendering, and interactions. - eea1e98 feat(frontend): introduce
PageTabsLayoutfor sticky multi-row tab support and consistent layout handling
Pull the Docker image:
For AMD64 systems:
docker pull --platform linux/amd64 ghcr.io/sgoudelis/ground-station:0.8.25For ARM64 systems (Raspberry Pi, etc):
docker pull --platform linux/arm64 ghcr.io/sgoudelis/ground-station:0.8.25Or pull architecture-specific tags directly:
# AMD64
docker pull ghcr.io/sgoudelis/ground-station:0.8.25-amd64
# ARM64
docker pull ghcr.io/sgoudelis/ground-station:0.8.25-arm64Run 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 \
-e GS_HTTP_PORT=7000 \
--name ground-station \
--restart unless-stopped \
--device=/dev/bus/usb \
--privileged \
-v /path/to/data:/app/backend/data \
ghcr.io/sgoudelis/ground-station:0.8.25# ARM64 (Raspberry Pi, etc)
docker run -d \
--platform linux/arm64 \
--network host \
-e GS_HTTP_PORT=7000 \
--name ground-station \
--restart unless-stopped \
-v /dev:/dev \
--privileged \
-v /path/to/data:/app/backend/data \
ghcr.io/sgoudelis/ground-station:0.8.25Option 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 \
ghcr.io/sgoudelis/ground-station:0.8.25# 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 \
ghcr.io/sgoudelis/ground-station:0.8.25Port selection: In host-network mode, change
GS_HTTP_PORT=7000to your desired HTTP port, such asGS_HTTP_PORT=8080. Docker ignores-pin this mode. In bridge mode, change the host side of-p 7000:7000, such as-p 8080:7000; keep the container side at 7000. The backend remains on127.0.0.1:7001inside the container.
Note: Replace
/path/to/datawith your desired data directory path. For ARM64, using-v /dev:/devensures all USB devices are accessible.
After starting the container, access the web interface at http://<YOUR_HOST>:<HTTP_PORT> (7000 by default).
First startup note: On first run, it can take up to ~30 seconds after container startup for the frontend to become available.
You can watch startup progress with:
docker logs -f --tail=100 ground-station
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.8.25
# Run the container again (use the appropriate command above for your architecture and retain your HTTP port choice)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.8.24...v0.8.25