Η τεχνολογική στοίβα της NameOcean: Python, Django, Redis και Proxmox

Η τεχνολογική στοίβα της NameOcean: Python, Django, Redis και Proxmox

Νοέ 08, 2026 infrastructure python django redis rabbitmq proxmox web hosting devops

Με λίγα λόγια: Η NameOcean είναι μια εφαρμογή Python και Django. Τα δεδομένα αποθηκεύονται στην PostgreSQL, η Redis λειτουργεί ως cache, οι εργασίες παρασκηνίου εκτελούνται σε δύο συστήματα ουρών (RQ πάνω σε Redis για σύντομες εργασίες, Dramatiq πάνω σε RabbitMQ για βαρύτερες ροές), το hosting των πελατών τρέχει σε Proxmox LXC containers στους δικούς μας servers, και μπορείτε να τα διαχειριστείτε όλα από τον browser, από ένα εργαλείο γραμμής εντολών γραμμένο σε Go ή από τον AI βοηθό σας μέσω MCP. Σε αυτό το άρθρο εξετάζουμε κάθε επίπεδο και εξηγούμε γιατί το επιλέξαμε.

Η στοίβα με μια ματιά

  • Γλώσσα και framework: Python με Django, που εξυπηρετείται από Gunicorn πίσω από Nginx.
  • Βάση δεδομένων: PostgreSQL, με αντίγραφα ασφαλείας point-in-time recovery σε ξεχωριστό backup server.
  • Cache: Redis, μέσω django-redis και django-cacheops.
  • Ουρές: RQ (django-rq) πάνω σε Redis, καθώς και Dramatiq πάνω σε RabbitMQ.
  • Hosting: hosts Proxmox VE που εκτελούν κάθε server πελάτη ως LXC container.
  • DNS: οι δικοί μας PowerDNS servers, ns1 έως ns4.
  • Object storage: ένας αυτοφιλοξενούμενος, S3-compatible χώρος αποθήκευσης για αρχεία, αντίγραφα ασφαλείας και εικόνες του blog.
  • Εργαλεία πελάτη: το CLI nameocean (Go) και ο απομακρυσμένος MCP server μας για AI clients, και τα δύο πάνω στο ίδιο δημόσιο API.
  • Deploys: git push και μία μόνο εντολή Fabric. Κανείς δεν επεξεργάζεται κώδικα απευθείας σε server.

Θέλετε να δείτε πώς είναι φτιαγμένος οποιοσδήποτε άλλος ιστότοπος; Ο δωρεάν Website Technology Checker μας εμφανίζει τον πάροχο hosting, το CMS, τη γλώσσα προγραμματισμού και το framework οποιουδήποτε domain. Δοκιμάστε τον στο nameocean.net.

Έχετε μια ιδέα; Βρείτε το ιδανικό domain γι' αυτήν

Η γεννήτρια ονομάτων domain με AI προτείνει διαθέσιμα ονόματα σε εκατοντάδες καταλήξεις. Περιλαμβάνονται δωρεάν SSL, DNS και προστασία Whois.

Γιατί Python και Django

Ένας registrar domains μοιάζει απλός απ' έξω: αναζητάτε ένα όνομα, πληρώνετε, διαχειρίζεστε το DNS. Από κάτω, όμως, κρύβεται πολλή επιχειρησιακή λογική. Υπάρχουν APIs registrars, μεταφορές με τις δικές τους μηχανές καταστάσεων, ανανεώσεις, τιμολόγια σε πολλά νομίσματα, έκδοση πιστοποιητικών SSL, ζώνες DNS, γραμματοκιβώτια και servers hosting, και όλα αυτά σε 21 γλώσσες. Θέλαμε μια στοίβα που να κρατά αυτή τη λογική ευανάγνωστη και να επιτρέπει σε μια μικρή ομάδα να κάνει ασφαλείς εκδόσεις. Το Django μάς το προσφέρει αυτό.

«Batteries included», στην πράξη

Το Django περιλαμβάνει όσα χρειάζεται κάθε registrar από την πρώτη μέρα:

  • ORM και migrations. Τα μοντέλα μας (domains, ζώνες, μεταφορές, λογαριασμοί, servers) αλλάζουν κάθε εβδομάδα. Τα migrations του Django κάνουν κάθε αλλαγή σχήματος ένα ελεγμένο αρχείο στο git, που εκτελείται με τον ίδιο τρόπο τοπικά, στα tests και στην παραγωγή.
  • Το admin. Η υποστήριξη και οι λειτουργίες γίνονται μέσα από το Django admin. Δεν χρειάστηκε να φτιάξουμε εσωτερικό back office. Το προσαρμόζουμε όπου έχει σημασία, όπως στις ασφαλείς διαγραφές και στις ενέργειες χρέωσης.
  • Αυθεντικοποίηση και ασφάλεια. Sessions, προστασία CSRF, hashing κωδικών και ένα προσαρμοσμένο μοντέλο χρήστη με βάση το e-mail είναι ενσωματωμένα. Από πάνω προσθέσαμε έλεγχο ταυτότητας δύο παραγόντων.
  • Διεθνοποίηση. Ο ιστότοπος είναι μεταφρασμένος σε 21 γλώσσες με τα εργαλεία gettext του Django και URLs με πρόθεμα γλώσσας. Τα αγγλικά δεν χρειάζονται πρόθεμα, οι υπόλοιπες γλώσσες παίρνουν /tr/, /de/ κ.ο.κ.
  • Sitemaps, caching, templates. Όλα τυποποιημένα και καλά τεκμηριωμένα.

Μία γλώσσα από τον ιστότοπο μέχρι τους servers

Η Python δεν είναι μόνο η web εφαρμογή. Η ίδια γλώσσα εκτελεί τους workers των ουρών, τα management commands πίσω από τα cron jobs μας, τα scripts που επικοινωνούν με το Proxmox, τα εργαλεία DNS (dnspython) και τα deploy scripts μας (Fabric). Ένας μηχανικός που μπορεί να διαβάσει το view του checkout μπορεί να διαβάσει και τον κώδικα που δημιουργεί ένα container hosting ή ανανεώνει ένα πιστοποιητικό. Για μια μικρή ομάδα, αυτό μετράει περισσότερο από την καθαρή ταχύτητα.

Οι εξαιρέσεις είναι τα εργαλεία που τρέχουν στο δικό σας μηχάνημα. Το να ζητάμε από κάθε χρήστη να εγκαταστήσει Python και ένα σύνολο πακέτων θα ήταν κακή πρώτη εμπειρία, γι' αυτό το CLI είναι γραμμένο σε Go (περισσότερα παρακάτω). Δεν περιέχουν δική τους επιχειρησιακή λογική: όλα περνούν από το ίδιο Django API.

Ένα ώριμο οικοσύστημα

Σχεδόν οτιδήποτε ενσωματώνουμε διαθέτει αξιόπιστη βιβλιοθήκη Python: Stripe για πληρωμές, Django REST framework για το δημόσιο API μας, S3 clients τύπου boto, το Proxmox API, αναφορά σφαλμάτων συμβατή με Sentry. Ο απομακρυσμένος MCP server μας, που επιτρέπει σε AI βοηθούς να διαχειρίζονται domains και DNS για λογαριασμό ενός πελάτη, είναι επίσης μέρος της εφαρμογής Django.

Τι θυσιάζουμε και πώς το αντιμετωπίζουμε

Η Python δεν είναι η ταχύτερη γλώσσα, και ένα σύγχρονο αίτημα Django δεν πρέπει να περιμένει ένα αργό API registrar. Το αντιμετωπίζουμε με τρεις τρόπους: η βαριά ή αργή δουλειά πηγαίνει σε ουρά, οι συχνές αναγνώσεις έρχονται από τη Redis, και η βάση δεδομένων είναι ρυθμισμένη και ευρετηριασμένη για τα μοτίβα ερωτημάτων μας. Στην πράξη, το σημείο συμφόρησης είναι σχεδόν πάντα ένα εξωτερικό API, όχι η Python.

PostgreSQL: η πηγή της αλήθειας

Κάθε domain, ζώνη, τιμολόγιο και server βρίσκεται στην PostgreSQL. Την επιλέξαμε για τις αυστηρές συναλλαγές (τα χρήματα και η κυριότητα ενός domain δεν πρέπει ποτέ να γράφονται μισά), τους πλούσιους τύπους δεδομένων όπως πεδία JSON και διευθύνσεις δικτύου, και την αξιόπιστη διαδικασία αντιγράφων ασφαλείας. Τα αντίγραφα είναι συνεχή: το write-ahead log αποστέλλεται σε ξεχωριστό backup server, ώστε να μπορούμε να επαναφέρουμε τη βάση σε οποιοδήποτε χρονικό σημείο, όχι μόνο στο dump της προηγούμενης νύχτας. Ένας warm standby web server χρησιμοποιεί την ίδια βάση και μπορεί να αναλάβει αν ο κύριος web server παρουσιάσει βλάβη.

Redis: πρώτα η cache

Η Redis είναι η cache μας. Οι αναζητήσεις διαθεσιμότητας και τιμών domains, τα αποδοσμένα τμήματα σελίδων και τα όρια ρυθμού βρίσκονται όλα στη Redis, ώστε ένα επαναλαμβανόμενο αίτημα να μην αγγίζει ποτέ το API του registrar ή τη βάση δεδομένων. Κάθε κλειδί cache περιλαμβάνει τη γλώσσα, επειδή η ίδια σελίδα διαφέρει ανάμεσα σε / και /tr/. Χρησιμοποιούμε επίσης το django-cacheops για να αποθηκεύουμε στην cache querysets του ORM και να τα ακυρώνουμε αυτόματα όταν αλλάζει μια γραμμή.

Η Redis ήταν εύκολη επιλογή: είναι γρήγορη, απλή στη λειτουργία της και έχει εξαιρετική υποστήριξη στο Django. Και αφού υπάρχει ήδη, υποστηρίζει και την ελαφριά ουρά εργασιών μας.

Ουρές: RQ πάνω σε Redis και Dramatiq πάνω σε RabbitMQ

Πολλές ενέργειες που ξεκινά ένας πελάτης δεν πρέπει να μπλοκάρουν τη σελίδα που βλέπει. Η καταχώριση ενός domain στο registry, η έκδοση ενός πιστοποιητικού SSL, η δημιουργία μιας διεύθυνσης email ή η εκκίνηση ενός container hosting χρειάζονται δευτερόλεπτα ή λεπτά. Αυτές οι εργασίες μπαίνουν σε ουρά και τις αναλαμβάνουν workers. Τρέχουμε δύο συστήματα ουρών, το καθένα για τη δουλειά στην οποία είναι καλύτερο.

RQ (django-rq) πάνω σε Redis

Το RQ είναι η απλούστερη ουρά στον κόσμο της Python: μια εργασία είναι μια συνάρτηση Python και τα ορίσματά της, αποθηκευμένα στη Redis. Το χρησιμοποιούμε για τις καθημερινές εργασίες του ιστότοπου:

  • δημιουργία του λογαριασμού του πελάτη στον registrar μετά την εγγραφή,
  • έκδοση και ανανέωση πιστοποιητικών SSL,
  • συγχρονισμό της κατάστασης των domains και των ζωνών DNS,
  • προσθήκη διευθύνσεων email και κανόνων προώθησης,
  • εκκίνηση και διακοπή containers hosting, άνοιγμα ports και ρύθμιση του Nginx για τον server ενός πελάτη,
  • δημιουργία λογαριασμών χρέωσης και αποστολή υπενθυμίσεων ανανέωσης.

Μια διεργασία scheduler εκτελεί περιοδικές εργασίες, και το dashboard του django-rq εμφανίζει τις εργασίες σε αναμονή, σε εκτέλεση και τις αποτυχημένες, απευθείας μέσα στο admin. Στην ανάπτυξη, η ουρά εκτελείται σύγχρονα, οπότε μια εργασία τρέχει άμεσα και τα σφάλματά της εμφανίζονται αμέσως.

Dramatiq πάνω σε RabbitMQ

Για βαρύτερες και μεγαλύτερες ροές χρησιμοποιούμε το Dramatiq με το RabbitMQ ως broker. Το RabbitMQ είναι ένας εξειδικευμένος message broker: τα μηνύματα επιβεβαιώνονται μόνο αφού ένας worker τα ολοκληρώσει, οπότε μια εργασία δεν χάνεται αν ένας worker καταρρεύσει στη μέση. Το Dramatiq προσθέτει από πάνω αυτόματες επαναλήψεις με εκθετική καθυστέρηση, χρονικά όρια, προτεραιότητες και middleware. Αυτό ταιριάζει σε φορτία με πολλά βήματα, μεγάλο όγκο ή εξωτερικές υπηρεσίες που αποτυγχάνουν πού και πού.

Γιατί δύο ουρές;

Το RQ κρατά τις απλές εργασίες απλές: καμία επιπλέον υπηρεσία, εύκολο debugging, και η Redis τρέχει ήδη. Το RabbitMQ και το Dramatiq προσφέρουν ισχυρότερες εγγυήσεις παράδοσης και καλύτερη απόδοση όταν μια εργασία τις χρειάζεται πραγματικά. Επιλέγοντας ανά φορτίο, δεν πληρώνουμε το λειτουργικό κόστος ενός πλήρους message broker για μια εργασία πέντε δευτερολέπτων, ούτε εμπιστευόμαστε μια κρίσιμη ροή στο απλούστερο εργαλείο.

Hosting: Proxmox και LXC containers

Τα πακέτα hosting και vibe hosting μας τρέχουν στους δικούς μας Proxmox VE servers. Κάθε server πελάτη είναι ένα LXC container, όχι μια πλήρης εικονική μηχανή.

  • Τα containers μοιράζονται τον kernel του host, οπότε ξεκινούν σε δευτερόλεπτα και χρησιμοποιούν πολύ λιγότερη μνήμη από τις VMs. Μεγαλύτερο μέρος του υλικού πηγαίνει στην εφαρμογή του πελάτη αντί για ένα δεύτερο λειτουργικό σύστημα.
  • Κάθε container είναι απομονωμένο, με δικό του σύστημα αρχείων, διεργασίες, δίκτυο και όρια πόρων για CPU, μνήμη και δίσκο.
  • Όλα είναι αυτοματοποιημένα μέσω του Proxmox API. Όταν παραγγέλνετε έναν server, το Django στέλνει μια εργασία στην ουρά, και ένας worker δημιουργεί το container από ένα template, ορίζει τα όριά του, συνδέει το δίκτυο, ανοίγει ports και ρυθμίζει το reverse proxy και το SSL για το domain σας.
  • Αλλαγή μεγέθους, αντίγραφα ασφαλείας και επαναφορές είναι κουμπιά στο dashboard που καλούν το ίδιο API. Τα containers μπορούν επίσης να μετακινηθούν μεταξύ hosts Proxmox όταν εξισορροπούμε το φορτίο.

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

DNS, e-mail και αποθήκευση

  • DNS: οι ζώνες εξυπηρετούνται από τους δικούς μας PowerDNS servers (ns1 έως ns4). Οι αλλαγές που κάνετε στο πάνελ DNS γράφονται στον primary και μεταβιβάζονται αυτόματα στους secondaries. Ο primary έχει νυχτερινό αντίγραφο ασφαλείας.
  • E-mail: το email hosting και η δωρεάν προώθηση email τρέχουν στους δικούς μας mail servers, με SPF, DKIM και DMARC ρυθμισμένα για το domain σας.
  • Object storage: ένας αυτοφιλοξενούμενος, S3-compatible χώρος αποθήκευσης φυλάσσει τα ανεβασμένα αρχεία, τα αντίγραφα ασφαλείας και τις εικόνες.

Το CLI nameocean και ο MCP server

Το web dashboard δεν είναι ο μόνος τρόπος πρόσβασης. Ό,τι κάνει περνά από το δημόσιο REST API μας και τον απομακρυσμένο MCP server μας στη διεύθυνση https://nameocean.net/mcp, και το CLI nameocean είναι χτισμένο πάνω σε αυτά.

Το CLI nameocean

Το nameocean είναι ένα ενιαίο στατικό εκτελέσιμο γραμμένο σε Go, για macOS, Linux και Windows σε amd64 και arm64. Επιλέξαμε Go εδώ για τον ακριβώς αντίθετο λόγο από αυτόν για τον οποίο επιλέξαμε Python για τον server: ένα CLI πρέπει να εγκαθίσταται σε δευτερόλεπτα και να τρέχει παντού χωρίς runtime, και η Go μεταγλωττίζεται σε ένα μόνο αρχείο που κάνει ακριβώς αυτό.

  • Συνδεθείτε μία φορά. Το nameocean login ανοίγει τον browser και σας συνδέει με OAuth 2.1 και PKCE. Τα tokens αποθηκεύονται στο keychain του λειτουργικού συστήματος (macOS Keychain, Windows Credential Manager ή libsecret σε Linux) και ανανεώνονται αυτόματα. Σε servers και σε CI, μπορείτε να χρησιμοποιήσετε αντί γι' αυτό ένα API key από το dashboard.
  • Servers και ports. nameocean servers ls, servers info για στοιχεία SSH και git, και ports open / ports close για να εκθέσετε ένα port στο container σας.
  • Domains σε servers. Το nameocean bind example.com <server> ρυθμίζει DNS, SSL και load balancer με μία εντολή.
  • DNS και SSL. dns ls, dns add και dns rm για εγγραφές A, CNAME, MX, TXT και άλλες, καθώς και ssl status και ssl issue --wait.
  • Domains. domains ls και domains check για διαθεσιμότητα και τιμή. Το CLI δεν ξοδεύει ποτέ χρήματα: οι καταχωρίσεις και οι ανανεώσεις παραμένουν στο dashboard.
  • Φτιαγμένο για scripts και AI agents. Κάθε εντολή δέχεται --json και τυπώνει το JSON του API αυτούσιο, ώστε να διοχετεύεται απευθείας σε jq, shell scripts ή σε έναν agent.
  • Μία εντολή για AI clients. Το nameocean mcp install εντοπίζει τα Claude Code, Cursor και OpenCode στο μηχάνημά σας και προσθέτει τον MCP server της NameOcean σε καθένα από αυτά.
nameocean login
nameocean dns add example.com A @ 203.0.113.10 --ttl 5m
nameocean bind example.com 3f9a1c2e
nameocean servers ls --json | jq '.servers[].default_domain'

Εγκαταστήστε το με Homebrew (brew install nameocean/tap/nameocean) ή κατεβάστε ένα αρχείο για την πλατφόρμα σας.

Ο απομακρυσμένος MCP server

Στο vibe hosting, ο AI βοηθός σας επικοινωνεί απευθείας με τη NameOcean. Μία εντολή συνδέει το Claude Code: claude mcp add --transport http nameocean https://nameocean.net/mcp. Συνδέεστε μία φορά στον browser και από εκεί και πέρα μπορείτε να του ζητάτε να κάνει deploy, να ανοίξει ένα port ή να κατευθύνει ένα domain στον server σας χωρίς να αγγίξετε κανένα αρχείο ρυθμίσεων. Τα Cursor, Claude Desktop, claude.ai και άλλοι MCP clients συνδέονται στο ίδιο URL· η τεκμηρίωση MCP δείχνει πώς. Τίποτα δεν τρέχει στο μηχάνημά σας, οπότε δεν υπάρχει τίποτα να εγκαταστήσετε ή να ενημερώσετε.

Παλαιότερα διαθέταμε μια desktop εφαρμογή γι' αυτόν τον σκοπό. Ξεκινούσε έναν τοπικό MCP server και συνδεόταν με κωδικό πρόσβασης, κάτι που αποκλείει η σύνδεση δύο βημάτων, ενώ ο απομακρυσμένος server κάνει την ίδια δουλειά χωρίς εγκατάσταση, οπότε την αποσύραμε τον Νοέμβριο του 2026.

Γιατί και τα δύο;

Διαφορετικοί άνθρωποι δουλεύουν σε διαφορετικά περιβάλλοντα. Το CLI απευθύνεται σε developers που ζουν στο τερματικό και θέλουν εντολές επαναλήψιμες και κατάλληλες για scripts. Ο MCP server απευθύνεται σε όσους προτιμούν να περιγράψουν τι θέλουν και να αφήσουν τον AI βοηθό τους να κάνει τα υπόλοιπα. Επειδή και τα δύο είναι λεπτά επίπεδα πάνω στο ίδιο API, μια λειτουργία που προστίθεται στην εφαρμογή Django φτάνει ταυτόχρονα στο web dashboard, στο CLI και σε κάθε MCP client.

Παρακολούθηση και deploys

Κάθε σφάλμα παραγωγής αναφέρεται σε έναν αυτοφιλοξενούμενο error tracker συμβατό με Sentry. Έλεγχοι διαθεσιμότητας παρακολουθούν κάθε web server, και οι μετρικές καταλήγουν σε μια βάση δεδομένων χρονοσειρών. Τα deploys είναι σκόπιμα βαρετά: κάνουμε push στο git, εκτελούμε μία εντολή Fabric, και αυτή ενημερώνει κάθε web server, εγκαθιστά τα requirements, τρέχει τα migrations, συλλέγει τα static αρχεία, μεταγλωττίζει τις μεταφράσεις και επανεκκινεί την εφαρμογή. Αν ένας server έχει παλιό κώδικα, η λύση είναι ένα ακόμη deploy, ποτέ μια χειροκίνητη αλλαγή.

Σύνοψη

  • Python και Django για ευανάγνωστη επιχειρησιακή λογική, το admin, i18n και μία γλώσσα παντού.
  • PostgreSQL ως η μοναδική πηγή της αλήθειας, με point-in-time recovery.
  • Redis ως cache και ως backend της ουράς εργασιών RQ.
  • RQ για απλές εργασίες παρασκηνίου, Dramatiq πάνω σε RabbitMQ για βαριές ροές που δεν επιτρέπεται να χαθούν.
  • Proxmox LXC containers για γρήγορο, απομονωμένο και οικονομικό hosting.
  • Το CLI nameocean (Go) και ο απομακρυσμένος MCP server ως λεπτά επίπεδα πάνω στο ίδιο API.

Σας ενδιαφέρει τι κινεί έναν άλλο ιστότοπο; Ελέγξτε τον με τον Website Technology Checker μας. Έτοιμοι να φτιάξετε τον δικό σας; Βρείτε ένα domain και φιλοξενήστε το στο hosting της NameOcean.

Έχετε μια ιδέα; Βρείτε το ιδανικό domain γι' αυτήν

Η γεννήτρια ονομάτων domain με AI προτείνει διαθέσιμα ονόματα σε εκατοντάδες καταλήξεις. Περιλαμβάνονται δωρεάν SSL, DNS και προστασία Whois.

Διαβάστε σε άλλες γλώσσες:

BG CS DA DE EN ES FI FR HU IT NB NL PL PT RO RU SV TR UZ ZH-HANS