[{"data":1,"prerenderedAt":173},["ShallowReactive",2],{"seo-verification":3,"blog-onedev-en-vps-git-cicd-y-kanban-autoalojados-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-onedev-en-vps-git-cicd-y-kanban-autoalojados-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":30,"ctaBody":30,"ctaButton":114,"ctaUrl":115,"relatedPosts":116},311,"onedev-en-vps-git-cicd-y-kanban-autoalojados",{"fr":12,"en":13,"ar":14,"es":10},"heberger-onedev-vps","self-host-onedev-git-cicd-and-kanban-in-one-container","onedev-على-vps-git-وcicd-وkanban-في-حاوية-واحدة","OneDev en VPS: Git, CI\u002FCD y Kanban autoalojados","Aloje OneDev en su VPS: forja Git privada, pipelines CI\u002FCD visuales y Kanban integrados. Un solo contenedor, sin suscripción por desarrollador.",6,2,false,"2026-08-28T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-onedev-vps-poster.svg",{"categorySlug":34,"appSlug":35},"desarrollo","onedev","¿Busca un equivalente self-hosted de GitHub con CI\u002FCD integrado, sin instalar un runner aparte ni pagar por desarrollador? OneDev reúne forja Git, motor CI\u002FCD, tableros Kanban y registro de paquetes en un solo contenedor Docker — en un VPS de 2 GB de RAM.",[38,42,53,56,72,75,108,111],{"type":39,"title":40,"body":41},"h2","¿Por qué OneDev en lugar de solo Gitea?","Gitea es excelente para alojar código: es ligero, rápido y cubre todas las necesidades de una forja Git clásica. Pero en cuanto se quiere CI\u002FCD, hay que instalar un runner aparte (`gitea\u002Fact_runner`), configurarlo, vigilar sus jobs y exponerlo a la red. OneDev hace todo eso por defecto: cuando usted envía un `.onedev-buildspec.yml`, un pipeline se pone en cola y se ejecuta en un contenedor Docker en el mismo VPS — ningún servicio adicional que configurar.\n\nEsta integración se extiende a las issues y a los tableros Kanban: en lugar de gestionar un proyecto en una tercera aplicación, las tarjetas Kanban de OneDev se mueven automáticamente cuando se crea una rama, se abre una pull request o se fusiona un commit. El resultado es un puesto de desarrollo coherente, sin malabares entre pestañas.",{"type":43,"title":44,"items":45},"ul","Lo que se obtiene con OneDev",[46,47,48,49,50,51,52],"Forja Git completa: repositorios, ramas, tags, pull requests, revisiones de código, wikis y releases","CI\u002FCD integrado con diseñador visual de pipelines — ningún runner aparte que instalar","Tableros Kanban con transiciones automáticas activadas por los eventos del repositorio","Registro de paquetes Docker\u002FOCI, npm, Maven, NuGet y Helm alojado en la misma URL","Búsqueda simbólica en el código y navegación por el diff basadas en el análisis estático","Autenticación mediante LDAP, OAuth2 (GitHub, GitLab, Google) o cuentas locales","Importación desde GitHub, GitLab o Gitea con historial, issues y pull requests",{"type":39,"title":54,"body":55},"Arquitectura: dos contenedores, una URL","OneDev funciona como dos contenedores Docker: `1dev\u002Fserver` (la aplicación Java) y `postgres:14` (la base de datos). La aplicación escucha en el puerto 6610; ServOrbit coloca un vhost nginx delante de ella y gestiona el TLS. Todo pasa por el mismo dominio: la interfaz web, los clones Git por HTTPS, los webhooks de CI y el registro de paquetes.\n\nLa imagen `1dev\u002Fserver` incluye además un agente de build local. Cuando arranca un pipeline, lanza un contenedor Docker para cada etapa de build — por eso el socket Docker (`\u002Fvar\u002Frun\u002Fdocker.sock`) se monta en el contenedor OneDev. Este diseño es estándar en las plataformas de CI autoalojadas (Jenkins, Drone, Woodpecker también lo usan) y permite configurar runners remotos si necesita paralelismo o aislamiento de hardware.\n\nLa base de datos PostgreSQL almacena los repositorios (en forma de repositorios Git bare en `\u002Fopt\u002Fonedev`), las issues, los miembros, los jobs de CI y la configuración. Un solo volumen Docker basta para respaldarlo todo.\n\nLa RAM consumida al arrancar es de unos 512 MB en un VPS sin usuarios activos. La JVM HotSpot optimiza la memoria con las sucesivas ejecuciones, pero conviene empezar con 2 GB para dejar margen a los builds Docker concurrentes. Un VPS de 4 GB de RAM es suficiente para un equipo de diez desarrolladores con dos o tres jobs de CI en paralelo.",{"type":57,"title":58,"steps":59},"steps","Desplegar OneDev en 4 pasos",[60,63,66,69],{"title":61,"body":62},"Contratar un VPS con un dominio","Elija un VPS con al menos 2 GB de RAM — OneDev es una aplicación Java que necesita algo de espacio al arrancar. Se requiere un dominio: OneDev integra la URL del servidor en los enlaces de clonado, los webhooks y las redirecciones OAuth. Apunte un subdominio (`git.miempresa.com`) a su VPS, o use el subdominio gratuito de ServOrbit (`{app}.{dns_slug}.servorbit-dns.com`), que incluye HTTPS automático.",{"title":64,"body":65},"Despliegue automático desde el marketplace","En su espacio ServOrbit, vaya a Marketplace → Desarrollo → OneDev → Desplegar. ServOrbit genera las credenciales de la base de datos, arranca los dos contenedores y configura el vhost nginx. La interfaz web está disponible por HTTPS en menos de dos minutos.",{"title":67,"body":68},"Asistente de configuración inicial","Abra su dominio en un navegador. OneDev muestra un asistente de primera conexión que le pide crear la cuenta de administrador y, punto clave, indicar la URL del servidor — introduzca su dominio HTTPS completo (`https:\u002F\u002Fgit.miempresa.com`). OneDev almacena esa URL y la integra en todos los enlaces generados: enlaces de clonado, notificaciones por correo electrónico, insignias de estado de CI. Tómese el tiempo de rellenarla correctamente desde el principio.",{"title":70,"body":71},"Primer repositorio y primer pipeline","Cree un repositorio desde la interfaz, clónelo por HTTPS (`git clone https:\u002F\u002Fgit.miempresa.com\u002Fusuario\u002Fmiproyecto`), añada un archivo `.onedev-buildspec.yml` en la raíz y haga push. OneDev detecta la especificación, pone el pipeline en cola y lo ejecuta en un contenedor Docker en su VPS — sin configuración adicional.",{"type":39,"title":73,"body":74},"El pipeline de OneDev: .onedev-buildspec.yml","OneDev usa su propio formato YAML de pipeline, distinto del de GitHub Actions o GitLab CI. La estructura básica se compone de `jobs` con `steps`. Cada step puede usar una imagen Docker, ejecutar un script, publicar un artefacto o enviar una notificación.\n\nEjemplo mínimo para un proyecto Node.js:\n\n```\nversion: 36\njobs:\n- name: Build\n  steps:\n  - !CheckoutStep\n    name: checkout\n    cloneCredential: !DefaultCredential {}\n  - !CommandStep\n    name: install and test\n    image: node:20-alpine\n    commands:\n    - npm ci\n    - npm test\n  triggers:\n  - !BranchUpdateTrigger {}\n```\n\nEl diseñador visual de pipelines genera ese YAML de forma gráfica: usted añade etapas desde la interfaz, configura las imágenes Docker, las variables de entorno y los disparadores, y OneDev escribe el archivo por usted. Resulta útil para empezar, aunque la mayoría de los equipos acaba editando el YAML directamente para lograr un control más fino.\n\nLos `!CommandStep` admiten matrices de build (`matrix`), los artifacts entre etapas (`artifactRequirements`) y las condiciones de disparo (`branchUpdateTrigger`, `pullRequestTrigger`, `tagCreateTrigger`). Los pipelines también pueden programarse mediante `scheduleTrigger` para tareas nocturnas — migraciones de base de datos, generación de informes, limpieza de ramas. Un panel dedicado muestra el estado de todos los jobs en tiempo real y conserva el historial completo de las ejecuciones con los logs con marca de tiempo.",{"type":76,"title":77,"headers":78,"rows":82},"comparison","OneDev vs Gitea vs GitLab CE",[5,79,80,81],"OneDev","Gitea","GitLab CE",[83,88,92,95,100,104],[84,85,86,87],"CI\u002FCD integrado","Sí (agente incluido)","Mediante runner aparte","Sí (runner de GitLab)",[89,90,91,90],"Kanban integrado","Sí","No (plugins de terceros)",[93,94,94,94],"Registro de paquetes","Docker, npm, Maven…",[96,97,98,99],"RAM típica (1 dev)","~512 MB en reposo","~200 MB","2 GB mínimo",[101,102,102,103],"Licencia","MIT","MIT (EE propietaria)",[105,106,107,90],"Importación GitHub\u002FGitLab","Sí (issues + PRs)","Sí (solo código)",{"type":39,"title":109,"body":110},"Copias de seguridad de OneDev","OneDev almacena todo en dos volúmenes Docker: `onedev_data` (repositorios Git, configuración, jobs) y `onedev_db` (base de datos PostgreSQL). Una copia de seguridad completa consiste en archivar esos dos volúmenes.\n\n```\ndocker run --rm \\\n  -v onedev_data:\u002Fdata \\\n  -v \u002Fbackup:\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fonedev-data.tar.gz \u002Fdata\n\ndocker run --rm \\\n  -v onedev_db:\u002Fpgdata \\\n  -v \u002Fbackup:\u002Fbackup \\\n  alpine tar czf \u002Fbackup\u002Fonedev-db.tar.gz \u002Fpgdata\n```\n\nComo alternativa, el comando `pg_dump` desde el interior del contenedor PostgreSQL produce un volcado SQL más portable. Los repositorios Git de `onedev_data` son repositorios bare estándar: un `git clone --mirror` hacia un almacenamiento externo es otra estrategia válida para los repositorios por sí solos.\n\nOneDev también puede configurar copias de seguridad automáticas hacia un almacenamiento de objetos compatible con S3 desde Site Administration → Settings → Backup Settings. El volumen `onedev_data` contiene a la vez los repositorios Git y los archivos de configuración de OneDev — por eso es más voluminoso que el volumen de una simple base SQL. Calcule 1 GB por repositorio activo para la ventana de retención de builds de CI (logs, artefactos) y prevea un almacenamiento de objetos si acumula muchos artefactos de build.",{"type":112,"body":113},"tip","Para acceder a la interfaz de administración del socket Docker desde el exterior (por ejemplo, para añadir runners remotos), abra el puerto 6610 únicamente en la interfaz de loopback — ServOrbit lo hace así por defecto. Nunca exponga el socket Docker directamente en una interfaz pública: da acceso root a la máquina anfitriona.","Voir les VPS Cloud","\u002Fmarketplace\u002Fdesarrollo\u002Fonedev",[117,135,154],{"id":118,"slug":119,"slugs":120,"title":124,"excerpt":125,"readTime":126,"views":127,"isPinned":19,"publishedAt":128,"updatedAt":21,"category":129,"categories":130,"featuredImage":30,"bgImage":31,"posterImage":132,"relatedSolution":133},74,"alojar-gitea-en-un-vps",{"fr":121,"en":122,"ar":123,"es":119},"heberger-gitea","host-gitea-on-your-own-vps","استضافة-gitea-على-خادم-vps-الخاص-بك","Alojar Gitea en su propio VPS en 2026","Despliegue Gitea en un VPS con Docker y SSL. Guía completa: instalación, migración a Forgejo v16 y comparativa de gobernanza.",8,0,"2026-04-07T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[131],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fheberger-gitea-poster.svg",{"categorySlug":34,"appSlug":134},"gitea",{"id":136,"slug":137,"slugs":138,"title":142,"excerpt":143,"readTime":144,"views":127,"isPinned":19,"publishedAt":145,"updatedAt":21,"category":146,"categories":150,"featuredImage":30,"bgImage":31,"posterImage":152,"relatedSolution":153},273,"migrar-cicd-a-gitea-o-forgejo-sin-github-actions",{"fr":139,"en":140,"ar":141,"es":137},"github-actions-payant-migrer-ci-cd-gitea-forgejo-vps","migrate-cicd-to-gitea-or-forgejo-leave-github-actions","gitea-وforgejo-بديل-github-actions-المدفوع-على-vps","Migrar su CI\u002FCD a Gitea o Forgejo: fuera de GitHub Actions","Desde marzo de 2026, GitHub cobra los minutos de CI en repositorios privados. Migre a Gitea Actions o Forgejo en un VPS: mismos archivos YAML, costo fijo.",11,"2026-08-16T00:00:00+00:00",{"id":18,"name":147,"slug":148,"color":149,"icon":148},"Automatización","automatisation","bg-brand-action\u002F10 text-brand-action",[151],{"id":18,"name":147,"slug":148,"color":149,"icon":148},"\u002Fblog\u002Fcovers\u002Fgithub-actions-payant-migrer-ci-cd-gitea-forgejo-vps-poster.svg",{"categorySlug":34,"appSlug":134},{"id":155,"slug":156,"slugs":157,"title":161,"excerpt":162,"readTime":126,"views":127,"isPinned":19,"publishedAt":163,"updatedAt":21,"category":164,"categories":169,"featuredImage":30,"bgImage":31,"posterImage":171,"relatedSolution":172},279,"migrar-repositorios-github-a-gitea-en-un-vps",{"fr":158,"en":159,"ar":160,"es":156},"migrer-depots-github-vers-gitea-vps","migrate-your-github-repos-to-self-hosted-gitea-on-a-vps","نقل-مستودعات-github-إلى-gitea-على-خادم-vps-خاص","Migrar sus repositorios de GitHub a Gitea en un VPS","Exporte sus repositorios, issues y labels con la API de GitHub, impórtelos en Gitea en menos de una hora y redirija sus remotes, sin perder historial.","2026-08-18T00:00:00+00:00",{"id":165,"name":166,"slug":167,"color":168,"icon":167},3,"Despliegue","deploiement","bg-success\u002F10 text-success",[170],{"id":165,"name":166,"slug":167,"color":168,"icon":167},"\u002Fblog\u002Fcovers\u002Fmigrer-depots-github-vers-gitea-vps-poster.svg",{"categorySlug":34,"appSlug":134},1789665028667]