Een Raspberry Pi Hamradio Server (2)

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
}