Installing Cloudlog on a Raspberry Pi with DietPi¶
DietPi is a small Debian system with a menu for installing a web server. Cloudlog itself is installed the same way as on any other Debian machine. This page covers the Pi and the DietPi menu. The Linux installation page covers the Cloudlog files, the install wizard, updates, and cron.
Use a 64-bit DietPi image on a Raspberry Pi 3, 4, 5, Zero 2 W, or newer. Microwave QSOs need a 64-bit system, because the frequencies do not fit in a 32-bit integer. The original Pi Zero and the Pi 1 cannot run that image.
DietPi's own PHP package is 8.4 on current Debian, and 8.2 on Debian Bookworm. Cloudlog is developed against PHP 8.5, and 8.5.12 is the release that fixes the PHP2Shell issues (CVE-2026-109618 and CVE-2026-109619). After DietPi has installed the web stack, switch PHP to 8.5.12 or later from Ondřej Surý's packages, which is the same repository the Linux page uses.
If you would prefer someone else to run the server, magicbug offer hosted Cloudlog.
1. Install DietPi¶
Follow the DietPi install guide. Write the 64-bit image, boot the Pi, and finish the first-run setup. A keyboard and a screen make the first boot easier to follow. SSH is fine once you are used to it.
Change the default dietpi and root passwords when the first-run prompts you. The Pi will be running a web server.
2. Install the LAMP stack¶
DietPi's LAMP option installs Apache, MariaDB, and PHP, and it enables them for you. The menu path is documented on the web stack page.
sudo dietpi-software
Choose Browse Software, search for LAMP, mark it, and choose Install. DietPi will ask for a reboot when it has finished. Let it reboot.
LAMP is Apache, MariaDB, and PHP. The same menu has LEMP (nginx) and a few lighter stacks. This page assumes LAMP. Any of them can run Cloudlog once PHP is 8.5.12 or later and the web server passes /index.php/... addresses through to PHP. The Linux page has the nginx notes.
Check what DietPi installed:
php -v
You will see 8.2 or 8.4. That is expected. The next section replaces it for the website.
3. Install PHP 8.5¶
DietPi is Debian, so Ondřej Surý's repository is the way to get PHP 8.5. These are third party packages. PHP's download page notes that the Apache and PHP-FPM builds include a telemetry patch added by the packager.
sudo apt-get update
sudo apt-get -y install lsb-release ca-certificates curl
sudo curl -sSLo /tmp/debsuryorg-archive-keyring.deb https://packages.sury.org/debsuryorg-archive-keyring.deb
sudo dpkg -i /tmp/debsuryorg-archive-keyring.deb
sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/debsuryorg-archive-keyring.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update
Install the 8.5 packages by name, so a later PHP release does not replace them on its own:
sudo apt install php8.5-fpm php8.5-cli php8.5-mysql php8.5-curl php8.5-mbstring php8.5-xml php8.5-zip php8.5-gd
Point Apache at the new PHP and stop the one DietPi installed. If php -v said 8.2, swap 8.4 for 8.2 in these commands. Look in /etc/apache2/conf-enabled/ if you are unsure of the name.
sudo a2disconf php8.4-fpm
sudo a2enmod proxy_fcgi setenvif rewrite
sudo a2enconf php8.5-fpm
sudo systemctl disable --now php8.4-fpm
sudo systemctl enable --now php8.5-fpm
sudo systemctl reload apache2
php -v may still print the older version, because the command line and the web server are selected separately:
sudo update-alternatives --set php /usr/bin/php8.5
php -v
It should report 8.5.12 or later. If it reports an older 8.5, run sudo apt update and sudo apt upgrade.
PHP settings for Cloudlog go in /etc/php/8.5/fpm/php.ini:
date.timezone = Europe/London
memory_limit = 256M
upload_max_filesize = 32M
post_max_size = 40M
max_execution_time = 300
allow_url_fopen = On
Use your own timezone. post_max_size needs to be larger than upload_max_filesize. A Pi with 1 GB of RAM can use memory_limit = 128M if 256M makes the board swap during an import. Large ADIF imports are happier with 256M.
sudo systemctl restart php8.5-fpm
Keep applying sudo apt upgrade. That is how later 8.5 security fixes arrive.
4. Install Cloudlog¶
From here the work matches the Linux installation page, with three DietPi details.
The web root DietPi uses is /var/www. Clone Cloudlog into its own folder:
sudo apt install git
sudo git clone https://github.com/magicbug/Cloudlog.git /var/www/cloudlog
Give www-data write access to the folders listed on the Linux page (application/config, application/logs, application/cache, application/plugins, backup, updates, uploads, images/eqsl_card_images, assets/qslcard, assets/json, assets/sstvimages). The same chown and chmod loop works, with CLOUDLOG=/var/www/cloudlog.
MariaDB on DietPi is reached as the UNIX root user, with no database root password:
sudo mariadb
Create the database and user as on the Linux page (utf8mb4, a user at localhost, a long password).
DietPi is already serving /var/www. With the files in /var/www/cloudlog, the wizard is:
http://<pi-address>/cloudlog/install
- Directory:
/cloudlog - Website URL:
http://<pi-address>/cloudlog - Hostname:
localhost - Username, password, database name: the ones you just created
To give Cloudlog its own site name and an empty Directory field, add an Apache virtual host with DocumentRoot /var/www/cloudlog, as the Linux page shows, and reload Apache.
After the wizard, put config.php and database.php back to mode 640, delete the install folder if it is still there, log in as m0abc / demo, create your own administrator, and delete the demo user. Update the country files, create a station location and a station logbook, and check Admin, Debug Information. PHP there should be 8.5.12 or later.
Cron is the same list as the Linux page. The address prefix on this layout is http://<pi-address>/cloudlog/index.php. Run the LoTW user load once in a browser so you can see "LoTW User Data Saved."
A Pi on a home network is reached by its local address. A certificate and a hostname are worth doing if you open it to the internet. DietPi's software menu can install Certbot. The Linux page covers base_url and cookie_secure once HTTPS is in place.
When something is wrong¶
| What you see | What to check |
|---|---|
| Debug page still shows PHP 8.2 or 8.4 | a2enconf php8.5-fpm ran, the old php8.x-fpm conf is disabled, and php8.5-fpm was restarted. |
| Wizard says the config folder is not writable | The www-data group can write application/config. |
| "Directory cannot be found" | Directory is /cloudlog while the files live in /var/www/cloudlog under DietPi's web root. |
| Country files stay empty | allow_url_fopen and php8.5-curl are enabled in the FPM ini, and updates/ is writable. |
Server setup questions belong on the discussions board. Bugs in Cloudlog itself belong in GitHub issues.