3.7 KiB
Running FreeDATA in Docker
This image was built to allow FreeDATA to be run on MacOS. These instructions are for MacOS, but should work on any platform that supports Docker.
Prerequisites
- An install of Docker (eg. Docker Desktop for MacOS).
- Some familiarity with the command line (eg: via
Terminal.app
). - Brew - I've tried to avoid this as a requirement but it is the easiest way to install
pulseaudio
on MacOS.
Setting up
PulseAudio
A lot of this is taken from this gist and this Dockerfile
Firstly, install.
brew install pulseaudio
Now run the daemon.
pulseaudio --load=module-native-protocol-tcp --exit-idle-time=-1 --daemon
Confirm it is running.
pulseaudio --check -v
Setup the audio output, this will list your audio output devices. The *
will show the default output.
pacmd list-sinks | grep -e 'name:' -e 'index:' -e 'card:'
If you need to change your default output then this can be done by specifying the index:
pacmd set-default-sink 1
As will above, setup the the audio source.
pacmd list-sources | grep -e 'name:' -e 'index:' -e 'card:'
Any updates to sources can be triggered with:
pacmd set-default-source 1
FreeDATA Image
This can be run in one of two ways. By running the docker image with a long command line or via docker compose
. Lets start with the long command line.
On first run, this will copy the sample config file into the ./freedata-data
directory. This can be edited to suit your needs via the GUI. However, to get the GUI to run you will need to update the NETWORK
section in config.ini
file to be:
[NETWORK]
modemaddress = 0.0.0.0
modemport = 5050
Now we can start the server.
docker run --rm -it \
-v ./freedata-data:/data
-e PULSE_SERVER=host.docker.internal
-v /$HOME/.config/pulse:/home/freedata/.config/pulse \
-p 5050:5050 \
--name freedata \
ghcr.io/dj2ls/freedata:latest
If you'd like to start a rigctld
instance in the container (see the wiki), the arguments can be provided with the RIGCTL_ARGS
environment variable. In the examples below I'm passing a model for a FlexRadio at IP 192.168.0.10
listening on port 6701
:
docker run --rm -it \
-v ./freedata-data:/data
-e PULSE_SERVER=host.docker.internal
-e RIGCTLD_ARGS="--model=2036 --port=4532 --rig-file=192.168.0.10:6701"
-v /$HOME/.config/pulse:/home/freedata/.config/pulse \
-p 5050:5050 \
--name freedata \
ghcr.io/dj2ls/freedata:latest
A slightly more tidy method of provding the same config is via docker compose
. Create a docker-compose.yml
file with the following content:
services:
freedata:
container_name: freedata
image: ghcr.io/dj2ls/freedata:latest
pull_policy: always
volumes:
- ./freedata-data:/data
- /$HOME/.config/pulse:/home/freedata/.config/pulse
environment:
- PULSE_SERVER=host.docker.internal
- RIGCTLD_ARGS=--model=2036 --port=4532 --rig-file=192.168.0.10:6701
ports:
- 5050:5050
This can then be run with:
docker-compose up -d
And its logs viewed with:
docker-compose logs -f
Usage
Once the server is running, you can access the GUI by visiting http://localhost:5050/gui
in your browser.
You will need to set up your audio device and radio config.