A hardened, multi-platform Docker image for OpenHamClock — a ham radio dashboard featuring DX clusters, band conditions, solar data, WSJT-X integration, and more.
Built on Alpine Linux with a non-root user, minimal attack surface, and automatic daily updates tracking upstream releases.
Platforms: linux/amd64 · linux/arm64
clock.ham-radio.nl — running the linux/arm64 build (latest).
docker pull byluke/openhamclock:latestservices:
openhamclock:
image: byluke/openhamclock:latest
container_name: openhamclock
restart: unless-stopped
ports:
- "3000:3000" # Web UI
- "2237:2237/udp" # WSJT-X UDP relay
- "12060:12060/tcp" # N1MM / DXLog integration
volumes:
- openhamclock-data:/app/data
environment:
- NODE_ENV=production
- PORT=3000
- TZ=Europe/Amsterdam
healthcheck:
test: ["CMD", "wget", "-qO-", "http://localhost:3000/api/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 15s
volumes:
openhamclock-data:Save as docker-compose.yml and run:
docker compose up -dThen open http://localhost:3000 in your browser.
| Port | Protocol | Purpose |
|---|---|---|
3000 |
TCP | Web UI |
2237 |
UDP | WSJT-X relay |
12060 |
TCP | N1MM / DXLog integration |
- Base image:
node:20-alpine - Runs as non-root user
hamclock - PID 1 managed by
tini - Alpine packages upgraded at build time for latest security patches
- Images are rebuilt automatically when upstream releases a new version
On first run the application writes a .env file from its built-in defaults. Edit that file and restart the container to apply changes. The full variable reference is in the upstream README.
The most important variables to set:
| Variable | Default | Description |
|---|---|---|
CALLSIGN |
N0CALL |
Your amateur radio callsign |
LOCATOR |
FN31 |
Maidenhead grid locator (4–6 chars) |
TZ |
(browser) | IANA timezone (e.g. Europe/Amsterdam) |
UNITS |
imperial |
metric or imperial |
TIME_FORMAT |
12 |
12 or 24 hour clock |
THEME |
dark |
dark, light, legacy, or retro |
WSJTX_ENABLED |
true |
Enable WSJT-X UDP listener |
WSJTX_UDP_PORT |
2237 |
UDP port for WSJT-X decoded messages |
SPOT_RETENTION_MINUTES |
30 |
DX spot retention window (5–30 min) |
DX_CLUSTER_CALLSIGN |
(CALLSIGN-56) | Login callsign for DX Spider cluster |
LOG_LEVEL |
warn |
debug, info, warn, or error |
Pass them via the environment block in your compose file or as -e flags with docker run.
All application code belongs to accius/openhamclock. This repository only provides the hardened Docker packaging.