Self-host the full amateur radio dashboard on your home network. All the same POTA, SOTA, DX, propagation, satellite, and weather widgets — running locally with zero cloud dependency.
Download Latest ReleaseNode.js 18+ and Git. Python 3.11+ is optional (for VOACAP propagation predictions).
# Install Node.js via Homebrew
brew install node
# Or via nvm (recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
source ~/.zshrc
nvm install 20
# Git (if not already installed)
xcode-select --install
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start
Open http://localhost:3000 in your browser.
# Node.js via NodeSource
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs git
# Optional: Python 3.11+ for VOACAP propagation
sudo apt-get install -y python3 python3-pip python3-numpy
sudo dnf install nodejs git python3 python3-pip python3-numpy
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start
Open http://localhost:3000 in your browser.
The included install script handles everything — installs Node.js if needed, configures ports, and optionally sets up a systemd service for boot-start with automatic crash recovery.
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
sudo bash install.sh
The installer prompts you for ports (default 3000/3443), Weather Underground API key (optional), and whether to start on boot.
sudo systemctl status hamtab ·
sudo systemctl restart hamtab ·
sudo journalctl -u hamtab -f
Install Node.js LTS and Git:
# PowerShell (or download from nodejs.org / git-scm.com)
winget install OpenJS.NodeJS.LTS
winget install Git.Git
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start
Open http://localhost:3000 in your browser.
To run HamTab as a Windows service that starts automatically on boot, use the included PowerShell installer. It uses NSSM (downloaded automatically) to register HamTab as a service.
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
powershell -ExecutionPolicy Bypass -File install.ps1
.\tools\nssm\nssm.exe status HamTab ·
.\tools\nssm\nssm.exe restart HamTablogs\hamtab.logpowershell -ExecutionPolicy Bypass -File uninstall.ps1
http://localhost:3000.
HamTab is available as a Docker image with full VOACAP propagation support. Works on x86-64 and ARM64 (Raspberry Pi 4/5, Synology, TrueNAS, Unraid).
docker run -d -p 3000:3000 -p 3443:3443 stevencheist/hamtab
Open http://localhost:3000 in your browser.
# docker-compose.yml
services:
hamtab:
image: stevencheist/hamtab:latest
ports:
- "3000:3000"
- "3443:3443"
volumes:
- hamtab-certs:/app/certs
environment:
- PORT=3000
- HTTPS_PORT=3443
# - WU_API_KEY=your_key_here
# - N2YO_API_KEY=your_key_here
restart: unless-stopped
volumes:
hamtab-certs:
docker compose up -d
| Variable | Default | Description |
|---|---|---|
PORT | 3000 | HTTP port |
HTTPS_PORT | 3443 | HTTPS port (self-signed TLS) |
WU_API_KEY | — | Weather Underground API key (optional) |
N2YO_API_KEY | — | N2YO satellite tracking API key (optional) |
docker compose pull && docker compose up -d
docker pull to update. The /app/certs volume persists TLS certificates across container restarts.
The install script handles everything on Raspberry Pi OS — installs Node.js, configures ports, and optionally sets up a systemd service for boot-start with automatic crash recovery.
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
sudo bash install.sh
The installer prompts you for ports (default 3000/3443), Weather Underground API key (optional), and whether to start on boot. After install, the app runs from /opt/hamtab.
sudo systemctl status hamtab ·
sudo systemctl restart hamtab ·
sudo journalctl -u hamtab -f
# Install Node.js via NodeSource
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs git
git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start
The Docker image supports ARM64 natively. If your Pi runs a 64-bit OS:
docker run -d -p 3000:3000 -p 3443:3443 stevencheist/hamtab
sudo apt install python3 python3-pip python3-numpy on Pi OS Bookworm.
HamTab includes a real HF propagation prediction engine powered by dvoacap-python. When available, it provides accurate 24-hour band reliability predictions, REL heatmap overlays, and circle range overlays on the map.
Without Python, HamTab still works — it falls back to a simplified server-side propagation model.
Python 3.11 or higher is required. Check with python3 --version.
| Platform | Install Python |
|---|---|
| macOS | brew install python@3.12 |
| Ubuntu / Debian | sudo apt install python3 python3-pip python3-numpy |
| Fedora / RHEL | sudo dnf install python3 python3-pip python3-numpy |
| Windows | Download from python.org (check "Add to PATH") |
| Raspberry Pi OS | sudo apt install python3 python3-pip python3-numpy |
git clone https://github.com/skyelaird/dvoacap-python.git
cd dvoacap-python
pip install -e .
pip install --user -e . or use a venv:python3 -m venv ~/hamtab-venv && source ~/hamtab-venv/bin/activate && pip install -e .
Restart HamTab and check the server logs. You should see:
VOACAP bridge: dvoacap-python detected (Python X.XX)
VOACAP bridge: Ready
The VOACAP widget in the dashboard will show full 24-hour band predictions and the map will display REL heatmap overlays.
On first startup, HamTab auto-generates a self-signed TLS certificate and starts two servers:
Ports are configurable during install or by editing the .env file (PORT and HTTPS_PORT).
Open http://localhost:3000 and you'll be prompted to configure your callsign and location.
https://<your-LAN-IP>:3443 and accept the self-signed certificate warning.