Wavelog installeren

Voor een gedetailleerde beschrijving van dit programma verwijs ik graag door naar de project homepage: https://www.wavelog.org/
Deze site biedt onder meer een live demo en uitgebreide documentatie aan.
Ik had wavelog al draaien, en dus was de uitdaging om die te migreren naar de “verse” RPI. Omdat wavelog + de sql database in docker containers draaide, zou dat niet zo moeilijk moeten zijn.
Toch duurde het nog even voor ik dat aan de praat had.
De procedure die ik heb gevolgd:
1. Complete backup maken van de oude RPI
Maak een backup directory:
mkdir ~/docker-backup
cd ~/docker-backup
Database backup maken:
docker run --rm \
-v wavelog-dbdata:/volume \
-v $(pwd):/backup \
busybox \
tar czf /backup/wavelog-dbdata.tar.gz -C /volume .
Config backup maken:
docker run --rm \
-v wavelog-config:/volume \
-v $(pwd):/backup \
busybox \
tar czf /backup/wavelog-config.tar.gz -C /volume .
Uploads backup maken:
docker run --rm \
-v wavelog-uploads:/volume \
-v $(pwd):/backup \
busybox \
tar czf /backup/wavelog-uploads.tar.gz -C /volume .
Userdata backup maken:
docker run --rm \
-v wavelog-userdata:/volume \
-v $(pwd):/backup \
busybox \
tar czf /backup/wavelog-userdata.tar.gz -C /volume .
Er zijn nu de volgende backup bestanden:
- wavelog-dbdata.tar.gz
- wavelog-config.tar.gz
- wavelog-uploads.tar.gz
- wavelog-userdata.tar.gz
Dit is een 100% volledige backup van Wavelog. Deze worden vervolgens naar een network share gekopieerd zodat ze op de nieuwe RPI beschikbaar zijn. Dat kan natuurlijk ook via een USB stick of portable HDD/SDD.
2. Docker installatie op de nieuwe RPI
Installeer Docker:
sudo apt update
sudo apt install docker.io -y
Start Docker:
sudo systemctl enable docker
sudo systemctl start docker
Voeg gebruiker toe:
sudo usermod -aG docker $USER
Daarna uitloggen en opnieuw inloggen.
Even testen:
docker run hello-world
3. Wavelog containers starten
Maak een directory:
mkdir ~/wavelog
cd ~/wavelog
Maak volumes:
docker volume create wavelog-dbdata
docker volume create wavelog-config
docker volume create wavelog-uploads
docker volume create wavelog-userdata
Start MariaDB:
docker run -d \
--name wavelog-db \
-e MARIADB_ROOT_PASSWORD=superrootpassword \
-e MARIADB_DATABASE=wavelog \
-e MARIADB_USER=wavelog \
-e MARIADB_PASSWORD=strongpassword \
-v wavelog-dbdata:/var/lib/mysql \
mariadb:11
Start Wavelog:
docker run -d \
--name wavelog-main \
-p 8086:80 \
--link wavelog-db:mysql \
-v wavelog-config:/var/www/html/application/config \
-v wavelog-uploads:/var/www/html/uploads \
-v wavelog-userdata:/var/www/html/userdata \
wavelog/wavelog:latest
4. Restore procedure
Containers stoppen:
docker stop wavelog-main
docker stop wavelog-db
Database restore:
docker run --rm \
-v wavelog-dbdata:/volume \
-v $(pwd):/backup \
busybox \
tar xzf /backup/wavelog-dbdata.tar.gz -C /volume
Config restore:
docker run --rm \
-v wavelog-config:/volume \
-v $(pwd):/backup \
busybox \
tar xzf /backup/wavelog-config.tar.gz -C /volume
Uploads restore:
docker run --rm \
-v wavelog-uploads:/volume \
-v $(pwd):/backup \
busybox \
tar xzf /backup/wavelog-uploads.tar.gz -C /volume
Userdata restore:
docker run --rm \
-v wavelog-userdata:/volume \
-v $(pwd):/backup \
busybox \
tar xzf /backup/wavelog-userdata.tar.gz -C /volume
Containers opnieuw starten.
MariaDB:
docker run -d \
--name wavelog-db \
-e MARIADB_ROOT_PASSWORD=superrootpassword \
-v wavelog-dbdata:/var/lib/mysql \
mariadb:11
Wavelog:
docker run -d \
--name wavelog-main \
-p 8086:80 \
--link wavelog-db:mysql \
-v wavelog-config:/var/www/html/application/config \
-v wavelog-uploads:/var/www/html/uploads \
-v wavelog-userdata:/var/www/html/userdata \
wavelog/wavelog:latest
Open:
http://SERVER-IP:8086
Als alles goed gegaan is, draait Wavelog met de oude instellingen en QSO’s.
Een laatste toevoeging om ervoor te zorgen dat Wavelog automatisch opstart na een reboot:
docker update --restart unless-stopped wavelog-db
docker update --restart unless-stopped wavelog-main
Eventueel checken met:
docker inspect wavelog-db | grep -A 3 RestartPolicy
Dat moet de volgende output geven:
"RestartPolicy": {
"Name": "unless-stopped",
"MaximumRetryCount": 0
}
