NameOceanin teknologiapino: Python, Django, Redis ja Proxmox

NameOceanin teknologiapino: Python, Django, Redis ja Proxmox

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

Lyhyesti: NameOcean on Python- ja Django-sovellus. PostgreSQL säilyttää datan ja Redis toimii välimuistina. Taustatyöt hoitaa kaksi jonojärjestelmää: Redisin päällä toimiva RQ lyhyille töille ja RabbitMQ:n päällä toimiva Dramatiq raskaammille prosessiketjuille. Asiakkaiden hosting pyörii Proxmox LXC -konteissa omilla palvelimillamme. Kaikkea voi hallita selaimella, Go-kielellä kirjoitetulla komentorivityökalulla tai tekoälyavustajalla MCP:n kautta. Tässä artikkelissa käymme läpi jokaisen kerroksen ja kerromme, miksi päädyimme juuri siihen.

Teknologiapino yhdellä silmäyksellä

  • Kieli ja sovelluskehys: Python ja Django, ajettuna Gunicornilla Nginxin takana.
  • Tietokanta: PostgreSQL, jonka varmuuskopiot otetaan erilliselle varmuuskopiopalvelimelle niin, että tietokannan voi palauttaa mihin tahansa ajanhetkeen.
  • Välimuisti: Redis, jota käytetään django-redisin ja django-cacheopsin kautta.
  • Jonot: Redisin päällä toimiva RQ (django-rq) sekä RabbitMQ:n päällä toimiva Dramatiq.
  • Hosting: Proxmox VE -palvelimet, joilla jokainen asiakaspalvelin ajetaan LXC-konttina.
  • DNS: omat PowerDNS-palvelimemme ns1–ns4.
  • Objektitallennus: itse ylläpidetty, S3-yhteensopiva tallennuspalvelu tiedostoille, varmuuskopioille ja blogin kuville.
  • Asiakastyökalut: nameocean-CLI (Go) ja etä-MCP-palvelimemme tekoälyasiakkaille. Molemmat on rakennettu saman julkisen API:n päälle.
  • Julkaisut: git push ja yksi Fabric-komento. Kukaan ei muokkaa koodia suoraan palvelimella.

Haluatteko nähdä, miten jokin toinen sivusto on rakennettu? Ilmainen Website Technology Checker -työkalumme näyttää minkä tahansa verkkotunnuksen hosting-palveluntarjoajan, julkaisujärjestelmän, ohjelmointikielen ja sovelluskehyksen. Kokeilkaa sitä vaikkapa osoitteella nameocean.net.

Onko sinulla idea? Löydä sille täydellinen verkkotunnus

Tekoälypohjainen verkkotunnusgeneraattorimme ehdottaa vapaita nimiä sadoilla päätteillä. Ilmainen SSL, DNS ja Whois-yksityisyys kuuluvat hintaan.

Miksi Python ja Django

Verkkotunnusrekisterinpitäjän toiminta näyttää ulkoapäin yksinkertaiselta: haetaan nimeä, maksetaan ja hallitaan DNS:ää. Pinnan alla on kuitenkin valtava määrä liiketoimintalogiikkaa. On rekisterinpitäjien API-rajapintoja, siirtoja omine tilakoneineen, uusimisia, laskuja useissa valuutoissa, SSL-varmenteiden myöntämistä, DNS-vyöhykkeitä, postilaatikoita ja hosting-palvelimia, ja kaikki tämä 21 kielellä. Halusimme teknologiapinon, jossa logiikka pysyy luettavana ja jolla pieni tiimi voi julkaista muutoksia turvallisesti. Django tarjoaa juuri sen.

Kaikki tarpeellinen mukana – oikeasti

Djangossa on valmiina ne osat, joita jokainen rekisterinpitäjä tarvitsee ensimmäisestä päivästä lähtien:

  • ORM ja migraatiot. Tietomallimme (verkkotunnukset, vyöhykkeet, siirrot, laskut, palvelimet) muuttuvat viikoittain. Django-migraatioiden ansiosta jokainen skeemamuutos on gitissä oleva, katselmoitu tiedosto, joka ajetaan samalla tavalla paikallisesti, testeissä ja tuotannossa.
  • Hallintapaneeli. Asiakastuki ja ylläpito tehdään Djangon admin-paneelissa, joten meidän ei tarvinnut rakentaa omaa sisäistä taustajärjestelmää. Räätälöimme sitä siellä, missä sillä on merkitystä, kuten turvallisissa poistoissa ja laskutustoiminnoissa.
  • Autentikointi ja tietoturva. Istunnot, CSRF-suojaus, salasanojen tiivistys ja oma sähköpostipohjainen käyttäjämalli tulevat valmiina. Niiden päälle lisäsimme kaksivaiheisen tunnistautumisen.
  • Kansainvälistäminen. Sivusto on käännetty 21 kielelle Djangon gettext-työkaluilla ja kielikohtaisilla URL-etuliitteillä. Englanti ei tarvitse etuliitettä, muut kielet saavat etuliitteen /tr/, /de/ ja niin edelleen.
  • Sivustokartat, välimuisti, mallipohjat. Kaikki vakio-ominaisuuksia ja hyvin dokumentoituja.

Yksi kieli verkkosivustolta palvelimiin asti

Python ei ole pelkästään verkkosovelluksen kieli. Samalla kielellä toimivat jonojen työprosessit, cron-ajojemme taustalla olevat hallintakomennot, Proxmoxin kanssa keskustelevat skriptit, DNS-työkalut (dnspython) ja julkaisuskriptimme (Fabric). Insinööri, joka osaa lukea kassasivun näkymän, osaa lukea myös koodin, joka luo hosting-kontin tai uusii varmenteen. Pienelle tiimille tämä on tärkeämpää kuin raaka suorituskyky.

Poikkeuksena ovat työkalut, jotka toimivat teidän koneellanne. Jos jokaista käyttäjää pyydettäisiin asentamaan Python ja joukko paketteja, ensivaikutelma olisi huono, joten CLI on kirjoitettu Go-kielellä (siitä lisää alempana). Työkaluissa ei ole omaa liiketoimintalogiikkaa: kaikki kulkee saman Django-API:n kautta.

Kypsä ekosysteemi

Lähes kaikkeen, mihin integroidumme, löytyy vankka Python-kirjasto: Stripe maksuihin, Django REST framework julkiseen API:imme, boto-tyyppiset S3-asiakkaat, Proxmoxin API ja Sentry-yhteensopiva virheraportointi. Myös etä-MCP-palvelimemme, jonka avulla tekoälyavustajat voivat hallita asiakkaan verkkotunnuksia ja DNS:ää, on osa Django-sovellusta.

Mistä luovumme ja miten sen hoidamme

Python ei ole nopein kieli, eikä synkronisen Django-pyynnön pidä odottaa hidasta rekisterinpitäjän API:a. Hoidamme tämän kolmella tavalla: raskas tai hidas työ siirretään jonoon, usein luettava data haetaan Redisistä ja tietokanta on viritetty ja indeksoitu kyselyjemme mukaan. Käytännössä pullonkaula on lähes aina ulkoinen API, ei Python.

PostgreSQL: totuuden lähde

Jokainen verkkotunnus, vyöhyke, lasku ja palvelin on tallennettu PostgreSQL:ään. Valitsimme sen tiukkojen transaktioiden vuoksi (rahaa ja verkkotunnusten omistajuutta ei saa koskaan kirjoittaa puolittain), monipuolisten tietotyyppien kuten JSON-kenttien ja verkko-osoitteiden vuoksi sekä luotettavien varmuuskopiointimahdollisuuksien takia. Varmuuskopiointi on jatkuvaa: tapahtumaloki (write-ahead log) siirretään erilliselle varmuuskopiopalvelimelle, joten voimme palauttaa tietokannan mihin tahansa ajanhetkeen, emme vain edellisyön vedokseen. Lämmin varapalvelin käyttää samaa tietokantaa ja voi ottaa vastuun, jos ensisijainen verkkopalvelin vikaantuu.

Redis: välimuisti ensin

Redis on välimuistimme. Verkkotunnusten saatavuus- ja hintahaut, renderöidyt sivun osat ja pyyntörajoitukset ovat kaikki Redisissä, joten toistuva pyyntö ei koskaan koske rekisterinpitäjän API:in tai tietokantaan. Jokainen välimuistiavain sisältää kielen, koska sama sivu on erilainen polussa / ja /tr/. Käytämme myös django-cacheopsia ORM-kyselyjoukkojen välimuistiin tallentamiseen ja niiden automaattiseen mitätöintiin, kun rivi muuttuu.

Redis oli helppo valinta: se on nopea, helppo ylläpitää ja sillä on erinomainen Django-tuki. Koska se on jo käytössä, se toimii myös kevyen työjonomme taustana.

Jonot: RQ Redisin päällä ja Dramatiq RabbitMQ:n päällä

Monet asiakkaan käynnistämät toiminnot eivät saa jumittaa sivua, jota hän parhaillaan katsoo. Verkkotunnuksen rekisteröinti rekisterissä, SSL-varmenteen myöntäminen, sähköpostiosoitteen luominen tai hosting-kontin käynnistäminen vievät sekunteja tai minuutteja. Nämä työt menevät jonoon, josta työprosessit poimivat ne. Käytössämme on kaksi jonojärjestelmää, kumpikin siihen työhön, jossa se on parhaimmillaan.

RQ (django-rq) Redisin päällä

RQ on Python-maailman yksinkertaisin jono: työ on Python-funktio argumentteineen, ja se tallennetaan Redisiin. Käytämme sitä sivuston arkipäiväisiin töihin:

  • asiakkaan tilin luominen rekisterinpitäjälle rekisteröitymisen jälkeen,
  • SSL-varmenteiden myöntäminen ja uusiminen,
  • verkkotunnusten tilan ja DNS-vyöhykkeiden synkronointi,
  • sähköpostiosoitteiden ja edelleenlähetyssääntöjen lisääminen,
  • hosting-konttien käynnistäminen ja pysäyttäminen, porttien avaaminen ja Nginxin määrittäminen asiakaspalvelimelle,
  • laskujen luominen ja uusimismuistutusten lähettäminen.

Ajastinprosessi ajaa toistuvat työt, ja django-rq:n hallintanäkymä näyttää jonossa olevat, käynnissä olevat ja epäonnistuneet työt suoraan admin-paneelissa. Kehitysympäristössä jono toimii synkronisesti, joten työ ajetaan heti ja sen virheet näkyvät välittömästi.

Dramatiq RabbitMQ:n päällä

Raskaampiin ja pidempiin prosessiketjuihin käytämme Dramatiqia, jonka viestinvälittäjänä toimii RabbitMQ. RabbitMQ on erillinen viestinvälittäjä: viesti kuitataan vasta, kun työprosessi on saanut sen valmiiksi, joten työ ei katoa, vaikka työprosessi kaatuisi kesken kaiken. Dramatiq tuo päälle automaattiset uudelleenyritykset eksponentiaalisella viiveellä, aikarajat, prioriteetit ja väliohjelmistot. Se sopii työkuormiin, joissa on monta vaihetta, suuret volyymit tai ulkoisia palveluita, jotka silloin tällöin pettävät.

Miksi kaksi jonoa?

RQ pitää yksinkertaiset työt yksinkertaisina: ei ylimääräistä palvelua, helppo virheenjäljitys, ja Redis on jo valmiiksi käynnissä. RabbitMQ ja Dramatiq antavat vahvemmat toimitustakuut ja paremman läpäisykyvyn silloin, kun työ niitä todella tarvitsee. Kun valitsemme työkalun työkuorman mukaan, emme maksa täysimittaisen viestinvälittäjän ylläpitokustannuksia viiden sekunnin työstä, emmekä toisaalta luota kriittistä prosessiketjua yksinkertaisimman työkalun varaan.

Hosting: Proxmox ja LXC-kontit

Hosting- ja vibe hosting -pakettimme toimivat omilla Proxmox VE -palvelimillamme. Jokainen asiakaspalvelin on LXC-kontti, ei täysi virtuaalikone.

  • Kontit jakavat isäntäkoneen ytimen, joten ne käynnistyvät sekunneissa ja käyttävät paljon vähemmän muistia kuin virtuaalikoneet. Suurempi osa laitteistosta jää asiakkaan sovellukselle eikä toiselle käyttöjärjestelmälle.
  • Jokainen kontti on eristetty, ja sillä on oma tiedostojärjestelmä, prosessit, verkko sekä resurssirajat suorittimelle, muistille ja levylle.
  • Kaikki on automatisoitu Proxmoxin API:n kautta. Kun tilaatte palvelimen, Django lähettää työn jonoon, ja työprosessi luo kontin mallipohjasta, asettaa sen rajat, liittää verkon, avaa portit sekä määrittää käänteisen välityspalvelimen ja SSL:n verkkotunnuksellenne.
  • Koon muuttaminen, varmuuskopiot ja palautukset ovat hallintapaneelin painikkeita, jotka kutsuvat samaa API:a. Kontteja voidaan myös siirtää Proxmox-isäntien välillä, kun tasaamme kuormaa.

Oma laitteisto tarkoittaa ennustettavia hintoja ja täyttä hallintaa verkosta, varmuuskopioista ja siitä, missä data sijaitsee.

DNS, sähköposti ja tallennus

  • DNS: vyöhykkeitä palvelevat omat PowerDNS-palvelimemme (ns1–ns4). DNS-paneelissa tekemänne muutokset kirjoitetaan ensisijaiselle palvelimelle ja välitetään automaattisesti toissijaisille. Ensisijainen palvelin varmuuskopioidaan joka yö.
  • Sähköposti: sähköpostipalvelu ja ilmainen sähköpostin edelleenlähetys toimivat omilla postipalvelimillamme, ja verkkotunnuksellenne määritetään SPF, DKIM ja DMARC.
  • Objektitallennus: itse ylläpidetty, S3-yhteensopiva tallennuspalvelu säilyttää ladatut tiedostot, varmuuskopiot ja kuvat.

nameocean-CLI ja MCP-palvelin

Verkon hallintapaneeli ei ole ainoa tapa käyttää palveluamme. Kaikki, mitä se tekee, kulkee julkisen REST API:mme ja osoitteessa https://nameocean.net/mcp toimivan etä-MCP-palvelimemme kautta, ja nameocean-CLI on rakennettu niiden päälle.

nameocean-CLI

nameocean on yksittäinen, staattinen Go-kielellä kirjoitettu binääritiedosto, joka on käännetty macOS:lle, Linuxille ja Windowsille sekä amd64- että arm64-arkkitehtuureille. Valitsimme tähän Go:n päinvastaisesta syystä kuin Pythonin palvelimelle: CLI:n on asennuttava sekunneissa ja toimittava missä tahansa ilman ajonaikaista ympäristöä, ja Go kääntyy yhdeksi tiedostoksi, joka tekee juuri niin.

  • Kirjaudu kerran. nameocean login avaa selaimen ja kirjaa teidät sisään OAuth 2.1:llä ja PKCE:llä. Tunnisteet tallennetaan käyttöjärjestelmän avainnippuun (macOS Keychain, Windows Credential Manager tai Linuxissa libsecret) ja päivitetään automaattisesti. Palvelimilla ja CI-ympäristöissä voi sen sijaan käyttää hallintapaneelista saatavaa API-avainta.
  • Palvelimet ja portit. nameocean servers ls, servers info SSH- ja git-tietoja varten sekä ports open / ports close portin avaamiseen kontissanne.
  • Verkkotunnukset palvelimille. nameocean bind example.com <server> määrittää DNS:n, SSL:n ja kuormantasaajan yhdellä komennolla.
  • DNS ja SSL. dns ls, dns add ja dns rm A-, CNAME-, MX-, TXT- ja muille tietueille sekä ssl status ja ssl issue --wait.
  • Verkkotunnukset. domains ls ja domains check saatavuuden ja hinnan tarkistamiseen. CLI ei koskaan käytä rahaa: rekisteröinnit ja uusimiset tehdään hallintapaneelissa.
  • Tehty skripteille ja tekoälyagenteille. Jokainen komento hyväksyy valitsimen --json ja tulostaa API:n JSONin sellaisenaan, joten sen voi ohjata suoraan jq:lle, shell-skripteihin tai agentille.
  • Yksi komento tekoälyasiakkaille. nameocean mcp install etsii koneeltanne Claude Coden, Cursorin ja OpenCoden ja lisää NameOceanin MCP-palvelimen jokaiseen niistä.
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'

Asentakaa se Homebrew'lla (brew install nameocean/tap/nameocean) tai ladatkaa alustallenne sopiva arkisto.

Etä-MCP-palvelin

Vibe hostingissa tekoälyavustajanne keskustelee suoraan NameOceanin kanssa. Claude Code yhdistetään yhdellä komennolla: claude mcp add --transport http nameocean https://nameocean.net/mcp. Kirjaudutte kerran selaimessa, ja sen jälkeen voitte pyytää avustajaa julkaisemaan sovelluksen, avaamaan portin tai ohjaamaan verkkotunnuksen palvelimellenne koskematta yhteenkään asetustiedostoon. Cursor, Claude Desktop, claude.ai ja muut MCP-asiakkaat yhdistävät samaan URL-osoitteeseen; MCP-dokumentaatiossa kerrotaan miten. Koneellanne ei ajeta mitään, joten mitään ei tarvitse asentaa tai päivittää.

Aiemmin tarjosimme tähän työpöytäsovelluksen. Se käynnisti paikallisen MCP-palvelimen ja kirjautui salasanalla, mikä ei ole mahdollista kaksivaiheisen kirjautumisen kanssa. Etäpalvelin hoitaa saman tehtävän ilman asennusta, joten lopetimme sovelluksen marraskuussa 2026.

Miksi molemmat?

Ihmiset työskentelevät eri tavoin. CLI on kehittäjille, jotka viettävät aikansa päätteessä ja haluavat skriptattavia, toistettavia komentoja. MCP-palvelin on niille, jotka mieluummin kuvailevat haluamansa lopputuloksen ja antavat tekoälyavustajan hoitaa loput. Koska molemmat ovat ohuita kerroksia saman API:n päällä, Django-sovellukseen lisätty ominaisuus tulee kerralla käyttöön verkon hallintapaneelissa, CLI:ssä ja jokaisessa MCP-asiakkaassa.

Valvonta ja julkaisut

Jokainen tuotantovirhe raportoidaan itse ylläpidettyyn, Sentry-yhteensopivaan virheenseurantajärjestelmään. Saatavuustarkistukset valvovat jokaista verkkopalvelinta, ja mittaridata tallennetaan aikasarjatietokantaan. Julkaisut ovat tarkoituksella tylsiä: pushaamme gitiin, ajamme yhden Fabric-komennon, ja se päivittää jokaisen verkkopalvelimen, asentaa riippuvuudet, ajaa migraatiot, kerää staattiset tiedostot, kääntää käännökset ja käynnistää sovelluksen uudelleen. Jos palvelimella on vanhentunutta koodia, korjaus on uusi julkaisu, ei koskaan käsin tehty muokkaus.

Yhteenveto

  • Python ja Django luettavaa liiketoimintalogiikkaa, admin-paneelia, kansainvälistämistä ja yhtä yhteistä kieltä varten.
  • PostgreSQL ainoana totuuden lähteenä, mihin tahansa ajanhetkeen palautuksen mahdollistavin varmuuskopioin.
  • Redis välimuistina ja RQ-työjonon taustana.
  • RQ yksinkertaisille taustatöille, Dramatiq RabbitMQ:n päällä raskaille prosessiketjuille, joista mikään ei saa kadota.
  • Proxmox LXC -kontit nopeaan, eristettyyn ja edulliseen hostingiin.
  • nameocean-CLI (Go) ja etä-MCP-palvelin ohuina kerroksina saman API:n päällä.

Kiinnostaako, mikä pyörittää jotakin toista verkkosivustoa? Tarkistakaa se Website Technology Checker -työkalullamme. Valmiina rakentamaan omanne? Etsikää verkkotunnus ja sijoittakaa se NameOceanin hostingiin.

Onko sinulla idea? Löydä sille täydellinen verkkotunnus

Tekoälypohjainen verkkotunnusgeneraattorimme ehdottaa vapaita nimiä sadoilla päätteillä. Ilmainen SSL, DNS ja Whois-yksityisyys kuuluvat hintaan.

Lue muilla kielillä:

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