Deploying Wavelog
Introduction
Wavelog is a self-hosted web-based amateur radio logging application designed for ham radio operators. It provides comprehensive logging capabilities, award tracking, and integrations with popular amateur radio services and software. Wavelog is a modern fork of Cloudlog, offering enhanced features and active development.
Built with PHP and supporting MySQL/MariaDB databases, Wavelog delivers a responsive web interface that works on desktop and mobile devices, allowing you to log contacts from anywhere.
Key features of Wavelog include:
- Contact Logging: Log QSOs with comprehensive data fields including band, mode, frequency, RST, and notes
- Award Tracking: Track progress for DXCC, WAS, WAZ, SOTA, POTA, IOTA, and other awards
- QSL Management: Track QSL cards sent/received, LoTW, eQSL, and QRZ.com confirmations
- CAT Integration: Connect to your radio via Hamlib for automatic frequency and mode logging
- Digital Mode Integration: Support for WSJT-X, JTDX, and other digital mode software
- Clublog/LoTW/eQSL: Automatic uploads to popular confirmation services
- QRZ.com Integration: Lookup callsign information and upload logs
- Statistics: Comprehensive statistics and charts for your radio activity
- Multi-Station Support: Manage multiple callsigns and station locations
- Contest Logging: Basic contest logging capabilities
- ADIF Import/Export: Full ADIF file support for data exchange
- API Access: REST API for integration with other software
This guide walks you through deploying Wavelog on Klutch.sh using Docker with persistent storage for your radio logs.
Prerequisites
Before deploying Wavelog on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your Wavelog configuration
- A MySQL or MariaDB database (managed or deployed separately)
- Basic familiarity with Docker concepts
- Your amateur radio callsign and license information
Repository Structure
Create a GitHub repository with the following structure:
wavelog-deploy/├── Dockerfile└── .dockerignoreDockerfile
Create a Dockerfile in your repository:
FROM ghcr.io/wavelog/wavelog:latest
# Wavelog web interfaceEXPOSE 80
# The base image handles the entrypointEnvironment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
DB_HOST | Yes | - | MySQL/MariaDB host |
DB_NAME | Yes | - | Database name |
DB_USER | Yes | - | Database username |
DB_PASSWORD | Yes | - | Database password |
APP_URL | Yes | - | Public URL of your Wavelog instance |
TZ | No | UTC | Timezone |
Deployment on Klutch.sh
- Push your Dockerfile to your GitHub repository.
- Log in to Klutch.sh and create a new project.
- Create a new app within your project and connect your GitHub repository containing the Dockerfile.
- Configure the deployment settings: - Select **HTTP** as the traffic type - Set the internal port to **80**
- Add environment variables: - `DB_HOST`: Your database host - `DB_NAME`: Your database name - `DB_USER`: Your database username - `DB_PASSWORD`: Your database password (mark as sensitive) - `APP_URL`: Your app URL (e.g., `https://your-app.klutch.sh`) - `TZ`: Your timezone
- Attach a persistent volume: - Mount path: `/var/www/html/backup` - Recommended size: 5 GB - Purpose: Backup files and ADIF exports
- Click **Deploy** and wait for the build to complete.
- Access your Wavelog instance at the provided URL and complete the setup wizard.
Post-Deployment Configuration
After deployment:
- Complete the initial setup wizard
- Add your station profile(s) with callsign and location
- Configure QSL preferences (LoTW, eQSL, Clublog)
- Set up any CAT control or digital mode integrations
- Import existing logs via ADIF if migrating from another logger
Troubleshooting
Database Connection Failed
Verify your database credentials and ensure the MySQL/MariaDB server is accessible from Klutch.sh.
LoTW/eQSL Uploads Failing
Check that your credentials are correctly configured in the settings. Some services may require API keys or certificates.