commit 935e213f27ca04637c65eea3170d7e3c9e75f92c
Author: SSVC Admin <it@ssvc-rimsting.de>
Date:   Tue Mar 11 09:31:32 2025 +0100

    first commit

diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000..b2c86c7
--- /dev/null
+++ b/.env.sample
@@ -0,0 +1,14 @@
+# PowerDNS Server Konfiguration
+PDNS_PORT=53
+PDNS_DB_NAME=powerdns
+PDNS_DB_PASSWORD=secure_pdns_password
+PDNS_API_KEY=secure_api_key_change_me
+PDNS_WEBSERVER_PORT=8081
+PDNS_WEBSERVER_PASSWORD=secure_webserver_password
+PDNS_DEFAULT_TTL=1500
+
+# PowerDNS Admin Konfiguration
+PDNS_ADMIN_PORT=8080
+PDNS_ADMIN_DB_NAME=powerdnsadmin
+PDNS_ADMIN_DB_PASSWORD=secure_pdns_admin_password
+PDNS_ADMIN_SALT=$2b$12$DCzILDEfKfpieQRKd9U6Q. #python3 -c 'import bcrypt; print(bcrypt.gensalt().decode("utf-8"));'
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..35d40f5
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,4 @@
+.env
+pdns-admin-mysql-data
+pdns-admin-upload
+pdns-mysql-data
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e69de29
diff --git a/Readme.md b/Readme.md
new file mode 100644
index 0000000..2799925
--- /dev/null
+++ b/Readme.md
@@ -0,0 +1,4 @@
+# Readme
+
+## Get verison
+docker exec pdns pdns_server --version
\ No newline at end of file
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000..5600795
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,97 @@
+version: '3'
+
+services:
+  # MariaDB-Datenbank für PowerDNS Server
+  mysql:
+    image: mariadb:11
+    container_name: mysql
+    restart: unless-stopped
+    environment:
+      MYSQL_ROOT_PASSWORD: ${PDNS_DB_PASSWORD}
+      MYSQL_DATABASE: ${PDNS_DB_NAME}
+      MYSQL_USER: pdns_user
+      MYSQL_PASSWORD: ${PDNS_DB_PASSWORD}
+    volumes:
+      - ./pdns-mysql-data:/var/lib/mysql
+    networks:
+      - pdns-network
+    healthcheck:
+      test: [ "CMD-SHELL", 'mysqladmin ping' ]
+      interval: 10s
+      timeout: 2s
+      retries: 10
+
+  # MariaDB-Datenbank für PowerDNS Admin
+  mysql-admin:
+    image: mariadb:11
+    container_name: mysql-admin
+    restart: unless-stopped
+    environment:
+      MYSQL_ROOT_PASSWORD: ${PDNS_ADMIN_DB_PASSWORD}
+      MYSQL_DATABASE: ${PDNS_ADMIN_DB_NAME}
+      MYSQL_USER: pdns_admin_user
+      MYSQL_PASSWORD: ${PDNS_ADMIN_DB_PASSWORD}
+    volumes:
+      - ./pdns-admin-mysql-data:/var/lib/mysql
+    networks:
+      - pdns-network
+
+  # PowerDNS Server mit MySQL Backend
+  pdns:
+    image: pschiffe/pdns-mysql:${PDNS_VERSION}
+    container_name: pdns
+    restart: unless-stopped
+    ports:
+      - "${PDNS_PORT}:53/tcp"
+      - "${PDNS_PORT}:53/udp"
+    environment:
+      PDNS_primary: "yes"
+      PDNS_api: "yes"
+      PDNS_api_key: ${PDNS_API_KEY}
+      PDNS_webserver: "yes"
+      PDNS_webserver_address: 0.0.0.0
+      PDNS_webserver_port: ${PDNS_WEBSERVER_PORT}
+      PDNS_webserver_password: ${PDNS_WEBSERVER_PASSWORD}
+      PDNS_webserver_allow_from: "0.0.0.0/0,::/0"
+      PDNS_version_string: anonymous
+      PDNS_default_ttl: ${PDNS_DEFAULT_TTL}
+      PDNS_gmysql_user: pdns_user
+      PDNS_gmysql_password: ${PDNS_DB_PASSWORD}
+      PDNS_gmysql_dbname: ${PDNS_DB_NAME}
+      PDNS_gmysql_host: mysql
+    links:
+      - mysql:mysql
+    depends_on:
+      - mysql
+    networks:
+      - pdns-network
+
+  # PowerDNS Admin Web-Interface
+  pdns-admin:
+    image: pschiffe/pdns-admin:latest
+    container_name: pdns-admin
+    restart: unless-stopped
+    ports:
+      - "${PDNS_ADMIN_PORT}:8080"
+    environment:
+      PDNS_ADMIN_SQLA_DB_HOST: mysql-admin
+      PDNS_ADMIN_SQLA_DB_NAME: ${PDNS_ADMIN_DB_NAME}
+      PDNS_ADMIN_SQLA_DB_USER: pdns_admin_user
+      PDNS_ADMIN_SQLA_DB_PASSWORD: ${PDNS_ADMIN_DB_PASSWORD}
+      PDNS_ADMIN_SALT: ${PDNS_ADMIN_SALT}
+      PDNS_VERSION: ${PDNS_VERSION}
+      PDNS_API_KEY: ${PDNS_API_KEY}
+    volumes:
+      - ./pdns-admin-upload:/opt/powerdns-admin/upload
+    links:
+      - mysql-admin:mysql
+      - pdns:pdns
+    depends_on:
+      - mysql-admin
+      - pdns
+    networks:
+      - pdns-network
+
+networks:
+  pdns-network:
+    driver: bridge
diff --git a/set-dot-env.sh b/set-dot-env.sh
new file mode 100755
index 0000000..142c3c2
--- /dev/null
+++ b/set-dot-env.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+
+# Funktion zum Generieren zufälliger Passwörter
+generate_password() {
+    local length=$1
+    # Verwende /dev/urandom für bessere Zufälligkeit, tr für die Auswahl der Zeichen
+    # Wir nutzen Buchstaben und Zahlen, um Probleme mit Sonderzeichen zu vermeiden
+    cat /dev/urandom | tr -dc 'a-zA-Z0-9' | head -c $length
+}
+
+# Funktion zum Generieren eines bcrypt Salt für PowerDNS Admin
+generate_salt() {
+    # Prüfen, ob Python und bcrypt installiert sind
+    if command -v python3 >/dev/null 2>&1 && python3 -c "import bcrypt" >/dev/null 2>&1; then
+        python3 -c 'import bcrypt; print(bcrypt.gensalt().decode("utf-8"));'
+    else
+        echo "WARNUNG: Python3 oder bcrypt nicht gefunden. Verwende Standard-Salt."
+        echo '$2b$12$xZKJJFAMZ41EFJptSMbZv.'
+    fi
+}
+
+# Zielverzeichnis für die .env-Datei
+ENV_FILE=".env"
+
+# Generiere Passwörter (12 Zeichen)
+PDNS_DB_PASSWORD=$(generate_password 12)
+PDNS_API_KEY=$(generate_password 16)
+PDNS_WEBSERVER_PASSWORD=$(generate_password 12)
+PDNS_ADMIN_DB_PASSWORD=$(generate_password 12)
+
+# Generiere Salt für PowerDNS Admin
+PDNS_ADMIN_SALT=$(generate_salt)
+
+# Erstelle oder überschreibe die .env-Datei
+cat > $ENV_FILE << EOF
+# PowerDNS Server Konfiguration
+PDNS_PORT=53
+PDNS_DB_NAME=powerdns
+PDNS_DB_PASSWORD=${PDNS_DB_PASSWORD}
+PDNS_API_KEY=${PDNS_API_KEY}
+PDNS_WEBSERVER_PORT=8081
+PDNS_WEBSERVER_PASSWORD=${PDNS_WEBSERVER_PASSWORD}
+PDNS_DEFAULT_TTL=1500
+
+# PowerDNS Admin Konfiguration
+PDNS_ADMIN_PORT=8080
+PDNS_ADMIN_DB_NAME=powerdnsadmin
+PDNS_ADMIN_DB_PASSWORD=${PDNS_ADMIN_DB_PASSWORD}
+PDNS_ADMIN_SALT=${PDNS_ADMIN_SALT}
+PDNS_VERSION="4.9"
+EOF
+
+# Ausgabe mit generierten Werten
+echo "Die .env-Datei wurde mit folgenden zufälligen Passwörtern erstellt:"
+echo "PDNS_DB_PASSWORD: $PDNS_DB_PASSWORD"
+echo "PDNS_API_KEY: $PDNS_API_KEY"
+echo "PDNS_WEBSERVER_PASSWORD: $PDNS_WEBSERVER_PASSWORD"
+echo "PDNS_ADMIN_DB_PASSWORD: $PDNS_ADMIN_DB_PASSWORD"
+echo "PDNS_ADMIN_SALT: $PDNS_ADMIN_SALT"
+echo "PDNS_VERSION":"4.9"
+echo ""
+echo "Die Datei wurde als $ENV_FILE gespeichert. Bitte bewahren Sie diese Passwörter sicher auf!"
\ No newline at end of file