Desplegar una app de Node.js o Python con Git
Guía para desplegar una app de Node.js o Python desde GitHub o GitLab: repositorio, clave de despliegue, variables, compilación y despliegue automático.
Para desplegar una app de Node.js o Python con Git, sube tu código a un repositorio, dale a tu hosting el enlace del repositorio (y una clave de despliegue de solo lectura si es privado), indica los comandos de compilación e inicio, añade tus secretos como variables de entorno y pulsa desplegar. Después, un webhook puede publicar solo cada push a la rama que elijas. Esta guía cubre cada pieza y los errores que rompen los primeros despliegues.
Qué significa «desplegar con Git»
En lugar de copiar archivos a mano, el servidor descarga tu código desde un repositorio. Cada versión es un commit, así que ves qué cambió y puedes volver atrás. El flujo habitual:
- Haces push a una rama.
- El hosting descarga ese commit.
- Instala las dependencias y ejecuta un paso de compilación si lo tienes.
- Inicia (o reinicia) tu app.
Paso 1: Prepara el repositorio
Antes del primer despliegue, comprueba que el repo contiene lo que el hosting necesita.
Node.js
- Un
package.jsoncon las dependencias y un scriptstart. - Un archivo de bloqueo (
package-lock.json,pnpm-lock.yamloyarn.lock) para instalaciones reproducibles. - Un
.gitignoreque excluyanode_modulesy.env.
Python
- Un
requirements.txt(o unpyproject.toml) con las dependencias. - Un archivo de entrada, habitualmente
app.pyomain.py. - Un
.gitignoreque excluya los entornos virtuales y.env.
Consejo: ejecuta la app desde un clon limpio en tu máquina antes de desplegar. Si falla ahí, fallará en el servidor.
Paso 2: Elige el entorno de ejecución
El hosting de código, como los planes de programación de SolumeCore, ejecuta tu app en un contenedor aislado con un entorno que eliges al comprar: Python, Node.js, Bun, Deno, Go, Java o Rust, cada uno con varias versiones. Elige la versión para la que se hizo tu proyecto. El entorno forma parte del plan, así que otro lenguaje implica otro plan.
Paso 3: Conecta el repositorio
Pega el enlace del repositorio:
- Repo público: basta el enlace HTTPS.
- Repo privado: usa el enlace SSH, que empieza por
git@. El hosting genera una clave de despliegue (una clave pública) que añades al repositorio. La clave de despliegue debe ser de solo lectura; no actives el permiso de escritura.
En GitHub: Settings > Deploy keys > Add deploy key, pega la clave y deja sin marcar «Allow write access». En GitLab: Settings > Repository > Deploy keys.

Si más adelante conviertes un repo público en privado, vuelve y añade entonces la clave.
Paso 4: Define los comandos
Normalmente necesitas dos comandos:
- Comando de compilación (opcional): se ejecuta una vez tras cada despliegue, antes de que arranque la app. En Node suele ser
npm ci && npm run build; en Python puede serpip install -r requirements.txt. Su salida va al registro del despliegue. - Comando de inicio: lo que lanza tu app, como
node index.js,npm startopython app.py.
Las dependencias también pueden instalarse solas al arrancar cuando el hosting encuentra un package.json o un requirements.txt.
Paso 5: Añade variables de entorno
La configuración y los secretos, como claves de API y contraseñas de bases de datos, no pertenecen al repositorio. Defínelos como variables de entorno en el panel y léelos desde tu código:
const token = process.env.DISCORD_TOKEN;import os
token = os.environ["DISCORD_TOKEN"]Si necesitas una base de datos, créala desde el panel. Los planes de programación pueden crear bases MySQL con su propio usuario y contraseña.
Paso 6: Despliega y lee el registro
Pulsa Desplegar ahora. Un despliegue pasa por etapas (en cola, clonado, compilando, en marcha) y el registro muestra cada línea. Si una falla, el registro te dice dónde se detuvo. Los sospechosos habituales:
| Fallo | Causa típica |
|---|---|
| No se puede descargar el repositorio | Enlace erróneo, o repo privado sin la clave de despliegue añadida |
| Falla la instalación de dependencias | Falta el archivo de bloqueo, o una versión de Node o Python incompatible |
| La app arranca y termina | Falta una variable de entorno, o el comando de inicio es incorrecto |
| Errores de puerto | La app escucha en un puerto o dirección equivocados |
Lo último importa en las apps web: tu app debe escuchar en el puerto y la dirección que da el hosting, no en uno fijado a mano. Léelos de variables de entorno cuando puedas.
Paso 7: Activa los despliegues automáticos
Cuando el primer despliegue funcione, activa el despliegue automático para una rama. El hosting te da una URL de webhook; añádela en los ajustes de tu repositorio (webhooks de GitHub o GitLab) para que cada push avise al hosting de que despliegue. A partir de ahí publicas con git push.
Cuidado con los despliegues limpios
Un despliegue limpio borra todos los archivos del servidor y vuelve a clonar el repositorio. Todo lo que no esté en el repo se pierde, incluidas las bases SQLite, las subidas de usuarios, node_modules y el archivo .env. Si tu app guarda datos en disco, llévalos a una base de datos, o haz una copia antes de limpiar. Mira copias de seguridad de servidores de juegos y apps para el enfoque general.
Hazlo un hábito
- Despliega desde una rama estable como
mainy desarrolla en otras. - Etiqueta las versiones para poder volver a un commit que funcionaba.
- Mantén siempre los secretos fuera de Git.
- Prueba en local desde un clon limpio.
FAQ
¿Necesito Docker?
No. Eliges un entorno y el hosting lo ejecuta en un contenedor por ti. Docker es opcional si administras tu propio VPS.
¿Puedo desplegar sin Git?
Sí. Sube los archivos con el gestor de archivos o por SFTP. Git es mejor cuando quieres historial y automatización.
¿Por qué el despliegue salió bien pero la app no responde?
Puede que la app escuche en el puerto equivocado o solo en localhost. Enlázala a la dirección y el puerto que da el hosting.
¿Puedo desplegar un repositorio privado?
Sí, con el enlace SSH y una clave de despliegue de solo lectura añadida al repo.
¿Se compila en cada push?
Solo si activaste el despliegue automático para esa rama. Sin él, despliegas a mano.
¿Listo para publicar?
Mira el hosting de programación, con páginas para Node.js y Python, y ten presente alojar un bot de Discord 24/7 si tu proyecto es un bot. Para máquinas que controlas de punta a punta, echa un vistazo a un VPS.