Installing Cloudlog on Windows (WAMP)¶
This page is for running Cloudlog on a Windows PC with WampServer. That gives you Apache, MariaDB or MySQL, and PHP on the same machine, and you open the logbook in a browser on that PC.
Use a 64-bit copy of Windows. WampServer dropped 32-bit builds, and microwave QSOs need a 64-bit system because the frequencies do not fit in a 32-bit integer.
Cloudlog wants PHP 8.5.12 or later. That release fixes the PHP2Shell issues (CVE-2026-109618 and CVE-2026-109619). A full WampServer install often ships an older PHP. Add the current 8.5 addon and switch to it before you install Cloudlog.
If you would prefer someone else to run the server, magicbug offer hosted Cloudlog. Putting a WampServer PC on the public internet means opening a port on your router and looking after every update yourself.
What you need¶
- Windows 10 or 11, 64-bit, on an NTFS drive.
- WampServer 3.4 or newer, 64-bit. Install it as administrator.
- The WampServer PHP addon for 8.5.12 or later, from the PHP addons page. The same files are listed on SourceForge. Use the 64-bit addon,
wampserver3_x64_addon_php8.5.12.exeor a newer 8.5 build. - Git for Windows.
The examples below use C:\wamp64. That is the default folder. If you installed WampServer somewhere else, use that path instead.
1. Install WampServer and switch to PHP 8.5¶
Run the WampServer installer, then the PHP 8.5 addon. Both want an administrator prompt.
Start WampServer from the desktop shortcut. The tray icon turns green when Apache and the database are both running. Orange or red means one of them failed to start. Port 80 is the usual cause, because IIS or another web server already has it. WampServer's tools menu can show which program is holding the port.
Left click the tray icon, then PHP, then Version, and choose the 8.5.12 (or later) entry.
Left click the tray icon, then PHP, then PHP extensions, and make sure these are ticked:
- php_curl
- php_gd
- php_mbstring
- php_mysqli
- php_openssl
- php_xml
- php_zip
Left click the tray icon, then PHP, then php.ini. That opens the file Apache is using. Set:
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. The list is on php.net. post_max_size needs to be larger than upload_max_filesize, or PHP refuses the upload.
Save the file, then left click the tray icon and choose Restart All Services.
There is a second php.ini for the command line. The tray menu item is the one the website uses. After Cloudlog is installed, Admin, Debug Information shows the version and limits the site is actually running. It should say 8.5.12 or later.
When a newer 8.5 addon comes out, install it the same way and select it in the PHP version menu. That is how you pick up the next security fix.
2. Download Cloudlog¶
Install Git for Windows, then open Git Bash. The folder name at the end of the clone command keeps the web address in lower case.
cd /c/wamp64/www
git clone https://github.com/magicbug/Cloudlog.git cloudlog
The files land in C:\wamp64\www\cloudlog. That checks out the master branch, which is the branch to run.
3. Folders PHP must be able to write¶
WampServer runs Apache as the local system account, which can usually write inside C:\wamp64\www. If the install wizard later says application\config is not writable, give the Users group permission to modify these folders:
application\configapplication\logsapplication\cacheapplication\pluginsbackupupdatesuploadsimages\eqsl_card_imagesassets\qslcardassets\jsonassets\sstvimages
In File Explorer, right click the folder, Properties, Security, Edit, and allow Modify for Users. Apply it to the folder and the files inside.
application\config will hold the database password once the wizard has run. The site only needs to write there during install.
4. Create the database¶
Left click the WampServer icon, then open localhost in the browser, and open phpMyAdmin. The database root account on a new WampServer has an empty password. Log in as root with no password, then set a root password from the User accounts tab before you do anything else. An empty root password is how a home PC gets emptied out if it is ever reachable from the network.
Create a database:
- Name:
cloudlog(letters, numbers, and underscore) - Collation:
utf8mb4_unicode_ci
Create a database user that can only see that database. On the User accounts tab, Add user account:
- User name:
cloudlog - Host name:
localhost - Password: a long one you have saved somewhere
- Grant all privileges on database
cloudlog
That user is only for Cloudlog to talk to MariaDB or MySQL. It is not the login you type into the Cloudlog website. The website's first login, m0abc / demo, is created by the install wizard inside the application. Do not create a database account called m0abc.
5. Run the install wizard¶
Open http://localhost/cloudlog/install.
- Directory:
/cloudlog. The form fills this in from the address. Cloudlog is a folder under WampServer's web root, so this must stay/cloudlog. - Website URL:
http://localhost/cloudlog - Default gridsquare: your locator, for example
IO91JS. Distance and bearing are worked out from this. - Hostname:
localhost - Username, password, database name: the database user from the previous step.
The wizard writes the config files, loads the database, tries to pull the country file, and then deletes the install folder. If that folder is still there afterwards, delete C:\wamp64\www\cloudlog\install.
If the wizard says the config folder is not writable, go back to section 3. The wizard mentions chmod 777. That is a Linux example. On Windows, Modify for the Users group is the equivalent, and you can tighten it again after the config files exist.
Hiding index.php in the URL¶
This is optional. Cloudlog works with index.php in the address.
WampServer needs AllowOverride All for C:\wamp64\www. Left click the tray icon, Apache, httpd.conf, and check the Directory block for the www folder. Then copy C:\wamp64\www\cloudlog\.htaccess.sample to C:\wamp64\www\cloudlog\.htaccess.
In C:\wamp64\www\cloudlog\application\config\config.php set:
$config['index_page'] = '';
The sample rewrite file assumes Cloudlog is the whole site. Installed under /cloudlog, the rule has to be relative to that folder. If the links break after you do this, put index.php back and rename .htaccess out of the way. The logbook works either way.
6. First login¶
Open http://localhost/cloudlog and log in with:
- Username:
m0abc - Password:
demo
Then, before you do anything else:
- Admin menu, User Accounts: create yourself as an Administrator, log in as that user, and delete
m0abc. - Admin menu, Update Country Files. The dashboard shows a warning when the country list is empty.
- Callsign menu (top right), Station Locations: create a station location and set it active.
- Callsign menu, Station Logbooks: create a logbook and attach the station location.
- Admin menu, Debug Information: confirm PHP is 8.5.12 or later, curl, mysqli, mbstring, xml, zip, gd, and openssl are installed, and
backup,updates, anduploadsshow as writable.
You can import an existing log from ADIF import/export once a station location and a logbook exist.
Callbook lookup¶
Callsign menu, Account, third party logins. Cloudlog can look up calls on QRZ or HamQTH.
That login is for lookups. Uploading QSOs somewhere else uses the station location:
- QRZ logbook: the QRZ.com Logbook API Key on the station location. QRZ require a subscription for this.
- Club Log: your Club Log email and password on the account, and Upload to Clublog set to Yes on at least one station location. Club Log wants the email address.
- HRDLog: the HRDLog username and code on the station location.
- eQSL: use eQSL, Mappings, one mapping per station location. The eQSL page on this wiki covers that setup.
- LoTW: upload the certificate on the LoTW page.
7. Updates and scheduled jobs¶
To update the files, open Git Bash:
cd /c/wamp64/www/cloudlog
git pull
Open http://localhost/cloudlog once afterwards. Database migrations run when a page loads.
Windows has no cron. Task Scheduler can hit the same addresses the Linux page lists. Create a task that runs whether or not you are logged on, with the action:
- Program:
curl.exe - Arguments:
--silent http://localhost/cloudlog/index.php/lotw/load_users
curl.exe is included with Windows. Repeat for the jobs you use. The full list, and what each one needs, is on the Linux installation page. On this PC the address prefix is http://localhost/cloudlog/index.php.
Run the LoTW user load once in a browser so you can see the result: http://localhost/cloudlog/index.php/lotw/load_users. You should see "LoTW User Data Saved."
Skip any job for a service you have not configured.
Using it from other devices¶
On the same house network, other PCs can use http:// plus this PC's local address, plus /cloudlog, once Windows Firewall allows Apache on private networks. WampServer can put that online for you from its menu.
Opening the logbook to the internet is a different job. The router has to forward a port, the PC needs a fixed address or a hostname, and the database root password cannot be empty. The Linux installation page is the better guide if that is the plan, on a machine that is there to be a server. For a home PC, the hosted service is the simpler option.
When something is wrong¶
| What you see | What to check |
|---|---|
| Tray icon stays orange or red | Another program has port 80. WampServer's tools menu names it. |
| Wizard says the config folder is not writable | Section 3. Restart All Services after changing permissions. |
| "The database tables could not be created" | The database exists, and the user and password match what you typed. Hostname is localhost. |
| "Directory cannot be found" | Directory on the wizard is /cloudlog. |
| Debug page shows an old PHP | Tray menu, PHP, Version. Restart All Services. |
| Country files stay empty | allow_url_fopen and php_curl are on, and updates can be written. |
Server setup questions belong on the discussions board. Bugs in Cloudlog itself belong in GitHub issues.