| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- #!/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 "====================================================================="
|