Συνεχίζουμε με το τέταρτο μέρος της σειράς Self Hosted Cloud Server, στο οποίο θα κάνουμε εγκατάσταση το Cosmos Server.
Την σειρά οδηγών Self Hosted Cloud Server γράφει ο φίλος Μητσaker. Θα τα βρείτε όλα στο link : Cosmos Server.
Αν θέλετε και εσείς να συνεισφέρετε μπορείτε να δείτε τους τρόπους : Συνεισφορά στο Cerebrux
Σε αυτή την φάση, υποθέτουμε ότι έχετε τελειώσει την εγκατάσταση και ρύθμιση του Ubuntu Server και όπως είπαμε στο τρίτο μέρος της σειράς:
- Προσάρτηση των δύο επιπλέον δίσκων
- Άνοιγμα των ports στο router μας
- Έχετε κάνει εγκατάσταση το Docker
Εγκατάσταση Cosmos-Server
Το Cosmos είναι ο πιο εύκολος τρόπος για να φιλοξενήσετε έναν Home Server. Λειτουργεί ως ασφαλής πύλη στις εφαρμογές σας, καθώς και ως διαχειριστής του Home Server. Στόχος του είναι να λύσει το όλο και πιο ανησυχητικό πρόβλημα των ευάλωτων self-hosted εφαρμογών και των προσωπικών server.
Αφού συνδεθούμε στον server μας, θα κάνουμε εγκατάσταση και εκτέλεση του Cosmos Server:
docker run -d -p 80:80 -p 443:443 -p 4242:4242/udp --privileged --name cosmos-server -h cosmos-server --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /:/mnt/host -v /var/lib/cosmos:/config azukaar/cosmos-server:latest
Εναλλακτικά όσοι προτιμάτε να το τρέχετε μέσω docker compose, τότε δημιουργήστε το αρχείο docker-compose.yml με το παρακάτω περιεχόμενο:
services:
cosmos-server:
image: azukaar/cosmos-server:latest
container_name: cosmos-server
hostname: cosmos-server
restart: always
privileged: true
volumes:
- /var/run/docker.sock:/var/run/docker.sock
- /:/mnt/host
- /var/lib/cosmos:/config
network_mode: host
και μετά τρέξτε το:
docker compose up -d
Εκκίνηση Cosmos
Αφού έχει «σηκωθεί» το Cosmos, επισκεπτόμαστε την IP του server μας και μας παρουσιάζεται η πρώτη σελίδα για την ρύθμιση του Administrator

Στο Cosmos->Configuration->Docker αλλάζουμε το default path της εγκατάστασης των δεδομένων των containers με αυτό του σκληρού /mnt/data. Το path μπορούμε να το τροποποιήσουμε και για καθένα container που εγκαθιστούμε, ξεχωριστά.
Τις διαθέσιμες εφαρμογές που είναι και αυτές σε docker, τις βρίσκουμε στο Market όπου πληκτρολογούμε την επιθυμητή μας εφαρμογή, την κάνουμε install και προσέχουμε να δώσουμε μια διεύθυνση και εκείνη μετατρέπεται αυτόματα σε bind.
Τώρα, εάν για οποιονδήποτε λόγο, το container της MongoDB ξεκινήσει τα επαναλαμβανόμενα restarts και έχουμε όλα τα παραπάνω με διαλλειπτική λειτουργία, είναι προτιμότερο να κάνουμε μια φρέσκια εγκατάσταση του Cosmos και της MongoDB, τροποποιώντας το αρχείο cosmos.config.json (γίνεται αναφορά και παρακάτω) μέσα στη διαδρομή /var/lib/cosmos αλλάζοντας τη γραμμή "NewInstall": false, σε "NewInstall": true, και επανεκκινώντας το container cosmos-server. Σε περίπτωση που έχουμε εγκατεστημένες κάποιες εφαρμογές, τότε τους δίνουμε εκ νέου τα URLs που είχαν πριν τη δυσλειτουργία και δεν χάνουμε τα δεδομένα τους.
Κάθε φορά που εγκαθιστούμε μία εφαρμογή, με οποιοδήποτε τρόπο, το Cosmos κρατάει backup του εαυτού του, συν τα containers που έχουμε και σε περίπτωση αποτυχίας, το αρχείο .json (μέσα στο ‘cosmos-backup.zip’) που παράγει στη διαδρομή var/lib/cosmos, γίνεται import μέσα από τη φρέσκια εγκατάστασή του (Market->Install->import compose file). To concept του backup του Cosmos, είναι WIP(work in progress) γιατί θεωρείται κατά τα λεγόμενα του developer ως μία βιαστική λύση και έχει τρόπον τινά, ανόητη φιλοσοφία. Δεν είναι κάτι που μας απασχολεί ιδιαίτερα αλλά όταν ολοκληρωθεί, θα είναι ένα καλοδεχούμενο χαρακτηριστικό. Τα backup μας θα τα φροντίσουμε υπέρ του δέοντος, παρακάτω.
Τέλος, προτιμήσαμε να έχουμε αποεπιλεγμένο το ‘Auto Update Container’ για κάθε νέα εφαρμογή που εγκαθιστούμε ώστε να μηδενίσουμε το ρίσκο να εκτελεστεί μία αυτόματη αναβάθμιση την ώρα που θα εκτελείται ένα προγραμματισμένο, από εμάς, backup.
Περισσότερα για την χρήση του μπορείτε να δείτε την επίσημη τεκμηρίωση.
Στο επόμενο μέρος, θα ρυθμίσουμε την πρόσβαση με Cloudflare-DDNS για να μπαίνουμε στις εφαρμογές μας και έξω από το σπίτι
Ήθελα να το ρωτήσω, περί του `
-p 80:80 -p 443:443 -p 4242:4242/` στο docker command και τις πόρτες που «δεν» βλέπω στο docker-compose script.. μήπως το docker-compose «way» το πάζει απευθείας σε host-mode αντί για stand-alone και αν θέλεις μετά το γυρνάς !?Ναι ειναι απο το official documentation το compose.
Περί εφαρμογών στο Market, μια πολύ καλή που δεν υπάρχει είναι να μπορείς να σηκώσεις jabber/xmpp server, π.χ. με ejabberd ή prosody, και το έκανα πρόταση στο ανάλογο github page [App Requests] Jabber/XMPP Server · Issue #146 · azukaar/cosmos-servapps-official (github.com) κάντε το λίγο push μήπως και το συμπεριλάβουν τα τυπάκια, αλλιώς το σηκώνεις και στο docker μόνος σου, αλλά θα ήταν πιο ωραία όλα μαζεμένα 😊😁
Περί του
αλλάζοντας τη γραμμή
"NewInstall": false,σε"NewInstall": true,και επανεκκινώντας το containercosmos-server.έχω βρεθεί να το τρώω ξανά και ξανά, οπότε σκότωσα εντελώς τα container και τα volumes κρατώντας μόνο τα images και ξανα έκανα deploy από την αρχή και του άφησα να φτιάξει τη mongoDB ξανά κλπ κλπ.
Έχει πιάσει και σκέτο το NewInstall: True αλλά έχει υπάρξει και φορά (δις) που δεν υπακούσε, ειδικά αν το γυρίσεις σε host-mode.
Περί του Auto Update Container, δουλεύει σαν το WatchTower που ανανεώνει τα images και τα re-start-αρει ?
Δεν είδα κάποιο watchtower να τρέχει ή να έχει τρέξει και το official doc λέει «built in update checker» οπότε δεν ξεκαθαρίζει αν είναι watchtower ή κάποιο δικό τους script https://cosmos-cloud.io/doc/4%20servapps/#container-updates