@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,118 @@
1
+ {
2
+ "$schema": "../../../apps/manifest-schema.json",
3
+ "version": "1.2",
4
+
5
+ "app": {
6
+ "sname": "wg-easy",
7
+ "pname": "WG-Easy",
8
+ "description": "WireGuard VPN server with a simple web-based management interface. Easily create, manage, and delete VPN clients with QR code support for mobile devices.",
9
+ "descriptionShort": "Wireguard VPN + Admin WebUI",
10
+ "icon": "sh-wireguard",
11
+ "category": "official",
12
+ "menuNumber": "06",
13
+ "tags": ["vpn", "wireguard", "network", "security"]
14
+ },
15
+
16
+ "deployment": {
17
+ "type": "single",
18
+ "compose": "compose.yml",
19
+ "profiles": ["apps", "all"],
20
+ "networks": ["default"],
21
+ "webui": true,
22
+ "port": 51821,
23
+ "protocol": "http"
24
+ },
25
+
26
+ "requirements": {
27
+ "prerequisites": ["prerequisites"],
28
+ "apps": []
29
+ },
30
+
31
+ "folders": {
32
+ "appdata": ["wireguard"]
33
+ },
34
+
35
+ "traefik": {
36
+ "supported": true
37
+ },
38
+
39
+ "dashboard": {
40
+ "enabled": true,
41
+ "location": "local",
42
+ "showStats": true,
43
+ "portVariable": "WGEASY_PORT"
44
+ },
45
+
46
+ "env": {
47
+ "variables": [
48
+ {
49
+ "name": "WGEASY_PORT",
50
+ "description": "Web interface port",
51
+ "type": "port",
52
+ "default": 51821,
53
+ "prompt": true,
54
+ "required": true,
55
+ "validation": { "type": "port", "min": 1, "max": 65535 }
56
+ },
57
+ {
58
+ "name": "WGEASY_DEFAULT_ADDRESS",
59
+ "description": "Default client IP range (all clients will get IPs in this range)",
60
+ "type": "string",
61
+ "default": "192.168.20.x",
62
+ "prompt": true,
63
+ "required": true
64
+ },
65
+ {
66
+ "name": "WGEASY_DEFAULT_DNS",
67
+ "description": "Default DNS servers for clients (comma-separated)",
68
+ "type": "string",
69
+ "default": "1.1.1.1,1.0.0.1",
70
+ "prompt": true,
71
+ "required": true
72
+ },
73
+ {
74
+ "name": "WGEASY_ALLOWED_IPS",
75
+ "description": "Allowed IPs range (0.0.0.0/0,::/0 allows access to all LAN devices)",
76
+ "type": "string",
77
+ "default": "0.0.0.0/0,::/0",
78
+ "prompt": true,
79
+ "required": true
80
+ }
81
+ ],
82
+ "secrets": [
83
+ {
84
+ "name": "wgeasy_password",
85
+ "description": "Password for WG-Easy WebUI",
86
+ "type": "prompt_password",
87
+ "addToCompose": true
88
+ }
89
+ ]
90
+ },
91
+
92
+ "hooks": {
93
+ "postInstall": {
94
+ "script": "files/post-install.sh",
95
+ "messages": [
96
+ {
97
+ "style": "warning",
98
+ "text": "Make sure UDP port 51820 is forwarded/reachable from your router to the WireGuard server."
99
+ }
100
+ ]
101
+ }
102
+ },
103
+
104
+ "postInstall": {
105
+ "messages": [
106
+ {
107
+ "type": "note",
108
+ "text": "WG-Easy password is hashed using bcrypt. The password is stored in \\Z4$DOCKER_FOLDER/secrets/wgeasy_password\\Zn."
109
+ }
110
+ ]
111
+ },
112
+
113
+ "status": {
114
+ "file": "06_wg-easy_status",
115
+ "successMessage": "WG-Easy Setup Completed",
116
+ "telemetryAction": "wg-easy"
117
+ }
118
+ }
@@ -0,0 +1,19 @@
1
+ services:
2
+ # Wikidocs - Flat-file Markdown Wiki
3
+ wikidocs:
4
+ image: zavy86/wikidocs
5
+ container_name: wikidocs
6
+ security_opt:
7
+ - no-new-privileges:true
8
+ restart: unless-stopped
9
+ profiles: ["apps", "all"]
10
+ networks:
11
+ - default
12
+ ports:
13
+ - "$WIKIDOCS_PORT:80"
14
+ volumes:
15
+ - '$DOCKERDIR/appdata/wikidocs:/datasets'
16
+ environment:
17
+ PUID: $PUID
18
+ PGID: $PGID
19
+ # DOCKER-LABELS-PLACEHOLDER
@@ -0,0 +1,65 @@
1
+ {
2
+ "$schema": "../../../apps/manifest-schema.json",
3
+ "version": "1.2",
4
+
5
+ "app": {
6
+ "sname": "wikidocs",
7
+ "pname": "Wikidocs",
8
+ "description": "Wikidocs is a simple and lightweight flat-file wiki application that uses Markdown files. It requires no database and is easy to deploy and maintain.",
9
+ "descriptionShort": "Flat-file Markdown Wiki",
10
+ "icon": "sh-wikidocs",
11
+ "category": "official",
12
+ "menuNumber": "06",
13
+ "tags": ["wiki", "documentation", "markdown"]
14
+ },
15
+
16
+ "deployment": {
17
+ "type": "single",
18
+ "compose": "compose.yml",
19
+ "profiles": ["apps", "all"],
20
+ "networks": ["default"],
21
+ "webui": true,
22
+ "port": 82,
23
+ "protocol": "http"
24
+ },
25
+
26
+ "requirements": {
27
+ "prerequisites": ["prerequisites"],
28
+ "apps": []
29
+ },
30
+
31
+ "traefik": {
32
+ "supported": true
33
+ },
34
+
35
+ "dashboard": {
36
+ "enabled": true,
37
+ "location": "local",
38
+ "showStats": true,
39
+ "portVariable": "WIKIDOCS_PORT"
40
+ },
41
+
42
+ "env": {
43
+ "variables": [
44
+ {
45
+ "name": "WIKIDOCS_PORT",
46
+ "description": "Web interface port",
47
+ "type": "port",
48
+ "default": 82,
49
+ "prompt": true,
50
+ "required": true,
51
+ "validation": {
52
+ "type": "port",
53
+ "min": 1,
54
+ "max": 65535
55
+ }
56
+ }
57
+ ]
58
+ },
59
+
60
+ "status": {
61
+ "file": "06_wikidocs_status",
62
+ "successMessage": "Wikidocs Setup Completed",
63
+ "telemetryAction": "wikidocs"
64
+ }
65
+ }
@@ -0,0 +1,22 @@
1
+ services:
2
+ # WUD (What's Up Docker) - Docker Image Update Notification
3
+ wud:
4
+ image: fmartinou/whats-up-docker
5
+ container_name: wud
6
+ security_opt:
7
+ - no-new-privileges:true
8
+ restart: unless-stopped
9
+ profiles: ["apps", "all"]
10
+ networks:
11
+ - socket_proxy
12
+ ports:
13
+ - "$WUD_PORT:3000"
14
+ volumes:
15
+ - /var/run/docker.sock:/var/run/docker.sock
16
+ environment:
17
+ # - WUD_TRIGGER_DISCORD_1_URL=https://discord.com/api/webhooks/123/456
18
+ # - WUD_TRIGGER_DISCORD_1_BOTUSERNAME=WUD
19
+ - WUD_WATCHER_LOCAL_CRON=0 1 * * *
20
+ - WUD_WATCHER_LOCAL_WATCHALL=true
21
+ # - WUD_WATCHER_MYREMOTEHOST_HOST=<remote host>
22
+ # DOCKER-LABELS-PLACEHOLDER
@@ -0,0 +1,74 @@
1
+ {
2
+ "$schema": "../../../apps/manifest-schema.json",
3
+ "version": "1.2",
4
+
5
+ "app": {
6
+ "sname": "wud",
7
+ "pname": "What's Up Docker",
8
+ "description": "What's Up Docker (WUD) monitors Docker containers and notifies you when new images are available. It supports various notification methods including Discord, Slack, email, and more.",
9
+ "descriptionShort": "Docker image updates notification",
10
+ "icon": "sh-wud",
11
+ "category": "official",
12
+ "menuNumber": "06",
13
+ "tags": ["docker", "monitoring", "notifications", "updates"]
14
+ },
15
+
16
+ "deployment": {
17
+ "type": "single",
18
+ "compose": "compose.yml",
19
+ "profiles": ["apps", "all"],
20
+ "networks": ["socket_proxy"],
21
+ "webui": true,
22
+ "port": 3001,
23
+ "protocol": "http"
24
+ },
25
+
26
+ "requirements": {
27
+ "prerequisites": ["prerequisites"],
28
+ "apps": []
29
+ },
30
+
31
+ "postInstall": {
32
+ "messages": [
33
+ {
34
+ "type": "note",
35
+ "text": "You may edit wud.yml to enable notifications."
36
+ }
37
+ ]
38
+ },
39
+
40
+ "traefik": {
41
+ "supported": true
42
+ },
43
+
44
+ "dashboard": {
45
+ "enabled": true,
46
+ "location": "local",
47
+ "showStats": true,
48
+ "portVariable": "WUD_PORT"
49
+ },
50
+
51
+ "env": {
52
+ "variables": [
53
+ {
54
+ "name": "WUD_PORT",
55
+ "description": "Web interface port",
56
+ "type": "port",
57
+ "default": 3001,
58
+ "prompt": true,
59
+ "required": true,
60
+ "validation": {
61
+ "type": "port",
62
+ "min": 1,
63
+ "max": 65535
64
+ }
65
+ }
66
+ ]
67
+ },
68
+
69
+ "status": {
70
+ "file": "06_wud_status",
71
+ "successMessage": "What's Up Docker Setup Completed",
72
+ "telemetryAction": "wud"
73
+ }
74
+ }
@@ -0,0 +1,21 @@
1
+ services:
2
+ # XPipe Webtop - Web Desktop Environment
3
+ xpipe-webtop:
4
+ image: ghcr.io/xpipe-io/xpipe-webtop:latest
5
+ container_name: xpipe-webtop
6
+ security_opt:
7
+ - no-new-privileges:true
8
+ restart: unless-stopped
9
+ profiles: ["core", "all"]
10
+ networks:
11
+ - default
12
+ # DEVICES-GPU-PLACEHOLDER-DO-NOT-DELETE
13
+ ports:
14
+ - "$XPIPEWEBTOP_PORT:3000" # HTTP
15
+ # - "3001:3001" # HTTPS
16
+ volumes:
17
+ - $DOCKERDIR/appdata/xpipe-webtop:/config
18
+ - /var/run/docker.sock:/var/run/docker.sock #optional
19
+ # environment:
20
+ # SUBFOLDER: / #optional
21
+ # DOCKER-LABELS-PLACEHOLDER
@@ -0,0 +1,83 @@
1
+ {
2
+ "$schema": "../../../apps/manifest-schema.json",
3
+ "version": "1.2",
4
+ "app": {
5
+ "sname": "xpipe-webtop",
6
+ "pname": "XPipe Webtop",
7
+ "description": "XPipe Webtop is a web-based desktop environment that provides a full Linux desktop accessible through your browser with XPipe connection management built-in.",
8
+ "descriptionShort": "Web desktop environment",
9
+ "icon": "sh-xpipe",
10
+ "category": "official",
11
+ "menuNumber": "06",
12
+ "tags": [
13
+ "desktop",
14
+ "web",
15
+ "remote",
16
+ "xpipe"
17
+ ]
18
+ },
19
+ "deployment": {
20
+ "type": "single",
21
+ "compose": "compose.yml",
22
+ "profiles": [
23
+ "core",
24
+ "all"
25
+ ],
26
+ "networks": [
27
+ "default"
28
+ ],
29
+ "webui": true,
30
+ "port": 3004,
31
+ "protocol": "http"
32
+ },
33
+ "requirements": {
34
+ "prerequisites": [
35
+ "prerequisites",
36
+ "add_gpu"
37
+ ],
38
+ "apps": []
39
+ },
40
+ "gpu": {
41
+ "required": false,
42
+ "usage": "Hardware-accelerated rendering",
43
+ "vendors": {
44
+ "intel": {
45
+ "pattern": "dri"
46
+ },
47
+ "amd": {
48
+ "pattern": "dri"
49
+ }
50
+ }
51
+ },
52
+ "traefik": {
53
+ "supported": true
54
+ },
55
+ "dashboard": {
56
+ "enabled": true,
57
+ "location": "local",
58
+ "showStats": true,
59
+ "portVariable": "XPIPEWEBTOP_PORT"
60
+ },
61
+ "env": {
62
+ "variables": [
63
+ {
64
+ "name": "XPIPEWEBTOP_PORT",
65
+ "description": "Web interface port",
66
+ "type": "port",
67
+ "default": 3004,
68
+ "prompt": true,
69
+ "required": true,
70
+ "validation": {
71
+ "type": "port",
72
+ "min": 1,
73
+ "max": 65535
74
+ }
75
+ }
76
+ ]
77
+ },
78
+ "status": {
79
+ "file": "06_xpipe-webtop_status",
80
+ "successMessage": "XPipe Webtop Setup Completed",
81
+ "telemetryAction": "xpipe-webtop"
82
+ }
83
+ }
@@ -0,0 +1,17 @@
1
+ services:
2
+ # ZeroTier - Private Network over Internet
3
+ zerotier:
4
+ image: zerotier/zerotier:latest
5
+ container_name: zerotier
6
+ security_opt:
7
+ - no-new-privileges:true
8
+ restart: unless-stopped
9
+ profiles: ["core", "all"]
10
+ network_mode: host
11
+ cap_add:
12
+ - NET_ADMIN
13
+ - SYS_ADMIN
14
+ devices:
15
+ - /dev/net/tun
16
+ volumes:
17
+ - $DOCKERDIR/appdata/zerotier:/var/lib/zerotier-one
@@ -0,0 +1,23 @@
1
+ #!/bin/bash
2
+ # ZeroTier post-install script
3
+ # Joins the ZeroTier network if NETWORKID was provided
4
+
5
+ if [[ -n "$ZEROTIER_NETWORKID" ]]; then
6
+ echo "Connecting Docker Host to ZeroTier network $ZEROTIER_NETWORKID..."
7
+
8
+ # Wait a moment for the container to fully initialize
9
+ sleep 2
10
+
11
+ ZEROTIER_CONNECTION_STATUS="$(sudo docker exec zerotier zerotier-cli join "$ZEROTIER_NETWORKID" 2>/dev/null)"
12
+
13
+ if [[ "${ZEROTIER_CONNECTION_STATUS}" == "200"* ]]; then
14
+ echo -e "${GREEN}Successfully joined ZeroTier network.${ENDCOLOR}"
15
+ echo -e "${YELLOW}[NOTE]${ENDCOLOR} Remember to authorize this device in ZeroTier Central."
16
+ else
17
+ echo -e "${RED}[WARNING]${ENDCOLOR} Failed to join ZeroTier network. Status: $ZEROTIER_CONNECTION_STATUS"
18
+ echo "You can manually join later with: sudo docker exec zerotier zerotier-cli join $ZEROTIER_NETWORKID"
19
+ fi
20
+ else
21
+ echo -e "${YELLOW}[NOTE]${ENDCOLOR} No Network ID provided. To join a network later, run:"
22
+ echo "sudo docker exec zerotier zerotier-cli join YOUR_NETWORK_ID"
23
+ fi
@@ -0,0 +1,78 @@
1
+ {
2
+ "$schema": "../../../apps/manifest-schema.json",
3
+ "version": "1.2",
4
+
5
+ "app": {
6
+ "sname": "zerotier",
7
+ "pname": "ZeroTier",
8
+ "description": "ZeroTier creates secure networks between on-premise, cloud, desktop, and mobile devices. It enables direct connections for remote access, gaming, and IoT without complex firewall configurations.",
9
+ "descriptionShort": "Private network over internet",
10
+ "icon": "sh-zerotier",
11
+ "category": "official",
12
+ "menuNumber": "06",
13
+ "tags": ["networking", "vpn", "security", "zerotier"]
14
+ },
15
+
16
+ "deployment": {
17
+ "type": "single",
18
+ "compose": "compose.yml",
19
+ "profiles": ["core", "all"],
20
+ "networks": [],
21
+ "webui": false,
22
+ "port": 0,
23
+ "protocol": "http"
24
+ },
25
+
26
+ "requirements": {
27
+ "prerequisites": ["prerequisites", "network_adapter"],
28
+ "apps": []
29
+ },
30
+
31
+ "hooks": {
32
+ "preInstall": {
33
+ "dialog": {
34
+ "type": "warning",
35
+ "title": "ZeroTier Host Networking",
36
+ "message": "\\n\\Z1NOTE!\\Zn\\n\\nZeroTier client will be installed in \\Z2host networking\\Zn mode.\\n\\nThis means all apps on the Docker host can be accessed using ZEROTIER-IP:PORT (e.g. \\Z4http://XXX.XXX.XXX.XXX:3050\\Zn for Deployrr Dashboard).\\n\\nIf you provide a Network ID, Deployrr will automatically connect your Docker host to the ZeroTier network after installation.\\n\\nDo you wish to proceed?"
37
+ }
38
+ },
39
+ "postInstall": {
40
+ "script": "files/post-install.sh",
41
+ "messages": [
42
+ {
43
+ "style": "note",
44
+ "text": "Remember to authorize this device in your ZeroTier Central dashboard at https://my.zerotier.com"
45
+ }
46
+ ]
47
+ }
48
+ },
49
+
50
+ "traefik": {
51
+ "supported": false
52
+ },
53
+
54
+ "dashboard": {
55
+ "enabled": false,
56
+ "location": "local",
57
+ "showStats": false,
58
+ "portVariable": ""
59
+ },
60
+
61
+ "env": {
62
+ "variables": [
63
+ {
64
+ "name": "ZEROTIER_NETWORKID",
65
+ "description": "ZeroTier Network ID (from my.zerotier.com)",
66
+ "type": "string",
67
+ "prompt": true,
68
+ "required": false
69
+ }
70
+ ]
71
+ },
72
+
73
+ "status": {
74
+ "file": "06_zerotier_status",
75
+ "successMessage": "ZeroTier Setup Completed",
76
+ "telemetryAction": "zerotier"
77
+ }
78
+ }
@@ -0,0 +1,30 @@
1
+ services:
2
+ # 9Router - Universal AI Proxy & Smart Router
3
+ 9router:
4
+ image: deployrr/9router:latest
5
+ container_name: 9router
6
+ security_opt:
7
+ - no-new-privileges:true
8
+ restart: unless-stopped
9
+ profiles: [ "apps", "all" ]
10
+ networks:
11
+ - default
12
+ ports:
13
+ - "$NINEROUTER_PORT:20128"
14
+ volumes:
15
+ - $DOCKERDIR/appdata/9router/data:/app/data
16
+ - $DOCKERDIR/appdata/9router/usage:/root/.9router
17
+ environment:
18
+ - TZ=$TZ
19
+ - PUID=$PUID
20
+ - PGID=$PGID
21
+ - PORT=20128
22
+ - HOSTNAME=0.0.0.0
23
+ - NODE_ENV=production
24
+ - NEXT_PUBLIC_BASE_URL=http://localhost:20128
25
+ - JWT_SECRET=JWT-SECRET-PLACEHOLDER
26
+ - INITIAL_PASSWORD=INITIAL-PASSWORD-PLACEHOLDER
27
+ - API_KEY_SECRET=API-KEY-SECRET-PLACEHOLDER
28
+ - MACHINE_ID_SALT=MACHINE-ID-SALT-PLACEHOLDER
29
+ - REQUIRE_API_KEY=false
30
+ # DOCKER-LABELS-PLACEHOLDER
@@ -0,0 +1,32 @@
1
+ diff --git a/src/shared/components/OAuthModal.js b/src/shared/components/OAuthModal.js
2
+ index 43d4912..e766a5d 100644
3
+ --- a/src/shared/components/OAuthModal.js
4
+ +++ b/src/shared/components/OAuthModal.js
5
+ @@ -217,7 +217,7 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
6
+ const isLocalhost = event.origin.includes("localhost") || event.origin.includes("127.0.0.1");
7
+ const isSameOrigin = event.origin === window.location.origin;
8
+ if (!isLocalhost && !isSameOrigin) return;
9
+ -
10
+ +
11
+ if (event.data?.type === "oauth_callback") {
12
+ handleCallback(event.data.data);
13
+ }
14
+ @@ -272,6 +272,8 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
15
+ // Handle manual URL input
16
+ const handleManualSubmit = async () => {
17
+ try {
18
+ + if (callbackProcessedRef.current) return;
19
+ + callbackProcessedRef.current = true;
20
+ setError(null);
21
+ const url = new URL(callbackUrl);
22
+ const code = url.searchParams.get("code");
23
+ @@ -363,6 +365,9 @@ export default function OAuthModal({ isOpen, provider, providerInfo, onSuccess,
24
+ <div className="space-y-4">
25
+ <div>
26
+ <p className="text-sm font-medium mb-2">Step 1: Open this URL in your browser</p>
27
+ + <div className="bg-yellow-500/10 border border-yellow-500/20 text-yellow-600 dark:text-yellow-400 p-3 rounded-md mb-3 text-xs">
28
+ + <strong>Note:</strong> After authorizing, you will be redirected to a <code>localhost</code> page. This page may show a <strong>Connection Refused</strong> or <strong>404 error</strong>. This is expected! Simply copy the full URL from the address bar of that error page.
29
+ + </div>
30
+ <div className="flex gap-2">
31
+ <Input value={authData?.authUrl || ""} readOnly className="flex-1 font-mono text-xs" />
32
+ <Button variant="secondary" icon={copied === "auth_url" ? "check" : "content_copy"} onClick={() => copy(authData?.authUrl, "auth_url")}>
@@ -0,0 +1,87 @@
1
+ #!/bin/bash
2
+ # 9Router pre-install hook
3
+ # Clones the 9Router repo and builds the Docker image locally
4
+ # Then injects secrets into the compose file
5
+
6
+ APP_COMPOSE_FILE="$DOCKER_FOLDER/compose/$HOSTNAME/9router.yml"
7
+ BUILD_DIR="$DOCKER_FOLDER/appdata/9router/build"
8
+ IMAGE_NAME="deployrr/9router:latest"
9
+
10
+ # Step 1: Check if image already exists
11
+ f_print_substep "Checking for existing 9Router image..."
12
+ if sudo docker image inspect "$IMAGE_NAME" &>/dev/null; then
13
+ f_print_substep "Image $IMAGE_NAME already exists"
14
+ f_print_substep "To rebuild, run: sudo docker rmi $IMAGE_NAME"
15
+ else
16
+ # Step 2: Clone or update the 9Router repository
17
+ f_print_substep "Preparing 9Router source code..."
18
+ if [[ -d "$BUILD_DIR/.git" ]]; then
19
+ f_print_substep "Updating existing repository..."
20
+ sudo git -C "$BUILD_DIR" pull --ff-only 2>/dev/null || {
21
+ f_print_substep "Pull failed, re-cloning..."
22
+ sudo rm -rf "$BUILD_DIR"
23
+ sudo git clone --depth 1 https://github.com/decolua/9router.git "$BUILD_DIR"
24
+ }
25
+ else
26
+ f_print_substep "Cloning 9Router repository..."
27
+ sudo mkdir -p "$(dirname "$BUILD_DIR")"
28
+ sudo rm -rf "$BUILD_DIR"
29
+ sudo git clone --depth 1 https://github.com/decolua/9router.git "$BUILD_DIR"
30
+ fi
31
+
32
+ # Fix permissions so build context is readable
33
+ sudo chmod -R a+rX "$BUILD_DIR"
34
+
35
+ # Apply OAuth race condition fix
36
+ f_print_substep "Applying OAuth Race Condition patch..."
37
+ if [[ -f "$app_folder/files/oauth-fix.patch" ]]; then
38
+ sudo git -C "$BUILD_DIR" apply "$app_folder/files/oauth-fix.patch" 2>/dev/null || f_print_substep "Patch already applied or failed"
39
+ fi
40
+
41
+ # Step 3: Build the Docker image (using full paths, no cd needed)
42
+ f_print_substep "Building 9Router Docker image (this may take 3-5 minutes)..."
43
+ f_print_substep "Image name: $IMAGE_NAME"
44
+ if sudo docker build -t "$IMAGE_NAME" -f "$BUILD_DIR/Dockerfile" "$BUILD_DIR"; then
45
+ f_print_success "9Router image built successfully"
46
+ else
47
+ f_print_error "Failed to build 9Router image"
48
+ return 1
49
+ fi
50
+ fi
51
+
52
+ # Step 4: Inject secrets into compose file
53
+ f_print_substep "Configuring 9Router secrets..."
54
+
55
+ JWT_SECRET=$(sudo cat "$DOCKER_FOLDER/secrets/ninerouter_jwt_secret" 2>/dev/null)
56
+ if [[ -n "$JWT_SECRET" ]]; then
57
+ sudo sed -i "s|JWT-SECRET-PLACEHOLDER|$JWT_SECRET|" "$APP_COMPOSE_FILE"
58
+ f_print_substep "JWT secret injected into compose file"
59
+ else
60
+ f_print_error "JWT secret not found in secrets"
61
+ return 1
62
+ fi
63
+
64
+ INITIAL_PASSWORD=$(sudo cat "$DOCKER_FOLDER/secrets/ninerouter_password" 2>/dev/null)
65
+ if [[ -n "$INITIAL_PASSWORD" ]]; then
66
+ sudo sed -i "s|INITIAL-PASSWORD-PLACEHOLDER|$INITIAL_PASSWORD|" "$APP_COMPOSE_FILE"
67
+ export INITIAL_PASSWORD # Export so envsubst can substitute in post-install messages
68
+ f_print_substep "Initial password injected into compose file"
69
+ else
70
+ f_print_error "Initial password not found in secrets"
71
+ return 1
72
+ fi
73
+
74
+ # Generate unique API key secret and machine ID salt
75
+ API_KEY_SECRET=$(openssl rand -hex 16 2>/dev/null || head -c 32 /dev/urandom | xxd -p | head -c 32)
76
+ MACHINE_ID_SALT=$(openssl rand -hex 16 2>/dev/null || head -c 32 /dev/urandom | xxd -p | head -c 32)
77
+ sudo sed -i "s|API-KEY-SECRET-PLACEHOLDER|$API_KEY_SECRET|" "$APP_COMPOSE_FILE"
78
+ sudo sed -i "s|MACHINE-ID-SALT-PLACEHOLDER|$MACHINE_ID_SALT|" "$APP_COMPOSE_FILE"
79
+ f_print_substep "API key secret and machine ID salt generated"
80
+
81
+ # Step 5: Set ownership of ALL volume-mounted directories
82
+ f_print_substep "Setting directory ownership..."
83
+ sudo mkdir -p "$DOCKER_FOLDER/appdata/9router/data"
84
+ sudo mkdir -p "$DOCKER_FOLDER/appdata/9router/usage"
85
+ sudo chown -R "$PUID:$PGID" "$DOCKER_FOLDER/appdata/9router/data"
86
+ sudo chown -R "$PUID:$PGID" "$DOCKER_FOLDER/appdata/9router/usage"
87
+ f_print_success "9Router pre-install completed"