DevPod - Entornos de desarrollo de código abierto como código
DevPod (de Loft) es una herramienta de cliente único, de código abierto que crea entornos de desarrollador reproducibles desde un devcontainer.json estándar en cualquier backend — tu Docker local, una máquina SSH remota, un clúster de Kubernetes o una VM en la nube. Piensa en “Codespaces autohospedado, sin opiniones”: funciona con cualquier IDE (VS Code, JetBrains o navegador), controlas dónde se ejecuta el entorno a través de proveedores enchufa bles, y no hay componente de servidor que operar.
Instalación
| Método | Cómo |
|---|
| CLI | Descarga desde GitHub Releases (Linux/macOS/Windows) |
| Aplicación de escritorio | GUI disponible de DevPod Desktop |
| Requerimiento | Un proveedor de backend (Docker, host SSH, K8s, nube) |
| Verificar | devpod version |
Proveedores (dónde se ejecutan los entornos)
| Comando | Descripción |
|---|
devpod provider add docker | Usa Docker local |
devpod provider add ssh --option HOST=user@host | Usa una máquina remota |
devpod provider add kubernetes | Ejecuta en un clúster de K8s |
devpod provider add aws (gcloud, azure) | Proveedores de VM en la nube |
devpod provider list | Lista proveedores configurados |
devpod provider use docker | Establece el proveedor predeterminado |
Creación de espacios de trabajo
| Comando | Descripción |
|---|
devpod up . | Inicia un env desde el devcontainer del repositorio actual |
devpod up github.com/org/repo | Desde una URL de repositorio de Git |
devpod up . --ide vscode | Abre en un IDE específico |
devpod up . --provider kubernetes | Elige un backend |
devpod up . --recreate | Reconstruye el espacio de trabajo |
Gestión de espacios de trabajo
| Comando | Descripción |
|---|
devpod list | Lista espacios de trabajo |
devpod stop <name> | Detiene un espacio de trabajo |
devpod delete <name> | Elimina un espacio de trabajo |
devpod ssh <name> | SSH en un espacio de trabajo |
devpod status <name> | Muestra el estado del espacio de trabajo |
devcontainer.json (la especificación)
DevPod consume la especificación de Dev Container abierta, por lo que el mismo archivo funciona en Codespaces, VS Code y DevPod.
{
"name": "my-project",
"image": "mcr.microsoft.com/devcontainers/base:ubuntu",
"features": {
"ghcr.io/devcontainers/features/node:1": { "version": "20" }
},
"postCreateCommand": "npm install",
"customizations": {
"vscode": { "extensions": ["dbaeumer.vscode-eslint"] }
}
}
| Campo | Propósito |
|---|
image / dockerfile | Entorno base |
features | Add-ons componibles (lenguajes, herramientas) |
postCreateCommand | Configuración ejecutada después de la creación |
forwardPorts | Puertos a exponer |
customizations | Configuración/extensiones específicas del IDE |
Integración de IDE
| IDE | Cómo |
|---|
| VS Code | --ide vscode (escritorio o navegador) |
| JetBrains | --ide goland/pycharm/... |
| Navegador (openvscode) | --ide openvscode |
| SSH/terminal | devpod ssh <name> |
Flujos de trabajo comunes
# Env dev de Docker local desde el devcontainer de un repositorio
devpod provider add docker
devpod up github.com/org/project --ide vscode
# Descarga compilaciones pesadas a una máquina remota potente
devpod provider add ssh --option HOST=me@build-server
devpod up . --provider ssh
# Env efímero en la nube en Kubernetes, eliminado cuando finaliza
devpod up . --provider kubernetes
devpod delete my-project
DevPod vs alternativas
| Aspecto | DevPod | GitHub Codespaces | Devbox | Gitpod |
|---|
| Hosting | Cualquier backend (tu elección) | Nube de GitHub | Local (Nix) | Nube/autohospedado |
| Especificación | devcontainer.json | devcontainer.json | devbox.json | Config Gitpod |
| Servidor | Ninguno (cliente único) | Gestionado | Ninguno | Servidor |
| Mejor para | Dev portátil, cualquier nube | Cero configuración GitHub | Envs reproducibles local | Espacios de trabajo desencadenados por Git |
DevPod usa la misma especificación de devcontainer que Codespaces; para envs basadas en Nix locales ver Devbox.
Recursos