Technologie NameOcean: Python, Django, Redis a Proxmox
Stručná odpověď: NameOcean je aplikace postavená na Pythonu a Djangu. Data uchovává PostgreSQL, jako cache slouží Redis a práce na pozadí běží na dvou frontových systémech: RQ na Redisu pro krátké úlohy a Dramatiq na RabbitMQ pro náročnější pipeline. Zákaznický hosting běží v kontejnerech Proxmox LXC na našich vlastních serverech. Vše můžete spravovat z prohlížeče, z nástroje pro příkazovou řádku napsaného v Go nebo prostřednictvím AI asistenta přes MCP. V tomto článku projdeme jednotlivé vrstvy a vysvětlíme, proč jsme zvolili právě je.
Technologie v kostce
- Jazyk a framework: Python s Djangem, obsluhovaný Gunicornem za Nginxem.
- Databáze: PostgreSQL se zálohami umožňujícími obnovu k libovolnému okamžiku (point-in-time recovery) na samostatný záložní server.
- Cache: Redis, využívaný přes django-redis a django-cacheops.
- Fronty: RQ (django-rq) na Redisu a Dramatiq na RabbitMQ.
- Hosting: hostitelské servery Proxmox VE, na kterých běží každý zákaznický server jako LXC kontejner.
- DNS: naše vlastní servery PowerDNS, ns1 až ns4.
- Objektové úložiště: vlastní úložiště kompatibilní s S3 pro soubory, zálohy a obrázky do blogu.
- Klientské nástroje: CLI
nameocean(Go) a náš vzdálený MCP server pro AI klienty, oba postavené nad stejným veřejným API. - Nasazování:
git pusha jediný příkaz Fabric. Nikdo neupravuje kód přímo na serveru.
Chcete zjistit, na čem běží jiný web? Náš bezplatný Website Technology Checker ukáže poskytovatele hostingu, CMS, programovací jazyk a framework libovolné domény. Vyzkoušejte ho na nameocean.net.
Máte nápad? Najděte pro něj dokonalou doménu
Náš AI generátor doménových jmen navrhuje volná jména napříč stovkami koncovek. SSL, DNS a ochrana soukromí Whois zdarma v ceně.
Proč Python a Django
Registrátor domén vypadá zvenčí jednoduše: vyhledáte název, zaplatíte a spravujete DNS. Pod povrchem se ale skrývá spousta obchodní logiky. Jsou tu API registrátorů, převody domén s vlastními stavovými automaty, prodlužování, faktury v několika měnách, vydávání SSL certifikátů, DNS zóny, e-mailové schránky a hostingové servery, a to vše ve 21 jazycích. Chtěli jsme technologie, díky nimž zůstane tato logika čitelná a malý tým bude moci bezpečně vydávat nové verze. Právě to nám Django dává.
„Baterie v balení“, a to doopravdy
Django obsahuje části, které každý registrátor potřebuje od prvního dne:
- ORM a migrace. Naše modely (domény, zóny, převody, faktury, servery) se mění každý týden. Díky migracím Djanga je každá změna schématu zrevidovaným souborem v gitu, který se spouští stejně lokálně, v testech i v produkci.
- Administrace. Podpora i provoz pracují v administraci Djanga. Nemuseli jsme stavět vlastní interní back office. Upravujeme ji tam, kde na tom záleží, například u bezpečného mazání a fakturačních akcí.
- Autentizace a zabezpečení. Relace, ochrana proti CSRF, hashování hesel a vlastní uživatelský model založený na e-mailu jsou vestavěné. Navíc jsme přidali dvoufaktorové ověření.
- Internacionalizace. Web je přeložen do 21 jazyků pomocí nástrojů gettext v Djangu a URL s jazykovou předponou. Angličtina předponu nepotřebuje, ostatní jazyky mají
/tr/,/de/a tak dále. - Sitemapy, cache, šablony. Vše standardní a dobře zdokumentované.
Jeden jazyk od webu až po servery
Python nepohání jen webovou aplikaci. Ve stejném jazyce běží workery front, management příkazy za našimi cron úlohami, skripty komunikující s Proxmoxem, nástroje pro DNS (dnspython) i naše skripty pro nasazování (Fabric). Inženýr, který přečte kód pokladny, přečte i kód, který vytváří hostingový kontejner nebo obnovuje certifikát. Pro malý tým je to důležitější než hrubá rychlost.
Výjimkou jsou nástroje, které běží na vašem počítači. Chtít po každém uživateli, aby si nainstaloval Python a sadu balíčků, by byl špatný první dojem, a proto je CLI napsané v Go (více níže). Nemá žádnou vlastní obchodní logiku: vše jde přes stejné API v Djangu.
Vyzrálý ekosystém
Téměř vše, s čím se integrujeme, má kvalitní knihovnu pro Python: Stripe pro platby, Django REST framework pro naše veřejné API, S3 klienty ve stylu boto, API Proxmoxu, hlášení chyb kompatibilní se Sentry. I náš vzdálený MCP server, přes který mohou AI asistenti spravovat domény a DNS zákazníka, je součástí aplikace v Djangu.
Čeho se vzdáváme a jak to řešíme
Python není nejrychlejší jazyk a synchronní požadavek v Djangu by neměl čekat na pomalé API registrátora. Řešíme to třemi způsoby: náročná nebo pomalá práce jde do fronty, často čtená data se berou z Redisu a databáze je vyladěná a zaindexovaná pro naše typy dotazů. V praxi je úzkým hrdlem téměř vždy externí API, nikoli Python.
PostgreSQL: jediný zdroj pravdy
Každá doména, zóna, faktura i server je uložena v PostgreSQL. Zvolili jsme ho kvůli striktním transakcím (peníze a vlastnictví domén nesmí být nikdy zapsány jen napůl), bohatým datovým typům, jako jsou JSON pole a síťové adresy, a spolehlivému zálohování. Zálohy probíhají nepřetržitě: write-ahead log se odesílá na samostatný záložní server, takže databázi můžeme obnovit k libovolnému okamžiku, nejen k poslednímu nočnímu dumpu. Záložní webový server v pohotovosti používá stejnou databázi a může převzít provoz, pokud primární webový server selže.
Redis: především cache
Redis je naše cache. Dostupnost domén a jejich ceny, vykreslené fragmenty stránek i limity požadavků jsou uloženy v Redisu, takže opakovaný požadavek se nikdy nedotkne API registrátora ani databáze. Každý klíč v cache obsahuje jazyk, protože stejná stránka se liší mezi / a /tr/. Používáme také django-cacheops, který ukládá do cache querysety ORM a automaticky je zneplatňuje, když se změní řádek.
Redis byla snadná volba: je rychlý, jednoduše se provozuje a má výbornou podporu v Djangu. A protože už ho máme, slouží i jako základ naší odlehčené fronty úloh.
Fronty: RQ na Redisu a Dramatiq na RabbitMQ
Mnoho akcí, které zákazník spustí, by nemělo blokovat stránku, na kterou se právě dívá. Registrace domény u registru, vydání SSL certifikátu, vytvoření e-mailové adresy nebo spuštění hostingového kontejneru trvá sekundy až minuty. Tyto úlohy jdou do fronty a zpracovávají je workery. Provozujeme dva frontové systémy, každý pro práci, na kterou se hodí nejlépe.
RQ (django-rq) na Redisu
RQ je nejjednodušší fronta ve světě Pythonu: úloha je funkce v Pythonu a její argumenty uložené v Redisu. Používáme ji pro každodenní úlohy webu:
- vytvoření účtu zákazníka u registrátora po registraci,
- vydávání a obnovování SSL certifikátů,
- synchronizaci stavu domén a DNS zón,
- přidávání e-mailových adres a pravidel přesměrování,
- spouštění a zastavování hostingových kontejnerů, otevírání portů a konfiguraci Nginxu pro zákaznický server,
- vytváření faktur a odesílání připomínek prodloužení.
Plánovací proces spouští periodické úlohy a dashboard django-rq zobrazuje úlohy ve frontě, běžící i neúspěšné přímo v administraci. Při vývoji běží fronta synchronně, takže se úloha provede okamžitě a její chyby se hned zobrazí.
Dramatiq na RabbitMQ
Pro náročnější a delší pipeline používáme Dramatiq s RabbitMQ jako brokerem. RabbitMQ je specializovaný message broker: zprávy se potvrzují až poté, co je worker dokončí, takže úloha se neztratí, ani když worker uprostřed spadne. Dramatiq k tomu přidává automatické opakování s exponenciálním odstupem, časové limity, priority a middleware. To se hodí pro úlohy s mnoha kroky, velkým objemem nebo externími službami, které občas selžou.
Proč dvě fronty?
RQ udržuje jednoduché úlohy jednoduché: žádná další služba, snadné ladění a Redis už stejně běží. RabbitMQ s Dramatiqem poskytují silnější záruky doručení a vyšší propustnost tam, kde je úloha skutečně potřebuje. Díky volbě podle typu zátěže neplatíme provozní náklady plnohodnotného message brokeru za pětisekundovou úlohu a zároveň nesvěřujeme kritickou pipeline nejjednoduššímu nástroji.
Hosting: Proxmox a LXC kontejnery
Naše tarify hostingu a vibe hostingu běží na našich vlastních serverech Proxmox VE. Každý zákaznický server je LXC kontejner, nikoli plnohodnotný virtuální stroj.
- Kontejnery sdílejí jádro hostitele, takže se spouštějí během několika sekund a spotřebují mnohem méně paměti než virtuální stroje. Větší část hardwaru tak připadne aplikaci zákazníka místo druhého operačního systému.
- Každý kontejner je izolovaný, s vlastním souborovým systémem, procesy, sítí a limity prostředků pro CPU, paměť a disk.
- Vše je automatizované přes API Proxmoxu. Když si objednáte server, Django odešle úlohu do fronty a worker vytvoří kontejner ze šablony, nastaví jeho limity, připojí síť, otevře porty a nakonfiguruje reverzní proxy a SSL pro vaši doménu.
- Změna velikosti, zálohy a obnovy jsou tlačítka v dashboardu, která volají stejné API. Kontejnery lze také přesouvat mezi hostiteli Proxmox, když vyvažujeme zátěž.
Provoz vlastního hardwaru znamená předvídatelné ceny a plnou kontrolu nad sítí, zálohami i tím, kde jsou data uložena.
DNS, e-mail a úložiště
- DNS: zóny obsluhují naše vlastní servery PowerDNS (ns1 až ns4). Změny, které provedete v DNS panelu, se zapíší na primární server a automaticky se předají sekundárním. Primární server se zálohuje každou noc.
- E-mail: e-mailový hosting a bezplatné přesměrování e-mailů běží na našich vlastních poštovních serverech s nastaveným SPF, DKIM a DMARC pro vaši doménu.
- Objektové úložiště: vlastní úložiště kompatibilní s S3 uchovává nahrané soubory, zálohy a obrázky.
CLI nameocean a MCP server
Webový dashboard není jedinou cestou. Vše, co umí, prochází naším veřejným REST API a vzdáleným MCP serverem na https://nameocean.net/mcp a CLI nameocean je postavené právě nad nimi.
CLI nameocean
nameocean je jediný statický binární soubor napsaný v Go, sestavený pro macOS, Linux a Windows v architekturách amd64 i arm64. Go jsme zde zvolili z opačného důvodu, než proč jsme pro server zvolili Python: CLI se musí nainstalovat během několika sekund a běžet kdekoli bez runtime, a Go se zkompiluje do jednoho souboru, který přesně tohle splňuje.
- Jedno přihlášení.
nameocean loginotevře prohlížeč a přihlásí vás pomocí OAuth 2.1 s PKCE. Tokeny se ukládají do klíčenky operačního systému (macOS Keychain, Windows Credential Manager nebo libsecret na Linuxu) a automaticky se obnovují. Na serverech a v CI můžete místo toho použít API klíč z dashboardu. - Servery a porty.
nameocean servers ls,servers infopro údaje o SSH a gitu aports open/ports closepro zpřístupnění portu vašeho kontejneru. - Domény na serverech.
nameocean bind example.com <server>nastaví DNS, SSL i load balancer jediným příkazem. - DNS a SSL.
dns ls,dns addadns rmpro záznamy A, CNAME, MX, TXT a další, k tomussl statusassl issue --wait. - Domény.
domains lsadomains checkpro ověření dostupnosti a ceny. CLI nikdy neutrácí peníze: registrace a prodloužení zůstávají v dashboardu. - Navrženo pro skripty a AI agenty. Každý příkaz přijímá
--jsona vypíše JSON z API beze změny, takže ho můžete rovnou předat dojq, shellových skriptů nebo agentovi. - Jeden příkaz pro AI klienty.
nameocean mcp installnajde ve vašem počítači Claude Code, Cursor a OpenCode a do každého z nich přidá 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'
Nainstalujte ho přes Homebrew (brew install nameocean/tap/nameocean) nebo si stáhněte archiv pro svou platformu.
Vzdálený MCP server
U vibe hostingu komunikuje váš AI asistent s NameOcean přímo. Claude Code připojíte jediným příkazem: claude mcp add --transport http nameocean https://nameocean.net/mcp. Jednou se přihlásíte v prohlížeči a od té doby ho můžete požádat o nasazení, otevření portu nebo nasměrování domény na váš server, aniž byste sáhli na jediný konfigurační soubor. Cursor, Claude Desktop, claude.ai a další MCP klienti se připojují ke stejné URL; postup najdete v dokumentaci MCP. Na vašem počítači nic neběží, takže není co instalovat ani aktualizovat.
Dříve jsme k tomu nabízeli desktopovou aplikaci. Spouštěla lokální MCP server a přihlašovala se heslem, což dvoufázové přihlášení vylučuje. Vzdálený server zvládne totéž bez instalace, a proto jsme aplikaci v listopadu 2026 ukončili.
Proč obojí?
Každý pracuje jinde. CLI je pro vývojáře, kteří žijí v terminálu a chtějí skriptovatelné, opakovatelné příkazy. MCP server je pro ty, kteří raději popíšou, co chtějí, a zbytek nechají na AI asistentovi. Protože jde v obou případech o tenké vrstvy nad stejným API, funkce přidaná do aplikace v Djangu se okamžitě dostane do webového dashboardu, do CLI i ke všem MCP klientům.
Monitoring a nasazování
Každá chyba v produkci se hlásí do vlastního systému pro sledování chyb kompatibilního se Sentry. Kontroly dostupnosti hlídají každý webový server a metriky putují do databáze časových řad. Nasazování je záměrně nudné: pushneme do gitu, spustíme jeden příkaz Fabric a ten aktualizuje všechny webové servery, nainstaluje závislosti, spustí migrace, shromáždí statické soubory, zkompiluje překlady a restartuje aplikaci. Pokud má některý server zastaralý kód, řešením je další nasazení, nikdy ruční úprava.
Shrnutí
- Python a Django pro čitelnou obchodní logiku, administraci, i18n a jeden jazyk všude.
- PostgreSQL jako jediný zdroj pravdy s obnovou k libovolnému okamžiku.
- Redis jako cache a jako backend fronty úloh RQ.
- RQ pro jednoduché úlohy na pozadí, Dramatiq na RabbitMQ pro náročné pipeline, které se nesmí ztratit.
- Kontejnery Proxmox LXC pro rychlý, izolovaný a cenově dostupný hosting.
- CLI nameocean (Go) a vzdálený MCP server jako tenké vrstvy nad stejným API.
Zajímá vás, co pohání jiný web? Prověřte ho naším nástrojem Website Technology Checker. Chcete postavit vlastní? Najděte si doménu a umístěte ji na hosting NameOcean.
Máte nápad? Najděte pro něj dokonalou doménu
Náš AI generátor doménových jmen navrhuje volná jména napříč stovkami koncovek. SSL, DNS a ochrana soukromí Whois zdarma v ceně.