@simplehomelab/deployrr 6.0.0-rc3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (472) hide show
  1. package/announcement +1 -0
  2. package/apps/community/CONTRIBUTING.md +660 -0
  3. package/apps/community/apps.json +6 -0
  4. package/apps/core/apps.json +16 -0
  5. package/apps/core/authelia/authelia-redis.yml +24 -0
  6. package/apps/core/authelia/compose.yml +45 -0
  7. package/apps/core/authelia/files/chain-authelia.yml +8 -0
  8. package/apps/core/authelia/files/configuration.yml +100 -0
  9. package/apps/core/authelia/files/middlewares-authelia.yml +9 -0
  10. package/apps/core/authelia/files/users.yml +15 -0
  11. package/apps/core/authelia/manifest.json +156 -0
  12. package/apps/core/authentik/authentik-postgresql.yml +26 -0
  13. package/apps/core/authentik/authentik-worker.yml +37 -0
  14. package/apps/core/authentik/compose.yml +51 -0
  15. package/apps/core/authentik/files/chain-authentik.yml +8 -0
  16. package/apps/core/authentik/files/middlewares-authentik.yml +19 -0
  17. package/apps/core/authentik/manifest.json +117 -0
  18. package/apps/core/crowdsec/compose.yml +23 -0
  19. package/apps/core/crowdsec/files/acquis-traefik.yaml +4 -0
  20. package/apps/core/crowdsec/files/acquis.yaml +8 -0
  21. package/apps/core/crowdsec/files/crowdsec-firewall-bouncer.yaml +46 -0
  22. package/apps/core/crowdsec/files/custom-whitelists.yaml +13 -0
  23. package/apps/core/crowdsec/manifest.json +87 -0
  24. package/apps/core/crowdsec-firewall-bouncer/manifest.json +85 -0
  25. package/apps/core/deployrr/jokes_and_tips.txt +58 -0
  26. package/apps/core/deployrr-dashboard/compose.yml +23 -0
  27. package/apps/core/deployrr-dashboard/files/bookmarks.yaml +51 -0
  28. package/apps/core/deployrr-dashboard/files/deployrr_icon.ico +0 -0
  29. package/apps/core/deployrr-dashboard/files/deployrr_icon.png +0 -0
  30. package/apps/core/deployrr-dashboard/files/docker.yaml +10 -0
  31. package/apps/core/deployrr-dashboard/files/service-template-other.yaml +10 -0
  32. package/apps/core/deployrr-dashboard/files/service-template-web-local.yaml +10 -0
  33. package/apps/core/deployrr-dashboard/files/service-template-web-remote.yaml +10 -0
  34. package/apps/core/deployrr-dashboard/files/services.yaml +18 -0
  35. package/apps/core/deployrr-dashboard/files/settings.yaml +13 -0
  36. package/apps/core/deployrr-dashboard/files/widgets.yaml +20 -0
  37. package/apps/core/deployrr-dashboard/manifest.json +133 -0
  38. package/apps/core/npm/compose.yml +40 -0
  39. package/apps/core/npm/manifest.json +60 -0
  40. package/apps/core/oauth/compose.yml +38 -0
  41. package/apps/core/oauth/files/chain-oauth.yml +8 -0
  42. package/apps/core/oauth/files/middlewares-oauth.yml +8 -0
  43. package/apps/core/oauth/files/oauth-secrets-template +3 -0
  44. package/apps/core/oauth/manifest.json +58 -0
  45. package/apps/core/socket-proxy/compose.yml +54 -0
  46. package/apps/core/socket-proxy/manifest.json +62 -0
  47. package/apps/core/system/bash-aliases/udms_bash_aliases +229 -0
  48. package/apps/core/system/bash-aliases/udms_bashrc +5 -0
  49. package/apps/core/system/docker/custom.yml +4 -0
  50. package/apps/core/system/docker/starter.yml +25 -0
  51. package/apps/core/system/rclone/compose.yml +28 -0
  52. package/apps/core/system/rclone/rclone-mount-template.service +43 -0
  53. package/apps/core/system/rclone/rclone-template.conf +6 -0
  54. package/apps/core/system/rclone/start-media-after-boot.service +9 -0
  55. package/apps/core/system/rclone/start-media-after-boot.sh +57 -0
  56. package/apps/core/tinyauth/compose.yml +47 -0
  57. package/apps/core/tinyauth/files/chain-tinyauth.yml +8 -0
  58. package/apps/core/tinyauth/files/middlewares-tinyauth.yml +10 -0
  59. package/apps/core/tinyauth/manifest.json +70 -0
  60. package/apps/core/traefik/compose.yml +106 -0
  61. package/apps/core/traefik/files/app-http-bypass-template.yml +31 -0
  62. package/apps/core/traefik/files/app-http-template.yml +18 -0
  63. package/apps/core/traefik/files/app-https-ssc-bypass-template.yml +36 -0
  64. package/apps/core/traefik/files/app-https-ssc-template.yml +23 -0
  65. package/apps/core/traefik/files/chain-basic-auth.yml +9 -0
  66. package/apps/core/traefik/files/chain-nextcloud.yml +8 -0
  67. package/apps/core/traefik/files/chain-no-auth.yml +8 -0
  68. package/apps/core/traefik/files/domain-passthrough-template.yml +15 -0
  69. package/apps/core/traefik/files/labels-auth-bypass-template.yml +6 -0
  70. package/apps/core/traefik/files/labels-template.yml +10 -0
  71. package/apps/core/traefik/files/middlewares-basic-auth.yml +9 -0
  72. package/apps/core/traefik/files/middlewares-buffering.yml +9 -0
  73. package/apps/core/traefik/files/middlewares-compress.yml +4 -0
  74. package/apps/core/traefik/files/middlewares-crowdsec-bouncer.yml +13 -0
  75. package/apps/core/traefik/files/middlewares-nextcloud.yml +35 -0
  76. package/apps/core/traefik/files/middlewares-rate-limit.yml +6 -0
  77. package/apps/core/traefik/files/middlewares-secure-headers.yml +26 -0
  78. package/apps/core/traefik/files/t2_proxy_network.yml +8 -0
  79. package/apps/core/traefik/files/tls-opts.yml +19 -0
  80. package/apps/core/traefik/files/traefik-static-config-example.yml +97 -0
  81. package/apps/core/traefik/files/traefik.yml +123 -0
  82. package/apps/core/traefik/files/traefik_global_secrets_template.yml +4 -0
  83. package/apps/core/traefik/files/traefik_proxy_network.yml +8 -0
  84. package/apps/core/traefik/manifest.json +70 -0
  85. package/apps/manifest-schema.json +760 -0
  86. package/apps/official/adminer/compose.yml +14 -0
  87. package/apps/official/adminer/manifest.json +65 -0
  88. package/apps/official/airsonic-advanced/compose.yml +26 -0
  89. package/apps/official/airsonic-advanced/manifest.json +78 -0
  90. package/apps/official/apps.json +146 -0
  91. package/apps/official/audiobookshelf/compose.yml +20 -0
  92. package/apps/official/audiobookshelf/manifest.json +65 -0
  93. package/apps/official/autobrr/autobrr-postgresql.yml +24 -0
  94. package/apps/official/autobrr/compose.yml +27 -0
  95. package/apps/official/autobrr/manifest.json +101 -0
  96. package/apps/official/baikal/compose.yml +17 -0
  97. package/apps/official/baikal/manifest.json +65 -0
  98. package/apps/official/bazarr/compose.yml +23 -0
  99. package/apps/official/bazarr/manifest.json +65 -0
  100. package/apps/official/beets/compose.yml +24 -0
  101. package/apps/official/beets/manifest.json +65 -0
  102. package/apps/official/bookstack/bookstack-mariadb.yml +26 -0
  103. package/apps/official/bookstack/compose.yml +31 -0
  104. package/apps/official/bookstack/manifest.json +113 -0
  105. package/apps/official/boxarr/compose.yml +18 -0
  106. package/apps/official/boxarr/manifest.json +65 -0
  107. package/apps/official/cadvisor/compose.yml +23 -0
  108. package/apps/official/cadvisor/files/pre-install.sh +10 -0
  109. package/apps/official/cadvisor/manifest.json +69 -0
  110. package/apps/official/calibre/compose.yml +27 -0
  111. package/apps/official/calibre/manifest.json +87 -0
  112. package/apps/official/calibre-web/compose.yml +23 -0
  113. package/apps/official/calibre-web/manifest.json +74 -0
  114. package/apps/official/change-detection/compose.yml +22 -0
  115. package/apps/official/change-detection/manifest.json +65 -0
  116. package/apps/official/chromium/compose.yml +25 -0
  117. package/apps/official/chromium/manifest.json +82 -0
  118. package/apps/official/cleanuparr/compose.yml +30 -0
  119. package/apps/official/cleanuparr/manifest.json +65 -0
  120. package/apps/official/cloud-commander/compose.yml +24 -0
  121. package/apps/official/cloud-commander/manifest.json +65 -0
  122. package/apps/official/cloudflare-tunnel/compose.yml +26 -0
  123. package/apps/official/cloudflare-tunnel/files/pre-install.sh +7 -0
  124. package/apps/official/cloudflare-tunnel/manifest.json +70 -0
  125. package/apps/official/cyberchef/compose.yml +14 -0
  126. package/apps/official/cyberchef/manifest.json +65 -0
  127. package/apps/official/dashy/compose.yml +27 -0
  128. package/apps/official/dashy/files/starter-conf.yml +45 -0
  129. package/apps/official/dashy/manifest.json +72 -0
  130. package/apps/official/ddns-updater/compose.yml +28 -0
  131. package/apps/official/ddns-updater/files/config.json +14 -0
  132. package/apps/official/ddns-updater/files/pre-install.sh +18 -0
  133. package/apps/official/ddns-updater/manifest.json +71 -0
  134. package/apps/official/deunhealth/compose.yml +17 -0
  135. package/apps/official/deunhealth/manifest.json +46 -0
  136. package/apps/official/digikam/compose.yml +23 -0
  137. package/apps/official/digikam/manifest.json +85 -0
  138. package/apps/official/dispatcharr/compose.yml +39 -0
  139. package/apps/official/dispatcharr/manifest.json +86 -0
  140. package/apps/official/docker-gc/compose.yml +25 -0
  141. package/apps/official/docker-gc/files/docker-gc-exclude +9 -0
  142. package/apps/official/docker-gc/files/pre-install.sh +22 -0
  143. package/apps/official/docker-gc/manifest.json +54 -0
  144. package/apps/official/dockhand/compose.yml +24 -0
  145. package/apps/official/dockhand/dockhand-postgresql.yml +24 -0
  146. package/apps/official/dockhand/manifest.json +105 -0
  147. package/apps/official/dockpeek/compose.yml +20 -0
  148. package/apps/official/dockpeek/manifest.json +95 -0
  149. package/apps/official/dockwatch/compose.yml +31 -0
  150. package/apps/official/dockwatch/manifest.json +65 -0
  151. package/apps/official/dokuwiki/compose.yml +21 -0
  152. package/apps/official/dokuwiki/manifest.json +81 -0
  153. package/apps/official/double-commander/compose.yml +26 -0
  154. package/apps/official/double-commander/manifest.json +83 -0
  155. package/apps/official/dozzle/compose.yml +23 -0
  156. package/apps/official/dozzle/manifest.json +65 -0
  157. package/apps/official/dozzle-agent/compose.yml +26 -0
  158. package/apps/official/dozzle-agent/manifest.json +71 -0
  159. package/apps/official/dweebui/compose.yml +21 -0
  160. package/apps/official/dweebui/manifest.json +81 -0
  161. package/apps/official/emby/compose.yml +29 -0
  162. package/apps/official/emby/manifest.json +98 -0
  163. package/apps/official/esphome/compose.yml +20 -0
  164. package/apps/official/esphome/manifest.json +65 -0
  165. package/apps/official/filezilla/compose.yml +23 -0
  166. package/apps/official/filezilla/manifest.json +82 -0
  167. package/apps/official/flame/compose.yml +21 -0
  168. package/apps/official/flame/manifest.json +73 -0
  169. package/apps/official/flaresolverr/compose.yml +19 -0
  170. package/apps/official/flaresolverr/manifest.json +75 -0
  171. package/apps/official/flowise/compose.yml +46 -0
  172. package/apps/official/flowise/flowise-postgresql.yml +24 -0
  173. package/apps/official/flowise/flowise-redis.yml +23 -0
  174. package/apps/official/flowise/manifest.json +125 -0
  175. package/apps/official/freshrss/compose.yml +20 -0
  176. package/apps/official/freshrss/manifest.json +65 -0
  177. package/apps/official/funkwhale/compose.yml +24 -0
  178. package/apps/official/funkwhale/files/post-install.sh +8 -0
  179. package/apps/official/funkwhale/manifest.json +69 -0
  180. package/apps/official/gamevault/compose.yml +26 -0
  181. package/apps/official/gamevault/gamevault-postgresql.yml +24 -0
  182. package/apps/official/gamevault/manifest.json +101 -0
  183. package/apps/official/glances/compose.yml +26 -0
  184. package/apps/official/glances/files/glances.conf +771 -0
  185. package/apps/official/glances/manifest.json +72 -0
  186. package/apps/official/gluetun/compose.yml +33 -0
  187. package/apps/official/gluetun/files/post-install.sh +78 -0
  188. package/apps/official/gluetun/manifest.json +88 -0
  189. package/apps/official/gonic/compose.yml +26 -0
  190. package/apps/official/gonic/manifest.json +78 -0
  191. package/apps/official/gptwol/compose.yml +23 -0
  192. package/apps/official/gptwol/manifest.json +81 -0
  193. package/apps/official/grafana/compose.yml +19 -0
  194. package/apps/official/grafana/manifest.json +81 -0
  195. package/apps/official/grocy/compose.yml +20 -0
  196. package/apps/official/grocy/manifest.json +74 -0
  197. package/apps/official/guacamole/compose.yml +26 -0
  198. package/apps/official/guacamole/guacamole-mariadb.yml +26 -0
  199. package/apps/official/guacamole/guacd.yml +12 -0
  200. package/apps/official/guacamole/hooks/post-install.sh +60 -0
  201. package/apps/official/guacamole/manifest.json +131 -0
  202. package/apps/official/heimdall/compose.yml +20 -0
  203. package/apps/official/heimdall/manifest.json +65 -0
  204. package/apps/official/homarr/compose.yml +22 -0
  205. package/apps/official/homarr/manifest.json +73 -0
  206. package/apps/official/homebridge/compose.yml +13 -0
  207. package/apps/official/homebridge/manifest.json +66 -0
  208. package/apps/official/homepage/compose.yml +22 -0
  209. package/apps/official/homepage/manifest.json +65 -0
  210. package/apps/official/homer/compose.yml +20 -0
  211. package/apps/official/homer/manifest.json +65 -0
  212. package/apps/official/immich/compose.yml +35 -0
  213. package/apps/official/immich/immich-machine-learning.yml +21 -0
  214. package/apps/official/immich/immich-postgresql.yml +30 -0
  215. package/apps/official/immich/immich-redis.yml +23 -0
  216. package/apps/official/immich/manifest.json +135 -0
  217. package/apps/official/influxdb/compose.yml +17 -0
  218. package/apps/official/influxdb/manifest.json +65 -0
  219. package/apps/official/it-tools/compose.yml +14 -0
  220. package/apps/official/it-tools/manifest.json +65 -0
  221. package/apps/official/jackett/compose.yml +21 -0
  222. package/apps/official/jackett/manifest.json +65 -0
  223. package/apps/official/jellyfin/compose.yml +27 -0
  224. package/apps/official/jellyfin/manifest.json +89 -0
  225. package/apps/official/jellyseerr/compose.yml +19 -0
  226. package/apps/official/jellyseerr/manifest.json +65 -0
  227. package/apps/official/kasm/compose.yml +27 -0
  228. package/apps/official/kasm/manifest.json +115 -0
  229. package/apps/official/kavita/compose.yml +21 -0
  230. package/apps/official/kavita/manifest.json +65 -0
  231. package/apps/official/kometa/compose.yml +23 -0
  232. package/apps/official/kometa/manifest.json +56 -0
  233. package/apps/official/komga/compose.yml +22 -0
  234. package/apps/official/komga/manifest.json +65 -0
  235. package/apps/official/langfuse/compose.yml +64 -0
  236. package/apps/official/langfuse/files/pre-install.sh +178 -0
  237. package/apps/official/langfuse/langfuse-clickhouse.yml +25 -0
  238. package/apps/official/langfuse/langfuse-minio.yml +25 -0
  239. package/apps/official/langfuse/langfuse-postgresql.yml +26 -0
  240. package/apps/official/langfuse/langfuse-redis.yml +22 -0
  241. package/apps/official/langfuse/langfuse-worker.yml +50 -0
  242. package/apps/official/langfuse/manifest.json +201 -0
  243. package/apps/official/lidarr/compose.yml +25 -0
  244. package/apps/official/lidarr/manifest.json +65 -0
  245. package/apps/official/lollypop/compose.yml +26 -0
  246. package/apps/official/lollypop/manifest.json +83 -0
  247. package/apps/official/maintainerr/compose.yml +20 -0
  248. package/apps/official/maintainerr/manifest.json +72 -0
  249. package/apps/official/mariadb/compose.yml +27 -0
  250. package/apps/official/mariadb/manifest.json +74 -0
  251. package/apps/official/mosquitto/compose.yml +24 -0
  252. package/apps/official/mosquitto/files/mosquitto.conf +15 -0
  253. package/apps/official/mosquitto/files/passwd +0 -0
  254. package/apps/official/mosquitto/files/post-install.sh +23 -0
  255. package/apps/official/mosquitto/manifest.json +123 -0
  256. package/apps/official/mqttx-web/compose.yml +14 -0
  257. package/apps/official/mqttx-web/manifest.json +74 -0
  258. package/apps/official/mylar3/compose.yml +22 -0
  259. package/apps/official/mylar3/manifest.json +65 -0
  260. package/apps/official/n8n/compose.yml +29 -0
  261. package/apps/official/n8n/files/pre-install.sh +26 -0
  262. package/apps/official/n8n/manifest.json +103 -0
  263. package/apps/official/n8n/n8n-postgresql.yml +26 -0
  264. package/apps/official/navidrome/compose.yml +26 -0
  265. package/apps/official/navidrome/manifest.json +65 -0
  266. package/apps/official/netdata/compose.yml +28 -0
  267. package/apps/official/netdata/manifest.json +66 -0
  268. package/apps/official/nextcloud/compose.yml +38 -0
  269. package/apps/official/nextcloud/manifest.json +159 -0
  270. package/apps/official/nextcloud/nextcloud-mariadb.yml +29 -0
  271. package/apps/official/nextcloud/nextcloud-redis.yml +20 -0
  272. package/apps/official/node-exporter/compose.yml +23 -0
  273. package/apps/official/node-exporter/manifest.json +65 -0
  274. package/apps/official/node-red/compose.yml +16 -0
  275. package/apps/official/node-red/manifest.json +72 -0
  276. package/apps/official/notifiarr/compose.yml +23 -0
  277. package/apps/official/notifiarr/manifest.json +75 -0
  278. package/apps/official/nzbget/compose.yml +23 -0
  279. package/apps/official/nzbget/manifest.json +74 -0
  280. package/apps/official/ollama/compose.yml +17 -0
  281. package/apps/official/ollama/manifest.json +85 -0
  282. package/apps/official/ombi/compose.yml +21 -0
  283. package/apps/official/ombi/manifest.json +65 -0
  284. package/apps/official/open-webui/compose.yml +21 -0
  285. package/apps/official/open-webui/manifest.json +75 -0
  286. package/apps/official/openhands/compose.yml +23 -0
  287. package/apps/official/openhands/manifest.json +65 -0
  288. package/apps/official/organizr/compose.yml +19 -0
  289. package/apps/official/organizr/manifest.json +78 -0
  290. package/apps/official/overseerr/compose.yml +20 -0
  291. package/apps/official/overseerr/manifest.json +65 -0
  292. package/apps/official/paperless-ai/compose.yml +16 -0
  293. package/apps/official/paperless-ai/manifest.json +74 -0
  294. package/apps/official/paperless-ngx/compose.yml +51 -0
  295. package/apps/official/paperless-ngx/gotenberg.yml +18 -0
  296. package/apps/official/paperless-ngx/manifest.json +179 -0
  297. package/apps/official/paperless-ngx/paperless-ngx-mariadb.yml +26 -0
  298. package/apps/official/paperless-ngx/paperless-ngx-redis.yml +23 -0
  299. package/apps/official/paperless-ngx/tika.yml +12 -0
  300. package/apps/official/pdfding/compose.yml +32 -0
  301. package/apps/official/pdfding/files/post-install.sh +55 -0
  302. package/apps/official/pdfding/manifest.json +120 -0
  303. package/apps/official/pdfding/pdfding-postgresql.yml +24 -0
  304. package/apps/official/pgadmin/compose.yml +17 -0
  305. package/apps/official/pgadmin/manifest.json +80 -0
  306. package/apps/official/phpmyadmin/compose.yml +22 -0
  307. package/apps/official/phpmyadmin/manifest.json +65 -0
  308. package/apps/official/pihole/compose.yml +41 -0
  309. package/apps/official/pihole/manifest.json +89 -0
  310. package/apps/official/piwigo/compose.yml +22 -0
  311. package/apps/official/piwigo/manifest.json +65 -0
  312. package/apps/official/plex/compose.yml +39 -0
  313. package/apps/official/plex/files/pre-install.sh +24 -0
  314. package/apps/official/plex/manifest.json +109 -0
  315. package/apps/official/portainer/compose.yml +22 -0
  316. package/apps/official/portainer/manifest.json +91 -0
  317. package/apps/official/postgresql/compose.yml +28 -0
  318. package/apps/official/postgresql/manifest.json +89 -0
  319. package/apps/official/privatebin/compose.yml +20 -0
  320. package/apps/official/privatebin/files/conf.php +90 -0
  321. package/apps/official/privatebin/manifest.json +82 -0
  322. package/apps/official/projectsend/compose.yml +21 -0
  323. package/apps/official/projectsend/manifest.json +72 -0
  324. package/apps/official/prometheus/compose.yml +25 -0
  325. package/apps/official/prometheus/files/prometheus.yml +3 -0
  326. package/apps/official/prometheus/manifest.json +79 -0
  327. package/apps/official/prowlarr/compose.yml +22 -0
  328. package/apps/official/prowlarr/manifest.json +65 -0
  329. package/apps/official/pulse/compose.yml +28 -0
  330. package/apps/official/pulse/files/post-install.sh +29 -0
  331. package/apps/official/pulse/manifest.json +78 -0
  332. package/apps/official/qbittorrent/compose.yml +22 -0
  333. package/apps/official/qbittorrent/files/pre-install.sh +5 -0
  334. package/apps/official/qbittorrent/files/qBittorrent.conf +39 -0
  335. package/apps/official/qbittorrent/manifest.json +96 -0
  336. package/apps/official/qbittorrent-vpn/compose.yml +26 -0
  337. package/apps/official/qbittorrent-vpn/files/post-install.sh +52 -0
  338. package/apps/official/qbittorrent-vpn/files/pre-install.sh +10 -0
  339. package/apps/official/qbittorrent-vpn/files/qBittorrent.conf +39 -0
  340. package/apps/official/qbittorrent-vpn/manifest.json +108 -0
  341. package/apps/official/qdrant/compose.yml +15 -0
  342. package/apps/official/qdrant/manifest.json +82 -0
  343. package/apps/official/radarr/compose.yml +25 -0
  344. package/apps/official/radarr/manifest.json +65 -0
  345. package/apps/official/redis/compose.yml +26 -0
  346. package/apps/official/redis/manifest.json +73 -0
  347. package/apps/official/redis-commander/compose.yml +20 -0
  348. package/apps/official/redis-commander/manifest.json +65 -0
  349. package/apps/official/remmina/compose.yml +23 -0
  350. package/apps/official/remmina/manifest.json +84 -0
  351. package/apps/official/resilio-sync/compose.yml +23 -0
  352. package/apps/official/resilio-sync/manifest.json +74 -0
  353. package/apps/official/sabnzbd/compose.yml +23 -0
  354. package/apps/official/sabnzbd/files/post-install.sh +35 -0
  355. package/apps/official/sabnzbd/manifest.json +75 -0
  356. package/apps/official/scrutiny/compose.yml +25 -0
  357. package/apps/official/scrutiny/manifest.json +113 -0
  358. package/apps/official/scrutiny/scrutiny-influxdb.yml +28 -0
  359. package/apps/official/searxng/compose.yml +28 -0
  360. package/apps/official/searxng/files/limiter.toml +6 -0
  361. package/apps/official/searxng/files/pre-install.sh +25 -0
  362. package/apps/official/searxng/files/settings.yml +8 -0
  363. package/apps/official/searxng/manifest.json +88 -0
  364. package/apps/official/searxng/searxng-valkey.yml +26 -0
  365. package/apps/official/shellinabox/manifest.json +68 -0
  366. package/apps/official/smokeping/compose.yml +21 -0
  367. package/apps/official/smokeping/manifest.json +65 -0
  368. package/apps/official/sonarr/compose.yml +25 -0
  369. package/apps/official/sonarr/manifest.json +65 -0
  370. package/apps/official/speedtest-tracker/compose.yml +30 -0
  371. package/apps/official/speedtest-tracker/manifest.json +119 -0
  372. package/apps/official/speedtest-tracker/speedtest-tracker-mariadb.yml +24 -0
  373. package/apps/official/sshwifty/compose.yml +17 -0
  374. package/apps/official/sshwifty/files/pre-install.sh +34 -0
  375. package/apps/official/sshwifty/files/sshwifty.conf.json +36 -0
  376. package/apps/official/sshwifty/manifest.json +101 -0
  377. package/apps/official/stirling-pdf/compose.yml +23 -0
  378. package/apps/official/stirling-pdf/manifest.json +65 -0
  379. package/apps/official/supabase/compose.yml +39 -0
  380. package/apps/official/supabase/files/pre-install.sh +201 -0
  381. package/apps/official/supabase/files/volumes/api/kong.yml +221 -0
  382. package/apps/official/supabase/files/volumes/db/_supabase.sql +3 -0
  383. package/apps/official/supabase/files/volumes/db/jwt.sql +5 -0
  384. package/apps/official/supabase/files/volumes/db/logs.sql +6 -0
  385. package/apps/official/supabase/files/volumes/db/pooler.sql +6 -0
  386. package/apps/official/supabase/files/volumes/db/realtime.sql +4 -0
  387. package/apps/official/supabase/files/volumes/db/roles.sql +8 -0
  388. package/apps/official/supabase/files/volumes/db/webhooks.sql +208 -0
  389. package/apps/official/supabase/files/volumes/functions/hello/index.ts +6 -0
  390. package/apps/official/supabase/files/volumes/functions/main/index.ts +93 -0
  391. package/apps/official/supabase/files/volumes/logs/vector.yml +266 -0
  392. package/apps/official/supabase/files/volumes/pooler/pooler.exs +30 -0
  393. package/apps/official/supabase/manifest.json +327 -0
  394. package/apps/official/supabase/supabase-analytics.yml +32 -0
  395. package/apps/official/supabase/supabase-auth.yml +34 -0
  396. package/apps/official/supabase/supabase-db.yml +42 -0
  397. package/apps/official/supabase/supabase-functions.yml +24 -0
  398. package/apps/official/supabase/supabase-imgproxy.yml +25 -0
  399. package/apps/official/supabase/supabase-kong.yml +30 -0
  400. package/apps/official/supabase/supabase-meta.yml +20 -0
  401. package/apps/official/supabase/supabase-pooler.yml +45 -0
  402. package/apps/official/supabase/supabase-realtime.yml +42 -0
  403. package/apps/official/supabase/supabase-rest.yml +21 -0
  404. package/apps/official/supabase/supabase-storage.yml +36 -0
  405. package/apps/official/supabase/supabase-vector.yml +23 -0
  406. package/apps/official/tailscale/compose.yml +23 -0
  407. package/apps/official/tailscale/manifest.json +65 -0
  408. package/apps/official/tautulli/compose.yml +21 -0
  409. package/apps/official/tautulli/files/pre-install.sh +9 -0
  410. package/apps/official/tautulli/manifest.json +69 -0
  411. package/apps/official/termix/compose.yml +18 -0
  412. package/apps/official/termix/manifest.json +65 -0
  413. package/apps/official/teslamate/teslamate-grafana.yml +22 -0
  414. package/apps/official/teslamate/teslamate-mosquitto.yml +27 -0
  415. package/apps/official/teslamate/teslamate-pgsql.yml +24 -0
  416. package/apps/official/teslamate/teslamate.yml +27 -0
  417. package/apps/official/thelounge/compose.yml +20 -0
  418. package/apps/official/thelounge/manifest.json +65 -0
  419. package/apps/official/theme-park/compose.yml +21 -0
  420. package/apps/official/theme-park/manifest.json +74 -0
  421. package/apps/official/traefik-access-log/compose.yml +14 -0
  422. package/apps/official/traefik-access-log/manifest.json +59 -0
  423. package/apps/official/traefik-certs-dumper/compose.yml +18 -0
  424. package/apps/official/traefik-certs-dumper/manifest.json +56 -0
  425. package/apps/official/traefik-error-log/compose.yml +14 -0
  426. package/apps/official/traefik-error-log/manifest.json +59 -0
  427. package/apps/official/transmission/compose.yml +33 -0
  428. package/apps/official/transmission/manifest.json +90 -0
  429. package/apps/official/trilium/compose.yml +19 -0
  430. package/apps/official/trilium/manifest.json +65 -0
  431. package/apps/official/uptime-kuma/compose.yml +17 -0
  432. package/apps/official/uptime-kuma/manifest.json +65 -0
  433. package/apps/official/vaultwarden/compose.yml +20 -0
  434. package/apps/official/vaultwarden/files/pre-install.sh +27 -0
  435. package/apps/official/vaultwarden/manifest.json +86 -0
  436. package/apps/official/vikunja/compose.yml +30 -0
  437. package/apps/official/vikunja/manifest.json +123 -0
  438. package/apps/official/vikunja/vikunja-mariadb.yml +26 -0
  439. package/apps/official/viniplay/compose.yml +18 -0
  440. package/apps/official/viniplay/files/pre-install.sh +9 -0
  441. package/apps/official/viniplay/manifest.json +63 -0
  442. package/apps/official/vscode/compose.yml +28 -0
  443. package/apps/official/vscode/manifest.json +65 -0
  444. package/apps/official/wallos/compose.yml +19 -0
  445. package/apps/official/wallos/manifest.json +65 -0
  446. package/apps/official/weaviate/compose.yml +28 -0
  447. package/apps/official/weaviate/manifest.json +82 -0
  448. package/apps/official/wg-easy/compose.yml +31 -0
  449. package/apps/official/wg-easy/files/post-install.sh +32 -0
  450. package/apps/official/wg-easy/manifest.json +118 -0
  451. package/apps/official/wikidocs/compose.yml +19 -0
  452. package/apps/official/wikidocs/manifest.json +65 -0
  453. package/apps/official/wud/compose.yml +22 -0
  454. package/apps/official/wud/manifest.json +74 -0
  455. package/apps/official/xpipe-webtop/compose.yml +21 -0
  456. package/apps/official/xpipe-webtop/manifest.json +83 -0
  457. package/apps/official/zerotier/compose.yml +17 -0
  458. package/apps/official/zerotier/files/post-install.sh +23 -0
  459. package/apps/official/zerotier/manifest.json +78 -0
  460. package/apps/unofficial/9router/compose.yml +30 -0
  461. package/apps/unofficial/9router/files/oauth-fix.patch +32 -0
  462. package/apps/unofficial/9router/files/pre-install.sh +87 -0
  463. package/apps/unofficial/9router/manifest.json +144 -0
  464. package/apps/unofficial/openclaw/Dockerfile.full +79 -0
  465. package/apps/unofficial/openclaw/compose.yml +60 -0
  466. package/apps/unofficial/openclaw/files/post-install.sh +316 -0
  467. package/apps/unofficial/openclaw/files/pre-install.sh +174 -0
  468. package/apps/unofficial/openclaw/manifest.json +178 -0
  469. package/apps/version_pins +67 -0
  470. package/bin/deployrr-init.sh +49 -0
  471. package/latest-version +1 -0
  472. package/package.json +21 -0
@@ -0,0 +1,760 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "Deployrr App Manifest",
4
+ "description": "Manifest schema for Deployrr apps",
5
+ "type": "object",
6
+ "required": [
7
+ "version",
8
+ "app",
9
+ "deployment",
10
+ "requirements",
11
+ "status"
12
+ ],
13
+ "properties": {
14
+ "version": {
15
+ "type": "string",
16
+ "description": "Manifest schema version",
17
+ "pattern": "^[0-9]+\\.[0-9]+$"
18
+ },
19
+ "app": {
20
+ "type": "object",
21
+ "required": [
22
+ "sname",
23
+ "pname",
24
+ "description",
25
+ "descriptionShort",
26
+ "icon",
27
+ "category",
28
+ "menuNumber"
29
+ ],
30
+ "properties": {
31
+ "sname": {
32
+ "type": "string",
33
+ "description": "Service name (container name)",
34
+ "maxLength": 32,
35
+ "pattern": "^[a-z0-9-]+$"
36
+ },
37
+ "pname": {
38
+ "type": "string",
39
+ "description": "Proper/display name"
40
+ },
41
+ "description": {
42
+ "type": "string",
43
+ "description": "Full description"
44
+ },
45
+ "descriptionShort": {
46
+ "type": "string",
47
+ "description": "Short description for dialog",
48
+ "maxLength": 42
49
+ },
50
+ "icon": {
51
+ "type": "string",
52
+ "description": "Icon identifier for dashboard"
53
+ },
54
+ "category": {
55
+ "type": "string",
56
+ "description": "App category",
57
+ "enum": [
58
+ "core",
59
+ "official",
60
+ "community",
61
+ "unofficial"
62
+ ]
63
+ },
64
+ "menuNumber": {
65
+ "type": "string",
66
+ "description": "Menu category number",
67
+ "pattern": "^0[3-7]$"
68
+ },
69
+ "tags": {
70
+ "type": "array",
71
+ "description": "Tags for filtering and categorization",
72
+ "items": {
73
+ "type": "string"
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "deployment": {
79
+ "type": "object",
80
+ "required": [
81
+ "compose",
82
+ "profiles",
83
+ "webui"
84
+ ],
85
+ "properties": {
86
+ "type": {
87
+ "type": "string",
88
+ "description": "Deployment type: single container or multi-container app",
89
+ "enum": [
90
+ "single",
91
+ "multicontainer"
92
+ ],
93
+ "default": "single"
94
+ },
95
+ "compose": {
96
+ "type": "string",
97
+ "description": "Compose filename relative to app folder"
98
+ },
99
+ "profiles": {
100
+ "type": "array",
101
+ "description": "Docker compose profiles",
102
+ "items": {
103
+ "type": "string"
104
+ }
105
+ },
106
+ "networks": {
107
+ "type": "array",
108
+ "description": "Required networks",
109
+ "items": {
110
+ "type": "string"
111
+ }
112
+ },
113
+ "webui": {
114
+ "type": "boolean",
115
+ "description": "Has web interface"
116
+ },
117
+ "port": {
118
+ "type": "number",
119
+ "description": "Default host port (if webui)"
120
+ },
121
+ "protocol": {
122
+ "type": "string",
123
+ "description": "Protocol: http or https",
124
+ "enum": [
125
+ "http",
126
+ "https"
127
+ ]
128
+ },
129
+ "build": {
130
+ "type": "object",
131
+ "description": "Pre-build config for apps without published Docker images. Image is built locally before compose up.",
132
+ "properties": {
133
+ "context": {
134
+ "type": "string",
135
+ "description": "Build context directory relative to app folder",
136
+ "default": "."
137
+ },
138
+ "dockerfile": {
139
+ "type": "string",
140
+ "description": "Dockerfile path relative to app folder",
141
+ "default": "Dockerfile"
142
+ },
143
+ "imageName": {
144
+ "type": "string",
145
+ "description": "Local image name (e.g., deployrr/openclaw:latest). Must match image: in compose.yml"
146
+ },
147
+ "localBuild": {
148
+ "type": "boolean",
149
+ "description": "Set to true for apps whose Docker image is built locally rather than pulled from a registry. Enables intelligent update routing (build vs pull).",
150
+ "default": false
151
+ }
152
+ },
153
+ "required": [
154
+ "imageName"
155
+ ]
156
+ }
157
+ }
158
+ },
159
+ "dependencies": {
160
+ "type": "array",
161
+ "description": "Multi-container app dependencies (for deployment.type: multicontainer)",
162
+ "items": {
163
+ "type": "object",
164
+ "required": [
165
+ "sname",
166
+ "pname",
167
+ "compose",
168
+ "installOrder"
169
+ ],
170
+ "properties": {
171
+ "sname": {
172
+ "type": "string",
173
+ "description": "Service name (container name) of the dependency"
174
+ },
175
+ "pname": {
176
+ "type": "string",
177
+ "description": "Proper/display name of the dependency"
178
+ },
179
+ "compose": {
180
+ "type": "string",
181
+ "description": "Compose filename for this dependency (e.g., authelia-redis.yml)"
182
+ },
183
+ "installOrder": {
184
+ "type": "integer",
185
+ "description": "Installation/start order (1 = first, 2 = second, etc.)",
186
+ "minimum": 1
187
+ },
188
+ "waitForHealthy": {
189
+ "type": "boolean",
190
+ "description": "Whether to wait for container to be healthy before proceeding",
191
+ "default": false
192
+ },
193
+ "required": {
194
+ "type": "boolean",
195
+ "description": "Whether the dependency is required (default: true)",
196
+ "default": true
197
+ },
198
+ "description": {
199
+ "type": "string",
200
+ "description": "Description of what this dependency does"
201
+ }
202
+ }
203
+ }
204
+ },
205
+ "requirements": {
206
+ "type": "object",
207
+ "required": [
208
+ "prerequisites"
209
+ ],
210
+ "properties": {
211
+ "prerequisites": {
212
+ "type": "array",
213
+ "description": "Required prerequisites. Standard values: 'prerequisites' (basic setup), 'folder_permission' (requires folders.permissions config)",
214
+ "items": {
215
+ "type": "string",
216
+ "description": "Prerequisite type: 'prerequisites' for basic setup check, 'folder_permission' to enable appdata permission handling from folders.permissions"
217
+ }
218
+ },
219
+ "apps": {
220
+ "type": "array",
221
+ "description": "Required running apps",
222
+ "items": {
223
+ "type": "string"
224
+ }
225
+ },
226
+ "systemType": {
227
+ "type": "array",
228
+ "description": "Compatible system types",
229
+ "items": {
230
+ "type": "string"
231
+ }
232
+ }
233
+ }
234
+ },
235
+ "files": {
236
+ "type": "array",
237
+ "description": "Files to copy",
238
+ "items": {
239
+ "type": "object",
240
+ "required": [
241
+ "source",
242
+ "dest"
243
+ ],
244
+ "properties": {
245
+ "source": {
246
+ "type": "string",
247
+ "description": "Source file path relative to app folder"
248
+ },
249
+ "dest": {
250
+ "type": "string",
251
+ "description": "Destination path (placeholders allowed)"
252
+ },
253
+ "placeholders": {
254
+ "type": "object",
255
+ "description": "Placeholder substitutions for this file"
256
+ }
257
+ }
258
+ }
259
+ },
260
+ "placeholders": {
261
+ "type": "object",
262
+ "properties": {
263
+ "compose": {
264
+ "type": "object",
265
+ "description": "Compose file substitutions"
266
+ },
267
+ "config": {
268
+ "type": "object",
269
+ "description": "Config file substitutions"
270
+ }
271
+ }
272
+ },
273
+ "dashboard": {
274
+ "type": "object",
275
+ "properties": {
276
+ "enabled": {
277
+ "type": "boolean",
278
+ "description": "Show on dashboard"
279
+ },
280
+ "location": {
281
+ "type": "string",
282
+ "description": "Dashboard location",
283
+ "enum": [
284
+ "other",
285
+ "remote",
286
+ "local"
287
+ ]
288
+ },
289
+ "showStats": {
290
+ "type": "boolean",
291
+ "description": "Show statistics"
292
+ },
293
+ "portVariable": {
294
+ "type": [
295
+ "string",
296
+ "null"
297
+ ],
298
+ "description": "Environment variable name that holds the webui port (e.g., 'NPM_ADMIN_PORT'). Used to construct service URL for local dashboard entry."
299
+ }
300
+ }
301
+ },
302
+ "hooks": {
303
+ "type": "object",
304
+ "description": "Pre/post install hooks for dialogs, messages, and scripts",
305
+ "properties": {
306
+ "preInstall": {
307
+ "type": "object",
308
+ "description": "Pre-install hooks (dialog and/or script)",
309
+ "properties": {
310
+ "dialog": {
311
+ "type": "object",
312
+ "description": "Dialog to show before installation",
313
+ "required": [
314
+ "type",
315
+ "title",
316
+ "message"
317
+ ],
318
+ "properties": {
319
+ "type": {
320
+ "type": "string",
321
+ "description": "Dialog type: 'warning' (yesno, aborts if declined), 'info' (msgbox, informational only)",
322
+ "enum": [
323
+ "warning",
324
+ "info"
325
+ ]
326
+ },
327
+ "title": {
328
+ "type": "string",
329
+ "description": "Dialog title"
330
+ },
331
+ "message": {
332
+ "type": "string",
333
+ "description": "Dialog message. Use \\n for newlines. Use \\Z1...\\Zn for red (warning), \\Z4...\\Zn for blue (reference)."
334
+ }
335
+ }
336
+ },
337
+ "script": {
338
+ "type": [
339
+ "string",
340
+ "null"
341
+ ],
342
+ "description": "Pre-install script filename (runs after dialog if confirmed)"
343
+ },
344
+ "runOnUpdate": {
345
+ "type": "boolean",
346
+ "description": "If true, the pre-install script will be executed during a stack update (e.g., to regenerate tokens or perform custom builds) instead of performing a generic code pull and docker build.",
347
+ "default": false
348
+ }
349
+ }
350
+ },
351
+ "postInstall": {
352
+ "type": "object",
353
+ "description": "Post-install hooks (messages and/or script)",
354
+ "properties": {
355
+ "messages": {
356
+ "type": "array",
357
+ "description": "Messages to display in terminal after installation",
358
+ "items": {
359
+ "type": "object",
360
+ "required": [
361
+ "style",
362
+ "text"
363
+ ],
364
+ "properties": {
365
+ "style": {
366
+ "type": "string",
367
+ "description": "Message style: 'note' (yellow info), 'warning' (red warning), 'info' (cyan info)",
368
+ "enum": [
369
+ "note",
370
+ "warning",
371
+ "info"
372
+ ]
373
+ },
374
+ "text": {
375
+ "type": "string",
376
+ "description": "Message text. Can include $VARIABLE placeholders that will be expanded."
377
+ }
378
+ }
379
+ }
380
+ },
381
+ "script": {
382
+ "type": [
383
+ "string",
384
+ "null"
385
+ ],
386
+ "description": "Post-install script filename"
387
+ }
388
+ }
389
+ },
390
+ "preUninstall": {
391
+ "type": "object",
392
+ "description": "Pre-uninstall hooks",
393
+ "properties": {
394
+ "dialog": {
395
+ "type": "object",
396
+ "description": "Dialog to show before uninstallation",
397
+ "properties": {
398
+ "type": {
399
+ "type": "string",
400
+ "enum": [
401
+ "warning",
402
+ "info"
403
+ ]
404
+ },
405
+ "title": {
406
+ "type": "string"
407
+ },
408
+ "message": {
409
+ "type": "string"
410
+ }
411
+ }
412
+ },
413
+ "script": {
414
+ "type": [
415
+ "string",
416
+ "null"
417
+ ],
418
+ "description": "Pre-uninstall script filename"
419
+ }
420
+ }
421
+ },
422
+ "postUninstall": {
423
+ "type": "object",
424
+ "description": "Post-uninstall hooks",
425
+ "properties": {
426
+ "messages": {
427
+ "type": "array",
428
+ "description": "Messages to display after uninstallation",
429
+ "items": {
430
+ "type": "object",
431
+ "properties": {
432
+ "style": {
433
+ "type": "string",
434
+ "enum": [
435
+ "note",
436
+ "warning",
437
+ "info"
438
+ ]
439
+ },
440
+ "text": {
441
+ "type": "string"
442
+ }
443
+ }
444
+ }
445
+ },
446
+ "script": {
447
+ "type": [
448
+ "string",
449
+ "null"
450
+ ],
451
+ "description": "Post-uninstall script filename"
452
+ }
453
+ }
454
+ }
455
+ }
456
+ },
457
+ "env": {
458
+ "type": "object",
459
+ "properties": {
460
+ "variables": {
461
+ "type": "array",
462
+ "description": "Environment variables to prompt/set",
463
+ "items": {
464
+ "type": "object",
465
+ "properties": {
466
+ "name": {
467
+ "type": "string",
468
+ "description": "Variable name (e.g., APP_PORT)"
469
+ },
470
+ "description": {
471
+ "type": "string",
472
+ "description": "Human-readable description"
473
+ },
474
+ "type": {
475
+ "type": "string",
476
+ "description": "Variable type: string, port, password",
477
+ "enum": [
478
+ "string",
479
+ "port",
480
+ "password"
481
+ ]
482
+ },
483
+ "default": {
484
+ "description": "Default value"
485
+ },
486
+ "prompt": {
487
+ "type": "boolean",
488
+ "description": "Whether to prompt user for this value"
489
+ },
490
+ "required": {
491
+ "type": "boolean",
492
+ "description": "Whether this variable is required"
493
+ },
494
+ "fixed": {
495
+ "type": "boolean",
496
+ "description": "For port type: if true, port cannot be changed and must be available or installation fails. Use for mandatory ports like 80/443 on reverse proxies.",
497
+ "default": false
498
+ },
499
+ "validation": {
500
+ "type": "object",
501
+ "description": "Validation rules",
502
+ "properties": {
503
+ "type": {
504
+ "type": "string"
505
+ },
506
+ "min": {
507
+ "type": "number"
508
+ },
509
+ "max": {
510
+ "type": "number"
511
+ }
512
+ }
513
+ }
514
+ },
515
+ "required": [
516
+ "name",
517
+ "type"
518
+ ]
519
+ }
520
+ },
521
+ "secrets": {
522
+ "type": "array",
523
+ "description": "Docker secrets to create before installation. Secrets are stored as files in $DOCKER_FOLDER/secrets/",
524
+ "items": {
525
+ "type": "object",
526
+ "required": [
527
+ "name",
528
+ "type"
529
+ ],
530
+ "properties": {
531
+ "name": {
532
+ "type": "string",
533
+ "description": "Secret name (also used as filename in secrets folder). For derived files (type: derived), may include hyphens and dots (e.g. openclaw.env).",
534
+ "pattern": "^[a-z0-9_][a-z0-9_.\\-]*$"
535
+ },
536
+ "description": {
537
+ "type": "string",
538
+ "description": "Human-readable description shown in prompt dialog"
539
+ },
540
+ "type": {
541
+ "type": "string",
542
+ "description": "Secret generation type: 'random' (auto-generate, no prompt), 'random_with_prompt' (generate random, show as default in prompt), 'prompt' (text input), 'prompt_password' (masked password input with confirmation), 'derived' (written by a pre-install hook, not generated by Deployrr — tracked for uninstall cleanup only)",
543
+ "enum": [
544
+ "random",
545
+ "random_with_prompt",
546
+ "prompt",
547
+ "prompt_password",
548
+ "derived"
549
+ ]
550
+ },
551
+ "length": {
552
+ "type": "integer",
553
+ "description": "Length of generated random password (for 'random' and 'random_with_prompt' types)",
554
+ "default": 16,
555
+ "minimum": 8,
556
+ "maximum": 64
557
+ },
558
+ "addToCompose": {
559
+ "type": "boolean",
560
+ "description": "If true, add this secret to the global compose file's secrets block",
561
+ "default": true
562
+ }
563
+ }
564
+ }
565
+ },
566
+ "constants": {
567
+ "type": "array",
568
+ "description": "Fixed environment variables that are set automatically without prompting the user",
569
+ "items": {
570
+ "type": "object",
571
+ "required": [
572
+ "name",
573
+ "value"
574
+ ],
575
+ "properties": {
576
+ "name": {
577
+ "type": "string",
578
+ "description": "Variable name"
579
+ },
580
+ "value": {
581
+ "type": "string",
582
+ "description": "Fixed value to set"
583
+ },
584
+ "description": {
585
+ "type": "string",
586
+ "description": "Human-readable description (for documentation)"
587
+ }
588
+ }
589
+ }
590
+ }
591
+ }
592
+ },
593
+ "traefik": {
594
+ "type": "object",
595
+ "description": "Traefik reverse proxy configuration",
596
+ "properties": {
597
+ "supported": {
598
+ "type": "boolean",
599
+ "description": "Whether the app supports Traefik routing via file provider",
600
+ "default": true
601
+ },
602
+ "subdomain": {
603
+ "type": "string",
604
+ "description": "Subdomain for Traefik routing (e.g., 'authelia' for authelia.$DOMAINNAME_1). Used for apps with Docker labels instead of file providers.",
605
+ "pattern": "^[a-z0-9-]+$"
606
+ },
607
+ "chain": {
608
+ "type": "string",
609
+ "description": "Default middleware chain to use"
610
+ },
611
+ "middlewares": {
612
+ "type": "array",
613
+ "description": "Middleware files this app provides",
614
+ "items": {
615
+ "type": "string"
616
+ }
617
+ }
618
+ }
619
+ },
620
+ "folders": {
621
+ "type": "object",
622
+ "description": "Folder creation and permissions configuration",
623
+ "properties": {
624
+ "permissions": {
625
+ "type": "object",
626
+ "description": "Permission settings for appdata folder",
627
+ "properties": {
628
+ "appdata": {
629
+ "type": "string",
630
+ "description": "Owner:group for appdata folder (e.g., '$USERNAME:$USERNAME')",
631
+ "default": "$USERNAME:$USERNAME"
632
+ },
633
+ "fixAfterStart": {
634
+ "type": "boolean",
635
+ "description": "If true, stop container after start, fix permissions, then restart. Use when container creates files with wrong ownership on first start.",
636
+ "default": false
637
+ }
638
+ }
639
+ },
640
+ "appdata": {
641
+ "type": "array",
642
+ "description": "Subdirectories to create in appdata folder",
643
+ "items": {
644
+ "type": "string"
645
+ }
646
+ },
647
+ "custom": {
648
+ "type": "array",
649
+ "description": "Custom folders to create",
650
+ "items": {
651
+ "type": "object",
652
+ "required": [
653
+ "path"
654
+ ],
655
+ "properties": {
656
+ "path": {
657
+ "type": "string",
658
+ "description": "Folder path (can include variables like $DOCKER_FOLDER)"
659
+ },
660
+ "children": {
661
+ "type": "array",
662
+ "description": "Child subdirectories to create",
663
+ "items": {
664
+ "type": "string"
665
+ }
666
+ },
667
+ "owner": {
668
+ "type": "string",
669
+ "description": "Owner:group (e.g., '$USERNAME:$USERNAME')"
670
+ },
671
+ "permissions": {
672
+ "type": "string",
673
+ "description": "Permissions mode (e.g., '755')"
674
+ }
675
+ }
676
+ }
677
+ }
678
+ }
679
+ },
680
+ "firewall": {
681
+ "type": "object",
682
+ "description": "Firewall rules (auto-translated to UFW or firewalld based on system). Rules use UFW syntax (e.g., 'allow 80/tcp', 'allow from 10.0.0.0/24'). Legacy 'ufw' key is also supported for backward compatibility.",
683
+ "properties": {
684
+ "rules": {
685
+ "type": "array",
686
+ "description": "Firewall rules in UFW syntax (auto-translated to firewall-cmd on RHEL/CentOS)",
687
+ "items": {
688
+ "type": "string"
689
+ }
690
+ }
691
+ }
692
+ },
693
+ "database": {
694
+ "type": "object",
695
+ "description": "Database configuration metadata for apps with dedicated database containers. This is informational/documentation - the actual database is deployed via the dependencies array.",
696
+ "properties": {
697
+ "type": {
698
+ "type": "string",
699
+ "description": "Database type",
700
+ "enum": [
701
+ "postgresql",
702
+ "mariadb",
703
+ "mysql",
704
+ "redis",
705
+ "mongodb",
706
+ "influxdb"
707
+ ]
708
+ },
709
+ "containerSname": {
710
+ "type": "string",
711
+ "description": "Service name of the database container (e.g., 'n8n-postgresql')",
712
+ "pattern": "^[a-z0-9-]+$"
713
+ },
714
+ "name": {
715
+ "type": "string",
716
+ "description": "Database/schema name (typically same as app sname)"
717
+ },
718
+ "user": {
719
+ "type": "string",
720
+ "description": "Database username (convention: {sname}_db_user)"
721
+ },
722
+ "passwordSecret": {
723
+ "type": "string",
724
+ "description": "Name of the secret containing the database password",
725
+ "pattern": "^[a-z0-9_]+$"
726
+ },
727
+ "host": {
728
+ "type": "string",
729
+ "description": "Database host (typically same as containerSname for dedicated databases)"
730
+ },
731
+ "port": {
732
+ "type": "integer",
733
+ "description": "Database port (e.g., 5432 for PostgreSQL, 3306 for MariaDB)"
734
+ }
735
+ }
736
+ },
737
+ "status": {
738
+ "type": "object",
739
+ "required": [
740
+ "file",
741
+ "successMessage",
742
+ "telemetryAction"
743
+ ],
744
+ "properties": {
745
+ "file": {
746
+ "type": "string",
747
+ "description": "Status file name"
748
+ },
749
+ "successMessage": {
750
+ "type": "string",
751
+ "description": "Success message to display"
752
+ },
753
+ "telemetryAction": {
754
+ "type": "string",
755
+ "description": "Telemetry action name"
756
+ }
757
+ }
758
+ }
759
+ }
760
+ }