pdns/docker-compose-traefik.yml aktualisiert

This commit is contained in:
2026-01-03 03:06:57 +00:00
parent e02d273154
commit 801113d60e

View File

@@ -25,32 +25,24 @@ services:
set -eu
mkdir -p /etc/powerdns/pdns.d
# Versuche Verzeichnis-Rechte zu setzen, ignoriere Fehler (Operation not permitted)
chmod 777 /data || echo "Could not change /data permissions, hoping for the best..."
PDNS_BIN=$$(which pdns_server || echo "/usr/local/sbin/pdns_server")
DB_FILE="$${PDNS_GSQLITE3_DATABASE}"
if [ "$${PDNS_LAUNCH}" = "gsqlite3" ] && [ ! -f "$$DB_FILE" ]; then
echo "Initialisierung der Datenbank in $$DB_FILE"
# 1. Vorbereitung als Root
if [ ! -f "$$DB_FILE" ]; then
echo "Initialisiere SQLite als root..."
touch "$$DB_FILE"
# Wir finden heraus, welcher User pdns normalerweise gehört (meist pdns)
# und geben ihm die Datei. Falls der User nicht existiert, nutzen wir 666.
chmod 666 "$$DB_FILE"
# Wir versuchen die Datei direkt zu erzeugen
# Wenn das fehlschlägt, liegt es am Host-Mount
if touch "$$DB_FILE" 2>/dev/null; then
chmod 666 "$$DB_FILE"
# Schema suchen
SCHEMA=$$(find /usr -name schema.sqlite3.sql | head -n 1)
if [ -n "$$SCHEMA" ]; then
sqlite3 "$$DB_FILE" < "$$SCHEMA"
echo "Schema erfolgreich importiert."
fi
else
echo "FATAL: Keine Schreibrechte in /data. Bitte auf dem Host 'chmod 777' auf das Verzeichnis ausführen!"
exit 1
SCHEMA=$$(find /usr -name schema.sqlite3.sql | head -n 1)
if [ -n "$$SCHEMA" ]; then
sqlite3 "$$DB_FILE" < "$$SCHEMA"
fi
fi
# Config schreiben
# 2. Config schreiben
cat > /etc/powerdns/pdns.d/99-env.conf <<EOF
api=yes
webserver=yes
@@ -60,8 +52,13 @@ services:
webserver-allow-from=$${PDNS_API_ALLOW_FROM}
launch=gsqlite3
gsqlite3-database=$$DB_FILE
# Diese Zeilen sagen PowerDNS, zu wem es wechseln soll:
setuid=pdns
setgid=pdns
EOF
echo "Startserver: $$PDNS_BIN"
# Wir starten als root, aber PDNS wechselt intern sofort den User
exec $$PDNS_BIN --daemon=no --guardian=no --control-console