Formas de subir el código
Las cuatro vías por las que tu código llega a Dilohost (git push, tu propio repositorio, zip por el agente y enlace de subida) y cuándo usar cada una.
Tu agente elige solo la mejor vía según lo que pueda hacer: si tiene terminal, si el proyecto ya está en GitHub o si solo puede hablar contigo en el navegador. Todas acaban igual: una versión nueva de tu app, con su historial.
Resumen
| # | Vía | Para quién | Cómo |
|---|---|---|---|
| 1 | Git de Dilohost (recomendada) | Agentes con terminal: Claude Code, Codex, OpenCode, Gemini CLI, Cursor… | deploy.git_remote y git push |
| 2 | Tu propio repositorio | Proyectos que ya están en GitHub, GitLab, Bitbucket, Codeberg u otro git | deploy.connect_repo y deploy.sync |
| 3 | Zip que sube el agente | Agentes que pueden hacer peticiones HTTP pero no usar git | upload con mode="agent" |
| 4 | Enlace de subida para ti | Chats en el navegador, como claude.ai o ChatGPT | upload con mode="page" |
| — | Ficheros sueltos o repositorio público | Webs pequeñas y cambios puntuales | deploy.publish con files o git_url |
1. Git de Dilohost
Cada app tiene su propio repositorio privado en Dilohost. El agente pide una credencial y empuja la rama main:
Publica este proyecto en Dilohost como la app «web» del proyecto «tienda».
git -c http.extraHeader="Authorization: …" push https://git.dilohost.es/tenants/… HEAD:main
- La dirección, la credencial y el comando exacto los da
deploy.git_remote. La credencial vale una hora, solo para el repositorio de esa app, y va en una cabecera: nunca se guarda en la dirección del remoto ni en.git/config. - Con la misma credencial se puede clonar lo publicado (útil para retomar un proyecto desde otro equipo).
- Cada push a
mainpublica una versión nueva. Solo se publicamain: otras ramas o etiquetas no se guardan. - Sube solo lo que cambia, admite ficheros binarios y cualquier tamaño razonable (un repositorio de más de 1 GB ya no admite más pushes).
- Para anular las credenciales que hayas dado,
deploy.git_revoke.
Es la vía más rápida y la que el agente usa por defecto si tiene terminal.
2. Tu propio repositorio
Si tu proyecto ya vive en GitHub, GitLab, Bitbucket o Codeberg, Dilohost lo lee de ahí:
Conecta mi repositorio github.com/miempresa/tienda a la app web de la tienda y publícalo.
- El agente pide la conexión (
deploy.connect_repo, con confirmación) y te da una clave de despliegue de solo lectura. - La añades en tu repositorio (en GitHub: Settings → Deploy keys). Dilohost nunca puede escribir en él.
- Opcionalmente, añades el webhook que te da el agente: así cada push a la rama conectada publica solo.
- El agente publica con
deploy.sync.
Detalles:
- Se publica una rama (por defecto
main; puedes elegir otra al conectar). - El secreto del webhook se muestra una sola vez, al conectar.
deploy.repoenseña la conexión, pero no lo repite. - Para otros servidores git se usa un token de acceso de solo lectura en lugar de la clave (
access_token). - Una app conectada a tu repositorio solo se publica desde él, para que no haya dos versiones del código. Para volver a las otras vías,
deploy.disconnect_repo(con confirmación).
3. Zip que sube el agente
Para agentes que pueden hacer peticiones HTTP pero no usar git:
upload.beginconmode="agent"devuelve un formulario firmado y el comandocurlya preparado.- El agente sube el zip.
upload.commitcierra la subida y empieza la publicación.upload.statusdice cómo va.
4. Enlace de subida para ti
Desde claude.ai o ChatGPT el agente no puede subir ficheros, así que te da un enlace:
Quiero publicar mi proyecto, lo tengo en un zip en el ordenador.
- El agente llama a
upload.beginconmode="page"y te pasa un enlace de dilohost.es. - Lo abres (con tu sesión iniciada), arrastras el zip y se publica solo.
- El agente sigue el progreso con
upload.status.
Reglas del zip
Valen para las vías 3 y 4:
| Regla | Valor |
|---|---|
| Tamaño del zip | hasta 200 MB |
| Tamaño descomprimido | hasta 1 GB |
| Número de ficheros | hasta 20.000 |
| Tamaño de cada fichero | hasta 100 MB |
| Validez del enlace | 15 minutos y una sola subida |
| Subidas abiertas a la vez | 3 por cuenta |
- El zip sustituye el código anterior de la app. El historial se conserva y puedes volver atrás.
- Se respeta el
.gitignore. No incluyasnode_modules,vendorni carpetas de build. - Si todo va dentro de una carpeta raíz, se quita esa carpeta.
- Se descartan
.git,__MACOSXy los ficheros.envcon secretos (se conservan.env.example,.env.sampley.env.dist). Los secretos van en variables. - Se rechazan rutas absolutas, rutas con
..y enlaces simbólicos.
Ficheros sueltos y repositorios públicos
Para una web pequeña o un cambio de texto, el agente puede mandar los ficheros directamente:
Cambia el horario en index.html de la web de la peluquería.
deploy.publishconfiles: un objeto{"ruta": "contenido"}, solo texto, hasta 400 ficheros y 8 MB por publicación. Los ficheros que no mandes se quedan como estaban, salvo que usereplace_all; para borrar alguno,delete.deploy.publishcongit_url: la direcciónhttps://de un repositorio público (y su rama congit_ref). Se publica una copia; para publicar en cada push, usa la vía 2.