EzFD documentation
EzFD is a self-hosted, real-time, multi-operator logger for ARRL Field Day, Winter Field Day, and special event stations. Every operator logs into one shared log, and every QSO appears on every other device within milliseconds.
Start with whichever describes you.
I'm just here to operate
| Guide | What it covers |
|---|---|
| Quick start | You have a join code and a radio. Nothing to install, nothing to administer |
I want to run an event
| Guide | What it covers |
|---|---|
| Getting started | From an empty server to a logged QSO — install included |
| Operating | The logging screen in depth — entry, QSY, dupes, offline |
| Field Day | Classes, the exchange, scoring, bonuses, submitting your entry |
| Rules reference | The scoring rules for both contests, transcribed from the official documents |
| Special event stations | One callsign across many operators, and how the checkout works |
| Rig control and CW | CAT via Hamlib, automatic band/mode tracking, macro keying |
| Digital modes | WSJT-X and JTDX auto-logging, ADIF import |
| Troubleshooting | Symptom, cause, fix |
I run the server
| Guide | What it covers |
|---|---|
| Deployment | One-command install on a VPS, TLS, updates |
| Administration | ezfd-admin.sh, backups, restores, recovery |
| Configuration | Every environment variable |
| Changelog | What changed, newest first — read before and after an update |
I want to work on the code
| Guide | What it covers |
|---|---|
| Development | Local setup, the test suite, conventions |
| Architecture | How the real-time, offline and coordination pieces fit |
| Database | Schema reference and the constraints that matter |
| HTTP API | Every endpoint |
Reading these in the app
Every guide here is also served by a running EzFD instance at /docs —
linked from the footer of the home page and from Docs in the logging
header. That matters for a field server with no internet, where the operator
who needs the troubleshooting page is exactly the one who can't reach GitHub.
The app renders the same files from this directory, so there is one copy of each guide and no second version to drift.
Conventions used here
Commands prefixed $ run on your own machine; commands prefixed # run as
root on the server. Callsigns in examples are illustrative.
Times are UTC throughout the application, because contest logs are. Where a field accepts a local time, this documentation says so explicitly.