NameOcean Altyapısı: Python, Django, Redis ve Proxmox

NameOcean Altyapısı: Python, Django, Redis ve Proxmox

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

Kısa cevap: NameOcean, Python ve Django ile yazılmış bir uygulamadır. Veriler PostgreSQL'de tutulur, önbellek olarak Redis kullanılır, arka plan işleri iki kuyruk sistemiyle yürütülür (kısa işler için Redis üzerinde RQ, daha ağır iş akışları için RabbitMQ üzerinde Dramatiq), müşteri barındırma hizmetleri kendi sunucularımızdaki Proxmox LXC konteynerlerinde çalışır. Tüm bunları tarayıcıdan, Go ile yazılmış bir komut satırı aracından ya da MCP aracılığıyla yapay zekâ asistanınızdan yönetebilirsiniz. Bu yazıda her katmanı tek tek ele alıyor ve neden bu tercihleri yaptığımızı anlatıyoruz.

Bir bakışta altyapımız

  • Dil ve framework: Python ve Django; Nginx arkasında Gunicorn ile sunulur.
  • Veritabanı: PostgreSQL; ayrı bir yedekleme sunucusuna zamana nokta bazlı kurtarma (point-in-time recovery) yedekleriyle.
  • Önbellek: django-redis ve django-cacheops üzerinden kullanılan Redis.
  • Kuyruklar: Redis üzerinde RQ (django-rq) ve RabbitMQ üzerinde Dramatiq.
  • Barındırma: Her müşteri sunucusunu bir LXC konteyneri olarak çalıştıran Proxmox VE sunucuları.
  • DNS: ns1'den ns4'e kadar kendi PowerDNS sunucularımız.
  • Nesne depolama: Dosyalar, yedekler ve blog görselleri için kendi barındırdığımız, S3 uyumlu bir depolama.
  • İstemci araçları: nameocean CLI (Go) ve yapay zekâ istemcileri için uzak MCP sunucumuz; ikisi de aynı genel API'nin üzerine kuruludur.
  • Dağıtımlar: git push ve tek bir Fabric komutu. Kimse sunucu üzerinde kod düzenlemez.

Başka bir sitenin nasıl kurulduğunu merak mı ediyorsunuz? Ücretsiz Web Sitesi Teknoloji Denetleyicimiz, herhangi bir alan adının barındırma sağlayıcısını, CMS'ini, programlama dilini ve framework'ünü gösterir. nameocean.net üzerinde deneyin.

Aklınızda bir fikir mi var? Ona en uygun alan adını bulun

AI alan adı üretecimiz yüzlerce uzantıda müsait isimler önerir. Ücretsiz SSL, DNS ve Whois gizliliği dahildir.

Neden Python ve Django?

Bir alan adı kayıt firması dışarıdan basit görünür: bir isim ararsınız, ödersiniz, DNS'i yönetirsiniz. Ancak perde arkasında çok sayıda iş mantığı vardır. Kayıt kuruluşu API'leri, kendi durum makinelerine sahip transferler, yenilemeler, birden fazla para biriminde faturalar, SSL sertifikası düzenleme, DNS zonları, posta kutuları ve barındırma sunucuları; üstelik hepsi 21 dilde. Bu mantığı okunabilir tutan ve küçük bir ekibin güvenle yayına çıkmasını sağlayan bir altyapı istedik. Django bize tam olarak bunu sunuyor.

Gerçekten "her şey dahil"

Django, her kayıt firmasının ilk günden ihtiyaç duyduğu parçalarla birlikte gelir:

  • ORM ve migration'lar. Modellerimiz (alan adları, zonlar, transferler, faturalar, sunucular) her hafta değişiyor. Django migration'ları sayesinde her şema değişikliği, git'te incelenmiş bir dosya olur ve yerelde, testlerde ve canlı ortamda aynı şekilde çalışır.
  • Yönetim paneli. Destek ve operasyon işleri Django admin üzerinden yürür. Ayrıca bir iç yönetim sistemi geliştirmemiz gerekmedi. Güvenli silme ve faturalama işlemleri gibi önemli noktalarda paneli özelleştiriyoruz.
  • Kimlik doğrulama ve güvenlik. Oturumlar, CSRF koruması, parola hash'leme ve e-posta tabanlı özel kullanıcı modeli hazır geliyor. Bunun üzerine iki adımlı doğrulamayı ekledik.
  • Uluslararasılaştırma. Site, Django'nun gettext araçları ve dil önekli URL'lerle 21 dile çevrilmiştir. İngilizce önek gerektirmez; diğer diller /tr/, /de/ gibi önekler alır.
  • Site haritaları, önbellekleme, şablonlar. Hepsi standart ve hepsi iyi belgelenmiş.

Web sitesinden sunuculara tek bir dil

Python yalnızca web uygulamasında kullanılmıyor. Kuyruk worker'ları, cron işlerimizin arkasındaki yönetim komutları, Proxmox ile konuşan betikler, DNS araçları (dnspython) ve dağıtım betiklerimiz (Fabric) de aynı dille çalışıyor. Ödeme sayfasının view'ını okuyabilen bir mühendis, bir barındırma konteyneri oluşturan ya da bir sertifikayı yenileyen kodu da okuyabilir. Küçük bir ekip için bu, ham hızdan çok daha önemlidir.

İstisna, sizin bilgisayarınızda çalışan araçlardır. Her kullanıcıdan Python ve bir dizi paket kurmasını istemek kötü bir ilk deneyim olurdu; bu yüzden CLI Go ile yazıldı (aşağıda daha ayrıntılı anlatıyoruz). Bu araçların kendilerine ait bir iş mantığı yoktur: her şey aynı Django API'si üzerinden geçer.

Olgun bir ekosistem

Entegre olduğumuz neredeyse her şeyin sağlam bir Python kütüphanesi var: ödemeler için Stripe, genel API'miz için Django REST framework, boto tarzı S3 istemcileri, Proxmox API'si ve Sentry uyumlu hata raporlama. Yapay zekâ asistanlarının bir müşteri adına alan adlarını ve DNS'i yönetmesini sağlayan uzak MCP sunucumuz da Django uygulamasının bir parçasıdır.

Nelerden vazgeçiyoruz ve bunu nasıl telafi ediyoruz?

Python en hızlı dil değildir ve eşzamanlı bir Django isteğinin yavaş bir kayıt kuruluşu API'sini beklememesi gerekir. Bunu üç şekilde çözüyoruz: ağır veya yavaş işler kuyruğa gönderilir, sık okunan veriler Redis'ten gelir ve veritabanı, sorgu kalıplarımıza göre ayarlanmış ve indekslenmiştir. Pratikte darboğaz neredeyse her zaman Python değil, harici bir API olur.

PostgreSQL: tek doğruluk kaynağı

Her alan adı, zon, fatura ve sunucu PostgreSQL'de tutulur. Bu tercihi katı işlem (transaction) garantileri (para ve alan adı sahipliği asla yarım yazılmamalıdır), JSON alanları ve ağ adresleri gibi zengin veri tipleri ve güvenilir yedekleme altyapısı nedeniyle yaptık. Yedekler sürekli alınır: write-ahead log ayrı bir yedekleme sunucusuna gönderilir; böylece veritabanını yalnızca dün geceki döküme değil, herhangi bir zaman noktasına geri yükleyebiliriz. Aynı veritabanını kullanan sıcak yedek (warm standby) bir web sunucusu, ana web sunucusu çökerse devreye girebilir.

Redis: önce önbellek

Redis bizim önbelleğimizdir. Alan adı müsaitlik ve fiyat sorguları, işlenmiş sayfa parçaları ve istek sınırlamaları Redis'te tutulur; böylece tekrarlanan bir istek ne kayıt kuruluşu API'sine ne de veritabanına dokunur. Aynı sayfa / ile /tr/ arasında farklılık gösterdiği için her önbellek anahtarı dil bilgisini de içerir. Ayrıca ORM queryset'lerini önbelleğe almak ve bir satır değiştiğinde bunları otomatik olarak geçersiz kılmak için django-cacheops kullanıyoruz.

Redis kolay bir tercihti: hızlı, çalıştırması basit ve mükemmel bir Django desteğine sahip. Zaten kurulu olduğu için hafif iş kuyruğumuzun da altyapısını oluşturuyor.

Kuyruklar: Redis üzerinde RQ ve RabbitMQ üzerinde Dramatiq

Bir müşterinin başlattığı birçok işlem, baktığı sayfayı bekletmemelidir. Bir alan adını kayıt kuruluşuna kaydetmek, SSL sertifikası düzenlemek, bir posta adresi oluşturmak ya da bir barındırma konteynerini başlatmak saniyeler, hatta dakikalar sürer. Bu işler bir kuyruğa gönderilir ve worker'lar tarafından alınır. Her biri en iyi olduğu iş için kullanılan iki kuyruk sistemi çalıştırıyoruz.

Redis üzerinde RQ (django-rq)

RQ, Python dünyasındaki en basit kuyruktur: bir iş, Redis'te saklanan bir Python fonksiyonu ve argümanlarından ibarettir. Web sitesinin günlük işleri için bunu kullanıyoruz:

  • kayıttan sonra müşterinin kayıt kuruluşundaki hesabını oluşturmak,
  • SSL sertifikalarını düzenlemek ve yenilemek,
  • alan adı durumlarını ve DNS zonlarını senkronize etmek,
  • posta adresleri ve yönlendirme kuralları eklemek,
  • barındırma konteynerlerini başlatıp durdurmak, port açmak ve bir müşteri sunucusu için Nginx'i yapılandırmak,
  • faturaları oluşturmak ve yenileme hatırlatmaları göndermek.

Bir zamanlayıcı süreci periyodik işleri çalıştırır; django-rq paneli ise kuyruktaki, çalışan ve başarısız olan işleri doğrudan yönetim paneli içinde gösterir. Geliştirme ortamında kuyruk eşzamanlı çalışır; böylece iş satır içinde yürütülür ve hataları hemen görünür.

RabbitMQ üzerinde Dramatiq

Daha ağır ve uzun iş akışları için broker olarak RabbitMQ ile birlikte Dramatiq kullanıyoruz. RabbitMQ özel bir mesaj aracısıdır: mesajlar ancak bir worker işi tamamladıktan sonra onaylanır; dolayısıyla bir worker işin ortasında çökerse iş kaybolmaz. Dramatiq bunun üzerine üstel geri çekilmeli (exponential backoff) otomatik yeniden denemeler, zaman sınırları, öncelikler ve middleware ekler. Bu yapı; çok adımlı, yüksek hacimli ya da zaman zaman hata veren harici servislere bağlı iş yüklerine çok uygundur.

Neden iki kuyruk?

RQ, basit işleri basit tutar: ek bir servis yoktur, hata ayıklama kolaydır ve Redis zaten çalışmaktadır. RabbitMQ ve Dramatiq ise bir iş gerçekten ihtiyaç duyduğunda daha güçlü teslim garantileri ve daha yüksek iş hacmi sunar. İş yüküne göre seçim yapmak, beş saniyelik bir iş için tam teşekküllü bir mesaj aracısının operasyonel yükünü taşımamamızı ve kritik bir iş akışını en basit araca emanet etmememizi sağlar.

Barındırma: Proxmox ve LXC konteynerleri

Barındırma ve vibe hosting paketlerimiz kendi Proxmox VE sunucularımızda çalışır. Her müşteri sunucusu tam bir sanal makine değil, bir LXC konteyneridir.

  • Konteynerler ana makinenin çekirdeğini paylaşır; bu sayede saniyeler içinde başlar ve sanal makinelere göre çok daha az bellek kullanır. Donanımın daha büyük kısmı ikinci bir işletim sistemine değil, müşterinin uygulamasına ayrılır.
  • Her konteyner yalıtılmıştır; kendine ait dosya sistemi, süreçleri, ağı ve CPU, bellek ile disk için kaynak sınırları vardır.
  • Her şey Proxmox API'si üzerinden otomatikleştirilmiştir. Bir sunucu sipariş ettiğinizde Django kuyruğa bir iş gönderir; bir worker konteyneri bir şablondan oluşturur, sınırlarını belirler, ağı bağlar, portları açar ve alan adınız için reverse proxy ile SSL'i yapılandırır.
  • Yeniden boyutlandırma, yedekleme ve geri yükleme, aynı API'yi çağıran panel düğmeleridir. Yükü yeniden dengelediğimizde konteynerler Proxmox sunucuları arasında taşınabilir.

Kendi donanımımızı çalıştırmak; öngörülebilir fiyatlar ve ağ, yedekler ile verinin nerede tutulduğu üzerinde tam kontrol anlamına gelir.

DNS, e-posta ve depolama

  • DNS: Zonlar kendi PowerDNS sunucularımız (ns1'den ns4'e) tarafından sunulur. DNS panelinde yaptığınız değişiklikler birincil sunucuya yazılır ve otomatik olarak ikincil sunuculara aktarılır. Birincil sunucu her gece yedeklenir.
  • E-posta: E-posta barındırma ve ücretsiz e-posta yönlendirme, alan adınız için SPF, DKIM ve DMARC ayarları yapılmış kendi posta sunucularımızda çalışır.
  • Nesne depolama: Kendi barındırdığımız, S3 uyumlu bir depolama; yüklenen dosyaları, yedekleri ve görselleri saklar.

nameocean CLI ve MCP sunucusu

Web paneli tek giriş yolu değildir. Panelin yaptığı her şey genel REST API'miz ve https://nameocean.net/mcp adresindeki uzak MCP sunucumuz üzerinden geçer; nameocean CLI de bunların üzerine kuruludur.

nameocean CLI

nameocean, Go ile yazılmış, macOS, Linux ve Windows için hem amd64 hem de arm64 mimarilerinde derlenmiş tek bir statik binary'dir. Go'yu burada, sunucu tarafında Python'u seçmemizin tam tersi bir nedenle tercih ettik: bir CLI saniyeler içinde kurulmalı ve hiçbir çalışma zamanına ihtiyaç duymadan her yerde çalışmalıdır; Go da tam olarak bunu yapan tek bir dosyaya derlenir.

  • Bir kez giriş yapın. nameocean login tarayıcıyı açar ve OAuth 2.1 ile PKCE kullanarak oturumunuzu açar. Token'lar işletim sisteminin anahtar zincirinde (macOS Keychain, Windows Credential Manager veya Linux'ta libsecret) saklanır ve otomatik olarak yenilenir. Sunucularda ve CI ortamlarında bunun yerine panelden alınan bir API anahtarı kullanılabilir.
  • Sunucular ve portlar. nameocean servers ls, SSH ve git bilgileri için servers info, konteynerinizde bir portu dışarıya açmak için ports open / ports close.
  • Sunuculardaki alan adları. nameocean bind example.com <server>, DNS'i, SSL'i ve yük dengeleyiciyi tek komutla kurar.
  • DNS ve SSL. A, CNAME, MX, TXT ve diğer kayıtlar için dns ls, dns add ve dns rm; ayrıca ssl status ve ssl issue --wait.
  • Alan adları. Müsaitlik ve fiyat için domains ls ve domains check. CLI asla para harcamaz: kayıt ve yenileme işlemleri panelde kalır.
  • Betikler ve yapay zekâ ajanları için tasarlandı. Her komut --json parametresini kabul eder ve API'nin JSON çıktısını değiştirmeden yazdırır; böylece çıktı doğrudan jq'ya, kabuk betiklerine veya bir ajana aktarılabilir.
  • Yapay zekâ istemcileri için tek komut. nameocean mcp install, bilgisayarınızdaki Claude Code, Cursor ve OpenCode'u bulur ve NameOcean MCP sunucusunu her birine ekler.
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 ile kurabilir (brew install nameocean/tap/nameocean) ya da platformunuza uygun arşivi indirebilirsiniz.

Uzak MCP sunucusu

Vibe hosting için yapay zekâ asistanınız doğrudan NameOcean ile konuşur. Claude Code'u bağlamak için tek bir komut yeterlidir: claude mcp add --transport http nameocean https://nameocean.net/mcp. Tarayıcıda bir kez giriş yaparsınız; bundan sonra hiçbir yapılandırma dosyasına dokunmadan asistanınızdan dağıtım yapmasını, bir port açmasını ya da bir alan adını sunucunuza yönlendirmesini isteyebilirsiniz. Cursor, Claude Desktop, claude.ai ve diğer MCP istemcileri de aynı URL'ye bağlanır; nasıl yapılacağını MCP belgelerinde bulabilirsiniz. Bilgisayarınızda hiçbir şey çalışmadığı için kurulacak ya da güncellenecek bir şey de yoktur.

Eskiden bu iş için bir masaüstü uygulaması sunuyorduk. Bu uygulama yerel bir MCP sunucusu başlatıyor ve parolayla giriş yapıyordu; bu da iki adımlı girişle uyumlu değildi. Uzak sunucu aynı işi kurulum gerektirmeden yaptığı için uygulamayı Kasım 2026'da kullanımdan kaldırdık.

Neden ikisi birden?

Farklı insanlar farklı ortamlarda çalışır. CLI, terminalde yaşayan ve betiklenebilir, tekrarlanabilir komutlar isteyen geliştiriciler içindir. MCP sunucusu ise ne istediğini anlatıp gerisini yapay zekâ asistanına bırakmayı tercih edenler içindir. Her ikisi de aynı API'nin üzerindeki ince katmanlar olduğundan, Django uygulamasına eklenen bir özellik web paneline, CLI'ya ve tüm MCP istemcilerine aynı anda ulaşır.

İzleme ve dağıtımlar

Canlı ortamdaki her hata, kendi barındırdığımız Sentry uyumlu bir hata izleyicisine raporlanır. Erişilebilirlik (uptime) kontrolleri her web sunucusunu izler ve metrikler bir zaman serisi veritabanına gönderilir. Dağıtımlar bilinçli olarak sıkıcıdır: git'e push ederiz, tek bir Fabric komutu çalıştırırız; bu komut her web sunucusunu günceller, bağımlılıkları kurar, migration'ları çalıştırır, statik dosyaları toplar, çevirileri derler ve uygulamayı yeniden başlatır. Bir sunucuda eski kod kalmışsa çözüm her zaman yeni bir dağıtımdır, asla elle düzenleme değil.

Özet

  • Okunabilir iş mantığı, yönetim paneli, i18n ve her yerde tek bir dil için Python ve Django.
  • Zamana nokta bazlı kurtarma özelliğiyle tek doğruluk kaynağı olarak PostgreSQL.
  • Önbellek ve RQ iş kuyruğunun altyapısı olarak Redis.
  • Basit arka plan işleri için RQ, ağır ve kaybedilmemesi gereken iş akışları için RabbitMQ üzerinde Dramatiq.
  • Hızlı, yalıtılmış ve uygun fiyatlı barındırma için Proxmox LXC konteynerleri.
  • Aynı API'nin üzerinde ince katmanlar olarak nameocean CLI (Go) ve uzak MCP sunucusu.

Başka bir web sitesinin arkasında neyin çalıştığını merak mı ediyorsunuz? Web Sitesi Teknoloji Denetleyicimiz ile kontrol edin. Kendi projenizi kurmaya hazır mısınız? Bir alan adı bulun ve onu NameOcean hosting üzerinde yayına alın.

Aklınızda bir fikir mi var? Ona en uygun alan adını bulun

AI alan adı üretecimiz yüzlerce uzantıda müsait isimler önerir. Ücretsiz SSL, DNS ve Whois gizliliği dahildir.

Diğer dillerde okuyun:

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