install.sh 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/bin/bash
  2. # Έλεγχος αν τρέχει ως root
  3. if [ "$EUID" -ne 0 ]; then
  4. echo "❌ Please run as root (sudo bash install.sh)"
  5. exit 1
  6. fi
  7. echo "🚀 [1/6] Updating APT and installing system packages..."
  8. apt-get update
  9. apt-get install -y python3 python3-pip bind9 bind9utils bind9-doc dnsutils ufw apparmor-utils zip unzip curl
  10. echo "🐍 [2/6] Installing Python dependencies..."
  11. # Το --break-system-packages είναι απαραίτητο στα νεότερα Debian/Ubuntu
  12. pip3 install Flask Werkzeug --break-system-packages
  13. echo "📂 [3/6] Setting up directories and copying files..."
  14. # Δημιουργία του βασικού φακέλου
  15. mkdir -p /opt/bindmanager
  16. # Αντιγραφή όλων των αρχείων από το current directory στο /opt/bindmanager
  17. cp -r ./* /opt/bindmanager/
  18. chmod +x /opt/bindmanager/app.py
  19. # Δημιουργία φακέλου για τα Query Logs του BIND9 και δικαιώματα
  20. mkdir -p /var/log/named
  21. touch /var/log/named/queries.log
  22. chown -R bind:bind /var/log/named
  23. chmod -R 775 /var/log/named
  24. # Δημιουργία φακέλου για την cache του BIND αν δεν υπάρχει (για τα slave/rpz zones)
  25. mkdir -p /var/cache/bind
  26. chown -R bind:bind /var/cache/bind
  27. echo "🛡️ [4/6] Patching AppArmor for BIND9 Query Logs..."
  28. # Το BIND9 by default μπλοκάρεται από το AppArmor αν πάει να γράψει στο /var/log/named
  29. if [ -f /etc/apparmor.d/usr.sbin.named ]; then
  30. if ! grep -q "/var/log/named/\*\* rw," /etc/apparmor.d/usr.sbin.named; then
  31. # Προσθέτει το rule πριν το κλείσιμο της αγκύλης '}'
  32. sed -i '/^}/i \ \ /var/log/named/** rw,' /etc/apparmor.d/usr.sbin.named
  33. systemctl reload apparmor
  34. echo "✅ AppArmor patched!"
  35. fi
  36. fi
  37. echo "⚙️ [5/6] Creating Systemd Service..."
  38. cat <<EOF > /etc/systemd/system/bindmanager.service
  39. [Unit]
  40. Description=BIND9 Manager Control Panel
  41. After=network.target
  42. [Service]
  43. User=root
  44. WorkingDirectory=/opt/bindmanager
  45. ExecStart=/usr/bin/python3 app.py
  46. Restart=always
  47. RestartSec=5
  48. [Install]
  49. WantedBy=multi-user.target
  50. EOF
  51. echo "🔥 [6/6] Starting Services..."
  52. systemctl daemon-reload
  53. systemctl enable bindmanager
  54. systemctl start bindmanager
  55. systemctl enable bind9
  56. systemctl restart bind9
  57. echo ""
  58. echo "====================================================================="
  59. echo "✅ BIND9 PRO Control Panel installed successfully!"
  60. echo "====================================================================="
  61. echo "👉 App is running internally on: http://127.0.0.1:5000"
  62. echo "🔐 Default Login: admin / admin123"
  63. echo "🌐 Remember to configure Caddy to point to port 5000!"
  64. echo "====================================================================="