A NameOcean technológiai háttere: Python, Django, Redis és Proxmox

A NameOcean technológiai háttere: Python, Django, Redis és Proxmox

Nov 08, 2026 infrastructure python django redis rabbitmq proxmox web hosting devops

Röviden: a NameOcean egy Python és Django alapú alkalmazás. Az adatokat PostgreSQL tárolja, a gyorsítótár a Redis, a háttérfeladatok két sorkezelő rendszeren futnak (rövid feladatokhoz RQ Redisen, nehezebb folyamatokhoz Dramatiq RabbitMQ-n), az ügyfelek tárhelyei Proxmox LXC konténerekben futnak saját szervereinken, és mindezt kezelheti böngészőből, egy Go nyelven írt parancssori eszközzel, vagy MCP-n keresztül az AI asszisztensével. Ebben a bejegyzésben rétegről rétegre végigmegyünk a rendszeren, és elmagyarázzuk, miért éppen ezeket választottuk.

A technológiai háttér dióhéjban

  • Nyelv és keretrendszer: Python és Django, Gunicorn kiszolgálással, Nginx mögött.
  • Adatbázis: PostgreSQL, időpontra visszaállítható (point-in-time recovery) mentésekkel egy külön mentési szerverre.
  • Gyorsítótár: Redis, a django-redis és a django-cacheops segítségével.
  • Sorkezelők: RQ (django-rq) Redisen, valamint Dramatiq RabbitMQ-n.
  • Tárhely: Proxmox VE hosztok, amelyeken minden ügyfélszerver LXC konténerként fut.
  • DNS: saját PowerDNS szervereink, ns1-től ns4-ig.
  • Objektumtároló: saját üzemeltetésű, S3-kompatibilis tároló fájlokhoz, mentésekhez és a blog képeihez.
  • Kliensoldali eszközök: a nameocean CLI (Go) és távoli MCP szerverünk AI kliensekhez – mindkettő ugyanarra a nyilvános API-ra épül.
  • Telepítés: git push és egyetlen Fabric parancs. Senki nem szerkeszt kódot közvetlenül a szerveren.

Kíváncsi, hogyan épül fel egy másik weboldal? Ingyenes Website Technology Checker eszközünk bármely domainnél megmutatja a tárhelyszolgáltatót, a CMS-t, a programozási nyelvet és a keretrendszert. Próbálja ki a nameocean.net oldalon.

Van egy ötleted? Találd meg hozzá a tökéletes domaint

AI domainnév-generátorunk szabad neveket javasol több száz végződéssel. Ingyenes SSL, DNS és Whois-adatvédelem benne van.

Miért Python és Django?

Kívülről egy domainregisztrátor egyszerűnek tűnik: rákeres egy névre, kifizeti, kezeli a DNS-t. A felszín alatt azonban rengeteg üzleti logika rejlik. Vannak regisztrátori API-k, saját állapotgéppel rendelkező transzferek, megújítások, több pénznemben kiállított számlák, SSL-tanúsítványok kiadása, DNS zónák, postafiókok és tárhelyszerverek – mindez 21 nyelven. Olyan technológiát kerestünk, amely olvashatóan tartja ezt a logikát, és lehetővé teszi, hogy egy kis csapat is biztonságosan szállítson új funkciókat. A Django pontosan ezt adja.

Tényleg „elemekkel együtt” érkezik

A Django az első naptól kezdve tartalmazza mindazt, amire egy regisztrátornak szüksége van:

  • ORM és migrációk. Modelljeink (domainek, zónák, transzferek, számlák, szerverek) hétről hétre változnak. A Django migrációknak köszönhetően minden sémaváltozás egy átnézett fájl a gitben, amely helyben, a tesztekben és éles környezetben is ugyanúgy fut le.
  • Az admin felület. Az ügyfélszolgálati és üzemeltetési munka a Django adminban zajlik. Nem kellett saját belső back office rendszert építenünk; ott szabjuk testre, ahol számít, például a biztonságos törlésnél és a számlázási műveleteknél.
  • Hitelesítés és biztonság. A munkamenetek, a CSRF-védelem, a jelszó-hashelés és egy egyedi, e-mail alapú felhasználói modell mind beépítettek. Mi ezekre építettük rá a kétlépcsős azonosítást.
  • Többnyelvűség. Az oldal 21 nyelvre van lefordítva a Django gettext eszközeivel és nyelvi előtagos URL-ekkel. Az angolnak nincs előtagja, a többi nyelv /tr/, /de/ és hasonló előtagot kap.
  • Oldaltérképek, gyorsítótárazás, sablonok. Mind szabványos és jól dokumentált.

Egyetlen nyelv a weboldaltól a szerverekig

A Python nem csak a webalkalmazást hajtja. Ugyanezen a nyelven futnak a sorfeldolgozók, a cron feladataink mögötti management parancsok, a Proxmoxszal kommunikáló szkriptek, a DNS eszközök (dnspython) és a telepítési szkriptjeink (Fabric). Az a mérnök, aki el tudja olvasni a fizetési oldal nézetét, azt a kódot is el tudja olvasni, amely egy tárhelykonténert létrehoz vagy egy tanúsítványt megújít. Egy kis csapatnál ez többet ér a nyers sebességnél.

A kivételt azok az eszközök jelentik, amelyek az Ön gépén futnak. Rossz első benyomást keltene, ha minden felhasználónak Pythont és egy csomó csomagot kellene telepítenie, ezért a CLI Go nyelven készült (erről lentebb bővebben). Ezek nem tartalmaznak saját üzleti logikát: minden ugyanazon a Django API-n keresztül megy.

Kiforrott ökoszisztéma

Szinte mindenhez, amivel integrálódunk, létezik megbízható Python könyvtár: Stripe a fizetésekhez, Django REST framework a nyilvános API-nkhoz, boto-stílusú S3 kliensek, a Proxmox API, Sentry-kompatibilis hibajelentés. Távoli MCP szerverünk, amely lehetővé teszi, hogy AI asszisztensek kezeljék az ügyfelek domainjeit és DNS-ét, szintén a Django alkalmazás része.

Mit adunk fel, és hogyan kezeljük?

A Python nem a leggyorsabb nyelv, és egy szinkron Django kérésnek nem szabad egy lassú regisztrátori API-ra várnia. Ezt háromféleképpen kezeljük: a nehéz vagy lassú munka sorba kerül, a gyakori olvasások a Redisből jönnek, az adatbázis pedig a lekérdezési mintáinkhoz van hangolva és indexelve. A gyakorlatban a szűk keresztmetszet szinte mindig egy külső API, nem a Python.

PostgreSQL: az igazság egyetlen forrása

Minden domain, zóna, számla és szerver PostgreSQL-ben él. Azért választottuk, mert szigorú tranzakciókat kínál (a pénz és a domaintulajdon soha nem íródhat ki félig), gazdag adattípusokat, például JSON mezőket és hálózati címeket, valamint megbízható mentési megoldást. A mentés folyamatos: a write-ahead log egy külön mentési szerverre kerül, így az adatbázist bármely időpontra vissza tudjuk állítani, nem csak az előző éjszakai mentésre. Egy melegtartalék webszerver ugyanazt az adatbázist használja, és átveheti a feladatot, ha az elsődleges webszerver kiesik.

Redis: elsősorban gyorsítótár

A Redis a gyorsítótárunk. A domainelérhetőség- és árlekérdezések, a renderelt oldalrészletek és a sebességkorlátok mind a Redisben vannak, így egy ismételt kérés soha nem éri el a regisztrátori API-t vagy az adatbázist. Minden gyorsítótárkulcs tartalmazza a nyelvet, mert ugyanaz az oldal eltér a / és a /tr/ alatt. A django-cacheops segítségével ORM lekérdezéseket is gyorsítótárazunk, és automatikusan érvénytelenítjük őket, ha egy sor megváltozik.

A Redis kézenfekvő választás volt: gyors, egyszerűen üzemeltethető, és kiváló Django támogatással rendelkezik. Mivel már amúgy is fut, a könnyűsúlyú feladatsorunk alapját is ez adja.

Sorkezelők: RQ Redisen és Dramatiq RabbitMQ-n

Sok olyan műveletet indítanak az ügyfelek, amely nem blokkolhatja az éppen megnyitott oldalt. Egy domain regisztrálása a regisztrinél, egy SSL-tanúsítvány kiadása, egy e-mail cím létrehozása vagy egy tárhelykonténer elindítása másodpercekig vagy percekig tart. Ezek a feladatok sorba kerülnek, ahonnan a feldolgozók (workerek) felveszik őket. Két sorkezelő rendszert futtatunk, mindegyiket arra a munkára, amiben a legjobb.

RQ (django-rq) Redisen

Az RQ a Python világ legegyszerűbb sorkezelője: egy feladat egy Python függvény és annak argumentumai, Redisben tárolva. A weboldal mindennapi feladataira használjuk:

  • az ügyfél fiókjának létrehozása a regisztrátornál a regisztráció után,
  • SSL-tanúsítványok kiadása és megújítása,
  • domainállapotok és DNS zónák szinkronizálása,
  • e-mail címek és továbbítási szabályok hozzáadása,
  • tárhelykonténerek indítása és leállítása, portok megnyitása és az Nginx beállítása egy ügyfélszerverhez,
  • számlák létrehozása és megújítási emlékeztetők küldése.

Egy ütemező folyamat futtatja az időszakos feladatokat, a django-rq irányítópult pedig közvetlenül az adminban mutatja a várakozó, futó és sikertelen feladatokat. Fejlesztői környezetben a sor szinkron módon működik, így a feladat azonnal lefut, és a hibái rögtön láthatók.

Dramatiq RabbitMQ-n

A nehezebb és hosszabb folyamatokhoz Dramatiqot használunk, RabbitMQ brokerrel. A RabbitMQ dedikált üzenetbroker: az üzeneteket csak azután nyugtázza, hogy egy feldolgozó befejezte őket, így egy feladat akkor sem vész el, ha a feldolgozó menet közben összeomlik. A Dramatiq ehhez exponenciális visszalépéses automatikus újrapróbálkozást, időkorlátokat, prioritásokat és middleware-eket ad. Ez ideális a sok lépésből álló, nagy volumenű vagy időnként meghibásodó külső szolgáltatásokra épülő munkafolyamatokhoz.

Miért két sorkezelő?

Az RQ egyszerűen tartja az egyszerű feladatokat: nincs szükség extra szolgáltatásra, könnyű a hibakeresés, és a Redis amúgy is fut. A RabbitMQ és a Dramatiq erősebb kézbesítési garanciákat és nagyobb áteresztőképességet nyújt, amikor egy feladatnak valóban szüksége van rá. Azzal, hogy munkafolyamatonként választunk, nem fizetjük meg egy teljes üzenetbroker üzemeltetési költségét egy ötmásodperces feladatért, és egy kritikus folyamatot sem bízunk a legegyszerűbb eszközre.

Tárhely: Proxmox és LXC konténerek

Tárhely és vibe hosting csomagjaink saját Proxmox VE szervereinken futnak. Minden ügyfélszerver egy LXC konténer, nem pedig teljes virtuális gép.

  • A konténerek osztoznak a hoszt kernelén, így másodpercek alatt elindulnak, és jóval kevesebb memóriát használnak, mint a virtuális gépek. A hardver nagyobb része jut az ügyfél alkalmazására egy második operációs rendszer helyett.
  • Minden konténer elszigetelt, saját fájlrendszerrel, folyamatokkal, hálózattal, valamint CPU-, memória- és lemezkorlátokkal.
  • Minden automatizált a Proxmox API-n keresztül. Amikor Ön szervert rendel, a Django egy feladatot küld a sorba, egy feldolgozó pedig sablonból létrehozza a konténert, beállítja a korlátait, csatlakoztatja a hálózatot, megnyitja a portokat, és konfigurálja a reverse proxyt és az SSL-t az Ön domainjéhez.
  • Az átméretezés, a mentés és a visszaállítás egy-egy gomb az irányítópulton, amely ugyanazt az API-t hívja. A konténereket Proxmox hosztok között is át tudjuk mozgatni, amikor a terhelést újraosztjuk.

A saját hardver kiszámítható árakat és teljes kontrollt jelent a hálózat, a mentések és az adatok tárolási helye felett.

DNS, e-mail és tárolás

  • DNS: a zónákat saját PowerDNS szervereink (ns1–ns4) szolgálják ki. A DNS panelen végzett módosítások az elsődleges szerverre íródnak, és automatikusan továbbítódnak a másodlagosakra. Az elsődleges szerverről minden éjjel mentés készül.
  • E-mail: az e-mail tárhely és az ingyenes e-mail továbbítás saját levelezőszervereinken fut, az Ön domainjéhez beállított SPF-fel, DKIM-mel és DMARC-kal.
  • Objektumtároló: egy saját üzemeltetésű, S3-kompatibilis tároló őrzi a feltöltött fájlokat, a mentéseket és a képeket.

A nameocean CLI és az MCP szerver

Nem a webes irányítópult az egyetlen belépési pont. Minden, amit az irányítópult tesz, a nyilvános REST API-nkon és a https://nameocean.net/mcp címen elérhető távoli MCP szerverünkön keresztül történik, és a nameocean CLI is ezekre épül.

A nameocean CLI

A nameocean egyetlen, Go nyelven írt statikus bináris, amely macOS-re, Linuxra és Windowsra is elérhető, amd64 és arm64 architektúrán egyaránt. Itt éppen az ellenkező okból választottuk a Go-t, mint amiért a szerveroldalon a Pythont: egy CLI-nek másodpercek alatt telepíthetőnek és futtatókörnyezet nélkül bárhol futtathatónak kell lennie, a Go pedig egyetlen fájlba fordít, amely pontosan ezt tudja.

  • Egyszeri bejelentkezés. A nameocean login megnyitja a böngészőt, és OAuth 2.1-gyel és PKCE-vel jelentkezteti be. A tokenek az operációs rendszer kulcstartójában tárolódnak (macOS Keychain, Windows Credential Manager vagy Linuxon libsecret), és automatikusan frissülnek. Szervereken és CI környezetben helyette az irányítópultról generált API-kulcs is használható.
  • Szerverek és portok. nameocean servers ls, servers info az SSH és git adatokhoz, valamint ports open / ports close egy port megnyitásához a konténeren.
  • Domainek a szervereken. A nameocean bind example.com <server> egyetlen paranccsal beállítja a DNS-t, az SSL-t és a terheléselosztót.
  • DNS és SSL. dns ls, dns add és dns rm A, CNAME, MX, TXT és egyéb rekordokhoz, valamint ssl status és ssl issue --wait.
  • Domainek. domains ls és domains check az elérhetőség és az ár ellenőrzéséhez. A CLI soha nem költ pénzt: a regisztrációk és megújítások az irányítópulton maradnak.
  • Szkriptekhez és AI ügynökökhöz tervezve. Minden parancs elfogadja a --json kapcsolót, és változatlanul kiírja az API JSON válaszát, így közvetlenül továbbítható a jq, shell szkriptek vagy egy ügynök felé.
  • Egy parancs az AI kliensekhez. A nameocean mcp install megkeresi a gépén a Claude Code, a Cursor és az OpenCode alkalmazást, és mindegyikhez hozzáadja a NameOcean MCP szervert.
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'

Telepítheti Homebrew-val (brew install nameocean/tap/nameocean), vagy letöltheti a platformjának megfelelő archívumot.

A távoli MCP szerver

A vibe hosting esetében az AI asszisztense közvetlenül a NameOceannel kommunikál. A Claude Code csatlakoztatásához egyetlen parancs elég: claude mcp add --transport http nameocean https://nameocean.net/mcp. Egyszer bejelentkezik a böngészőben, és onnantól megkérheti, hogy telepítsen, nyisson meg egy portot vagy irányítson egy domaint a szerverére – anélkül, hogy egyetlen konfigurációs fájlhoz hozzá kellene nyúlnia. A Cursor, a Claude Desktop, a claude.ai és más MCP kliensek ugyanehhez az URL-hez csatlakoznak; az MCP dokumentáció megmutatja, hogyan. Az Ön gépén semmi sem fut, így nincs mit telepíteni vagy frissíteni.

Korábban egy asztali alkalmazást kínáltunk erre a célra. Ez egy helyi MCP szervert indított, és jelszóval jelentkezett be, ami a kétlépcsős bejelentkezés mellett nem lehetséges, a távoli szerver pedig telepítés nélkül ugyanazt a feladatot látja el, ezért 2026 novemberében kivezettük.

Miért mindkettő?

Mindenki máshol dolgozik. A CLI azoknak a fejlesztőknek szól, akik a terminálban élnek, és szkriptelhető, megismételhető parancsokat szeretnének. Az MCP szerver azoknak, akik inkább leírják, mit szeretnének, és a többit az AI asszisztensükre bízzák. Mivel mindkettő vékony réteg ugyanazon API felett, a Django alkalmazáshoz hozzáadott új funkció egyszerre jelenik meg a webes irányítópulton, a CLI-ben és minden MCP kliensben.

Monitorozás és telepítés

Minden éles hibát egy saját üzemeltetésű, Sentry-kompatibilis hibakövető rendszerbe jelentünk. Rendelkezésre állás-ellenőrzések figyelik az összes webszervert, a metrikák pedig egy idősoros adatbázisba kerülnek. A telepítések szándékosan unalmasak: feltöltjük a kódot gitbe, lefuttatunk egy Fabric parancsot, amely frissíti az összes webszervert, telepíti a függőségeket, lefuttatja a migrációkat, összegyűjti a statikus fájlokat, lefordítja a fordításokat és újraindítja az alkalmazást. Ha egy szerveren elavult a kód, a megoldás egy újabb telepítés, soha nem kézi szerkesztés.

Összefoglalás

  • Python és Django az olvasható üzleti logikáért, az admin felületért, a többnyelvűségért és azért, hogy mindenhol egy nyelvet használhassunk.
  • PostgreSQL mint az igazság egyetlen forrása, időpontra visszaállítható mentésekkel.
  • Redis gyorsítótárként és az RQ feladatsor háttereként.
  • RQ az egyszerű háttérfeladatokhoz, Dramatiq RabbitMQ-n a nehéz, el nem veszíthető folyamatokhoz.
  • Proxmox LXC konténerek a gyors, elszigetelt és megfizethető tárhelyért.
  • A nameocean CLI (Go) és a távoli MCP szerver vékony rétegként ugyanazon API felett.

Kíváncsi, mi hajt egy másik weboldalt? Vizsgálja meg a Website Technology Checker eszközünkkel. Készen áll a saját oldala elkészítésére? Keressen domaint, és tegye a NameOcean tárhelyre.

Van egy ötleted? Találd meg hozzá a tökéletes domaint

AI domainnév-generátorunk szabad neveket javasol több száz végződéssel. Ingyenes SSL, DNS és Whois-adatvédelem benne van.

Olvassa el más nyelveken:

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