Технологичният стек на 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 служи за кеш, а фоновите задачи се изпълняват от две системи за опашки (RQ върху Redis за кратки задачи и Dramatiq върху RabbitMQ за по-тежки процеси). Клиентският хостинг работи в Proxmox LXC контейнери на собствените ни сървъри, а всичко това можете да управлявате от браузъра, от инструмент за командния ред, написан на Go, или чрез своя AI асистент през MCP. В тази статия разглеждаме всеки слой и обясняваме защо сме го избрали.

Стекът с един поглед

  • Език и фреймуърк: Python с Django, обслужван от Gunicorn зад Nginx.
  • База данни: PostgreSQL с архиви за възстановяване към произволен момент (point-in-time recovery) на отделен сървър за архиви.
  • Кеш: Redis, използван чрез django-redis и django-cacheops.
  • Опашки: RQ (django-rq) върху Redis, плюс Dramatiq върху RabbitMQ.
  • Хостинг: Proxmox VE сървъри, на които всеки клиентски сървър работи като LXC контейнер.
  • DNS: собствени PowerDNS сървъри, от ns1 до ns4.
  • Обектно хранилище: самостоятелно хостнато, S3-съвместимо хранилище за файлове, архиви и изображения в блога.
  • Клиентски инструменти: CLI инструментът nameocean (Go) и нашият отдалечен MCP сървър за AI клиенти – и двата върху един и същ публичен API.
  • Внедряване: git push плюс една-единствена команда на Fabric. Никой не редактира код директно на сървъра.

Искате да видите как е изграден друг сайт? Безплатният ни Website Technology Checker показва хостинг доставчика, CMS системата, езика за програмиране и фреймуърка на всеки домейн. Изпробвайте го с nameocean.net.

Имате идея? Намерете перфектния домейн за нея

Нашият AI генератор на домейн имена предлага свободни имена сред стотици разширения. Безплатни SSL, DNS и Whois защита са включени.

Защо Python и Django

Отвън един регистратор на домейни изглежда прост: търсите име, плащате, управлявате DNS. Под повърхността обаче има много бизнес логика. Има API-та на регистратори, трансфери със собствени машини на състоянията, подновявания, фактури в няколко валути, издаване на SSL сертификати, DNS зони, пощенски кутии и хостинг сървъри – и всичко това на 21 езика. Искахме стек, който поддържа тази логика четима и позволява на малък екип да пуска промени безопасно. Django ни дава точно това.

„Батериите са включени“ – наистина

Django предлага от първия ден частите, от които се нуждае всеки регистратор:

  • ORM и миграции. Моделите ни (домейни, зони, трансфери, сметки, сървъри) се променят всяка седмица. Миграциите на Django превръщат всяка промяна в схемата в прегледан файл в git, който се изпълнява по един и същ начин локално, в тестовете и в продукционна среда.
  • Администраторският панел. Работата на поддръжката и операциите се върши в Django admin. Не се наложи да изграждаме отделен вътрешен бек офис. Персонализираме го там, където има значение – например при безопасно изтриване и действия по фактурирането.
  • Удостоверяване и сигурност. Сесиите, защитата от CSRF, хеширането на пароли и персонализиран потребителски модел, базиран на имейл, са вградени. Отгоре добавихме двуфакторно удостоверяване.
  • Интернационализация. Сайтът е преведен на 21 езика с gettext инструментите на Django и URL адреси с езиков префикс. Английският не се нуждае от префикс, а останалите получават /tr/, /de/ и т.н.
  • Sitemaps, кеширане, шаблони. Всичко е стандартно и добре документирано.

Един език от уебсайта до сървърите

Python не е само уеб приложението. Същият език задвижва работниците на опашките, management командите зад нашите cron задачи, скриптовете, които комуникират с Proxmox, DNS инструментите (dnspython) и скриптовете ни за внедряване (Fabric). Инженер, който може да прочете изгледа за плащане, може да прочете и кода, който създава хостинг контейнер или подновява сертификат. За малък екип това е по-важно от чистата скорост.

Изключение правят инструментите, които работят на Вашия компютър. Да накараме всеки потребител да инсталира Python и куп пакети би било лошо първо впечатление, затова CLI е написан на Go (повече за него по-долу). Тези инструменти нямат собствена бизнес логика: всичко минава през същия Django API.

Зряла екосистема

Почти всичко, с което се интегрираме, има солидна Python библиотека: Stripe за плащания, Django REST framework за нашия публичен API, S3 клиенти в стила на boto, API на Proxmox, съвместимо със Sentry докладване на грешки. Нашият отдалечен MCP сървър, който позволява на AI асистенти да управляват домейни и DNS от името на клиента, също е част от Django приложението.

От какво се отказваме и как се справяме

Python не е най-бързият език, а синхронна заявка в Django не бива да чака бавен API на регистратор. Справяме се с това по три начина: тежката или бавна работа отива в опашка, често четените данни идват от Redis, а базата данни е настроена и индексирана според нашите заявки. На практика тясното място почти винаги е външен API, а не Python.

PostgreSQL: източникът на истината

Всеки домейн, зона, фактура и сървър се съхраняват в PostgreSQL. Избрахме го заради строгите транзакции (парите и собствеността върху домейни никога не бива да бъдат записани наполовина), богатите типове данни като JSON полета и мрежови адреси, както и надеждното архивиране. Архивирането е непрекъснато: журналът с предварителен запис (write-ahead log) се изпраща към отделен сървър за архиви, така че можем да възстановим базата данни към всеки момент, а не само към снощния дъмп. Резервен (warm standby) уеб сървър използва същата база данни и може да поеме работата, ако основният уеб сървър откаже.

Redis: кешът на първо място

Redis е нашият кеш. Проверките за наличност и цени на домейни, рендираните фрагменти от страници и ограниченията на честотата на заявките се намират в Redis, така че повторна заявка никога не достига до API на регистратора или до базата данни. Всеки ключ в кеша включва езика, защото една и съща страница се различава между / и /tr/. Използваме и django-cacheops, за да кешираме ORM querysets и да ги инвалидираме автоматично, когато даден ред се промени.

Redis беше лесен избор: бърз е, лесен за поддръжка и има отлична поддръжка в Django. А понеже така или иначе го имаме, той служи и като основа на нашата лека опашка за задачи.

Опашки: RQ върху Redis и Dramatiq върху RabbitMQ

Много от действията, които клиентът стартира, не бива да блокират страницата, която разглежда. Регистрирането на домейн в регистъра, издаването на SSL сертификат, създаването на пощенски адрес или стартирането на хостинг контейнер отнемат секунди или минути. Тези задачи отиват в опашка, откъдето ги поемат работници (workers). Използваме две системи за опашки – всяка за работата, в която е най-добра.

RQ (django-rq) върху Redis

RQ е най-простата опашка в света на Python: задачата е Python функция с аргументите ѝ, съхранена в Redis. Използваме я за ежедневните задачи на уебсайта:

  • създаване на акаунта на клиента при регистратора след регистрация,
  • издаване и подновяване на SSL сертификати,
  • синхронизиране на статуса на домейните и DNS зоните,
  • добавяне на пощенски адреси и правила за пренасочване,
  • стартиране и спиране на хостинг контейнери, отваряне на портове и конфигуриране на Nginx за клиентски сървър,
  • създаване на сметки и изпращане на напомняния за подновяване.

Отделен процес-планировчик изпълнява периодичните задачи, а таблото на django-rq показва чакащите, изпълняваните и неуспешните задачи директно в администраторския панел. В среда за разработка опашката работи синхронно, така че задачата се изпълнява веднага и грешките ѝ се виждат незабавно.

Dramatiq върху RabbitMQ

За по-тежки и по-дълги процеси използваме Dramatiq с RabbitMQ като брокер. RabbitMQ е специализиран брокер на съобщения: съобщенията се потвърждават едва след като работникът ги обработи, така че задачата не се губи, ако работникът се срине по средата. Dramatiq добавя отгоре автоматични повторни опити с експоненциално нарастващо изчакване, времеви ограничения, приоритети и middleware. Това е подходящо за натоварвания с много стъпки, голям обем или външни услуги, които от време на време отказват.

Защо две опашки?

RQ запазва простите задачи прости: без допълнителна услуга, лесно отстраняване на грешки, а Redis и без това работи. RabbitMQ и Dramatiq дават по-силни гаранции за доставка и по-добра пропускателна способност, когато задачата наистина се нуждае от тях. Изборът според натоварването означава, че не плащаме оперативната цена на пълноценен брокер на съобщения за петсекундна задача и не поверяваме критичен процес на най-простия инструмент.

Хостинг: Proxmox и LXC контейнери

Нашите планове за хостинг и vibe хостинг работят на собствени Proxmox VE сървъри. Всеки клиентски сървър е LXC контейнер, а не пълноценна виртуална машина.

  • Контейнерите споделят ядрото на хоста, затова стартират за секунди и използват много по-малко памет от виртуалните машини. По-голяма част от хардуера отива за приложението на клиента, вместо за втора операционна система.
  • Всеки контейнер е изолиран – със собствена файлова система, процеси, мрежа и ограничения на ресурсите за CPU, памет и диск.
  • Всичко е автоматизирано чрез API на Proxmox. Когато поръчате сървър, Django изпраща задача в опашката, а работник създава контейнера от шаблон, задава ограниченията му, свързва мрежата, отваря портовете и конфигурира reverse proxy и SSL за Вашия домейн.
  • Промяната на размера, архивирането и възстановяването са бутони в таблото за управление, които извикват същия API. Контейнерите могат да се преместват и между Proxmox хостове, когато балансираме натоварването.

Собственият хардуер означава предвидими цени и пълен контрол върху мрежата, архивите и мястото, където се съхраняват данните.

DNS, имейл и хранилище

  • DNS: зоните се обслужват от собствените ни PowerDNS сървъри (от ns1 до ns4). Промените, които правите в DNS панела, се записват на основния сървър и автоматично се предават на вторичните. Основният сървър се архивира всяка нощ.
  • Имейл: имейл хостингът и безплатното пренасочване на имейли работят на собствените ни пощенски сървъри с настроени SPF, DKIM и DMARC за Вашия домейн.
  • Обектно хранилище: самостоятелно хостнато, S3-съвместимо хранилище пази качените файлове, архивите и изображенията.

CLI инструментът nameocean и MCP сървърът

Уеб таблото не е единственият начин за достъп. Всичко, което то прави, минава през нашия публичен REST API и отдалечения ни MCP сървър на адрес https://nameocean.net/mcp, а CLI инструментът nameocean е изграден върху тях.

CLI инструментът nameocean

nameocean е един статичен изпълним файл, написан на Go и компилиран за macOS, Linux и Windows, както за amd64, така и за arm64. Тук избрахме Go по обратната причина, поради която избрахме Python за сървъра: CLI инструментът трябва да се инсталира за секунди и да работи навсякъде без среда за изпълнение, а Go се компилира до един файл, който прави точно това.

  • Влизате веднъж. nameocean login отваря браузъра и Ви вписва чрез OAuth 2.1 и PKCE. Токените се съхраняват в хранилището за ключове на операционната система (macOS Keychain, Windows Credential Manager или libsecret в Linux) и се обновяват автоматично. На сървъри и в CI вместо това може да се използва API ключ от таблото.
  • Сървъри и портове. nameocean servers ls, servers info за данни за SSH и git, както и ports open / ports close за отваряне на порт на Вашия контейнер.
  • Домейни на сървъри. nameocean bind example.com <server> настройва DNS, SSL и балансьора на натоварването с една команда.
  • DNS и SSL. dns ls, dns add и dns rm за A, CNAME, MX, TXT и други записи, плюс ssl status и ssl issue --wait.
  • Домейни. domains ls и domains check за наличност и цена. CLI никога не харчи пари: регистрациите и подновяванията остават в таблото.
  • Създаден за скриптове и AI агенти. Всяка команда приема --json и извежда JSON отговора на API без промени, така че може да се подаде директно към jq, shell скриптове или агент.
  • Една команда за AI клиенти. nameocean mcp install намира Claude Code, Cursor и OpenCode на компютъра Ви и добавя MCP сървъра на 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 сървър

При vibe хостинга Вашият AI асистент комуникира директно с NameOcean. Една команда свързва Claude Code: claude mcp add --transport http nameocean https://nameocean.net/mcp. Влизате веднъж в браузъра и оттам нататък можете да го помолите да внедри приложение, да отвори порт или да насочи домейн към сървъра Ви, без да пипате конфигурационен файл. Cursor, Claude Desktop, claude.ai и други MCP клиенти се свързват към същия URL адрес; в документацията за MCP е показано как. Нищо не работи на Вашия компютър, така че няма какво да инсталирате или обновявате.

Преди предлагахме десктоп приложение за целта. То стартираше локален MCP сървър и влизаше с парола, което е несъвместимо с двустъпковото влизане, а отдалеченият сървър върши същата работа без инсталация, затова го спряхме през ноември 2026 г.

Защо и двете?

Различните хора работят на различни места. CLI е за разработчици, които прекарват времето си в терминала и искат команди, които могат да се скриптират и повтарят. MCP сървърът е за хора, които предпочитат да опишат какво искат и да оставят AI асистента да свърши останалото. Тъй като и двата са тънки слоеве върху един и същ API, функция, добавена в Django приложението, достига едновременно до уеб таблото, CLI и всеки MCP клиент.

Мониторинг и внедряване

Всяка грешка в продукционна среда се докладва към самостоятелно хостнат, съвместим със Sentry инструмент за проследяване на грешки. Проверки за достъпност следят всеки уеб сървър, а метриките се записват във времева база данни. Внедряванията нарочно са скучни: пускаме промените в git, изпълняваме една команда на Fabric и тя обновява всеки уеб сървър, инсталира зависимостите, изпълнява миграциите, събира статичните файлове, компилира преводите и рестартира приложението. Ако на някой сървър има остарял код, решението е ново внедряване, а никога ръчна редакция.

Обобщение

  • Python и Django – за четима бизнес логика, администраторския панел, i18n и един език навсякъде.
  • PostgreSQL – като единствен източник на истината, с възстановяване към произволен момент.
  • Redis – като кеш и като основа на опашката за задачи RQ.
  • RQ – за прости фонови задачи, Dramatiq върху RabbitMQ – за тежки процеси, които не бива да се губят.
  • Proxmox LXC контейнери – за бърз, изолиран и достъпен хостинг.
  • CLI инструментът nameocean (Go) и отдалеченият MCP сървър – като тънки слоеве върху един и същ API.

Любопитно Ви е какво задвижва друг уебсайт? Проверете го с нашия Website Technology Checker. Готови сте да изградите свой? Намерете домейн и го хостнете в хостинга на NameOcean.

Имате идея? Намерете перфектния домейн за нея

Нашият AI генератор на домейн имена предлага свободни имена сред стотици разширения. Безплатни SSL, DNS и Whois защита са включени.

Четете на други езици:

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