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.
- 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
pulseaudioon MacOS.
A lot of this is taken from this gist and this Dockerfile
Firstly, install.
brew install pulseaudioNow run the daemon.
pulseaudio --load=module-native-protocol-tcp --exit-idle-time=-1 --daemonConfirm it is running.
pulseaudio --check -vSetup 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 1As 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 1This 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 = 5050Now 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:latestIf 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:latestA 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:5050This can then be run with:
docker-compose up -dAnd its logs viewed with:
docker-compose logs -fOnce 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.