OpenMouseHole
Το ποντίκι στήνει forgejo και μοιράζεται το IaC (Infrastructure as Code) configuration του homelab του στους 2 αναγνώστες του blog και σε όλα τα crawler bots του κόσμου.
Κατ’ αρχάς, επειδή είμαι καλός άνθρωπος, θα ξεκινήσω δίνοντας λινκ γιατί βαριέσαι να διαβάσεις, σε περίπτωση που θέλετε να προσπεράσετε τη φλυαρία μου.
Κάτι που με προβλημάτισε στο προηγούμενο ποστ ήταν οτι δεν είχα κάποιο τρόπο να μοιραστώ μαζί σας το configuration του homelab μου. Δηλαδή το έκανα ενδεικτικά με ένα απόσπασμα από ένα compose.yml, αλλά φυσικά δεν θα μπορούσε να γίνει κάτι τέτοιο για όλοκληρο το configuration.
Επίσης είχα γράψει πως “Όλο το configuration μπορεί κάλλιστα να μπει σε version control system και να έχουμε όλα τα πλεονεκτήματα που φέρνει αυτό” αλλά αυτό ήταν κάτι που δεν είχα κάνει ακόμα.
Τώρα μένουμε στην ελλάδα, οπότε δεν ξέρεις τι σου ξημερώνει. Μπορεί για παράδειγμα να γίνει μια έκρηξη και το σπίτι σου να καταρρεύσει σαν πύργος από τραπουλόχαρτα. Ή απλά να περάσει από κάτω ο μετροπόντικας (μακρινός ξάδερφος).
Τέλος πάντων, καταλαβαίνουμε όλοι πως όταν αναλαμβάνουμε την ευθύνη του self-hosting πρέπει να υπάρχει ένας τρόπος να ανακάμψουμε από ένα catastrophic failure με τον καλύτερο δυνατό τρόπο. Στην τελική ίσως απλά κάνουμε τα πάντα μαντάρα και θέλουμε να επανέλθουμε σε μία προηγούμενη κατάσταση.1
Και που θα το ανέβαζες ρε ποντίκι;#
Η προφανής λύση θα ήταν το github, με ορισμένες δευτερεύουσες εναλλακτικές όπως gitlab, bitbucket κλπ. Οι λόγοι που το απέρριψα είναι οτι βαριόμουν να φτιάξω νέο account (το username στον υπάρχοντα λογαριασμό μου είναι το επώνυμό μου) και οτι δεν ήθέλα να δώσω τόσο έυκολα στο πιάτο των γνωστών μηχανών λογοκλοπής το αριστούργημά μου.
Μετά σκέφτηκα πως η θεματική του blog συχνά αφορά στο self hosting, οπότε το να στήσω ένα VCS στον server που το σερβίρει θα είχε τα εξής πλεονεκτήματα:
- Είναι σε άλλον υπολογιστή, άρα σε περίπτωση που πάθει οτιδήποτε το homelab μου (Θεός φυλάξοι) θα υπάρχει τουλάχιστον ένα backup.
- Είναι μια πολύ καλή ευκαιρία να μπορώ να μοιράζομαι στον κόσμο (και στο κοινό του blog) πραγματικά projects και snippets που δεν θέλω να συσχετίζονται με το πραγματικό μου όνομα για τον άλφα ή βήτα λόγο.
- Είναι εύκολο.
Έτσι έστησα ένα instance του forgejo στον server που είμαστε, απενεργοποίησα τις εγγραφές και στη συνέχεια ετοίμασα και ανέβασα ένα αποθετήριο (repo) με το configuration του homelab του homelab μου.
Συχνά τα compose files δεν είναι batteries-included. Ίσως χρειαστεί να φτιάξετε configuration files, να πειράξετε ρυθμίσεις με το χέρι σε web UIs εφαρμογών, να συμπληρώσετε api tokens σε δικά σας .env files, να φέρετε τα volume paths στα δικά σας μέτρα και πάει λέγοντας. Μπορείτε όμως σίγουρα να τρέξετε και κάποια containers αυτούσια (πχ το excalidraw) ή απλώς να πάρετε ιδέες.
To link#
https://git.topodiki.xyz/toPodiki/podikotripa
Έμαθα τίποτα απ’ όλο αυτό;#
Και ναι και όχι. Για αρχή χρειάστηκε ένα επιμελές πέρασμα από τους φακέλους του configuration για να δω αν εκτίθενται πουθενά ευαίσθητες πληροφορίες και να τις βάλω σε .env files. Ακούμπησα .gitignore μετά από πάνω από μια δεκαετία, έκανα interactive rebase και force push από τερματικό για να σβήσω καφρίλες που είχαν φύγει στο repo και έκανα επαλήθευση με το gitleaks το οποίο σκοπεύω να βάλω σε git hook για να ελέγχει για κωδικούς ή api tokens κάθε φορά πριν από τα επόμενα push.
Αυτό που μένει είναι να φτιάξω ένα μηχανισμό που να κάνει commit κάθε φορά που το What’s Up Docker κάνει αυτόμα τα κάποιο version bump στα images των containers και αντίστοιχα να κάνω το ίδιο για όταν ανεβάζω manually κάποια version.
Το σημαντικό είναι πως η ποντικότρυπα είναι πλέον open source. Τα λέμε στη γύρα.
-
Φυσικά χρειαζόμαστε και ένα σωστό και τεσταρισμένο backup κοκ. ↩︎