Building a OpenHamClock Server + Browser on a PC

TopicBuilding a OpenHamClock Server + Browser on a PC
SubtopicInstalling OpenHamClock as a Kiosk Appliance
Equipment RequiredComputer + Internet
CostsLow end PC or Ex-Windows 10 PC
Document last reviewed and updated (reviewed each year)11th March 2026

This is a little more of a generic installation article as it is almost impossible to cover every piece of hardware, operating system, every version. You can either follow this line by line with exactly the Linux O/S that I have used, or adapt it to your own flavour of Linux. You may find that you want to install it under WSL (Windows Subsystem for Linux), sharing your Windows PC that you use for logging or Windows only apps. I will leave you to investigate your ideas and thoughts on how you want to set it up.

This article will start with a PC that we have just retired from Windows 10 duty, not good enough for Windows 11, but absolutely perfect and fast for Linux. In this case it is a lightweight NUC that can be mounted behind a monitor, but any PC can be used. You want at least 4Gb Ram – Desktop, Chrome and the server will settle at just under 2Gb memory used. I have this on an 8Gb NUC. As you can see the current memory and CPU usage in the following image.

Let’s start again with our known items

  • Device : Intel/AMD PC
  • Operating System : Mint LMDE 7 (https://linuxmint.com/download_lmde.php) also known as version name “Gigi”
  • Storage Device : Hard Disk (note this hard disk will be completely overwritten, so make sure you have nothing valuable on it)
  • Hostname : openhamclock
  • Localisation :
    • Capital City : Adelaide
    • Timezone : Australia/Adelaide
    • Keyboard Layout : us
  • Username : openhamclock
  • Password : {your choice, but write down}
  • WI-FI : {enter your wifi details here including your SSID and Passphrase) or leave it with an ethernet interface if you do not have wireless built in
  • Remote Access : Enable SSH – use password authentication

Just a note, if you search for Mint LMDE, you may turn up with Mint LMDE 6, codenamed “Zena”, whilst generally it will work (as I have used it before for this article), LMDE 7 is the latest release and saves an imminent upgrade.

I will not take you through burning this downloaded image onto a USB Key to boot from, as it is outside the scope of this article, and similarly, many different writing applications, and thousands of sites that cover this aspect.

So lets get going.

Boot off your USB key and it will start your NUC with Mint LMDE 7 Live (so it has not installed anything at this point)

Once you have it running, you will see an icon on the desktop, which will install Mint LMDE onto your hard drive.

We are going to setup for automatic login (you can do this now as part of the install – Just select “login automatically”

All the rest, just take the defaults, including checking that your country is correct etc. When it is finished installing, it will leave you sitting at your new desktop.

It will provide a first time POP-UP window. I do recommend going through it. The main things that you should do are

  • Let it determine the fastest Debian respositories for your location
  • Perform all updates, including to the update tool itself (and once it updates, check for updates again)
  • Learn about and implement timeshift. You can set this to internally backup your system on whatever schedule you want. However avoid if you are on a small hard drive e.g. less than 256Gb. However this is great if you make a lot of changes or experiment, as this allows you to roll back the system to a specific date and time, saving you a lot of time and configuration if you have to start all over again.

At this point I would install a remote tool, again to save you sitting on top of the nuc, but also allowing you to cut and paste commands directly. You can install VNC via the package manager or may I recommend on of my favourites – nomachine from nomachine.com

If you go to the nomachine site, it should recognise you are on a linux system, so when you click on the download page, it will show you the linux downloads

We are going to select NoMachine for Linux DEB (AMD64)

Download it like you would normally, and when the file is downloaded, right click the file and use package manager to install it automatically.

You will just need the nomachine client for your OS, from https://download.nomachine.com/enterprise/?product=enterprise-client, just clicking on tthe hyperlink for your Client O/S. They call this the enterprise client, and it is just a client, not the whole package (which is generally server and client).

Just let me be clear, you do not need to create an account if you are using it on a local network.

Once you start up the client, it should scan your network will identify your NoMachine workstation. When it asks for login, it is the login that you setup when you installed Mint LMDE 7 at installation time. Now you have desktop remote control….

For a Kiosk style machine, let’s stop the screen saver kicking in, so in your menu select
Preferences >>> ScreenSaver >>>> delay before starting screen saver >>>>Never
and turn off Lock the computer when put to sleep
and turn off lock the computer when the screensaver starts

next, we need to turn the firewall off (at least whilst we are getting this unit working)
Preferences >>>> Firewall Configuration >>> go into EACH profile and turn it off.
We will also turn off the firewall service at the command line a little later.

You are welcome to go back in after the installation is done and work out the ports needed and harden, but for the moment, especially as this on your local network, to reduce possible issues with firewall lets turn it off.

Before we leave the land of the Desktop GUI, if you forgot to set it to autologin when you installed Linux Mint, you can do it now, otherwise skip this if already done.

Administration >>> Login Window
Authentication: enter your Linux login and password you setup when you installed Linux
Go to the Users tab or section.
Enable Auto-Login: Turn on the Automatic login toggle.
Set Username: In the username field, type the username you want to log in automatically.
Optional Delay: You can set a slight delay (seconds) if necessary.
Reboot: Close the settings and restart your computer to apply changes

Now open a terminal screen (for the moment on the Mint Desktop)

We need to install SSH as it is not installed by default.

sudo apt install openssh-server -y

now we are going to start it and enable it on start

sudo systemctl start ssh
sudo systemctl enable ssh

Now we are going to install htop which is a good way at looking at resources being used.

sudo apt install htop -y

one other thing….lets disable the firewall service entirely

sudo ufw status

and

sudo ufw status verbose

you will see that even though we disabled it in the gui, it still has some inbound functionality, which will block your remote access to your OpenHamClock Server from your other workstation(s)
So that it does not cause us any problems issue the following commands

sudo systemctl stop ufw
and
sudo systemctl disable ufw

which will stop and disable it entirely, particularly on reboots

Now at this point you can continue doing the work in the Desktop Terminal screen, or you can SSH directly from your remote worktation now that we have installed SSH

Which ever way – login to the terminal and it will automatically place in the home directory (for openhamclock), however if you want to make sure issue the following command

cd ~

which will place you in the home directory

Now we need to install git

sudo apt install git

Now the NodeVersionManager

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.4/install.sh | bash

Close your terminal Window and re-open

if you want to check that NVM installed do the following command

nvm -v

and it should come back with a version number matching the curl line that we used before

now we install npm

nvm install 22
nvm use 22

With that all out of the way, now we clone the openhamclock git respository with the following commands

git clone https://github.com/accius/openhamclock.git
cd openhamclock
npm install
npm restart

You will probably see a screen similar to the following

Press Ctrl-C to stop the server running

Now we just need to make a few minor changes to the configuration file

nano .env

make the changes to your file that are in bold only. If you want to play with other settings, you can come back to this later.



# Your amateur radio callsign
CALLSIGN=put your callsign in here

# Your Maidenhead grid locator (4 or 6 character)
LOCATOR=(put your 4 or 6 character maidenhead) in here

# ===========================================
# SERVER SETTINGS (Backend API)
# ===========================================

# Backend API server port
# Dev default: 3001 (see DEV PORTS note above)

PORT=3000

# Host/IP to bind to
# localhost = only accessible from this computer
# 0.0.0.0 = accessible from other devices on your network
HOST=0.0.0.0 (change this from local host)

# Change these so it to enable automatic updates

# ===========================================
# AUTO UPDATE (GIT)
# ===========================================

# Enable automatic updates (requires git installation and repo clone)
AUTO_UPDATE_ENABLED=true

# Check interval in minutes
AUTO_UPDATE_INTERVAL_MINUTES=60

# Run a check shortly after startup (true/false)
AUTO_UPDATE_ON_START=true

# Exit after update so a supervisor (systemd/pm2) can restart (true/false)
AUTO_UPDATE_EXIT_AFTER=true

# This will sync your settings between your PI Browser and the browser that you are using on your PC - it forces it to use a common JSON config file


# Just some basic settings - the main one being Metric instead of imperial

# ===========================================
# DISPLAY PREFERENCES
# ===========================================

# Units: 'imperial' or 'metric'
# Deprecated

UNITS=metric

# Seperated Units ('imperial' or 'metric')
# DISTUNITS - Distance units
DISTUNITS=metric
# TEMPUNITS - Temperature Units
TEMPUNITS=metric
# PRESSUNITS - Pressure Units
PRESSUNITS=metric

save the file and issue the command again

npm restart

and as soon as it is back to that screen showing the server running
you can test we have the server running and accessible by pointing your browser from a remote workstation to openhamclock server with

http://{your IP address of your openhamclock server}:3000

You should be greeted by your session of openhamclock

Ok, lets continue and you can have a “play” later….

In you your SSH Terminal Session

Ctrl C to stop the hamclock server running

Lets automate it now

sudo nano /etc/systemd/system/openhamclock.service

[Unit]
Description=OpenHamClock Server
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=openhamclock
WorkingDirectory=/home/openhamclock/openhamclock
ExecStart=/bin/bash -c ‘source /home/openhamclock/.nvm/nvm.sh && node server.js’
Environment=NODE_ENV=production
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Save it

If you want to reboot your NUC, and then try to connect to it from another workstation (just remember we are just checking that the service starts up automatically). If you want to do another step, on the actual NUC desktop, open up a browser (firefox is fine) and point it to 127.0.0.1:3000 you web page should come up with no issues

Now I am going to recommend that you install Chrome (as I know the switches and have been tested, so install that on the desktop)
Open Firefox and search on the web for Google Chrome download, it should recognise the OS you are using and offer the correct .DEB flie.
Download this and like the nomachine, if you used it, just right click on the file and install using package manager.
Now you have chrome on your Debian PC

whilst we are in the desktop – let’s set Chrome to start automatically

Go to menu >> Preferences >>>>Startup applications
click add (+ Button)
Choose Custom Application

Name : Chrome openhamclock
Command : /usr/bin/google-chrome –kiosk –noerrdialogs –disable-infobars –disable-session-crashed-bubble –disable-restore-session-state –disable-features=TranslateUI –no-first-run –fast –fast-start http://127.0.0.1:3000
Comment : Open OpenHamClock
Startup Delay : 30
add and exit the startup applications

Finally one more thing to do which stops it autoloading when you reboot your NUC or PC

You might get the GNOME Keyring popup
When you auto-login, your desktop session starts — but the keyring is still encrypted with the your password.
Since no password was entered (because of auto-login), it asks you to unlock it.

Chrome stores credentials in the keyring, so it triggers the prompt.
However that keyring does not get created until after a start up of chrome
Now it might require a couple of reboots, but it will come up saying that it needs to store the password.
When it does that, enter a blank password into the key ring and that will be used by Chrome and will match the null password that is used to autologin the workstaton.

Save and that’s it

Now you should be able to reboot your NUC box, it should autologin, start the desktop, in the background it has started the OpenHamClock Server, and 30 seconds later, it autostarts Chrome pointing to itself
You should now see your OpenHamClock screen…..that’s it

One thing I will mention before you go off and investigate your new system….

I found the DX Cluster panel variable in its operation, and it is used by another panel (band health), so if DXCluster is not getting a feed, Band Health is non-functional as well. So I found the change of the DXCluster feed appeared to resolve the issue. So under settings, you might want to try the following

No reason, you have to use this, but worked for me.