H HamTab

Run HamTab on Your Own Machine

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 Release
MIT License · Free & open source · Works on any platform with Node.js

Installation Guide

Prerequisites

Node.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

Install & Run

git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start

Open http://localhost:3000 in your browser.

Prerequisites (Debian / Ubuntu)

# 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

Prerequisites (Fedora / RHEL)

sudo dnf install nodejs git python3 python3-pip python3-numpy

Install & Run

git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start

Open http://localhost:3000 in your browser.

Automated Install (systemd service)

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.

Management commands:
sudo systemctl status hamtab · sudo systemctl restart hamtab · sudo journalctl -u hamtab -f

Prerequisites

Install Node.js LTS and Git:

# PowerShell (or download from nodejs.org / git-scm.com)
winget install OpenJS.NodeJS.LTS
winget install Git.Git

Install & Run

git clone https://github.com/stevencheist/HamTabv1.git
cd HamTabv1
git checkout lanmode
npm install
npm start

Open http://localhost:3000 in your browser.

Run as a Windows Service

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
Management:
.\tools\nssm\nssm.exe status HamTab · .\tools\nssm\nssm.exe restart HamTab
Logs: logs\hamtab.log
Uninstall: powershell -ExecutionPolicy Bypass -File uninstall.ps1
WSL2: If running inside WSL2, follow the Linux instructions instead. HamTab will be accessible from Windows at http://localhost:3000.

Quick Start

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

# 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

Environment Variables

VariableDefaultDescription
PORT3000HTTP port
HTTPS_PORT3443HTTPS port (self-signed TLS)
WU_API_KEYWeather Underground API key (optional)
N2YO_API_KEYN2YO satellite tracking API key (optional)

Updating

docker compose pull && docker compose up -d
Note: The in-app update checker is disabled in Docker — use docker pull to update. The /app/certs volume persists TLS certificates across container restarts.

Automated Install (Recommended)

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.

Management commands:
sudo systemctl status hamtab · sudo systemctl restart hamtab · sudo journalctl -u hamtab -f

Manual Install

# 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

Docker on Raspberry Pi

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
Tip: Raspberry Pi 4 and 5 with 2GB+ RAM run HamTab comfortably. The VOACAP propagation engine is included in the Docker image, or install it manually with 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.

Prerequisites

Python 3.11 or higher is required. Check with python3 --version.

PlatformInstall Python
macOSbrew install python@3.12
Ubuntu / Debiansudo apt install python3 python3-pip python3-numpy
Fedora / RHELsudo dnf install python3 python3-pip python3-numpy
WindowsDownload from python.org (check "Add to PATH")
Raspberry Pi OSsudo apt install python3 python3-pip python3-numpy

Install dvoacap-python

git clone https://github.com/skyelaird/dvoacap-python.git
cd dvoacap-python
pip install -e .
If you get a "pip not found" or "externally-managed-environment" error, try pip install --user -e . or use a venv:
python3 -m venv ~/hamtab-venv && source ~/hamtab-venv/bin/activate && pip install -e .

Verify

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.

Docker users: VOACAP is pre-installed in the Docker image. No additional setup needed.

After Installation

On first startup, HamTab auto-generates a self-signed TLS certificate and starts two servers:

:3000
HTTP — localhost / desktop use
:3443
HTTPS — LAN / mobile access (required for GPS)

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.

Mobile / tablet access: Browsers require HTTPS for the Geolocation API. From other devices on your LAN, use https://<your-LAN-IP>:3443 and accept the self-signed certificate warning.