Технологичният стек на NameOcean: Python, Django, Redis и Proxmox
Накратко: 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 защита са включени.