Perfect Rootserver Script - Debian 8 und 9 Webserver und Mailserver in One-Click mit GUI Config

  • Hallo,


    da ich dieses Forum sehr schätze und deren Mitglieder würde ich mich daher ganz besonders über Konstruktives Feedback von euch freuen.

    Es gibt / gab hier einen User, der hatte mal ein How-To für die Absicherung eines Debian Servers sowie die Installation bereit gestellt.


    Dieses HowTo gibt es jetzt als Script. Zu finden auf www.perfectrootserver.de und GitHub

    https://github.com/shoujii/perfectrootserver/


    Die letzte Beta war noch für Debian Jessie, nachfolgende Releases sollen nur noch für Debian 9 kommen.


    Zu mir / uns:

    Wir machen Learning by Doing. Daher freuen wir uns über jedes Feedback. Natürlich lesen wir auch viel und wollen das Script wo nur geht verbessern.


    Welches ziel haben wir?

    Wir wollen einfach einen Zwischenweg für neue Unternehmer oder Webseitenbetreiber finden einen V- oder Rootserver einzurichten.

    Klar, ich kann auch Froxlor nutzen. Allerdings ist man dann halt auch auf Froxlor angewiesen. Das Script nutzt immer einzelne Komponenten, was das googlen auch erleichtert. Gibt es ein HowTo für OpenSSL, funktioniert dieses mit hoher Wahrscheinlichkeit auch bei der Skriptinstallation.


    Eigentliches Ziel ist aber eine Brücke zwischen einem Management Servern die ja deutlich mehr kosten und selbst Administrierten Servern.


    Ob oder wie Sinnvoll das ist, möchte ich mal dahin stellen.


    Warum machen wir das?

    Wir wollen einfach mit der Materie Server arbeiten. Wir Basteln gerne mit Bash Skripte zusammen und erfreuen uns daran. Im besten Fall können wir jemanden damit helfen einen Server auf zu setzen.


    Was wir uns wünschen?

    Nur Feedback :) Wir würden uns freuen, wenn wir etwas Feedback bekommen was wir wo verbessern können. Wo sind Sicherheitslücken etc.


    Danke euch :)

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Wir haben jetzt die neue Version erstmal veröffentlicht. Debian 9 aka Stretch Alpha


    Hallo,


    die letzten Tage wurde fleißig am Script gewerkelt und da der Release von Debian 9 aka Stretch vor der Tür steht, (17.6 -> in genau 7 Tagen) möchten wir euch die erste lauffähige Stretch Version des Scripts zum testen freigeben.


    Änderungen

    • PHP 5 entfernt
    • PHP 7.1 hinzugefügt
    • Progressbar
    • Teilweise mehr Error Handling
    • Updates
    • Fixes

    Bekannte Bugs

    • Phpmyadmin restricted geht nicht (normale Installation geht)
    • „Update Perfect Root Server“
    • „Install Add-ons (PRS Installation required)“
    • „Install Standalone Add-ons“

    – Sind noch „nutzlos“

    Installation

    Code
    1. wget -O ~/perfectrootserver.tar.gz https://github.com/shoujii/perfectrootserver/archive/0.9.7.1.tar.gz –no-check-certificate

    Code
    1. tar -xzf ~/perfectrootserver.tar.gz -C ~/ –strip-components=1
    Code
    1. bash ~/install.sh

    Alpha

    Dieser Release ist eine Alpha und daher nicht für Produktivsysteme gedacht!


    Feedback

    Wir würden uns sehr über Feedback freuen!


    Das Script umfasst mittlerweile ~9000 Zeilen und wächst immer weiter und das Testen ist sehr aufwendig.

    euer Perfect Root Server Team


    PS: Wir sind nun auch bei Facebook vertreten:

    https://www.facebook.com/perfectrootserver/

    Für Logo oder Titelbild Ideen in Bezug auf das Script sind wir jederzeit offen

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Habt ihr schon einmal etwas von ansible gehört? Ich würde auf jeden Fall heutzutage nicht mehr unbedingt irgendein "install.sh"-Script ausführen, das mir sowas - ggf. nicht idempotent ausführbar - erledigt. Ein fertiges Playbook inkl. config-templates und entsprechender Rollen ist mEn zukunftsträchtiger.


    Also die GUI kann ja quasi auf ein ansible im Hintergrund aufgesetzt werden, was auch losgelöst und nur teilweise genutzt werden könnte.

  • Habt ihr schon einmal etwas von ansible gehört?

    Ich selbst muss ich zugeben nicht :/ Aber Google Hilft da schon ungemein weiter.


    Ich würde auf jeden Fall heutzutage nicht mehr unbedingt irgendein "install.sh"-Script ausführen

    In wie fern meinst du das? Es ist ja genau erklärt, was das Script tut und was nicht.Der Quellcode ist völlig offen einsehbar. Von daher weiß ich nicht, was du speziell mit dem o.g. Fett markierten Text meinst. Der User weiß am Ende ziemlich genau, was das für ein Script ist welches er startet. Zumindest dachte ich das.


    das mir sowas - ggf. nicht idempotent ausführbar - erledigt

    Hilf mir kurz :D idempotent ist eine sich immer wiederholende Kette von Ereignissen, die das gleiche Ergebnis erzielt. Ich kann mich auch irren. Bin gerade unterwegs aber google das gern, falls ich das falsch in Erinnerung habe.


    Der User führt das Script aus. Der Confighelper fragt Variablen ab / das kann man auch gern per nano etc. machen die dann geprüft werden. Das Ergebnis ist ein immer gleiches Ergebnis. Ein Web und Mailserver der abgesichert mit php (nach Auswahl) nginx und MariaDB etc. läuft. Der Benutzer kann sich am Ende also Seine Webseite oder Shop etc. aufsetzen, weil alles da ist. Ich vergleiche das jetzt Spaßeshalber mal mit Froxlor, wo man ja auch Lets Encrypt im Backend einrichten kann oder NGINX oder APACHE etc.

    Ein fertiges Playbook inkl. config-templates und entsprechender Rollen ist mEn zukunftsträchtiger.

    Ein Template besteht ja bereits. Es muss nur mit Daten des Benutzers gefüllt werden. Die können wir nicht kennen. Domain, E-Mail, PHP Version etc. mehr ist es ja gar nicht. Alles was wir "wissen" können ist ja bereits da. Freilich kann man Zeile für Zeile noch erklären was welche VAR zu bedeuten hat die der User in der Config ausfüllen muss oder per nano.


    Also falls ich jetzt etwas falsch verstanden habe: Bitte verzeiht mir :D

    Ich danke Dir für das Feedback :)

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Die Idee versteh ich teilweise, die Zielgruppe nicht ;-)
    - wenn jemand Server häufiger aufsetzt, dann hat er entweder eigene Scripts (wo er weiss, was passiert), oder benutzt heute Tools wie ansible o.ä.
    - wenn jemand Anfänger ist: der soll sich mal eben ein Script holen und auf seinem Server ausführen oder zu wissen, was da passiert ? Sorry, will euch natürlich nichts unterstellen :-)) Aber woher weiss ein Anfänger, was da alles gemacht wird,und bevor er sich durch die ganzen Scripte gehangelt und verstanden hat ...
    OK, ich weiss, ist heute auch so, dass der eine oder andere frischgebackene Admin die ganze Installation nach irgendwelchen Anleitungen (z.T. richtig gute, aber auch oft veraltete bzw. falsche) aus dem Netz durchführt - ohne im Einzelnen zu verstehen, was er da tut. Ist ok, aber bitte nicht auf einer Kiste, da offen zugänglich ist.

    Hab mal ein paar Sachen überflogen und maul mal ein bisschen rum (mit dem Hintergrund, dass das Script von Anfängern genutzt wird)

    - logininformationen.sh: die einfache Ausgabe offener Ports halte ich für fragwürdig, insbesondere "UDP all ports are closed" - woher wisst ihr das? Nur weil euer Script da nicht macht ?
    Hier wiegt ihr Anfänger in falscher Sicherheit (woher wisst ihr, was da sonst installiert/versucht wurde ?)
    - ihr nutzt Debian: warum soll dann bash, ssl, ssh, roundcube aus NICHT-Debian-Quellen installiert werden ?
    (damit es unbedingt das Neueste ist ??) Fuer mich heisst das: durchbrechen des Packagemanagements & Installation von SW die u.U. noch nichtmal in unstable drin ist. Nö.
    - ihr überschreibt /etc/hosts - woher wisst ihr, dass da nicht noch was anderes drin steht (warum auch immer)
    - ihr überschreibt /etc/apt/sources.list, /etc/sysctl.conf - hallo ???
    Sowas geht dann weiter bei DB, php, Dovecot ... Konfigfiles werden überschrieben, ohne eine vorherige Sicherung das Originalfiles (hab ich zumindest nicht gesehn)
    - zumindest ab stretch ist RhostsRSAAuthentication deprecated
    - den Betrieb mit selfsigned-Certs würde ich heute vermeiden - hatte schon Clients, welche nach einem Update keine Mails mehr holen konnten, nach Umstellung auf Letsencrypt war die Welt wieder in Ordnung. Vor allem: bei den Addons habt ihr Letsencrypt bei - sieht etwas inkonsequent aus ;-)
    soweit ...
    Gruss

  • Interessantes Konzept, dazu habe ich ein Anliegen. Ich habe mir den Skript script/postfix.sh angeschaut und festgestellt, dass IPv6 gar nicht benutzt wird. Man sollte eigentlich von

    inet_protocols = ipv4

    auf

    inet_protocols = all

    setzen.

    Damit überprüft Postfix, ob IPv6 verfügbar ist. Wenn verfügbar, wird IPv6 bevorzugt. Allerdings würde ich aber bei diesem Konzept eine Abfrage über die Benutzung IPv4/IPv6 im Template "userconfig.cfg" implementieren, sodass der User sich entscheiden kann, ob "IPv4-only" oder "IPv4/IPv6" aktiviert werden soll.


    Gruß joas

  • Vielen Dank für die Beiträge :) Freue mich darüber sehr.

    wenn jemand Server häufiger aufsetzt, dann hat er entweder eigene Scripts (wo er weiss, was passiert), oder benutzt heute Tools wie ansible o.ä

    Naja im besten Fall setzt man den ja nur 1x auf :) Wer weiß was er tut, kann das natürlich auch alles selbst machen.

    wenn jemand Anfänger ist: der soll sich mal eben ein Script holen und auf seinem Server ausführen oder zu wissen, was da passiert ? Sorry, will euch natürlich nichts unterstellen :-)) Aber woher weiss ein Anfänger, was da alles gemacht wird,und bevor er sich durch die ganzen Scripte gehangelt und verstanden hat ...

    Das trifft doch aber auf so ziemlich alles zu. Windows, Linux, Software von Drittanbietern etc. Der Benutzer muss zwangsläufig dem Vertrauen, was er liest und wie sich das für Ihn anfühlt. Es gibt ja genug Open Source Scripte oder auch Closed Source Programme für alles mögliche. Immer muss der Benutzer ein gewisses Maß an Vertrauen zwangsläufig mitbringen.


    Er weiß, was das Script macht, wenn er sich z.B. auf der Webseite beließt. Diese wird natürlich auch noch ausgebaut. Ich kenne da so einige Windows Software, die deutlich mehr KnowHow benötigt, was da so an Adware mit kommt. Die meisten Programem sind doch an Anfänger gerichtet. Ob nun Froxlor oder LibreOffice.


    logininformationen.sh: die einfache Ausgabe offener Ports halte ich für fragwürdig, insbesondere "UDP all ports are closed" - woher wisst ihr das? Nur weil euer Script da nicht macht ?

    Naja unser Script setzt ein Debian Minimal Image voraus. Daher wissen wir welche Grundlage vorhanden ist.

    Hier wiegt ihr Anfänger in falscher Sicherheit (woher wisst ihr, was da sonst installiert/versucht wurde ?)

    Wie oben. Wir wissen, was drauf ist, weil wir Debian minimal voraussetzen. Alles was der Benutzer danach zusätzlich installiert liegt ja nicht mehr in unserer Hand.


    - ihr nutzt Debian: warum soll dann bash, ssl, ssh, roundcube aus NICHT-Debian-Quellen installiert werden ?

    Weil Debian oft mit dem ausrollen neuer Versionen recht lange braucht. Stable first. Das kommt bei uns auch noch. Da werden wir auf jeden Fall nachbessern, dass es eine LTS Version gibt die dann nur aus den Debian Quellen kommt.

    - ihr überschreibt /etc/hosts - woher wisst ihr, dass da nicht noch was anderes drin steht (warum auch immer)

    Wie oben. Da steht nichts "wichtiges" drinnen, weil die Grundlage das saubere minimal Image ist.

    - ihr überschreibt /etc/apt/sources.list, /etc/sysctl.conf - hallo ???

    Ja, das machen wir.

    - den Betrieb mit selfsigned-Certs würde ich heute vermeiden - hatte schon Clients, welche nach einem Update keine Mails mehr holen konnten, nach Umstellung auf Letsencrypt war die Welt wieder in Ordnung. Vor allem: bei den Addons habt ihr Letsencrypt bei - sieht etwas inkonsequent aus

    Self signed-Certs kommen nur im DEV-Modus zum Einsatz. Alles andere ist natürlich LE.

    Zum oben Fett gedruckten: Wie meinst du das der Webserver, Mailserver FTP etc. alles geht über LE, nicht nur die Addons.


    Das werden wir noch ändern, dass es da mehr Möglichkeiten gibt. Allerdings ist die Frage halt immer: Was braucht der "Anfänger" und was der etwas fortgeschrittene Benutzer. Daher wird das wohl Richtung DEV-Mode gehen.


    Danke :)

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Tja, wo steht das - woher weiss der User das ? Wie prüfst du das ?

    Auswahl_035.png


    So steht es direkt auf der Startseite. Geprüft wird das später in der Finalen Version. Wie genau, das ist noch offen. Das ginge durch das Abfragen ob bestimmte Ordner bestimmten Content haben etc. Da gibt es sicherlich eine gute Methode.


    Man überschreibt keine Configdatei ohne vorherige Sicherung. Punkt.

    Die Originale ist doch jederzeit wiederherstellbar :/ Ich verstehe schon was du meinst. Wir können auch ein Backup vorher anlegen, das werde ich mal notieren. Dennoch ist die Datei jederzeit wiederherstellbar. :thumbup:


    LG

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Jo, was die Doku angeht ist auch noch viel Bedarf da, dass alles ersichtlicher wird :)


    Auch in Bezug auf die einzelnen Komponenten, warum wieso weshalb etc. Der Benutzer soll sich im besten Fall nicht verloren fühlen sondern schon im Grundsatz verstehen, wieso man MariaDB installiert, wieso PHP etc. Da wird auf jeden Fall noch einiges geschrieben werden müssen. :)

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

  • Mein Feedback: Schließe mit thys und Hecke29 an. Euer Engagement ist gut gemeint - und vermutlich macht es euch Spaß und ihr lernt was dabei. Aber auch mir ist die Zielgruppe dieser Lösung unklar.


    Was ihr hier tun möchtet ist klassische "Desired State Configuration".

    Server nehmen, sagen welche Dienste drauf sollen, und ein Mechanismus soll sich vollautomatisch um die Provisionierung kümmern.

    Das löst man heute nicht mehr mit Scripts, sondern mit Puppet oder dem schon genannten Ansible. Module auf denen man aufsetzen kann finden sich zur Genüge, man kümmert sich nicht mehr um das "wie konfiguriert man das" sondern legt schlicht nur mehr fest wie die Konfiguration aussehen soll.


    Ist der Server mal "verkonfiguriert" wird der Agent einfach erneut aufgerufen und stellt die gewünschte Konfiguration wieder her. Ist nichts zu tun, weil die Config bereits wie gewünscht vorliegt tut der Agent auch nichts (desired state config / idempotent aufrufbar).

  • Ich respektiere eure Beiträge voll und ganz. Dennoch sind Sie irgendwie traurig.

    Interessante Ziele aber gibt ja auch shcon sowas wie http://centminmod.com/

    Okay, Gibt auch schon Brot, wieso noch eins? Gibt auch schon Serveranbieter, wieso andere? Und so weiter. Es ist uns auch bewusst, dass es sowas schon gibt. Verfehlt aber das Ziel des Themas :( In der Schule wäre das eine glatte 5 :/ Dein Beitrag hat also nichts beigetragen außer Werbung. Schade.

    ja, oder die geniale Mailcow-Application, habe damit sehr gute Erfahrung gemacht.


    Edit: hier ist der Link: https://mailcow.email/

    Japp, Mailcow war in früheren Versionen intigriert. Wurde aber entfernt, weil mit der aktuellsten Version das gesamte Script hätte umgeschrieben werden müssen. Das haben wir zwar auch so dann gemacht aber eine Abhängigkeit von Mailcow wollten wir nicht nochmal haben. Am Ende machen wir gleiches wie Mailcow mit Unterbau. Auch gleich sich Mailcow selbstverständlich auch Entwickelt und wir Andres Arbeit gerne mit verfolgen :)

    Das löst man heute nicht mehr mit Scripts, sondern mit Puppet oder dem schon genannten Ansible. Module auf denen man aufsetzen kann finden sich zur Genüge, man kümmert sich nicht mehr um das "wie konfiguriert man das" sondern legt schlicht nur mehr fest wie die Konfiguration aussehen soll.

    Sind das am Ende denn nicht alles Scripte bzw. Programmcode?


    Was die Zielgruppe angeht: Erstmal sind wir es, weil es halt Spaß macht. Man lernt ja immer dazu. Erinnere mich gern an Unity 3D damals. Die ersten sachen waren klein danach stück für Stück größer und besser.


    So ja hier auch. Mir Glück wird es mal besser, größer und oder bekannter.


    Wir versuchen das Script weiterhin mit Absicht schlicht zu halten. So, dass jeder sich darin schnell zurecht finden kann. Es ist schlank und ohne Ballast. Das haben wir als Feedback bereits öfter erhalten, was gerade für Benutzer interessant ist, die vielleicht auch mit dem Gedanken Spielen sich mit Bash zu befassen. Ich sehe unser Projekt wie den Raspberry Pi. Er ist für Bastler. Für Benutzer für die bestehende Alternativen vielleicht zu groß, zu Komplex sind.


    Das Ergebnis soll ja ein Server sein, der läuft. Der Sicher ist. Ein Server wo man sich nicht mehr zu viele Gedanken machen muss aber am Ende genau nachvollziehen kann was wo und wie gemacht wurde.


    Hier wurde ja wie ich finde unfairer weise auf https://centminmod.com/ hingewiesen. Natürlich kennen wir dieses Projekt und auch andere in der Richtung. Jedoch wollen wir uns damit gar nicht vergleichen. Weder vom Aufbau her, noch von der Funktion und der Manpower.


    Der Unterschied sollte ja schnell klar werden. Wer sich mal versucht in centminmod einzulesen und in unser Script wird schnell merken (Abhänig vom know how) das es bei uns deutlich Strukturierter / übersichtlicher ist. Nachvollziehbarer. Zumindest sehe ich das so. Das liegt natürlich nicht zuletzt an der Anzahl der Dateien und geschriebenen Codezeilen.


    Dann gibt es ja wieder den hier schon mal angesprochenen Punkt. Es gibt ja schon Debian, wieso CentOS ?Wieso Ubuntu? etc. In meinen Augen wirklich unfair und es ärgert mich. Es trägt nichts bei und ist in meinen Augen auch Grundlos.


    Worauf ich hier hinaus wollte:

    Es gibt ja nicht umsonst so viele Betriebssysteme. Jeder hat eine andere Vorstellung von "seinem" OS und was er damit machen kann und möchte.


    Ich hatte mir eig. von dem Thema hier etwas mehr erhofft, was in den Bereich konstruktive Kritik geht. Mehr in die Richtung: Du könntest hier und da dies und das besser machen (Puppets und ansible wurden ja angesprochen würden aber dem Projekt nicht helfen [im Moment] sondern es beerdigen). Leider ist das bisher nicht der Fall. Ich hoffe, dass sich das noch ändert. Ich weiß, dass hier die Profis unterwegs sind und die IT kein Kindergarten ist. Dennoch find eich muss man sich das Leben ja nicht schwerer machen wie ohnehin schon, oder? :)


    In dem Sinne: Danke für eure Beiträge.

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .