Skip to content

Make DNS-01 ACME providers extensible instead of hard-coded #157

Description

@FreeSynergy

Problem

pingap currently uses a hard-coded list of DNS providers for ACME DNS-01 challenges (currently ~4 providers).

This does not scale well:

  • Users are limited to the predefined providers
  • Adding a new provider (e.g. Hetzner DNS) requires a code change
  • The number of possible DNS providers is very large
  • Maintenance effort grows with each new provider request

Existing solutions / inspiration

The lego ACME client (used by Traefik) already solves this problem by supporting many DNS providers via a flexible configuration model:

https://go-acme.github.io/lego/dns/index.html

This shows that an extensible approach is feasible and proven.


Proposed solution

1. Configurable DNS provider registry

Introduce a DNS provider configuration instead of a fixed list.

Each provider entry could define:

  • name
  • api_endpoint
  • auth (API token / key / secret)
  • optional provider-specific parameters (TTL, propagation timeout, etc.)

Built-in providers (Cloudflare, Alibaba, …) could be shipped as defaults but remain editable.


2. Provider selection

When configuring ACME certificates, select a provider from the configured provider list (dropdown).


Optional UX improvement (“deluxe”)

To keep the UI clean when many providers exist:

  • Show (checkbox): provider appears in dropdown
  • Default provider (radio button): preselected provider

Benefits

  • No hard dependency on a fixed provider list
  • Supports custom / less common providers (e.g. Hetzner DNS)
  • Reduced maintenance burden
  • Better long-term scalability
  • Aligns pingap with established tooling like lego / Traefik

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

enhancementNew feature or request

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions