Cómo construir un servidor doméstico de desarrollo para Git, imágenes de Docker, bases de datos y aplicaciones de vista previa

Eva Wong es la redactora técnica y manitas residente en ZimaSpace. Es una geek de toda la vida apasionada por los laboratorios domésticos y el software de código abierto, y se especializa en traducir conceptos técnicos complejos en guías prácticas y fáciles de seguir. Eva cree que alojar servicios propios debería ser divertido, no intimidante. A través de sus tutoriales, ayuda a la comunidad a desmitificar la configuración del hardware, desde montar su primer NAS hasta dominar los contenedores Docker.

Crea una plataforma de servicios estable, separa los datos persistentes de los artefactos que se pueden reconstruir y asegúrate de que todos los servicios de desarrollo puedan recuperarse sin tener que conservar el propio host.

Para uno o dos desarrolladores en casa, un único servidor Linux puede alojar Git, un registro de imágenes, bases de datos y aplicaciones de vista previa. El diseño sigue siendo manejable solo si se planifican la identidad, las funciones del almacenamiento, la exposición a la red, las copias de seguridad y la restauración antes de que los servicios empiecen a depender unos de otros.

Asigna funciones de servicio antes de elegir el hardware

Trata Git, el registro de contenedores, los motores de bases de datos y las aplicaciones de vista previa como funciones de servicio independientes, aunque compartan un mismo host. Git conserva el historial del código fuente; el registro almacena artefactos que se pueden reconstruir; las bases de datos contienen el estado mutable de las aplicaciones; las aplicaciones de vista previa son entornos de ejecución desechables.

Calcula la CPU y la memoria según las compilaciones simultáneas, los conjuntos de datos de las bases de datos y las vistas previas activas. Calcula el almacenamiento según los repositorios, la retención del registro, el crecimiento de las bases de datos, los registros y el espacio temporal para copias de seguridad. Así evitarás comprar un disco grande y que la memoria siga siendo el primer cuello de botella.

Al principio, usa un único nodo de computación si es aceptable que falle durante el desarrollo. Más adelante, separa los nodos de compilación si las compilaciones intensivas empiezan a saturar las bases de datos o las vistas previas interactivas.

Separa los datos persistentes, reconstruibles y de recuperación

Función de los datos Ejemplos Protección
Estado persistente Repositorios Git, volúmenes de bases de datos Instantáneas más copia de seguridad independiente
Artefactos que se pueden reconstruir Imágenes de contenedor, caché de compilación Política de retención; copia de seguridad opcional
Secretos y configuración Claves de despliegue, archivos de entorno Exportación cifrada y copia de recuperación sin conexión
Medios de recuperación Instalador del sistema operativo, notas de restauración Almacenado fuera del servidor

No hagas copias de seguridad de todos los bytes por igual. Por lo general, se puede reconstruir un registro a partir del código fuente y las instrucciones de compilación; una base de datos, no. Almacena los volcados de la base de datos o las instantáneas coherentes por separado del volumen activo de la base de datos.

Un plan práctico de copias de seguridad autohospedadas demuestra el valor de automatizar Git y las copias externas como tareas distintas, en lugar de asumir que el NAS en sí es la copia de seguridad.

Crea una vía de acceso privado

Asigna al servidor una dirección LAN estable y un nombre DNS local. Expón las rutas de Git, el registro, la base de datos y las vistas previas solo a las redes que las necesiten. El acceso remoto debe realizarse mediante una VPN privada o una ruta de proxy inverso autenticada, no mediante una serie de puertos de servicios redirigidos.

Usa cuentas de servicio y claves de despliegue independientes. Los desarrolladores no deberían compartir una contraseña de administrador, y las aplicaciones de vista previa no deberían heredar credenciales que permitan modificar los repositorios de Git o el registro.

Elige SMB o NFS solo para flujos de trabajo con archivos que realmente necesiten un montaje compartido. La guía para elegir entre clientes SMB y NFS ayuda a mantener separada la elección del protocolo del acceso a los servicios de aplicaciones.

Haz que el orden de despliegue coincida con el grafo de dependencias

Inicia los montajes de almacenamiento, la identidad, las bases de datos, el registro, Git y, por último, las aplicaciones de vista previa. Las comprobaciones de estado deben probar dependencias reales, sin reiniciar una base de datos lenta solo porque una aplicación siga iniciándose.

Mantén las definiciones de despliegue, las migraciones del esquema y las rutas del proxy inverso bajo control de versiones. Mantén los secretos fuera del repositorio e indica claramente dónde restaurarlos. Un host de reemplazo debería poder recrear los servicios a partir de las definiciones y del estado protegido.

Valida la configuración volviendo a crear una aplicación de vista previa a partir de una copia limpia del repositorio, descargando su imagen, aplicando una restauración de prueba de la base de datos y accediendo a ella desde la ruta de cliente prevista.

Haz copias de seguridad para restaurar, no para acumular

Haz copias de seguridad de los repositorios, los volcados nativos de la base de datos, la configuración de los servicios y los secretos cifrados en un destino que no esté montado con permisos de escritura para todos los servicios. Conserva al menos una copia fuera del ámbito de alimentación eléctrica y administración del servidor.

Cada trimestre, restaura en un espacio de nombres aislado. Confirma los usuarios, las extensiones, las tareas programadas, los permisos de los repositorios, la autenticación del registro y las rutas DNS; no te limites a comprobar que los archivos estén presentes.

Amplía la configuración cuando las colas de compilación retrasen el trabajo interactivo, aumente la latencia de la base de datos durante la carga de imágenes o las ventanas de copia de seguridad coincidan con la jornada laboral. Deja de añadir roles al mismo host cuando un servicio experimental pueda agotar los recursos o las credenciales que necesita el plano de servicios estables.

Regla final de configuración

La configuración está lista cuando cada servicio tiene un rol asignado, un estado protegido, una ruta de acceso controlada, una restauración probada y un criterio medible para dividir o ampliar la topología.

Configuración de NAS y servidores

Más para leer

Get More Builds Like This

Stay in the Loop

Get updates from Zima - new products, exclusive deals, and real builds from the community.

Stay in the Loop preferences

We respect your inbox. Unsubscribe anytime.