---
title: Moving from Cloudlog to Wavelog
summary: >
  I finally made the hop from Cloudlog to Wavelog and I don't regret it so far.
date: 2024-07-28T07:55:22+0200
# lastmod:
categories:
  - amateur-radio
  - computerstuff
tags:
  - cloudlog
  - wavelog
  - selfhost
---

## Set up the database

I'm going to use MySQL as the database type and I create a new user and database for it:

```mysql
CREATE DATABASE wavelog;
CREATE USER 'wavelog'@'localhost' IDENTIFIED BY '${PASSWORD}';
GRANT ALL PRIVILEGES ON wavelog.* TO 'wavelog'@'localhost';
FLUSH PRIVILEGES;
```

## Get the ADIF files from Cloudlog

Choose <kbd>ADIF Import / Export</kbd> from the user menu and also select the
<kbd>ADIF Export</kbd> tab.

Choose the callsign and download the ADIF file. We will import these later in our
Wavelog installation.

## Install Wavelog

Clone the git repository to your webroot and [adjust file permissions as stated
in the wiki](https://github.com/wavelog/Wavelog/wiki/Installation#2-download-wavelog-using-git).

For future upgrades I modify the update script and save it as another file just to
not interrupt the update procedure.

```patch
--- update_wavelog.sh	2024-06-23 15:08:15.138250067 +0200
+++ update2.sh	2024-06-23 15:13:02.786807949 +0200
@@ -8,7 +8,7 @@
 # appropriately set for your system!

 # The user and group that own the WAVELOG_SUBDIR directories. Passed to 'chown' as-is.
-DIR_OWNERSHIP="root:www-data"
+DIR_OWNERSHIP="http:http"
 # The list of directories that need to have ownership restored after a git pull
 declare -a WAVELOG_SUBDIRS=("application/config" "assets" "backup" "updates" "uploads" "images/eqsl_card_images" "userdata")
 # The name of the Git remote to fetch/pull from
```

So my file permissions look like this:

```console
$ ls -la                                                                                                                                   .  master d846bc
insgesamt 88
drwxr-xr-x 1 root http   490 30. Jun 20:00 ./
drwxr-xr-x 1 root root    92 25. Jun 05:49 ../
drwxr-xr-x 1 root http   220 19. Mai 16:17 application/
drwxr-xr-x 1 http http   156 23. Jun 15:08 assets/
drwxr-xr-x 1 http http   162 23. Jun 20:20 backup/
drwxr-xr-x 1 root http   176 23. Jun 15:13 .git/
drwxr-xr-x 1 root http    46 19. Mai 16:17 .github/
drwxr-xr-x 1 root http   268 19. Mai 16:17 images/
drwxr-xr-x 1 root http    58 19. Mai 16:17 install/
drwxr-xr-x 1 root http    58 19. Mai 16:17 src/
drwxr-xr-x 1 root http   120 19. Mai 16:17 system/
drwxr-xr-x 1 http http   140 23. Jun 20:19 updates/
drwxr-xr-x 1 http http    20 23. Jun 20:57 uploads/
drwxr-xr-x 1 http http    12 23. Jun 15:13 userdata/
-rw-r--r-- 1 root http  1851 23. Jun 15:08 Dockerfile
-rw-r--r-- 1 root http    24 19. Mai 16:17 .dockerignore
-rw-r--r-- 1 root http   670 19. Mai 16:17 .editorconfig
-rw-r--r-- 1 root http 15406 19. Mai 16:17 favicon.ico
-rw-r--r-- 1 root http   404 19. Mai 16:17 .gitignore
-rw-r--r-- 1 root root   499 23. Jun 15:14 .htaccess
-rw-r--r-- 1 root http   499 23. Jun 15:08 htaccess.sample
-rw-r--r-- 1 root http 11041 19. Mai 16:17 index.php
-rw-r--r-- 1 root http  1122 19. Mai 16:17 LICENSE
-rw-r--r-- 1 root http 12009 19. Mai 16:17 manifest.json
-rw-r--r-- 1 root http  2507 19. Mai 16:17 README.md
-rw-r--r-- 1 root http    86 19. Mai 16:17 robots.txt
-rw-r--r-- 1 root http   247 19. Mai 16:17 SECURITY.md
-rwxr-xr-x 1 root http  2413 23. Jun 15:13 update2.sh*
-rw-r--r-- 1 root http  2417 23. Jun 15:08 update_wavelog.sh
```

Visit the configured website and go through the installation process by
following the instructions. You may have to edit `/etc/php/php.ini` (or similar)
to allow more memory to be used by the PHP processes and so on...

## Station setup

Now create the stations and locations that you want to use (usually the same as
in the Cloudlog instance) and start importing the previously downloaded ADIF files.

As I have already uploaded my older logs to LOTW I checked
<kbd>Mark imported QSOs as uploaded to LoTW</kbd> when I imported my logs.

## Third party tools

I do like [WavelogGate](https://github.com/wavelog/WaveLogGate) already but haven't had the
chance to test it out in the field yet.

I can successfully see [CloudlogOffline](https://apps.apple.com/gb/app/cloudlogoffline/id1528219213)
connecting to my webserver, but the test button never turns green -- I also can't upload logs from
within the app so I guess the compatibility is broken there.

That will make me move back to my favourite iOS app for logging: [RUMlog2Go for iPhone][1].

[1]: https://dl2rum.de/rumsoft/RUMlog2Go.html

To upload the logs just export as adif, self-email and import. It's not the "syncing" way but
it is still acceptable in my opinion.