{"id":56,"date":"2026-01-24T19:54:47","date_gmt":"2026-01-24T19:54:47","guid":{"rendered":"https:\/\/qth.digital\/?p=56"},"modified":"2026-01-25T14:41:42","modified_gmt":"2026-01-25T14:41:42","slug":"wavelog-in-docker","status":"publish","type":"post","link":"https:\/\/qth.digital\/?p=56","title":{"rendered":"Wavelog [Docker]"},"content":{"rendered":"\n<p><a href=\"https:\/\/www.wavelog.org\/\" data-type=\"link\" data-id=\"https:\/\/www.wavelog.org\/\">Wavelog<\/a> is a web application that allows logging of amateur radio contacts (QSLs). There is also a DX Watch feature which allows you to monitor multiple bands and multiple modes of communication (SSB, FT8, CW, etc.) along with rich reporting features. I&#8217;m hoping to later build notifications off of the DX Watch feature when a certain country or call sign is spotted and then I can try and &#8220;work&#8221; them.<\/p>\n\n\n\n<p>The software will be installed in a docker container on a  <a href=\"https:\/\/shop.zimaspace.com\/products\/zimaboard2-single-board-server\">ZimaBoard 2,<\/a> which is a single board computer (SBC). I added a 2TB M.2 SSD to my Zimaboard 2 as it only has 64GB of eMMC storage. You can find more info at the Wavelog Github site <a href=\"https:\/\/github.com\/wavelog\/wavelog\/wiki\/Installation-via-Docker\" data-type=\"link\" data-id=\"https:\/\/github.com\/wavelog\/wavelog\/wiki\/Installation-via-Docker\">here<\/a>. The modified YAML I used is below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>services:<br>wavelog-db:<br>image: 'mariadb:11.3'<br>container_name: wavelog-db<br>environment:<br>MARIADB_RANDOM_ROOT_PASSWORD: 'yes'<br>MARIADB_DATABASE: wavelog<br>MARIADB_USER: wavelog<br>MARIADB_PASSWORD: wavelog<br>volumes:<br>- '\/media\/nvme0n1\/AppData\/wavelog\/dbdata:\/var\/lib\/mysql'<br>ports:<br>- '3306:3306'<br>restart: unless-stopped<br>wavelog-main:<br>container_name: wavelog-main<br>image: 'ghcr.io\/wavelog\/wavelog:latest'<br>depends_on:<br>- wavelog-db<br>environment:<br>CI_ENV: docker<br>volumes:<br>- &gt;-<br>\/media\/nvme0n1\/AppData\/wavelog\/config:\/var\/www\/html\/application\/config\/docker<br>- '\/media\/nvme0n1\/AppData\/wavelog\/uploads:\/var\/www\/html\/uploads'<br>- '\/media\/nvme0n1\/AppData\/wavelog\/userdata:\/var\/www\/html\/userdata'<br>ports:<br>- '8086:80'<br>restart: unless-stopped<\/code><\/pre>\n\n\n\n<p>The volumes were remapped to point to the 2TB SSD instead of using the internal storage of the docker image which resides on the 64GB eMMC. You will want to change the password on the mariadb instance and the database port 3306 was mapped from the container to port 3306 on the Zimaboard 2.<\/p>\n\n\n\n<p>When I started the stack and began the setup I was greeted with:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"480\" src=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-7-1024x480.png\" alt=\"\" class=\"wp-image-57\" style=\"width:465px;height:auto\" srcset=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-7-1024x480.png 1024w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-7-300x141.png 300w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-7-768x360.png 768w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-7.png 1032w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>I fixed this by going into the <strong>Container Details<\/strong> and clicked on <strong>Console<\/strong> and then <strong>Connect.<\/strong><br>The console opened in the \/var\/www\/html directory and then I did the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>chown -R www-data:www-data application\/config\nchown -R www-data:www-data application\/logs\nchown -R www-data:www-data uploads\nchown -R www-data:www-data userdata\nchmod -R 775 application\/config\nchmod -R 775 application\/logs\nchmod -R 775 uploads\nchmod -R 775 userdata<\/code><\/code><\/pre>\n\n\n\n<p>Which resulted in:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"988\" height=\"448\" src=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-8.png\" alt=\"\" class=\"wp-image-58\" style=\"aspect-ratio:2.2053756030323917;width:421px;height:auto\" srcset=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-8.png 988w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-8-300x136.png 300w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-8-768x348.png 768w\" sizes=\"auto, (max-width: 988px) 100vw, 988px\" \/><\/figure>\n\n\n\n<p>You can now continue with your installation and at the end, you can login:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"770\" height=\"1024\" src=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-9-770x1024.png\" alt=\"\" class=\"wp-image-60\" style=\"aspect-ratio:0.751915033601203;width:448px;height:auto\" srcset=\"https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-9-770x1024.png 770w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-9-226x300.png 226w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-9-768x1021.png 768w, https:\/\/qth.digital\/wp-content\/uploads\/2026\/01\/image-9.png 982w\" sizes=\"auto, (max-width: 770px) 100vw, 770px\" \/><\/figure>\n\n\n\n<p><br>The next post will be about using Wavelog.<\/p>\n\n\n\n<p><\/p>\n\n\n<div class=\"brz-root__container\"><\/div>","protected":false},"excerpt":{"rendered":"<p>Wavelog is a web application that allows logging of amateur radio contacts (QSLs). There is also a DX Watch feature which allows you to monitor multiple bands and multiple modes of communication (SSB, FT8, CW, etc.) along with rich reporting features. I&#8217;m hoping to later build notifications off of the DX Watch feature when a &#8230; <a title=\"Wavelog [Docker]\" class=\"read-more\" href=\"https:\/\/qth.digital\/?p=56\" aria-label=\"Read more about Wavelog [Docker]\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_themeisle_gutenberg_block_has_review":false,"footnotes":""},"categories":[5,9],"tags":[],"class_list":["post-56","post","type-post","status-publish","format-standard","hentry","category-amateur-radio","category-wavelog"],"_links":{"self":[{"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/posts\/56","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/qth.digital\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=56"}],"version-history":[{"count":5,"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/qth.digital\/index.php?rest_route=\/wp\/v2\/posts\/56\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/qth.digital\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=56"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/qth.digital\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=56"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/qth.digital\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=56"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}