This is an unofficial Docker image for Wavelog, a PHP based amateur radio logging software and a fork of Cloudlog by 2M0SQL. The underlying Dockerfile is a fork and rewrite of int2001/wavelog_docker, adding additional features (see "Config").
This image is for personal use only and comes without support. If you'd like support, please use int2001's version, as this will become the official Wavelog image for Docker.
- Based on php:8.3-apache,
- mod_rewrite enabled,
- No "/index.php/" in the URL,
- Comes with (most) cronjobs out-of-the-box.
23 May 2024 (v1.6)
Please note: The internal "Update" function has not been tested".
IMPORTANT: MAKE SURE TO CHANGE THE MARIADB PASSWORD!
version: '3'
services:
wavelog-main:
image: jk13xyz/wavelog:latest
container_name: wavelog-main
depends_on:
- wavelog-mariadb
volumes:
- wavelog-config:/var/www/html/application/config
- wavelog-uploads:/var/www/html/uploads
- wavelog-images:/var/www/html/images
ports:
- "7373:80"
restart: unless-stopped
wavelog-mariadb:
image: mariadb:latest
container_name: wavelog-mariadb
environment:
MARIADB_RANDOM_ROOT_PASSWORD: yes
MARIADB_DATABASE: wavelog
MARIADB_USER: wavelog
MARIADB_PASSWORD: "STRONG_PASSWORD"
volumes:
- wavelog-dbdata:/var/lib/mysql
restart: unless-stopped
wavelog-phpmyadmin:
image: phpmyadmin:latest
container_name: wavelog-phpmyadmin
depends_on:
- wavelog-mariadb
environment:
UPLOAD_LIMIT: 128M
PMA_HOST: wavelog-mariadb
PMA_PORT: 3306
PMA_USER: wavelog
PMA_PASSWORD: "STRONG_PASSWORD"
restart: unless-stopped
ports:
- "7374:80"
volumes:
wavelog-dbdata:
wavelog-config:
wavelog-uploads:
wavelog-images:
docker volume create wavelog-dbdata && \
docker volume create wavelog-config && \
docker volume create wavelog-images && \
docker volume create wavelog-uploads
docker run -d \
--name wavelog-main \
-v wavelog-config:/var/www/html/application/config \
-v wavelog-backup:/var/www/html/application/backup \
-v wavelog-images:/var/www/html/images \
-v wavelog-uploads:/var/www/html/uploads \
-v wavelog-crontab:/var/www/html/crontab \
-p 7373:80 \
--restart unless-stopped \
jk13xyz/wavelog:latest
docker run -d \
--name wavelog-mariadb \
-e MARIADB_RANDOM_ROOT_PASSWORD=yes \
-e MARIADB_DATABASE=wavelog \
-e MARIADB_USER=wavelog \
-e MARIADB_PASSWORD="STRONG_PASSWORD" \
-v wavelog-dbdata:/var/lib/mysql \
--restart unless-stopped \
mariadb:latest
docker run -d \
--name wavelog-phpmyadmin \
-e PMA_HOST=wavelog-mariadb \
-e PMA_PORT=3306 \
-e PMA_USER=wavelog \
-e PMA_PASSWORD="STRONG_PASSWORD" \
--restart unless-stopped \
-p 7374:80 \
phpmyadmin:latest
-
Open Wavelog on your host (e.g. localhost:7373).
-
Change the Locator and adjust the URL, if necessary. You can leave "Directory" usually empty.
-
Enter the database credentials
- Host: wavelog-mariadb
- User: cloudlod
- Database: wavelog
Use the password you choose when running the docker.
-
Hit install.
- If Wavelog installs into a blank screen, open the base URL
The following cronjobs are set by default through the Dockerfile They don't need to be manually enabled. They can be updated, but this is a hassle. I use these settings because they made the most sense to me. The spacing is done to ensure the scripts don't run concurrently and cause time-outs.
The set cronjobs and runtimes are:
Every day at 00:00 and 12:00
Every day at 00:10 and 12:10
Every day at 00:20 and 12:20
Every day at 00:30 and 12:30
Every day at 00:40 and 12:40
Every day at 01:00
Every day at 01:10
Every Monday at 01:20
On the 1st of every month at 02:00
On the 1st of every month at 02:10
On the 1st of every month at 02:20
On the 1st of every month at 03:00
While the ADIF file can be useful, it's crucial to backup the MariaDB database in regular intervals as well. This is even more important when you use more than just one station location and/or users.
I have ready-made scripts for backup available at jk13xyz/backup-scripts.
This script is especially helpful when you run more than one MariaDB container.
Alternatively, you can use the following command to trigger a database dump manually:
docker exec wavelog-mariadb /bin/bash -c 'mariadb-dump --user wavelog --password=YOUR_PASSWORD wavelog' > /your/path/to/wavelog.sql
You can easily turn this command into a cronjob. If you have crontab installed, simply use this command to run a cronjob daily at 06:00:
echo "0 6 * * * docker exec wavelog-mariadb /bin/sh -c 'mariadb-dump --user wavelog --password=YOUR_PASSWORD wavelog' > /your/path/to/wavelog.sql" >> /etc/crontab
With that set, keep the 3-2-1 backup rule (3 copies, 2 different media, 1 copy off-site) in mind. Any backup should also at the very least keep the wavelog-config backup in mind. If you use functionalities such as displaying your QSL cards, also include wavelog-images.
Please note, this is primarily for my own setup. Feel free to use it (it should work fine). If you find issues, report them on my Github. However, I don't guarantee any support.
-
This Docker:
-
Wavelog:
-
wavelog_docker