Solución de la comunidad

Corrige los errores de importación de Docker Compose en ZimaOS para aplicaciones personalizadas

A ZimaOS 1.4.3 user could not restore a Syncthing custom app from an exported Compose file. The failure was ultimately traced to damaged YAML formatting and an overcomplicated exported definition rather than the browser or reinstall.

Si ZimaOS rechaza un archivo de Docker Compose durante Instalar una aplicación personalizada → Importar, no des por hecho que la instalación de ZimaOS está dañada. En el caso de la comunidad de septiembre de 2025, reinstalar ZimaOS y volver a intentarlo en un navegador de incógnito no cambió nada. El problema real era el YAML de Compose guardado: el formato se había dañado al copiarlo en las notas y la definición exportada contenía más complejidad de la que la aplicación necesitaba.

El usuario corrigió el YAML, simplificó el servicio de Syncthing y confirmó que el problema de importación se había resuelto. El hilo también destaca un caso de uso importante de ZimaOS: opciones como tmpfs puede no tener un campo específico en el editor visual, por lo que la importación de Compose sigue siendo necesaria para configuraciones avanzadas de contenedores.

Qué aspecto tenía el error de importación

El usuario original ejecutaba ZimaOS 1.4.3 en un Beelink Mini y descubrió que una aplicación personalizada exportada anteriormente ya no se importaba después de una reinstalación limpia.

Consola del navegador de ZimaOS mostrando un error después de enviar una aplicación personalizada de Docker Compose
El primer síntoma apareció cuando el texto de Docker Compose guardado se envió al importador de aplicaciones personalizadas de ZimaOS.
Salida de la consola de desarrollador del navegador capturada durante la investigación del importador de aplicaciones personalizadas de ZimaOS
Reinstalar el sistema operativo y cambiar de sesión del navegador no eliminó el problema subyacente de Compose.

Valida el YAML antes de solucionar problemas de ZimaOS

YAML distingue la indentación. Un solo nivel desplazado por una aplicación de notas puede convertir un Compose válido en una estructura completamente diferente.

El autor original finalmente se dio cuenta de que la exportación guardada tenía un formato incorrecto. Su flujo de trabajo para tomar notas había alterado la estructura después de copiar el archivo Compose de la instalación antigua de ZimaOS.

Antes de cambiar el host de ZimaOS:

  1. pega el archivo Compose en un validador de YAML/Compose;
  2. usa espacios, no tabulaciones;
  3. comprueba la indentación de cada elemento de lista y propiedad secundaria;
  4. confirma que cada montaje de enlace tenga un destino en el contenedor;
  5. elimina las claves duplicadas;
  6. compara el resultado con la especificación actual de Docker Compose.

Un montaje de enlace completo necesita tanto el origen como el destino

Un montaje de enlace válido en formato largo tiene este aspecto:

volumes:
  - type: bind
    source: /DATA/AppData/syncthing/data
    target: /var/syncthing

Docker Compose también admite actualmente configuraciones de enlace opcionales, como:

enlace:
  create_host_path: true

El requisito principal es que la estructura YAML sea válida y que origen y destino están anidados bajo la misma entrada de montaje.

Las referencias de los servicios de Docker Compose

La sintaxis larga de puertos es válida, pero mantenla sencilla

La exportación antigua contenía entradas de puertos detalladas como:

puertos:
  - target: 8384
    published: "8384"
    protocol: tcp
    mode: ingress

El Docker Compose actual sí define modo en la sintaxis larga de puertos, principalmente para el comportamiento de publicación de Swarm. Eso significa que la clave en sí no es universalmente inválida en Compose.

Sin embargo, el importador de ZimaOS de 2025 y el YAML exportado dañado no gestionaban correctamente la estructura guardada. Para un servicio normal de ZimaOS en un solo host, la sintaxis más sencilla suele ser más fácil de validar:

puertos:
  - "8384:8384"
  - "22000:22000/tcp"
  - "22000:22000/udp"
  - "21027:21027/udp"

Usa la forma larga más avanzada solo cuando realmente necesites sus opciones.

Usa correctamente la red del host

Si la aplicación necesita la red del host de Docker, Compose proporciona:

network_mode: host

No combines network_mode con un las redes list para el mismo servicio; el Docker Compose actual rechaza esa combinación.

Esto es diferente de definir una red normal creada por el usuario llamada host.

tmpfs es una función válida de Docker Compose

La aplicación del autor original requería:

tmpfs:
  - /run

El Docker Compose actual admite explícitamente tmpfs montajes. También puede aceptar opciones:

tmpfs:
  - /run
  - /data:mode=755,uid=1000,gid=1000

En la versión de ZimaOS de origen, el formulario visual de aplicaciones personalizadas no proporcionaba un campo para esta opción, por lo que el usuario necesitaba importar mediante Compose en lugar de introducir cada configuración manualmente.

ZimaOS todavía admite la importación de Docker Compose

La documentación actual de ZimaOS describe este flujo de trabajo:

  1. abre el panel;
  2. elige Instalar una aplicación personalizada;
  3. haz clic en Importar;
  4. abre la pestaña Docker Compose;
  5. pega el YAML;
  6. envía y revisa la configuración generada antes de la instalación.

Documentación de aplicaciones personalizadas de ZimaOS

Cómo se veía el Compose incorrecto y cómo quedó corregido

Importación de una aplicación personalizada de ZimaOS que muestra un formato de Docker Compose incorrecto en la exportación guardada
El autor original descubrió que el texto Compose guardado había perdido su estructura YAML prevista.
Error de ZimaOS mostrado después de una importación parcialmente reparada de Docker Compose de Syncthing
Analizar correctamente es solo la primera etapa; la definición de servicio resultante también debe ser válida para Docker y ZimaOS.
Compose Toolbox validando y simplificando una definición de Docker Compose de ZimaOS
La comunidad recomendó validar y simplificar el archivo Compose antes de volver a importarlo.
Definición de Docker Compose de Syncthing limpiada tras eliminar la configuración innecesaria
Una definición Compose más pequeña y basada en estándares hizo que la configuración fuera más fácil de entender y restaurar.

Una estructura más sencilla para Syncthing

Una estructura limpia para un solo host podría ser conceptualmente así:

services:
  syncthing:
    image: syncthing/syncthing:2.0
    container_name: syncthing
    restart: unless-stopped
    network_mode: host
    environment:
      - PUID=1000
      - PGID=1000
    volumes:
      - /DATA/AppData/syncthing/data:/var/syncthing
      - /media/SLOT4/Syncthing:/media/data/syncthing
    tmpfs:
      - /run

Usa el PUID/PGID, las rutas, la configuración de red y la etiqueta de imagen adecuados para tu propia implementación. El hilo original utilizaba identificadores de root durante la resolución del problema, pero eso no significa que debas ejecutar como root todos los contenedores de Syncthing.

Un archivo Compose exportado de ZimaOS no es un formato de copia de seguridad intocable

El autor de la fuente indicó que el archivo problemático procedía de exportar contenedores antes de reinstalar ZimaOS. Es una copia de seguridad útil, pero las definiciones de aplicaciones exportadas pueden contener metadatos generados por ZimaOS o una sintaxis más verbosa que una pila de Compose escrita manualmente.

Antes de depender de archivos exportados para la recuperación ante desastres:

  • guárdalos en un formato de texto plano o compatible con código;
  • ponlos bajo control de versiones cuando corresponda;
  • valídalos mientras el sistema original siga funcionando;
  • haz copias de seguridad por separado de las carpetas persistentes de AppData.

Lista de comprobación para importar Compose en ZimaOS

  1. Valida el YAML antes de importarlo.
  2. Sustituye las tabulaciones por espacios.
  3. Comprueba la sangría de las listas bajo ports, volumes, environment y networks.
  4. Asegúrate de que cada montaje de enlace incluya un origen y un destino.
  5. Usa network_mode: host si se pretende utilizar la red del host.
  6. No combines network_mode y el servicio las redes.
  7. Conserva tmpfs en Compose si la interfaz visual no lo ofrece.
  8. Elimina las opciones generadas o avanzadas que la aplicación no necesite.
  9. Conserva una copia de seguridad independiente de los datos de la aplicación; Compose por sí solo no contiene los datos.

Preguntas frecuentes sobre la importación de Docker Compose en ZimaOS

¿El problema original lo causó la caché del navegador?

No. El autor lo reprodujo después de reinstalar ZimaOS desde cero y en un navegador de incógnito, y luego confirmó que el verdadero problema eran los errores de formato en el archivo Compose guardado.

¿ZimaOS admite tmpfs en el formulario visual de aplicaciones personalizadas?

El hilo de 2025 indicaba que la interfaz gráfica no ofrecía esa opción. Docker Compose admite tmpfs, por lo que la importación es la vía avanzada adecuada.

¿Son inválidos mode: ingress y protocol: tcp en Docker Compose?

No de forma universal. Compose actualmente admite la sintaxis larga para puertos, incluido modoLa lección práctica del caso original es validar todo el YAML y eliminar la complejidad innecesaria cuando el importador de ZimaOS no puede utilizar de forma fiable el formato exportado.