Sign inSign up

weasts/gcp-ddns-updater

By weasts

•Updated 6 months ago

Lightweight Docker DDNS updater for Google Cloud DNS. Multi-domain support. See GitHub.

Image
Networking
Web servers
0

1.7K

weasts/gcp-ddns-updater repository overview

⁠Google Cloud Dynamic DNS (DDNS) Updater

A lightweight, secure Docker container that automatically updates Google Cloud DNS 'A' records with your network's current public IP address. Perfect for home servers, homelabs, and self-hosting environments behind dynamic IPs.

🤖 AI-Assisted Project: The core code, optimizations, and documentation for this project were generated by Google's Gemini Pro. A human developer provided the architectural guidance, security requirements, and performed all real-world testing and validation.

⭐ Source Code, Issue Tracker, and Full Documentation: https://github.com/PrestonWest87/HomelabDNSUpdater⁠


⁠Features
  • Multi-Domain Support: Update a single domain, subdomains, or wildcard records simultaneously (e.g., example.com,*.example.com).
  • Ultra-Lightweight: Built on Python slim, optimized with HTTP session pooling and manual garbage collection to run for months without memory leaks.
  • Secure by Default: Runs as an unprivileged, non-root user (ddnsuser) inside the container.
  • Smart Updates: Only pushes changes to the Google Cloud API when an actual IP address mismatch is detected.
⁠Prerequisites

You will need a Google Cloud Service Account JSON key with the DNS Record Set Administrator role.

Note: If you are unsure how to generate this key or find your Google Cloud Zone Name, please see the Full Setup Guide on GitHub⁠.

⁠Quick Start
version: '3.8'

services:
  gcp-ddns:
    image: yourdockerhubusername/gcp-ddns-updater:latest
    container_name: gcp-ddns-updater
    restart: unless-stopped
    volumes:
      # Map your downloaded GCP JSON key to the container
      - /path/to/your/credentials.json:/secrets/credentials.json:ro
    environment:
      - GCP_PROJECT_ID=your-project-id
      - GCP_ZONE_NAME=your-zone-name
      - GCP_DOMAIN_NAME=example.com,*.example.com
      - DNS_TTL=300
      - CHECK_INTERVAL=300

Tag summary

Content type

Image

Digest

sha256:50f5bd0a5…

Size

51.8 MB

Last updated

6 months ago

docker pull weasts/gcp-ddns-updater