Loading...

Deploy · 9 dk okuma

AI'ın yazdığı uygulama çalışıyor. Sıradaki adres: internet.

Her zamankinden çok insan AI asistanlarıyla gerçekten işe yarayan yazılımlar üretiyor — yöneticiler, analistler, kendi iş akışını her ürün ekibinden iyi bilen alan uzmanları. Uygulama gece yarısı localhost'ta çalışıyor; duvar ertesi sabah çıkıyor: repo yok, registry yok, sunucu yok — ve yarı zamanlı sistem yöneticisi olmaya hiç niyet yok. Bu rehber tam o durum için döşenen yolu anlatıyor: proje klasöründen, tek CLI ile, TLS'li canlı bir URL'e — üstelik klasik AI-kodu tuzaklarını daha hiçbir şey makinenizden çıkmadan yakalayan kontrollerle.

9 dk okuma Yeni başlayan dostu Güncellendi

AI'ın yazdığı uygulama çalışıyor. Sıradaki adres: internet.

Cuma gecesi uygulaması problemi

Tanıdığımız bir yönetici, bir cuma akşamını AI asistanıyla geçirdi ve gece yarısı olduğunda elinde gerçekten işe yarayan bir iç araç vardı: ekibinin çalışma şekline birebir oturan bir görev takibi — çünkü kendi işini her tedarikçiden iyi biliyor. Uygulama kusursuz çalışıyordu. Kendi bilgisayarında.

Pazartesinin seçenekleri ise hep kötüydü. IT\'den sunucu isteyip haftalarca ticket bekleyecekti. Ya da şirket verisini yabancı bir hobi platformuna taşıyacaktı. Ya da çıplak bir VPS kiralayıp bir gecede TLS\'in, yedeğin, yamaların ve güvenlik duvarının sorumlusu olacaktı. Kod iyiydi. Eksik olan, bir yoldu.

Alışılmış deploy yolları neden uymuyor

Yaygın yolların her biri, bu geliştiricide olmayan bir şeyi varsayar. Git tabanlı deploy bir repo ve branch alışkanlığı varsayar. İmaj tabanlı deploy bir container registry ve onu besleyecek Docker bilgisi varsayar. İkisi de yazılımı gönderen kişinin, en azından yarı zamanlı, bir deployment mühendisi olduğunu varsayar.

AI ile üreten kişinin elindeki şey ise daha basit: içinde çalışan kod olan bir klasör. O hâlde yol tam oradan başlamalı — klasörden. Reponuz varsa Git ile Deploy rehberine bakın; iki yol da aynı platformda buluşur.

Klasör yeterli

Küçük bir CLI kurun, proje dizininde tek komut çalıştırın; gerisini cdnctl çözer: dil ve framework, port, Dockerfile var mı (yoksa üretebilir), hatta projede hangi AI kod asistanlarının kurulu olduğu — çünkü uygulamayı yazan agent, çoğu zaman onu yayınlamaya devam edecek olandır.

cdnctl init — proje kendini tanıttı, elle hiçbir şey ayarlanmadı
$ cdnctl init
Proje    : gorev-takip (node/express, port 3000)
Agent    : claude-code (claude on PATH), cursor
Paket    : ✓ Large (max 5 app)
Karne    : 2 HATA, 2 uyarı — ayrıntı: cdnctl check
Yazıldı  : cdnctl.yaml, AGENTS.md

→ Önce `cdnctl check` hatalarını düzeltin (deploy sonrası site açılmaz).

Kod makinenizden çıkmadan bir karne

AI üretimi uygulamalar canlıda hep aynı birkaç sebepten düşer ve bu sebeplerin hepsi daha deploy edilmeden kaynak kodda görünür. cdnctl check tamamen makinenizde çalışır — hiçbir kod yüklenmez — ve bilinen bir hatayla yayına çıkmayı reddeder. Aşağıdaki dört bulgu varsayım değil: kendi test uygulamamızın gerçekten yazıldığı kusurlar bunlar ve ilk çalıştırmada yakalandılar.

cdnctl check — klasik AI-kodu tuzakları, lokalde yakalandı
$ cdnctl check
[ERROR] bind-localhost (server.js:61)
        Uygulama 127.0.0.1'e bağlanıyor — container içinde dışarıdan erişilemez.
        → 0.0.0.0'a bağlanın (host parametresini kaldırmak yeterli).
[ERROR] secret-in-code (server.js:10)
        Kodda gömülü bir sır (API key/token/parola) görünüyor.
        → --secret KEY=VALUE ile taşıyın; kodda process.env ile okuyun.
[WARNING] sqlite-single-pod
        SQLite, yeniden başlatmada / çoklu replikada veri kaybettirir.
        → Kalıcı disk bağlayın ya da yönetilen veritabanına geçin.
[WARNING] no-healthcheck
        /health yolu yok — platform uygulamanın canlı olduğunu anlayamaz.

Canlı URL\'e tek komut

Düzeltmelerden sonra deploy tek komuttur. Perde arkasında kaynağınız arşivlenir, TLS ile yüklenir, izole bir sandbox içinde container imajına dönüştürülür, hesabınıza ait özel registry alanına itilir ve gerçek bir HTTPS subdomain arkasında ayağa kaldırılır — ama bunların hiçbiri sizin ilginizi istemez. İlk çalıştırma bir dakika kadar sürer; sonraki her sürüm aynı tek komuttur.

cdnctl deploy — kaynaktan canlıya; git yok, registry yok
$ cdnctl deploy
→ kaynak arşivleniyor (gorev-takip)
→ yükleniyor (0.1 MB)
→ build başlatılıyor (Kaniko, izole sandbox)
   build: running
   build: success        (41 sn)
→ uygulama oluşturuluyor
→ subdomain atanıyor
→ ilk deploy başlatılıyor
→ uygulamanın ayağa kalkması bekleniyor

✓ CANLI: https://ca…….cdn.com.tr

Güvenlik ve kalıcılık angarya değil, varsayılan

VPS yolunu korkutucu yapan parçalar burada platformun işidir. TLS sizin için üretilir ve yenilenir. Build\'ler sandbox içinde koşar; imajlar yalnızca sizin hesabınıza ait bir registry alanında durur. Healthcheck sayesinde uygulamanız yanıt vermeyi bıraktığı anda platform onu yeniden başlatır. Karne bir dosya-veritabanı gördüğünde ise sizi kalıcı disklere ve yönetilen MySQL/PostgreSQL\'e yönlendirir — bir pod yeniden başlatması asla verinizi yemez.

Bütün bu akışı AI agent\'ınız da yürütebilir

cdnctl init, AGENTS.md dosyasına (varsa CLAUDE.md\'ye de) bir deploy bölümü yazar; uygulamayı yazan agent bir sonraki oturumda komutları zaten bilir. Agent\'lar için --json çıktı, cdnctl mcp ile bir MCP sunucusu ve — en önemlisi — kendilerine ait deploy-only token vardır: yükleyebilir, build edebilir, yayınlayabilir; DNS\'e, faturalamaya ve hesabınızın geri kalanına ASLA uzanamaz. Panel şifreniz sizde kalır. Ayrıntılar cdnctl yardım sayfalarında. Güvenlik modelinin tamamı — token sınırları, MCP yapılandırması ve test edilmiş limitler — için agent'ınıza güvenle deploy yetkisi verin.

Sizin yolunuz hangisi?

Üç yol, tek platform. Kodunuzu bir repoda tutuyor ve push-ile-deploy istiyorsanız Git ile Deploy. Zaten imaj build edip compose dosyası çalıştırıyorsanız Docker hosting. Elinizdeki şey çalışan bir klasörse — cuma gecesi durumu — bu yol sizin için döşendi: cdnctl\'i kurun, init deyin, deploy deyin, URL\'i ekibinize gönderin.

Sık sorulan sorular

GitHub ya da başka bir git servisi şart mı?

Hayır. Kaynak, proje klasöründen doğrudan arşiv olarak gider; git akışa hiç girmez. İleride repoya geçerseniz git yolu hazır — uygulama aynı kalır.

Docker bilmem gerekiyor mu?

Hayır. Projede Dockerfile yoksa cdnctl init tespit ettiği dile göre makul bir tane üretebilir. Build zaten sizin makinenizde değil, platformda koşar.

Kodum tam olarak nereye gidiyor?

Arşiv TLS ile hesabınıza yüklenir, izole bir sandbox içinde bir kez build edilir ve çıkan imaj yalnızca sizin hesabınızın kullandığı özel registry alanında saklanır. Hiçbir şey paylaşılmaz, hiçbir şey namespace'inizin dışında çalışmaz.

Maliyeti ne?

Container platformu içeren herhangi bir paket — standart paketlerin hepsi içerir. Hesabınızda eksikse cdnctl söyler ve satın alma sayfasını verir; ödeme tarayıcıda biter, cdnctl kaldığı yerden devam eder.

Güncellemeyi nasıl gönderirim?

cdnctl deploy'u yeniden çalıştırın. Yeni imaj build edilir ve devreye alınır; yenisi ayağa kalkana kadar eski sürüm hizmet vermeye devam eder.