### Local Documentation Preview Setup Source: https://docs.wavelog.org/project/contributing Install dependencies and start the Zensical development server to preview documentation changes locally. Python 3.x is required. ```bash # Install dependencies in a venv (Python 3.x required) pip install -r requirements.txt # Start the live-reloading development server zensical serve ``` -------------------------------- ### Install and Secure MySQL Database on OpenBSD Source: https://docs.wavelog.org/getting-started/installation/openbsd Initializes the MySQL database, starts the MySQL service, and runs the secure installation script. These commands are essential for setting up a secure database environment. ```bash doas /usr/local/bin/mysql_install_db doas rcctl start mysqld doas /usr/local/bin/mysql_secure_installation ``` -------------------------------- ### Install Backup Tools Source: https://docs.wavelog.org/admin-guide/administration/backup Installs borgbackup and backupninja on Debian/Ubuntu systems. ```bash apt install borgbackup backupninja ``` -------------------------------- ### Example On-Air Widget URL with Parameters Source: https://docs.wavelog.org/user-guide/features/on-air-widget This URL demonstrates how to configure the On-Air widget's appearance and behavior using GET parameters. It sets font size, theme, and radio timeout. ```URL https://[wavelog url]/index.php/widgets/on_air/xxxxxxxxxx?text_size=3&theme=darkly&radio_timeout_seconds=90&nojs=1 ``` -------------------------------- ### Install Git Source: https://docs.wavelog.org/getting-started/installation/freebsd Installs the Git version control system, which is recommended for acquiring Wavelog application files. ```bash pkg install git ``` -------------------------------- ### Install git Source: https://docs.wavelog.org/getting-started/installation/raspberry-pi Installs the git version control system and clones the Wavelog repository into the web server directory. ```bash sudo apt-get install git cd /var/www git clone --depth 1 https://github.com/wavelog/wavelog.git wavelog ``` -------------------------------- ### Access Wavelog Install Wizard Source: https://docs.wavelog.org/getting-started/installation/windows-wamp URL to access the Wavelog installation wizard in a web browser after cloning the repository. ```text http://localhost/wavelog/install ``` -------------------------------- ### Example Static Map Configuration Source: https://docs.wavelog.org/user-guide/features/static-maps This example demonstrates how to configure the Static Map API to show the last 500 QSOs on the 160m band, with Pathlines enabled and Nightshadow disabled. ```url https://[wavelog url]/index.php/staticmap/render/[slug]?qsocount=500&band=160m&pl=1&ns=0 ``` -------------------------------- ### Wavelog Worker Configuration File Example Source: https://docs.wavelog.org/wavelog-worker/configuration A complete example of the `config.yaml` file, showing essential settings like ports, worker secret, and optional Redis URL. ```yaml # config.yaml ws_port: 9000 # WebSocket port — browsers connect here internal_port: 9001 # Internal API port — Wavelog PHP connects here # Shared secret — must match the value in Wavelog's worker.php config. # Minimum 32 characters. Generate with: openssl rand -hex 32 worker_secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" # Optional: Redis URL for multi-instance clustering. # Omit or leave empty for single-instance mode. # redis_url: "redis://localhost:6379/2" ``` -------------------------------- ### Access Wavelog Installer Source: https://docs.wavelog.org/getting-started/installation/docker Navigate to the Wavelog installer URL in your browser. Ensure you use the correct server IP and port. ```text http://[your-server-ip]:8086/install ``` -------------------------------- ### Static Map URL with Options Source: https://docs.wavelog.org/user-guide/features/static-maps Example of a Static Map API URL configured with multiple GET parameters to customize the map output. ```url https://[wavelog url]/index.php/staticmap/render/[slug]/?option0=value&option1=value&option2=value ``` -------------------------------- ### Reset Wavelog Database and Configurations (Manual Install) Source: https://docs.wavelog.org/admin-guide/maintenance/reset Commands to drop and recreate the Wavelog database, and remove configuration files and the installation lock for a manual installation. Ensure you replace '[username]' and 'wavelog' with your specific details. ```bash # Drop the database (replace 'wavelog' with your actual database name) mysql -u [username] -p -e "DROP DATABASE wavelog; CREATE DATABASE wavelog;" ``` ```bash # Remove configuration files and installation lock cd /path/to/wavelog rm -rf application/config/config.php rm -rf application/config/database.php rm -f install/.lock ``` -------------------------------- ### Start Wavelog Docker Stack Source: https://docs.wavelog.org/getting-started/installation/docker Start the Wavelog and MariaDB containers in detached mode. ```bash docker compose up -d ``` -------------------------------- ### Redis URL Configuration Example Source: https://docs.wavelog.org/wavelog-worker/configuration Example of setting the `redis_url` for enabling Wavelog Worker clustering with Redis. ```yaml redis_url: "redis://localhost:6379/2" ``` -------------------------------- ### Install and Enable mod_auth_openidc Source: https://docs.wavelog.org/admin-guide/configuration/apache2-mod-auth-openidc Installs the mod_auth_openidc module and enables it along with the headers module in Apache. Reloads Apache to apply changes. ```bash apt install libapache2-mod-auth-openidc a2enmod auth_openidc headers systemctl reload apache2 ``` -------------------------------- ### Full MQTT Configuration with Authentication Source: https://docs.wavelog.org/developer/mqtt This example demonstrates a complete MQTT configuration, including server, port, username, password, and a custom topic prefix. Authentication is optional. ```php $config['mqtt_server'] = 'broker.example.com'; $config['mqtt_port'] = 1883; $config['mqtt_username'] = 'wavelog'; $config['mqtt_password'] = 'secret'; $config['mqtt_prefix'] = 'wavelog/'; ``` -------------------------------- ### Install Python Requests Library Source: https://docs.wavelog.org/user-guide/integrations/radio-interface Installs the 'requests' library required for the Python Wavelog API script. Run this command in your terminal. ```bash pip install requests ``` -------------------------------- ### Install backupninja on Debian Source: https://docs.wavelog.org/admin-guide/administration/backup-strategies Installs the backupninja package using apt on Debian-based systems. This is the first step to configuring automated backups. ```bash sudo apt install backupninja ``` -------------------------------- ### Set Directory Ownership and Permissions for Wavelog Source: https://docs.wavelog.org/getting-started/installation/linux Sets ownership and permissions for Wavelog directories. Adjust the 'directory' variable to your Wavelog installation path. This example uses 'www-data' for Debian-based systems and 'http' for Arch/Manjaro. ```bash directory=/var/www/html # debian sudo chown -R www-data:www-data $directory # arch linux / manjaro linux sudo chown -R http:http $directory # change permissions of directories and files sudo find $directory -type d -exec chmod 755 {} \; sudo find $directory -type f -exec chmod 664 {} \; ``` -------------------------------- ### Install PHP81 and Required Modules Source: https://docs.wavelog.org/getting-started/installation/freebsd Installs PHP version 8.1 and essential modules required for Wavelog. Ensure to use the highest available version number from your distribution that matches your installed PHP version. ```bash pkg install php81 php81-ctype php81-curl php81-filter php81-mbstring php81-mysqli php81-session php81-simplexml php81-xml php81-zip php81-zlib ``` -------------------------------- ### Verify Docker Installation Source: https://docs.wavelog.org/getting-started/installation/docker Check if Docker and Docker Compose are installed on your system. ```bash docker --version docker compose version ``` -------------------------------- ### Install PHP Modules on Debian/Ubuntu Source: https://docs.wavelog.org/getting-started/installation/linux Installs necessary PHP modules for Wavelog on Debian or Ubuntu systems. Ensure your LAMP stack is already set up. ```bash sudo apt install php-curl php-mysql php-mbstring php-xml php-zip php-gd php-apcu ``` -------------------------------- ### Log Initial QSO with Time and Callsign Source: https://docs.wavelog.org/user-guide/logbook/simple-fle Start logging a QSO by providing the full time (HHMM UTC) followed by the callsign. ```SimpleFLE 1734 4W7EST ``` -------------------------------- ### Install PHP and Required Packages on OpenBSD Source: https://docs.wavelog.org/getting-started/installation/openbsd Installs PHP 8.0, the mysqli extension for database interaction, MariaDB server, and curl with its PHP extension. This is a prerequisite for running Wavelog. ```bash doas pkg_add php-mysqli mariadb-server curl php-curl ``` -------------------------------- ### Subscribe to All Wavelog Events with mosquitto_sub Source: https://docs.wavelog.org/developer/mqtt This command-line example uses `mosquitto_sub` to subscribe to all MQTT topics prefixed with 'wavelog/'. It displays the topic and message for each event. ```bash # All Wavelog events mosquitto_sub -h broker.example.com -t 'wavelog/#' -v ``` -------------------------------- ### Last QSOs Widget URL Example Source: https://docs.wavelog.org/user-guide/features/last-qsos-widget Shows how to configure the Last QSOs widget to display the last 50 QSOs with a dark theme and text size of 5. ```URL https://[wavelog url]/index.php/widgets/qsos/[slug]?qso_count=50&theme=dark&text_size=5 ``` -------------------------------- ### Wavelog Worker Configuration File Example Source: https://docs.wavelog.org/wavelog-worker/installation Create a config.yaml file for the Wavelog Worker. Ensure the worker_secret is a strong, randomly generated string. ```yaml ws_port: 9000 # browsers connect here internal_port: 9001 # Wavelog PHP calls this port worker_secret: "your-secret-here-minimum-32-characters" ``` -------------------------------- ### Private Lookup API CLI Example Source: https://docs.wavelog.org/developer/api Example of how to perform a private lookup using `curl`. This demonstrates sending a POST request with the necessary payload to the API endpoint. ```bash curl https://[URL]/api/private_lookup -X POST -d '{"key":"[key]","callsign":"VK4XY","band":"20m","mode":"SSB"}' ``` -------------------------------- ### Navigate to Wavelog Directory Source: https://docs.wavelog.org/getting-started/updating Change to the directory where Wavelog is installed on your Linux server. This is typically the webroot directory. ```bash cd /var/www/html ``` -------------------------------- ### Install LNMP Stack and Dependencies on Arch/Manjaro Source: https://docs.wavelog.org/getting-started/installation/linux Installs the LNMP stack (Linux, Nginx, MySQL, PHP) and necessary dependencies on Arch Linux or Manjaro. This includes initializing and restarting MariaDB. ```bash # to install the LNMP stack and dependencies, you can run this command sudo pacman -S git nginx php-fpm php-gd php-apcu php mariadb # this will initialize mariadb - do not execute it if you have already databases running! mariadb-install-db --user=mysql --basedir=/usr --datadir=/var/lib/mysql # restart mariadb systemctl restart mariadb ``` -------------------------------- ### Create Wavelog Database Source: https://docs.wavelog.org/getting-started/installation/openbsd Creates a new database for Wavelog. Remember to replace 'db_name' with your desired database name, as it will be needed later in the Wavelog installation wizard. ```sql CREATE DATABASE db_name; ``` -------------------------------- ### Run Redis with Docker Source: https://docs.wavelog.org/wavelog-worker/clustering Starts a Redis instance in a Docker container for use with Wavelog clustering. Ensure Redis is accessible by all Worker instances. ```bash docker run -d \ --name redis \ --restart unless-stopped \ -p 6379:6379 \ redis:7-alpine redis-server --save "" ``` -------------------------------- ### Clone Wavelog Repository Source: https://docs.wavelog.org/getting-started/installation/openbsd Fetches the latest version of Wavelog from its GitHub repository into a specified output directory. Ensure Git is installed first using 'pkg_add git'. ```bash doas git clone https://github.com/wavelog/Wavelog.git [output_directory] ``` -------------------------------- ### Enable and Start Wavelog Worker systemd Service Source: https://docs.wavelog.org/wavelog-worker/installation Reload the systemd daemon and enable/start the Wavelog Worker service to ensure it runs on boot and is active. ```bash systemctl daemon-reload systemctl enable --now wavelog-worker ``` -------------------------------- ### Call to get QSO Statistics Source: https://docs.wavelog.org/developer/api Example curl command to call the get_wp_stats API endpoint. ```shell curl -X "POST" "https:///api/get_wp_stats" \ -H 'Content-Type: application/json; charset=utf-8' \ -d "{\"key\":\"\", \"station_id\":\"\"}" ``` -------------------------------- ### Build Wavelog Worker from Source Source: https://docs.wavelog.org/wavelog-worker/installation Clone the Wavelog Worker repository, build the binary using make, and then run it. Requires Go 1.24 or later. ```bash git clone https://github.com/wavelog/wavelog_worker.git cd wavelog_worker make ./dist/wavelog_worker --config config.yaml ``` -------------------------------- ### QRZ Embedding Example for Last QSOs Widget Source: https://docs.wavelog.org/user-guide/features/last-qsos-widget An example of embedding the Last QSOs widget into a QRZ.com profile using an iframe. This specific example displays the last 25 contacts with a dark theme and text size of 5. ```HTML


Last 25 Contacts (Tabular)

``` -------------------------------- ### Install Apache PHP Module Source: https://docs.wavelog.org/getting-started/installation/linux Installs the Apache PHP module if Apache2 is used as the web server on Debian/Ubuntu. ```bash sudo apt install libapache2-mod-php ``` -------------------------------- ### Copy SSO Configuration File Source: https://docs.wavelog.org/admin-guide/configuration/thirdparty-authentication Copy the sample SSO configuration file to 'sso.php' to begin customizing your SSO settings. ```bash cp application/config/sso.sample.php application/config/sso.php ``` -------------------------------- ### Load Wavelog Database Backup Source: https://docs.wavelog.org/admin-guide/administration/server-migration Restore your Wavelog database on the new server using the backup file. Ensure the database is already created on the new server. Replace '/path/to/wavelog_backup.sql' with the actual path to your backup file. ```bash mysql -u your_db_user -p your_db_name < /path/to/wavelog_backup.sql ``` -------------------------------- ### Create Wavelog Directory and Docker Compose File Source: https://docs.wavelog.org/getting-started/installation/docker Create a directory for Wavelog and save the docker-compose.yml configuration file. ```bash mkdir ~/wavelog && cd ~/wavelog ``` ```yaml services: wavelog-db: image: mariadb:11.8 container_name: wavelog-db environment: MARIADB_RANDOM_ROOT_PASSWORD: yes MARIADB_DATABASE: wavelog MARIADB_USER: wavelog MARIADB_PASSWORD: wavelog # <- Insert a strong password here volumes: - wavelog-dbdata:/var/lib/mysql restart: unless-stopped wavelog-main: container_name: wavelog-main image: ghcr.io/wavelog/wavelog:latest depends_on: - wavelog-db environment: CI_ENV: docker volumes: - wavelog-config:/var/www/html/application/config/docker - wavelog-uploads:/var/www/html/uploads - wavelog-userdata:/var/www/html/userdata ports: - "8086:80" restart: unless-stopped volumes: wavelog-dbdata: wavelog-uploads: wavelog-userdata: wavelog-config: ``` -------------------------------- ### Prepare Docker Backup Directory Source: https://docs.wavelog.org/admin-guide/administration/backup Sets the backup directory and creates it if it doesn't exist. This command should not be run as root. ```bash BACKUP_DIR=/home/$USER/wavelog_backup mkdir -p $BACKUP_DIR ``` -------------------------------- ### Example Output from TCP Server Source: https://docs.wavelog.org/user-guide/integrations/radio-interface This is the expected console output when a Wavelog instance triggers a callback to the configured radio interface. It shows the server listening, a connection being established, and the details of the received HTTP request. ```text PS F:\Documenti\GitHub\WaveLogGate> python .\test.py Listening on 127.0.0.1:54321... Connected by ('127.0.0.1', 51492) Received: OPTIONS /7010600/cw HTTP/1.1 Host: 127.0.0.1:54321 Connection: keep-alive Access-Control-Request-Method: GET Access-Control-Request-Private-Network: true Origin: https://log.example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36 Sec-Fetch-Mode: cors Sec-Fetch-Site: cross-site Sec-Fetch-Dest: empty Accept-Encoding: gzip, deflate, br, zstd Accept-Language: it-IT,it;q=0.9,en-US;q=0.8,en;q=0.7,es-US;q=0.6,es;q=0.5 ``` -------------------------------- ### Enable Apache2 SSL and Restart Source: https://docs.wavelog.org/admin-guide/configuration/https Enable the necessary Apache2 modules (SSL and Rewrite) and restart the Apache2 service to apply the HTTPS configuration. ```bash a2enmod ssl rewrite systemctl restart apache2 ``` -------------------------------- ### Pull Latest Wavelog Code via Git Source: https://docs.wavelog.org/getting-started/updating Fetch and apply the latest changes from the Wavelog Git repository to your existing installation. This is the recommended update method for Git-based installations. ```bash git pull ``` -------------------------------- ### Multi-Domain Configuration with Whitelist Source: https://docs.wavelog.org/admin-guide/configuration/multi-domain Configure `base_url` to dynamically determine the correct domain from a whitelist, redirecting to a default URL for invalid hosts. This example handles HTTP/HTTPS and includes basic host validation. ```php 259 || !preg_match('/^([a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?(\.[a-z0-9]([a-z0-9\-]{0,61}[a-z0-9])?)*)(:([1-9][0-9]{0,4}))?$/', $http_host, $m) || (!empty($m[6]) && (int)$m[6] > 65535) || !in_array($m[1], $url_allowed, true) ) { header('Location: ' . $redirect_url, true, 301); exit; } $is_https = (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') || (!empty($_SERVER['HTTP_X_FORWARDED_SSL']) && $_SERVER['HTTP_X_FORWARDED_SSL'] === 'on') || (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') || (!empty($_SERVER['SERVER_PORT']) && (int)$_SERVER['SERVER_PORT'] === 443); $port = !empty($m[6]) ? ':' . $m[6] : ''; return ($is_https ? 'https' : 'http') . '://' . $m[1] . $port . '/'; }); ``` -------------------------------- ### Example of Debug Log Output for Published Message Source: https://docs.wavelog.org/developer/mqtt This is an example of how a published MQTT message will appear in the CodeIgniter debug logs when debug logging is enabled. It shows the topic and the message payload. ```text DEBUG - published wavelog/qso/logged/1 -> {...} to MQTT broker ``` -------------------------------- ### Example API Response for ADIF Export Source: https://docs.wavelog.org/developer/api This is an example of a successful API response when exporting QSOs. It includes the number of exported QSOs, the ID of the last fetched QSO for subsequent requests, a status message, and the ADIF data. ```json { "exported_qsos":5, // The number of exported QSOs "lastfetchedid":4886, // The internal primary key of the last exported QSO for you to use in your next input "message":"Export successful", // A message containing success or reason for failure "adif": "ADIF STRING" // ADIF file with all qsos since your last pull } ``` -------------------------------- ### List Club Members Response (No Members) Source: https://docs.wavelog.org/developer/api Example response when the clubstation has no members. ```json { "status": "failed", "reason": "No club members found", "members": "" } ``` -------------------------------- ### Dump Wavelog Database Source: https://docs.wavelog.org/admin-guide/administration/server-migration Use this command to create a backup of your Wavelog database. Replace 'your_db_user' and 'your_db_name' with your actual database credentials. ```bash mysqldump -u your_db_user -p your_db_name > wavelog_backup.sql ``` -------------------------------- ### Access Wavelog Application Source: https://docs.wavelog.org/getting-started/installation/windows-wamp URL to access the Wavelog application in a web browser after successful installation. ```text http://localhost/wavelog ``` -------------------------------- ### Version API Response Source: https://docs.wavelog.org/developer/api Example response from the version API, indicating the status and the Wavelog version. ```json { "status": "ok", "version": "2.0" } ``` -------------------------------- ### Configure Index Page Name Source: https://docs.wavelog.org/admin-guide/configuration/config-php Set the name of the main entry point file for Wavelog. This is typically 'index.php' unless you have customized your directory structure. ```php $config['index_page'] = 'index.php'; ``` -------------------------------- ### Enable SSO in Wavelog Configuration Source: https://docs.wavelog.org/admin-guide/configuration/thirdparty-authentication Enable Single Sign-On (SSO) by setting 'auth_header_enable' to true in the Wavelog configuration file. ```php