Συντάκτης: devios-admin

  • Γνωρίστε το Devios: το κέντρο ελέγχου που φτιάξαμε για τη δική μας υποδομή

    Γνωρίστε το Devios: το κέντρο ελέγχου που φτιάξαμε για τη δική μας υποδομή

    Στην 7Studios φτιάχνουμε και τρέχουμε sites, e-shops και εφαρμογές για πελάτες. Κάπου ανάμεσα στο δέκατο project και στον τρίτο server, η ερώτηση «πού τρέχει αυτό;» άρχισε να θέλει δέκα λεπτά για να απαντηθεί. Η ερώτηση «πόσο μας κοστίζει αυτός ο πελάτης;» δεν απαντιόταν καθόλου. Έτσι φτιάξαμε το Devios.

    Το πρόβλημα που λύνει

    Μια εταιρεία πληροφορικής δεν έχει έλλειψη εργαλείων. Έχει πάρα πολλά: πίνακες από Hostinger, Cloudflare, GitHub, Supabase, ένα password manager, ένα εργαλείο uptime, ένα Excel με λήξεις, και το λογιστικό. Κανένα δεν ξέρει για τα άλλα, και κανένα δεν ξέρει για τους πελάτες.

    Το Devios τα δένει γύρω από αυτό που πραγματικά διαχειρίζεσαι: πελάτες και projects.

    Τι κάνει σήμερα

    • Projects και πόροι. Πελάτες, projects, περιβάλλοντα και 28 τύποι πόρων, με χάρτη ανά project και κόστος που μοιράζεται.
    • Θησαυροφυλάκιο. Zero-knowledge κρυπτογράφηση στον browser, μία συλλογή ανά project, ιστορικό σε κάθε προβολή, σύνδεσμος μίας χρήσης για πελάτες.
    • Φύλακας. Έλεγχοι HTTP και TCP έως κάθε λεπτό, SSL, περιστατικά, δημόσια σελίδα κατάστασης.
    • Λήξεις και ειδοποιήσεις. Domains, πιστοποιητικά, συνδρομές, με ειδοποίηση σε Email, Telegram και Push.
    • Συνδέσεις. Hostinger, GitHub, Supabase, Resend και Anthropic φέρνουν μόνοι τους ό,τι έχεις.
    • Κόστη. Κόστος, χρέωση και περιθώριο ανά πελάτη, σε ευρώ με ισοτιμίες ΕΚΤ.
    • Βαθμός ασφάλειας 0 έως 100 και μηνιαία αναφορά ανά πελάτη.
    • Βοηθός με Claude που απαντά σε ερωτήσεις για την υποδομή, χωρίς να βλέπει ποτέ κωδικούς.

    Τρεις αρχές που κρατήσαμε

    Ούτε εμείς δεν βλέπουμε τους κωδικούς

    Οι κωδικοί των πελατών είναι το πιο ευαίσθητο πράγμα μιας agency. Γι’ αυτό κρυπτογραφούνται στη συσκευή σου με κλειδί από το master password σου, και ο server αποθηκεύει μόνο κρυπτογραφήματα. Αναλυτικά στο τι σημαίνει zero-knowledge.

    Μόνο αναγνώσεις στους παρόχους

    Οι συνδέσεις διαβάζουν, δεν αλλάζουν τίποτα. Ένα εργαλείο καταγραφής δεν πρέπει να μπορεί να σβήσει έναν server.

    Στα ελληνικά, από την αρχή

    Όχι μετάφραση από τα αγγλικά. Φυσικοί όροι, ελληνικές ημερομηνίες και ποσά, ευρώ.

    Πού πηγαίνει

    Το Devios ξεκίνησε ως εσωτερικό εργαλείο και το χρησιμοποιούμε κάθε μέρα. Τώρα ανοίγει σταδιακά σε άλλες agencies και ομάδες IT. Στη λίστα για τους επόμενους μήνες είναι περισσότεροι πάροχοι (Cloudflare, Stripe, DigitalOcean), μετρήσεις servers και αγγλικό περιβάλλον.

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

    Συχνές ερωτήσεις

    Για ποιον είναι το Devios;

    Για agencies, freelancers με πολλούς πελάτες και εσωτερικές ομάδες IT που τρέχουν sites, εφαρμογές και servers και θέλουν μία εικόνα για όλα.

    Χρειάζεται εγκατάσταση;

    Όχι. Δουλεύει από τον browser και εγκαθίσταται στο κινητό σαν εφαρμογή (PWA), με ειδοποιήσεις Push.

    Μπορούν να μπουν οι πελάτες μου;

    Ναι, με ρόλο «Πελάτης»: βλέπουν μόνο τα δικά τους projects, αν λειτουργούν, το uptime και τις ανανεώσεις, χωρίς κόστη και κωδικούς.

  • Μυστικά σε GitHub repos: πώς τα βρίσκεις πριν τα βρει κάποιος άλλος

    Μυστικά σε GitHub repos: πώς τα βρίσκεις πριν τα βρει κάποιος άλλος

    Κάποια στιγμή, κάποιος στην ομάδα έκανε commit ένα .env. Ίσως το κατάλαβε και το έσβησε στο επόμενο commit. Το κλειδί όμως είναι ακόμα εκεί, στο ιστορικό του git, για όποιον έχει πρόσβαση στο repo, και για πάντα αν το repo γίνει ποτέ δημόσιο.

    Πού κρύβονται συνήθως

    • Αρχεία .env που ξέφυγαν από το .gitignore, ή .env.production που κανείς δεν σκέφτηκε να εξαιρέσει.
    • Αρχεία ρυθμίσεων: wp-config.php, config.json, settings.py με κωδικούς βάσεων.
    • Ιδιωτικά κλειδιά: id_rsa, *.pem, πιστοποιητικά με το κλειδί τους.
    • Κλειδιά στον κώδικα: ένα sk_live_ του Stripe ή ένα sk-ant- της Anthropic «προσωρινά» μέσα σε ένα αρχείο.
    • Σενάρια deploy και αρχεία CI με κωδικούς αντί για secrets.
    • Dumps βάσεων για «δοκιμές», με πραγματικά δεδομένα πελατών.

    Γιατί το «το έσβησα» δεν αρκεί

    Το git κρατά κάθε έκδοση κάθε αρχείου. Ένα αρχείο που σβήστηκε στο επόμενο commit υπάρχει ακόμα στο προηγούμενο. Ακόμα κι αν ξαναγράψεις το ιστορικό, τα αντίγραφα σε laptops, forks και CI caches μένουν. Ένα κλειδί που μπήκε σε repo θεωρείται διαρρεύσαν.

    Πώς τα βρίσκεις

    Η σάρωση ψάχνει μοτίβα που έχουν γνωστή μορφή:

    Τι Πώς μοιάζει
    Stripe live key Ξεκινά με sk_live_ ή rk_live_
    AWS access key Ξεκινά με AKIA και 16 χαρακτήρες
    GitHub token Ξεκινά με ghp_, gho_ ή github_pat_
    Anthropic / OpenAI Ξεκινά με sk-ant- ή sk-
    Ιδιωτικό κλειδί -----BEGIN ... PRIVATE KEY-----
    Αρχείο .env Οποιοδήποτε .env εκτός από .env.example

    Το Devios σαρώνει τα repositories που φέρνει η σύνδεση με το GitHub και, για κάθε εύρημα, κρατά μόνο το hash και μια κομμένη προεπισκόπηση. Η ίδια η τιμή δεν αποθηκεύεται ποτέ. Κάθε νέο εύρημα στέλνει ειδοποίηση ασφαλείας.

    Και το GitHub βοηθάΤο GitHub έχει δικό του secret scanning και push protection, που μπλοκάρει γνωστά κλειδιά πριν φτάσουν στο repo. Άνοιξέ τα σε κάθε οργανισμό· είναι το πρώτο δίχτυ.

    Βρήκες ένα κλειδί. Τι κάνεις

    1. Ανακάλεσέ το στον πάροχο. Φτιάξε νέο κλειδί, βάλ’ το στην εφαρμογή, και μετά σβήσε το παλιό. Αυτό είναι το μόνο βήμα που πραγματικά σε προστατεύει.
    2. Έλεγξε αν χρησιμοποιήθηκε. Στα logs του παρόχου: χρεώσεις, κλήσεις API, συνδέσεις από άγνωστες IP.
    3. Μετέφερε την τιμή εκεί που πρέπει. Στο θησαυροφυλάκιο και στα secrets του CI ή του hosting.
    4. Διόρθωσε το .gitignore ώστε να μην ξανασυμβεί.
    5. Καθάρισε το ιστορικό μόνο αν το repo θα γίνει δημόσιο ή θα δοθεί σε τρίτους. Δεν αντικαθιστά το βήμα 1.

    Πώς δεν ξανασυμβαίνει

    • Ένα .env.example με τα ονόματα των μεταβλητών, χωρίς τιμές, είναι το μόνο .env στο repo.
    • Οι πραγματικές τιμές ζουν στο θησαυροφυλάκιο, ανά περιβάλλον.
    • Σύγκριση των ονομάτων του .env με τα GitHub Actions secrets, για να φαίνεται τι λείπει, χωρίς να φύγει καμία τιμή από τον browser.
    • Push protection ενεργό σε όλο τον οργανισμό.

    Συχνές ερωτήσεις

    Το repo είναι ιδιωτικό. Χρειάζεται να ανησυχώ;

    Ναι. Ιδιωτικό σημαίνει ότι το βλέπουν όλοι όσοι έχουν ή είχαν πρόσβαση, κάθε fork, κάθε CI και κάθε laptop που το έκανε clone. Και τα ιδιωτικά repos γίνονται κάποτε δημόσια κατά λάθος.

    Αρκεί να ξαναγράψω το ιστορικό του git;

    Όχι. Βοηθά για το μέλλον, αλλά τα παλιά αντίγραφα μένουν. Το κλειδί πρέπει να αλλάξει στον πάροχο.

    Πόσο συχνά πρέπει να γίνεται η σάρωση;

    Συνεχώς, με κάθε συγχρονισμό. Ένα κλειδί που μπαίνει σήμερα πρέπει να το μάθεις σήμερα, όχι στον ετήσιο έλεγχο.

  • Περιστατικά και post-mortem: τι κάνεις όταν πέφτει ένα site πελάτη

    Περιστατικά και post-mortem: τι κάνεις όταν πέφτει ένα site πελάτη

    Κάθε ομάδα που φτιάχνει sites θα δει κάποια στιγμή ένα να πέφτει. Η διαφορά ανάμεσα σε μια κακή μέρα και σε έναν χαμένο πελάτη σπάνια είναι η βλάβη. Είναι το πόσο γρήγορα το έμαθες, πόσο καθαρά το είπες και αν έμαθες κάτι για την επόμενη φορά.

    Τα πρώτα 15 λεπτά

    1. Ένας αναλαμβάνει. Όποιος απαντήσει πρώτος στην ειδοποίηση το λέει στην ομάδα: «το έχω». Δύο άνθρωποι που ψάχνουν το ίδιο πράγμα χωρίς να το ξέρουν χάνουν χρόνο.
    2. Επιβεβαίωσε από άλλο σημείο. Άνοιξε το site από το κινητό, εκτός δικτύου γραφείου. Έλεγξε αν πέφτει όλο ή μια σελίδα.
    3. Άνοιξε το runbook του project. Εκεί λέει πού τρέχει, πώς γίνεται restart, πού είναι τα logs και ποιον πάροχο καλείς. Αν δεν υπάρχει runbook, αυτό είναι το πρώτο εύρημα του post-mortem. Δες τι γράφει ένα runbook.
    4. Ενημέρωσε τον πελάτη πριν σε πάρει. Δύο γραμμές αρκούν: «Το site είναι εκτός από τις 10:42. Το ψάχνουμε, θα σας ενημερώσουμε ως τις 11:15.»
    Πρώτα επαναφορά, μετά εξήγησηΣτόχος του περιστατικού είναι να ξαναδουλέψει το site. Η αναζήτηση της βαθύτερης αιτίας μπορεί να περιμένει μέχρι να είναι όλα πάνω: ένα rollback τώρα αξίζει περισσότερο από μια τέλεια διάγνωση σε μία ώρα.

    Οι συνηθισμένοι ύποπτοι

    Σύμπτωμα Συχνή αιτία Πρώτος έλεγχος
    Δεν απαντά καθόλου Server κάτω, γεμάτος δίσκος, λήξη hosting Πίνακας παρόχου, χρήση πόρων
    Σφάλμα 500 Πρόσφατο deploy, plugin, αναβάθμιση PHP ή Node Τι άλλαξε την τελευταία μέρα
    «Error establishing a database connection» Βάση κάτω, αλλαγμένος κωδικός, όριο συνδέσεων Η βάση και τα στοιχεία σύνδεσης
    Προειδοποίηση πιστοποιητικού SSL που δεν ανανεώθηκε Ημερομηνία λήξης, εγγραφές DNS
    Σελίδα στάθμευσης Domain που έληξε Ο registrar. Δες τι γίνεται όταν λήγει domain

    Η σελίδα κατάστασης

    Μια δημόσια σελίδα κατάστασης ανά πελάτη απαντά στο «είναι μόνο σε μένα;» χωρίς τηλέφωνο. Ο πελάτης βλέπει ποιες υπηρεσίες του λειτουργούν και τη διαθεσιμότητα των τελευταίων ημερών. Δεν βλέπει διευθύνσεις servers, IP ή μηνύματα σφάλματος.

    Στείλε τον σύνδεσμο στον πελάτη τη μέρα της παράδοσης, όχι τη μέρα της βλάβης. Έτσι τον ξέρει όταν τον χρειαστεί.

    Το κλείσιμο

    Όταν ο έλεγχος ξαναπετύχει, το περιστατικό κλείνει και ο χρόνος εκτός λειτουργίας μένει καταγεγραμμένος. Πριν το ξεχάσεις, γράψε δύο πράγματα στο ίδιο το περιστατικό: την αιτία σε μία γραμμή και σημειώσεις για το τι έκανες. Αυτές οι σημειώσεις είναι το προσχέδιο του post-mortem.

    Και στείλε στον πελάτη το τελευταίο μήνυμα: τι έγινε, πόσο κράτησε, ότι λύθηκε και τι αλλάζει.

    Post-mortem σε μία σελίδα

    Δεν χρειάζεται έκθεση δέκα σελίδων. Χρειάζεται μια σελίδα που διαβάζεται σε δύο λεπτά και αλλάζει κάτι:

    1. Τι έγινε: μία παράγραφος, σε γλώσσα που καταλαβαίνει και ο πελάτης.
    2. Χρονολόγιο: πότε ξεκίνησε, πότε το μάθαμε, πότε ενημερώσαμε, πότε λύθηκε.
    3. Αιτία: η άμεση αιτία και, αν υπάρχει, η βαθύτερη («ο δίσκος γέμισε» και «δεν παρακολουθούσαμε τον δίσκο»).
    4. Τι πήγε καλά: για να το κρατήσεις.
    5. Τι αλλάζει: 1 έως 3 συγκεκριμένες ενέργειες, με υπεύθυνο και ημερομηνία.
    Χωρίς ενόχουςΤο post-mortem ρωτά «τι επέτρεψε να γίνει», όχι «ποιος το έκανε». Αν ένα λάθος ενός ανθρώπου μπορεί να ρίξει το site, το πρόβλημα είναι η διαδικασία. Μια ομάδα που φοβάται να πει τι έγινε κρύβει τα επόμενα.

    Μετά από μερικούς μήνες

    Τα περιστατικά, μαζεμένα, λένε μια ιστορία. Ποια projects πέφτουν συχνότερα; Ποιος πάροχος; Πόσο γρήγορα αντιδράτε; Η μηνιαία αναφορά ανά πελάτη τα δείχνει δίπλα στη διαθεσιμότητα, και συχνά είναι το καλύτερο επιχείρημα για μια αναβάθμιση hosting που ο πελάτης ανέβαλλε. Δες τι γράφει μια μηνιαία αναφορά.

    Συχνές ερωτήσεις

    Πρέπει να λέμε στον πελάτη κάθε περιστατικό;

    Όσα τα είδε ή θα μπορούσε να τα δει, ναι. Τα μικρά, που κράτησαν δύο λεπτά τα ξημερώματα, φαίνονται στη μηνιαία αναφορά. Η διαφάνεια χτίζει εμπιστοσύνη· το να το μάθει μόνος του τη χαλάει.

    Χρειάζεται post-mortem για κάθε περιστατικό;

    Όχι. Γράψε για όσα κράτησαν πάνω από λίγα λεπτά, για όσα τα έμαθες από τον πελάτη, και για όσα ξανάγιναν. Για τα υπόλοιπα αρκεί η αιτία σε μία γραμμή.

    Τι γίνεται αν η βλάβη είναι στον πάροχο;

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

  • Όταν φεύγει ένας developer: λίστα offboarding για κωδικούς και πρόσβαση

    Όταν φεύγει ένας developer: λίστα offboarding για κωδικούς και πρόσβαση

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

    Η αρχή: ό,τι είδε, το ξέρει

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

    Αυτό κάνει το ιστορικό προβολών απαραίτητο: χωρίς αυτό, είτε αλλάζεις όλους τους κωδικούς της εταιρείας, είτε μαντεύεις.

    Την ίδια μέρα

    1. Λογαριασμός στο κέντρο ελέγχου: αφαίρεση από την ομάδα. Τα κλειδιά των συλλογών του σβήνονται και οι κωδικοί που είδε σημειώνονται «Θέλει αλλαγή».
    2. Εταιρικό email: αναστολή, με προώθηση σε κάποιον άλλον για λίγους μήνες.
    3. GitHub / GitLab: αφαίρεση από τον οργανισμό. Έλεγξε και για προσωπικά forks ιδιωτικών repos.
    4. Κλειδιά SSH: αφαίρεση του δημόσιου κλειδιού του από κάθε server (~/.ssh/authorized_keys) και από τα deploy keys.
    5. Πίνακες παρόχων: Hostinger, Cloudflare, Supabase, Vercel και όπου αλλού είχε δικό του χρήστη.
    6. Εργαλεία ομάδας: Slack, Viber group, Figma, Google Drive, λογιστικό.

    Μέσα στην εβδομάδα

    1. Αλλαγή κωδικών της λίστας «Θέλει αλλαγή», ξεκινώντας από τα πιο κρίσιμα: hosting, domains, πληρωμές, βάσεις.
    2. Αλλαγή API keys που είχε δημιουργήσει ή δει: Stripe, Resend, Anthropic, Twilio. Φτιάξε νέο κλειδί, άλλαξέ το στην εφαρμογή, μετά σβήσε το παλιό.
    3. Λογαριασμοί στο όνομά του: ό,τι είχε ανοιχτεί με το προσωπικό του email (ένα Cloudflare, ένα Apple Developer) μεταφέρεται σε εταιρικό.
    4. 2FA: αν κάποιος λογαριασμός είχε 2FA μόνο στο κινητό του, βάλε νέο, με το κλειδί αποθηκευμένο στο θησαυροφυλάκιο.
    Σειρά για τα API keysΠρώτα φτιάχνεις το νέο κλειδί και το βάζεις στην εφαρμογή, μετά σβήνεις το παλιό. Ανάποδα, η εφαρμογή πέφτει.

    Πώς βεβαιώνεσαι ότι δεν ξέχασες τίποτα

    • Η λίστα «Θέλει αλλαγή» πρέπει να αδειάσει. Μέχρι τότε φαίνεται στην αρχική.
    • Ο βαθμός ασφάλειας της εταιρείας πέφτει όσο υπάρχουν κωδικοί για αλλαγή, και ανεβαίνει όταν κλείσουν.

    Πώς το κάνεις ευκολότερο την επόμενη φορά

    • Πρόσβαση ανά project, όχι σε όλα. Λιγότερα projects σημαίνει λιγότεροι κωδικοί για αλλαγή.
    • Προσωρινή πρόσβαση για βοήθεια σε άλλο project, με ημερομηνία λήξης.
    • Εταιρικοί λογαριασμοί παντού, ποτέ προσωπικά emails.
    • Κλειδιά ανά άνθρωπο, όχι ένας κοινός χρήστης «dev» στους servers.

    Συχνές ερωτήσεις

    Πρέπει να αλλάξω όλους τους κωδικούς της εταιρείας;

    Όχι, μόνο αυτούς που είδε ή άλλαξε. Γι’ αυτό χρειάζεσαι ιστορικό προβολών. Χωρίς αυτό, η ασφαλής απάντηση είναι δυστυχώς «ναι, όλους».

    Και αν η αποχώρηση είναι φιλική;

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

    Τι γίνεται με έναν freelancer που δουλεύει περιστασιακά;

    Δώσε του προσωρινή πρόσβαση μόνο στο project που χρειάζεται, με ημερομηνία λήξης. Όταν λήξει, οι κωδικοί που είδε σημειώνονται για αλλαγή όπως σε κάθε αποχώρηση.

  • Από το Excel στο κέντρο ελέγχου: η πρώτη καταγραφή projects και πόρων σε μία μέρα

    Από το Excel στο κέντρο ελέγχου: η πρώτη καταγραφή projects και πόρων σε μία μέρα

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

    Πριν ξεκινήσεις: τι μαζεύεις

    Δεν χρειάζεται τέλειο υλικό. Χρειάζεσαι:

    • Τη λίστα πελατών (ακόμα και από το λογιστικό).
    • Πρόσβαση στους λογαριασμούς των βασικών παρόχων: hosting, domains, GitHub, βάσεις.
    • Το Excel ή τα Excel που υπάρχουν, όσο παλιά κι αν είναι.
    • Το export του password manager, αν υπάρχει.

    Πρωί: συνδέσεις παρόχων (1 ώρα)

    Ξεκίνα από αυτό που γεμίζει μόνο του. Για κάθε πάροχο φτιάξε ένα token μόνο ανάγνωσης και σύνδεσέ το. Μέσα σε λίγα λεπτά έρχονται domains με λήξεις, servers με IP και πακέτα, sites, repositories και βάσεις.

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

    Πριν το μεσημέρι: πελάτες και projects (1,5 ώρα)

    Φτιάξε τους πελάτες και μόνο τα live projects. Για κάθε project, τρία πράγματα αρκούν τώρα: όνομα, τύπος (site, e-shop, εφαρμογή, API) και διεύθυνση. Τα αρχειοθετημένα και τα ημιτελή περιμένουν για την επόμενη εβδομάδα.

    Αν έχεις μηνιαία χρέωση ανά πελάτη, γράψ’ την τώρα. Θα τη χρειαστείς για το περιθώριο.

    Μεσημέρι: πόροι στα projects (2 ώρες)

    Αυτό είναι το κύριο κομμάτι. Πάρε τη λίστα με ό,τι έφεραν οι πάροχοι και βάλε κάθε πόρο στο project του. Ό,τι έχει ίδιο domain ή όνομα με κάποιο project ταιριάζει αυτόματα· τα υπόλοιπα τα βάζεις με ένα κλικ.

    Για κοινούς πόρους, όπως έναν VPS που φιλοξενεί πολλά sites, σύνδεσέ τους με όλα τα projects και δώσε ποσοστό κόστους στο καθένα. Μην ψάχνεις την τέλεια αναλογία· μια λογική εκτίμηση είναι καλύτερη από το τίποτα.

    Μετά πέρνα τα μόνο από το Excel: πόρους που δεν βλέπει κανένας πάροχος, όπως άδειες plugins, λογαριασμούς Apple Developer ή ένα domain στο Papaki του πελάτη.

    Απόγευμα: κωδικοί (1 ώρα)

    Κάνε εισαγωγή από τον password manager (Bitwarden, 1Password, LastPass, Chrome ή Firefox) και μοίρασε τους κωδικούς στις συλλογές των projects. Ό,τι ήταν σε Excel, πέρασέ το με το χέρι και σβήσε το αρχείο. Δες γιατί στον οδηγό διαχείρισης κωδικών.

    Τέλος της μέρας: έλεγχοι και ειδοποιήσεις (30 λεπτά)

    1. Βάλε έναν έλεγχο λειτουργίας σε κάθε live site.
    2. Σύνδεσε ένα κανάλι ειδοποιήσεων: Email για όλους, Telegram ή Push για τον υπεύθυνο βάρδιας.
    3. Άνοιξε τις λήξεις των επόμενων 60 ημερών. Σχεδόν πάντα κάτι βρίσκεται.
    4. Δες τους πόρους χωρίς project: συνδρομές που πληρώνεις χωρίς λόγο.

    Η επόμενη εβδομάδα

    • Runbooks για τα τρία πιο κρίσιμα projects.
    • Πρόσβαση στους developers ανά project.
    • Τα αρχειοθετημένα projects, για να κλείσουν οι πόροι που περισσεύουν.
    • Η πρώτη μηνιαία αναφορά κόστους.

    Συχνές ερωτήσεις

    Τι κάνω με τα στοιχεία του Excel που δεν ξέρω αν ισχύουν;

    Μην τα περάσεις τυφλά. Αν ένας πόρος δεν εμφανίζεται σε κανέναν πάροχο και κανείς δεν ξέρει τι είναι, γράψ’ τον με σημείωση «να ελεγχθεί» και κοίτα τον την επόμενη εβδομάδα.

    Πρέπει να σταματήσει η δουλειά για να γίνει η μετάβαση;

    Όχι. Ένας άνθρωπος αρκεί για την πρώτη μέρα. Η υπόλοιπη ομάδα μπαίνει όταν τα projects της είναι έτοιμα.

    Τι γίνεται με τους λογαριασμούς που είναι στο όνομα πρώην συνεργάτη;

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

  • Η μηνιαία αναφορά προς τον πελάτη: τι γράφει και γιατί κρατά τους πελάτες

    Η μηνιαία αναφορά προς τον πελάτη: τι γράφει και γιατί κρατά τους πελάτες

    Όταν η συντήρηση πάει καλά, ο πελάτης δεν βλέπει τίποτα. Το site δουλεύει, τα πιστοποιητικά ανανεώνονται, το domain δεν λήγει. Και κάποια στιγμή ρωτά: «τι ακριβώς πληρώνουμε κάθε μήνα;» Η μηνιαία αναφορά απαντά σε αυτή την ερώτηση πριν γίνει.

    Η αρχή: μία σελίδα, πέντε ενότητες

    Ο πελάτης θα τη διαβάσει σε δύο λεπτά, αν τη διαβάσει. Γι’ αυτό το σημαντικό μπαίνει πρώτο, με νούμερα και όχι με τεχνικούς όρους.

    1. Διαθεσιμότητα

    Ένα νούμερο για τον μήνα (π.χ. 99,97%) και η διαθεσιμότητα ανά υπηρεσία: site, κατάστημα, εφαρμογή. Αν ο πελάτης έχει μόνο ένα site, ένα νούμερο αρκεί.

    Βάλε το νούμερο σε λεπτάΤο 99,9% δεν λέει τίποτα στους περισσότερους. Το «λιγότερο από 45 λεπτά εκτός λειτουργίας σε όλο τον μήνα» λέει.

    2. Περιστατικά

    Κάθε φορά που κάτι έπεσε: πότε, πόσο κράτησε, γιατί, και τι αλλάξαμε. Μία γραμμή για το καθένα. Αν δεν έγινε κανένα, γράψ’ το: «Κανένα περιστατικό τον Οκτώβριο» είναι η καλύτερη πρόταση της αναφοράς. Για το πώς χειρίζεσαι τα μεγαλύτερα, δες περιστατικά και post-mortem.

    3. Τι λήγει

    Domains, πιστοποιητικά, hosting και άδειες που λήγουν τους επόμενους δύο μήνες, με ημερομηνία και αν ανανεώνονται αυτόματα. Είναι η πιο χρήσιμη ενότητα για τον πελάτη όταν πληρώνει κάποια από αυτά ο ίδιος: του δίνει χρόνο να ετοιμάσει την κάρτα.

    4. Ασφάλεια

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

    5. Τι κάναμε

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

    Τι δεν μπαίνει

    • Τα δικά σου κόστη και περιθώρια. Αυτά είναι για εσωτερική χρήση. Η αναφορά στο Devios έχει επιλογή που κρύβει τα κόστη, ακριβώς για να σταλεί στον πελάτη.
    • Τεχνική ορολογία χωρίς εξήγηση. «Ανανεώθηκε το πιστοποιητικό ασφαλείας» αντί για «renewed TLS cert via ACME».
    • Άλλοι πελάτες. Η αναφορά φιλτράρεται ώστε να δείχνει μόνο τα projects του συγκεκριμένου πελάτη.

    Η εσωτερική εκδοχή

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

    Πώς τη στέλνεις

    1. Την ίδια μέρα κάθε μήνα, π.χ. την πρώτη εργάσιμη. Η συνέπεια μετρά περισσότερο από το περιεχόμενο.
    2. Ως PDF ή εκτύπωση από τη σελίδα της αναφοράς, μαζί με ένα σύντομο email.
    3. Με μία πρόταση όταν υπάρχει κάτι να προτείνεις: «το hosting σας είναι στο 85% της μνήμης, προτείνουμε αναβάθμιση».

    Γιατί κρατά τους πελάτες

    Ο πελάτης που βλέπει κάθε μήνα «κανένα περιστατικό, 3 ενημερώσεις, το domain ανανεώνεται τον Μάρτιο» ξέρει ότι κάποιος προσέχει. Όταν έρθει η ώρα της ανανέωσης ή μιας αύξησης, δεν συζητάτε για το αν αξίζει η συντήρηση. Έχει δώδεκα αναφορές που το δείχνουν.

    Συχνές ερωτήσεις

    Δεν είναι πολλή δουλειά κάθε μήνα;

    Αν τη φτιάχνεις με το χέρι, ναι. Αν τα δεδομένα είναι ήδη εκεί (έλεγχοι, περιστατικά, λήξεις, βαθμός ασφάλειας), η αναφορά βγαίνει μόνη της και εσύ γράφεις μόνο το «τι κάναμε».

    Και αν ο μήνας πήγε άσχημα;

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

    Να βάλω και στατιστικά επισκεψιμότητας;

    Αν τα παρακολουθείς ήδη και ενδιαφέρουν τον πελάτη, ναι, σε μία γραμμή. Μην κάνεις όμως την αναφορά συντήρησης αναφορά marketing· είναι δύο διαφορετικές κουβέντες.

  • Λήξη domain: τι συμβαίνει μέρα με τη μέρα και πώς δεν το παθαίνεις ποτέ

    Λήξη domain: τι συμβαίνει μέρα με τη μέρα και πώς δεν το παθαίνεις ποτέ

    Ένα domain που λήγει δεν πέφτει με θόρυβο. Πρώτα σταματούν να φτάνουν κάποια emails. Μετά το site δείχνει μια σελίδα στάθμευσης του registrar. Αν περάσουν αρκετές εβδομάδες, μπορεί να το αγοράσει κάποιος άλλος. Εδώ είναι τι συμβαίνει, με τη σειρά, και πώς το αποφεύγεις.

    Ο κύκλος ζωής ενός domain .com μετά τη λήξη

    Για τα γενικά domains (.com, .net, .org και τα περισσότερα νέα) ο κύκλος ακολουθεί τους κανόνες της ICANN. Τα ακριβή χρονικά διαστήματα τα ορίζει ο κάθε registrar, οπότε έλεγξε τους όρους του δικού σου.

    Φάση Πόσο κρατά Τι γίνεται
    Λήξη Ημέρα 0 Το domain συχνά συνεχίζει να δουλεύει για λίγο, ή περνά αμέσως σε σελίδα στάθμευσης.
    Περίοδος χάριτος Συνήθως έως 30 με 45 ημέρες Ανανεώνεις στην κανονική τιμή. Το DNS μπορεί ήδη να έχει αλλάξει.
    Redemption Περίπου 30 ημέρες Το domain επιστρέφει μόνο με αυξημένη χρέωση επαναφοράς, συχνά πολλαπλάσια της ανανέωσης.
    Pending delete Περίπου 5 ημέρες Δεν σώζεται πια. Μετά ελευθερώνεται για οποιονδήποτε.
    Τα .gr έχουν δικούς τους κανόνεςΤα domains .gr και .ελ διέπονται από τον κανονισμό της ΕΕΤΤ και οι περίοδοι διαφέρουν από τα .com. Μην υποθέτεις ότι έχεις τον ίδιο χρόνο· ρώτα τον registrar σου και σημείωσέ το στον πόρο.

    Τι σπάει πρώτο

    1. Email. Αν οι εγγραφές MX αλλάξουν ή το DNS σταματήσει να απαντά, τα εισερχόμενα χάνονται ή επιστρέφουν. Συχνά κανείς δεν το καταλαβαίνει για μέρες.
    2. Site. Ο επισκέπτης βλέπει σελίδα στάθμευσης με διαφημίσεις. Για ένα e-shop, αυτό είναι κλειστό κατάστημα.
    3. SSL. Η ανανέωση του πιστοποιητικού αποτυγχάνει, γιατί δεν μπορεί να επαληθευτεί το domain.
    4. Υπηρεσίες που εξαρτώνται από αυτό: αποστολή email από την εφαρμογή (το SPF και το DKIM ζουν στο DNS), σύνδεση με Google ή Apple, webhooks πληρωμών.

    Γιατί συμβαίνει, ακόμα και σε προσεκτικές ομάδες

    • Η αυτόματη ανανέωση ήταν ενεργή, αλλά η κάρτα έληξε.
    • Το email υπενθύμισης του registrar πήγε σε έναν λογαριασμό που δεν διαβάζει κανείς, ή σε πρώην συνεργάτη.
    • Το domain είναι στον λογαριασμό του πελάτη, που δεν ξέρει τι είναι η ειδοποίηση που έλαβε.
    • Το domain μεταφέρθηκε σε νέο registrar και η αυτόματη ανανέωση δεν ενεργοποιήθηκε εκεί.

    Ένα σύστημα που δεν αφήνει τίποτα να ξεφύγει

    1. Κάθε domain καταγεγραμμένο, με registrar, λογαριασμό, ημερομηνία λήξης και αν έχει αυτόματη ανανέωση. Οι συνδέσεις με τους registrars το κρατούν ενημερωμένο μόνο του.
    2. Ειδοποιήσεις 30, 14, 7 και 1 ημέρα πριν στην ομάδα, όχι μόνο στο email του λογαριασμού.
    3. Λίστα με όσα δεν έχουν αυτόματη ανανέωση. Αυτά θέλουν ανθρώπινη κίνηση και είναι τα πιο επικίνδυνα.
    4. Ανανέωση για περισσότερα χρόνια στα κρίσιμα domains. Δύο ή πέντε χρόνια μειώνουν τις ευκαιρίες για λάθος.
    5. Ένα runbook ανά project που λέει ποιος πληρώνει και πού γίνεται η ανανέωση. Δες τι γράφει ένα runbook.

    Αν έληξε ήδη

    1. Μπες στον registrar αμέσως και ανανέωσε. Στην περίοδο χάριτος κοστίζει όσο μια κανονική ανανέωση.
    2. Έλεγξε ότι οι nameservers και οι εγγραφές DNS είναι αυτές που ήταν.
    3. Δοκίμασε email προς και από το domain.
    4. Έλεγξε ότι το πιστοποιητικό SSL ανανεώθηκε.
    5. Γράψε στο post-mortem γιατί έγινε, και τι αλλάζει για να μην ξαναγίνει.

    Συχνές ερωτήσεις

    Η αυτόματη ανανέωση δεν αρκεί;

    Βοηθά πολύ, αλλά αποτυγχάνει σιωπηλά όταν λήξει η κάρτα ή αλλάξει ο λογαριασμός. Θέλεις και ειδοποίηση από κάτι που δεν εξαρτάται από τον registrar.

    Ποιος πρέπει να είναι ιδιοκτήτης του domain, εμείς ή ο πελάτης;

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

    Τι γίνεται με τα subdomains;

    Δεν λήγουν χωριστά· ακολουθούν το κύριο domain. Τα πιστοποιητικά τους όμως λήγουν χωριστά, οπότε τα παρακολουθείς.

  • Zero-knowledge κρυπτογράφηση: τι σημαίνει και γιατί έχει σημασία για τους κωδικούς των πελατών σου

    Zero-knowledge κρυπτογράφηση: τι σημαίνει και γιατί έχει σημασία για τους κωδικούς των πελατών σου

    Το «zero-knowledge» γράφεται σε κάθε σελίδα password manager, συνήθως χωρίς εξήγηση. Εδώ είναι τι σημαίνει στην πράξη, χωρίς μαθηματικά, και γιατί είναι η μόνη λογική επιλογή όταν κρατάς κωδικούς για λογαριασμό άλλων.

    Η μία πρόταση

    Zero-knowledge σημαίνει ότι ο server αποθηκεύει τους κωδικούς σου χωρίς να μπορεί να τους διαβάσει. Η κρυπτογράφηση και η αποκρυπτογράφηση γίνονται μόνο στη συσκευή σου, με κλειδί που ο server δεν έχει δει ποτέ.

    Η διαφορά από την «κανονική» κρυπτογράφηση

    Κρυπτογράφηση στον server Zero-knowledge
    Πού κρυπτογραφείται Στον server Στον browser σου
    Ποιος έχει το κλειδί Ο server Μόνο εσύ
    Αν κλαπεί η βάση Κινδυνεύει, αν κλαπεί και το κλειδί Ο κλέφτης έχει μόνο κρυπτογραφήματα
    Αν ξεχάσεις τον κωδικό Ο πάροχος σε επαναφέρει Χρειάζεσαι recovery key

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

    Τι γίνεται όταν γράφεις το master password

    1. Το master password δεν φεύγει ποτέ από τον browser. Δεν είναι ο κωδικός σύνδεσης στην εφαρμογή· είναι άλλο πράγμα.
    2. Περνά από το Argon2id, έναν αλγόριθμο σχεδιασμένο να είναι σκόπιμα αργός και να θέλει πολλή μνήμη. Αυτό κάνει τις μαζικές δοκιμές κωδικών εξαιρετικά ακριβές για έναν επιτιθέμενο.
    3. Το αποτέλεσμα είναι ένα κλειδί που ξεκλειδώνει το προσωπικό σου κλειδί.
    4. Με αυτό ανοίγεις τα κλειδιά των συλλογών που δικαιούσαι, και με αυτά τους κωδικούς, που είναι κρυπτογραφημένοι με AES-256-GCM.

    Όλα αυτά γίνονται σε κλάσματα δευτερολέπτου, στη μνήμη της καρτέλας. Ένα refresh, ένα «κλείδωμα» ή λίγα λεπτά αδράνειας τα σβήνουν.

    Πώς μοιράζεσαι κωδικούς χωρίς να τους δει ο server

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

    Όταν ένας developer παίρνει πρόσβαση σε ένα project, ο browser κάποιου που ήδη έχει το κλειδί της συλλογής το «τυλίγει» με το δημόσιο κλειδί του developer. Ο server μεταφέρει αυτό το πακέτο, αλλά δεν μπορεί να το ανοίξει. Μόνο ο developer, με το δικό του master password.

    Ο ρόλος του serverΟ server αποφασίζει σε ποιον δίνει κάθε κρυπτογράφημα, με βάση τον ρόλο και την πρόσβαση ανά project. Δεν μπορεί όμως να δει τι περιέχει.

    Τι προστατεύει, με απλά λόγια

    • Διαρροή βάσης ή backup: κανένας κωδικός δεν διαβάζεται.
    • Περίεργος διαχειριστής server: δεν βλέπει τίποτα.
    • Developer χωρίς πρόσβαση σε project: δεν έχει το κλειδί, άρα δεν ανοίγει τους κωδικούς του, ακόμα κι αν πάρει τα δεδομένα.

    Τα όρια (που κάθε σοβαρός πάροχος λέει)

    Κανένα σύστημα δεν είναι μαγικό. Το zero-knowledge δεν σε προστατεύει από:

    • Μολυσμένη συσκευή. Αν ο υπολογιστής σου έχει keylogger, το master password κλέβεται όταν το γράφεις.
    • Αλλαγμένο κώδικα. Σε μια web εφαρμογή, κάποιος με πρόσβαση στον server θα μπορούσε θεωρητικά να σερβίρει τροποποιημένο JavaScript. Γι’ αυτό μετρούν το 2FA, το ιστορικό και η ασφάλεια του ίδιου του server.
    • Αδύναμο master password. Το Argon2id κάνει τις δοκιμές ακριβές, όχι αδύνατες. Μια φράση τεσσάρων ή πέντε τυχαίων λέξεων είναι πολύ καλύτερη από ένα «σύνθετο» κοντό κωδικό.

    Ανάκτηση χωρίς πίσω πόρτα

    Αφού κανείς δεν μπορεί να σε επαναφέρει, χρειάζεσαι δύο δίχτυα ασφαλείας:

    1. Recovery key: ένας μεγάλος κωδικός που παίρνεις την πρώτη μέρα και φυλάς εκτός συστήματος (τυπωμένος, σε χρηματοκιβώτιο). Ανοίγει το θησαυροφυλάκιο και ορίζεις νέο master password.
    2. Πρόσβαση έκτακτης ανάγκης: ορίζεις έναν συνεργάτη που μπορεί να ζητήσει πρόσβαση στα κλειδιά σου. Αν δεν απορρίψεις το αίτημα μέσα σε μια αναμονή (π.χ. 7 ημέρες), την παίρνει.

    Συχνές ερωτήσεις

    Αφού ο server δεν βλέπει τίποτα, πώς γίνεται η αναζήτηση;

    Η λίστα με τα ονόματα των στοιχείων αποκρυπτογραφείται στον browser σου όταν ξεκλειδώνεις, και η αναζήτηση γίνεται εκεί. Το μυστικό κάθε στοιχείου έρχεται μόνο όταν πατήσεις «Εμφάνιση».

    Είναι πιο αργό;

    Το ξεκλείδωμα θέλει ένα δευτερόλεπτο περίπου, λόγω του Argon2id. Μετά, όλα είναι στιγμιαία.

    Τι σημαίνει AES-256-GCM;

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

    Μπορεί ο βοηθός AI να δει τους κωδικούς;

    Όχι. Δεν έχει το κλειδί, όπως δεν το έχει ο server. Δουλεύει μόνο με την καταγραφή projects και πόρων.

  • Runbooks: τι πρέπει να γράφει κάθε project για να μη χαθεί η γνώση

    Runbooks: τι πρέπει να γράφει κάθε project για να μη χαθεί η γνώση

    Κάθε ομάδα έχει έναν άνθρωπο που «ξέρει πώς γίνεται το deploy στο eshop». Μέχρι να πάει διακοπές. Το runbook είναι ο τρόπος να βγει αυτή η γνώση από το κεφάλι του και να μπει δίπλα στο project, εκεί που θα τη χρειαστεί ο επόμενος.

    Τι είναι (και τι δεν είναι) ένα runbook

    Ένα runbook είναι οδηγίες για ενέργειες: πώς κάνεις κάτι συγκεκριμένο, βήμα βήμα. Δεν είναι τεκμηρίωση αρχιτεκτονικής, δεν είναι README για developers, δεν είναι ιστορικό αποφάσεων. Αν η σελίδα δεν απαντά στο «τι πατάω τώρα;», δεν είναι runbook.

    Το καλό runbook διαβάζεται από κάποιον που ξέρει τη δουλειά αλλά δεν ξέρει το project. Αυτό είναι το μέτρο.

    Τα πέντε runbooks που χρειάζεται κάθε project

    1. Deploy. Από πού, με ποια εντολή, πώς ελέγχεις ότι πέτυχε.
    2. Rollback. Πώς γυρνάς στην προηγούμενη έκδοση, και τι γίνεται με τη βάση αν άλλαξε.
    3. Backups και επαναφορά. Πού είναι, πόσο συχνά, πόσο κρατιούνται, και πότε δοκιμάστηκε τελευταία φορά η επαναφορά.
    4. Το site έπεσε. Τι ελέγχεις με τη σειρά: DNS, πιστοποιητικό, server, εφαρμογή, βάση.
    5. Ανανεώσεις. Ποιος πληρώνει το domain, πού γίνεται η ανανέωση, τι θέλει χειροκίνητη κίνηση.

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

    Ένα πρότυπο που μπορείς να αντιγράψεις

    ## Deploy
    1. Merge στο main.
    2. Ο server τραβά και κάνει build μόνος του (~2 λεπτά).
    3. Έλεγχος: https://example.gr/api/health επιστρέφει "ok".
    
    ## Rollback
    1. git revert του τελευταίου merge και νέο deploy.
    2. Αν άλλαξε η βάση: επαναφορά από το backup της νύχτας
       (βλ. «Backups»). Ρώτα πρώτα τον υπεύθυνο του project.
    
    ## Backups
    - Καθημερινά 03:00, 30 ημέρες, στο bucket backups-prod.
    - Τελευταία δοκιμή επαναφοράς: 12/9/2026.
    
    ## Πού είναι τι
    - Hosting: VPS παραγωγής (βλ. πόροι του project)
    - DNS: Cloudflare του πελάτη, όχι δικό μας
    - Κωδικοί: συλλογή του project στο θησαυροφυλάκιο
    Ποτέ κωδικοί μέσα στο runbookΤο runbook λέει «ο κωδικός είναι στη συλλογή του project». Ο ίδιος ο κωδικός μένει στο θησαυροφυλάκιο, όπου κάθε προβολή καταγράφεται.

    Πού να ζει το runbook

    Η απάντηση είναι απλή: δίπλα στους πόρους του project. Όχι σε ένα ξεχωριστό wiki, όχι σε ένα Google Doc με σύνδεσμο που χάνεται. Όταν ανοίγεις το project για να δεις σε ποιον server τρέχει, το runbook πρέπει να είναι μία καρτέλα δίπλα.

    Το Markdown είναι η σωστή μορφή: γράφεται γρήγορα, διαβάζεται παντού, και τα βήματα με αριθμούς και τα κομμάτια κώδικα φαίνονται καθαρά.

    Πώς μένει ενημερωμένο

    Ένα παλιό runbook είναι χειρότερο από κανένα, γιατί σε κάνει να εμπιστεύεσαι κάτι λάθος. Τρεις συνήθειες βοηθούν:

    • Ενημέρωση μετά από κάθε περιστατικό. Αν κάτι δεν ήταν γραμμένο, γράφεται στο post-mortem και μετά στο runbook.
    • Ημερομηνία και όνομα. Φαίνεται ποιος άλλαξε τι και πότε. Ένα runbook που δεν έχει αγγιχτεί δύο χρόνια θέλει έλεγχο.
    • Δοκιμή από άλλον. Μία φορά τον χρόνο, κάποιος που δεν ξέρει το project κάνει deploy μόνο με το runbook. Ό,τι κόλλησε, διορθώνεται.

    Τα συνηθισμένα λάθη

    • Πολύ μεγάλο: κανείς δεν διαβάζει δέκα σελίδες υπό πίεση.
    • Γενικές οδηγίες («κάνε restart στην υπηρεσία») χωρίς την ακριβή εντολή.
    • Υποθέσεις που ξέρει μόνο ο συγγραφέας («από τον γνωστό λογαριασμό»).
    • Κανένα βήμα επιβεβαίωσης: πώς ξέρω ότι το deploy πέτυχε;

    Συχνές ερωτήσεις

    Πόσο μεγάλο πρέπει να είναι ένα runbook;

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

    Ποιος γράφει τα runbooks;

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

    Αξίζει runbook για ένα μικρό WordPress site;

    Ναι, ένα σύντομο: πού φιλοξενείται, πού είναι το DNS, πού τα backups, ποιος πληρώνει το domain. Πέντε γραμμές σε γλιτώνουν από μία ώρα ψαξίματος.

  • Πόσο σου κοστίζει πραγματικά κάθε πελάτης: ο πλήρης οδηγός για agencies

    Πόσο σου κοστίζει πραγματικά κάθε πελάτης: ο πλήρης οδηγός για agencies

    Ρώτα μια μικρή agency πόσο της κοστίζει ο κάθε πελάτης και θα πάρεις μια εκτίμηση. Ρώτα πού βγαίνει η εκτίμηση και θα δεις ένα Excel του περσινού Φεβρουαρίου. Στο μεταξύ μπήκαν ένα API για emails, ένα plugin με ετήσια άδεια, ένας μεγαλύτερος VPS, και το δολάριο άλλαξε. Το «συντήρηση 50€ τον μήνα» μπορεί να είναι ζημιά και να μην το ξέρει κανείς.

    Γιατί χάνεται το κόστος

    • Μικρά ποσά, πολλά. 3€ εδώ, 9$ εκεί, 15€ τον χρόνο για ένα domain. Κανένα δεν τραβά την προσοχή μόνο του.
    • Διαφορετικοί κύκλοι. Μηνιαία, ετήσια, ανά χρήση. Δεν αθροίζονται χωρίς δουλειά.
    • Διαφορετικά νομίσματα. Οι περισσότεροι πάροχοι χρεώνουν σε δολάρια.
    • Κοινόχρηστοι πόροι. Ένας VPS με δώδεκα sites, ένας λογαριασμός email για όλους. Σε ποιον ανήκουν;
    • Κόστη χρήσης. Τα APIs τεχνητής νοημοσύνης ή αποστολής SMS χρεώνουν όσο τα χρησιμοποιείς και αλλάζουν κάθε μήνα.

    Βήμα 1: κάθε πόρος με κόστος, κύκλο και νόμισμα

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

    Πόρος Κόστος Κύκλος Ανά μήνα
    Domain .gr 15 € Ετήσιος 1,25 €
    VPS 12 € Μηνιαίος 12,00 €
    Άδεια plugin 59 $ Ετήσιος ≈ 4,50 €
    Υπηρεσία email 20 $ Μηνιαίος ≈ 18,30 €

    Ο κανόνας είναι απλός: όλα γίνονται ανά μήνα. Ένα ετήσιο ποσό διαιρείται με το 12. Έτσι ο μήνας του Ιανουαρίου, που ανανεώνονται τα μισά domains, δεν δείχνει ψεύτικα ακριβός.

    Βήμα 2: μοίρασε τους κοινόχρηστους πόρους

    Ένας VPS με δέκα sites δεν ανήκει σε κανέναν από αυτά, ανήκει σε όλα. Δύο τρόποι να τον μοιράσεις:

    • Εξίσου: 12€ σε τέσσερα projects κάνει 3€ το καθένα. Απλό και συνήθως αρκετό.
    • Με ποσοστό: το e-shop που τρώει τη μισή μνήμη παίρνει 50%, και τα υπόλοιπα μοιράζονται εξίσου το άλλο μισό.

    Το Devios κάνει το δεύτερο αυτόματα: όσα projects έχουν δηλωμένο ποσοστό το παίρνουν, και τα υπόλοιπα μοιράζονται εξίσου ό,τι περισσεύει. Έτσι ορίζεις ποσοστό μόνο εκεί που έχει νόημα.

    Μην κυνηγάς την τελειότηταΟ στόχος δεν είναι η λογιστική ακρίβεια στο λεπτό. Είναι να φαίνεται ποιος πελάτης είναι κερδοφόρος και ποιος όχι. Μια λογική κατανομή που εφαρμόζεται πάντα είναι καλύτερη από μια τέλεια που δεν γίνεται ποτέ.

    Βήμα 3: ένα νόμισμα, με επίσημες ισοτιμίες

    Αν άλλοι πόροι χρεώνονται σε ευρώ και άλλοι σε δολάρια, τα σύνολα βγαίνουν μόνο με μετατροπή. Χρησιμοποίησε τις ισοτιμίες αναφοράς της Ευρωπαϊκής Κεντρικής Τράπεζας: δημοσιεύονται κάθε εργάσιμη, είναι δημόσιες και τις αναγνωρίζει κάθε λογιστής.

    Όταν λείπει ισοτιμία για κάποιο νόμισμα, το σύνολο δεν πρέπει να το κρύβει. Είναι καλύτερα να δεις «120 € + 15 CHF» παρά ένα σύνολο που ήσυχα αγνόησε τα φράγκα.

    Βήμα 4: τα κόστη χρήσης

    Τα APIs με χρέωση ανά χρήση (τεχνητή νοημοσύνη, SMS, αποστολή email σε όγκο) δεν έχουν σταθερή τιμή. Για αυτά χρειάζεσαι τα πραγματικά νούμερα του μήνα από τον πάροχο. Η σύνδεση με την Anthropic, για παράδειγμα, φέρνει το κόστος χρήσης των τελευταίων 30 ημερών και το βάζει στα κόστη του μήνα, ώστε ένα chatbot πελάτη που ξαφνικά έγινε δημοφιλές να φανεί πριν έρθει ο λογαριασμός.

    Βήμα 5: χρέωση μείον κόστος

    Τώρα έχεις το κόστος ανά project. Βάλε δίπλα τι χρεώνεις τον πελάτη κάθε μήνα για αυτό και βγαίνει το περιθώριο:

    Πελάτης Χρέωση/μήνα Κόστος/μήνα Περιθώριο
    E-shop ρούχων 120 € 38 € 82 € (68%)
    Ιατρείο 40 € 9 € 31 € (78%)
    Εφαρμογή κρατήσεων 90 € 71 € 19 € (21%)

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

    Βήμα 6: κοίτα τον μήνα, και την τάση

    • Σύγκριση με τον προηγούμενο μήνα: ένα κόστος που ανέβηκε 30% θέλει εξήγηση.
    • Οι πιο ακριβοί πόροι: συνήθως τρεις πόροι κάνουν το μισό κόστος. Εκεί αξίζει η διαπραγμάτευση.
    • Οι επερχόμενες ανανεώσεις: μια ετήσια άδεια 400€ τον επόμενο μήνα δεν πρέπει να είναι έκπληξη.
    • Εξαγωγή σε CSV για τον λογιστή, ανά μήνα.

    Τι κερδίζεις

    1. Σωστές τιμές για νέους πελάτες, γιατί ξέρεις τι κοστίζει ένα τυπικό project.
    2. Τεκμηριωμένες αυξήσεις, με νούμερα αντί για «ακρίβυναν όλα».
    3. Λιγότερες σπατάλες: πόροι χωρίς project, άδειες για sites που έκλεισαν, ένα δεύτερο hosting που ξεχάστηκε.
    4. Καθαρή μηνιαία εικόνα που μπορείς να μοιραστείς. Δες τη μηνιαία αναφορά προς τον πελάτη.

    Συχνές ερωτήσεις

    Να βάλω και τις ώρες της ομάδας στο κόστος;

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

    Τι κάνω με πόρους που πληρώνει ο ίδιος ο πελάτης;

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

    Ποια ισοτιμία χρησιμοποιώ για παλιούς μήνες;

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

    Πόσο συχνά να το κοιτάζω;

    Μία φορά τον μήνα, μαζί με τη μηνιαία αναφορά. Αρκεί για να πιάσεις τις αλλαγές πριν γίνουν πρόβλημα.