#!/bin/bash # Έλεγχος αν τρέχει ως root if [ "$EUID" -ne 0 ]; then echo "❌ Please run as root (sudo bash install.sh)" exit 1 fi echo "🚀 [1/6] Updating APT and installing system packages..." apt-get update apt-get install -y python3 python3-pip bind9 bind9utils bind9-doc dnsutils ufw apparmor-utils zip unzip curl echo "🐍 [2/6] Installing Python dependencies..." # Το --break-system-packages είναι απαραίτητο στα νεότερα Debian/Ubuntu pip3 install Flask Werkzeug --break-system-packages echo "📂 [3/6] Setting up directories and copying files..." # Δημιουργία του βασικού φακέλου mkdir -p /opt/bindmanager # Αντιγραφή όλων των αρχείων από το current directory στο /opt/bindmanager cp -r ./* /opt/bindmanager/ chmod +x /opt/bindmanager/app.py # Δημιουργία φακέλου για τα Query Logs του BIND9 και δικαιώματα mkdir -p /var/log/named touch /var/log/named/queries.log chown -R bind:bind /var/log/named chmod -R 775 /var/log/named # Δημιουργία φακέλου για την cache του BIND αν δεν υπάρχει (για τα slave/rpz zones) mkdir -p /var/cache/bind chown -R bind:bind /var/cache/bind echo "🛡️ [4/6] Patching AppArmor for BIND9 Query Logs..." # Το BIND9 by default μπλοκάρεται από το AppArmor αν πάει να γράψει στο /var/log/named if [ -f /etc/apparmor.d/usr.sbin.named ]; then if ! grep -q "/var/log/named/\*\* rw," /etc/apparmor.d/usr.sbin.named; then # Προσθέτει το rule πριν το κλείσιμο της αγκύλης '}' sed -i '/^}/i \ \ /var/log/named/** rw,' /etc/apparmor.d/usr.sbin.named systemctl reload apparmor echo "✅ AppArmor patched!" fi fi echo "⚙️ [5/6] Creating Systemd Service..." cat < /etc/systemd/system/bindmanager.service [Unit] Description=BIND9 Manager Control Panel After=network.target [Service] User=root WorkingDirectory=/opt/bindmanager ExecStart=/usr/bin/python3 app.py Restart=always RestartSec=5 [Install] WantedBy=multi-user.target EOF echo "🔥 [6/6] Starting Services..." systemctl daemon-reload systemctl enable bindmanager systemctl start bindmanager systemctl enable bind9 systemctl restart bind9 echo "" echo "=====================================================================" echo "✅ BIND9 PRO Control Panel installed successfully!" echo "=====================================================================" echo "👉 App is running internally on: http://127.0.0.1:5000" echo "🔐 Default Login: admin / admin123" echo "🌐 Remember to configure Caddy to point to port 5000!" echo "====================================================================="