Releases: nfrastack/herald
2.3.4
2.3.3
Changes
- (container) Adjust DOMAIN_XX_RECORD_PROXIED to properly configure application
2.3.2
Bugfix release, and working container environment thanks to the help of @tehneimer
Changed
- (container) Changed environment variables and simplified container usage.
- (domain) Change domain.proxied option to -> domain.record.proxied
- (input/docker) Fix condition where process_existing wasn't recognized
- (output/dns/cloudflare) remove duplicate registrations
- (output/dns/cloudflare) introduce retries for records lookups due to sluggish api
- (output/dns/cloudflare) cleanup some 1.x leftovers
2.3.1
Release 2.3.1 - See CHANGELOG.md
2.3.0
Release 2.3.0 - See CHANGELOG.md
2.2.0
Release 2.2.0 - See CHANGELOG.md
2.1.1
Changed
- (output/*) Don't clobber existing records - update existing and add comment
- (build) Remove dependency to C libraries, allowing musl support
2.1.0
Added
- PowerDNS Output Provider support
Changed
- (domain) Log that an Input Provider is overriding an IP Address properly
- (input) Providers with interval (file, remote, caddy, traefik, zerotier, tailscale) all now perform an initial check upon startup. Previously they waited for the first interval to pass - Now it happens on startup, and depending on value of process_existing - either performs record updates, or takes an inventory and bases the next interval execution on the initial inventory for changes. This is a much saner approach.
- (input/docker) quiet down some INFO log level output
- (input/docker) remove duplication in logging when nfrastack.dns.enable=true
- (input/zerotier) Cache API type when auto detecting version and try both on intialpoll as opposed to flip-flopping.
- (input/zerotier) Handle cases where double logprefixes appears
- (input/zerotier) Set Name feld when calling DNSEntry struct to fix entries without FQDN not to be written
- (input/zerotier) perform better change detection and quiet log output
- (output/dns/cloudflare) refine operations
- (output/dns/cloudflare) change log prefix to [function/pkg/provider/profile_name]
- (output/dns/cloudflare) properly accomodate for multiple domains with same name
- (output/file/zonefile) make columns fixed width
- (output/file/zonefile) properly write soa records
- (output/remote) - remove duplicate routines limiting ability to remove records
- (common) introduce common package to deal with records and logprefixes properly
2.0.1
Changed
- (domain) Fixed issue with domains reading old hardcoded profile information throwing warnings
2.0.0
New project name, Herald.
BREAKING CHANGES As the earlier versions of this tool were built the overall configuration structure started to quickly grow technical debt, so it has been revamped entirely. Please also see changes in the NixOS configuration.
The Container image that is available has been simplified. In its "AUTO" generating mode it allows for pulling from Caddy, Traefik, and Docker input providers, and only outputing to Cloudflare. If you wish to have more functionality you can set it to not auto generate the config.
Added
- New
profilesstructure for domain configuration withinputsandoutputsfields for cleaner, more logical domain configuration grouping - (domain) Enhanced poll provider validation in BatchProcessor for better filtering
- (domain) Poll Provider Targeting - Domain configurations can now specify which poll providers are allowed to use them via
poll_providersfield - (domain) Output Profile Targeting - Domain configurations can now specify which output profiles should process their records via
output_profilesfield - (domain) Configuration validation - Application fails fast with clear error messages if domains reference non-existent poll providers, output profiles, or DNS providers
- (domain) Multiple poll providers and output profiles support per domain configuration
- (inputs/docker) Docker Connection Pooling - Multiple Docker poll providers now share a single connection per API endpoint for improved resource efficiency
- (inputs/docker) Centralized Event Logging - Docker events are now logged once at the shared connection level with clear provider attribution
- (inputs/docker) Smart Event Distribution - Container events are intelligently filtered and distributed only to relevant providers based on their filter configuration
- (outputs/host) When Flattening CNAMEs - name sometimes gets resolved to localhost. New resolver and ip_override options to force proper entries in hosts file.
Changed
- Filters have consistent naming per input provider
Removed
- BREAKING Environment variables have been removed for the most part. Use the configuration file for better configuration.
Migration Guide
The entire configuration structure has been simplified and streamlined. The old multi-level structure with separate poll_providers, providers, and domain fields has been replaced with a cleaner inputs and outputs approach.
Old configuration structure:
# OLD: Separate sections for each component type
poll_providers:
docker_services:
type: docker
# ... config
providers:
cloudflare_dns:
type: cloudflare
# ... config
domains:
my_domain:
name: "example.com"
input_profiles: # REMOVED
- docker_services
outputs: # REMOVED
- cloudflare_dns
poll_providers: # REMOVED
- docker_services
output_profiles: # REMOVED
- cloudflare_dnsNew configuration structure:
# NEW: Unified inputs and outputs sections
inputs:
docker_services:
type: docker
# ... config
outputs:
cloudflare_dns:
type: cloudflare
# ... config
domains:
my_domain:
name: "example.com"
profiles: # NEW REQUIRED STRUCTURE
inputs:
- docker_services
outputs:
- cloudflare_dns