|
|
@@ -0,0 +1,78 @@
|
|
|
+#!/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 <<EOF > /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 "====================================================================="
|