Ας φτιάξουμε έναν Home Server : Εισαγωγικές έννοιες

Στην σειρά άρθρων «Ας φτιάξουμε έναν Home Server» θα προσπαθήσουμε να μάθουμε πως να «σετάρουμε» τον δικό μας, προσωπικό Home Server. Η σειρά απευθύνεται σε αρχάριους με μια τυπική εμπειρία στην χρήση τερματικού σε μια Linux διανομή. 

pos-ftiaxnoume-home-server-eisagogi

Ένας Home Server μπορεί να είναι εξαιρετικά χρήσιμος για τη διαχείριση των προσωπικών σας δεδομένων, όπως είναι π.χ. η δημιουργία αντιγράφων ασφαλείας των αρχείων σας, streaming της μουσική σας, των φωτογραφίες και των βίντεο σας αλλά να παρέχει πρόσβαση σε εγκατεστημένες υπηρεσίες, όπως mail, ημερολόγιο, σημειώσεις, επαφές και πολλά άλλα.

Αυτό είναι ένα εισαγωγικό άρθρο για μια σειρά άρθρων για την δημιουργία, επέκταση, τη διασφάλιση και την συντήρηση ενός Home Server στο σπίτι μας. Στόχος είναι, μετά την ολοκλήρωση των μαθημάτων, να αποκτήσετε μια σφαιρική γνώση και να την διευρύνετε με προσωπικούς πειραματισμούς.

Εισαγωγή

Ένας server (διακομιστής) είναι ένας υπολογιστής αφιερωμένος να εκτελεί μία η περισσότερες εφαρμογές ( λογισμικό ) ικανές να δέχονται/αποκρίνονται σε αιτήσεις από μια η περισσότερε συσκευές client (πελάτης) όπως ένα PC, smartphone / tablet, τηλεόραση κ.λπ. Η σχέση του Server και του Client είναι όπως η σχέση του πελάτη που παραγγέλνει ένα γύρο σε πίτα (… μην ακούσω… καλαμάκι ! ) και του σερβιτόρου που αναλαμβάνει να διεκπεραιώσει την παραγγελία.

Τον ρόλο του server μπορεί να αναλάβει οποιοσδήποτε υπολογιστής, είτε είναι σπίτι μας, είτε στο γραφείο μας είτε κάποια online υπηρεσία που παρέχει διακομιστές (έναντι κάποιου αντιτίμου). Σημειώστε ότι στη πράξη, θα ακούσετε και υπηρεσίες του συστήματος να επικοινωνούν με άλλα λογισμικά και να διατηρούν αυτή την αμφίδρομη σχέση server-client (π.χ. owncloud sync, dropbox, google drive κλπ)

Για να είμαστε σε θέση να χτίσουμε έναν διακομιστή στο σπίτι μας, πρέπει να κατανοήσουμε μερικούς όρους:

  • Server
  • Δίκτυο
  • Λειτουργικό σύστημα
  • Πελάτες

Server

Ο υπολογιστής που θα αναλάβει το ρόλο ενός Home Server θα μπορούσε να είναι οποιαδήποτε υπολογιστής που που έχουμε στο σπίτι. Δυστυχώς όμως αυτό θα σήμαινε ότι αυτός ο υπολογιστής θα πρέπει να είναι 24 ώρες το 24ωρο ενεργοποιημένος και αυτό θα σήμαινε και αντίστοιχη κατανάλωση ηλεκτρικής ενέργειας οπότε θα καθιστούσε μη βιώσιμη λύση για το ρόλο αυτό.

Γι ‘αυτό προτείνω να αποφεύγετε να χρησιμοποιείτε κοινούς υπολογιστές για τον ρόλο του Home Server στο σπίτι, αλλά αντ’ αυτού να αγοράσετε ένα υπολογιστή τύπου Single Board Computer (μεγέθους πιστωτικής κάρτας) όπως π.χ.:

Αυτό το είδος των υπολογιστών έχουν χαμηλή κατανάλωση ενέργειας, είναι αθόρυβα και γενικά παρέχουν την οικονομικότερη λύση. Η συνολική απόδοση της επένδυσης που θα κάνετε υπερβαίνει κατά πολύ από αυτήν που παρέχεται από έναν κοινό υπολογιστή. Για το πιο θα διαλέξετε, μπορείτε να δείτε τις επιδόσεις του και αν μπερδευτήκατε, ρωτήστε κάτω στα σχόλια και θα το συζητήσουμε.

Δίκτυο

Το δίκτυο είναι η «ιστός» που συνδέει τον Home Server μας με τους διάφορους πελάτες (όπως προαναφέρθηκαμε). Στις εταιρείες συνήθως αναφέρεται ως «Intranet»

Ένα τυπικό δίκτυο του σπιτιού μας αποτελείται σε γενικές γραμμές από :

  • Router ( η συσκευή που μας δίνει internet)
  • Καλώδια/ η Wifi
  • Οι διευθύνσεις IP

Το router μας (δρομολογητής) είναι στην πραγματικότητα και αυτός ένας μίνι Server και ο ρόλος του είναι να παρέχει σύνδεση στο Internet, διευθύνσεις IP και διεκπεραιώνει τα αιτήματα για δεδομένα μεταξύ των συσκευών που είναι συνδεδεμένα σε αυτό μέσω των καλωδίων/ ή WiFi.

Λειτουργικό σύστημα

Υπάρχουν εξειδικευμένες, για το ρόλο διακομιστή, εκδόσεις λειτουργικών συστημάτων που είναι συμβατά με τα Single Board Computers που ανέφερα νωρίτερα. Τα πιο δημοφιλή μεταξύ των οποίων είναι:

  • Ubuntu
  • Debian
  • CentOS
  • Arch Linux
  • openSUSE

Επιλέξτε κάποιο που υποστηρίζεται επίσημα από το κατασκευαστή του board και παρέχεται μακροχρόνια υποστήριξη για ενημερώσεις ασφαλείας και διορθώσεων. Είναι σημαντικό να διερευνήσετε αυτές τις επιλογές εκ τον προτέρων μιας και όταν στήνουμε έναν server με ένα λειτουργικό συνήθως αυτό το λειτουργικό θα δουλεύει για πολλά χρόνια στο board.

Πελάτες

Οι πελάτες είναι όλες οι συσκευές που συνδέονται με τον Home Server μας για ανταλλαγή πληροφοριών. Το είδος της ανταλλαγής εξαρτάται από το είδος των υπηρεσιών που παρέχει ο διακομιστής και τις δυνατότητες των συσκευών που ζητούν αυτές τις υπηρεσίες. Το είδος των υπηρεσιών που παρέχει ένας Home Server είναι συνήθως:

  • Κεντρικό αποθετήριο αρχείων
  • Διαμοιρασμός βίντεο και μουσικής
  • Πληροφορίες (ημερολόγιο, επαφές κλπ)
  • E-mail
  • Downloader
  • κ.α.

Επίλογος

Ελπίζω ότι έχω καλύψει τα βασικά όσον αφορά την «δόμηση» ενός σπιτιού intranet για να είμαστε σε θέση να δημιουργήσουμε ένα προσχέδιο των τμημάτων που θα χρειαστούμε για να πετύχει το έργο μας.

Τέλος να αναφέρω ότι η δημιουργία ενός Home Server όχι μόνο ανταμείβει, αλλά είναι διασκεδαστική και εκπαιδευτική ενασχόληση.  Μείνετε συντονισμένοι για το επόμενο άρθρο, είτε με την εγγραφή σας στο Cerebrux ή παρακολουθώντας τα άρθρα στα κοινωνικά δίκτυα. Για τυχόν απορίες και γνώμες, μπορείτε ελεύθερα να σχολιάσετε παρακάτω.

18 thoughts on “Ας φτιάξουμε έναν Home Server : Εισαγωγικές έννοιες

  1. Ξέχασες το CentoOS, το οποίο έχω πραγματικά αγαπήσει τα τελευταία χρόνια για χρήση server. Σταθερό, αποδοτικό, ασφαλές, εύκολο στο στήσιμο και χωρίς ανάγκη για kernel update και reboot κάθε 5 μέρες. (Κάνουν backport τα σημαντικά bug fixes και security fixes όταν πρέπει διατηρώντας ένα αξιόπιστο και σταθερό σύστημα με υποστήριξη για πάνω από 10 χρόνια ώστε να είναι κάποιος σίγουρος ότι οι τρέχουν οι υπηρεσίες του θα τρέχουν διαρκώς και χωρίς προβλήματα)

    Ένα άλλο που θέλω να ρωτήσω: Για την αποφυγή ενός PC και της κατανάλωσης σε ρεύμα που αυτό συνεπάγεται, υπάρχει διαθέσιμο κάποιο χαμηλής κατανάλωσης board με:
    1. Αρκετή ισχύ ώστε να τρέχει αξιοπρεπώς self-hosted web based υπηρεσίες (κυρίως LAMP) (π.χ. OwnCloud, GitLab, RoundCube, eGroupWare, phpbb, wordpress κλπ)
    2. Περισσότερα από 1 ethernet (κατά προτίμηση 3, με ένα τουλάχιστο Gigabit) ώστε να μπορεί να χρησιμοποιηθεί ως router/firewall;
    Τι θα προτείνατε για τέτοια χρήση;

    • Μου διέφυγε το CentOS ενώ το χρησιμοποιώ και εγώ (απλά ίσως δεν το έχω χρησιμοποιήσει σε SBC για αυτό δεν μου πέρασε απο το μυαλό)
      Το πρόσθεσα οπότε και ευχαριστώ για την επισήμανση. Τώρα σχετικά με το ερώτημά σου:

      1) Πλέον κυκλοφορούν +2 GB RAM +2 Core CPU Boards και μπορούν να καλύψουν τις ανάγκες μιας ομάδας 3-5 ανθρώπων. Θέλει όμως πολύ διερεύνηση το ζήτημα και αρκετό Optimization λόγο ARM αρχιτεκτονικής. Το μέλον φυσικά είναι πολλά υποσχόμενο.

      2) Σου προτείνω το Banana Pi R1 για αυτή την δουλειά http://www.banana-pi.org/r1.html

  2. Νομιζω το cubieboard 2 ειναι το πιο καταλληλο για τετοια δουλια, εχει προ εγκατεστημενο android 4.* στη μνημη του εχει θυρα για microSD, 2 USB ports και θυρα SATA, αν θυμαμαι καλα bootαρει απο οποιαδηποτε θυρα/συσκευη.
    Το owncloud εκτος και απο κανονικο cloud στο web, που μπορουμε να το εχουμε σπιτι μας απο τη συνδεση μας, αλλα νομιζω εχουμε τη δυνατοτητα να το εχουμε και τοπικα.
    Το openSUSE εχει ηδη ετοιμα πακετα στα αποθετηρια του και ειναι ευκολη η διαδικασια να στησουμε το owncloud, Σταθης Ιωσηφιδης στο blog του εχει ενα πολυ καλο οδηγο για τη διαδικασια.
    Για το ιντρανετ εχω μικρη γνωση, θα θελα να δω πως γινετε, ισως μονο για τοπικο δικτυο να ναι καλυτερη λυση.
    Περιμενω με αγωνια, θα ελεγα, τη συνεχεια.

  3. Η βασικότερη απορία που έχω επί του θέματος και που ελπίζω να καλυφθεί στα επόμενα άρθρα είναι πώς θα μπορώ να έχω συνεχή πρόσβαση στον home server μου ενώ, όπως συνηθίζεται σε οικιακές συνδέσεις, έχω δυναμική IP. Φαντάζομαι αυτό είναι ένα βασικό πρόβλημα. Προσωπικά μάλιστα θα ήθελα να μπορώ να διαχειρίζομαι τον home server μου από μακριά (αφού τον στήσω πρώτα φυσικά), χωρίς να είμαι στο ίδιο δίκτυο και χωρίς να χρειάζεται κάθε φορά να βρίσκω την IP μου. Ακόμα καλύτερα, θα ήθελα να μπορώ να αντιστοιχίσω σε αυτόν ένα domain name ώστε να μπορώ να ανεβάσω μια δημόσια προσβάσιμη ιστοσελίδα.

    Ζητάω πολλά;;;😀

    • Αυτο μπορεις να το κανεις πολυ ευκολα με μια υπηρεσια σαν το duckdns.org , dyndns.com και αλλες παρομοιες. Ουσιαστικα εχεις ενα domain και η υπηρεσια αναλαμβανει να βρει την ip σου. Εγω χρησιμοποιω το duckdns το οποιο ειναι δωρεαν και σου δινει μεχρι 5 domains.
      Εχω στησει 2 raspberry pi για home servers, το ενα τρεχει μονο το owncloud και το αλλο ειναι NAS, torrent seedbox, openvpn, ftp server, backup server και ισως να μου διαφευγει και κατι. Το 2ο εχει και το duckdns updater για να εχω απομακρυσμενη προσβαση.

      • Έχω ακούσει για κάτι τέτοιες υπηρεσίες, αλλά δεν ξέρω πώς ακριβώς δουλεύει. Αν και φαντάζομαι πως λειτουργεί κάπως έτσι:
        1. εγκαθιστάς κάποιο σχετικό πρόγραμμα στον server σου το οποίο τρέχει συνέχεια
        2. εγγράφεσαι στην υπηρεσία και παίρνεις κάποιο «κλειδί» το οποίο βάζεις στο πρόγραμμα
        3. το πρόγραμμα βρίσκει την IP σου και ενημερώνει την υπηρεσία (πχ duckdns), η οποία ενημερώνει για την τοποθεσία του domain σου. Όλα αυτά χωρίς downtime (επιπέδου ωρών);

        Ενδιαφέρον το duckdns, αλλά υπάρχει κάποιο «αντάλλαγμα» στο ότι είναι δωρεάν;

    • Ακριβώς όπως σου τα λέει ο Kostas M. Θα τα δούμε όλα στην πορεία. Όσο για την δημόσια προσβάσιμη σελίδα ναι μπορείς να το κάνεις αλλα το μόνο πρόβλημά σου θα είναι η σύνδεσή σου. Με τις συνδέσεις ADSL μπορείς μεν να το κάνεις, αλλά θα σέρνεται η σελίδα σου.

      • Ε, για μία προσωπική ιστοσελίδα νομίζω αυτό δεν είναι ιδιαίτερο πρόβλημα. Κατά τα άλλα σε έναν τέτοιο server θα με ενδιέφερε να είχα OwnCloud, WordPress, Transmission και ίσως κάποιο εργαλείο για backup (αν και φαντάζομαι το OwnCloud αρκεί). Επίσης ένα open source control panel (κάτι σαν το Plesk δηλαδή). Μάλλον για όλα αυτά χρειάζομαι ένα «home data center»!😛

        • Μπορείς να τα κάνεις όλα αυτά. Το μόνο θέμα (ίσως) είναι το WordPress: θα τρέχει, αλλά αν πάνε και μπούνε 2-3 χρήστες ταυτόχρονα (εκτός του ότι θα σου μπουκώνει η ADSL) θα ανέβει και ο φόρτος της CPU.
          Όσον αφορά την διαχείριση, υπάρχει το πολύ καλό webmin interface, που plesk μπορεί να μην είναι, αλλά σε αρκετές περιπτώσεις σου λύνει τα χέρια!
          Και όχι, δεν χρειάζεσαι ένα home data center, για δική σου χρήση!

          Όσον αφορά τα προβλήματα ασφαλείας: όσα προβλήματα ασφαλείας έχεις τώρα, τα ίδια θα έχεις και μετά (δεν προσθέτεις κάτι, δηλαδή!). Τώρα εσύ ρωτάς, επειδή προφανώς η IP σου θα είναι public, σωστά;…
          Λοιπόν, τον ρόλο της προστασίας καλείται να τον παίξει ο router σου, που έχει ενσωματωμένο firewall και χωρίς τις κατάλληλες ρυθμίσεις, δεν θα αφήσει κανέναν ξένο να δει κανέναν υπολογιστή στο δίκτυο σου (ούτε καν τον home server σου). Οπότε θες την κατάλληλη ρύθμιση που λέγεται port forward, για να ανοίξει ο router συγκεκριμένες πόρτες από τον home server σου προς τον έξω κόσμο, και τούμπαλιν.

          Έτσι, ο μόνος εκτεθειμένος στο δίκτυο, είναι ο home server. Και εκεί με τις κατάλληλες ρυθμίσεις φροντίζεις (όσο μπορείς) τα θέματα ασφάλειας (κωδικοί παντού -mysql κλπ-, βασικά, και κατάλληλα δικαιώματα στους φακέλους και αρχεία).

          Μην σε τρομάζει δεν είναι πυρηνική φυσική, ένα κι ένα κάνουν δυο είναι!

        • Ευχαριστώ για την εξαιρετική ανάλυση και την βοήθεια που προσφέρεις.

          Yoda, ο,τι ακριβώς λέει ο φίλος μας. Θα τα αναλύσουμε διεξοδικά στα αντίστοιχα άρθρα.

    • Θα με ενδιέφερε επίσης να μάθω κατά πόσο και σε ποιές περιπτώσεις δημιουργούνται προβλήματα ασφαλείας λειτουργώντας έναν home server. Αυξάνεται ο κίνδυνος για άλλους υπολογιστές που είναι συνδεδεμένοι στο δίκτυο; (κάποιοι μπορεί να τρέχουν Windows) Σε ποιές περιπτώσεις/με ποιά λάθη μπορεί να δίνω με κάποιο τρόπο δυνατότητα σε κάποιον τρίτο να χρησιμοποιήσει τον server/IP μου για άλλες ενέργειες;

  4. Παιδιά σε λίγο καιρό παίρνω φτάνει το καινούργιο κινητό και σκέφτομαι το παλιό αν τα καταφέρω να το κάνω single board computer. Απλά το συνδεσω σε μία οθόνη και έγινε. Και η ερώτηση einai se android τρέχει ο server ή παπαλα??

    • Μπορείς να το κάνεις αλλά δεν θα έχει την ευελιξία που έχει ένα κανονικό SBC με μία πλήρης διανομή Linux. Επίσης σκεψου ότι θα πρέπει να το έχεις μόνιμα συνδεδεμένο στην φόρτιση

    • Αυτό και επίσης είναι πιθανό να σου ανεβάζει θερμοκρασίες και να κάνει ρεσετ.
      Δε χάνεις τίποτα ομως να δοκιμάσεις!

  5. Πολύ ενδιαφέρον άρθρο. Μιας και μίλησες για raspberry pi κτλ, έχω μία απορία. Θα μπορούσε αυτός ο server να υλοποιηθεί με ένα cluster για να αυξηθούν οι επιδόσεις; πχ τύπου ( https://www.youtube.com/watch?v=oe-S_5oPZfs ). Ή ποια άλλη θα μπορούσε να είναι η χρησιμότητα ενός τέτοιου cluster;;; Θα μπορούσε να χρησιμοποιηθεί και σαν απλός υπολογιστής; Συγνώμη αν είναι εκτός θέματος αυτά που ρωτάω απλά ενδιαφέρομαι να μάθω για τέτοια cluster και server και δεν ξέρω από που να ξεκινησω.

    • Οι αύξηση επιδόσεων επιτελεί κάποιον σκοπό. Σε αυτές τις περιπτώσεις η συστοιχία υπολογιστών έχουν ως βασικό στοιχείο την παροχή ταχύτητας για δουλειές που τις χρειάζονται πχ μαθηματικές πράξεις, rendering, επεξεργασία ερευνητικων δεδομένων και άλλα. Αν για παράδειγμα ασχολεισαι με 3D γραφικά έχει νόημα να κατασκευαστεί μία συστοιχία τέτοια για να αναλαμβάνει την μεταγλώττιση. Φυσικά με ένα σχόλιο εδώ δεν μπορουμε να εξαντλήσουμε τις δυνατότητες. Σου προτείνω να δεις την αρχιτεκτονική συστοιχιών https://en.m.wikipedia.org/wiki/Computer_cluster

Απορίες, παρατηρήσεις, ιδέες... Ελεύθερα ! Πες την άποψή σου... έστω και Ανώνυμα:

Εισάγετε τα παρακάτω στοιχεία ή επιλέξτε ένα εικονίδιο για να συνδεθείτε:

Λογότυπο WordPress.com

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό WordPress.com. Αποσύνδεση / Αλλαγή )

Φωτογραφία Twitter

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Twitter. Αποσύνδεση / Αλλαγή )

Φωτογραφία Facebook

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Facebook. Αποσύνδεση / Αλλαγή )

Φωτογραφία Google+

Σχολιάζετε χρησιμοποιώντας τον λογαριασμό Google+. Αποσύνδεση / Αλλαγή )

Σύνδεση με %s