Loading...

Deploy · 7 min de lectura

cdnctl init → deploy: de la carpeta del proyecto a la URL viva

Este es el compañero práctico de la historia: cada comando que realmente vas a teclear, con su salida real, desde instalar la CLI hasta ver tu app respondiendo en una URL HTTPS viva. Nada de esto requiere git, un registry de contenedores ni experiencia previa con Docker — los únicos requisitos son una carpeta de proyecto que corra en local y un plan con la plataforma de contenedores.

7 min de lectura Apto para principiantes Actualizado

cdnctl init → deploy: de la carpeta del proyecto a la URL viva

Lo que necesitas (60 segundos)

Una sola cosa: un plan de cdn.com.tr que incluya la plataforma de contenedores — todos los planes estándar la incluyen. Instala la CLI con la línea de abajo e inicia sesión. Funciona igual en Linux, macOS y Windows; también hay repos APT/YUM, Homebrew y una imagen Docker si prefieres un gestor de paquetes.

instalación + login
$ curl -fsSL https://cdn.com.tr/downloads/cdnctl/install.sh | sh
$ cdnctl login --email you@company.com

Paso 1 — cdnctl init: deja que la carpeta se presente

Ejecuta init dentro del directorio del proyecto. Detecta el stack y el puerto, escribe un pequeño manifiesto cdnctl.yaml y deja una sección de deploy en AGENTS.md para que tu agente de programación con IA también aprenda el flujo. Además comprueba tu cuenta: si falta la plataforma de contenedores, imprime el enlace de compra exacto — y con --wait simplemente se queda en pausa hasta que tu pago se complete en el navegador, y luego continúa por sí solo.

cdnctl init
$ 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).

Paso 2 — cdnctl check: corrígelo mientras es barato

check es un linter local de desplegabilidad. Los errores (romperían el sitio en producción) detienen el deploy; las advertencias no. Las correcciones suelen ser de una línea: haz bind a 0.0.0.0 en lugar de 127.0.0.1, mueve el token hard-coded a --secret, añade un GET /health que devuelva 200, lee el puerto desde la variable de entorno PORT.

cdnctl check
$ cdnctl check
[ERROR] bind-localhost (server.js:61)
        The app binds to 127.0.0.1 — unreachable inside a container.
        → Bind to 0.0.0.0 (just drop the host argument).
[ERROR] secret-in-code (server.js:10)
        A hard-coded secret (API key/token/password).
        → Move it to --secret KEY=VALUE; read it via process.env.
[WARNING] sqlite-single-pod
        SQLite loses data on restart / multiple replicas.
        → Mount a persistent disk or switch to a managed database.
[WARNING] no-healthcheck
        No /health route — the platform can’t tell your app is alive.

Paso 3 — cdnctl deploy: entra la carpeta, sale la URL

deploy archiva la carpeta (node_modules y .git nunca viajan), la sube, la construye en el sandbox de la plataforma y la publica. Las líneas de progreso significan exactamente lo que dicen; cuando veas LIVE, la URL ya está sirviendo por HTTPS. Las actualizaciones son el mismo comando — el nuevo build reemplaza al viejo solo cuando ya está en pie.

cdnctl deploy
$ cdnctl deploy
→ archiving source (gorev-takip)
→ uploading (0.1 MB)
→ starting build (Kaniko, isolated sandbox)
   build: running
   build: success        (41 s)
→ creating the app
→ assigning a subdomain
→ first deploy
→ waiting for the app to come up

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

¿Aún sin plan? El apretón de manos con el navegador

cdnctl init → deploy: de la carpeta del proyecto a la URL viva — ¿Aún sin plan? El apretón de manos con el navegador
La página de compra, llegando desde cdnctl: el banner confirma el traspaso y el plan recomendado aparece marcado.

Si init no encuentra la plataforma de contenedores en tu cuenta, te envía a la página de compra con contexto — la página muestra un banner confirmando que cdnctl te envió y marca el plan recomendado. Paga en el navegador como de costumbre; la página de confirmación te dice que vuelvas a la terminal, y cdnctl (con --wait, o simplemente ejecutando init de nuevo) retoma el flujo automáticamente. Sin copiar claves, sin configuración.

Límites y la letra pequeña honesta

Las subidas de código fuente están limitadas a 128 MB — de sobra en cuanto node_modules se queda en casa. Un build típico tarda alrededor de un minuto. Si tu app necesita conservar ficheros, pide un disco persistente en el momento del deploy o usa object storage; si usa SQLite, considera la base de datos gestionada — check te seguirá recordando por qué. Y si un build falla, cdnctl imprime el log del build directamente; la causa más común la primera vez es un Dockerfile que copia node_modules desde tu máquina (añádelo a .dockerignore).

Preguntas frecuentes

¿Puedo conectar mi propio dominio?

Sí — la app recibe un subdominio funcional de inmediato, y después puedes conectar tu propio dominio desde el panel o la CLI.

¿Dónde están mis logs?

cdnctl container apps show y la pestaña Salud del panel cubren el estado; los logs de build los imprime cdnctl deploy cuando falla, y los logs de ejecución viven en el panel.

¿Puedo ejecutar más de una app?

Sí; tu plan fija la cuota de apps. Cada carpeta de proyecto se despliega como su propia app con su propia URL.

Mi agente de IA escribe el código — ¿puede desplegar también?

Sí. init ya le enseña los comandos mediante AGENTS.md; dale un token solo-deploy (cdnctl deploy-token create) para que pueda publicar sin tener nunca la contraseña de tu cuenta.