crabSDR mit Docker eigene Station einrichten
Das Image gibt es nur mit Konto von DO1XX.
Nach der Installation geht es im Sysop-Handbuch weiter: Admin-Seite, Bänder, Decoder, Relais, Verzeichnis, Probleme.
Was man braucht
Einen Rechner mit Linux (PC, Laptop oder Raspberry Pi 4/5 mit 64-Bit-System), einen RTL-SDR-Stick und eine Antenne.
Docker oder Podman. Das Image gibt es für amd64 und arm64; Docker nimmt automatisch das passende.
crabSDR with Docker setting up your own station
The image is only available with an account from DO1XX.
After the installation, continue with the sysop guide: admin page, bands, decoders, relay, directory, troubleshooting.
What you need
A computer running Linux (PC, laptop, or Raspberry Pi 4/5 with a 64-bit system), an RTL-SDR dongle, and an antenna.
Docker or Podman. The image is available for amd64 and arm64; Docker picks the right one automatically.
1 · Einmalig vorbereiten
curl -fsSL https://get.docker.com | sh # falls Docker fehlt (Debian, Ubuntu, Raspberry Pi OS) echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-sdr-blacklist.conf sudo modprobe -r dvb_usb_rtl28xxu # sonst belegt der DVB-Treiber den Stick
2 · Anmelden
docker login registry.crabsdr.de
Name und Passwort kommen von DO1XX. registry.crabsdr.de ist keine Webseite, Docker holt das Image von dort.
3 · Compose-Datei
Ordner anlegen, z. B. ~/crabsdr, und darin docker-compose.yml speichern:
services:
crabsdr:
image: registry.crabsdr.de/crabsdr:latest
restart: unless-stopped
init: true
ports: ["8080:8080"]
volumes: ["./data:/data"]
devices: ["/dev/bus/usb:/dev/bus/usb"]
Das Image enthält alle Betriebsarten einschließlich T; crabsdr-t ist ein älterer Name für dasselbe Image.
RX888 oder USRP: Beide melden sich nach dem Firmware-Laden unter neuer USB-Adresse an. Statt der Zeile
devices: den USB-Ordner einbinden und USB-Geräte erlauben:
volumes: ["./data:/data", "/dev/bus/usb:/dev/bus/usb"]
device_cgroup_rules: ["c 189:* rmw"]
4 · Starten
cd ~/crabsdr docker compose up -d docker compose logs | grep Passwort # Admin-Passwort vom ersten Start
Die Seite: http://<rechner>:8080, Admin: http://<rechner>:8080/admin/.
Beim ersten Start entsteht ./data/config.toml, ein Beispiel für einen Stick auf 2 m.
5 · Anpassen
In ./data/config.toml Stationsname, Locator, Frequenz und Verstärkung eintragen (jede Zeile ist kommentiert). Dann:
docker compose run --rm --entrypoint crabsdr-server crabsdr --check /data/config.toml docker compose restart
1 · One-time preparation
curl -fsSL https://get.docker.com | sh # if Docker is missing (Debian, Ubuntu, Raspberry Pi OS) echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/rtl-sdr-blacklist.conf sudo modprobe -r dvb_usb_rtl28xxu # otherwise the DVB driver grabs the dongle
2 · Sign in
docker login registry.crabsdr.de
Name and password come from DO1XX. registry.crabsdr.de is not a website; Docker fetches the image from there.
3 · Compose file
Create a folder, e.g. ~/crabsdr, and save docker-compose.yml in it:
services:
crabsdr:
image: registry.crabsdr.de/crabsdr:latest
restart: unless-stopped
init: true
ports: ["8080:8080"]
volumes: ["./data:/data"]
devices: ["/dev/bus/usb:/dev/bus/usb"]
The image contains all modes including T; crabsdr-t is an older name for the same image.
RX888 or USRP: Both re-enumerate under a new USB address after loading their firmware. Instead of the
devices: line, mount the USB folder and allow USB devices:
volumes: ["./data:/data", "/dev/bus/usb:/dev/bus/usb"]
device_cgroup_rules: ["c 189:* rmw"]
4 · Start
cd ~/crabsdr docker compose up -d docker compose logs | grep Passwort # admin password from the first start
The page: http://<computer>:8080, admin: http://<computer>:8080/admin/.
The first start creates ./data/config.toml, an example for one dongle on 2 m.
5 · Adjust
In ./data/config.toml, enter the station name, locator, frequency, and gain (every line is commented). Then:
docker compose run --rm --entrypoint crabsdr-server crabsdr --check /data/config.toml docker compose restart
Mirics MSi2500 („MSI SDR“)
Auf dem Rechner zusätzlich die Kernel-Treiber sperren und den Stick danach neu einstecken:
printf 'blacklist msi2500\nblacklist msi001\n' | sudo tee /etc/modprobe.d/msi2500.conf sudo modprobe -r msi2500 msi001
Dann im Admin-Bereich unter Konfiguration (Textansicht) dieses Band einfügen bzw. das RTL-Band ersetzen und speichern.
Die Werte laufen so an DF0HHH; ein fertiger Block steht auch auskommentiert in ./data/config.toml.
[[bands]]
id = "2m-msi"
label = "2 m MSI"
driver = "rx_sdr"
device = "driver=soapyMiri"
center_freq = 145000000
sample_rate = 2048000
gain = 54
gain_elements = { LNA = 0, Mixer = 19, Mixbuffer = 0, Baseband = 35 }
settings = "transfer=BULK,bandwidth=1536000"
mode = "fm"
Übersteuert es (Rauschteppich hoch, Geisterträger), Baseband kleiner; ist alles zu leise, LNA = 24
probieren. Bei zwei MSi am selben Rechner braucht jedes Band die Angabe aus docker compose exec crabsdr SoapySDRUtil --find.
Mirics MSi2500 (“MSI SDR”)
On the computer, additionally block the kernel drivers and then plug the dongle in again:
printf 'blacklist msi2500\nblacklist msi001\n' | sudo tee /etc/modprobe.d/msi2500.conf sudo modprobe -r msi2500 msi001
Then, in the admin area under Configuration (text view), insert this band or replace the RTL band, and save.
These values are in use at DF0HHH; a ready-made block is also included, commented out, in ./data/config.toml.
[[bands]]
id = "2m-msi"
label = "2 m MSI"
driver = "rx_sdr"
device = "driver=soapyMiri"
center_freq = 145000000
sample_rate = 2048000
gain = 54
gain_elements = { LNA = 0, Mixer = 19, Mixbuffer = 0, Baseband = 35 }
settings = "transfer=BULK,bandwidth=1536000"
mode = "fm"
If it overloads (high noise floor, ghost carriers), lower Baseband; if everything is too quiet, try LNA = 24.
With two MSi on the same computer, each band needs the device string from docker compose exec crabsdr SoapySDRUtil --find.
Aktualisieren
docker compose pull && docker compose up -d
Konfiguration und Datenbank in ./data bleiben. Eine feste Version statt latest:
image: registry.crabsdr.de/crabsdr:1.6.0-52.
Mit Podman
podman login registry.crabsdr.de podman run -d --name crabsdr --init --restart unless-stopped -p 8080:8080 \ -v ~/crabsdr/data:/data:Z --device /dev/bus/usb registry.crabsdr.de/crabsdr:latest podman pull registry.crabsdr.de/crabsdr:latest # Aktualisieren: danach Container löschen und neu anlegen
Update
docker compose pull && docker compose up -d
Configuration and database in ./data are kept. A fixed version instead of latest:
image: registry.crabsdr.de/crabsdr:1.6.0-52.
With Podman
podman login registry.crabsdr.de podman run -d --name crabsdr --init --restart unless-stopped -p 8080:8080 \ -v ~/crabsdr/data:/data:Z --device /dev/bus/usb registry.crabsdr.de/crabsdr:latest podman pull registry.crabsdr.de/crabsdr:latest # update: then remove the container and create it again
Probleme
Band „gestört“: Stick steckt nicht, DVB-Treiber nicht gesperrt (Schritt 1, danach Stick neu einstecken) oder ein
anderes Programm nutzt ihn. Übersteuerung (Geisterträger, Rauschteppich springt): gain kleiner.
Fragen an info@crabsdr.de.
Troubleshooting
Band “faulty”: dongle not plugged in, DVB driver not blocked (step 1, then plug the dongle in again), or another
program is using it. Overload (ghost carriers, jumping noise floor): lower gain.
Questions to info@crabsdr.de.