Docker Image
Version: 0.8.24
Environment: production
Git Commit: 1ec3c41
Build Date: 20261030
Commits in this release:
- 1ec3c41 chore(version): bump to v0.8.24
- 66efe29 feat(scheduler): add observation conflict detection and validation across components - Implemented
findObservationConflictandgetObservationForPassutilities to identify hardware conflicts and manage task times. - Updatedobservation-form-dialog,satellite-selector, andpass-selectorto validate conflicting observations using the shared logic. - Enhanced transmitter configuration withDecoderNumberFieldfor numeric parameter support, validation, and optional values. - Added frontend tests to cover conflict resolution, form validation, and transmitter modal behaviors. - Refined test logic to support SDR hardware changes and ensure robust validation. - 00033d7 feat(scheduler): ensure saved satellites and transmitters load correctly by NORAD ID, even with autocomplete limits
- 0fd592f chore(telemetry): remove extraneous newline in USP parser
- b260d08 feat(telemetry): enable parsing of unsupported captures with current parser without altering saved metadata
- c60126f feat(telemetry): add RS18S support to USP parser and test coverage
- a389a25 feat(frontend): add number field support for decoder parameters with validation - Introduced
DecoderNumberFieldcomponent for handling numeric decoder parameters with validation. - Updated decoder dialogs and forms to support range-constrained number inputs. - Implemented validation logic to block invalid parameter drafts and ensure correct saving. - Added comprehensive tests for decoder parameter behaviors and edge cases. - 826d5ff fix(artifact dates): standardize capture/completion time handling across backend and frontend - Refactored backend to prefer
captured_atovercreatedin LibraryInventory and file queries. - Added fallback handling for missing capture time using file modification dates. - Updated backend transcription worker to include UTC timestamps in start and end times. - Migrated frontend file browser to default sorting bycaptured_at. - Improved robustness of date parsing and reporting across metadata sources in tests, localization, and UI. - b79163b refactor(backend): simplify telemetry parsing and satellite identification logic
- 5f3a1b6 feat(frontend): introduce ResponsiveActionButton for adaptive toolbar actions across dialogs and components
- 996b747 feat(telemetry): add packet decoding, telemetry parsing, and housekeeping views
- 57ef9de test(frontend/backend): add end-to-end and edge-case coverage for satellite search workflows
Pull the Docker image:
For AMD64 systems:
docker pull --platform linux/amd64 ghcr.io/sgoudelis/ground-station:0.8.24For ARM64 systems (Raspberry Pi, etc):
docker pull --platform linux/arm64 ghcr.io/sgoudelis/ground-station:0.8.24Or pull architecture-specific tags directly:
# AMD64
docker pull ghcr.io/sgoudelis/ground-station:0.8.24-amd64
# ARM64
docker pull ghcr.io/sgoudelis/ground-station:0.8.24-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.24# 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.24Option 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.24# 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.24Port 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.24
# 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.23...v0.8.24