Tutorial: How to install satnogs groundstation for Newbie & PRO

who need this tutorial? for those who are dizzy, confused, or desperate about how to install and run the latest version of SatNOGS ground station on a Raspberry Pi

minimum setup
  • rtl-sdr
  • raspberry pi 3/4.
  • internet over lan cable

I recommend Raspberry Pi OS Lite (bookworm version), because trixie not supported yet by satnogs

Download bookworm image here

extract and flash to memory card (cautious: change /dev/sdx with your sd card location. you can use sudo fdisk -l command for make sure)
sudo dd if=2025-05-13-raspios-bookworm-arm64-lite.img of=/dev/sdx bs=1M conv=fsync status=progress
or or for hassle free you can use raspberry pi imager

SDR setup

login to raspberry console

sudo nano /etc/modprobe.d/blacklist-sdr.conf

copy paste this
blacklist rtl2832_sdr
blacklist dvb_usb_rtl28xxu
blacklist rtl2832
blacklist airspy
blacklist hackrf
blacklist msi001
blacklist msi2500

save with ctrl+x

restart raspberrypi
sudo reboot

Install docker

sudo apt update
sudo apt install docker-compose

create station directory.
adjust the directory name, according to your station name.

mkdir ~/station4365
cd ~/station4365

nano docker-compose.yml

copy paste this
version: '3.8'
services:

  rigctld:
    image: librespace/hamlib:latest
    user: '999'
    read_only: true
    environment:
      MODEL: '1'
      PORT: '4532'
    restart: 'unless-stopped'
    command: 'rigctld'

  satnogs_client:
    image: librespace/satnogs-client:master-unstable
    user: '500'
    read_only: true
    init: true 
    env_file:
      - ./station.env
    environment:
      SATNOGS_RIG_IP: 'rigctld'
      SATNOGS_RIG_PORT: '4532'
    command: 'satnogs-client' 
    device_cgroup_rules:
      - 'c 189:* rwm'
    devices:
      - '/dev/bus/usb'
    volumes:
      - type: 'tmpfs'
        target: '/tmp'
      - type: 'volume'
        source: 'satnogs-client-latest'
        target: '/var/lib/satnogs-client'
    restart: 'unless-stopped'
    stop_grace_period: 1s

volumes:
  satnogs-client-latest:

nano station.env

copy paste this
SATNOGS_API_TOKEN=xxx
SATNOGS_ARTIFACTS_API_TOKEN=xxx
SATNOGS_STATION_ELEV=0
SATNOGS_STATION_ID=xxx
SATNOGS_STATION_LAT=xxx
SATNOGS_STATION_LON=xxx
SATNOGS_ARTIFACTS_ENABLED=True
SATNOGS_SOAPY_RX_DEVICE=driver=rtlsdr
SATNOGS_ANTENNA=RX
SATNOGS_LOG_LEVEL=DEBUG
#SATNOGS_LOG_LEVEL=INFO

SATNOGS_RX_SAMP_RATE=2.048e6
#Supported gain values: 0.0 0.9 1.4 2.7 3.7 7.7 8.7 12.5 14.4 15.7 16.6 19.7 20.7 22.9 25.4 28.0 29.7 32.8 33.8 36.4 37.2 38.6 40.2 42.1 43.4 43.9 44.5 48.0 49.6
SATNOGS_RF_GAIN=15.7
SATNOGS_PPM_ERROR=0

GR_SATELLITES_ENABLED=true
GR_SATELLITES_APP=gr_satellites
GR_SATELLITES_KEEPLOGS=true

UDP_DUMP_HOST=0.0.0.0

please change xxx value with your satnogs account.

API_TOKEN get here (API KEY):

ARTIFACTS_API_TOKEN get here

STATION_ID
image

you get after click and complete
image

run satnogs-client docker:

cd ~/station4365
sudo docker-compose down && sudo docker-compose up -d

open your browser, and check your satnogs dashboard
it should be green or orange label (testing mode)
image

troubleshoot:

check the log:

cd ~/station4365
sudo docker-compose logs -f

check the sdr:

cd ~/station4365
sudo docker-compose exec satnogs_client SoapySDRUtil --probe

please :heart: if it work for you. thank you!

5 Likes

I’m actually planning this for my January shack work (along with putting a hole in the exterior wall for antenna lines!), so thank you for the timely basic-guide for newbies (and RPi’s!)

I’ll let you know in a month or so how many mistakes I made in the process!

1 Like

Thanks, looking good.

But maybe it is necessary to explain the consequence of using this method compared to the
official SatNOGS ansible curl -sfL https://satno.gs/install | sh -s -- method ?

Jan | PE0SAT

2 Likes

I think this is the fastest and easiest way, especially when frequently testing and changing the station configurations, because you just need to restart docker; there’s no need to download docker images again from the beginning.

Besides that, this method is very practical, especially if I want to create a new station. For example, if I have three SDRs and want to run three stations, I only need one Raspberry Pi. I just need to copy paste and rename the folder to the new station

1 Like

Thanks for this tutorial.

I was able to get it to work once I added the rtlsdr rules to udev. You may want to explain what the user is expected to see for the log checking and the Soapy probe.

2 Likes

Interesting…. Thank you so much

1 Like