Running AI6VN's in a Docker container


I have just begun running AI6VN's `` in a Docker container. (Thank you, Robert, for the script. Fantastic work!).
The solution is particularly useful if you intend to run the monitor in the cloud and/or if you want to do it without installing anything on your machine (except for the Docker engine, of course!).

Here is my Dockefile:

FROM debian:9

RUN deps='gpg curl git' && \
    apt-get update && apt-get install -y $deps bc ntp python-numpy procps && \
    apt-key adv --recv-keys --keyserver 862549F9 && \
    echo "deb xenial main" >> /etc/apt/sources.list && \
    apt-get update && apt-get install -y wsjtx && \
    cd /root && git clone && chmod +x /root/kiwiclient/ && \
    mkdir /root/kiwiclient/kiwiwspr && \
    curl -L > /root/kiwiclient/kiwiwspr/ && \
    chmod +x /root/kiwiclient/kiwiwspr/ && \
    apt-get purge -y --auto-remove $deps

COPY /root/kiwiclient/kiwiwspr/
WORKDIR /root/kiwiclient/kiwiwspr
ENTRYPOINT ["/root/kiwiclient/kiwiwspr/"]
Since Rob's script always and only run daemonized, I added a little check in the Entrypoint:
./ -w a
while ps cax | grep -q
	sleep 3
Once the image is built (and perhaps uploaded to Dockerhub) you can run everything with a single command:

docker run -d --rm --name kiwiwspr -v [full path to your .conf file]:/root/kiwiclient/kiwiwspr/kiwiwspr.conf [docker image]
Here is an example configuration file:
declare KIWI_LIST=(
###  OurID(no spaces)      IP:PORT             MyCall      MyGrid  KiwPassword (NULL => none required)
     "SDR_0                MY_HOST:8073        MYCALL      MYGRID  NULL"

    "07:00                                                    SDR_0,40 SDR_0,30 SDR_0,20 SDR_0,17 SDR_0,15 SDR_0,10"
    "16:00   SDR_0,2200 SDR_0,630 SDR_0,160 SDR_0,80 SDR_0,60 SDR_0,40"
- no need to install anything (except for Docker, if you don't have it already)
- integrate WSPR monitoring on your kiwi by running a single command
- runs on on Linux, macOS or Windows - unmodified
- easily runs in the cloud

- Needs the Docker engine
- Will run under UTC time
- more disk space is needed

- Make wsprd run on Alpine instead of Debian
- Remove x11 and all of its dependencies
- Test if the image can run on a Raspberry PI

I hope this can be of some interest to someone.



  • HI Alain,
    I wrote my script in bash and have it running natively on a Pi, i86 Debian and Max OSX. My primary goal for further development work is additional functionality, but let me know if I can make changes to make it more portable as well.
  • Rob,

    Yes I noticed the effort to have the daemon run on Macs. Yet, I thought that running it with a single command and without installing anything was a nice thing to have.
    I didn't want to publish my own image but if I had anyone could have run your script by running a single command, literally in one second.

    A change that would be definitely appropriate for running this in a container would be the possibility of starting the service without daemonizing it and (for extra points) having the output streamed to STDOUT and STDERR rather than written to logfiles.

  • edited January 2019
    In future versions I will make it possible to suppress the registration of the service to run at startup. Unfortunately I see no way to merge the recording, decoding and posting into a single thread. So monitoring and diagnostic printouts would be jumbled together if they were all going to stdout or stderr. Still, I like your attempt to simplify installation and will consider how to address it. I am currently working to expand the supported receivers beyond the Kiwi so that VHF/UHF signals can be spotted by RTL-SDRs and other receivers, but the Kiwi is the best and cheapest receiver for LF/MF/HF reception.
Sign In or Register to comment.