Skip to content

lzc-manifest.yml Specification Document

1. Overview

lzc-manifest.yml is a file used to define application deployment-related configurations. This document will describe its structure and the meaning of each field in detail.

2. Top-level Data Structure ManifestConfig

2.1 Basic Information

Field NameTypeDescription
packagestringApplication's unique ID, must be globally unique, recommended to start with personal domain
versionstringApplication version number, X, Y and Z are non-negative integers, X is the major version number, Y is the minor version number, and Z is the revision number, format: X.Y.Z, Read detailed specification
namestringApplication name
descriptionstringApplication description
usagestringApplication usage instructions, if not empty, will be automatically rendered when each user in LCMD first accesses this application
licensestringApplication license description
homepagestringApplication homepage
authorstringAuthor name, if through store channel then store account has higher priority
min_os_versionstringMinimum system version required by this application, if not met the application installation will fail, and the app store will refuse to install this application

2.2 Other Configurations

Field NameTypeDescription
ext_configExtConfigExperimental properties, not publicly available yet
unsupported_platforms[]stringPlatforms not supported by the application, valid fields are: "ios", "android", "windows", "macos", "linux", "tvos"
applicationApplicationConfiglzcapp core service configuration
servicesmap[string]ServiceConfigTraditional docker container related service configuration
localesmap[string]I10nConfigItemApplication localization configuration (optional configuration item), requires lzc-os version >= v1.3.0

3. IngressConfig Configuration

3.1 Network Configuration

Field NameTypeDescription
protocolstringProtocol type, supports tcp or udp
portintTarget port number, if empty, uses the actual inbound port
servicestringService container name, if empty, defaults to the special service app
descriptionstringService description, for system components to render application services for administrators to review
publish_portstringAllowed inbound port number, can be a specific port number or port range like 1000~50000
send_port_infoboolSend the actual inbound port as uint16 type in little endian to the target port before data forwarding
yes_i_want_80_443boolIf true, allows forwarding 80,443 traffic to the application, at this time the traffic completely bypasses the system, so authentication, wake-up, etc. will not take effect

4. ApplicationConfig Configuration

4.1 Basic Configuration

Field NameTypeDescription
imagestringApplication image, if no special requirements, leave empty to use system default image (alpine3.21)
background_taskboolIf true, will automatically start and not be automatically hibernated, defaults to true
subdomainstringInbound subdomain for this application, application opens using this subdomain by default
multi_instanceboolWhether to deploy in multi-instance form
usb_accelboolMount related devices to /dev/bus/usb in all service containers
gpu_accelboolMount related devices to /dev/dri in all service containers
kvm_accelboolMount related devices to /dev/kvm and /dev/vhost-net in all service containers
depends_on[]stringDependencies on other container services, only supports other services within this application, and enforces detection type as healthly, optional

4.2 Functional Configuration

Field NameTypeDescription
file_handlerFileHandlerConfigDeclare file extensions supported by this application, so other applications can call this application when opening specific files
routes[]stringSimplified HTTP related routing rules
upstreams[]UpstreamConfigAdvanced version HTTP related routing rules, coexisting with routes
public_path[]stringList of HTTP paths for independent authentication
workdirstringWorking directory when app container starts
ingress[]IngressConfigTCP/UDP service related
environment[]stringEnvironment variables for app container
health_checkAppHealthCheckExtHealth check for app container, only recommended to set disable field during development and debugging, not recommended to replace, otherwise the system's default injected automatic dependency detection logic will be lost

5. HealthCheckConfig Configuration

5.1 AppHealthCheckExt

Field NameTypeDescription
test_urlstringOnly effective under application field. Extended detection method, directly provides an HTTP URL without relying on curl/wget and other command lines inside the container
disableboolDisable health check for this container
start_periodstringStartup wait period time, if not entering healthly state after exceeding this time range, will become unhealthy
timeoutstringIf a single detection takes longer than timeout, the detection is considered failed

5.2 HealthCheckConfig

Field NameTypeDescription
test[]stringWhat command to execute in the corresponding container for detection, such as: ["CMD", "curl", "-f", "http://localhost"]
timeoutstringIf a single detection takes longer than timeout, this detection is considered failed
intervalstringInterval between each detection
retriesintAfter how many consecutive detection failures, the entire container enters unhealthy state. Default value 1
start_periodstringStartup wait period time, if not entering healthly state after exceeding this time range, will become unhealthy
start_intervalstringDuring the start_period time, how often to execute detection
disableboolDisable health check for this container

6. ExtConfig Configuration

Field NameTypeDescription
enable_document_accessboolIf true, mounts document directory to /lzcapp/run/mnt/home
enable_media_accessboolIf true, mounts media directory to /lzcapp/run/mnt/media
disable_grpc_web_on_rootboolIf true, no longer hijacks application's grpc-web traffic. Needs to work with new version lzc-sdk so system's own grpc-web traffic can be forwarded normally
default_prefix_domainstringWill adjust the final domain opened after clicking the application in the launcher, can write any string without .

7. ServiceConfig Configuration

7.1 Container Configuration

Field NameTypeDescription
imagestringDocker image for the corresponding container
environment[]stringEnvironment variables for the corresponding container
entrypoint*stringEntrypoint for the corresponding container, optional
command*stringCommand for the corresponding container, optional
tmpfs[]stringMount tmpfs volume, optional
depends_on[]stringDependencies on other container services (except the name app), only supports other services within this application, and enforces detection type as healthly, optional
healthcheck*HealthCheckConfigHealth check strategy for the container, old version health_check has been deprecated
user*stringUID or username for container operation, optional
cpu_sharesint64CPU shares
cpusfloat32Number of CPU cores
mem_limitstring|intContainer's memory limit
shm_sizestring|int/dev/shm/ size
network_modestringNetwork mode, currently only supports host or leave empty. If host, the container's network will be the host network space. In this mode, applications must pay attention to authentication when performing network listening, avoid listening on 0.0.0.0 unless necessary
netadminboolIf true, the container has NET_ADMIN permissions and can operate network-related system calls, please do not use unless necessary. If using this feature, please be careful not to disturb iptables related rules
setup_script*stringConfiguration script, script content will be executed with root permissions, then execute original entrypoint content according to OCI specification. This field conflicts with entrypoint and command fields, cannot be set simultaneously, optional
binds[]stringlzcapp container rootfs will be lost after restart, only data under /lzcapp/var, /lzcapp/cache paths will be permanently retained. Therefore, other directories that need to be retained need to be bound under these two directories. This list only supports paths starting with /lzcapp
runtimestringSpecify OCI runtime. Supports runc and sysbox-runc. sysbox-runc has higher isolation, can run complete dockerd, systemd, etc. But does not support namespace sharing related functions like network_mode=host

8. FileHandlerConfig Configuration

8.1 File Processing Configuration

Field NameTypeDescription
mime[]stringList of supported MIME types
actionsmap[string]stringAction mapping

9. HandlersConfig Configuration

9.1 Handler Configuration

Field NameTypeDescription
acl_handlerstringACL handler
error_page_templatesmap[string]stringError page templates, optional

10. UpstreamConfig Configuration

Field NameTypeDescription
locationstringPath matched by entry
disable_trim_locationboolWhen forwarding to backend, do not automatically remove the location prefix (lzcos v1.3.9+)
domain_prefixstringDomain prefix matched by entry
backendstringUpstream address, needs to be a valid url, supports three protocols: http, https, file
use_backend_hostboolIf true, when accessing upstream, the http host header uses the host in backend, not the host when the browser requests
backend_launch_commandstringAutomatically start the program in this field
trim_url_suffixstringAutomatically delete specified characters that the url may carry when requesting backend
disable_backend_ssl_verifyboolDo not perform ssl security verification when requesting backend
disable_auto_health_chekcingboolDisable system automatic health checking generated for this entry
disable_url_raw_pathboolIf true, removes raw URL from HTTP header
remove_this_request_headers[]stringRemove HTTP request headers in this list, such as "Origin", "Referer"
fix_websocket_headerboolAutomatically replace Sec-Websocket-xxx with Sec-WebSocket-xxx
dump_http_headers_when_5xxboolIf HTTP upstream appears 5xx, dump the request
dump_http_headers_when_paths[]stringIf HTTP matches this path, dump the request

11. Localization I10nConfigItem Application Configuration

Configure locales to make applications support multiple languages. For supported language key specifications, refer to BCP 47 standard

Field NameTypeDescription
namestringApplication name localization field
descriptionstringApplication description localization field
usagestringApplication usage instructions localization field
Configuration Example
yml
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple Time Machine Backup
description: Netatalk service can be used for Apple Time Machine backup
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3
lzc-sdk-version: 0.1
package: cloud.lazycat.app.netatalk
version: 0.0.1
name: Apple Time Machine Backup
description: Netatalk service can be used for Apple Time Machine backup
author: Netatalk
locales:
  zh:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  zh_CN:
    name: "Apple 时间机器备份"
    description: "Netatalk 服务可用于 Apple 时间机器备份"
  en:
    name: "Time Machine Server"
    description: "Netatalk service can be used for Apple Time Machine backup"
  ja:
    name: "タイムマシンサーバー"
    description: "Netatalk サービスは Apple Time Machine のバックアップに使用できます"
application:
  subdomain: netatalk3