Estos son los archivos que consume un cliente de servidor doméstico ZimaOS o de homelab cuando termina la compilación de la App Store Docker.
El protocolo se consume desde los archivos generados dentro de dist/.
Archivos de salida
El script de compilación puede generar:
dist/store.jsondist/store.{locale}.jsondist/index.jsondist/index.{locale}.jsondist/apps/<app-id>/docker-compose.ymldist/apps/<app-id>/docker-compose.{architecture}.ymldist/apps/<app-id>/meta.jsondist/apps/<app-id>/meta.{locale}.jsondist/apps/<app-id>/assets/*
index.json
index.json es el listado de aplicaciones de toda la tienda.
Cada elemento de aplicación incluye datos como:
idtitletaglinecategoryversionauthordeveloperarchitecturesiconthumbnailcompose_urlmeta_urlcontent_hash
Significado de los campos del listado
id
- identificador normalizado a partir del
x-casaos.idsuperior de la fuente - también se usa como nombre del directorio de salida en
dist/apps/
title
- nombre visible de la aplicación resuelto para el locale de destino
tagline
- resumen breve resuelto para el locale de destino
category
- valor de categoría estandarizado utilizado para mostrar y agrupar
version
- versión de la aplicación procedente de
x-casaos.version - importante para que el usuario comprenda las actualizaciones y para el seguimiento de versiones
author
- atribución de quien empaqueta la aplicación o de la tienda
developer
- atribución del proyecto de origen
architectures
- lista de arquitecturas de CPU compatibles
- la compilación la utiliza para generar variantes de Compose por arquitectura cuando es posible
icon
- ruta o URL del recurso compilado relativa a
--base-url
thumbnail
- ruta o URL de la miniatura compilada relativa a
--base-url
compose_url
- ruta al archivo Compose compilado de la aplicación
meta_url
- ruta al archivo de metadatos compilado de la aplicación
content_hash
- hash que representa todos los archivos generados relevantes de la aplicación
- se utiliza para detectar actualizaciones incrementales en el cliente
Se genera como:
dist/index.jsondist/index.{locale}.jsoncuando al menos una aplicación define explícitamente ese locale en campos que aparecen en el listado
docker-compose.yml compilado
Los archivos Compose compilados conservan únicamente los campos x-casaos orientados a la ejecución:
idmainindexport_mapschemeicontitle
Todos los metadatos se eliminan del Compose compilado y se mueven a meta.json.
Comportamiento del Compose compilado
El Compose compilado no es una copia directa del Compose fuente.
Durante la compilación:
- se eliminan los metadatos
x-casaosque no son de ejecución - se reescribe
icon - el
titleindexado por locale se resuelve como una cadena simple para el locale generado
meta.json compilado
El meta.json compilado contiene los metadatos de la aplicación, incluidos campos relacionados con actualizaciones y presentación:
versionupdate_atrelease_notewebsitereposupportdocs
En la práctica, version no debe tratarse como un extra decorativo. Es un campo clave para comunicar las actualizaciones de la aplicación en la nueva tienda.
title e icon no se escriben deliberadamente en meta.json, porque siguen formando parte de la información de ejecución y presentación del Compose compilado.
Grupos de campos de metadatos compilados
En la práctica, meta.json agrupa:
- contenido descriptivo como
taglineydescription - recursos de presentación como
thumbnailyscreenshot_link - atribución como
authorydeveloper - datos de compatibilidad como
architectures - campos opcionales de mejora como
version,update_atyrelease_note
Comportamiento de las rutas
Las rutas generadas relativas a una aplicación suelen tener este aspecto:
apps/com.example.myapp/docker-compose.ymlapps/com.example.myapp/meta.jsonapps/com.example.myapp/assets/icon.svg
En estos ejemplos, com.example.myapp es el valor normalizado del x-casaos.id fuente.
Estas rutas se resuelven con respecto al --base-url configurado.
Por tanto, la misma compilación lógica puede publicarse en diferentes hosts públicos cambiando --base-url.
Hash de contenido
content_hash se calcula a partir de los archivos del directorio generado de cada aplicación, entre ellos:
- Compose compilado
- variantes de Compose específicas de arquitectura
- variantes de metadatos
- recursos
Esto permite realizar actualizaciones incrementales eficientes en el cliente.
Comportamiento de las actualizaciones
Las comprobaciones de actualizaciones del cliente se basan en index.json y en el content_hash de cada aplicación.
Esto significa que:
- las aplicaciones sin cambios se omiten
- las aplicaciones modificadas solo vuelven a descargar sus archivos Compose y de metadatos
- la tienda no necesita descargar de nuevo el paquete completo en cada actualización
Errores comunes
- suponer que los archivos de
dist/deben escribirse a mano - suponer que
meta.jsoncontienetitle - tratar
content_hashcomo un campo de versión manual - olvidar que los archivos de índice y metadatos por locale solo existen para locales definidos explícitamente