← All projects
Completed May 2025

NoIpClientVPN

A Raspberry Pi script that keeps a No-IP DDNS hostname pointed at the current public IP, with Telegram alerts on change — so the home VPN stays reachable even when the IP changes.

PythonRaspberry PiDDNSWireGuardCron

The problem

My home connection runs through a router on a mobile/LTE network, with a public IP that changes and that the router doesn’t reliably push to the DDNS service. Without a stable address to point at, the home WireGuard server becomes unreachable from outside exactly when you need it.

What it does

Every 5 minutes, run by cron, the script:

  1. Fetches the current public IP from an external service.
  2. Compares it with the last known value (kept in a cache).
  3. If it changed → updates the No-IP DDNS via their API and sends a Telegram message.
  4. If it’s unchanged → exits silently, doing nothing.

That way the hostname always points at the right IP, and the WireGuard client can use it as its endpoint without touching the router configuration.

Details

Stack

Python · Raspberry Pi · cron · No-IP API · WireGuard · Telegram