Docker Image
Version: 0.8.20
Environment: production
Git Commit: 32e2902
Build Date: 20261020
Commits in this release:
- 32e2902 chore(version): bump to v0.8.20
- 250edc6 feat(backend): rename OMM fields to
orbit_formatandorbit_payload, add tests for six-digit ephemeris handling - 1a1f091 feat(frontend): add resolution toggles to regeneration preview dialog with accessibility improvements
- 3f364bf feat(gnss,frontend,backend): add FSK framing and deviation support with enhanced transmitter configuration
- f31313e refactor(frontend): improve layout scalability and simplify scheduler table rendering
- 88d3b31 test(frontend,backend): add role-based orbital source tests and session clearing logic
- 5731ffe refactor(frontend): standardize
data_decoders_helptranslations and simplify VFO descriptions - 7908722 refactor(gnss): centralize GNSS label formatting and simplify VFO marker logic
- a2cc64d feat(gnss): refine tuning workflows, add fix lifecycle handling, and improve SDR integration
- d871a8b feat(backend,frontend): improve SDR error diagnostics and simplify error handling workflows
- 62d6f81 refactor(frontend): simplify
LastSeenFormatterby removing unused timezone and locale props - 7d0b019 test(frontend): add unit test for GNSS verified satellite count and refine VFO satellite display
- d4fd421 feat(gnss): add pseudorange support, refine GNSS satellite verification, and enhance frontend data display
- 018af4c test(frontend): add unit tests for OBS hardware menu synchronization and rig selection persistence
- 979fc6b test(backend): add unit test to ensure rigs and transmitters persist for first observation target
- 625a8ba feat(frontend): enhance scheduler UI with band grouping, detailed metadata, and iconography
- b25909f feat(frontend,backend): add observation rig selection and ensure hardware handoff during tracker setup
- 8d211ec feat(config): deprecate
secret_keyapp setting and CLI flag for compatibility - d7a6c38 feat(frontend): add version change handling during socket reconnects
- 83eb34b feat(deploy): add configurable Nginx HTTP port support with GS_HTTP_PORT environment variable
- ec20159 feat(tlesync): add support for parsing Alpha-5 NORAD IDs in TLE processing
- 1dce3fd test(api-docs): dynamically validate operation count in OpenAPI spec tests
- ba20db1 feat(api): add
/api/v1/trackers/rigsand/api/v1/rigsendpoints for rig state tracking and metadata - 0c47e7c feat(api): document
/api/v1/trackers/rotatorsendpoint in tests and API specs - 8ed4bc9 chore(docs,Dockerfile): update SSDV repository URL to Codeberg
- d732d19 feat(api): add
/api/v1/trackers/rotatorsendpoint for tracking rotator states - 8e4b450 style(ui): update lobby layout with flexbox and centered alignment
- 4cba89f feat(control): close public event streams on service restart
- 601dbe6 feat(control): close public event streams on service restart
- 81eedc6 feat(shutdown): add SDR process cleanup after session termination
- 0b72cd8 feat(shutdown): add SDR process cleanup after session termination
- f969971 feat(api): add comprehensive OpenAPI schema and response examples for public API endpoints
- e23215a feat(api): add scoped SDR and rotator metadata endpoints with token-based access
- 679d0b5 feat(events): add pub-sub for SDR streams, target tracking, and artifact updates
- 32c612d style(auth): adjust dialog content padding in token revocation modal
- a6baaaf test(api-docs): update e2e tests for new artifact endpoints in Swagger UI
- 4f247bb feat(artifacts): add token-scoped download support with API links and range requests
- 6223c45 test(waterfall): add unit tests for transcription scrolling behavior and improve scroll handling
- 9d82c15 feat(transcription): add detected language support and improve decoder lifecycle handling
- a567942 feat(transcription): add support for disabling translation and handling legacy targets
- fa1c77b test(waterfall): add unit tests for VFO dialogs and rotary encoder tuning
- a060cde feat(translation): add LibreTranslate support with enhanced UI and integration testing
- 8e5edc8 feat(transcription): add Parakeet transcription provider with Google Translate support
- af322d8 fix(build): streamline version metadata generation and improve fallback logic
- fa5036a feat(api): add public event stream with server-sent events
- cfd10a7 fix(auth): improve API token dialog layout and accessibility
- 5bf3da7 feat(docs): add dark mode toggle and route theming for API reference
- af64097 feat(auth): migrate API token management to Socket.IO commands
- a6e16b4 feat(admin): implement real-time admin user management via Socket.IO
- ade90cf feat(auth): add scoped API token management
- 74e612d fix(filebrowser): clarify metadata file inclusion in purge messages across locales
- f6031d0 fix(filebrowser): ensure consistent spinner visibility during purge preview loading
- 4bb4392 feat(filebrowser): add purge dialog with slider and aggregate previews
- 6ac6ed7 feat(inventory): add image count to decoded folder summary and detail views
Pull the Docker image:
For AMD64 systems:
docker pull --platform linux/amd64 ghcr.io/sgoudelis/ground-station:0.8.20For ARM64 systems (Raspberry Pi, etc):
docker pull --platform linux/arm64 ghcr.io/sgoudelis/ground-station:0.8.20Or pull architecture-specific tags directly:
# AMD64
docker pull ghcr.io/sgoudelis/ground-station:0.8.20-amd64
# ARM64
docker pull ghcr.io/sgoudelis/ground-station:0.8.20-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.20# 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.20Option 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.20# 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.20Port 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.20
# 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.19...v0.8.20