Skip to content
Alain De Carolis edited this page Oct 31, 2026 · 1 revision

Docker

The image k1fm/wfweb on Docker Hub is multi-arch (linux/amd64 and linux/arm64): x86 servers, Raspberry Pi, and everything between. It runs the Server build. DOCKER.md in the repository is the full reference; this page is the short version.

Always mount a volume at /data. It holds the settings, the TLS certificate and the QSO logbook. Without it, all three disappear with the container (wfweb warns in its log and in the web UI's log panel).

LAN radio

docker run --rm -it \
  -v wfweb-data:/data \
  -p 8080:8080 -p 8081:8081 \
  k1fm/wfweb --lan 192.168.1.100 --lan-user admin --lan-pass secret

Add -e WFWEB_NO_AUTOCONNECT=1 to start with the LAN session closed and connect from the web UI's Reconnect button, so a container restart never grabs a radio another client is using.

USB radio

Share the serial device and the sound subsystem with the container:

docker run --rm -it \
  -v wfweb-data:/data \
  --device /dev/ttyUSB0 \
  --device /dev/snd --group-add audio \
  -p 8080:8080 -p 8081:8081 \
  k1fm/wfweb

With more than one serial device, or when the radio's USB audio codec must be pinned, name them:

docker run --rm -it \
  -v wfweb-data:/data \
  --device /dev/ttyUSB1 \
  --device /dev/snd --group-add audio \
  -p 8080:8080 -p 8081:8081 \
  k1fm/wfweb --serial-port /dev/ttyUSB1 --audio-device 'USB Audio CODEC'

ls /dev/ttyUSB* on the host shows the device; --audio-device list prints the audio devices wfweb can see.

Your own settings file

docker run --rm -it \
  -v wfweb-data:/data \
  -v /path/to/my-wfweb.conf:/config/wfweb.conf:ro \
  --device /dev/ttyUSB0 \
  -p 8080:8080 -p 8081:8081 \
  k1fm/wfweb -s /config/wfweb.conf

One container per radio, each with its own settings file. See Configuration File.

Upgrading from v0.9.0 or earlier

Settings used to live at /root/.config/wfweb/wfweb.conf. If you mounted a volume there, copy the file to /data/wfweb/wfweb.conf in the new volume, or re-enter the settings in the web UI once.

Troubleshooting in a container

  • Could not find an Icom serial port: pass the device with --device and name it with --serial-port.
  • Audio input device default Not found: pass --device /dev/snd --group-add audio, and check the codec shows in aplay -l on the host. The log says Web: Selected rig audio device: when the USB codec is found.
  • PulseAudio warnings: harmless. The container uses ALSA directly.
  • Certificate warning in the browser: expected, the container generates a self-signed certificate on first run. Accept it, or put your own wfweb-web.crt and wfweb-web.key under /data/wfweb/wfweb/.

Building the image locally

docker build -f docker/Dockerfile -t wfweb .
docker run --rm -it --device /dev/ttyUSB0 -p 8080:8080 -p 8081:8081 wfweb

Clone this wiki locally