Pro-Grade Ham Radio Displays: Integrating OpenHamClock into PiSignage

758 words, 4 minutes read time.

A Helping Hand Needed for a Fellow Programmer

I’m reaching out to see if you can lend a hand to a talented software developer who’s currently on the job hunt. With over 30 years of experience in C#, .NET (Core/6–8), REST APIs, SQL Server, Angular/Razor, Kubernetes, and cloud CI/CD, he’s a seasoned pro with a proven track record of leading modernization projects and delivering production systems.

Some of his notable accomplishments include DB2 to SQL migrations, building real-time SignalR apps, and developing full-stack API and frontend projects. Based in Southeast Michigan, he’s looking for senior engineering, architecture, or technical lead roles that will challenge him and utilize his skills.

If you’re in a position to help, you can check out his resume and portfolio at http://charles.friasteam.com.

Let’s all look out for each other – if you know of any opportunities that might be a good fit, could you please consider passing this along to your network?

If you are a ham radio operator, you know that a HamClock is the ultimate shack companion. But what if you want to move beyond a dedicated small screen and integrate that data-rich display into a professional digital signage environment?

By using PiSignage, you can rotate your HamClock with other station metrics, weather, or club announcements. However, getting a clean, secure, and “pop-up free” experience requires a few tricks.

In this post, I’ll show you how to deploy OpenHamClock using Docker and how to strip away the UI clutter for a seamless kiosk experience.

The Setup

To follow along, you will need a PiSignage server instance. I personally run mine as a Docker container, which keeps the server stack isolated and easy to back up.

1. The Docker Compose Configuration

PiSignage and modern browsers often require secure contexts (HTTPS) for certain features. Since the standard HamClock output is HTTP, we’ll use a two-service setup: the clock itself and a lightweight SSL-wrap sidecar using socat and openssl.

docker-componse.yml

services: openhamclock: image: ghcr.io/accius/openhamclock:latest container_name: openhamclock expose: - "3000" environment: - CALLSIGN=<CALL SIGN> - LOCATOR=<Grid Square Locator> - THEME=dark - UNITS=imperial restart: unless-stopped ssl-wrap: image: alpine container_name: hamclock-ssl ports: - "3000:3000" command: > sh -c "apk add --no-cache socat openssl && openssl req -x509 -newkey rsa:2048 -keyout /tmp/key.pem -out /tmp/cert.pem -days 365 -nodes -subj '/CN=localhost' && cat /tmp/cert.pem /tmp/key.pem > /tmp/combined.pem && socat OPENSSL-LISTEN:3000,cert=/tmp/combined.pem,verify=0,fork,reuseaddr TCP:openhamclock:3000" restart: unless-stopped

2. Silencing the “What’s New” Pop-ups

When using HamClock as a signage element, you want it to be “set and forget.” The “What’s New” slide-ins are helpful for desktop users but ruin a clean kiosk display.

While there is a formal change request pending for a toggle, you can currently “force” these elements to stay hidden by injecting a bit of CSS directly into the distribution files. Run this command within your app environment:

find /app/dist -name "*.css" -exec sh -c 'echo "div[style*=\"whatsNewSlideIn\"], div[style*=\"backdrop-filter\"] { display: none !important; }" >> {}' \;

3. Setting Up the Slide in PiSignage

Once your containers are humming along, you need to tell PiSignage how to display the clock.

Create the Weblink Asset

  • Log in to your PiSignage Admin Panel.
  • Navigate to Assets > Add > Weblink.
  • Fill in the details:
    • Name: OpenHamClock
    • Link Address: https://<YOUR-HOSTNAME>:3000/?kiosk=true
  • Click Save.
  • Pro Tip: The ?kiosk=true suffix is critical. It tells HamClock to hide its own internal menus and headers, giving you a dedicated, high-contrast dashboard perfect for a wall-mounted display.

    Deploy to Your Player

  • Go to Playlists and add your new “OpenHamClock” asset.
  • Set the Duration: Set this to 0 for a permanent display, or a high number (like 300 for 5 minutes) if it’s part of a rotation.
  • Go to Groups, select your player, and deploy the playlist.
  • Your screen should refresh and show a beautiful, clean HamClock interface within seconds!

    Running PiSignage in Docker?

    For those of you looking to keep your entire server stack contained, running the PiSignage central server in Docker is the way to go. It keeps your host OS clean and makes management a breeze.

    If you’d like me to discuss how to set up a dockerized PiSignage server, please comment below!

    — 73 —

    Call to Action

    Getting this stack to play nice wasn’t a “one-and-done” install. It was a hard-fought process that took multiple attempts to finally crack the code on bypassing those “What’s New” screens and forcing a clean kiosk display. But the victory is in the uptime.

    Don’t just lurk. If you’ve got the guts to show how you’re rebuilding your station on the wreckage of the old ways, drop a comment below. How are you occupying the victory today?

    SUPPORTSUBSCRIBECONTACT ME

    D. Bryan King

    Sources

    Disclaimer:

    I love sharing what I’m learning, but please keep in mind that everything I write here—including this post—is just my personal take. These are my own opinions based on my research and my understanding of things at the time I’m writing them. Since life moves way too fast and things change quickly, please use your own best judgment and consult the experts for your specific situations!

    #AlpineLinux #AmateurRadioDashboard #amateurRadioTechnology #Automation #containerization #CSSInjection #CustomCSS #DetroitHamRadio #devops #DigitalDashboard #DigitalSignage #DisplaySolutions #Docker #DockerCompose #DXCluster #EN82le #GHCR #gridSquare #hamRadio #HamRadioKiosk #hamRadioSoftware #hamRadioTools #HamClock #HomeLab #HTTPSWrapper #KioskMode #KioskSetup #KioskTrue #Linux #MaidenheadLocator #networkSecurity #OpenSource #OpenHamClock #OpenSSL #piSignage #PiSignageDocker #PiSignageTips #RadioStationDisplay #RaspberryPi #RaspberryPiProjects #realTimeData #RemoteMonitoring #ScreenRotation #SelfHosted #ServerManagement #ShackClock #SignalTracking #SmartShack #Socat #SoftwareWorkaround #SolarData #SSLWrap #StationIntegration #TechGuide #TechnicalTutorial #UITweaks #W8DBK #WebDevelopment #WebLinkAsset

    After using so many #Apps and #WebApps for #Mastodon I just realized, that I totally missed out on simple #CustomCSS.
    And boy, do I love @TangerineUI: I want to boost everything, just to see the little rocket start every time.

    Check it out under:
    https://github.com/nileane/TangerineUI-for-Mastodon/tree/main

    GitHub - nileane/TangerineUI-for-Mastodon: A Tangerine redesign for Mastodon's Web UI. 🍊🐘

    A Tangerine redesign for Mastodon's Web UI. 🍊🐘. Contribute to nileane/TangerineUI-for-Mastodon development by creating an account on GitHub.

    GitHub

    RE: https://mementomori.social/@rolle/115679600302861278

    I'm having a bit of scope creep here. I've also been dealing with a migraine, work stress, and lack of time.

    On top of implementing CSS tokens, Parcel, and CSS modularization, I'm refactoring everything to add support for installing the ultra-accessible variation for others too, not just users of my Mastodon fork.

    Mastodon Bird UI 4.0.0 for Mastodon 4.6.0 is going to be awesome. I'm hoping to see even more instances adopting it. I'll continue supporting the Custom CSS-only approach for masto.host users and others without filesystem access, while also making life easier for Mastodon admins.

    Hang tight, I'll get there soon.

    Source: https://github.com/ronilaukkarinen/mastodon-bird-ui/tree/dev-build-system-css-theme-tokens

    #BuildInPublic #MastodonBirdUI #BirdUI #CSS #MastoAdmin #CustomCSS #WebDev #OpenSource

    I appreciate being able to remove “AI” buttons from websites via custom CSS. Mini meltdown averted.

    #DigitalOcean #ForcedAI #CustomCSS

    gosh, i love my new theme! yeah, dark mode is hard coded now, but you can at least choose an accent color and it doesn't completely crumble under light mode! it is also compatible with the waffler theme (mostly) and most of the programmer themes (dracula is a bit dramatic. but of course he is).
    i do not recommend it with wafrn98 on, i am sorry. i assume that one has !important properties only or something. if you could tell me workarounds for that, i'd appreciate it. i am relatively new to CSS.

    CREDIT:

    • @noahebalon for giving me the link to his background image. origin unknown (besides that it came from tumblr).
    • @preciouscoconut on reddit for the blahaj drawing in the logo.

    if you are interested in getting the CSS of my theme, feel free to DM me! Please credit me in your bio if you decide use it (even if you customise it).


    #yes-i-made-this-on-mobile-fml #wafrn #wafrn-theme #custom-css
    🌸🔪 Nyaa~! Your favorite yandere is back... 💻💕

    I've been hiding in the shadows... sharpening my code and my knives (for love, of course~
    😚🔪)
    But now... I'm back. For real.

    ✨ Dive into my obsessive little universe → https://yandere.eu
    You'll find custom Discord tools, dreamy CSS themes, and so much more coming soon...

    💬 Two Discord servers are already listed on the site — they’re still under development, but you’re welcome to peek inside... if you dare 💞

    Because if I can’t own your heart,
    at least let me style your server
    😈💕

    Your devoted neko dev,
    Sparkle
    💖🩸 #YandereDev #DiscordTools #CSSThemes #YandereVibes #SparkleIsBack #YandereEU #ObsessiveLove #DevLife #CustomCSS #DiscordServers
    Yandere Multiverse 🌸🔪

    A place where tools, Discord servers, and GitHub projects have been crafted so that yanderes and their senpai can be together... forever 💕🔪

    "Soph, why do you insist on using custom CSS to make every website look worse?"

    I don't know what you mean.

    #css #web #customcss #userstyles #userstyle

    Solo he tardado 2 semanas en darme cuenta de que #FreshRSS tiene temas y que se puede cambiar el aspecto fácilmente.

    Mientras tanto, como admin que soy, ya había instalado una extensión llamada #CustomCSS y me disponía a hacer cambios añadiendo código.

    Bien, Nuria, bien.

    #rss #lecturasocial

    CozyFish UI - Gitlab → voici la page Gitlab de mes fichiers custom CSS et thèmes pour Firefish

    Les 2 ont été créés pour aller ensemble mais le custom CSS fonctionne normalement très bien avec les autres thèmes par défaut de Firefish (j'utilise les variables de couleurs dans le css)

    Vous pouvez me conseiller, me réprimander parceque j'ai mal fait la page gitlab, contribuer (en rendant le code plus propre ou en ajoutant des fonctionnalités), ou partager si le projet vous plaiiit


    #UiUx #UiDesign #Ui #Ux #CustomCSS #Firefish #UserExperience #CSS #Fediverse #Design #Theme #CustomTheme
    Minybol / CozyFish UI · GitLab

    Cozyfish UI is a more accessible and cozyiest themes and custom CSS for Firefish. Warm and cozy colors, more bigger icons and fonts, and more.

    GitLab
    Aujourd'hui je poste la page gitlab de mon #CustomCSS et les #theme pour #Firefish hehe

    C'est pas fini mais comme ça si vous avez des conseils à me donner ou autres bidules, vous pourrez