[{"data":1,"prerenderedAt":3232},["ShallowReactive",2],{"docs-navigation":3,"-docs-templates-example-":150,"-docs-templates-example--surround":3231},[4,43,114,122],{"title":5,"icon":6,"path":7,"stem":8,"children":9},"Get Started","i-lucide-rocket","\u002Fdocs\u002Fget-started","docs\u002F1.get-started\u002Findex",[10,13,18,23,28,33,38],{"title":11,"path":7,"stem":8,"icon":12},"Introduction","i-lucide-compass",{"title":14,"path":15,"stem":16,"icon":17},"Key Concepts","\u002Fdocs\u002Fget-started\u002Fconcepts","docs\u002F1.get-started\u002F2.concepts","i-lucide-lightbulb",{"title":19,"path":20,"stem":21,"icon":22},"Browsing the Catalog","\u002Fdocs\u002Fget-started\u002Fbrowsing-the-catalog","docs\u002F1.get-started\u002F3.browsing-the-catalog","i-lucide-search",{"title":24,"path":25,"stem":26,"icon":27},"Managing Apps","\u002Fdocs\u002Fget-started\u002Fmanaging-apps","docs\u002F1.get-started\u002F4.managing-apps","i-lucide-settings-2",{"title":29,"path":30,"stem":31,"icon":32},"Configuration","\u002Fdocs\u002Fget-started\u002Fconfiguration","docs\u002F1.get-started\u002F5.configuration","i-lucide-sliders-horizontal",{"title":34,"path":35,"stem":36,"icon":37},"Accessing Apps","\u002Fdocs\u002Fget-started\u002Faccessing-apps","docs\u002F1.get-started\u002F6.accessing-apps","i-lucide-globe",{"title":39,"path":40,"stem":41,"icon":42},"Experimental Features","\u002Fdocs\u002Fget-started\u002Fexperimental-features","docs\u002F1.get-started\u002F7.experimental-features","i-lucide-flask-conical",{"title":44,"icon":45,"path":46,"stem":47,"children":48},"Templates","i-lucide-puzzle","\u002Fdocs\u002Ftemplates","docs\u002F2.templates\u002Findex",[49,51,56,79,101,105,109],{"title":11,"path":46,"stem":47,"icon":50},"i-lucide-book-open",{"title":52,"path":53,"stem":54,"icon":55},"Directory Structure","\u002Fdocs\u002Ftemplates\u002Fdirectory-structure","docs\u002F2.templates\u002F1.directory-structure","i-lucide-folder-tree",{"title":29,"icon":57,"path":58,"stem":59,"children":60},"i-lucide-settings","\u002Fdocs\u002Ftemplates\u002Fconfiguration","docs\u002F2.templates\u002F2.configuration\u002Findex",[61,64,69,74],{"title":62,"path":58,"stem":59,"icon":63},"Overview","i-lucide-list",{"title":65,"path":66,"stem":67,"icon":68},"Variables","\u002Fdocs\u002Ftemplates\u002Fconfiguration\u002Fvariables","docs\u002F2.templates\u002F2.configuration\u002F1.variables","i-lucide-braces",{"title":70,"path":71,"stem":72,"icon":73},"Localization","\u002Fdocs\u002Ftemplates\u002Fconfiguration\u002Flocalization","docs\u002F2.templates\u002F2.configuration\u002F2.localization","i-lucide-languages",{"title":75,"path":76,"stem":77,"icon":78},"Merging","\u002Fdocs\u002Ftemplates\u002Fconfiguration\u002Fmerging","docs\u002F2.templates\u002F2.configuration\u002F3.merging","i-lucide-git-merge",{"title":80,"icon":81,"path":82,"stem":83,"children":84},"Lawn Compose","i-lucide-file-code","\u002Fdocs\u002Ftemplates\u002Flawn-compose","docs\u002F2.templates\u002F3.lawn-compose\u002Findex",[85,86,91,96],{"title":62,"path":82,"stem":83,"icon":63},{"title":87,"path":88,"stem":89,"icon":90},"Format","\u002Fdocs\u002Ftemplates\u002Flawn-compose\u002Fformat","docs\u002F2.templates\u002F3.lawn-compose\u002F2.format","i-lucide-list-checks",{"title":92,"path":93,"stem":94,"icon":95},"Extensions","\u002Fdocs\u002Ftemplates\u002Flawn-compose\u002Fextensions","docs\u002F2.templates\u002F3.lawn-compose\u002F3.extensions","i-lucide-blocks",{"title":97,"path":98,"stem":99,"icon":100},"Validation","\u002Fdocs\u002Ftemplates\u002Flawn-compose\u002Fvalidation","docs\u002F2.templates\u002F3.lawn-compose\u002F4.validation","i-lucide-check-circle",{"title":102,"path":103,"stem":104,"icon":42},"Testing","\u002Fdocs\u002Ftemplates\u002Ftesting","docs\u002F2.templates\u002F4.testing",{"title":106,"path":107,"stem":108,"icon":81},"Complete Example","\u002Fdocs\u002Ftemplates\u002Fexample","docs\u002F2.templates\u002F5.example",{"title":110,"path":111,"stem":112,"icon":113},"Contributing","\u002Fdocs\u002Ftemplates\u002Fcontributing","docs\u002F2.templates\u002F6.contributing","i-lucide-git-pull-request",{"title":115,"path":116,"stem":117,"children":118,"icon":121},"Models","\u002Fdocs\u002Finference","docs\u002F3.inference\u002Findex",[119],{"title":11,"path":116,"stem":117,"icon":120},"i-lucide-construction","i-lucide-brain",{"title":123,"icon":124,"path":125,"stem":126,"children":127},"CLI","i-lucide-terminal","\u002Fdocs\u002Fcli","docs\u002F4.cli\u002Findex",[128,129,133,138,142,146],{"title":62,"path":125,"stem":126,"icon":63},{"title":130,"path":131,"stem":132,"icon":22},"lawn catalog","\u002Fdocs\u002Fcli\u002Fcatalog","docs\u002F4.cli\u002F2.catalog",{"title":134,"path":135,"stem":136,"icon":137},"lawn app","\u002Fdocs\u002Fcli\u002Fapp","docs\u002F4.cli\u002F3.app","i-lucide-box",{"title":139,"path":140,"stem":141,"icon":57},"lawn system","\u002Fdocs\u002Fcli\u002Fsystem","docs\u002F4.cli\u002F4.system",{"title":143,"path":144,"stem":145,"icon":81},"lawn compose","\u002Fdocs\u002Fcli\u002Fcompose","docs\u002F4.cli\u002F5.compose",{"title":147,"path":148,"stem":149,"icon":45},"lawn template","\u002Fdocs\u002Fcli\u002Ftemplate","docs\u002F4.cli\u002F6.template",{"id":151,"title":106,"body":152,"description":3223,"extension":3224,"head":3225,"links":3225,"meta":3226,"navigation":3227,"ogImage":3225,"path":107,"robots":3225,"schemaOrg":3225,"seo":3228,"sitemap":3229,"stem":108,"__hash__":3230},"docs\u002Fdocs\u002F2.templates\u002F5.example.md",{"type":153,"value":154,"toc":3214},"minimark",[155,159,163,174,178,181,435,439,442,1716,1720,1723,2854,2858,2865,2911,2915,3124,3127,3132,3179,3188,3210],[156,157,158],"p",{},"This page walks through a complete template that uses every major feature: multiple services, generated secrets, user-provided variables, system variables, health checks, notices, environment metadata, config options, init files, resource limits, and localization.",[160,161,52],"h2",{"id":162},"directory-structure",[164,165,170],"pre",{"className":166,"code":168,"language":169},[167],"language-text","apps\u002F\n└── example-app\u002F\n    ├── manifest.yaml\n    ├── icon.svg\n    ├── locales\u002F\n    │   └── en.json\n    ├── lawn-compose\u002F\n    │   └── v1.0.0.yaml\n    └── init-files\u002F\n        └── custom.config.php\n","text",[171,172,168],"code",{"__ignoreMap":173},"",[160,175,177],{"id":176},"manifestyaml","manifest.yaml",[156,179,180],{},"The manifest defines how the app appears in the catalog.",[164,182,186],{"className":183,"code":184,"filename":177,"language":185,"meta":173,"style":173},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","id: example-app\nname: Example App\ntagline: A full-featured example template\ndescription: |\n  An example app that demonstrates all Lawn template features.\n\n  **Highlights:**\n  Multi-service architecture with a PostgreSQL database,\n  automatic credential generation, and health monitoring.\nicon: app.badge.checkmark\ncategory: Utilities\ncompatibility:\n  minLawnVersion: 0.2.0\ntags:\n  - example\n  - demo\nfeatures:\n  - Automatic admin password generation\n  - PostgreSQL database with health checks\n  - Configuration file injection\nlinks:\n  - url: https:\u002F\u002Fgithub.com\u002Fexample\u002Fexample-app\n    type: github\n  - url: https:\u002F\u002Fexample.com\u002Fdocs\n    type: documentation\nwebPort: 8080\n","yaml",[171,187,188,205,216,227,239,245,252,258,264,270,281,292,301,313,321,330,338,346,354,362,370,378,391,402,414,424],{"__ignoreMap":173},[189,190,193,197,201],"span",{"class":191,"line":192},"line",1,[189,194,196],{"class":195},"swJcz","id",[189,198,200],{"class":199},"sMK4o",":",[189,202,204],{"class":203},"sfazB"," example-app\n",[189,206,208,211,213],{"class":191,"line":207},2,[189,209,210],{"class":195},"name",[189,212,200],{"class":199},[189,214,215],{"class":203}," Example App\n",[189,217,219,222,224],{"class":191,"line":218},3,[189,220,221],{"class":195},"tagline",[189,223,200],{"class":199},[189,225,226],{"class":203}," A full-featured example template\n",[189,228,230,233,235],{"class":191,"line":229},4,[189,231,232],{"class":195},"description",[189,234,200],{"class":199},[189,236,238],{"class":237},"s7zQu"," |\n",[189,240,242],{"class":191,"line":241},5,[189,243,244],{"class":203},"  An example app that demonstrates all Lawn template features.\n",[189,246,248],{"class":191,"line":247},6,[189,249,251],{"emptyLinePlaceholder":250},true,"\n",[189,253,255],{"class":191,"line":254},7,[189,256,257],{"class":203},"  **Highlights:**\n",[189,259,261],{"class":191,"line":260},8,[189,262,263],{"class":203},"  Multi-service architecture with a PostgreSQL database,\n",[189,265,267],{"class":191,"line":266},9,[189,268,269],{"class":203},"  automatic credential generation, and health monitoring.\n",[189,271,273,276,278],{"class":191,"line":272},10,[189,274,275],{"class":195},"icon",[189,277,200],{"class":199},[189,279,280],{"class":203}," app.badge.checkmark\n",[189,282,284,287,289],{"class":191,"line":283},11,[189,285,286],{"class":195},"category",[189,288,200],{"class":199},[189,290,291],{"class":203}," Utilities\n",[189,293,295,298],{"class":191,"line":294},12,[189,296,297],{"class":195},"compatibility",[189,299,300],{"class":199},":\n",[189,302,304,307,309],{"class":191,"line":303},13,[189,305,306],{"class":195},"  minLawnVersion",[189,308,200],{"class":199},[189,310,312],{"class":311},"sbssI"," 0.2.0\n",[189,314,316,319],{"class":191,"line":315},14,[189,317,318],{"class":195},"tags",[189,320,300],{"class":199},[189,322,324,327],{"class":191,"line":323},15,[189,325,326],{"class":199},"  -",[189,328,329],{"class":203}," example\n",[189,331,333,335],{"class":191,"line":332},16,[189,334,326],{"class":199},[189,336,337],{"class":203}," demo\n",[189,339,341,344],{"class":191,"line":340},17,[189,342,343],{"class":195},"features",[189,345,300],{"class":199},[189,347,349,351],{"class":191,"line":348},18,[189,350,326],{"class":199},[189,352,353],{"class":203}," Automatic admin password generation\n",[189,355,357,359],{"class":191,"line":356},19,[189,358,326],{"class":199},[189,360,361],{"class":203}," PostgreSQL database with health checks\n",[189,363,365,367],{"class":191,"line":364},20,[189,366,326],{"class":199},[189,368,369],{"class":203}," Configuration file injection\n",[189,371,373,376],{"class":191,"line":372},21,[189,374,375],{"class":195},"links",[189,377,300],{"class":199},[189,379,381,383,386,388],{"class":191,"line":380},22,[189,382,326],{"class":199},[189,384,385],{"class":195}," url",[189,387,200],{"class":199},[189,389,390],{"class":203}," https:\u002F\u002Fgithub.com\u002Fexample\u002Fexample-app\n",[189,392,394,397,399],{"class":191,"line":393},23,[189,395,396],{"class":195},"    type",[189,398,200],{"class":199},[189,400,401],{"class":203}," github\n",[189,403,405,407,409,411],{"class":191,"line":404},24,[189,406,326],{"class":199},[189,408,385],{"class":195},[189,410,200],{"class":199},[189,412,413],{"class":203}," https:\u002F\u002Fexample.com\u002Fdocs\n",[189,415,417,419,421],{"class":191,"line":416},25,[189,418,396],{"class":195},[189,420,200],{"class":199},[189,422,423],{"class":203}," documentation\n",[189,425,427,430,432],{"class":191,"line":426},26,[189,428,429],{"class":195},"webPort",[189,431,200],{"class":199},[189,433,434],{"class":311}," 8080\n",[160,436,438],{"id":437},"lawn-composev100yaml","lawn-compose\u002Fv1.0.0.yaml",[156,440,441],{},"The compose file defines the services, variables, and Lawn extensions. All user-facing strings (display names, descriptions, labels) live in the localization file — the YAML contains only structural configuration.",[164,443,445],{"className":183,"code":444,"filename":438,"language":185,"meta":173,"style":173},"x-lawn:\n  compatibility:\n    minLawnVersion: 0.2.0\n  config:\n    POSTGRES_PASSWORD:\n      source: generatedSecret\n      length: 32\n    SECRET_KEY:\n      source: generatedSecret\n      length: 50\n    ADMIN_PASSWORD:\n      source: userProvided\n    LOG_LEVEL:\n      value: info\n      weight: 10\n      options:\n        debug:\n          compose:\n            services:\n              app:\n                environment:\n                  LOG_LEVEL: debug\n        info:\n          compose:\n            services:\n              app:\n                environment:\n                  LOG_LEVEL: info\n        warning:\n          compose:\n            services:\n              app:\n                environment:\n                  LOG_LEVEL: warning\n    ENABLE_SIGNUP:\n      inputType: boolean\n      value: true\n      weight: 20\n      options:\n        \"true\":\n          compose:\n            services:\n              app:\n                environment:\n                  ENABLE_SIGNUP: \"true\"\n        \"false\":\n          compose:\n            services:\n              app:\n                environment:\n                  ENABLE_SIGNUP: \"false\"\n\nservices:\n  app:\n    image: example\u002Fapp:1.0.0\n    depends_on:\n      - db\n    environment:\n      DATABASE_URL: \"postgres:\u002F\u002Fpostgres:${POSTGRES_PASSWORD:-changeme}@db:5432\u002Fapp\"\n      SECRET_KEY: \"${SECRET_KEY:-changeme}\"\n      ADMIN_USER: admin\n      ADMIN_PASSWORD: \"${ADMIN_PASSWORD:-admin}\"\n      TZ: \"${TIMEZONE:-UTC}\"\n      PUID: \"${UID:-1000}\"\n      PGID: \"${GID:-1000}\"\n    volumes:\n      - \".\u002Fdata:\u002Fapp\u002Fdata\"\n      - \".\u002Fconfig:\u002Fapp\u002Fconfig\"\n    ports:\n      - \"8080:8080\"\n    deploy:\n      resources:\n        limits:\n          memory: 1024M\n    x-lawn:\n      healthChecks:\n        - id: web-ui\n          type: http\n          path: \u002Fhealth\n          expectedStatus: 200\n      notices:\n        - id: login-credentials\n          style: info\n          elements:\n            - id: username\n              type: field\n              value: admin\n            - id: password\n              type: sourceField\n              source: ADMIN_PASSWORD\n              container: app\n            - id: change-password\n              type: text\n      environment:\n        ADMIN_USER:\n        TZ:\n        PUID:\n        PGID:\n      initFiles:\n        - source: \"custom.config.php\"\n          containerPath: \"\u002Fapp\u002Fconfig\u002Fcustom.config.php\"\n      createDirectories:\n        - \".\u002Fdata\u002Fuploads\"\n        - \".\u002Fdata\u002Fcache\"\n\n  db:\n    image: postgres:15\n    environment:\n      POSTGRES_DB: app\n      POSTGRES_USER: postgres\n      POSTGRES_PASSWORD: \"${POSTGRES_PASSWORD:-changeme}\"\n      PGDATA: \u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\u002Fpgdata\n    volumes:\n      - \".\u002Fpostgres:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\"\n    healthcheck:\n      test: [\"CMD\", \"pg_isready\", \"-U\", \"postgres\"]\n      interval: 10s\n      timeout: 5s\n      retries: 5\n    x-lawn:\n      healthChecks:\n        - id: db-ready\n          type: command\n          command: [\"\u002Fbin\u002Fsh\", \"-c\", \"pg_isready -U postgres\"]\n      environment:\n        POSTGRES_DB:\n        POSTGRES_USER:\n        PGDATA:\n",[171,446,447,454,461,470,477,484,494,504,511,519,528,535,544,551,561,571,578,585,592,599,606,613,623,630,636,642,648,655,664,672,679,686,693,700,710,718,729,740,750,757,771,778,785,792,799,815,827,834,841,848,855,868,873,881,889,900,908,917,925,940,955,966,981,996,1011,1026,1034,1046,1058,1066,1078,1086,1094,1102,1113,1121,1129,1143,1154,1165,1176,1184,1196,1206,1214,1227,1238,1248,1260,1270,1281,1292,1304,1314,1322,1330,1338,1346,1354,1362,1379,1394,1402,1414,1426,1431,1439,1449,1456,1466,1477,1492,1503,1510,1522,1530,1579,1590,1601,1612,1619,1626,1638,1648,1685,1692,1700,1708],{"__ignoreMap":173},[189,448,449,452],{"class":191,"line":192},[189,450,451],{"class":195},"x-lawn",[189,453,300],{"class":199},[189,455,456,459],{"class":191,"line":207},[189,457,458],{"class":195},"  compatibility",[189,460,300],{"class":199},[189,462,463,466,468],{"class":191,"line":218},[189,464,465],{"class":195},"    minLawnVersion",[189,467,200],{"class":199},[189,469,312],{"class":311},[189,471,472,475],{"class":191,"line":229},[189,473,474],{"class":195},"  config",[189,476,300],{"class":199},[189,478,479,482],{"class":191,"line":241},[189,480,481],{"class":195},"    POSTGRES_PASSWORD",[189,483,300],{"class":199},[189,485,486,489,491],{"class":191,"line":247},[189,487,488],{"class":195},"      source",[189,490,200],{"class":199},[189,492,493],{"class":203}," generatedSecret\n",[189,495,496,499,501],{"class":191,"line":254},[189,497,498],{"class":195},"      length",[189,500,200],{"class":199},[189,502,503],{"class":311}," 32\n",[189,505,506,509],{"class":191,"line":260},[189,507,508],{"class":195},"    SECRET_KEY",[189,510,300],{"class":199},[189,512,513,515,517],{"class":191,"line":266},[189,514,488],{"class":195},[189,516,200],{"class":199},[189,518,493],{"class":203},[189,520,521,523,525],{"class":191,"line":272},[189,522,498],{"class":195},[189,524,200],{"class":199},[189,526,527],{"class":311}," 50\n",[189,529,530,533],{"class":191,"line":283},[189,531,532],{"class":195},"    ADMIN_PASSWORD",[189,534,300],{"class":199},[189,536,537,539,541],{"class":191,"line":294},[189,538,488],{"class":195},[189,540,200],{"class":199},[189,542,543],{"class":203}," userProvided\n",[189,545,546,549],{"class":191,"line":303},[189,547,548],{"class":195},"    LOG_LEVEL",[189,550,300],{"class":199},[189,552,553,556,558],{"class":191,"line":315},[189,554,555],{"class":195},"      value",[189,557,200],{"class":199},[189,559,560],{"class":203}," info\n",[189,562,563,566,568],{"class":191,"line":323},[189,564,565],{"class":195},"      weight",[189,567,200],{"class":199},[189,569,570],{"class":311}," 10\n",[189,572,573,576],{"class":191,"line":332},[189,574,575],{"class":195},"      options",[189,577,300],{"class":199},[189,579,580,583],{"class":191,"line":340},[189,581,582],{"class":195},"        debug",[189,584,300],{"class":199},[189,586,587,590],{"class":191,"line":348},[189,588,589],{"class":195},"          compose",[189,591,300],{"class":199},[189,593,594,597],{"class":191,"line":356},[189,595,596],{"class":195},"            services",[189,598,300],{"class":199},[189,600,601,604],{"class":191,"line":364},[189,602,603],{"class":195},"              app",[189,605,300],{"class":199},[189,607,608,611],{"class":191,"line":372},[189,609,610],{"class":195},"                environment",[189,612,300],{"class":199},[189,614,615,618,620],{"class":191,"line":380},[189,616,617],{"class":195},"                  LOG_LEVEL",[189,619,200],{"class":199},[189,621,622],{"class":203}," debug\n",[189,624,625,628],{"class":191,"line":393},[189,626,627],{"class":195},"        info",[189,629,300],{"class":199},[189,631,632,634],{"class":191,"line":404},[189,633,589],{"class":195},[189,635,300],{"class":199},[189,637,638,640],{"class":191,"line":416},[189,639,596],{"class":195},[189,641,300],{"class":199},[189,643,644,646],{"class":191,"line":426},[189,645,603],{"class":195},[189,647,300],{"class":199},[189,649,651,653],{"class":191,"line":650},27,[189,652,610],{"class":195},[189,654,300],{"class":199},[189,656,658,660,662],{"class":191,"line":657},28,[189,659,617],{"class":195},[189,661,200],{"class":199},[189,663,560],{"class":203},[189,665,667,670],{"class":191,"line":666},29,[189,668,669],{"class":195},"        warning",[189,671,300],{"class":199},[189,673,675,677],{"class":191,"line":674},30,[189,676,589],{"class":195},[189,678,300],{"class":199},[189,680,682,684],{"class":191,"line":681},31,[189,683,596],{"class":195},[189,685,300],{"class":199},[189,687,689,691],{"class":191,"line":688},32,[189,690,603],{"class":195},[189,692,300],{"class":199},[189,694,696,698],{"class":191,"line":695},33,[189,697,610],{"class":195},[189,699,300],{"class":199},[189,701,703,705,707],{"class":191,"line":702},34,[189,704,617],{"class":195},[189,706,200],{"class":199},[189,708,709],{"class":203}," warning\n",[189,711,713,716],{"class":191,"line":712},35,[189,714,715],{"class":195},"    ENABLE_SIGNUP",[189,717,300],{"class":199},[189,719,721,724,726],{"class":191,"line":720},36,[189,722,723],{"class":195},"      inputType",[189,725,200],{"class":199},[189,727,728],{"class":203}," boolean\n",[189,730,732,734,736],{"class":191,"line":731},37,[189,733,555],{"class":195},[189,735,200],{"class":199},[189,737,739],{"class":738},"sfNiH"," true\n",[189,741,743,745,747],{"class":191,"line":742},38,[189,744,565],{"class":195},[189,746,200],{"class":199},[189,748,749],{"class":311}," 20\n",[189,751,753,755],{"class":191,"line":752},39,[189,754,575],{"class":195},[189,756,300],{"class":199},[189,758,760,763,766,769],{"class":191,"line":759},40,[189,761,762],{"class":199},"        \"",[189,764,765],{"class":203},"true",[189,767,768],{"class":199},"\"",[189,770,300],{"class":199},[189,772,774,776],{"class":191,"line":773},41,[189,775,589],{"class":195},[189,777,300],{"class":199},[189,779,781,783],{"class":191,"line":780},42,[189,782,596],{"class":195},[189,784,300],{"class":199},[189,786,788,790],{"class":191,"line":787},43,[189,789,603],{"class":195},[189,791,300],{"class":199},[189,793,795,797],{"class":191,"line":794},44,[189,796,610],{"class":195},[189,798,300],{"class":199},[189,800,802,805,807,810,812],{"class":191,"line":801},45,[189,803,804],{"class":195},"                  ENABLE_SIGNUP",[189,806,200],{"class":199},[189,808,809],{"class":199}," \"",[189,811,765],{"class":203},[189,813,814],{"class":199},"\"\n",[189,816,818,820,823,825],{"class":191,"line":817},46,[189,819,762],{"class":199},[189,821,822],{"class":203},"false",[189,824,768],{"class":199},[189,826,300],{"class":199},[189,828,830,832],{"class":191,"line":829},47,[189,831,589],{"class":195},[189,833,300],{"class":199},[189,835,837,839],{"class":191,"line":836},48,[189,838,596],{"class":195},[189,840,300],{"class":199},[189,842,844,846],{"class":191,"line":843},49,[189,845,603],{"class":195},[189,847,300],{"class":199},[189,849,851,853],{"class":191,"line":850},50,[189,852,610],{"class":195},[189,854,300],{"class":199},[189,856,858,860,862,864,866],{"class":191,"line":857},51,[189,859,804],{"class":195},[189,861,200],{"class":199},[189,863,809],{"class":199},[189,865,822],{"class":203},[189,867,814],{"class":199},[189,869,871],{"class":191,"line":870},52,[189,872,251],{"emptyLinePlaceholder":250},[189,874,876,879],{"class":191,"line":875},53,[189,877,878],{"class":195},"services",[189,880,300],{"class":199},[189,882,884,887],{"class":191,"line":883},54,[189,885,886],{"class":195},"  app",[189,888,300],{"class":199},[189,890,892,895,897],{"class":191,"line":891},55,[189,893,894],{"class":195},"    image",[189,896,200],{"class":199},[189,898,899],{"class":203}," example\u002Fapp:1.0.0\n",[189,901,903,906],{"class":191,"line":902},56,[189,904,905],{"class":195},"    depends_on",[189,907,300],{"class":199},[189,909,911,914],{"class":191,"line":910},57,[189,912,913],{"class":199},"      -",[189,915,916],{"class":203}," db\n",[189,918,920,923],{"class":191,"line":919},58,[189,921,922],{"class":195},"    environment",[189,924,300],{"class":199},[189,926,928,931,933,935,938],{"class":191,"line":927},59,[189,929,930],{"class":195},"      DATABASE_URL",[189,932,200],{"class":199},[189,934,809],{"class":199},[189,936,937],{"class":203},"postgres:\u002F\u002Fpostgres:${POSTGRES_PASSWORD:-changeme}@db:5432\u002Fapp",[189,939,814],{"class":199},[189,941,943,946,948,950,953],{"class":191,"line":942},60,[189,944,945],{"class":195},"      SECRET_KEY",[189,947,200],{"class":199},[189,949,809],{"class":199},[189,951,952],{"class":203},"${SECRET_KEY:-changeme}",[189,954,814],{"class":199},[189,956,958,961,963],{"class":191,"line":957},61,[189,959,960],{"class":195},"      ADMIN_USER",[189,962,200],{"class":199},[189,964,965],{"class":203}," admin\n",[189,967,969,972,974,976,979],{"class":191,"line":968},62,[189,970,971],{"class":195},"      ADMIN_PASSWORD",[189,973,200],{"class":199},[189,975,809],{"class":199},[189,977,978],{"class":203},"${ADMIN_PASSWORD:-admin}",[189,980,814],{"class":199},[189,982,984,987,989,991,994],{"class":191,"line":983},63,[189,985,986],{"class":195},"      TZ",[189,988,200],{"class":199},[189,990,809],{"class":199},[189,992,993],{"class":203},"${TIMEZONE:-UTC}",[189,995,814],{"class":199},[189,997,999,1002,1004,1006,1009],{"class":191,"line":998},64,[189,1000,1001],{"class":195},"      PUID",[189,1003,200],{"class":199},[189,1005,809],{"class":199},[189,1007,1008],{"class":203},"${UID:-1000}",[189,1010,814],{"class":199},[189,1012,1014,1017,1019,1021,1024],{"class":191,"line":1013},65,[189,1015,1016],{"class":195},"      PGID",[189,1018,200],{"class":199},[189,1020,809],{"class":199},[189,1022,1023],{"class":203},"${GID:-1000}",[189,1025,814],{"class":199},[189,1027,1029,1032],{"class":191,"line":1028},66,[189,1030,1031],{"class":195},"    volumes",[189,1033,300],{"class":199},[189,1035,1037,1039,1041,1044],{"class":191,"line":1036},67,[189,1038,913],{"class":199},[189,1040,809],{"class":199},[189,1042,1043],{"class":203},".\u002Fdata:\u002Fapp\u002Fdata",[189,1045,814],{"class":199},[189,1047,1049,1051,1053,1056],{"class":191,"line":1048},68,[189,1050,913],{"class":199},[189,1052,809],{"class":199},[189,1054,1055],{"class":203},".\u002Fconfig:\u002Fapp\u002Fconfig",[189,1057,814],{"class":199},[189,1059,1061,1064],{"class":191,"line":1060},69,[189,1062,1063],{"class":195},"    ports",[189,1065,300],{"class":199},[189,1067,1069,1071,1073,1076],{"class":191,"line":1068},70,[189,1070,913],{"class":199},[189,1072,809],{"class":199},[189,1074,1075],{"class":203},"8080:8080",[189,1077,814],{"class":199},[189,1079,1081,1084],{"class":191,"line":1080},71,[189,1082,1083],{"class":195},"    deploy",[189,1085,300],{"class":199},[189,1087,1089,1092],{"class":191,"line":1088},72,[189,1090,1091],{"class":195},"      resources",[189,1093,300],{"class":199},[189,1095,1097,1100],{"class":191,"line":1096},73,[189,1098,1099],{"class":195},"        limits",[189,1101,300],{"class":199},[189,1103,1105,1108,1110],{"class":191,"line":1104},74,[189,1106,1107],{"class":195},"          memory",[189,1109,200],{"class":199},[189,1111,1112],{"class":203}," 1024M\n",[189,1114,1116,1119],{"class":191,"line":1115},75,[189,1117,1118],{"class":195},"    x-lawn",[189,1120,300],{"class":199},[189,1122,1124,1127],{"class":191,"line":1123},76,[189,1125,1126],{"class":195},"      healthChecks",[189,1128,300],{"class":199},[189,1130,1132,1135,1138,1140],{"class":191,"line":1131},77,[189,1133,1134],{"class":199},"        -",[189,1136,1137],{"class":195}," id",[189,1139,200],{"class":199},[189,1141,1142],{"class":203}," web-ui\n",[189,1144,1146,1149,1151],{"class":191,"line":1145},78,[189,1147,1148],{"class":195},"          type",[189,1150,200],{"class":199},[189,1152,1153],{"class":203}," http\n",[189,1155,1157,1160,1162],{"class":191,"line":1156},79,[189,1158,1159],{"class":195},"          path",[189,1161,200],{"class":199},[189,1163,1164],{"class":203}," \u002Fhealth\n",[189,1166,1168,1171,1173],{"class":191,"line":1167},80,[189,1169,1170],{"class":195},"          expectedStatus",[189,1172,200],{"class":199},[189,1174,1175],{"class":311}," 200\n",[189,1177,1179,1182],{"class":191,"line":1178},81,[189,1180,1181],{"class":195},"      notices",[189,1183,300],{"class":199},[189,1185,1187,1189,1191,1193],{"class":191,"line":1186},82,[189,1188,1134],{"class":199},[189,1190,1137],{"class":195},[189,1192,200],{"class":199},[189,1194,1195],{"class":203}," login-credentials\n",[189,1197,1199,1202,1204],{"class":191,"line":1198},83,[189,1200,1201],{"class":195},"          style",[189,1203,200],{"class":199},[189,1205,560],{"class":203},[189,1207,1209,1212],{"class":191,"line":1208},84,[189,1210,1211],{"class":195},"          elements",[189,1213,300],{"class":199},[189,1215,1217,1220,1222,1224],{"class":191,"line":1216},85,[189,1218,1219],{"class":199},"            -",[189,1221,1137],{"class":195},[189,1223,200],{"class":199},[189,1225,1226],{"class":203}," username\n",[189,1228,1230,1233,1235],{"class":191,"line":1229},86,[189,1231,1232],{"class":195},"              type",[189,1234,200],{"class":199},[189,1236,1237],{"class":203}," field\n",[189,1239,1241,1244,1246],{"class":191,"line":1240},87,[189,1242,1243],{"class":195},"              value",[189,1245,200],{"class":199},[189,1247,965],{"class":203},[189,1249,1251,1253,1255,1257],{"class":191,"line":1250},88,[189,1252,1219],{"class":199},[189,1254,1137],{"class":195},[189,1256,200],{"class":199},[189,1258,1259],{"class":203}," password\n",[189,1261,1263,1265,1267],{"class":191,"line":1262},89,[189,1264,1232],{"class":195},[189,1266,200],{"class":199},[189,1268,1269],{"class":203}," sourceField\n",[189,1271,1273,1276,1278],{"class":191,"line":1272},90,[189,1274,1275],{"class":195},"              source",[189,1277,200],{"class":199},[189,1279,1280],{"class":203}," ADMIN_PASSWORD\n",[189,1282,1284,1287,1289],{"class":191,"line":1283},91,[189,1285,1286],{"class":195},"              container",[189,1288,200],{"class":199},[189,1290,1291],{"class":203}," app\n",[189,1293,1295,1297,1299,1301],{"class":191,"line":1294},92,[189,1296,1219],{"class":199},[189,1298,1137],{"class":195},[189,1300,200],{"class":199},[189,1302,1303],{"class":203}," change-password\n",[189,1305,1307,1309,1311],{"class":191,"line":1306},93,[189,1308,1232],{"class":195},[189,1310,200],{"class":199},[189,1312,1313],{"class":203}," text\n",[189,1315,1317,1320],{"class":191,"line":1316},94,[189,1318,1319],{"class":195},"      environment",[189,1321,300],{"class":199},[189,1323,1325,1328],{"class":191,"line":1324},95,[189,1326,1327],{"class":195},"        ADMIN_USER",[189,1329,300],{"class":199},[189,1331,1333,1336],{"class":191,"line":1332},96,[189,1334,1335],{"class":195},"        TZ",[189,1337,300],{"class":199},[189,1339,1341,1344],{"class":191,"line":1340},97,[189,1342,1343],{"class":195},"        PUID",[189,1345,300],{"class":199},[189,1347,1349,1352],{"class":191,"line":1348},98,[189,1350,1351],{"class":195},"        PGID",[189,1353,300],{"class":199},[189,1355,1357,1360],{"class":191,"line":1356},99,[189,1358,1359],{"class":195},"      initFiles",[189,1361,300],{"class":199},[189,1363,1365,1367,1370,1372,1374,1377],{"class":191,"line":1364},100,[189,1366,1134],{"class":199},[189,1368,1369],{"class":195}," source",[189,1371,200],{"class":199},[189,1373,809],{"class":199},[189,1375,1376],{"class":203},"custom.config.php",[189,1378,814],{"class":199},[189,1380,1382,1385,1387,1389,1392],{"class":191,"line":1381},101,[189,1383,1384],{"class":195},"          containerPath",[189,1386,200],{"class":199},[189,1388,809],{"class":199},[189,1390,1391],{"class":203},"\u002Fapp\u002Fconfig\u002Fcustom.config.php",[189,1393,814],{"class":199},[189,1395,1397,1400],{"class":191,"line":1396},102,[189,1398,1399],{"class":195},"      createDirectories",[189,1401,300],{"class":199},[189,1403,1405,1407,1409,1412],{"class":191,"line":1404},103,[189,1406,1134],{"class":199},[189,1408,809],{"class":199},[189,1410,1411],{"class":203},".\u002Fdata\u002Fuploads",[189,1413,814],{"class":199},[189,1415,1417,1419,1421,1424],{"class":191,"line":1416},104,[189,1418,1134],{"class":199},[189,1420,809],{"class":199},[189,1422,1423],{"class":203},".\u002Fdata\u002Fcache",[189,1425,814],{"class":199},[189,1427,1429],{"class":191,"line":1428},105,[189,1430,251],{"emptyLinePlaceholder":250},[189,1432,1434,1437],{"class":191,"line":1433},106,[189,1435,1436],{"class":195},"  db",[189,1438,300],{"class":199},[189,1440,1442,1444,1446],{"class":191,"line":1441},107,[189,1443,894],{"class":195},[189,1445,200],{"class":199},[189,1447,1448],{"class":203}," postgres:15\n",[189,1450,1452,1454],{"class":191,"line":1451},108,[189,1453,922],{"class":195},[189,1455,300],{"class":199},[189,1457,1459,1462,1464],{"class":191,"line":1458},109,[189,1460,1461],{"class":195},"      POSTGRES_DB",[189,1463,200],{"class":199},[189,1465,1291],{"class":203},[189,1467,1469,1472,1474],{"class":191,"line":1468},110,[189,1470,1471],{"class":195},"      POSTGRES_USER",[189,1473,200],{"class":199},[189,1475,1476],{"class":203}," postgres\n",[189,1478,1480,1483,1485,1487,1490],{"class":191,"line":1479},111,[189,1481,1482],{"class":195},"      POSTGRES_PASSWORD",[189,1484,200],{"class":199},[189,1486,809],{"class":199},[189,1488,1489],{"class":203},"${POSTGRES_PASSWORD:-changeme}",[189,1491,814],{"class":199},[189,1493,1495,1498,1500],{"class":191,"line":1494},112,[189,1496,1497],{"class":195},"      PGDATA",[189,1499,200],{"class":199},[189,1501,1502],{"class":203}," \u002Fvar\u002Flib\u002Fpostgresql\u002Fdata\u002Fpgdata\n",[189,1504,1506,1508],{"class":191,"line":1505},113,[189,1507,1031],{"class":195},[189,1509,300],{"class":199},[189,1511,1513,1515,1517,1520],{"class":191,"line":1512},114,[189,1514,913],{"class":199},[189,1516,809],{"class":199},[189,1518,1519],{"class":203},".\u002Fpostgres:\u002Fvar\u002Flib\u002Fpostgresql\u002Fdata",[189,1521,814],{"class":199},[189,1523,1525,1528],{"class":191,"line":1524},115,[189,1526,1527],{"class":195},"    healthcheck",[189,1529,300],{"class":199},[189,1531,1533,1536,1538,1541,1543,1546,1548,1551,1553,1556,1558,1560,1562,1565,1567,1569,1571,1574,1576],{"class":191,"line":1532},116,[189,1534,1535],{"class":195},"      test",[189,1537,200],{"class":199},[189,1539,1540],{"class":199}," [",[189,1542,768],{"class":199},[189,1544,1545],{"class":203},"CMD",[189,1547,768],{"class":199},[189,1549,1550],{"class":199},",",[189,1552,809],{"class":199},[189,1554,1555],{"class":203},"pg_isready",[189,1557,768],{"class":199},[189,1559,1550],{"class":199},[189,1561,809],{"class":199},[189,1563,1564],{"class":203},"-U",[189,1566,768],{"class":199},[189,1568,1550],{"class":199},[189,1570,809],{"class":199},[189,1572,1573],{"class":203},"postgres",[189,1575,768],{"class":199},[189,1577,1578],{"class":199},"]\n",[189,1580,1582,1585,1587],{"class":191,"line":1581},117,[189,1583,1584],{"class":195},"      interval",[189,1586,200],{"class":199},[189,1588,1589],{"class":203}," 10s\n",[189,1591,1593,1596,1598],{"class":191,"line":1592},118,[189,1594,1595],{"class":195},"      timeout",[189,1597,200],{"class":199},[189,1599,1600],{"class":203}," 5s\n",[189,1602,1604,1607,1609],{"class":191,"line":1603},119,[189,1605,1606],{"class":195},"      retries",[189,1608,200],{"class":199},[189,1610,1611],{"class":311}," 5\n",[189,1613,1615,1617],{"class":191,"line":1614},120,[189,1616,1118],{"class":195},[189,1618,300],{"class":199},[189,1620,1622,1624],{"class":191,"line":1621},121,[189,1623,1126],{"class":195},[189,1625,300],{"class":199},[189,1627,1629,1631,1633,1635],{"class":191,"line":1628},122,[189,1630,1134],{"class":199},[189,1632,1137],{"class":195},[189,1634,200],{"class":199},[189,1636,1637],{"class":203}," db-ready\n",[189,1639,1641,1643,1645],{"class":191,"line":1640},123,[189,1642,1148],{"class":195},[189,1644,200],{"class":199},[189,1646,1647],{"class":203}," command\n",[189,1649,1651,1654,1656,1658,1660,1663,1665,1667,1669,1672,1674,1676,1678,1681,1683],{"class":191,"line":1650},124,[189,1652,1653],{"class":195},"          command",[189,1655,200],{"class":199},[189,1657,1540],{"class":199},[189,1659,768],{"class":199},[189,1661,1662],{"class":203},"\u002Fbin\u002Fsh",[189,1664,768],{"class":199},[189,1666,1550],{"class":199},[189,1668,809],{"class":199},[189,1670,1671],{"class":203},"-c",[189,1673,768],{"class":199},[189,1675,1550],{"class":199},[189,1677,809],{"class":199},[189,1679,1680],{"class":203},"pg_isready -U postgres",[189,1682,768],{"class":199},[189,1684,1578],{"class":199},[189,1686,1688,1690],{"class":191,"line":1687},125,[189,1689,1319],{"class":195},[189,1691,300],{"class":199},[189,1693,1695,1698],{"class":191,"line":1694},126,[189,1696,1697],{"class":195},"        POSTGRES_DB",[189,1699,300],{"class":199},[189,1701,1703,1706],{"class":191,"line":1702},127,[189,1704,1705],{"class":195},"        POSTGRES_USER",[189,1707,300],{"class":199},[189,1709,1711,1714],{"class":191,"line":1710},128,[189,1712,1713],{"class":195},"        PGDATA",[189,1715,300],{"class":199},[160,1717,1719],{"id":1718},"localesenjson","locales\u002Fen.json",[156,1721,1722],{},"The localization file provides all user-facing strings. Keys match the variable names, health check IDs, notice IDs, and element IDs from the YAML.",[164,1724,1728],{"className":1725,"code":1726,"filename":1719,"language":1727,"meta":173,"style":173},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"config\": {\n    \"POSTGRES_PASSWORD\": {\n      \"displayName\": \"Database Password\",\n      \"description\": \"PostgreSQL superuser password. Auto-generated during install.\"\n    },\n    \"SECRET_KEY\": {\n      \"displayName\": \"Secret Key\",\n      \"description\": \"Application secret key for session signing.\"\n    },\n    \"ADMIN_PASSWORD\": {\n      \"displayName\": \"Admin Password\",\n      \"description\": \"Password for the admin account.\"\n    },\n    \"LOG_LEVEL\": {\n      \"displayName\": \"Log Level\",\n      \"description\": \"Controls how much detail the application logs.\",\n      \"options\": {\n        \"debug\": { \"label\": \"Debug\" },\n        \"info\": { \"label\": \"Info\" },\n        \"warning\": { \"label\": \"Warning\" }\n      }\n    },\n    \"ENABLE_SIGNUP\": {\n      \"displayName\": \"Public Sign-up\",\n      \"description\": \"Allow new users to create accounts.\",\n      \"options\": {\n        \"true\": { \"label\": \"On\" },\n        \"false\": { \"label\": \"Off\" }\n      }\n    }\n  },\n  \"services\": {\n    \"app\": {\n      \"environment\": {\n        \"ADMIN_USER\": {\n          \"description\": \"Username for the admin account.\"\n        },\n        \"TZ\": {\n          \"description\": \"Timezone for date display and scheduling.\"\n        },\n        \"PUID\": {\n          \"description\": \"User ID for file ownership inside the container.\",\n          \"group\": \"Permissions\"\n        },\n        \"PGID\": {\n          \"description\": \"Group ID for file ownership inside the container.\",\n          \"group\": \"Permissions\"\n        }\n      },\n      \"healthChecks\": {\n        \"web-ui\": {\n          \"description\": \"Web UI is accessible and responding.\"\n        }\n      },\n      \"notices\": {\n        \"login-credentials\": {\n          \"title\": \"Login Credentials\",\n          \"elements\": {\n            \"username\": { \"label\": \"Username\" },\n            \"password\": { \"label\": \"Password\" },\n            \"change-password\": { \"content\": \"Change these in **Settings > Security** after your first login.\" }\n          }\n        }\n      }\n    },\n    \"db\": {\n      \"environment\": {\n        \"POSTGRES_DB\": {\n          \"description\": \"Name of the PostgreSQL database.\"\n        },\n        \"POSTGRES_USER\": {\n          \"description\": \"PostgreSQL username.\"\n        },\n        \"PGDATA\": {\n          \"description\": \"Data directory inside the container. Do not change.\"\n        }\n      },\n      \"healthChecks\": {\n        \"db-ready\": {\n          \"description\": \"Database is accepting connections.\"\n        }\n      }\n    }\n  }\n}\n","json",[171,1729,1730,1735,1751,1766,1788,1805,1810,1823,1842,1859,1863,1876,1895,1912,1916,1929,1948,1967,1980,2014,2044,2075,2080,2084,2097,2116,2135,2147,2176,2205,2209,2214,2219,2231,2244,2257,2270,2288,2293,2306,2323,2327,2340,2359,2377,2381,2394,2413,2429,2434,2439,2452,2465,2482,2486,2490,2503,2516,2536,2549,2581,2611,2642,2647,2651,2655,2659,2672,2684,2697,2714,2718,2731,2748,2752,2765,2782,2786,2790,2802,2815,2832,2836,2840,2844,2849],{"__ignoreMap":173},[189,1731,1732],{"class":191,"line":192},[189,1733,1734],{"class":199},"{\n",[189,1736,1737,1740,1744,1746,1748],{"class":191,"line":207},[189,1738,1739],{"class":199},"  \"",[189,1741,1743],{"class":1742},"spNyl","config",[189,1745,768],{"class":199},[189,1747,200],{"class":199},[189,1749,1750],{"class":199}," {\n",[189,1752,1753,1756,1760,1762,1764],{"class":191,"line":218},[189,1754,1755],{"class":199},"    \"",[189,1757,1759],{"class":1758},"sBMFI","POSTGRES_PASSWORD",[189,1761,768],{"class":199},[189,1763,200],{"class":199},[189,1765,1750],{"class":199},[189,1767,1768,1771,1774,1776,1778,1780,1783,1785],{"class":191,"line":229},[189,1769,1770],{"class":199},"      \"",[189,1772,1773],{"class":311},"displayName",[189,1775,768],{"class":199},[189,1777,200],{"class":199},[189,1779,809],{"class":199},[189,1781,1782],{"class":203},"Database Password",[189,1784,768],{"class":199},[189,1786,1787],{"class":199},",\n",[189,1789,1790,1792,1794,1796,1798,1800,1803],{"class":191,"line":241},[189,1791,1770],{"class":199},[189,1793,232],{"class":311},[189,1795,768],{"class":199},[189,1797,200],{"class":199},[189,1799,809],{"class":199},[189,1801,1802],{"class":203},"PostgreSQL superuser password. Auto-generated during install.",[189,1804,814],{"class":199},[189,1806,1807],{"class":191,"line":247},[189,1808,1809],{"class":199},"    },\n",[189,1811,1812,1814,1817,1819,1821],{"class":191,"line":254},[189,1813,1755],{"class":199},[189,1815,1816],{"class":1758},"SECRET_KEY",[189,1818,768],{"class":199},[189,1820,200],{"class":199},[189,1822,1750],{"class":199},[189,1824,1825,1827,1829,1831,1833,1835,1838,1840],{"class":191,"line":260},[189,1826,1770],{"class":199},[189,1828,1773],{"class":311},[189,1830,768],{"class":199},[189,1832,200],{"class":199},[189,1834,809],{"class":199},[189,1836,1837],{"class":203},"Secret Key",[189,1839,768],{"class":199},[189,1841,1787],{"class":199},[189,1843,1844,1846,1848,1850,1852,1854,1857],{"class":191,"line":266},[189,1845,1770],{"class":199},[189,1847,232],{"class":311},[189,1849,768],{"class":199},[189,1851,200],{"class":199},[189,1853,809],{"class":199},[189,1855,1856],{"class":203},"Application secret key for session signing.",[189,1858,814],{"class":199},[189,1860,1861],{"class":191,"line":272},[189,1862,1809],{"class":199},[189,1864,1865,1867,1870,1872,1874],{"class":191,"line":283},[189,1866,1755],{"class":199},[189,1868,1869],{"class":1758},"ADMIN_PASSWORD",[189,1871,768],{"class":199},[189,1873,200],{"class":199},[189,1875,1750],{"class":199},[189,1877,1878,1880,1882,1884,1886,1888,1891,1893],{"class":191,"line":294},[189,1879,1770],{"class":199},[189,1881,1773],{"class":311},[189,1883,768],{"class":199},[189,1885,200],{"class":199},[189,1887,809],{"class":199},[189,1889,1890],{"class":203},"Admin Password",[189,1892,768],{"class":199},[189,1894,1787],{"class":199},[189,1896,1897,1899,1901,1903,1905,1907,1910],{"class":191,"line":303},[189,1898,1770],{"class":199},[189,1900,232],{"class":311},[189,1902,768],{"class":199},[189,1904,200],{"class":199},[189,1906,809],{"class":199},[189,1908,1909],{"class":203},"Password for the admin account.",[189,1911,814],{"class":199},[189,1913,1914],{"class":191,"line":315},[189,1915,1809],{"class":199},[189,1917,1918,1920,1923,1925,1927],{"class":191,"line":323},[189,1919,1755],{"class":199},[189,1921,1922],{"class":1758},"LOG_LEVEL",[189,1924,768],{"class":199},[189,1926,200],{"class":199},[189,1928,1750],{"class":199},[189,1930,1931,1933,1935,1937,1939,1941,1944,1946],{"class":191,"line":332},[189,1932,1770],{"class":199},[189,1934,1773],{"class":311},[189,1936,768],{"class":199},[189,1938,200],{"class":199},[189,1940,809],{"class":199},[189,1942,1943],{"class":203},"Log Level",[189,1945,768],{"class":199},[189,1947,1787],{"class":199},[189,1949,1950,1952,1954,1956,1958,1960,1963,1965],{"class":191,"line":340},[189,1951,1770],{"class":199},[189,1953,232],{"class":311},[189,1955,768],{"class":199},[189,1957,200],{"class":199},[189,1959,809],{"class":199},[189,1961,1962],{"class":203},"Controls how much detail the application logs.",[189,1964,768],{"class":199},[189,1966,1787],{"class":199},[189,1968,1969,1971,1974,1976,1978],{"class":191,"line":348},[189,1970,1770],{"class":199},[189,1972,1973],{"class":311},"options",[189,1975,768],{"class":199},[189,1977,200],{"class":199},[189,1979,1750],{"class":199},[189,1981,1982,1984,1987,1989,1991,1994,1996,2000,2002,2004,2006,2009,2011],{"class":191,"line":356},[189,1983,762],{"class":199},[189,1985,1986],{"class":195},"debug",[189,1988,768],{"class":199},[189,1990,200],{"class":199},[189,1992,1993],{"class":199}," {",[189,1995,809],{"class":199},[189,1997,1999],{"class":1998},"su27w","label",[189,2001,768],{"class":199},[189,2003,200],{"class":199},[189,2005,809],{"class":199},[189,2007,2008],{"class":203},"Debug",[189,2010,768],{"class":199},[189,2012,2013],{"class":199}," },\n",[189,2015,2016,2018,2021,2023,2025,2027,2029,2031,2033,2035,2037,2040,2042],{"class":191,"line":364},[189,2017,762],{"class":199},[189,2019,2020],{"class":195},"info",[189,2022,768],{"class":199},[189,2024,200],{"class":199},[189,2026,1993],{"class":199},[189,2028,809],{"class":199},[189,2030,1999],{"class":1998},[189,2032,768],{"class":199},[189,2034,200],{"class":199},[189,2036,809],{"class":199},[189,2038,2039],{"class":203},"Info",[189,2041,768],{"class":199},[189,2043,2013],{"class":199},[189,2045,2046,2048,2051,2053,2055,2057,2059,2061,2063,2065,2067,2070,2072],{"class":191,"line":372},[189,2047,762],{"class":199},[189,2049,2050],{"class":195},"warning",[189,2052,768],{"class":199},[189,2054,200],{"class":199},[189,2056,1993],{"class":199},[189,2058,809],{"class":199},[189,2060,1999],{"class":1998},[189,2062,768],{"class":199},[189,2064,200],{"class":199},[189,2066,809],{"class":199},[189,2068,2069],{"class":203},"Warning",[189,2071,768],{"class":199},[189,2073,2074],{"class":199}," }\n",[189,2076,2077],{"class":191,"line":380},[189,2078,2079],{"class":199},"      }\n",[189,2081,2082],{"class":191,"line":393},[189,2083,1809],{"class":199},[189,2085,2086,2088,2091,2093,2095],{"class":191,"line":404},[189,2087,1755],{"class":199},[189,2089,2090],{"class":1758},"ENABLE_SIGNUP",[189,2092,768],{"class":199},[189,2094,200],{"class":199},[189,2096,1750],{"class":199},[189,2098,2099,2101,2103,2105,2107,2109,2112,2114],{"class":191,"line":416},[189,2100,1770],{"class":199},[189,2102,1773],{"class":311},[189,2104,768],{"class":199},[189,2106,200],{"class":199},[189,2108,809],{"class":199},[189,2110,2111],{"class":203},"Public Sign-up",[189,2113,768],{"class":199},[189,2115,1787],{"class":199},[189,2117,2118,2120,2122,2124,2126,2128,2131,2133],{"class":191,"line":426},[189,2119,1770],{"class":199},[189,2121,232],{"class":311},[189,2123,768],{"class":199},[189,2125,200],{"class":199},[189,2127,809],{"class":199},[189,2129,2130],{"class":203},"Allow new users to create accounts.",[189,2132,768],{"class":199},[189,2134,1787],{"class":199},[189,2136,2137,2139,2141,2143,2145],{"class":191,"line":650},[189,2138,1770],{"class":199},[189,2140,1973],{"class":311},[189,2142,768],{"class":199},[189,2144,200],{"class":199},[189,2146,1750],{"class":199},[189,2148,2149,2151,2153,2155,2157,2159,2161,2163,2165,2167,2169,2172,2174],{"class":191,"line":657},[189,2150,762],{"class":199},[189,2152,765],{"class":195},[189,2154,768],{"class":199},[189,2156,200],{"class":199},[189,2158,1993],{"class":199},[189,2160,809],{"class":199},[189,2162,1999],{"class":1998},[189,2164,768],{"class":199},[189,2166,200],{"class":199},[189,2168,809],{"class":199},[189,2170,2171],{"class":203},"On",[189,2173,768],{"class":199},[189,2175,2013],{"class":199},[189,2177,2178,2180,2182,2184,2186,2188,2190,2192,2194,2196,2198,2201,2203],{"class":191,"line":666},[189,2179,762],{"class":199},[189,2181,822],{"class":195},[189,2183,768],{"class":199},[189,2185,200],{"class":199},[189,2187,1993],{"class":199},[189,2189,809],{"class":199},[189,2191,1999],{"class":1998},[189,2193,768],{"class":199},[189,2195,200],{"class":199},[189,2197,809],{"class":199},[189,2199,2200],{"class":203},"Off",[189,2202,768],{"class":199},[189,2204,2074],{"class":199},[189,2206,2207],{"class":191,"line":674},[189,2208,2079],{"class":199},[189,2210,2211],{"class":191,"line":681},[189,2212,2213],{"class":199},"    }\n",[189,2215,2216],{"class":191,"line":688},[189,2217,2218],{"class":199},"  },\n",[189,2220,2221,2223,2225,2227,2229],{"class":191,"line":695},[189,2222,1739],{"class":199},[189,2224,878],{"class":1742},[189,2226,768],{"class":199},[189,2228,200],{"class":199},[189,2230,1750],{"class":199},[189,2232,2233,2235,2238,2240,2242],{"class":191,"line":702},[189,2234,1755],{"class":199},[189,2236,2237],{"class":1758},"app",[189,2239,768],{"class":199},[189,2241,200],{"class":199},[189,2243,1750],{"class":199},[189,2245,2246,2248,2251,2253,2255],{"class":191,"line":712},[189,2247,1770],{"class":199},[189,2249,2250],{"class":311},"environment",[189,2252,768],{"class":199},[189,2254,200],{"class":199},[189,2256,1750],{"class":199},[189,2258,2259,2261,2264,2266,2268],{"class":191,"line":720},[189,2260,762],{"class":199},[189,2262,2263],{"class":195},"ADMIN_USER",[189,2265,768],{"class":199},[189,2267,200],{"class":199},[189,2269,1750],{"class":199},[189,2271,2272,2275,2277,2279,2281,2283,2286],{"class":191,"line":731},[189,2273,2274],{"class":199},"          \"",[189,2276,232],{"class":1998},[189,2278,768],{"class":199},[189,2280,200],{"class":199},[189,2282,809],{"class":199},[189,2284,2285],{"class":203},"Username for the admin account.",[189,2287,814],{"class":199},[189,2289,2290],{"class":191,"line":742},[189,2291,2292],{"class":199},"        },\n",[189,2294,2295,2297,2300,2302,2304],{"class":191,"line":752},[189,2296,762],{"class":199},[189,2298,2299],{"class":195},"TZ",[189,2301,768],{"class":199},[189,2303,200],{"class":199},[189,2305,1750],{"class":199},[189,2307,2308,2310,2312,2314,2316,2318,2321],{"class":191,"line":759},[189,2309,2274],{"class":199},[189,2311,232],{"class":1998},[189,2313,768],{"class":199},[189,2315,200],{"class":199},[189,2317,809],{"class":199},[189,2319,2320],{"class":203},"Timezone for date display and scheduling.",[189,2322,814],{"class":199},[189,2324,2325],{"class":191,"line":773},[189,2326,2292],{"class":199},[189,2328,2329,2331,2334,2336,2338],{"class":191,"line":780},[189,2330,762],{"class":199},[189,2332,2333],{"class":195},"PUID",[189,2335,768],{"class":199},[189,2337,200],{"class":199},[189,2339,1750],{"class":199},[189,2341,2342,2344,2346,2348,2350,2352,2355,2357],{"class":191,"line":787},[189,2343,2274],{"class":199},[189,2345,232],{"class":1998},[189,2347,768],{"class":199},[189,2349,200],{"class":199},[189,2351,809],{"class":199},[189,2353,2354],{"class":203},"User ID for file ownership inside the container.",[189,2356,768],{"class":199},[189,2358,1787],{"class":199},[189,2360,2361,2363,2366,2368,2370,2372,2375],{"class":191,"line":794},[189,2362,2274],{"class":199},[189,2364,2365],{"class":1998},"group",[189,2367,768],{"class":199},[189,2369,200],{"class":199},[189,2371,809],{"class":199},[189,2373,2374],{"class":203},"Permissions",[189,2376,814],{"class":199},[189,2378,2379],{"class":191,"line":801},[189,2380,2292],{"class":199},[189,2382,2383,2385,2388,2390,2392],{"class":191,"line":817},[189,2384,762],{"class":199},[189,2386,2387],{"class":195},"PGID",[189,2389,768],{"class":199},[189,2391,200],{"class":199},[189,2393,1750],{"class":199},[189,2395,2396,2398,2400,2402,2404,2406,2409,2411],{"class":191,"line":829},[189,2397,2274],{"class":199},[189,2399,232],{"class":1998},[189,2401,768],{"class":199},[189,2403,200],{"class":199},[189,2405,809],{"class":199},[189,2407,2408],{"class":203},"Group ID for file ownership inside the container.",[189,2410,768],{"class":199},[189,2412,1787],{"class":199},[189,2414,2415,2417,2419,2421,2423,2425,2427],{"class":191,"line":836},[189,2416,2274],{"class":199},[189,2418,2365],{"class":1998},[189,2420,768],{"class":199},[189,2422,200],{"class":199},[189,2424,809],{"class":199},[189,2426,2374],{"class":203},[189,2428,814],{"class":199},[189,2430,2431],{"class":191,"line":843},[189,2432,2433],{"class":199},"        }\n",[189,2435,2436],{"class":191,"line":850},[189,2437,2438],{"class":199},"      },\n",[189,2440,2441,2443,2446,2448,2450],{"class":191,"line":857},[189,2442,1770],{"class":199},[189,2444,2445],{"class":311},"healthChecks",[189,2447,768],{"class":199},[189,2449,200],{"class":199},[189,2451,1750],{"class":199},[189,2453,2454,2456,2459,2461,2463],{"class":191,"line":870},[189,2455,762],{"class":199},[189,2457,2458],{"class":195},"web-ui",[189,2460,768],{"class":199},[189,2462,200],{"class":199},[189,2464,1750],{"class":199},[189,2466,2467,2469,2471,2473,2475,2477,2480],{"class":191,"line":875},[189,2468,2274],{"class":199},[189,2470,232],{"class":1998},[189,2472,768],{"class":199},[189,2474,200],{"class":199},[189,2476,809],{"class":199},[189,2478,2479],{"class":203},"Web UI is accessible and responding.",[189,2481,814],{"class":199},[189,2483,2484],{"class":191,"line":883},[189,2485,2433],{"class":199},[189,2487,2488],{"class":191,"line":891},[189,2489,2438],{"class":199},[189,2491,2492,2494,2497,2499,2501],{"class":191,"line":902},[189,2493,1770],{"class":199},[189,2495,2496],{"class":311},"notices",[189,2498,768],{"class":199},[189,2500,200],{"class":199},[189,2502,1750],{"class":199},[189,2504,2505,2507,2510,2512,2514],{"class":191,"line":910},[189,2506,762],{"class":199},[189,2508,2509],{"class":195},"login-credentials",[189,2511,768],{"class":199},[189,2513,200],{"class":199},[189,2515,1750],{"class":199},[189,2517,2518,2520,2523,2525,2527,2529,2532,2534],{"class":191,"line":919},[189,2519,2274],{"class":199},[189,2521,2522],{"class":1998},"title",[189,2524,768],{"class":199},[189,2526,200],{"class":199},[189,2528,809],{"class":199},[189,2530,2531],{"class":203},"Login Credentials",[189,2533,768],{"class":199},[189,2535,1787],{"class":199},[189,2537,2538,2540,2543,2545,2547],{"class":191,"line":927},[189,2539,2274],{"class":199},[189,2541,2542],{"class":1998},"elements",[189,2544,768],{"class":199},[189,2546,200],{"class":199},[189,2548,1750],{"class":199},[189,2550,2551,2554,2558,2560,2562,2564,2566,2568,2570,2572,2574,2577,2579],{"class":191,"line":942},[189,2552,2553],{"class":199},"            \"",[189,2555,2557],{"class":2556},"s2Zo4","username",[189,2559,768],{"class":199},[189,2561,200],{"class":199},[189,2563,1993],{"class":199},[189,2565,809],{"class":199},[189,2567,1999],{"class":738},[189,2569,768],{"class":199},[189,2571,200],{"class":199},[189,2573,809],{"class":199},[189,2575,2576],{"class":203},"Username",[189,2578,768],{"class":199},[189,2580,2013],{"class":199},[189,2582,2583,2585,2588,2590,2592,2594,2596,2598,2600,2602,2604,2607,2609],{"class":191,"line":957},[189,2584,2553],{"class":199},[189,2586,2587],{"class":2556},"password",[189,2589,768],{"class":199},[189,2591,200],{"class":199},[189,2593,1993],{"class":199},[189,2595,809],{"class":199},[189,2597,1999],{"class":738},[189,2599,768],{"class":199},[189,2601,200],{"class":199},[189,2603,809],{"class":199},[189,2605,2606],{"class":203},"Password",[189,2608,768],{"class":199},[189,2610,2013],{"class":199},[189,2612,2613,2615,2618,2620,2622,2624,2626,2629,2631,2633,2635,2638,2640],{"class":191,"line":968},[189,2614,2553],{"class":199},[189,2616,2617],{"class":2556},"change-password",[189,2619,768],{"class":199},[189,2621,200],{"class":199},[189,2623,1993],{"class":199},[189,2625,809],{"class":199},[189,2627,2628],{"class":738},"content",[189,2630,768],{"class":199},[189,2632,200],{"class":199},[189,2634,809],{"class":199},[189,2636,2637],{"class":203},"Change these in **Settings > Security** after your first login.",[189,2639,768],{"class":199},[189,2641,2074],{"class":199},[189,2643,2644],{"class":191,"line":983},[189,2645,2646],{"class":199},"          }\n",[189,2648,2649],{"class":191,"line":998},[189,2650,2433],{"class":199},[189,2652,2653],{"class":191,"line":1013},[189,2654,2079],{"class":199},[189,2656,2657],{"class":191,"line":1028},[189,2658,1809],{"class":199},[189,2660,2661,2663,2666,2668,2670],{"class":191,"line":1036},[189,2662,1755],{"class":199},[189,2664,2665],{"class":1758},"db",[189,2667,768],{"class":199},[189,2669,200],{"class":199},[189,2671,1750],{"class":199},[189,2673,2674,2676,2678,2680,2682],{"class":191,"line":1048},[189,2675,1770],{"class":199},[189,2677,2250],{"class":311},[189,2679,768],{"class":199},[189,2681,200],{"class":199},[189,2683,1750],{"class":199},[189,2685,2686,2688,2691,2693,2695],{"class":191,"line":1060},[189,2687,762],{"class":199},[189,2689,2690],{"class":195},"POSTGRES_DB",[189,2692,768],{"class":199},[189,2694,200],{"class":199},[189,2696,1750],{"class":199},[189,2698,2699,2701,2703,2705,2707,2709,2712],{"class":191,"line":1068},[189,2700,2274],{"class":199},[189,2702,232],{"class":1998},[189,2704,768],{"class":199},[189,2706,200],{"class":199},[189,2708,809],{"class":199},[189,2710,2711],{"class":203},"Name of the PostgreSQL database.",[189,2713,814],{"class":199},[189,2715,2716],{"class":191,"line":1080},[189,2717,2292],{"class":199},[189,2719,2720,2722,2725,2727,2729],{"class":191,"line":1088},[189,2721,762],{"class":199},[189,2723,2724],{"class":195},"POSTGRES_USER",[189,2726,768],{"class":199},[189,2728,200],{"class":199},[189,2730,1750],{"class":199},[189,2732,2733,2735,2737,2739,2741,2743,2746],{"class":191,"line":1096},[189,2734,2274],{"class":199},[189,2736,232],{"class":1998},[189,2738,768],{"class":199},[189,2740,200],{"class":199},[189,2742,809],{"class":199},[189,2744,2745],{"class":203},"PostgreSQL username.",[189,2747,814],{"class":199},[189,2749,2750],{"class":191,"line":1104},[189,2751,2292],{"class":199},[189,2753,2754,2756,2759,2761,2763],{"class":191,"line":1115},[189,2755,762],{"class":199},[189,2757,2758],{"class":195},"PGDATA",[189,2760,768],{"class":199},[189,2762,200],{"class":199},[189,2764,1750],{"class":199},[189,2766,2767,2769,2771,2773,2775,2777,2780],{"class":191,"line":1123},[189,2768,2274],{"class":199},[189,2770,232],{"class":1998},[189,2772,768],{"class":199},[189,2774,200],{"class":199},[189,2776,809],{"class":199},[189,2778,2779],{"class":203},"Data directory inside the container. Do not change.",[189,2781,814],{"class":199},[189,2783,2784],{"class":191,"line":1131},[189,2785,2433],{"class":199},[189,2787,2788],{"class":191,"line":1145},[189,2789,2438],{"class":199},[189,2791,2792,2794,2796,2798,2800],{"class":191,"line":1156},[189,2793,1770],{"class":199},[189,2795,2445],{"class":311},[189,2797,768],{"class":199},[189,2799,200],{"class":199},[189,2801,1750],{"class":199},[189,2803,2804,2806,2809,2811,2813],{"class":191,"line":1167},[189,2805,762],{"class":199},[189,2807,2808],{"class":195},"db-ready",[189,2810,768],{"class":199},[189,2812,200],{"class":199},[189,2814,1750],{"class":199},[189,2816,2817,2819,2821,2823,2825,2827,2830],{"class":191,"line":1178},[189,2818,2274],{"class":199},[189,2820,232],{"class":1998},[189,2822,768],{"class":199},[189,2824,200],{"class":199},[189,2826,809],{"class":199},[189,2828,2829],{"class":203},"Database is accepting connections.",[189,2831,814],{"class":199},[189,2833,2834],{"class":191,"line":1186},[189,2835,2433],{"class":199},[189,2837,2838],{"class":191,"line":1198},[189,2839,2079],{"class":199},[189,2841,2842],{"class":191,"line":1208},[189,2843,2213],{"class":199},[189,2845,2846],{"class":191,"line":1216},[189,2847,2848],{"class":199},"  }\n",[189,2850,2851],{"class":191,"line":1229},[189,2852,2853],{"class":199},"}\n",[160,2855,2857],{"id":2856},"init-filescustomconfigphp","init-files\u002Fcustom.config.php",[156,2859,2860,2861,2864],{},"Init files are copied into the container's volume mounts before each start. The ",[171,2862,2863],{},"containerPath"," must fall within a declared volume mount.",[164,2866,2870],{"className":2867,"code":2868,"filename":2857,"language":2869,"meta":173,"style":173},"language-php shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003C?php\n\u002F\u002F This file is injected by Lawn on every container start.\n\u002F\u002F It reads configuration from environment variables set by the compose file.\n\n$config = [\n    'database' => getenv('DATABASE_URL'),\n    'timezone' => getenv('TZ') ?: 'UTC',\n];\n","php",[171,2871,2872,2877,2882,2887,2891,2896,2901,2906],{"__ignoreMap":173},[189,2873,2874],{"class":191,"line":192},[189,2875,2876],{},"\u003C?php\n",[189,2878,2879],{"class":191,"line":207},[189,2880,2881],{},"\u002F\u002F This file is injected by Lawn on every container start.\n",[189,2883,2884],{"class":191,"line":218},[189,2885,2886],{},"\u002F\u002F It reads configuration from environment variables set by the compose file.\n",[189,2888,2889],{"class":191,"line":229},[189,2890,251],{"emptyLinePlaceholder":250},[189,2892,2893],{"class":191,"line":241},[189,2894,2895],{},"$config = [\n",[189,2897,2898],{"class":191,"line":247},[189,2899,2900],{},"    'database' => getenv('DATABASE_URL'),\n",[189,2902,2903],{"class":191,"line":254},[189,2904,2905],{},"    'timezone' => getenv('TZ') ?: 'UTC',\n",[189,2907,2908],{"class":191,"line":260},[189,2909,2910],{},"];\n",[160,2912,2914],{"id":2913},"what-each-feature-does","What Each Feature Does",[2916,2917,2918,2934],"table",{},[2919,2920,2921],"thead",{},[2922,2923,2924,2928,2931],"tr",{},[2925,2926,2927],"th",{},"Feature",[2925,2929,2930],{},"Where",[2925,2932,2933],{},"Purpose",[2935,2936,2937,2951,2963,2976,2988,2998,3010,3022,3033,3054,3066,3077,3088,3100,3112],"tbody",{},[2922,2938,2939,2945,2948],{},[2940,2941,2942],"td",{},[171,2943,2944],{},"x-lawn.compatibility",[2940,2946,2947],{},"Top-level",[2940,2949,2950],{},"Minimum Lawn version required for this template",[2922,2952,2953,2958,2960],{},[2940,2954,2955],{},[171,2956,2957],{},"x-lawn.config",[2940,2959,2947],{},[2940,2961,2962],{},"Declares secrets, user-provided values, and config options",[2922,2964,2965,2970,2973],{},[2940,2966,2967],{},[171,2968,2969],{},"generatedSecret",[2940,2971,2972],{},"Config",[2940,2974,2975],{},"Random password created at install time",[2922,2977,2978,2983,2985],{},[2940,2979,2980],{},[171,2981,2982],{},"userProvided",[2940,2984,2972],{},[2940,2986,2987],{},"Value the user supplies during install",[2922,2989,2990,2993,2995],{},[2940,2991,2992],{},"Config options",[2940,2994,2972],{},[2940,2996,2997],{},"Selectable choices with compose overlays",[2922,2999,3000,3005,3007],{},[2940,3001,3002],{},[171,3003,3004],{},"inputType: boolean",[2940,3006,2972],{},[2940,3008,3009],{},"Toggle switch for on\u002Foff settings",[2922,3011,3012,3017,3019],{},[2940,3013,3014],{},[171,3015,3016],{},"weight",[2940,3018,2972],{},[2940,3020,3021],{},"Display ordering in the settings UI",[2922,3023,3024,3028,3030],{},[2940,3025,3026],{},[171,3027,1719],{},[2940,3029,70],{},[2940,3031,3032],{},"Display names, descriptions, option labels, notice strings",[2922,3034,3035,3038,3041],{},[2940,3036,3037],{},"System variables",[2940,3039,3040],{},"Environment",[2940,3042,3043,3046,3047,3046,3050,3053],{},[171,3044,3045],{},"TIMEZONE",", ",[171,3048,3049],{},"UID",[171,3051,3052],{},"GID"," — always available",[2922,3055,3056,3060,3063],{},[2940,3057,3058],{},[171,3059,2445],{},[2940,3061,3062],{},"Per-service",[2940,3064,3065],{},"HTTP and command checks for readiness",[2922,3067,3068,3072,3074],{},[2940,3069,3070],{},[171,3071,2496],{},[2940,3073,3062],{},[2940,3075,3076],{},"Dismissible banners with credentials and guidance",[2922,3078,3079,3083,3085],{},[2940,3080,3081],{},[171,3082,2250],{},[2940,3084,3062],{},[2940,3086,3087],{},"Format hints for env vars",[2922,3089,3090,3095,3097],{},[2940,3091,3092],{},[171,3093,3094],{},"initFiles",[2940,3096,3062],{},[2940,3098,3099],{},"Config files injected from template into volumes",[2922,3101,3102,3107,3109],{},[2940,3103,3104],{},[171,3105,3106],{},"createDirectories",[2940,3108,3062],{},[2940,3110,3111],{},"Host directories created before container start",[2922,3113,3114,3119,3121],{},[2940,3115,3116],{},[171,3117,3118],{},"deploy.resources.limits",[2940,3120,3062],{},[2940,3122,3123],{},"Memory and CPU constraints",[160,3125,102],{"id":3126},"testing",[156,3128,3129,3130,200],{},"Validate and test the template with ",[171,3131,147],{},[164,3133,3137],{"className":3134,"code":3135,"language":3136,"meta":173,"style":173},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Validate manifest, compose, and localization\nlawn template validate .\n\n# Full end-to-end test (pull, start, health check)\nlawn template test .\n","bash",[171,3138,3139,3145,3159,3163,3168],{"__ignoreMap":173},[189,3140,3141],{"class":191,"line":192},[189,3142,3144],{"class":3143},"sHwdD","# Validate manifest, compose, and localization\n",[189,3146,3147,3150,3153,3156],{"class":191,"line":207},[189,3148,3149],{"class":1758},"lawn",[189,3151,3152],{"class":203}," template",[189,3154,3155],{"class":203}," validate",[189,3157,3158],{"class":203}," .\n",[189,3160,3161],{"class":191,"line":218},[189,3162,251],{"emptyLinePlaceholder":250},[189,3164,3165],{"class":191,"line":229},[189,3166,3167],{"class":3143},"# Full end-to-end test (pull, start, health check)\n",[189,3169,3170,3172,3174,3177],{"class":191,"line":241},[189,3171,3149],{"class":1758},[189,3173,3152],{"class":203},[189,3175,3176],{"class":203}," test",[189,3178,3158],{"class":203},[156,3180,3181,3182,3184,3185,3187],{},"Since ",[171,3183,1869],{}," is ",[171,3186,2982],{},", the full test requires the value to be supplied:",[164,3189,3191],{"className":3134,"code":3190,"language":3136,"meta":173,"style":173},"lawn template test . --var ADMIN_PASSWORD=testpassword123\n",[171,3192,3193],{"__ignoreMap":173},[189,3194,3195,3197,3199,3201,3204,3207],{"class":191,"line":192},[189,3196,3149],{"class":1758},[189,3198,3152],{"class":203},[189,3200,3176],{"class":203},[189,3202,3203],{"class":203}," .",[189,3205,3206],{"class":203}," --var",[189,3208,3209],{"class":203}," ADMIN_PASSWORD=testpassword123\n",[3211,3212,3213],"style",{},"html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .su27w, html code.shiki .su27w{--shiki-light:#916B53;--shiki-default:#916B53;--shiki-dark:#916B53}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":173,"searchDepth":207,"depth":207,"links":3215},[3216,3217,3218,3219,3220,3221,3222],{"id":162,"depth":207,"text":52},{"id":176,"depth":207,"text":177},{"id":437,"depth":207,"text":438},{"id":1718,"depth":207,"text":1719},{"id":2856,"depth":207,"text":2857},{"id":2913,"depth":207,"text":2914},{"id":3126,"depth":207,"text":102},"A full template showing all features working together.","md",null,{},{"icon":81},{"title":106,"description":3223},{"loc":107},"VGycZygnMR7vfe_Vt16oNO5VR2rBjmn4U2JPJPQJFWo",[3225,3225],1775508104762]