Το ποντίκι συνεχίζει να αναλύει στο πόδι όλα τα θέματα του κόσμου. Παράλληλα περιγράφει τη φάση με το self host.

Έκλεισα το προηγούμενο ποστ με το ότι είμαστε σε μια εποχή που το computing αρχίζει να γίνεται δυσπρόσιτο στον κόσμο. Αυτή η συνθήκη είναι καταλυτική προς μια τάση που ούτως ή άλλως έχει πάρει η βιομηχανία τα τελευταία χρόνια: της στροφής προς το cloud.

Πού ναι τα χρόνια; Ωραία χρόνια#

Τα προηγούμενα χρόνια, όταν θέλαμε να χρησιμοποιήσουμε έναν υπολογιστή, έπρεπε να του εγκαταστήσουμε τα προγράμματα που χρειαζόμασταν, να τα τροφοδοτήσουμε με τα δεδομένα που θέλαμε να τα τροφοδοτήσουμε και να τρέξουμε τους υπολογισμούς για να πάρουμε πίσω τα νέα, επεξεργασμένα δεδομένα. Η εγκατάσταση των προγραμμάτων γινόταν με διάφορα μέσα όπως δισκέτες, CD-ROM ή κατέβασμα από το ίντερνετ. Έπρεπε να έχουμε φυσικά υπολογιστές που πληρούσαν τις ανάλογες απαιτήσεις σε σκληρό δίσκο, μνήμη κοκ.1

Αυτό το μοντέλο χωρούσε και χωράει μεγάλη κριτική2, αλλά και πάλι ήταν πολύ καλύτερο από το enshittification που επήλθε τα τελευταία χρόνια. Στο εξής για συντομία θα το γράφω σαν “native computing”.

Native και Cloud Computing#

Από τα μέσα της δεκαετίας των 00s, αλλά κυρίως στα 10s, η αγορά πήρε μια διαφορετική στροφή. Το computing πλέον πήγαινε προς το SaaS (Software as a Service) και υποσχόταν πως ερχόταν να λύσει μια σειρά από τα προβλήματα του native computing.

Ο υπολογισμός πλέον γίνεται στο cloud, ανεβάζουμε τα δεδομένα που θέλουμε να επεξεργαστούμε, αλληλεπιδρούμε μέσω ιστοσελίδων με το software που χειριζόμαστε και κατεβάζουμε στον υπολογιστή μας το αποτέλεσμα της επεξεργασίας. Δεν χρειάζεται να έχουμε αγοράσει και εγκαταστήσει κάποιο πρόγραμμα, δεν χρειάζεται καν να έχουμε δυνατό επεξεργαστή, μεγάλη μνήμη RAM κλπ. Είπαμε: ο υπολογισμός πλέον γίνεται στο cloud, δηλαδή τον υπολογιστή κάποιου άλλου.

Είτε μιλάμε για native computing είτε μιλάμε για SaaS, το θέμα ήταν το πώς γίνεται το monetization. Εξάλλου όπως είχε γράψει προ πολλού ο Μαρξ στον δεύτερο τόμο του κεφαλαίου, “Cash Rules Everything Around Me

Native Computing#

Στο native computing τα πράγματα ήταν απλά. Αγόραζες μια φορά το κάθε λογισμικό, το εγκαθιστούσες και μπορούσες να το χρησιμοποιήσεις. Ενίοτε υπήρχαν και μέσα για την καταπολέμηση της πειρατείας (DRM - Digital Rights Management), άδειες για εγκατάσταση σε συγκεκριμένο αριθμό υπολογιστών κλπ, αλλά το πόιντ δεν άλλαζε.

Αργά ή γρήγορα οι εταιρείες κατασκευής λογισμικού κατάλαβαν πως είναι κομματάκι δύσκολο να ζεις από την κατασκευή και συντήρηση ενός και μόνο λογισμικού. Στην τελική πόσες φορές θα πείσεις έναν χρήστη να (ξανά)αγοράσει ένα πρόγραμμα που γράφει CD; Πόσο σημαντικές αλλαγές μπορεί να είχε η σουίτα γραφείου του 2007 σε σχέση με αυτήν του 2006; Κι αν είχε μεγάλες αλλαγές τι θα γινόταν με τον κόσμο που είχε μάθει να χειρίζεται την προηγούμενη; Τσάμπα πληρώναμε για ECDL;

Αν και είχαν γίνει ήδη οι πρώτες απόπειρες για στροφή στο συνδρομητικό μοντέλο (κυρίως από εταιρείες antivirus) το SaaS θα ερχόταν να αλλάξει αρκετά τα πράγματα.

SaaS#

Εδώ τα πράγματα ήταν αρκετά διαφορετικά. Το monetization γίνεται με πολλούς και διάφορους τρόπους όπως (και κύρια) διαφημιστικά δίκτυα, freemium μοντέλα, συνδρομητικά μοντέλα, pay-as-you-go, παροχή API σε προγραμματιστές ή άλλες επιχειρήσεις, affiliate links κι ένα σωρό άλλους τρόπους.

Μπορεί να μας φαίνονται δεδομένα όλα αυτά, αλλά σκεφτείτε το εξής σενάριο. Το πιο μέτριο black mirror επεισόδιο, αν προτιμάτε:

Το ποντίκι μπαίνει στο αμάξι του για να πάει σούπερ μάρκετ. Πληρώνει 1.99€ την ξεχασμένη συνδρομή του για να μπορεί να κατεβάσει εντελώς τα παράθυρα του αμαξιού του, για να μη σκάσει απ’ τον καύσωνα. Γυρίζει και βάζει να μαγειρέψει. Η οθόνη της κουζίνας του, του προτείνει για 10 δευτερόλεπτα να χρησιμοποιήσει κύβο knorr πριν το αφήσει να την ενεργοποιήσει.

Όσο ζεσταίνεται η κατσαρόλα, ετοιμάζεται να βάλει πλυντήριο. Τότε ακούγεται στα 100 decibel ένας πάρα πολύ χαρούμενος τύπος που του φωνάζει ότι θα ήταν καλύτερα να πάρει SKIP για μαύρα, ενώ το πλυντήριο του λέει να πληρώσει 12.99€ για να μπορεί για ένα χρόνο να χρησιμοποιεί το γρήγορο πρόγραμμα (έκπτωση από τα 14.99€) ή να πείσει 2 φίλους του να αγοράσουν πλυντήρια του ίδιου κατασκευαστή.

Κι αν σας φαίνονται όλα αυτά επιστημονική φαντασία, εντάξει. Ξέρω πως δεν σας φαίνονται, γιατί η πραγματικότητα σίγουρα είναι ήδη αρκετά χειρότερη σε άλλες χώρες του δυτικού κόσμου.


Old man yells at cloud#

Δεν το πιστεύω ούτε εγώ ότι έχω καταλήξει να κάνω τόσο μεγάλη εισαγωγή, για να φτάσω εδώ. Τέλος πάντων, το ποντίκι είναι κάθετα αντίθετο κυρίως σε Ν πράγματα στην παρούσα φάση.

  • Το συνδρομητικό μοντέλο (όπου κι αν εφαρμόζεται) είναι αισχρό. Θέλω απλά να μπορώ να αγοράσω το IntelliJ IDEA και το Photoshop δίνοντας ένα μεγάλο (αλλά λογικό) ποσό ΜΙΑ φορά και να είναι δικό μου για πάντα. Όχι να πληρώνω 100 συνδρομές δεξιά κι αριστερά.
  • Δεν θέλω να στέλνω τις φωτογραφίες μου στην (όποια) Google γιατί το κινητό μου έχει μικρή μνήμη για λόγους καρτέλ και όχι φυσικών περιορισμών3 και πρέπει να τις κάνω κάπου backup, είτε χρειάζεται να πληρώνω συνδρομή είτε όχι.
  • Γιατί να δίνω το βιογραφικό μου σε κάποιον άλλο, για να το μετατρέψει από LaTeX/Markdown/whatever σε PDF;
  • Γιατί δέχεται ο κόσμος να ανοίγει το ίδιο το Λειτουργικό του Σύστημα και να του πετάγονται διαφημίσεις στο start menu;
  • Γιατί πλέον οι διαφημιστικές μας ξέρουν καλύτερα απ’ τις μανάδες μας;

Απ’ την άλλη, ίσως η λίστα είναι μη πεπερασμένη και κακώς μπήκα στον κόπο να την ξεκινήσω εξ’ αρχής.

Το θέμα όπως είπα πιο πάνω είναι ότι όλα αυτά μας σπρώχνουν στην ακόλουθη φάση: Θα έχουμε υπολογιστές/κινητά/κονσόλες4 με υπολογιστική δύναμη πατάτας, που θα αρκεί απλά για να ανοίξουμε την οθόνη μας και να συνδέσουμε τα όποια περιφερειακά. Όλος ο υπολογισμός θα γίνεται στον υπολογιστή κάποιου άλλου. Δεν θα έλεγχο στα δεδομένα μας και θα είμαστε εξαρτημένοι/ες από συνδρομές.

Υπάρχει όμως κάποιος άλλος δρόμος; Αν θέλω να υπολογίζω στο σπίτι μου, τι πρέπει να κάνω ρε ποντίκι;

Self hosting#

Ίσως η απάντηση στο γενικότερο enshittification να είναι ο εργατικός έλεγχος. Bασικά τώρα που το σκέφτομαι, αυτό θα ήταν τόσο γαμάτο που θα μπορούσαμε να φτιάξουμε ολόκληρα εργατικά κράτη. Ως τότε πάμε να πάρουμε το παυσίπονο του self hosting, σίγουρα θα βοηθήσει στον καρκίνο τελικού σταδίου που περνάει το υπάρχον σύστημα.

Αντιγράφω τον ορισμό από την wikipedia για να είμαστε στην ίδια σελίδα:

Self-hosting is the practice of running a website or service on a home server instead of a web hosting service outside of the administrator’s own control. Self-hosting allows users to have more control over their data, privacy, and computing infrastructure, as well as potentially saving costs and improving skills.

Στην προκειμένη περίπτωση, τα υλικά ήταν εκεί: μία σύνδεση με πολύ γρήγορο upload, όπως έλεγα στο προηγούμενo ποστ και ένας αχρησιμοποίητος σταθερός υπολογιστής του 2018 που φτιάχτηκε σαν mid-budget gaming setup (που με συνόδευσε πιστά στην καραντίνα). Προσωρινά λοιπόν, το desktop αυτό έχει πάρει το ρόλο του σπιτικού server. Είναι συνδεδεμένο με ethernet πάνω στο deco μου, πράγμα που σημαίνει ότι οι ταχύτητες που φτάνει είναι ~1 gigabit/sec download και ~500 megabit/sec upload.

Μαζί με τη σύνδεση ζήτησα στατική ip και πήρα ένα .gr domain για το σπίτι μου.5 Έστησα εκεί ένα cloudflare tunnel κι άρχισα να hostάρω services όπως το immich για backup φωτογραφιών6, ένα grafana instance κι ένα ntfy service για push notifications στο κινητό. Το cloudflare tunnel αναλαμβάνει να κρύβει την πραγματική ip μου και να βγάζει τα services προς τον έξω κόσμο με https, χωρίς την ανάγκη port forwarding.

Τα services πλέον βγαίνουν με subdomains όπως το https://immich.gamwtospitimou.gr.

Δεν θα κάνω review για το κάθε service στο παρόν ποστ, αλλά αν θέλετε κάτι στο μέλλον γράψτε μου στα σχόλια. Παρ’όλα αυτά, πιστεύω πως είναι πιο βολικό να δείτε ένα αντίστοιχο review στο youtube.

Στο grafana συνέδεσα με ένα σχετικά περίπλοκο setup ένα μετρητή θερμοκρασίας/υγρασίας της shelly και δεδομένα από το API του open-meteo για να φτιάξω ένα βασικό dashboard με γραφήματα για το τι καιρό κάνει σε πραγματικό χρόνο μέσα και έξω από το σπίτι μου.

Καλά ρε βλαμμένε…#

Ναι ναι, ξέρω. Πέρα απ’ το immich που λύνει όντως ένα υπαρκτό πρόβλημα, τα υπόλοιπα ίσως φαίνονται απλά σαν proof of concept. Στην κοινότητα του self-hosting υπάρχουν μια σειρά από “must” projects αν τον/την βολεύουν και τα στήνει, με τρανταχτό παράδειγμα το nextcloud σαν google drive/dropbox replacement και ακόμα περισσότερα.

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

Ένα παράδειγμα και κλείνω#

Θα έχετε σκεφτεί ήδη “καλά, αυτός ο τύπος έχει αφήσει το σταθερό υπολογιστή του με τα ακόλουθα specs

                   -`
                  .o+`                 toPodiki@lilith
                 `ooo/                 OS: Arch Linux
                `+oooo:                Kernel: x86_64 Linux 7.1.5-zen1-2-zen
               `+oooooo:               Uptime: 3d 8h 14m
               -+oooooo+:              Packages: 1390
             `/:-:++oooo+:             Shell: bash 5.3.15
            `/++++/+++++++:            Disk: 334G / 1.8T (20%)
           `/++++++++++++++:           CPU: Intel Core i5-9600K @ 6x 4.6GHz [39.0°C]
          `/+++ooooooooooooo/`         GPU: NVIDIA GeForce RTX 3060 Ti
         ./ooosssso++osssssso+`        RAM: 4741MiB / 32032MiB
        .oossssso-````/ossssss+`
       -osssssso.      :ssssssso.
      :osssssss/        osssso+++.
     /ossssssss/        +ssssooo/-
   `/ossssso+/:-        -:/+osssso+-
  `+sso+:-`                 `.-/+oso:
 `++:.                           `-/+/
 .`                                 `/

να τρέχει 24/7; Αυτό παίζει να καίει 50-60 watt όσο δεν κάνει απολύτως τίποτα.”

Στο grafana μου τραβάω και μετρήσεις από smart plug, πέσατε ακριβώς μέσα

Όντως δεν χρειάζεται για κανένα λόγο τόσο δυνατό hardware, ούτε υπάρχει λόγος για τόσο μεγάλη κατανάλωση ρεύματος. Γι’ αυτό το λόγο παράγγειλα ένα mini pc GMKtec NucBox K16 Mini με τιμή αρκετά μικρότερη απ’ όσο πιθανότατα βλέπετε στο site αυτή τη στιγμή. Το pc αυτό υποτίθεται πως καίει 15-30 watt όταν λειτουργεί (πολύ λιγότερο από μια λάμπα πυρακτώσεως) και είναι ιδανικό για να τρέχει 24/7. Επίσης δεν έχει μια κάρτα γραφικών με RGB led που φωτίζει όλη τη νύχτα σαν pride φωτιστικό. Δεν ξέρω αν αυτό είναι στα υπέρ ή στα κατά, θα μου λείψει κάπως.

Το δέμα δρομολογήθηκε να ξεκινήσει με την FedEx και μου έδωσαν tracking number στην FedEx και στην track123, ενός tracking aggregator. Long story short, το πρόβλημά μου ήταν ότι δεν υπήρχε κάποιος τρόπος να παίρνω ειδοποιήσεις κάθε φορά που υπήρχε κάποιο update σχετικά με την παραγγελία μου, οπότε έκανα αυτό που θα έκανε κάθε λογικός άνθρωπος.

Βρήκα ότι το track123 παρέχει API, έγραψα ένα πρόγραμμα σε java για να το χτυπάει κάθε μισή ώρα, το συνέδεσα με το ntfy service που χω στήσει στο σταθερό μου και το έβαλα να μου στέλνει notifications στο κινητό κάθε φορά που έχουμε κάποιο νέο. Η όλη διαδικασία μου πήρε μόλις 7 ώρες, το service αυτό το έβαλα να τρέχει μέσω systemd στον server μου και πλέον διασκεδάζω περισσότερο την αναμονή απ’ το να φτάσει όντως το δέμα.

Eίναι το self hosting για όλους;#

Εντάξει, μην τρελαθούμε. Το self hosting δεν είναι ούτε καν μια τζούφια πράξη αντίστασης απέναντι στη σημερινή κατάσταση. Είναι περισσότερο ένα χόμπι μιας κοινότητας που θέλει να είναι αυτόνομη από την big tech και τις εκάστοτε τάσεις της και δεν είναι για όλους/ες. Συνήθως απαιτεί μια στοιχειώδη εξοικείωση με linux, δίκτυα, virtualization κλπ. Τα μέλη αυτού του community συνήθως το παραβλέπουν αυτό, κουνώντας το δάχτυλο σε φάση “αφού είναι τόσο απλό, γιατί δεν το κάνεις;”, παραβλέποντας ότι “είναι τόσο απλό” μόνο για κόσμο που χει αφιερώσει ώρες σε διάβασμα και πειραματισμό. Ήδη στο παρόν ποστ έχω πετάξει ένα κατεβατό από λέξεις που σε μη IT κόσμο δεν βγάζουν νοήμα.

Το ποντίκι μπορεί να είναι μια strongly opinionated περσόνα, αλλά πατάει και στην πραγματικότητα. Παρ’όλα αυτά, αν κάποιος/α θέλει να πειραματιστεί, πρέπει να ξέρει ότι υπάρχουν κυριολεκτικά μηδενικά requirements για να κάνει μια αρχή. Ένα μεταχειρισμένο λάπτοπ που κάθεται σε ένα ντουλάπι, λίγο πείραγμα στις ρυθμίσεις του router και ένα blog post αρκούν για να κάνει τα πρώτα του/της βήματα. :)

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


  1. Έχω δει το μήνυμα σφάλματος “Η κάρτα γραφικών σας πρέπει να μπορεί να δείξει 256 χρώματα για να συνεχίσετε”, προσπαθώντας να εγκαταστήσω το NBA live 98 στον πρώτο μου υπολογιστή με Windows 95. ↩︎

  2. Που είναι εκτός θέματος και δεν θα αναπτύξω εδώ, αλλά μιλάω για το Free/Open Source. ↩︎

  3. Ελπίζω να είδατε το βίντεο που πρότεινα στο προηγούμενο ποστ. ↩︎

  4. Θα μπορούσα να ξεκινήσω ένα παράλληλο ραντ για την βιομηχανία του gaming εδώ, αλλά θα ξεφύγουμε εντελώς. ↩︎

  5. Είναι λίγο αστείο το ότι το υπάρχον blog είναι σε .xyz domain και το σπίτι μου σε .gr αλλά it is what it is. Δε θέλω να σας ξεβολέψω τώρα που το κάνατε bookmark. ↩︎

  6. Αδιανόητα δυνατό, δωρεάν και ανοιχτού κώδικα replacement για το google photos. ↩︎