diff --git a/pdns/docker-compose-traefik.yml b/pdns/docker-compose-traefik.yml index 2783332..23fddf7 100644 --- a/pdns/docker-compose-traefik.yml +++ b/pdns/docker-compose-traefik.yml @@ -24,18 +24,32 @@ services: - | set -eu mkdir -p /etc/powerdns/pdns.d + mkdir -p /data - # Suche das Binary an den zwei wahrscheinlichsten Orten - if [ -f /usr/local/sbin/pdns_server ]; then - PDNS_BIN="/usr/local/sbin/pdns_server" - elif [ -f /usr/sbin/pdns_server ]; then - PDNS_BIN="/usr/sbin/pdns_server" - else - # Notlösung: Suche im gesamten System - PDNS_BIN=$$(find /usr -name pdns_server | head -n 1) + # Pfad finden + PDNS_BIN=$$(which pdns_server || echo "/usr/local/sbin/pdns_server") + + # 1. SQLite Datenbank initialisieren falls sie fehlt + if [ "$${PDNS_LAUNCH}" = "gsqlite3" ] && [ ! -f "$${PDNS_GSQLITE3_DATABASE}" ]; then + echo "SQLite database not found. Creating and importing schema..." + # Falls sqlite3 im Image ist, nutzen wir es zum Initialisieren + # Das Schema liegt bei PDNS 4.9 oft hier: + SCHEMA_PATH="/usr/local/share/doc/pdns/schema.sqlite3.sql" + [ -f "$$SCHEMA_PATH" ] || SCHEMA_PATH="/usr/share/doc/pdns/schema.sqlite3.sql" + + if [ -f "$$SCHEMA_PATH" ]; then + sqlite3 "$${PDNS_GSQLITE3_DATABASE}" < "$$SCHEMA_PATH" + # Rechte sicherstellen + chmod 666 "$${PDNS_GSQLITE3_DATABASE}" + echo "Schema imported successfully." + else + echo "Warning: Schema file not found. Touching empty file (PDNS might still fail)." + touch "$${PDNS_GSQLITE3_DATABASE}" + chmod 666 "$${PDNS_GSQLITE3_DATABASE}" + fi fi - # Konfiguration schreiben + # 2. Konfiguration schreiben cat > /etc/powerdns/pdns.d/99-env.conf <> /etc/powerdns/pdns.d/99-env.conf - fi - - if [ -z "$$PDNS_BIN" ]; then - echo "ERROR: pdns_server not found!" - exit 1 - fi - - echo "Generated config. Starting $$PDNS_BIN..." + echo "Starting PowerDNS..." exec $$PDNS_BIN --daemon=no --guardian=no --control-console