diff --git a/apps/dokploy/public/templates/activepieces.svg b/apps/dokploy/public/templates/activepieces.svg
deleted file mode 100644
index dcf0a52b..00000000
--- a/apps/dokploy/public/templates/activepieces.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/actualbudget.png b/apps/dokploy/public/templates/actualbudget.png
deleted file mode 100644
index fd539fe0..00000000
Binary files a/apps/dokploy/public/templates/actualbudget.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/alist.svg b/apps/dokploy/public/templates/alist.svg
deleted file mode 100644
index 37d5fdcd..00000000
--- a/apps/dokploy/public/templates/alist.svg
+++ /dev/null
@@ -1,10 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/answer.png b/apps/dokploy/public/templates/answer.png
deleted file mode 100644
index 3fca604d..00000000
Binary files a/apps/dokploy/public/templates/answer.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/appsmith.png b/apps/dokploy/public/templates/appsmith.png
deleted file mode 100644
index 02b0e15a..00000000
Binary files a/apps/dokploy/public/templates/appsmith.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/appwrite.svg b/apps/dokploy/public/templates/appwrite.svg
deleted file mode 100644
index 2034a812..00000000
--- a/apps/dokploy/public/templates/appwrite.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/aptabase.svg b/apps/dokploy/public/templates/aptabase.svg
deleted file mode 100644
index 3cb71ecf..00000000
--- a/apps/dokploy/public/templates/aptabase.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/baserow.webp b/apps/dokploy/public/templates/baserow.webp
deleted file mode 100644
index 3e825f7a..00000000
Binary files a/apps/dokploy/public/templates/baserow.webp and /dev/null differ
diff --git a/apps/dokploy/public/templates/blender.svg b/apps/dokploy/public/templates/blender.svg
deleted file mode 100644
index e59079f5..00000000
--- a/apps/dokploy/public/templates/blender.svg
+++ /dev/null
@@ -1,153 +0,0 @@
-
-
-
-
diff --git a/apps/dokploy/public/templates/browserless.svg b/apps/dokploy/public/templates/browserless.svg
deleted file mode 100644
index 35023f7d..00000000
--- a/apps/dokploy/public/templates/browserless.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/budibase.svg b/apps/dokploy/public/templates/budibase.svg
deleted file mode 100644
index 26d09cc9..00000000
--- a/apps/dokploy/public/templates/budibase.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/calcom.jpg b/apps/dokploy/public/templates/calcom.jpg
deleted file mode 100644
index 0f7da95d..00000000
Binary files a/apps/dokploy/public/templates/calcom.jpg and /dev/null differ
diff --git a/apps/dokploy/public/templates/chatwoot.svg b/apps/dokploy/public/templates/chatwoot.svg
deleted file mode 100644
index 56c9a7b8..00000000
--- a/apps/dokploy/public/templates/chatwoot.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/checkmate.png b/apps/dokploy/public/templates/checkmate.png
deleted file mode 100644
index 759269ba..00000000
Binary files a/apps/dokploy/public/templates/checkmate.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/cloudflared.svg b/apps/dokploy/public/templates/cloudflared.svg
deleted file mode 100644
index 5be105f5..00000000
--- a/apps/dokploy/public/templates/cloudflared.svg
+++ /dev/null
@@ -1,33 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/coder.svg b/apps/dokploy/public/templates/coder.svg
deleted file mode 100644
index 56d2f77c..00000000
--- a/apps/dokploy/public/templates/coder.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/conduit.svg b/apps/dokploy/public/templates/conduit.svg
deleted file mode 100644
index aa7a352c..00000000
--- a/apps/dokploy/public/templates/conduit.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/conduwuit.svg b/apps/dokploy/public/templates/conduwuit.svg
deleted file mode 100644
index 162a3d9e..00000000
--- a/apps/dokploy/public/templates/conduwuit.svg
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
diff --git a/apps/dokploy/public/templates/convex.svg b/apps/dokploy/public/templates/convex.svg
deleted file mode 100644
index 8622c4c0..00000000
--- a/apps/dokploy/public/templates/convex.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/couchdb.png b/apps/dokploy/public/templates/couchdb.png
deleted file mode 100644
index 7dc4cc4a..00000000
Binary files a/apps/dokploy/public/templates/couchdb.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/datalens.svg b/apps/dokploy/public/templates/datalens.svg
deleted file mode 100644
index 64954e31..00000000
--- a/apps/dokploy/public/templates/datalens.svg
+++ /dev/null
@@ -1,28 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/directus.jpg b/apps/dokploy/public/templates/directus.jpg
deleted file mode 100644
index a6f55062..00000000
Binary files a/apps/dokploy/public/templates/directus.jpg and /dev/null differ
diff --git a/apps/dokploy/public/templates/discord-tickets.png b/apps/dokploy/public/templates/discord-tickets.png
deleted file mode 100644
index 030c3a4c..00000000
Binary files a/apps/dokploy/public/templates/discord-tickets.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/discordtickets.png b/apps/dokploy/public/templates/discordtickets.png
deleted file mode 100644
index 030c3a4c..00000000
Binary files a/apps/dokploy/public/templates/discordtickets.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/discourse.svg b/apps/dokploy/public/templates/discourse.svg
deleted file mode 100644
index 4cbb8c87..00000000
--- a/apps/dokploy/public/templates/discourse.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/docmost.png b/apps/dokploy/public/templates/docmost.png
deleted file mode 100644
index 9bc8d210..00000000
Binary files a/apps/dokploy/public/templates/docmost.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/documenso.png b/apps/dokploy/public/templates/documenso.png
deleted file mode 100644
index cb4765fc..00000000
Binary files a/apps/dokploy/public/templates/documenso.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/doublezero.svg b/apps/dokploy/public/templates/doublezero.svg
deleted file mode 100644
index e28cbeb0..00000000
--- a/apps/dokploy/public/templates/doublezero.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/drawio.svg b/apps/dokploy/public/templates/drawio.svg
deleted file mode 100644
index 07909528..00000000
--- a/apps/dokploy/public/templates/drawio.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/elasticsearch.svg b/apps/dokploy/public/templates/elasticsearch.svg
deleted file mode 100644
index b95507cd..00000000
--- a/apps/dokploy/public/templates/elasticsearch.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/erpnext.svg b/apps/dokploy/public/templates/erpnext.svg
deleted file mode 100644
index d699ea2a..00000000
--- a/apps/dokploy/public/templates/erpnext.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/evolutionapi.png b/apps/dokploy/public/templates/evolutionapi.png
deleted file mode 100644
index bd9b3850..00000000
Binary files a/apps/dokploy/public/templates/evolutionapi.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/excalidraw.jpg b/apps/dokploy/public/templates/excalidraw.jpg
deleted file mode 100644
index 5c92a30c..00000000
Binary files a/apps/dokploy/public/templates/excalidraw.jpg and /dev/null differ
diff --git a/apps/dokploy/public/templates/filebrowser.svg b/apps/dokploy/public/templates/filebrowser.svg
deleted file mode 100644
index 5e78eccf..00000000
--- a/apps/dokploy/public/templates/filebrowser.svg
+++ /dev/null
@@ -1,147 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/formbricks.png b/apps/dokploy/public/templates/formbricks.png
deleted file mode 100644
index 2bf1ca1f..00000000
Binary files a/apps/dokploy/public/templates/formbricks.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/frappe-hr.svg b/apps/dokploy/public/templates/frappe-hr.svg
deleted file mode 100644
index 4cbf5164..00000000
--- a/apps/dokploy/public/templates/frappe-hr.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/ghost.jpeg b/apps/dokploy/public/templates/ghost.jpeg
deleted file mode 100644
index 9bfefe83..00000000
Binary files a/apps/dokploy/public/templates/ghost.jpeg and /dev/null differ
diff --git a/apps/dokploy/public/templates/gitea.png b/apps/dokploy/public/templates/gitea.png
deleted file mode 100644
index 5dacd773..00000000
Binary files a/apps/dokploy/public/templates/gitea.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/glance.png b/apps/dokploy/public/templates/glance.png
deleted file mode 100644
index 54fc4131..00000000
Binary files a/apps/dokploy/public/templates/glance.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/glitchtip.png b/apps/dokploy/public/templates/glitchtip.png
deleted file mode 100644
index 86631752..00000000
Binary files a/apps/dokploy/public/templates/glitchtip.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/glpi.webp b/apps/dokploy/public/templates/glpi.webp
deleted file mode 100644
index 8d69cd29..00000000
Binary files a/apps/dokploy/public/templates/glpi.webp and /dev/null differ
diff --git a/apps/dokploy/public/templates/gotenberg.png b/apps/dokploy/public/templates/gotenberg.png
deleted file mode 100644
index 5db2c6f8..00000000
Binary files a/apps/dokploy/public/templates/gotenberg.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/grafana.svg b/apps/dokploy/public/templates/grafana.svg
deleted file mode 100644
index 54be1e2f..00000000
--- a/apps/dokploy/public/templates/grafana.svg
+++ /dev/null
@@ -1,70 +0,0 @@
-
-
-
diff --git a/apps/dokploy/public/templates/heyform.svg b/apps/dokploy/public/templates/heyform.svg
deleted file mode 100644
index e1e34e61..00000000
--- a/apps/dokploy/public/templates/heyform.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/hi-events.svg b/apps/dokploy/public/templates/hi-events.svg
deleted file mode 100644
index 0e373509..00000000
--- a/apps/dokploy/public/templates/hi-events.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/hoarder.svg b/apps/dokploy/public/templates/hoarder.svg
deleted file mode 100644
index dc8f9f4b..00000000
--- a/apps/dokploy/public/templates/hoarder.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-
-
-
diff --git a/apps/dokploy/public/templates/homarr.png b/apps/dokploy/public/templates/homarr.png
deleted file mode 100644
index 25581ea5..00000000
Binary files a/apps/dokploy/public/templates/homarr.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/huly.svg b/apps/dokploy/public/templates/huly.svg
deleted file mode 100644
index 55a98587..00000000
--- a/apps/dokploy/public/templates/huly.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/immich.svg b/apps/dokploy/public/templates/immich.svg
deleted file mode 100644
index 497fbdcf..00000000
--- a/apps/dokploy/public/templates/immich.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/infisical.jpg b/apps/dokploy/public/templates/infisical.jpg
deleted file mode 100644
index 404f5811..00000000
Binary files a/apps/dokploy/public/templates/infisical.jpg and /dev/null differ
diff --git a/apps/dokploy/public/templates/influxdb.png b/apps/dokploy/public/templates/influxdb.png
deleted file mode 100644
index 8fc62a7f..00000000
Binary files a/apps/dokploy/public/templates/influxdb.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/invoiceshelf.png b/apps/dokploy/public/templates/invoiceshelf.png
deleted file mode 100644
index cee025e0..00000000
Binary files a/apps/dokploy/public/templates/invoiceshelf.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/it-tools.svg b/apps/dokploy/public/templates/it-tools.svg
deleted file mode 100644
index 1e3b614d..00000000
--- a/apps/dokploy/public/templates/it-tools.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/jellyfin.svg b/apps/dokploy/public/templates/jellyfin.svg
deleted file mode 100644
index 4227a706..00000000
--- a/apps/dokploy/public/templates/jellyfin.svg
+++ /dev/null
@@ -1,34 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/kimai.svg b/apps/dokploy/public/templates/kimai.svg
deleted file mode 100644
index 8b2a6c1e..00000000
--- a/apps/dokploy/public/templates/kimai.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/langflow.svg b/apps/dokploy/public/templates/langflow.svg
deleted file mode 100644
index 3665f824..00000000
--- a/apps/dokploy/public/templates/langflow.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/linkwarden.png b/apps/dokploy/public/templates/linkwarden.png
deleted file mode 100644
index 843f681e..00000000
Binary files a/apps/dokploy/public/templates/linkwarden.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/listmonk.png b/apps/dokploy/public/templates/listmonk.png
deleted file mode 100644
index cd6f5618..00000000
Binary files a/apps/dokploy/public/templates/listmonk.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/lobe-chat.png b/apps/dokploy/public/templates/lobe-chat.png
deleted file mode 100644
index cc29879c..00000000
Binary files a/apps/dokploy/public/templates/lobe-chat.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/logto.png b/apps/dokploy/public/templates/logto.png
deleted file mode 100644
index c7bfec1d..00000000
Binary files a/apps/dokploy/public/templates/logto.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/macos.png b/apps/dokploy/public/templates/macos.png
deleted file mode 100644
index 617122c8..00000000
Binary files a/apps/dokploy/public/templates/macos.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/mailpit.svg b/apps/dokploy/public/templates/mailpit.svg
deleted file mode 100644
index 58675a26..00000000
--- a/apps/dokploy/public/templates/mailpit.svg
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/maybe.svg b/apps/dokploy/public/templates/maybe.svg
deleted file mode 100644
index a4a87736..00000000
--- a/apps/dokploy/public/templates/maybe.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/meilisearch.png b/apps/dokploy/public/templates/meilisearch.png
deleted file mode 100644
index 7bbb458f..00000000
Binary files a/apps/dokploy/public/templates/meilisearch.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/metabase.png b/apps/dokploy/public/templates/metabase.png
deleted file mode 100644
index 189e5a33..00000000
Binary files a/apps/dokploy/public/templates/metabase.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/minio.png b/apps/dokploy/public/templates/minio.png
deleted file mode 100644
index 38f6ff9f..00000000
Binary files a/apps/dokploy/public/templates/minio.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/n8n.png b/apps/dokploy/public/templates/n8n.png
deleted file mode 100644
index 0e9a607e..00000000
Binary files a/apps/dokploy/public/templates/n8n.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/nextcloud-aio.svg b/apps/dokploy/public/templates/nextcloud-aio.svg
deleted file mode 100644
index 54e6056f..00000000
--- a/apps/dokploy/public/templates/nextcloud-aio.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/nocodb.png b/apps/dokploy/public/templates/nocodb.png
deleted file mode 100644
index 70af4926..00000000
Binary files a/apps/dokploy/public/templates/nocodb.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/odoo.png b/apps/dokploy/public/templates/odoo.png
deleted file mode 100644
index 5b598899..00000000
Binary files a/apps/dokploy/public/templates/odoo.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/onedev.png b/apps/dokploy/public/templates/onedev.png
deleted file mode 100644
index 6c39e6cf..00000000
Binary files a/apps/dokploy/public/templates/onedev.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/ontime.png b/apps/dokploy/public/templates/ontime.png
deleted file mode 100644
index e7aaee29..00000000
Binary files a/apps/dokploy/public/templates/ontime.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/open-webui.png b/apps/dokploy/public/templates/open-webui.png
deleted file mode 100644
index 2b207478..00000000
Binary files a/apps/dokploy/public/templates/open-webui.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/outline.png b/apps/dokploy/public/templates/outline.png
deleted file mode 100644
index b241f01d..00000000
Binary files a/apps/dokploy/public/templates/outline.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/penpot.svg b/apps/dokploy/public/templates/penpot.svg
deleted file mode 100644
index 05454092..00000000
--- a/apps/dokploy/public/templates/penpot.svg
+++ /dev/null
@@ -1,3 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/peppermint.svg b/apps/dokploy/public/templates/peppermint.svg
deleted file mode 100644
index b6fff994..00000000
--- a/apps/dokploy/public/templates/peppermint.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/photoprism.svg b/apps/dokploy/public/templates/photoprism.svg
deleted file mode 100644
index eefa5cde..00000000
--- a/apps/dokploy/public/templates/photoprism.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/phpmyadmin.png b/apps/dokploy/public/templates/phpmyadmin.png
deleted file mode 100644
index 56e18d85..00000000
Binary files a/apps/dokploy/public/templates/phpmyadmin.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/plausible.svg b/apps/dokploy/public/templates/plausible.svg
deleted file mode 100644
index 4e73fd63..00000000
--- a/apps/dokploy/public/templates/plausible.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/pocket-id.svg b/apps/dokploy/public/templates/pocket-id.svg
deleted file mode 100644
index 0ee89b14..00000000
--- a/apps/dokploy/public/templates/pocket-id.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/pocketbase.svg b/apps/dokploy/public/templates/pocketbase.svg
deleted file mode 100644
index 5b5de956..00000000
--- a/apps/dokploy/public/templates/pocketbase.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/portainer.svg b/apps/dokploy/public/templates/portainer.svg
deleted file mode 100644
index e8c91b36..00000000
--- a/apps/dokploy/public/templates/portainer.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/postiz.png b/apps/dokploy/public/templates/postiz.png
deleted file mode 100644
index 1d435abc..00000000
Binary files a/apps/dokploy/public/templates/postiz.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/registry.png b/apps/dokploy/public/templates/registry.png
deleted file mode 100644
index 39418022..00000000
Binary files a/apps/dokploy/public/templates/registry.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/rocketchat.png b/apps/dokploy/public/templates/rocketchat.png
deleted file mode 100644
index 5d42c70f..00000000
Binary files a/apps/dokploy/public/templates/rocketchat.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/roundcube.svg b/apps/dokploy/public/templates/roundcube.svg
deleted file mode 100644
index 04238a06..00000000
--- a/apps/dokploy/public/templates/roundcube.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/ryot.png b/apps/dokploy/public/templates/ryot.png
deleted file mode 100644
index 8f03b124..00000000
Binary files a/apps/dokploy/public/templates/ryot.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/shlink.svg b/apps/dokploy/public/templates/shlink.svg
deleted file mode 100644
index 6253cd36..00000000
--- a/apps/dokploy/public/templates/shlink.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/slash.png b/apps/dokploy/public/templates/slash.png
deleted file mode 100644
index c843b409..00000000
Binary files a/apps/dokploy/public/templates/slash.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/soketi.png b/apps/dokploy/public/templates/soketi.png
deleted file mode 100644
index aec5a79a..00000000
Binary files a/apps/dokploy/public/templates/soketi.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/spacedrive.png b/apps/dokploy/public/templates/spacedrive.png
deleted file mode 100644
index a10fffd5..00000000
Binary files a/apps/dokploy/public/templates/spacedrive.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/stirling.svg b/apps/dokploy/public/templates/stirling.svg
deleted file mode 100644
index 0db55164..00000000
--- a/apps/dokploy/public/templates/stirling.svg
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/supabase.svg b/apps/dokploy/public/templates/supabase.svg
deleted file mode 100644
index 2b69d42e..00000000
--- a/apps/dokploy/public/templates/supabase.svg
+++ /dev/null
@@ -1,15 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/superset.svg b/apps/dokploy/public/templates/superset.svg
deleted file mode 100644
index 522c3b28..00000000
--- a/apps/dokploy/public/templates/superset.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
-
diff --git a/apps/dokploy/public/templates/teable.png b/apps/dokploy/public/templates/teable.png
deleted file mode 100644
index f2b938d8..00000000
Binary files a/apps/dokploy/public/templates/teable.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/tolgee.svg b/apps/dokploy/public/templates/tolgee.svg
deleted file mode 100644
index 0f216e0c..00000000
--- a/apps/dokploy/public/templates/tolgee.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
diff --git a/apps/dokploy/public/templates/triggerdotdev.svg b/apps/dokploy/public/templates/triggerdotdev.svg
deleted file mode 100644
index 4e0957f4..00000000
--- a/apps/dokploy/public/templates/triggerdotdev.svg
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/trilium.png b/apps/dokploy/public/templates/trilium.png
deleted file mode 100644
index f6afe82f..00000000
Binary files a/apps/dokploy/public/templates/trilium.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/twenty.svg b/apps/dokploy/public/templates/twenty.svg
deleted file mode 100644
index bad18fab..00000000
--- a/apps/dokploy/public/templates/twenty.svg
+++ /dev/null
@@ -1,12 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/typebot.svg b/apps/dokploy/public/templates/typebot.svg
deleted file mode 100644
index 83d04de2..00000000
--- a/apps/dokploy/public/templates/typebot.svg
+++ /dev/null
@@ -1,13 +0,0 @@
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/umami.png b/apps/dokploy/public/templates/umami.png
deleted file mode 100644
index de2f7615..00000000
Binary files a/apps/dokploy/public/templates/umami.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/unifi.webp b/apps/dokploy/public/templates/unifi.webp
deleted file mode 100644
index ffe1f244..00000000
Binary files a/apps/dokploy/public/templates/unifi.webp and /dev/null differ
diff --git a/apps/dokploy/public/templates/unsend.png b/apps/dokploy/public/templates/unsend.png
deleted file mode 100644
index 0bbe5e0f..00000000
Binary files a/apps/dokploy/public/templates/unsend.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/uptime-kuma.png b/apps/dokploy/public/templates/uptime-kuma.png
deleted file mode 100644
index c5ea28c5..00000000
Binary files a/apps/dokploy/public/templates/uptime-kuma.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/vaultwarden.svg b/apps/dokploy/public/templates/vaultwarden.svg
deleted file mode 100644
index 71866afd..00000000
--- a/apps/dokploy/public/templates/vaultwarden.svg
+++ /dev/null
@@ -1,19 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/wikijs.svg b/apps/dokploy/public/templates/wikijs.svg
deleted file mode 100644
index 78073b23..00000000
--- a/apps/dokploy/public/templates/wikijs.svg
+++ /dev/null
@@ -1,119 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/apps/dokploy/public/templates/windmill.svg b/apps/dokploy/public/templates/windmill.svg
deleted file mode 100644
index 2b06716f..00000000
--- a/apps/dokploy/public/templates/windmill.svg
+++ /dev/null
@@ -1,29 +0,0 @@
-
-
diff --git a/apps/dokploy/public/templates/windows.png b/apps/dokploy/public/templates/windows.png
deleted file mode 100644
index 61ced455..00000000
Binary files a/apps/dokploy/public/templates/windows.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/wordpress.png b/apps/dokploy/public/templates/wordpress.png
deleted file mode 100644
index 693cb902..00000000
Binary files a/apps/dokploy/public/templates/wordpress.png and /dev/null differ
diff --git a/apps/dokploy/public/templates/yourls.svg b/apps/dokploy/public/templates/yourls.svg
deleted file mode 100644
index 2d1d7733..00000000
--- a/apps/dokploy/public/templates/yourls.svg
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/apps/dokploy/public/templates/zipline.png b/apps/dokploy/public/templates/zipline.png
deleted file mode 100644
index 2b8f6972..00000000
Binary files a/apps/dokploy/public/templates/zipline.png and /dev/null differ
diff --git a/apps/dokploy/server/api/routers/compose.ts b/apps/dokploy/server/api/routers/compose.ts
index 6b521762..57f04559 100644
--- a/apps/dokploy/server/api/routers/compose.ts
+++ b/apps/dokploy/server/api/routers/compose.ts
@@ -15,8 +15,8 @@ import {
type CompleteTemplate,
fetchTemplateFiles,
fetchTemplatesList,
-} from "@dokploy/server/templates/utils/github";
-import { processTemplate } from "@dokploy/server/templates/utils/processors";
+} from "@dokploy/server/templates/github";
+import { processTemplate } from "@dokploy/server/templates/processors";
import { TRPCError } from "@trpc/server";
import { eq } from "drizzle-orm";
import { dump, load } from "js-yaml";
diff --git a/apps/dokploy/templates/activepieces/docker-compose.yml b/apps/dokploy/templates/activepieces/docker-compose.yml
deleted file mode 100644
index a5511e7f..00000000
--- a/apps/dokploy/templates/activepieces/docker-compose.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-version: "3.8"
-
-services:
- activepieces:
- image: activepieces/activepieces:0.35.0
- restart: unless-stopped
-
- depends_on:
- postgres:
- condition: service_healthy
- redis:
- condition: service_healthy
- environment:
- AP_ENGINE_EXECUTABLE_PATH: dist/packages/engine/main.js
- AP_API_KEY: ${AP_API_KEY}
- AP_ENCRYPTION_KEY: ${AP_ENCRYPTION_KEY}
- AP_JWT_SECRET: ${AP_JWT_SECRET}
- AP_ENVIRONMENT: prod
- AP_FRONTEND_URL: https://${AP_HOST}
- AP_WEBHOOK_TIMEOUT_SECONDS: 30
- AP_TRIGGER_DEFAULT_POLL_INTERVAL: 5
- AP_POSTGRES_DATABASE: activepieces
- AP_POSTGRES_HOST: postgres
- AP_POSTGRES_PORT: 5432
- AP_POSTGRES_USERNAME: activepieces
- AP_POSTGRES_PASSWORD: ${AP_POSTGRES_PASSWORD}
- AP_EXECUTION_MODE: UNSANDBOXED
- AP_REDIS_HOST: redis
- AP_REDIS_PORT: 6379
- AP_SANDBOX_RUN_TIME_SECONDS: 600
- AP_TELEMETRY_ENABLED: "false"
- AP_TEMPLATES_SOURCE_URL: https://cloud.activepieces.com/api/v1/flow-templates
-
- postgres:
- image: postgres:14
- restart: unless-stopped
-
- environment:
- POSTGRES_DB: activepieces
- POSTGRES_PASSWORD: ${AP_POSTGRES_PASSWORD}
- POSTGRES_USER: activepieces
- volumes:
- - postgres_data:/var/lib/postgresql/data
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U activepieces -d activepieces"]
- interval: 30s
- timeout: 30s
- retries: 3
-
- redis:
- image: redis:7
- restart: unless-stopped
-
- volumes:
- - redis_data:/data
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 30s
- timeout: 30s
- retries: 3
-
-volumes:
- postgres_data:
- redis_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/activepieces/index.ts b/apps/dokploy/templates/activepieces/index.ts
deleted file mode 100644
index f1d97ccc..00000000
--- a/apps/dokploy/templates/activepieces/index.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const apiKey = Array.from({ length: 32 }, () =>
- Math.floor(Math.random() * 16).toString(16),
- ).join("");
- const encryptionKey = Array.from({ length: 32 }, () =>
- Math.floor(Math.random() * 16).toString(16),
- ).join("");
- const jwtSecret = Array.from({ length: 32 }, () =>
- Math.floor(Math.random() * 16).toString(16),
- ).join("");
- const postgresPassword = Array.from({ length: 32 }, () =>
- Math.floor(Math.random() * 16).toString(16),
- ).join("");
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "activepieces",
- },
- ];
-
- const envs = [
- `AP_HOST=${mainDomain}`,
- `AP_API_KEY=${apiKey}`,
- `AP_ENCRYPTION_KEY=${encryptionKey}`,
- `AP_JWT_SECRET=${jwtSecret}`,
- `AP_POSTGRES_PASSWORD=${postgresPassword}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/actualbudget/docker-compose.yml b/apps/dokploy/templates/actualbudget/docker-compose.yml
deleted file mode 100644
index 388a9f0b..00000000
--- a/apps/dokploy/templates/actualbudget/docker-compose.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-services:
- actualbudget:
- image: docker.io/actualbudget/actual-server:latest
- environment:
- # See all options at https://actualbudget.org/docs/config
- - ACTUAL_PORT=5006
- volumes:
- - actual-data:/data
- restart: unless-stopped
-
-volumes:
- actual-data:
diff --git a/apps/dokploy/templates/actualbudget/index.ts b/apps/dokploy/templates/actualbudget/index.ts
deleted file mode 100644
index 33b6fea1..00000000
--- a/apps/dokploy/templates/actualbudget/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 5006,
- serviceName: "actualbudget",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/alist/docker-compose.yml b/apps/dokploy/templates/alist/docker-compose.yml
deleted file mode 100644
index 9ff67c94..00000000
--- a/apps/dokploy/templates/alist/docker-compose.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-version: '3.3'
-services:
- alist:
- image: xhofe/alist:v3.41.0
- volumes:
- - alist-data:/opt/alist/data
- environment:
- - PUID=0
- - PGID=0
- - UMASK=022
- restart: unless-stopped
-
-volumes:
- alist-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/alist/index.ts b/apps/dokploy/templates/alist/index.ts
deleted file mode 100644
index 2a27f570..00000000
--- a/apps/dokploy/templates/alist/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 5244,
- serviceName: "alist",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/answer/docker-compose.yml b/apps/dokploy/templates/answer/docker-compose.yml
deleted file mode 100644
index 2b9fc344..00000000
--- a/apps/dokploy/templates/answer/docker-compose.yml
+++ /dev/null
@@ -1,30 +0,0 @@
-services:
- answer:
- image: apache/answer:1.4.1
- ports:
- - '80'
- restart: on-failure
- volumes:
- - answer-data:/data
- depends_on:
- db:
- condition: service_healthy
- db:
- image: postgres:16
- restart: always
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
- interval: 5s
- timeout: 5s
- retries: 5
-
- volumes:
- - db-data:/var/lib/postgresql/data
- environment:
- POSTGRES_DB: answer
- POSTGRES_USER: postgres
- POSTGRES_PASSWORD: postgres
-
-volumes:
- answer-data:
- db-data:
diff --git a/apps/dokploy/templates/answer/index.ts b/apps/dokploy/templates/answer/index.ts
deleted file mode 100644
index 36d48cb3..00000000
--- a/apps/dokploy/templates/answer/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateHash,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainServiceHash = generateHash(schema.projectName);
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 9080,
- serviceName: "answer",
- },
- ];
-
- const envs = [
- `ANSWER_HOST=http://${mainDomain}`,
- `SERVICE_HASH=${mainServiceHash}`,
- ];
-
- const mounts: Template["mounts"] = [];
-
- return {
- envs,
- mounts,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/appsmith/docker-compose.yml b/apps/dokploy/templates/appsmith/docker-compose.yml
deleted file mode 100644
index f520ee36..00000000
--- a/apps/dokploy/templates/appsmith/docker-compose.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: "3.8"
-services:
- appsmith:
- image: index.docker.io/appsmith/appsmith-ee:v1.29
- volumes:
- - ../files/stacks:/appsmith-stacks
diff --git a/apps/dokploy/templates/appsmith/index.ts b/apps/dokploy/templates/appsmith/index.ts
deleted file mode 100644
index 73279e91..00000000
--- a/apps/dokploy/templates/appsmith/index.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateHash,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const _mainServiceHash = generateHash(schema.projectName);
-
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 80,
- serviceName: "appsmith",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/appwrite/docker-compose.yml b/apps/dokploy/templates/appwrite/docker-compose.yml
deleted file mode 100644
index 163cb3d0..00000000
--- a/apps/dokploy/templates/appwrite/docker-compose.yml
+++ /dev/null
@@ -1,887 +0,0 @@
-version: "3.8"
-
-x-logging: &x-logging
- logging:
- driver: "json-file"
- options:
- max-file: "5"
- max-size: "10m"
-
-services:
- appwrite:
- image: appwrite/appwrite:1.6.0
- container_name: appwrite
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- labels:
- - traefik.enable=true
- - traefik.constraint-label-stack=appwrite
- volumes:
- - appwrite-uploads:/storage/uploads:rw
- - appwrite-cache:/storage/cache:rw
- - appwrite-config:/storage/config:rw
- - appwrite-certificates:/storage/certificates:rw
- - appwrite-functions:/storage/functions:rw
- depends_on:
- - mariadb
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_LOCALE
- - _APP_CONSOLE_WHITELIST_ROOT
- - _APP_CONSOLE_WHITELIST_EMAILS
- - _APP_CONSOLE_SESSION_ALERTS
- - _APP_CONSOLE_WHITELIST_IPS
- - _APP_CONSOLE_HOSTNAMES
- - _APP_SYSTEM_EMAIL_NAME
- - _APP_SYSTEM_EMAIL_ADDRESS
- - _APP_EMAIL_SECURITY
- - _APP_SYSTEM_RESPONSE_FORMAT
- - _APP_OPTIONS_ABUSE
- - _APP_OPTIONS_ROUTER_PROTECTION
- - _APP_OPTIONS_FORCE_HTTPS
- - _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS
- - _APP_OPENSSL_KEY_V1
- - _APP_DOMAIN
- - _APP_DOMAIN_TARGET
- - _APP_DOMAIN_FUNCTIONS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_SMTP_HOST
- - _APP_SMTP_PORT
- - _APP_SMTP_SECURE
- - _APP_SMTP_USERNAME
- - _APP_SMTP_PASSWORD
- - _APP_USAGE_STATS
- - _APP_STORAGE_LIMIT
- - _APP_STORAGE_PREVIEW_LIMIT
- - _APP_STORAGE_ANTIVIRUS
- - _APP_STORAGE_ANTIVIRUS_HOST
- - _APP_STORAGE_ANTIVIRUS_PORT
- - _APP_STORAGE_DEVICE
- - _APP_STORAGE_S3_ACCESS_KEY
- - _APP_STORAGE_S3_SECRET
- - _APP_STORAGE_S3_REGION
- - _APP_STORAGE_S3_BUCKET
- - _APP_STORAGE_DO_SPACES_ACCESS_KEY
- - _APP_STORAGE_DO_SPACES_SECRET
- - _APP_STORAGE_DO_SPACES_REGION
- - _APP_STORAGE_DO_SPACES_BUCKET
- - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - _APP_STORAGE_BACKBLAZE_SECRET
- - _APP_STORAGE_BACKBLAZE_REGION
- - _APP_STORAGE_BACKBLAZE_BUCKET
- - _APP_STORAGE_LINODE_ACCESS_KEY
- - _APP_STORAGE_LINODE_SECRET
- - _APP_STORAGE_LINODE_REGION
- - _APP_STORAGE_LINODE_BUCKET
- - _APP_STORAGE_WASABI_ACCESS_KEY
- - _APP_STORAGE_WASABI_SECRET
- - _APP_STORAGE_WASABI_REGION
- - _APP_STORAGE_WASABI_BUCKET
- - _APP_FUNCTIONS_SIZE_LIMIT
- - _APP_FUNCTIONS_TIMEOUT
- - _APP_FUNCTIONS_BUILD_TIMEOUT
- - _APP_FUNCTIONS_CPUS
- - _APP_FUNCTIONS_MEMORY
- - _APP_FUNCTIONS_RUNTIMES
- - _APP_EXECUTOR_SECRET
- - _APP_EXECUTOR_HOST
- - _APP_LOGGING_CONFIG
- - _APP_MAINTENANCE_INTERVAL
- - _APP_MAINTENANCE_DELAY
- - _APP_MAINTENANCE_RETENTION_EXECUTION
- - _APP_MAINTENANCE_RETENTION_CACHE
- - _APP_MAINTENANCE_RETENTION_ABUSE
- - _APP_MAINTENANCE_RETENTION_AUDIT
- - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY
- - _APP_MAINTENANCE_RETENTION_SCHEDULES
- - _APP_SMS_PROVIDER
- - _APP_SMS_FROM
- - _APP_GRAPHQL_MAX_BATCH_SIZE
- - _APP_GRAPHQL_MAX_COMPLEXITY
- - _APP_GRAPHQL_MAX_DEPTH
- - _APP_VCS_GITHUB_APP_NAME
- - _APP_VCS_GITHUB_PRIVATE_KEY
- - _APP_VCS_GITHUB_APP_ID
- - _APP_VCS_GITHUB_WEBHOOK_SECRET
- - _APP_VCS_GITHUB_CLIENT_SECRET
- - _APP_VCS_GITHUB_CLIENT_ID
- - _APP_MIGRATIONS_FIREBASE_CLIENT_ID
- - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
- - _APP_ASSISTANT_OPENAI_API_KEY
-
- appwrite-console:
- image: appwrite/console:5.0.12
- container_name: appwrite-console
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- labels:
- - "traefik.enable=true"
- - "traefik.constraint-label-stack=appwrite"
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_LOCALE
- - _APP_CONSOLE_WHITELIST_ROOT
- - _APP_CONSOLE_WHITELIST_EMAILS
- - _APP_CONSOLE_SESSION_ALERTS
- - _APP_CONSOLE_WHITELIST_IPS
- - _APP_CONSOLE_HOSTNAMES
- - _APP_SYSTEM_EMAIL_NAME
- - _APP_SYSTEM_EMAIL_ADDRESS
- - _APP_EMAIL_SECURITY
- - _APP_SYSTEM_RESPONSE_FORMAT
- - _APP_OPTIONS_ABUSE
- - _APP_OPTIONS_ROUTER_PROTECTION
- - _APP_OPTIONS_FORCE_HTTPS
- - _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS
- - _APP_OPENSSL_KEY_V1
- - _APP_DOMAIN
- - _APP_DOMAIN_TARGET
- - _APP_DOMAIN_FUNCTIONS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_SMTP_HOST
- - _APP_SMTP_PORT
- - _APP_SMTP_SECURE
- - _APP_SMTP_USERNAME
- - _APP_SMTP_PASSWORD
- - _APP_USAGE_STATS
- - _APP_STORAGE_LIMIT
- - _APP_STORAGE_PREVIEW_LIMIT
- - _APP_STORAGE_ANTIVIRUS
- - _APP_STORAGE_ANTIVIRUS_HOST
- - _APP_STORAGE_ANTIVIRUS_PORT
- - _APP_STORAGE_DEVICE
- - _APP_STORAGE_S3_ACCESS_KEY
- - _APP_STORAGE_S3_SECRET
- - _APP_STORAGE_S3_REGION
- - _APP_STORAGE_S3_BUCKET
- - _APP_STORAGE_DO_SPACES_ACCESS_KEY
- - _APP_STORAGE_DO_SPACES_SECRET
- - _APP_STORAGE_DO_SPACES_REGION
- - _APP_STORAGE_DO_SPACES_BUCKET
- - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - _APP_STORAGE_BACKBLAZE_SECRET
- - _APP_STORAGE_BACKBLAZE_REGION
- - _APP_STORAGE_BACKBLAZE_BUCKET
- - _APP_STORAGE_LINODE_ACCESS_KEY
- - _APP_STORAGE_LINODE_SECRET
- - _APP_STORAGE_LINODE_REGION
- - _APP_STORAGE_LINODE_BUCKET
- - _APP_STORAGE_WASABI_ACCESS_KEY
- - _APP_STORAGE_WASABI_SECRET
- - _APP_STORAGE_WASABI_REGION
- - _APP_STORAGE_WASABI_BUCKET
-
- appwrite-realtime:
- image: appwrite/appwrite:1.6.0
- entrypoint: realtime
- container_name: appwrite-realtime
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - mariadb
- - redis
- labels:
- - "traefik.enable=true"
- - "traefik.constraint-label-stack=appwrite"
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPTIONS_ABUSE
- - _APP_OPTIONS_ROUTER_PROTECTION
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_USAGE_STATS
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-audits:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-audits
- <<: *x-logging
- container_name: appwrite-worker-audits
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-webhooks:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-webhooks
- <<: *x-logging
- container_name: appwrite-worker-webhooks
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_EMAIL_SECURITY
- - _APP_SYSTEM_SECURITY_EMAIL_ADDRESS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-deletes:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-deletes
- <<: *x-logging
- container_name: appwrite-worker-deletes
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- volumes:
- - appwrite-uploads:/storage/uploads:rw
- - appwrite-cache:/storage/cache:rw
- - appwrite-functions:/storage/functions:rw
- - appwrite-builds:/storage/builds:rw
- - appwrite-certificates:/storage/certificates:rw
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_STORAGE_DEVICE
- - _APP_STORAGE_S3_ACCESS_KEY
- - _APP_STORAGE_S3_SECRET
- - _APP_STORAGE_S3_REGION
- - _APP_STORAGE_S3_BUCKET
- - _APP_STORAGE_DO_SPACES_ACCESS_KEY
- - _APP_STORAGE_DO_SPACES_SECRET
- - _APP_STORAGE_DO_SPACES_REGION
- - _APP_STORAGE_DO_SPACES_BUCKET
- - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - _APP_STORAGE_BACKBLAZE_SECRET
- - _APP_STORAGE_BACKBLAZE_REGION
- - _APP_STORAGE_BACKBLAZE_BUCKET
- - _APP_STORAGE_LINODE_ACCESS_KEY
- - _APP_STORAGE_LINODE_SECRET
- - _APP_STORAGE_LINODE_REGION
- - _APP_STORAGE_LINODE_BUCKET
- - _APP_STORAGE_WASABI_ACCESS_KEY
- - _APP_STORAGE_WASABI_SECRET
- - _APP_STORAGE_WASABI_REGION
- - _APP_STORAGE_WASABI_BUCKET
- - _APP_LOGGING_CONFIG
- - _APP_EXECUTOR_SECRET
- - _APP_EXECUTOR_HOST
- - _APP_MAINTENANCE_RETENTION_ABUSE
- - _APP_MAINTENANCE_RETENTION_AUDIT
- - _APP_MAINTENANCE_RETENTION_EXECUTION
-
- appwrite-worker-databases:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-databases
- <<: *x-logging
- container_name: appwrite-worker-databases
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-builds:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-builds
- <<: *x-logging
- container_name: appwrite-worker-builds
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- volumes:
- - appwrite-functions:/storage/functions:rw
- - appwrite-builds:/storage/builds:rw
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_EXECUTOR_SECRET
- - _APP_EXECUTOR_HOST
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
- - _APP_VCS_GITHUB_APP_NAME
- - _APP_VCS_GITHUB_PRIVATE_KEY
- - _APP_VCS_GITHUB_APP_ID
- - _APP_FUNCTIONS_TIMEOUT
- - _APP_FUNCTIONS_BUILD_TIMEOUT
- - _APP_FUNCTIONS_CPUS
- - _APP_FUNCTIONS_MEMORY
- - _APP_FUNCTIONS_SIZE_LIMIT
- - _APP_OPTIONS_FORCE_HTTPS
- - _APP_OPTIONS_FUNCTIONS_FORCE_HTTPS
- - _APP_DOMAIN
- - _APP_STORAGE_DEVICE
- - _APP_STORAGE_S3_ACCESS_KEY
- - _APP_STORAGE_S3_SECRET
- - _APP_STORAGE_S3_REGION
- - _APP_STORAGE_S3_BUCKET
- - _APP_STORAGE_DO_SPACES_ACCESS_KEY
- - _APP_STORAGE_DO_SPACES_SECRET
- - _APP_STORAGE_DO_SPACES_REGION
- - _APP_STORAGE_DO_SPACES_BUCKET
- - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - _APP_STORAGE_BACKBLAZE_SECRET
- - _APP_STORAGE_BACKBLAZE_REGION
- - _APP_STORAGE_BACKBLAZE_BUCKET
- - _APP_STORAGE_LINODE_ACCESS_KEY
- - _APP_STORAGE_LINODE_SECRET
- - _APP_STORAGE_LINODE_REGION
- - _APP_STORAGE_LINODE_BUCKET
- - _APP_STORAGE_WASABI_ACCESS_KEY
- - _APP_STORAGE_WASABI_SECRET
- - _APP_STORAGE_WASABI_REGION
- - _APP_STORAGE_WASABI_BUCKET
-
- appwrite-worker-certificates:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-certificates
- <<: *x-logging
- container_name: appwrite-worker-certificates
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- volumes:
- - appwrite-config:/storage/config:rw
- - appwrite-certificates:/storage/certificates:rw
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_DOMAIN
- - _APP_DOMAIN_TARGET
- - _APP_DOMAIN_FUNCTIONS
- - _APP_EMAIL_CERTIFICATES
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-functions:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-functions
- <<: *x-logging
- container_name: appwrite-worker-functions
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- - openruntimes-executor
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_DOMAIN
- - _APP_OPTIONS_FORCE_HTTPS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_FUNCTIONS_TIMEOUT
- - _APP_FUNCTIONS_BUILD_TIMEOUT
- - _APP_FUNCTIONS_CPUS
- - _APP_FUNCTIONS_MEMORY
- - _APP_EXECUTOR_SECRET
- - _APP_EXECUTOR_HOST
- - _APP_USAGE_STATS
- - _APP_DOCKER_HUB_USERNAME
- - _APP_DOCKER_HUB_PASSWORD
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-mails:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-mails
- <<: *x-logging
- container_name: appwrite-worker-mails
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_SYSTEM_EMAIL_NAME
- - _APP_SYSTEM_EMAIL_ADDRESS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_SMTP_HOST
- - _APP_SMTP_PORT
- - _APP_SMTP_SECURE
- - _APP_SMTP_USERNAME
- - _APP_SMTP_PASSWORD
- - _APP_LOGGING_CONFIG
-
- appwrite-worker-messaging:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-messaging
- container_name: appwrite-worker-messaging
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- volumes:
- - appwrite-uploads:/storage/uploads:rw
- depends_on:
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
- - _APP_SMS_FROM
- - _APP_SMS_PROVIDER
- - _APP_STORAGE_DEVICE
- - _APP_STORAGE_S3_ACCESS_KEY
- - _APP_STORAGE_S3_SECRET
- - _APP_STORAGE_S3_REGION
- - _APP_STORAGE_S3_BUCKET
- - _APP_STORAGE_DO_SPACES_ACCESS_KEY
- - _APP_STORAGE_DO_SPACES_SECRET
- - _APP_STORAGE_DO_SPACES_REGION
- - _APP_STORAGE_DO_SPACES_BUCKET
- - _APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - _APP_STORAGE_BACKBLAZE_SECRET
- - _APP_STORAGE_BACKBLAZE_REGION
- - _APP_STORAGE_BACKBLAZE_BUCKET
- - _APP_STORAGE_LINODE_ACCESS_KEY
- - _APP_STORAGE_LINODE_SECRET
- - _APP_STORAGE_LINODE_REGION
- - _APP_STORAGE_LINODE_BUCKET
- - _APP_STORAGE_WASABI_ACCESS_KEY
- - _APP_STORAGE_WASABI_SECRET
- - _APP_STORAGE_WASABI_REGION
- - _APP_STORAGE_WASABI_BUCKET
-
- appwrite-worker-migrations:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-migrations
- <<: *x-logging
- container_name: appwrite-worker-migrations
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_DOMAIN
- - _APP_DOMAIN_TARGET
- - _APP_EMAIL_SECURITY
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_LOGGING_CONFIG
- - _APP_MIGRATIONS_FIREBASE_CLIENT_ID
- - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET
-
- appwrite-task-maintenance:
- image: appwrite/appwrite:1.6.0
- entrypoint: maintenance
- <<: *x-logging
- container_name: appwrite-task-maintenance
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_DOMAIN
- - _APP_DOMAIN_TARGET
- - _APP_DOMAIN_FUNCTIONS
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_MAINTENANCE_INTERVAL
- - _APP_MAINTENANCE_RETENTION_EXECUTION
- - _APP_MAINTENANCE_RETENTION_CACHE
- - _APP_MAINTENANCE_RETENTION_ABUSE
- - _APP_MAINTENANCE_RETENTION_AUDIT
- - _APP_MAINTENANCE_RETENTION_USAGE_HOURLY
- - _APP_MAINTENANCE_RETENTION_SCHEDULES
-
- appwrite-worker-usage:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-usage
- container_name: appwrite-worker-usage
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_USAGE_STATS
- - _APP_LOGGING_CONFIG
- - _APP_USAGE_AGGREGATION_INTERVAL
-
- appwrite-worker-usage-dump:
- image: appwrite/appwrite:1.6.0
- entrypoint: worker-usage-dump
- container_name: appwrite-worker-usage-dump
- <<: *x-logging
- networks:
- - dokploy-network
- depends_on:
- - redis
- - mariadb
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_USAGE_STATS
- - _APP_LOGGING_CONFIG
- - _APP_USAGE_AGGREGATION_INTERVAL
-
- appwrite-task-scheduler-functions:
- image: appwrite/appwrite:1.6.0
- entrypoint: schedule-functions
- container_name: appwrite-task-scheduler-functions
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - mariadb
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
-
- appwrite-task-scheduler-executions:
- image: appwrite/appwrite:1.6.0
- entrypoint: schedule-executions
- container_name: appwrite-task-scheduler-executions
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - mariadb
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
-
- appwrite-task-scheduler-messages:
- image: appwrite/appwrite:1.6.0
- entrypoint: schedule-messages
- container_name: appwrite-task-scheduler-messages
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- depends_on:
- - mariadb
- - redis
- environment:
- - _APP_ENV
- - _APP_WORKER_PER_CORE
- - _APP_OPENSSL_KEY_V1
- - _APP_REDIS_HOST
- - _APP_REDIS_PORT
- - _APP_REDIS_USER
- - _APP_REDIS_PASS
- - _APP_DB_HOST
- - _APP_DB_PORT
- - _APP_DB_SCHEMA
- - _APP_DB_USER
- - _APP_DB_PASS
-
- appwrite-assistant:
- image: appwrite/assistant:0.4.0
- container_name: appwrite-assistant
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- environment:
- - _APP_ASSISTANT_OPENAI_API_KEY
-
- openruntimes-executor:
- container_name: openruntimes-executor
- hostname: exc1
- <<: *x-logging
- restart: unless-stopped
- stop_signal: SIGINT
- image: openruntimes/executor:0.6.11
- networks:
- - dokploy-network
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - appwrite-builds:/storage/builds:rw
- - appwrite-functions:/storage/functions:rw
- - /tmp:/tmp:rw
- environment:
- - OPR_EXECUTOR_INACTIVE_TRESHOLD=$_APP_FUNCTIONS_INACTIVE_THRESHOLD
- - OPR_EXECUTOR_MAINTENANCE_INTERVAL=$_APP_FUNCTIONS_MAINTENANCE_INTERVAL
- - OPR_EXECUTOR_NETWORK=$_APP_FUNCTIONS_RUNTIMES_NETWORK
- - OPR_EXECUTOR_DOCKER_HUB_USERNAME=$_APP_DOCKER_HUB_USERNAME
- - OPR_EXECUTOR_DOCKER_HUB_PASSWORD=$_APP_DOCKER_HUB_PASSWORD
- - OPR_EXECUTOR_ENV=$_APP_ENV
- - OPR_EXECUTOR_RUNTIMES=$_APP_FUNCTIONS_RUNTIMES
- - OPR_EXECUTOR_SECRET=$_APP_EXECUTOR_SECRET
- - OPR_EXECUTOR_LOGGING_CONFIG=$_APP_LOGGING_CONFIG
- - OPR_EXECUTOR_STORAGE_DEVICE=$_APP_STORAGE_DEVICE
- - OPR_EXECUTOR_STORAGE_S3_ACCESS_KEY=$_APP_STORAGE_S3_ACCESS_KEY
- - OPR_EXECUTOR_STORAGE_S3_SECRET=$_APP_STORAGE_S3_SECRET
- - OPR_EXECUTOR_STORAGE_S3_REGION=$_APP_STORAGE_S3_REGION
- - OPR_EXECUTOR_STORAGE_S3_BUCKET=$_APP_STORAGE_S3_BUCKET
- - OPR_EXECUTOR_STORAGE_DO_SPACES_ACCESS_KEY=$_APP_STORAGE_DO_SPACES_ACCESS_KEY
- - OPR_EXECUTOR_STORAGE_DO_SPACES_SECRET=$_APP_STORAGE_DO_SPACES_SECRET
- - OPR_EXECUTOR_STORAGE_DO_SPACES_REGION=$_APP_STORAGE_DO_SPACES_REGION
- - OPR_EXECUTOR_STORAGE_DO_SPACES_BUCKET=$_APP_STORAGE_DO_SPACES_BUCKET
- - OPR_EXECUTOR_STORAGE_BACKBLAZE_ACCESS_KEY=$_APP_STORAGE_BACKBLAZE_ACCESS_KEY
- - OPR_EXECUTOR_STORAGE_BACKBLAZE_SECRET=$_APP_STORAGE_BACKBLAZE_SECRET
- - OPR_EXECUTOR_STORAGE_BACKBLAZE_REGION=$_APP_STORAGE_BACKBLAZE_REGION
- - OPR_EXECUTOR_STORAGE_BACKBLAZE_BUCKET=$_APP_STORAGE_BACKBLAZE_BUCKET
- - OPR_EXECUTOR_STORAGE_LINODE_ACCESS_KEY=$_APP_STORAGE_LINODE_ACCESS_KEY
- - OPR_EXECUTOR_STORAGE_LINODE_SECRET=$_APP_STORAGE_LINODE_SECRET
- - OPR_EXECUTOR_STORAGE_LINODE_REGION=$_APP_STORAGE_LINODE_REGION
- - OPR_EXECUTOR_STORAGE_LINODE_BUCKET=$_APP_STORAGE_LINODE_BUCKET
- - OPR_EXECUTOR_STORAGE_WASABI_ACCESS_KEY=$_APP_STORAGE_WASABI_ACCESS_KEY
- - OPR_EXECUTOR_STORAGE_WASABI_SECRET=$_APP_STORAGE_WASABI_SECRET
- - OPR_EXECUTOR_STORAGE_WASABI_REGION=$_APP_STORAGE_WASABI_REGION
- - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET
-
- mariadb:
- image: mariadb:10.11
- container_name: appwrite-mariadb
- <<: *x-logging
- restart: unless-stopped
- networks:
- - dokploy-network
- volumes:
- - appwrite-mariadb:/var/lib/mysql:rw
- environment:
- - MYSQL_ROOT_PASSWORD=${_APP_DB_ROOT_PASS}
- - MYSQL_DATABASE=${_APP_DB_SCHEMA}
- - MYSQL_USER=${_APP_DB_USER}
- - MYSQL_PASSWORD=${_APP_DB_PASS}
- - MARIADB_AUTO_UPGRADE=1
- command: "mysqld --innodb-flush-method=fsync"
-
- redis:
- image: redis:7.2.4-alpine
- container_name: appwrite-redis
- <<: *x-logging
- restart: unless-stopped
- command: >
- redis-server
- --maxmemory 512mb
- --maxmemory-policy allkeys-lru
- --maxmemory-samples 5
- networks:
- - dokploy-network
- volumes:
- - appwrite-redis:/data:rw
-
-# Uncomment and configure if ClamAV is needed
-# clamav:
-# image: appwrite/clamav:1.2.0
-# container_name: appwrite-clamav
-# restart: unless-stopped
-# networks:
-# - dokploy-network
-# volumes:
-# - appwrite-uploads:/storage/uploads
-
-volumes:
- appwrite-mariadb:
- appwrite-redis:
- appwrite-cache:
- appwrite-uploads:
- appwrite-certificates:
- appwrite-functions:
- appwrite-builds:
- appwrite-config:
-
-networks:
- dokploy-network:
- external: true
diff --git a/apps/dokploy/templates/appwrite/index.ts b/apps/dokploy/templates/appwrite/index.ts
deleted file mode 100644
index 4e671324..00000000
--- a/apps/dokploy/templates/appwrite/index.ts
+++ /dev/null
@@ -1,153 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- { host: mainDomain, port: 80, serviceName: "appwrite", path: "/" },
- {
- host: mainDomain,
- port: 80,
- serviceName: "appwrite-console",
- path: "/console",
- },
- {
- host: mainDomain,
- port: 80,
- serviceName: "appwrite-realtime",
- path: "/v1/realtime",
- },
- ];
-
- const envs = [
- "_APP_ENV=production",
- "_APP_LOCALE=en",
- "_APP_OPTIONS_ABUSE=enabled",
- "_APP_OPTIONS_FORCE_HTTPS=disabled",
- "_APP_OPTIONS_FUNCTIONS_FORCE_HTTPS=disabled",
- "_APP_OPTIONS_ROUTER_PROTECTION=disabled",
- "_APP_OPENSSL_KEY_V1=your-secret-key",
- `_APP_DOMAIN=${mainDomain}`,
- `_APP_DOMAIN_FUNCTIONS=${mainDomain}`,
- `_APP_DOMAIN_TARGET=${mainDomain}`,
- "_APP_CONSOLE_WHITELIST_ROOT=enabled",
- "_APP_CONSOLE_WHITELIST_EMAILS=",
- "_APP_CONSOLE_WHITELIST_IPS=",
- "_APP_CONSOLE_HOSTNAMES=",
- "_APP_SYSTEM_EMAIL_NAME=Appwrite",
- "_APP_SYSTEM_EMAIL_ADDRESS=noreply@appwrite.io",
- "_APP_SYSTEM_TEAM_EMAIL=team@appwrite.io",
- "_APP_SYSTEM_RESPONSE_FORMAT=",
- "_APP_SYSTEM_SECURITY_EMAIL_ADDRESS=certs@appwrite.io",
- "_APP_EMAIL_SECURITY=",
- "_APP_EMAIL_CERTIFICATES=",
- "_APP_USAGE_STATS=enabled",
- "_APP_LOGGING_PROVIDER=",
- "_APP_LOGGING_CONFIG=",
- "_APP_USAGE_AGGREGATION_INTERVAL=30",
- "_APP_USAGE_TIMESERIES_INTERVAL=30",
- "_APP_USAGE_DATABASE_INTERVAL=900",
- "_APP_WORKER_PER_CORE=6",
- "_APP_CONSOLE_SESSION_ALERTS=disabled",
- "_APP_REDIS_HOST=redis",
- "_APP_REDIS_PORT=6379",
- "_APP_REDIS_USER=",
- "_APP_REDIS_PASS=",
- "_APP_DB_HOST=mariadb",
- "_APP_DB_PORT=3306",
- "_APP_DB_SCHEMA=appwrite",
- "_APP_DB_USER=user",
- "_APP_DB_PASS=password",
- "_APP_DB_ROOT_PASS=rootsecretpassword",
- "_APP_INFLUXDB_HOST=influxdb",
- "_APP_INFLUXDB_PORT=8086",
- "_APP_STATSD_HOST=telegraf",
- "_APP_STATSD_PORT=8125",
- "_APP_SMTP_HOST=",
- "_APP_SMTP_PORT=",
- "_APP_SMTP_SECURE=",
- "_APP_SMTP_USERNAME=",
- "_APP_SMTP_PASSWORD=",
- "_APP_SMS_PROVIDER=",
- "_APP_SMS_FROM=",
- "_APP_STORAGE_LIMIT=30000000",
- "_APP_STORAGE_PREVIEW_LIMIT=20000000",
- "_APP_STORAGE_ANTIVIRUS=disabled",
- "_APP_STORAGE_ANTIVIRUS_HOST=clamav",
- "_APP_STORAGE_ANTIVIRUS_PORT=3310",
- "_APP_STORAGE_DEVICE=local",
- "_APP_STORAGE_S3_ACCESS_KEY=",
- "_APP_STORAGE_S3_SECRET=",
- "_APP_STORAGE_S3_REGION=us-east-1",
- "_APP_STORAGE_S3_BUCKET=",
- "_APP_STORAGE_DO_SPACES_ACCESS_KEY=",
- "_APP_STORAGE_DO_SPACES_SECRET=",
- "_APP_STORAGE_DO_SPACES_REGION=us-east-1",
- "_APP_STORAGE_DO_SPACES_BUCKET=",
- "_APP_STORAGE_BACKBLAZE_ACCESS_KEY=",
- "_APP_STORAGE_BACKBLAZE_SECRET=",
- "_APP_STORAGE_BACKBLAZE_REGION=us-west-004",
- "_APP_STORAGE_BACKBLAZE_BUCKET=",
- "_APP_STORAGE_LINODE_ACCESS_KEY=",
- "_APP_STORAGE_LINODE_SECRET=",
- "_APP_STORAGE_LINODE_REGION=eu-central-1",
- "_APP_STORAGE_LINODE_BUCKET=",
- "_APP_STORAGE_WASABI_ACCESS_KEY=",
- "_APP_STORAGE_WASABI_SECRET=",
- "_APP_STORAGE_WASABI_REGION=eu-central-1",
- "_APP_STORAGE_WASABI_BUCKET=",
- "_APP_FUNCTIONS_SIZE_LIMIT=30000000",
- "_APP_FUNCTIONS_BUILD_SIZE_LIMIT=2000000000",
- "_APP_FUNCTIONS_TIMEOUT=900",
- "_APP_FUNCTIONS_BUILD_TIMEOUT=900",
- "_APP_FUNCTIONS_CONTAINERS=10",
- "_APP_FUNCTIONS_CPUS=0",
- "_APP_FUNCTIONS_MEMORY=0",
- "_APP_FUNCTIONS_MEMORY_SWAP=0",
- "_APP_FUNCTIONS_RUNTIMES=node-16.0,php-8.0,python-3.9,ruby-3.0",
- "_APP_EXECUTOR_SECRET=your-secret-key",
- "_APP_EXECUTOR_HOST=http://exc1/v1",
- "_APP_EXECUTOR_RUNTIME_NETWORK=appwrite_runtimes",
- "_APP_FUNCTIONS_ENVS=node-16.0,php-7.4,python-3.9,ruby-3.0",
- "_APP_FUNCTIONS_INACTIVE_THRESHOLD=60",
- "DOCKERHUB_PULL_USERNAME=",
- "DOCKERHUB_PULL_PASSWORD=",
- "DOCKERHUB_PULL_EMAIL=",
- "OPEN_RUNTIMES_NETWORK=appwrite_runtimes",
- "_APP_FUNCTIONS_RUNTIMES_NETWORK=runtimes",
- "_APP_DOCKER_HUB_USERNAME=",
- "_APP_DOCKER_HUB_PASSWORD=",
- "_APP_FUNCTIONS_MAINTENANCE_INTERVAL=3600",
- "_APP_VCS_GITHUB_APP_NAME=",
- "_APP_VCS_GITHUB_PRIVATE_KEY=",
- "_APP_VCS_GITHUB_APP_ID=",
- "_APP_VCS_GITHUB_CLIENT_ID=",
- "_APP_VCS_GITHUB_CLIENT_SECRET=",
- "_APP_VCS_GITHUB_WEBHOOK_SECRET=",
- "_APP_MAINTENANCE_INTERVAL=86400",
- "_APP_MAINTENANCE_DELAY=0",
- "_APP_MAINTENANCE_RETENTION_CACHE=2592000",
- "_APP_MAINTENANCE_RETENTION_EXECUTION=1209600",
- "_APP_MAINTENANCE_RETENTION_AUDIT=1209600",
- "_APP_MAINTENANCE_RETENTION_ABUSE=86400",
- "_APP_MAINTENANCE_RETENTION_USAGE_HOURLY=8640000",
- "_APP_MAINTENANCE_RETENTION_SCHEDULES=86400",
- "_APP_GRAPHQL_MAX_BATCH_SIZE=10",
- "_APP_GRAPHQL_MAX_COMPLEXITY=250",
- "_APP_GRAPHQL_MAX_DEPTH=3",
- "_APP_MIGRATIONS_FIREBASE_CLIENT_ID=",
- "_APP_MIGRATIONS_FIREBASE_CLIENT_SECRET=",
- "_APP_ASSISTANT_OPENAI_API_KEY=",
- ];
-
- return {
- domains,
- envs,
- mounts: [],
- };
-}
diff --git a/apps/dokploy/templates/aptabase/docker-compose.yml b/apps/dokploy/templates/aptabase/docker-compose.yml
deleted file mode 100644
index dfde1cae..00000000
--- a/apps/dokploy/templates/aptabase/docker-compose.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-services:
- aptabase_db:
- image: postgres:15-alpine
- restart: always
- volumes:
- - db-data:/var/lib/postgresql/data
- environment:
- POSTGRES_USER: aptabase
- POSTGRES_PASSWORD: sTr0NGp4ssw0rd
-
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U aptabase"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- aptabase_events_db:
- image: clickhouse/clickhouse-server:23.8.16.16-alpine
- restart: always
- volumes:
- - events-db-data:/var/lib/clickhouse
- environment:
- CLICKHOUSE_USER: aptabase
- CLICKHOUSE_PASSWORD: sTr0NGp4ssw0rd
- ulimits:
- nofile:
- soft: 262144
- hard: 262144
-
- healthcheck:
- test: ["CMD-SHELL", "curl -f http://localhost:8123 || exit 1"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- aptabase:
- image: ghcr.io/aptabase/aptabase:main
- restart: always
- environment:
- BASE_URL: http://${APTABASE_HOST}
- AUTH_SECRET: ${AUTH_SECRET}
- DATABASE_URL: Server=aptabase_db;Port=5432;User Id=aptabase;Password=sTr0NGp4ssw0rd;Database=aptabase
- CLICKHOUSE_URL: Host=aptabase_events_db;Port=8123;Username=aptabase;Password=sTr0NGp4ssw0rd
-
-volumes:
- db-data:
- driver: local
- events-db-data:
- driver: local
diff --git a/apps/dokploy/templates/aptabase/index.ts b/apps/dokploy/templates/aptabase/index.ts
deleted file mode 100644
index 38b077ae..00000000
--- a/apps/dokploy/templates/aptabase/index.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const authSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "aptabase",
- },
- ];
-
- const envs = [`APTABASE_HOST=${mainDomain}`, `AUTH_SECRET=${authSecret}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/baserow/docker-compose.yml b/apps/dokploy/templates/baserow/docker-compose.yml
deleted file mode 100644
index db588e83..00000000
--- a/apps/dokploy/templates/baserow/docker-compose.yml
+++ /dev/null
@@ -1,10 +0,0 @@
-version: "3.8"
-services:
- baserow:
- image: baserow/baserow:1.25.2
- environment:
- BASEROW_PUBLIC_URL: "http://${BASEROW_HOST}"
- volumes:
- - baserow_data:/baserow/data
-volumes:
- baserow_data:
diff --git a/apps/dokploy/templates/baserow/index.ts b/apps/dokploy/templates/baserow/index.ts
deleted file mode 100644
index fa57417c..00000000
--- a/apps/dokploy/templates/baserow/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainHost = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainHost,
- port: 80,
- serviceName: "baserow",
- },
- ];
- const envs = [`BASEROW_HOST=${mainHost}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/blender/docker-compose.yml b/apps/dokploy/templates/blender/docker-compose.yml
deleted file mode 100644
index 893f3dee..00000000
--- a/apps/dokploy/templates/blender/docker-compose.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-version: "3.8"
-
-services:
- blender:
- image: lscr.io/linuxserver/blender:latest
- runtime: nvidia
- deploy:
- resources:
- reservations:
- devices:
- - driver: nvidia
- count: all
- capabilities:
- - gpu
- environment:
- - NVIDIA_VISIBLE_DEVICES=all
- - NVIDIA_DRIVER_CAPABILITIES=all
- - PUID=1000
- - PGID=1000
- - TZ=Etc/UTC
- - SUBFOLDER=/ #optional
- ports:
- - 3000
- - 3001
- restart: unless-stopped
- shm_size: 1gb
diff --git a/apps/dokploy/templates/blender/index.ts b/apps/dokploy/templates/blender/index.ts
deleted file mode 100644
index 79508bed..00000000
--- a/apps/dokploy/templates/blender/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateHash,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const _mainServiceHash = generateHash(schema.projectName);
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "blender",
- },
- ];
-
- const envs = [
- "PUID=1000",
- "PGID=1000",
- "TZ=Etc/UTC",
- "SUBFOLDER=/",
- "NVIDIA_VISIBLE_DEVICES=all",
- "NVIDIA_DRIVER_CAPABILITIES=all",
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/browserless/docker-compose.yml b/apps/dokploy/templates/browserless/docker-compose.yml
deleted file mode 100644
index 11d6d95f..00000000
--- a/apps/dokploy/templates/browserless/docker-compose.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-services:
- browserless:
- image: ghcr.io/browserless/chromium:v2.23.0
- environment:
- TOKEN: ${BROWSERLESS_TOKEN}
- expose:
- - 3000
- healthcheck:
- test:
- - CMD
- - curl
- - '-f'
- - 'http://127.0.0.1:3000/docs'
- interval: 2s
- timeout: 10s
- retries: 15
diff --git a/apps/dokploy/templates/browserless/index.ts b/apps/dokploy/templates/browserless/index.ts
deleted file mode 100644
index f922e863..00000000
--- a/apps/dokploy/templates/browserless/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainHost = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainHost,
- port: 3000,
- serviceName: "browserless",
- },
- ];
- const envs = [
- `BROWERLESS_HOST=${mainHost}`,
- `BROWSERLESS_TOKEN=${generatePassword(16)}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/budibase/docker-compose.yml b/apps/dokploy/templates/budibase/docker-compose.yml
deleted file mode 100644
index d1d6744a..00000000
--- a/apps/dokploy/templates/budibase/docker-compose.yml
+++ /dev/null
@@ -1,192 +0,0 @@
-services:
- apps:
- image: budibase.docker.scarf.sh/budibase/apps:3.2.25
- restart: unless-stopped
-
- environment:
- SELF_HOSTED: 1
- LOG_LEVEL: info
- PORT: 4002
- INTERNAL_API_KEY: ${BB_INTERNAL_API_KEY}
- API_ENCRYPTION_KEY: ${BB_API_ENCRYPTION_KEY}
- JWT_SECRET: ${BB_JWT_SECRET}
- MINIO_ACCESS_KEY: ${BB_MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY: ${BB_MINIO_SECRET_KEY}
- MINIO_URL: http://minio:9000
- REDIS_URL: redis:6379
- REDIS_PASSWORD: ${BB_REDIS_PASSWORD}
- WORKER_URL: http://worker:4003
- COUCH_DB_USERNAME: budibase
- COUCH_DB_PASSWORD: ${BB_COUCHDB_PASSWORD}
- COUCH_DB_URL: http://budibase:${BB_COUCHDB_PASSWORD}@couchdb:5984
- BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT:-PRODUCTION}
- ENABLE_ANALYTICS: ${ENABLE_ANALYTICS:-true}
- BB_ADMIN_USER_EMAIL: ''
- BB_ADMIN_USER_PASSWORD: ''
- depends_on:
- worker:
- condition: service_healthy
- redis:
- condition: service_healthy
- healthcheck:
- test:
- - CMD
- - wget
- - '--spider'
- - '-qO-'
- - 'http://localhost:4002/health'
- interval: 15s
- timeout: 15s
- retries: 5
- start_period: 10s
- worker:
- image: budibase.docker.scarf.sh/budibase/worker:3.2.25
- restart: unless-stopped
-
- environment:
- SELF_HOSTED: 1
- LOG_LEVEL: info
- PORT: 4003
- CLUSTER_PORT: 10000
- INTERNAL_API_KEY: ${BB_INTERNAL_API_KEY}
- API_ENCRYPTION_KEY: ${BB_API_ENCRYPTION_KEY}
- JWT_SECRET: ${BB_JWT_SECRET}
- MINIO_ACCESS_KEY: ${BB_MINIO_ACCESS_KEY}
- MINIO_SECRET_KEY: ${BB_MINIO_SECRET_KEY}
- APPS_URL: http://apps:4002
- MINIO_URL: http://minio:9000
- REDIS_URL: redis:6379
- REDIS_PASSWORD: ${BB_REDIS_PASSWORD}
- COUCH_DB_USERNAME: budibase
- COUCH_DB_PASSWORD: ${BB_COUCHDB_PASSWORD}
- COUCH_DB_URL: http://budibase:${BB_COUCHDB_PASSWORD}@couchdb:5984
- BUDIBASE_ENVIRONMENT: ${BUDIBASE_ENVIRONMENT:-PRODUCTION}
- ENABLE_ANALYTICS: ${ENABLE_ANALYTICS:-true}
- depends_on:
- redis:
- condition: service_healthy
- minio:
- condition: service_healthy
- healthcheck:
- test:
- - CMD
- - wget
- - '--spider'
- - '-qO-'
- - 'http://localhost:4003/health'
- interval: 15s
- timeout: 15s
- retries: 5
- start_period: 10s
- minio:
- image: minio/minio:RELEASE.2024-11-07T00-52-20Z
- restart: unless-stopped
-
- volumes:
- - 'minio_data:/data'
- environment:
- MINIO_ROOT_USER: ${BB_MINIO_ACCESS_KEY}
- MINIO_ROOT_PASSWORD: ${BB_MINIO_SECRET_KEY}
- MINIO_BROWSER: off
- command: 'server /data --console-address ":9001"'
- healthcheck:
- test:
- - CMD
- - curl
- - '-f'
- - 'http://localhost:9000/minio/health/live'
- interval: 30s
- timeout: 20s
- retries: 3
- proxy:
- image: budibase/proxy:3.2.25
- restart: unless-stopped
-
- environment:
- PROXY_RATE_LIMIT_WEBHOOKS_PER_SECOND: 10
- PROXY_RATE_LIMIT_API_PER_SECOND: 20
- APPS_UPSTREAM_URL: http://apps:4002
- WORKER_UPSTREAM_URL: http://worker:4003
- MINIO_UPSTREAM_URL: http://minio:9000
- COUCHDB_UPSTREAM_URL: http://couchdb:5984
- WATCHTOWER_UPSTREAM_URL: http://watchtower:8080
- RESOLVER: 127.0.0.11
- depends_on:
- minio:
- condition: service_healthy
- worker:
- condition: service_healthy
- apps:
- condition: service_healthy
- couchdb:
- condition: service_healthy
- healthcheck:
- test:
- - CMD
- - curl
- - '-f'
- - 'http://localhost:10000/'
- interval: 15s
- timeout: 15s
- retries: 5
- start_period: 10s
- couchdb:
- image: budibase/couchdb:v3.3.3
- restart: unless-stopped
-
- environment:
- COUCHDB_USER: budibase
- COUCHDB_PASSWORD: ${BB_COUCHDB_PASSWORD}
- TARGETBUILD: docker-compose
- healthcheck:
- test:
- - CMD
- - curl
- - '-f'
- - 'http://localhost:5984/'
- interval: 15s
- timeout: 15s
- retries: 5
- start_period: 10s
- volumes:
- - 'couchdb3_data:/opt/couchdb/data'
- redis:
- image: redis:7.2-alpine
-
- restart: unless-stopped
- command: 'redis-server --requirepass "${BB_REDIS_PASSWORD}"'
- volumes:
- - 'redis_data:/data'
- healthcheck:
- test:
- - CMD
- - redis-cli
- - '-a'
- - ${BB_REDIS_PASSWORD}
- - ping
- interval: 15s
- timeout: 15s
- retries: 5
- start_period: 10s
- watchtower:
- restart: unless-stopped
-
- image: containrrr/watchtower:1.7.1
- volumes:
- - '/var/run/docker.sock:/var/run/docker.sock'
- command: '--debug --http-api-update bbapps bbworker bbproxy'
- environment:
- WATCHTOWER_HTTP_API: true
- WATCHTOWER_HTTP_API_TOKEN: ${BB_WATCHTOWER_PASSWORD}
- WATCHTOWER_CLEANUP: true
- labels:
- - com.centurylinklabs.watchtower.enable=false
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- minio_data:
- couchdb3_data:
- redis_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/budibase/index.ts b/apps/dokploy/templates/budibase/index.ts
deleted file mode 100644
index 50bdfdba..00000000
--- a/apps/dokploy/templates/budibase/index.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const apiKey = generatePassword(32);
- const encryptionKey = generatePassword(32);
- const jwtSecret = generatePassword(32);
- const couchDbPassword = generatePassword(32);
- const redisPassword = generatePassword(32);
- const minioAccessKey = generatePassword(32);
- const minioSecretKey = generatePassword(32);
- const watchtowerPassword = generatePassword(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 10000,
- serviceName: "proxy",
- },
- ];
-
- const envs = [
- `BB_HOST=${mainDomain}`,
- `BB_INTERNAL_API_KEY=${apiKey}`,
- `BB_API_ENCRYPTION_KEY=${encryptionKey}`,
- `BB_JWT_SECRET=${jwtSecret}`,
- `BB_COUCHDB_PASSWORD=${couchDbPassword}`,
- `BB_REDIS_PASSWORD=${redisPassword}`,
- `BB_WATCHTOWER_PASSWORD=${watchtowerPassword}`,
- `BB_MINIO_ACCESS_KEY=${minioAccessKey}`,
- `BB_MINIO_SECRET_KEY=${minioSecretKey}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/calcom/docker-compose.yml b/apps/dokploy/templates/calcom/docker-compose.yml
deleted file mode 100644
index a309a1da..00000000
--- a/apps/dokploy/templates/calcom/docker-compose.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-services:
- postgres:
- image: postgres:16-alpine
-
- volumes:
- - calcom-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_USER=postgres
- - POSTGRES_PASSWORD=password
- - POSTGRES_DB=db
- - DATABASE_URL=postgres://postgres:password@postgres:5432/db
-
- calcom:
- image: calcom/cal.com:v2.7.6
- depends_on:
- - postgres
- environment:
- - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- - CALENDSO_ENCRYPTION_KEY=${CALENDSO_ENCRYPTION_KEY}
- - DATABASE_URL=postgres://postgres:password@postgres:5432/db
- - NEXT_PUBLIC_WEBAPP_URL=http://${CALCOM_HOST}
- - NEXTAUTH_URL=http://${CALCOM_HOST}/api/auth
-
-volumes:
- calcom-data:
diff --git a/apps/dokploy/templates/calcom/index.ts b/apps/dokploy/templates/calcom/index.ts
deleted file mode 100644
index d359e9c7..00000000
--- a/apps/dokploy/templates/calcom/index.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const calcomEncryptionKey = generateBase64(32);
- const nextAuthSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "calcom",
- },
- ];
-
- const envs = [
- `CALCOM_HOST=${mainDomain}`,
- `NEXTAUTH_SECRET=${nextAuthSecret}`,
- `CALENDSO_ENCRYPTION_KEY=${calcomEncryptionKey}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/chatwoot/docker-compose.yml b/apps/dokploy/templates/chatwoot/docker-compose.yml
deleted file mode 100644
index b24ca0b5..00000000
--- a/apps/dokploy/templates/chatwoot/docker-compose.yml
+++ /dev/null
@@ -1,74 +0,0 @@
-version: '3'
-
-x-base-config: &base-config
- image: chatwoot/chatwoot:v3.14.1
- volumes:
- - chatwoot-storage:/app/storage
- networks:
- - dokploy-network
- environment:
- - FRONTEND_URL=${FRONTEND_URL}
- - SECRET_KEY_BASE=${SECRET_KEY_BASE}
- - RAILS_ENV=${RAILS_ENV}
- - NODE_ENV=${NODE_ENV}
- - INSTALLATION_ENV=${INSTALLATION_ENV}
- - RAILS_LOG_TO_STDOUT=${RAILS_LOG_TO_STDOUT}
- - LOG_LEVEL=${LOG_LEVEL}
- - DEFAULT_LOCALE=${DEFAULT_LOCALE}
- - POSTGRES_HOST=${POSTGRES_HOST}
- - POSTGRES_PORT=${POSTGRES_PORT}
- - POSTGRES_DATABASE=${POSTGRES_DATABASE}
- - POSTGRES_USERNAME=${POSTGRES_USERNAME}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- - REDIS_URL=${REDIS_URL}
- - ENABLE_ACCOUNT_SIGNUP=${ENABLE_ACCOUNT_SIGNUP}
- - ACTIVE_STORAGE_SERVICE=${ACTIVE_STORAGE_SERVICE}
-
-services:
- chatwoot-rails:
- <<: *base-config
- depends_on:
- chatwoot-postgres:
- condition: service_started
- chatwoot-redis:
- condition: service_started
- entrypoint: docker/entrypoints/rails.sh
- command: ['bundle', 'exec', 'sh', '-c', 'rails db:chatwoot_prepare && rails s -p 3000 -b 0.0.0.0']
- restart: always
-
- chatwoot-sidekiq:
- <<: *base-config
- depends_on:
- chatwoot-postgres:
- condition: service_started
- chatwoot-redis:
- condition: service_started
- command: ['bundle', 'exec', 'sidekiq', '-C', 'config/sidekiq.yml']
- restart: always
-
- chatwoot-postgres:
- image: postgres:12
- restart: always
- volumes:
- - chatwoot-postgres-data:/var/lib/postgresql/data
-
- environment:
- - POSTGRES_DB=${POSTGRES_DATABASE}
- - POSTGRES_USER=${POSTGRES_USERNAME}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
-
- chatwoot-redis:
- image: redis:alpine
- restart: always
- volumes:
- - chatwoot-redis-data:/data
-
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- chatwoot-storage:
- chatwoot-postgres-data:
- chatwoot-redis-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/chatwoot/index.ts b/apps/dokploy/templates/chatwoot/index.ts
deleted file mode 100644
index 9c5e44c6..00000000
--- a/apps/dokploy/templates/chatwoot/index.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretKeyBase = generateBase64(64);
- const postgresPassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "chatwoot-rails",
- },
- ];
-
- const envs = [
- `FRONTEND_URL=http://${mainDomain}`,
- `SECRET_KEY_BASE=${secretKeyBase}`,
- "RAILS_ENV=production",
- "NODE_ENV=production",
- "INSTALLATION_ENV=docker",
- "RAILS_LOG_TO_STDOUT=true",
- "LOG_LEVEL=info",
- "DEFAULT_LOCALE=en",
- "POSTGRES_HOST=chatwoot-postgres",
- "POSTGRES_PORT=5432",
- "POSTGRES_DATABASE=chatwoot",
- "POSTGRES_USERNAME=postgres",
- `POSTGRES_PASSWORD=${postgresPassword}`,
- "REDIS_URL=redis://chatwoot-redis:6379",
- "ENABLE_ACCOUNT_SIGNUP=false",
- "ACTIVE_STORAGE_SERVICE=local",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/checkmate/docker-compose.yml b/apps/dokploy/templates/checkmate/docker-compose.yml
deleted file mode 100644
index 7a5fc898..00000000
--- a/apps/dokploy/templates/checkmate/docker-compose.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-services:
- client:
- image: bluewaveuptime/uptime_client:latest
- restart: always
- environment:
- UPTIME_APP_API_BASE_URL: "http://${DOMAIN}/api/v1"
- ports:
- - 80
- - 443
- depends_on:
- - server
-
- server:
- image: bluewaveuptime/uptime_server:latest
- restart: always
- ports:
- - 5000
- depends_on:
- - redis
- - mongodb
- environment:
- - DB_CONNECTION_STRING=mongodb://mongodb:27017/uptime_db
- - REDIS_HOST=redis
-
- # volumes:
- # - /var/run/docker.sock:/var/run/docker.sock:ro
- redis:
- image: bluewaveuptime/uptime_redis:latest
- restart: always
- ports:
- - 6379
- volumes:
- - ../files/redis/data:/data
-
- mongodb:
- image: bluewaveuptime/uptime_database_mongo:latest
- restart: always
- volumes:
- - ../files/mongo/data:/data/db
- command: ["mongod", "--quiet"]
- ports:
- - 27017
diff --git a/apps/dokploy/templates/checkmate/index.ts b/apps/dokploy/templates/checkmate/index.ts
deleted file mode 100644
index e52370aa..00000000
--- a/apps/dokploy/templates/checkmate/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const envs = [`DOMAIN=${mainDomain}`];
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "client",
- },
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/cloudflared/docker-compose.yml b/apps/dokploy/templates/cloudflared/docker-compose.yml
deleted file mode 100644
index d9fc2741..00000000
--- a/apps/dokploy/templates/cloudflared/docker-compose.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-services:
- cloudflared:
- image: 'cloudflare/cloudflared:latest'
- environment:
- # Don't forget to set this in your Dokploy Environment
- - 'TUNNEL_TOKEN=${CLOUDFLARE_TUNNEL_TOKEN}'
- network_mode: host
- restart: unless-stopped
- command: [
- "tunnel",
-
- # More tunnel run parameters here:
- # https://developers.cloudflare.com/cloudflare-one/connections/connect-networks/configure-tunnels/tunnel-run-parameters/
- "--no-autoupdate",
- #"--protocol", "http2",
-
- "run"
- ]
diff --git a/apps/dokploy/templates/cloudflared/index.ts b/apps/dokploy/templates/cloudflared/index.ts
deleted file mode 100644
index 93ea091c..00000000
--- a/apps/dokploy/templates/cloudflared/index.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import type { Schema, Template } from "../utils";
-
-export function generate(_schema: Schema): Template {
- const envs = [`CLOUDFLARE_TUNNEL_TOKEN=""`];
-
- return {
- envs,
- };
-}
diff --git a/apps/dokploy/templates/coder/docker-compose.yml b/apps/dokploy/templates/coder/docker-compose.yml
deleted file mode 100644
index 875c7ae8..00000000
--- a/apps/dokploy/templates/coder/docker-compose.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-services:
- coder:
- image: ghcr.io/coder/coder:v2.15.3
-
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- group_add:
- - "998"
- depends_on:
- db:
- condition: service_healthy
- environment:
- - CODER_ACCESS_URL
- - CODER_HTTP_ADDRESS
- - CODER_PG_CONNECTION_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db/${POSTGRES_DB}?sslmode=disable
-
- db:
- image: postgres:17
-
- environment:
- - POSTGRES_PASSWORD
- - POSTGRES_USER
- - POSTGRES_DB
- healthcheck:
- test:
- [
- "CMD-SHELL",
- "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}",
- ]
- interval: 5s
- timeout: 5s
- retries: 5
- volumes:
- - db_coder_data:/var/lib/postgresql/data
-
-volumes:
- db_coder_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/coder/index.ts b/apps/dokploy/templates/coder/index.ts
deleted file mode 100644
index c3f066d6..00000000
--- a/apps/dokploy/templates/coder/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 7080,
- serviceName: "coder",
- },
- ];
-
- const envs = [
- "CODER_ACCESS_URL=",
- "CODER_HTTP_ADDRESS=0.0.0.0:7080",
- "",
- "POSTGRES_DB=coder",
- "POSTGRES_USER=coder",
- "POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/conduit/docker-compose.yml b/apps/dokploy/templates/conduit/docker-compose.yml
deleted file mode 100644
index f2f1fb34..00000000
--- a/apps/dokploy/templates/conduit/docker-compose.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-# From Conduit's official documentation: https://docs.conduit.rs/deploying/docker.html#docker-compose
-version: '3'
-
-services:
- homeserver:
- image: registry.gitlab.com/famedly/conduit/matrix-conduit:v0.9.0
- restart: unless-stopped
- volumes:
- - db:/var/lib/matrix-conduit/
- networks:
- - dokploy-network
- environment:
- CONDUIT_SERVER_NAME: ${MATRIX_SUBDOMAIN}
- CONDUIT_DATABASE_PATH: /var/lib/matrix-conduit/
- CONDUIT_DATABASE_BACKEND: rocksdb
- CONDUIT_PORT: 6167
- CONDUIT_MAX_REQUEST_SIZE: 20000000 # in bytes, ~20 MB
- CONDUIT_ALLOW_REGISTRATION: 'true'
- #CONDUIT_REGISTRATION_TOKEN: '' # require password for registration
- CONDUIT_ALLOW_FEDERATION: 'true'
- CONDUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
- CONDUIT_TRUSTED_SERVERS: '["matrix.org"]'
- #CONDUIT_MAX_CONCURRENT_REQUESTS: 100
- CONDUIT_ADDRESS: 0.0.0.0
- CONDUIT_CONFIG: '' # Ignore this
-volumes:
- db:
-
-networks:
- dokploy-network:
- external: true
diff --git a/apps/dokploy/templates/conduit/index.ts b/apps/dokploy/templates/conduit/index.ts
deleted file mode 100644
index 2b9a81ae..00000000
--- a/apps/dokploy/templates/conduit/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-// EXAMPLE
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const matrixSubdomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: matrixSubdomain,
- port: 6167,
- serviceName: "homeserver",
- },
- ];
-
- const envs = [
- `MATRIX_SUBDOMAIN=${matrixSubdomain} # Replace by your server name`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/conduwuit/docker-compose.yml b/apps/dokploy/templates/conduwuit/docker-compose.yml
deleted file mode 100644
index 7945d6c9..00000000
--- a/apps/dokploy/templates/conduwuit/docker-compose.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-# conduwuit
-# https://conduwuit.puppyirl.gay/deploying/docker-compose.yml
-
-services:
- homeserver:
- image: girlbossceo/conduwuit:latest
- restart: unless-stopped
- ports:
- - 8448:6167
- volumes:
- - db:/var/lib/conduwuit
- #- ./conduwuit.toml:/etc/conduwuit.toml
- environment:
- # Edit this in your Dokploy Environment
- CONDUWUIT_SERVER_NAME: ${CONDUWUIT_SERVER_NAME}
-
- CONDUWUIT_DATABASE_PATH: /var/lib/conduwuit
- CONDUWUIT_PORT: 6167
- CONDUWUIT_MAX_REQUEST_SIZE: 20000000 # in bytes, ~20 MB
-
- CONDUWUIT_ALLOW_REGISTRATION: 'true'
- CONDUWUIT_REGISTRATION_TOKEN: ${CONDUWUIT_REGISTRATION_TOKEN}
-
- CONDUWUIT_ALLOW_FEDERATION: 'true'
- CONDUWUIT_ALLOW_CHECK_FOR_UPDATES: 'true'
- CONDUWUIT_TRUSTED_SERVERS: '["matrix.org"]'
- #CONDUWUIT_LOG: warn,state_res=warn
- CONDUWUIT_ADDRESS: 0.0.0.0
-
- # Uncomment if you mapped config toml in volumes
- #CONDUWUIT_CONFIG: '/etc/conduwuit.toml'
-
- ### Uncomment if you want to use your own Element-Web App.
- ### Note: You need to provide a config.json for Element and you also need a second
- ### Domain or Subdomain for the communication between Element and conduwuit
- ### Config-Docs: https://github.com/vector-im/element-web/blob/develop/docs/config.md
- # element-web:
- # image: vectorim/element-web:latest
- # restart: unless-stopped
- # ports:
- # - 8009:80
- # volumes:
- # - ./element_config.json:/app/config.json
- # depends_on:
- # - homeserver
-
-volumes:
- db:
diff --git a/apps/dokploy/templates/conduwuit/index.ts b/apps/dokploy/templates/conduwuit/index.ts
deleted file mode 100644
index 9d9e9856..00000000
--- a/apps/dokploy/templates/conduwuit/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const matrixSubdomain = generateRandomDomain(schema);
- const registrationToken = generatePassword(20);
-
- const domains: DomainSchema[] = [
- {
- host: matrixSubdomain,
- port: 6167,
- serviceName: "homeserver",
- },
- ];
-
- const envs = [
- `CONDUWUIT_SERVER_NAME=${matrixSubdomain}`,
- `CONDUWUIT_REGISTRATION_TOKEN=${registrationToken}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/convex/docker-compose.yml b/apps/dokploy/templates/convex/docker-compose.yml
deleted file mode 100644
index 12e2b5ad..00000000
--- a/apps/dokploy/templates/convex/docker-compose.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-services:
- backend:
- image: ghcr.io/get-convex/convex-backend:6c974d219776b753cd23d26f4a296629ff7c2cad
- ports:
- - "${PORT:-3210}:3210"
- - "${SITE_PROXY_PORT:-3211}:3211"
- volumes:
- - data:/convex/data
- environment:
- - INSTANCE_NAME=${INSTANCE_NAME:-}
- - INSTANCE_SECRET=${INSTANCE_SECRET:-}
- - CONVEX_RELEASE_VERSION_DEV=${CONVEX_RELEASE_VERSION_DEV:-}
- - ACTIONS_USER_TIMEOUT_SECS=${ACTIONS_USER_TIMEOUT_SECS:-}
- - CONVEX_CLOUD_ORIGIN=${CONVEX_CLOUD_ORIGIN:-http://127.0.0.1:3210}
- - CONVEX_SITE_ORIGIN=${CONVEX_SITE_ORIGIN:-http://127.0.0.1:3211}
- - DATABASE_URL=${DATABASE_URL:-}
- - DISABLE_BEACON=${DISABLE_BEACON:-}
- - REDACT_LOGS_TO_CLIENT=${REDACT_LOGS_TO_CLIENT:-}
- - RUST_LOG=${RUST_LOG:-info}
- - RUST_BACKTRACE=${RUST_BACKTRACE:-}
- healthcheck:
- test: curl -f http://localhost:3210/version
- interval: 5s
- start_period: 5s
-
- dashboard:
- image: ghcr.io/get-convex/convex-dashboard:4499dd4fd7f2148687a7774599c613d052950f46
- ports:
- - "${DASHBOARD_PORT:-6791}:6791"
- environment:
- - NEXT_PUBLIC_DEPLOYMENT_URL=${NEXT_PUBLIC_DEPLOYMENT_URL:-http://127.0.0.1:3210}
- depends_on:
- backend:
- condition: service_healthy
-
-volumes:
- data:
diff --git a/apps/dokploy/templates/convex/index.ts b/apps/dokploy/templates/convex/index.ts
deleted file mode 100644
index badfe732..00000000
--- a/apps/dokploy/templates/convex/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const dashboardDomain = generateRandomDomain(schema);
- const backendDomain = generateRandomDomain(schema);
- const actionsDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: dashboardDomain,
- port: 6791,
- serviceName: "dashboard",
- },
- {
- host: backendDomain,
- port: 3210,
- serviceName: "backend",
- },
- {
- host: actionsDomain,
- port: 3211,
- serviceName: "backend",
- },
- ];
-
- const envs = [
- `NEXT_PUBLIC_DEPLOYMENT_URL=http://${backendDomain}`,
- `CONVEX_CLOUD_ORIGIN=http://${backendDomain}`,
- `CONVEX_SITE_ORIGIN=http://${actionsDomain}`,
- ];
-
- return { envs, domains };
-}
diff --git a/apps/dokploy/templates/couchdb/docker-compose.yml b/apps/dokploy/templates/couchdb/docker-compose.yml
deleted file mode 100644
index cb00bf69..00000000
--- a/apps/dokploy/templates/couchdb/docker-compose.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-version: '3.8'
-
-services:
- couchdb:
- image: couchdb:latest
- ports:
- - '5984'
- volumes:
- - couchdb-data:/opt/couchdb/data
- environment:
- - COUCHDB_USER=${COUCHDB_USER}
- - COUCHDB_PASSWORD=${COUCHDB_PASSWORD}
- restart: unless-stopped
-
-volumes:
- couchdb-data:
- driver: local
diff --git a/apps/dokploy/templates/couchdb/index.ts b/apps/dokploy/templates/couchdb/index.ts
deleted file mode 100644
index 70d71669..00000000
--- a/apps/dokploy/templates/couchdb/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const username = generatePassword(16);
- const password = generatePassword(32);
-
- const domains: DomainSchema[] = [
- {
- serviceName: "couchdb",
- host: mainDomain,
- port: 5984,
- },
- ];
-
- const envs = [`COUCHDB_USER=${username}`, `COUCHDB_PASSWORD=${password}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/datalens/docker-compose.yml b/apps/dokploy/templates/datalens/docker-compose.yml
deleted file mode 100644
index 94839e04..00000000
--- a/apps/dokploy/templates/datalens/docker-compose.yml
+++ /dev/null
@@ -1,96 +0,0 @@
-services:
- pg-compeng:
- image: postgres:16-alpine
- restart: always
- environment:
- POSTGRES_PASSWORD: "postgres"
- POSTGRES_DB: postgres
- POSTGRES_USER: postgres
-
- control-api:
- image: ghcr.io/datalens-tech/datalens-control-api:0.2192.0
- restart: always
- environment:
- BI_API_UWSGI_WORKERS_COUNT: 4
- CONNECTOR_AVAILABILITY_VISIBLE: "clickhouse,postgres,chyt,ydb,mysql,greenplum,mssql,appmetrica_api,metrika_api"
- RQE_FORCE_OFF: 1
- DL_CRY_ACTUAL_KEY_ID: key_1
- DL_CRY_KEY_VAL_ID_key_1: "h1ZpilcYLYRdWp7Nk8X1M1kBPiUi8rdjz9oBfHyUKIk="
- RQE_SECRET_KEY: ""
- US_HOST: "http://us:8083"
- US_MASTER_TOKEN: "fake-us-master-token"
- depends_on:
- - us
-
- data-api:
- container_name: datalens-data-api
- image: ghcr.io/datalens-tech/datalens-data-api:0.2192.0
- restart: always
- environment:
- GUNICORN_WORKERS_COUNT: 5
- RQE_FORCE_OFF: 1
- CACHES_ON: 0
- MUTATIONS_CACHES_ON: 0
- RQE_SECRET_KEY: ""
- DL_CRY_ACTUAL_KEY_ID: key_1
- DL_CRY_KEY_VAL_ID_key_1: "h1ZpilcYLYRdWp7Nk8X1M1kBPiUi8rdjz9oBfHyUKIk="
- BI_COMPENG_PG_ON: 1
- BI_COMPENG_PG_URL: "postgresql://postgres:postgres@pg-compeng:5432/postgres"
- US_HOST: "http://us:8083"
- US_MASTER_TOKEN: "fake-us-master-token"
- depends_on:
- - us
- - pg-compeng
-
- pg-us:
- container_name: datalens-pg-us
- image: postgres:16-alpine
- restart: always
- environment:
- POSTGRES_DB: us-db-ci_purgeable
- POSTGRES_USER: us
- POSTGRES_PASSWORD: us
- volumes:
- - ${VOLUME_US:-./metadata}:/var/lib/postgresql/data
-
- us:
- image: ghcr.io/datalens-tech/datalens-us:0.310.0
- restart: always
- depends_on:
- - pg-us
- environment:
- APP_INSTALLATION: "opensource"
- APP_ENV: "prod"
- MASTER_TOKEN: "fake-us-master-token"
- POSTGRES_DSN_LIST: ${METADATA_POSTGRES_DSN_LIST:-postgres://us:us@pg-us:5432/us-db-ci_purgeable}
- SKIP_INSTALL_DB_EXTENSIONS: ${METADATA_SKIP_INSTALL_DB_EXTENSIONS:-0}
- USE_DEMO_DATA: ${USE_DEMO_DATA:-0}
- HC: ${HC:-0}
- NODE_EXTRA_CA_CERTS: /certs/root.crt
- extra_hosts:
- - "host.docker.internal:host-gateway"
- volumes:
- - ./certs:/certs
-
- datalens:
- image: ghcr.io/datalens-tech/datalens-ui:0.2601.0
- restart: always
- ports:
- - ${UI_PORT:-8080}:8080
- depends_on:
- - us
- - control-api
- - data-api
- environment:
- APP_MODE: "full"
- APP_ENV: "production"
- APP_INSTALLATION: "opensource"
- AUTH_POLICY: "disabled"
- US_ENDPOINT: "http://us:8083"
- BI_API_ENDPOINT: "http://control-api:8080"
- BI_DATA_ENDPOINT: "http://data-api:8080"
- US_MASTER_TOKEN: "fake-us-master-token"
- NODE_EXTRA_CA_CERTS: "/usr/local/share/ca-certificates/cert.pem"
- HC: ${HC:-0}
- YANDEX_MAP_ENABLED: ${YANDEX_MAP_ENABLED:-0}
- YANDEX_MAP_TOKEN: ${YANDEX_MAP_TOKEN:-0}
diff --git a/apps/dokploy/templates/datalens/index.ts b/apps/dokploy/templates/datalens/index.ts
deleted file mode 100644
index f2efb76b..00000000
--- a/apps/dokploy/templates/datalens/index.ts
+++ /dev/null
@@ -1,23 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8080,
- serviceName: "datalens",
- },
- ];
-
- const envs = ["HC=1"];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/directus/docker-compose.yml b/apps/dokploy/templates/directus/docker-compose.yml
deleted file mode 100644
index 52e64baf..00000000
--- a/apps/dokploy/templates/directus/docker-compose.yml
+++ /dev/null
@@ -1,64 +0,0 @@
-services:
- database:
- image: postgis/postgis:13-master
- volumes:
- - directus_database:/var/lib/postgresql/data
-
- environment:
- POSTGRES_USER: "directus"
- POSTGRES_PASSWORD: ${DATABASE_PASSWORD}
- POSTGRES_DB: "directus"
- healthcheck:
- test: ["CMD", "pg_isready", "--host=localhost", "--username=directus"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_interval: 5s
- start_period: 30s
-
- cache:
- image: redis:6
- healthcheck:
- test: ["CMD-SHELL", "[ $$(redis-cli ping) = 'PONG' ]"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_interval: 5s
- start_period: 30s
-
-
- directus:
- image: directus/directus:11.0.2
- ports:
- - 8055
- volumes:
- - directus_uploads:/directus/uploads
- - directus_extensions:/directus/extensions
- depends_on:
- database:
- condition: service_healthy
- cache:
- condition: service_healthy
- environment:
- SECRET: ${DIRECTUS_SECRET}
-
- DB_CLIENT: "pg"
- DB_HOST: "database"
- DB_PORT: "5432"
- DB_DATABASE: "directus"
- DB_USER: "directus"
- DB_PASSWORD: ${DATABASE_PASSWORD}
-
- CACHE_ENABLED: "true"
- CACHE_AUTO_PURGE: "true"
- CACHE_STORE: "redis"
- REDIS: "redis://cache:6379"
-
- # After first successful login, remove the admin email/password env. variables below
- # as these will now be stored in the database.
- ADMIN_EMAIL: "admin@example.com"
- ADMIN_PASSWORD: "d1r3ctu5"
-volumes:
- directus_uploads:
- directus_extensions:
- directus_database:
\ No newline at end of file
diff --git a/apps/dokploy/templates/directus/index.ts b/apps/dokploy/templates/directus/index.ts
deleted file mode 100644
index 37d03e7b..00000000
--- a/apps/dokploy/templates/directus/index.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const directusSecret = generateBase64(64);
- const databasePassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8055,
- serviceName: "directus",
- },
- ];
-
- const envs = [
- `DATABASE_PASSWORD=${databasePassword}`,
- `DIRECTUS_SECRET=${directusSecret}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/discord-tickets/docker-compose.yml b/apps/dokploy/templates/discord-tickets/docker-compose.yml
deleted file mode 100644
index f797a77b..00000000
--- a/apps/dokploy/templates/discord-tickets/docker-compose.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-version: "3.8"
-
-services:
- tickets-postgres:
- image: mysql:8
- restart: unless-stopped
-
- volumes:
- - tickets-mysql-data:/var/lib/mysql
- environment:
- MYSQL_DATABASE: ${MYSQL_DATABASE}
- MYSQL_PASSWORD: ${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
- MYSQL_USER: ${MYSQL_USER}
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u${MYSQL_USER}", "-p${MYSQL_PASSWORD}"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- tickets-app:
- image: eartharoid/discord-tickets:4.0.21
- depends_on:
- tickets-postgres:
- condition: service_healthy
- restart: unless-stopped
-
- volumes:
- - tickets-app-data:/home/container/user
- - /etc/timezone:/etc/timezone:ro
- - /etc/localtime:/etc/localtime:ro
- tty: true
- stdin_open: true
- environment:
- DB_CONNECTION_URL: mysql://${MYSQL_USER}:${MYSQL_PASSWORD}@tickets-postgres/${MYSQL_DATABASE}
- DISCORD_SECRET: ${DISCORD_SECRET}
- DISCORD_TOKEN: ${DISCORD_TOKEN}
- ENCRYPTION_KEY: ${ENCRYPTION_KEY}
- DB_PROVIDER: mysql
- HTTP_EXTERNAL: https://${TICKETS_HOST}
- HTTP_HOST: 0.0.0.0
- HTTP_PORT: 8169
- HTTP_TRUST_PROXY: "true"
- PUBLIC_BOT: "false"
- PUBLISH_COMMANDS: "true"
- SUPER: ${SUPER_USERS}
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- tickets-mysql-data:
- tickets-app-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/discord-tickets/index.ts b/apps/dokploy/templates/discord-tickets/index.ts
deleted file mode 100644
index e11b78e6..00000000
--- a/apps/dokploy/templates/discord-tickets/index.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const mysqlPassword = generatePassword();
- const mysqlRootPassword = generatePassword();
- const mysqlUser = "tickets";
- const mysqlDatabase = "tickets";
-
- const encryptionKey = Array.from({ length: 48 }, () =>
- Math.floor(Math.random() * 16).toString(16),
- ).join("");
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8169,
- serviceName: "tickets-app",
- },
- ];
-
- const envs = [
- `TICKETS_HOST=${mainDomain}`,
- `MYSQL_DATABASE=${mysqlDatabase}`,
- `MYSQL_PASSWORD=${mysqlPassword}`,
- `MYSQL_ROOT_PASSWORD=${mysqlRootPassword}`,
- `MYSQL_USER=${mysqlUser}`,
- `ENCRYPTION_KEY=${encryptionKey}`,
- "# Follow the guide at: https://discordtickets.app/self-hosting/installation/docker/#creating-the-discord-application",
- "DISCORD_SECRET=",
- "DISCORD_TOKEN=",
- "SUPER_USERS=YOUR_DISCORD_USER_ID", // Default super user
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/discourse/docker-compose.yml b/apps/dokploy/templates/discourse/docker-compose.yml
deleted file mode 100644
index 2b938b85..00000000
--- a/apps/dokploy/templates/discourse/docker-compose.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-version: '3.7'
-
-services:
- discourse-db:
- image: docker.io/bitnami/postgresql:17
-
- volumes:
- - discourse-postgresql-data:/bitnami/postgresql
- environment:
- POSTGRESQL_USERNAME: bn_discourse
- POSTGRESQL_PASSWORD: ${POSTGRES_PASSWORD}
- POSTGRESQL_DATABASE: bitnami_discourse
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U bn_discourse -d bitnami_discourse"]
- interval: 10s
- timeout: 5s
- retries: 5
- restart: unless-stopped
-
- discourse-redis:
- image: docker.io/bitnami/redis:7.4
-
- volumes:
- - discourse-redis-data:/bitnami/redis
- environment:
- REDIS_PASSWORD: ${REDIS_PASSWORD}
- healthcheck:
- test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD}", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
- restart: unless-stopped
-
- discourse-app:
- image: docker.io/bitnami/discourse:3.3.2
-
- volumes:
- - discourse-data:/bitnami/discourse
- depends_on:
- discourse-db:
- condition: service_healthy
- discourse-redis:
- condition: service_healthy
- environment:
- DISCOURSE_HOST: ${DISCOURSE_HOST}
- DISCOURSE_DATABASE_HOST: discourse-db
- DISCOURSE_DATABASE_PORT_NUMBER: 5432
- DISCOURSE_DATABASE_USER: bn_discourse
- DISCOURSE_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
- DISCOURSE_DATABASE_NAME: bitnami_discourse
- DISCOURSE_REDIS_HOST: discourse-redis
- DISCOURSE_REDIS_PORT_NUMBER: 6379
- DISCOURSE_REDIS_PASSWORD: ${REDIS_PASSWORD}
- # Optional: Configure SMTP for email delivery
- # DISCOURSE_SMTP_HOST: ${SMTP_HOST}
- # DISCOURSE_SMTP_PORT: ${SMTP_PORT}
- # DISCOURSE_SMTP_USER: ${SMTP_USER}
- # DISCOURSE_SMTP_PASSWORD: ${SMTP_PASSWORD}
- restart: unless-stopped
-
- discourse-sidekiq:
- image: docker.io/bitnami/discourse:3.3.2
-
- volumes:
- - discourse-sidekiq-data:/bitnami/discourse
- depends_on:
- - discourse-app
- command: /opt/bitnami/scripts/discourse-sidekiq/run.sh
- environment:
- DISCOURSE_HOST: ${DISCOURSE_HOST}
- DISCOURSE_DATABASE_HOST: discourse-db
- DISCOURSE_DATABASE_PORT_NUMBER: 5432
- DISCOURSE_DATABASE_USER: bn_discourse
- DISCOURSE_DATABASE_PASSWORD: ${POSTGRES_PASSWORD}
- DISCOURSE_DATABASE_NAME: bitnami_discourse
- DISCOURSE_REDIS_HOST: discourse-redis
- DISCOURSE_REDIS_PORT_NUMBER: 6379
- DISCOURSE_REDIS_PASSWORD: ${REDIS_PASSWORD}
- # Optional: Configure SMTP for email delivery
- # DISCOURSE_SMTP_HOST: ${SMTP_HOST}
- # DISCOURSE_SMTP_PORT: ${SMTP_PORT}
- # DISCOURSE_SMTP_USER: ${SMTP_USER}
- # DISCOURSE_SMTP_PASSWORD: ${SMTP_PASSWORD}
- restart: unless-stopped
-
-volumes:
- discourse-postgresql-data:
- discourse-redis-data:
- discourse-data:
- discourse-sidekiq-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/discourse/index.ts b/apps/dokploy/templates/discourse/index.ts
deleted file mode 100644
index bf99e8d0..00000000
--- a/apps/dokploy/templates/discourse/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
- const redisPassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "discourse-app",
- },
- ];
-
- const envs = [
- `DISCOURSE_HOST=${mainDomain}`,
- `POSTGRES_PASSWORD=${postgresPassword}`,
- `REDIS_PASSWORD=${redisPassword}`,
- "# Optional: Configure SMTP for email delivery",
- "# SMTP_HOST=smtp.example.com",
- "# SMTP_PORT=587",
- "# SMTP_USER=your_smtp_user",
- "# SMTP_PASSWORD=your_smtp_password",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/docmost/docker-compose.yml b/apps/dokploy/templates/docmost/docker-compose.yml
deleted file mode 100644
index b5995594..00000000
--- a/apps/dokploy/templates/docmost/docker-compose.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-version: "3"
-
-services:
- docmost:
- image: docmost/docmost:0.4.1
- depends_on:
- - db
- - redis
- environment:
- - APP_URL
- - APP_SECRET
- - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}?schema=public
- - REDIS_URL=redis://redis:6379
- restart: unless-stopped
-
- volumes:
- - docmost:/app/data/storage
-
- db:
- image: postgres:16-alpine
- environment:
- - POSTGRES_DB
- - POSTGRES_USER
- - POSTGRES_PASSWORD
- restart: unless-stopped
-
- volumes:
- - db_docmost_data:/var/lib/postgresql/data
-
- redis:
- image: redis:7.2-alpine
- restart: unless-stopped
-
- volumes:
- - redis_docmost_data:/data
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- docmost:
- db_docmost_data:
- redis_docmost_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/docmost/index.ts b/apps/dokploy/templates/docmost/index.ts
deleted file mode 100644
index 16f7afa6..00000000
--- a/apps/dokploy/templates/docmost/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 3000,
- serviceName: "docmost",
- },
- ];
-
- const envs = [
- "POSTGRES_DB=docmost",
- "POSTGRES_USER=docmost",
- "POSTGRES_PASSWORD=STRONG_DB_PASSWORD",
- "APP_URL=http://localhost:3000",
- "APP_SECRET=VERY_STRONG_SECRET",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/documenso/docker-compose.yml b/apps/dokploy/templates/documenso/docker-compose.yml
deleted file mode 100644
index 9b8e8ed8..00000000
--- a/apps/dokploy/templates/documenso/docker-compose.yml
+++ /dev/null
@@ -1,42 +0,0 @@
-version: "3.8"
-services:
- postgres:
- image: postgres:16
-
- volumes:
- - documenso-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_USER=documenso
- - POSTGRES_PASSWORD=password
- - POSTGRES_DB=documenso
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U documenso"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 10s
-
- documenso:
- image: documenso/documenso:v1.5.6-rc.2
- depends_on:
- postgres:
- condition: service_healthy
- environment:
- - PORT=${DOCUMENSO_PORT}
- - NEXTAUTH_URL=http://${DOCUMENSO_HOST}
- - NEXTAUTH_SECRET=${NEXTAUTH_SECRET}
- - NEXT_PRIVATE_ENCRYPTION_KEY=${NEXT_PRIVATE_ENCRYPTION_KEY}
- - NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY}
- - NEXT_PUBLIC_WEBAPP_URL=http://${DOCUMENSO_HOST}
- - NEXT_PRIVATE_DATABASE_URL=postgres://documenso:password@postgres:5432/documenso
- - NEXT_PRIVATE_DIRECT_DATABASE_URL=postgres://documenso:password@postgres:5432/documenso
- - NEXT_PUBLIC_UPLOAD_TRANSPORT=database
- - NEXT_PRIVATE_SMTP_TRANSPORT=smtp-auth
- - NEXT_PRIVATE_SIGNING_LOCAL_FILE_PATH=/opt/documenso/cert.p12
- ports:
- - ${DOCUMENSO_PORT}
- volumes:
- - /opt/documenso/cert.p12:/opt/documenso/cert.p12
-
-volumes:
- documenso-data:
diff --git a/apps/dokploy/templates/documenso/index.ts b/apps/dokploy/templates/documenso/index.ts
deleted file mode 100644
index c70d1db4..00000000
--- a/apps/dokploy/templates/documenso/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const nextAuthSecret = generateBase64(32);
- const documensoEncryptionKey = generatePassword(32);
- const documensoSecondaryEncryptionKey = generatePassword(64);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "documenso",
- },
- ];
-
- const envs = [
- `DOCUMENSO_HOST=${mainDomain}`,
- "DOCUMENSO_PORT=3000",
- `NEXTAUTH_SECRET=${nextAuthSecret}`,
- `NEXT_PRIVATE_ENCRYPTION_KEY=${documensoEncryptionKey}`,
- `NEXT_PRIVATE_ENCRYPTION_SECONDARY_KEY=${documensoSecondaryEncryptionKey}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/doublezero/docker-compose.yml b/apps/dokploy/templates/doublezero/docker-compose.yml
deleted file mode 100644
index 35247033..00000000
--- a/apps/dokploy/templates/doublezero/docker-compose.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-services:
- doublezero:
- restart: always
- image: liltechnomancer/double-zero:0.2.1
- volumes:
- - db-data:/var/lib/doublezero/data
- environment:
- AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
- AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
- AWS_REGION: ${AWS_REGION}
- SQS_URL: ${SQS_URL}
- SYSTEM_EMAIL: ${SYSTEM_EMAIL}
- SECRET_KEY_BASE: ${SECRET_KEY_BASE}
- PHX_HOST: ${DOUBLEZERO_HOST}
- DATABASE_PATH: ./00.db
-
-volumes:
- db-data:
- driver: local
diff --git a/apps/dokploy/templates/doublezero/index.ts b/apps/dokploy/templates/doublezero/index.ts
deleted file mode 100644
index fa774e9d..00000000
--- a/apps/dokploy/templates/doublezero/index.ts
+++ /dev/null
@@ -1,36 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretKeyBase = generateBase64(64);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 4000,
- serviceName: "doublezero",
- },
- ];
-
- const envs = [
- `DOUBLEZERO_HOST=${mainDomain}`,
- "DOUBLEZERO_PORT=4000",
- `SECRET_KEY_BASE=${secretKeyBase}`,
- "AWS_ACCESS_KEY_ID=your-aws-access-key",
- "AWS_SECRET_ACCESS_KEY=your-aws-secret-key",
- "AWS_REGION=your-aws-region",
- "SQS_URL=your-aws-sqs-url",
- "SYSTEM_EMAIL=",
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/drawio/docker-compose.yml b/apps/dokploy/templates/drawio/docker-compose.yml
deleted file mode 100644
index a7d7b578..00000000
--- a/apps/dokploy/templates/drawio/docker-compose.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-version: '3'
-services:
- plantuml-server:
- image: plantuml/plantuml-server
- ports:
- - "8080"
-
- volumes:
- - fonts_volume:/usr/share/fonts/drawio
- image-export:
- image: jgraph/export-server
- ports:
- - "8000"
-
- volumes:
- - fonts_volume:/usr/share/fonts/drawio
- environment:
- - DRAWIO_BASE_URL=${DRAWIO_BASE_URL}
- drawio:
- image: jgraph/drawio:24.7.17
- ports:
- - "8080"
- links:
- - plantuml-server:plantuml-server
- - image-export:image-export
- depends_on:
- - plantuml-server
- - image-export
-
- environment:
- RAWIO_SELF_CONTAINED: 1
- DRAWIO_USE_HTTP: 1
- PLANTUML_URL: http://plantuml-server:8080/
- EXPORT_URL: http://image-export:8000/
- DRAWIO_BASE_URL: ${DRAWIO_BASE_URL}
- DRAWIO_SERVER_URL: ${DRAWIO_SERVER_URL}
- DRAWIO_CSP_HEADER: ${DRAWIO_CSP_HEADER}
- DRAWIO_VIEWER_URL: ${DRAWIO_VIEWER_URL}
- DRAWIO_LIGHTBOX_URL: ${DRAWIO_LIGHTBOX_URL}
- DRAWIO_CONFIG: ${DRAWIO_CONFIG}
- DRAWIO_GOOGLE_CLIENT_ID: ${DRAWIO_GOOGLE_CLIENT_ID}
- DRAWIO_GOOGLE_APP_ID: ${DRAWIO_GOOGLE_APP_ID}
- DRAWIO_GOOGLE_CLIENT_SECRET: ${DRAWIO_GOOGLE_CLIENT_SECRET}
- DRAWIO_GOOGLE_VIEWER_CLIENT_ID: ${DRAWIO_GOOGLE_VIEWER_CLIENT_ID}
- DRAWIO_GOOGLE_VIEWER_APP_ID: ${DRAWIO_GOOGLE_VIEWER_APP_ID}
- DRAWIO_GOOGLE_VIEWER_CLIENT_SECRET: ${DRAWIO_GOOGLE_VIEWER_CLIENT_SECRET}
- DRAWIO_MSGRAPH_CLIENT_ID: ${DRAWIO_MSGRAPH_CLIENT_ID}
- DRAWIO_MSGRAPH_CLIENT_SECRET: ${DRAWIO_MSGRAPH_CLIENT_SECRET}
- DRAWIO_MSGRAPH_TENANT_ID: ${DRAWIO_MSGRAPH_TENANT_ID}
- DRAWIO_GITLAB_ID: ${DRAWIO_GITLAB_ID}
- DRAWIO_GITLAB_SECRET: ${DRAWIO_GITLAB_SECRET}
- DRAWIO_GITLAB_URL: ${DRAWIO_GITLAB_URL}
- DRAWIO_CLOUD_CONVERT_APIKEY: ${DRAWIO_CLOUD_CONVERT_APIKEY}
-networks:
- dokploy-network:
- external: true
-
-volumes:
- fonts_volume:
\ No newline at end of file
diff --git a/apps/dokploy/templates/drawio/index.ts b/apps/dokploy/templates/drawio/index.ts
deleted file mode 100644
index 701283c8..00000000
--- a/apps/dokploy/templates/drawio/index.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const _secretKeyBase = generateBase64(64);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "drawio",
- },
- ];
-
- const envs = [
- `DRAWIO_HOST=${mainDomain}`,
- `DRAWIO_BASE_URL=https://${mainDomain}`,
- `DRAWIO_SERVER_URL=https://${mainDomain}/`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/elastic-search/docker-compose.yml b/apps/dokploy/templates/elastic-search/docker-compose.yml
deleted file mode 100644
index 929006ff..00000000
--- a/apps/dokploy/templates/elastic-search/docker-compose.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-version: '3.8'
-
-services:
- elasticsearch:
- image: docker.elastic.co/elasticsearch/elasticsearch:8.10.2
- container_name: elasticsearch
- environment:
- - discovery.type=single-node
- - xpack.security.enabled=false
- - bootstrap.memory_lock=true
- - ES_JAVA_OPTS=-Xms512m -Xmx512m
- ulimits:
- memlock:
- soft: -1
- hard: -1
- ports:
- - "9200"
- volumes:
- - es_data:/usr/share/elasticsearch/data
-
- kibana:
- image: docker.elastic.co/kibana/kibana:8.10.2
- container_name: kibana
- environment:
- - ELASTICSEARCH_HOSTS=http://elasticsearch:9200
- ports:
- - "5601"
- depends_on:
- - elasticsearch
-
-volumes:
- es_data:
- driver: local
-
\ No newline at end of file
diff --git a/apps/dokploy/templates/elastic-search/index.ts b/apps/dokploy/templates/elastic-search/index.ts
deleted file mode 100644
index 5a3a31e1..00000000
--- a/apps/dokploy/templates/elastic-search/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const apiDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 5601,
- serviceName: "kibana",
- },
- {
- host: apiDomain,
- port: 9200,
- serviceName: "elasticsearch",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/erpnext/docker-compose.yml b/apps/dokploy/templates/erpnext/docker-compose.yml
deleted file mode 100644
index 28cd8f6a..00000000
--- a/apps/dokploy/templates/erpnext/docker-compose.yml
+++ /dev/null
@@ -1,354 +0,0 @@
-x-custom-image: &custom_image
- image: ${IMAGE_NAME:-docker.io/frappe/erpnext}:${VERSION:-version-15}
- pull_policy: ${PULL_POLICY:-always}
- deploy:
- restart_policy:
- condition: always
-
-services:
- backend:
- <<: *custom_image
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:8000'
- interval: 2s
- timeout: 10s
- retries: 30
-
- frontend:
- <<: *custom_image
- command:
- - nginx-entrypoint.sh
- depends_on:
- backend:
- condition: service_started
- required: true
- websocket:
- condition: service_started
- required: true
- environment:
- BACKEND: backend:8000
- FRAPPE_SITE_NAME_HEADER: ${FRAPPE_SITE_NAME_HEADER:-$$host}
- SOCKETIO: websocket:9000
- UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
- UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
- UPSTREAM_REAL_IP_RECURSIVE: "off"
- volumes:
- - sites:/home/frappe/frappe-bench/sites
-
- networks:
- - bench-network
-
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:8080'
- interval: 2s
- timeout: 30s
- retries: 30
-
- queue-default:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - default
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- queue-long:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - long
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- queue-short:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - short
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- scheduler:
- <<: *custom_image
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- command:
- - bench
- - schedule
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- websocket:
- <<: *custom_image
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:9000'
- interval: 2s
- timeout: 10s
- retries: 30
- command:
- - node
- - /home/frappe/frappe-bench/apps/frappe/socketio.js
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- configurator:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${CONFIGURE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- [[ $${REGENERATE_APPS_TXT} == "1" ]] && ls -1 apps > sites/apps.txt;
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && exit 0;
- bench set-config -g db_host $$DB_HOST;
- bench set-config -gp db_port $$DB_PORT;
- bench set-config -g redis_cache "redis://$$REDIS_CACHE";
- bench set-config -g redis_queue "redis://$$REDIS_QUEUE";
- bench set-config -g redis_socketio "redis://$$REDIS_QUEUE";
- bench set-config -gp socketio_port $$SOCKETIO_PORT;
- environment:
- DB_HOST: "${DB_HOST:-db}"
- DB_PORT: "3306"
- REDIS_CACHE: redis-cache:6379
- REDIS_QUEUE: redis-queue:6379
- SOCKETIO_PORT: "9000"
- REGENERATE_APPS_TXT: "${REGENERATE_APPS_TXT:-0}"
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- create-site:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${CREATE_SITE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- wait-for-it -t 120 $$DB_HOST:$$DB_PORT;
- wait-for-it -t 120 redis-cache:6379;
- wait-for-it -t 120 redis-queue:6379;
- export start=`date +%s`;
- until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]];
- do
- echo "Waiting for sites/common_site_config.json to be created";
- sleep 5;
- if (( `date +%s`-start > 120 )); then
- echo "could not find sites/common_site_config.json with required keys";
- exit 1
- fi
- done;
- echo "sites/common_site_config.json found";
- [[ -d "sites/${SITE_NAME}" ]] && echo "${SITE_NAME} already exists" && exit 0;
- bench new-site --mariadb-user-host-login-scope='%' --admin-password=$${ADMIN_PASSWORD} --db-root-username=root --db-root-password=$${DB_ROOT_PASSWORD} $${INSTALL_APP_ARGS} $${SITE_NAME};
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- environment:
- SITE_NAME: ${SITE_NAME}
- ADMIN_PASSWORD: ${ADMIN_PASSWORD}
- DB_HOST: ${DB_HOST:-db}
- DB_PORT: "${DB_PORT:-3306}"
- DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
- INSTALL_APP_ARGS: ${INSTALL_APP_ARGS}
- networks:
- - bench-network
-
- migration:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${MIGRATE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- curl -f http://${SITE_NAME}:8080/api/method/ping || echo "Site busy" && exit 0;
- bench --site all set-config -p maintenance_mode 1;
- bench --site all set-config -p pause_scheduler 1;
- bench --site all migrate;
- bench --site all set-config -p maintenance_mode 0;
- bench --site all set-config -p pause_scheduler 0;
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- db:
- image: mariadb:10.6
- deploy:
- mode: replicated
- replicas: ${ENABLE_DB:-0}
- restart_policy:
- condition: always
- healthcheck:
- test: mysqladmin ping -h localhost --password=${DB_ROOT_PASSWORD}
- interval: 1s
- retries: 20
- command:
- - --character-set-server=utf8mb4
- - --collation-server=utf8mb4_unicode_ci
- - --skip-character-set-client-handshake
- - --skip-innodb-read-only-compressed
- environment:
- - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- volumes:
- - db-data:/var/lib/mysql
- networks:
- - bench-network
-
- redis-cache:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-cache-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
- redis-queue:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-queue-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
- redis-socketio:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-socketio-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
-volumes:
- db-data:
- redis-cache-data:
- redis-queue-data:
- redis-socketio-data:
- sites:
- driver_opts:
- type: "${SITE_VOLUME_TYPE}"
- o: "${SITE_VOLUME_OPTS}"
- device: "${SITE_VOLUME_DEV}"
-
-networks:
- bench-network:
\ No newline at end of file
diff --git a/apps/dokploy/templates/erpnext/index.ts b/apps/dokploy/templates/erpnext/index.ts
deleted file mode 100644
index 5b7543b9..00000000
--- a/apps/dokploy/templates/erpnext/index.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const dbRootPassword = generatePassword(32);
- const adminPassword = generatePassword(32);
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "frontend",
- },
- ];
-
- const envs = [
- `SITE_NAME=${mainDomain}`,
- `ADMIN_PASSWORD=${adminPassword}`,
- `DB_ROOT_PASSWORD=${dbRootPassword}`,
- "MIGRATE=1",
- "ENABLE_DB=1",
- "DB_HOST=db",
- "CREATE_SITE=1",
- "CONFIGURE=1",
- "REGENERATE_APPS_TXT=1",
- "INSTALL_APP_ARGS=--install-app erpnext",
- "IMAGE_NAME=docker.io/frappe/erpnext",
- "VERSION=version-15",
- "FRAPPE_SITE_NAME_HEADER=",
- ];
-
- return { envs, domains };
-}
diff --git a/apps/dokploy/templates/evolutionapi/docker-compose.yml b/apps/dokploy/templates/evolutionapi/docker-compose.yml
deleted file mode 100644
index d4803de1..00000000
--- a/apps/dokploy/templates/evolutionapi/docker-compose.yml
+++ /dev/null
@@ -1,58 +0,0 @@
-services:
- evolution-api:
- image: atendai/evolution-api:v2.1.2
- restart: always
- volumes:
- - evolution-instances:/evolution/instances
-
- environment:
- - SERVER_URL=${SERVER_URL}
- - AUTHENTICATION_TYPE=${AUTHENTICATION_TYPE}
- - AUTHENTICATION_API_KEY=${AUTHENTICATION_API_KEY}
- - AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=${AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES}
- - LANGUAGE=${LANGUAGE}
- - CONFIG_SESSION_PHONE_CLIENT=${CONFIG_SESSION_PHONE_CLIENT}
- - CONFIG_SESSION_PHONE_NAME=${CONFIG_SESSION_PHONE_NAME}
- - TELEMETRY=${TELEMETRY}
- - TELEMETRY_URL=${TELEMETRY_URL}
- - DATABASE_ENABLED=${DATABASE_ENABLED}
- - DATABASE_PROVIDER=${DATABASE_PROVIDER}
- - DATABASE_CONNECTION_URI=${DATABASE_CONNECTION_URI}
- - DATABASE_SAVE_DATA_INSTANCE=${DATABASE_SAVE_DATA_INSTANCE}
- - DATABASE_SAVE_DATA_NEW_MESSAGE=${DATABASE_SAVE_DATA_NEW_MESSAGE}
- - DATABASE_SAVE_MESSAGE_UPDATE=${DATABASE_SAVE_MESSAGE_UPDATE}
- - DATABASE_SAVE_DATA_CONTACTS=${DATABASE_SAVE_DATA_CONTACTS}
- - DATABASE_SAVE_DATA_CHATS=${DATABASE_SAVE_DATA_CHATS}
- - DATABASE_SAVE_DATA_LABELS=${DATABASE_SAVE_DATA_LABELS}
- - DATABASE_SAVE_DATA_HISTORIC=${DATABASE_SAVE_DATA_HISTORIC}
- - CACHE_REDIS_ENABLED=${CACHE_REDIS_ENABLED}
- - CACHE_REDIS_URI=${CACHE_REDIS_URI}
- - CACHE_REDIS_PREFIX_KEY=${CACHE_REDIS_PREFIX_KEY}
- - CACHE_REDIS_SAVE_INSTANCES=${CACHE_REDIS_SAVE_INSTANCES}
-
- evolution-postgres:
- image: postgres:16-alpine
- restart: always
- volumes:
- - evolution-postgres-data:/var/lib/postgresql/data
-
- environment:
- - POSTGRES_DB=${POSTGRES_DATABASE}
- - POSTGRES_USER=${POSTGRES_USERNAME}
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
-
- evolution-redis:
- image: redis:alpine
- restart: always
- volumes:
- - evolution-redis-data:/data
-
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- evolution-instances:
- evolution-postgres-data:
- evolution-redis-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/evolutionapi/index.ts b/apps/dokploy/templates/evolutionapi/index.ts
deleted file mode 100644
index 6ca7a3b6..00000000
--- a/apps/dokploy/templates/evolutionapi/index.ts
+++ /dev/null
@@ -1,59 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const apiKey = generateBase64(64);
- const postgresPassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "evolution-api",
- },
- ];
-
- const envs = [
- `SERVER_URL=https://${mainDomain}`,
- "AUTHENTICATION_TYPE=apikey",
- `AUTHENTICATION_API_KEY=${apiKey}`,
- "AUTHENTICATION_EXPOSE_IN_FETCH_INSTANCES=true",
-
- "LANGUAGE=en",
- "CONFIG_SESSION_PHONE_CLIENT=Evolution API",
- "CONFIG_SESSION_PHONE_NAME=Chrome",
- "TELEMETRY=false",
- "TELEMETRY_URL=",
-
- "POSTGRES_DATABASE=evolution",
- "POSTGRES_USERNAME=postgresql",
- `POSTGRES_PASSWORD=${postgresPassword}`,
- "DATABASE_ENABLED=true",
- "DATABASE_PROVIDER=postgresql",
- `DATABASE_CONNECTION_URI=postgres://postgresql:${postgresPassword}@evolution-postgres:5432/evolution`,
- "DATABASE_SAVE_DATA_INSTANCE=true",
- "DATABASE_SAVE_DATA_NEW_MESSAGE=true",
- "DATABASE_SAVE_MESSAGE_UPDATE=true",
- "DATABASE_SAVE_DATA_CONTACTS=true",
- "DATABASE_SAVE_DATA_CHATS=true",
- "DATABASE_SAVE_DATA_LABELS=true",
- "DATABASE_SAVE_DATA_HISTORIC=true",
-
- "CACHE_REDIS_ENABLED=true",
- "CACHE_REDIS_URI=redis://evolution-redis:6379",
- "CACHE_REDIS_PREFIX_KEY=evolution",
- "CACHE_REDIS_SAVE_INSTANCES=true",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/excalidraw/docker-compose.yml b/apps/dokploy/templates/excalidraw/docker-compose.yml
deleted file mode 100644
index 3cf2fb1d..00000000
--- a/apps/dokploy/templates/excalidraw/docker-compose.yml
+++ /dev/null
@@ -1,6 +0,0 @@
-version: "3.8"
-
-services:
- excalidraw:
-
- image: excalidraw/excalidraw:latest
diff --git a/apps/dokploy/templates/excalidraw/index.ts b/apps/dokploy/templates/excalidraw/index.ts
deleted file mode 100644
index 7f73f395..00000000
--- a/apps/dokploy/templates/excalidraw/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "excalidraw",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/filebrowser/docker-compose.yml b/apps/dokploy/templates/filebrowser/docker-compose.yml
deleted file mode 100644
index 10c11909..00000000
--- a/apps/dokploy/templates/filebrowser/docker-compose.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-services:
- filebrowser:
- image: hurlenko/filebrowser
- volumes:
- - filebrowser-data:/data
- - filebrowser-config:/config
- environment:
- - FB_BASEURL=${FB_BASEURL}
- restart: always
-
-volumes:
- filebrowser-data:
- filebrowser-config:
-
\ No newline at end of file
diff --git a/apps/dokploy/templates/filebrowser/index.ts b/apps/dokploy/templates/filebrowser/index.ts
deleted file mode 100644
index c30519f1..00000000
--- a/apps/dokploy/templates/filebrowser/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "filebrowser",
- },
- ];
- const envs = ["FB_BASEURL=/filebrowser"];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/formbricks/docker-compose.yml b/apps/dokploy/templates/formbricks/docker-compose.yml
deleted file mode 100644
index ad1dcbcf..00000000
--- a/apps/dokploy/templates/formbricks/docker-compose.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-x-environment: &environment
- environment:
- WEBAPP_URL: ${WEBAPP_URL}
- NEXTAUTH_URL: ${NEXTAUTH_URL}
- DATABASE_URL: "postgresql://postgres:postgres@postgres:5432/formbricks?schema=public"
- NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
- ENCRYPTION_KEY: ${ENCRYPTION_KEY}
- CRON_SECRET: ${CRON_SECRET}
- EMAIL_VERIFICATION_DISABLED: 1
- PASSWORD_RESET_DISABLED: 1
- S3_FORCE_PATH_STYLE: 0
-
-services:
- postgres:
- restart: always
- image: pgvector/pgvector:pg17
- volumes:
- - postgres:/var/lib/postgresql/data
- environment:
- - POSTGRES_PASSWORD=postgres
-
-
- formbricks:
- restart: always
- image: ghcr.io/formbricks/formbricks:v3.1.3
- depends_on:
- - postgres
- ports:
- - 3000
- volumes:
- - ../files/uploads:/home/nextjs/apps/web/uploads/
- <<: *environment
-
-volumes:
- postgres:
- driver: local
- uploads:
diff --git a/apps/dokploy/templates/formbricks/index.ts b/apps/dokploy/templates/formbricks/index.ts
deleted file mode 100644
index fc179f49..00000000
--- a/apps/dokploy/templates/formbricks/index.ts
+++ /dev/null
@@ -1,38 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretBase = generateBase64(64);
- const encryptionKey = generateBase64(48);
- const cronSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "formbricks",
- },
- ];
-
- const envs = [
- `WEBAPP_URL=http://${mainDomain}`,
- `NEXTAUTH_URL=http://${mainDomain}`,
- `NEXTAUTH_SECRET=${secretBase}`,
- `ENCRYPTION_KEY=${encryptionKey}`,
- `CRON_SECRET=${cronSecret}`,
- ];
-
- const mounts: Template["mounts"] = [];
-
- return {
- envs,
- mounts,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/frappe-hr/docker-compose.yml b/apps/dokploy/templates/frappe-hr/docker-compose.yml
deleted file mode 100644
index a7ce9b26..00000000
--- a/apps/dokploy/templates/frappe-hr/docker-compose.yml
+++ /dev/null
@@ -1,354 +0,0 @@
-x-custom-image: &custom_image
- image: ${IMAGE_NAME:-ghcr.io/frappe/hrms}:${VERSION:-version-15}
- pull_policy: ${PULL_POLICY:-always}
- deploy:
- restart_policy:
- condition: always
-
-services:
- backend:
- <<: *custom_image
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:8000'
- interval: 2s
- timeout: 10s
- retries: 30
-
- frontend:
- <<: *custom_image
- command:
- - nginx-entrypoint.sh
- depends_on:
- backend:
- condition: service_started
- required: true
- websocket:
- condition: service_started
- required: true
- environment:
- BACKEND: backend:8000
- FRAPPE_SITE_NAME_HEADER: ${FRAPPE_SITE_NAME_HEADER:-$$host}
- SOCKETIO: websocket:9000
- UPSTREAM_REAL_IP_ADDRESS: 127.0.0.1
- UPSTREAM_REAL_IP_HEADER: X-Forwarded-For
- UPSTREAM_REAL_IP_RECURSIVE: "off"
- volumes:
- - sites:/home/frappe/frappe-bench/sites
-
- networks:
- - bench-network
-
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:8080'
- interval: 2s
- timeout: 30s
- retries: 30
-
- queue-default:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - default
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- queue-long:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - long
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- queue-short:
- <<: *custom_image
- command:
- - bench
- - worker
- - --queue
- - short
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
-
- scheduler:
- <<: *custom_image
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - 'redis-queue:6379'
- interval: 2s
- timeout: 10s
- retries: 30
- command:
- - bench
- - schedule
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- websocket:
- <<: *custom_image
- healthcheck:
- test:
- - CMD
- - wait-for-it
- - '0.0.0.0:9000'
- interval: 2s
- timeout: 10s
- retries: 30
- command:
- - node
- - /home/frappe/frappe-bench/apps/frappe/socketio.js
- depends_on:
- configurator:
- condition: service_completed_successfully
- required: true
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- configurator:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${CONFIGURE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- [[ $${REGENERATE_APPS_TXT} == "1" ]] && ls -1 apps > sites/apps.txt;
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && exit 0;
- bench set-config -g db_host $$DB_HOST;
- bench set-config -gp db_port $$DB_PORT;
- bench set-config -g redis_cache "redis://$$REDIS_CACHE";
- bench set-config -g redis_queue "redis://$$REDIS_QUEUE";
- bench set-config -g redis_socketio "redis://$$REDIS_QUEUE";
- bench set-config -gp socketio_port $$SOCKETIO_PORT;
- environment:
- DB_HOST: "${DB_HOST:-db}"
- DB_PORT: "3306"
- REDIS_CACHE: redis-cache:6379
- REDIS_QUEUE: redis-queue:6379
- SOCKETIO_PORT: "9000"
- REGENERATE_APPS_TXT: "${REGENERATE_APPS_TXT:-0}"
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- create-site:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${CREATE_SITE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- wait-for-it -t 120 $$DB_HOST:$$DB_PORT;
- wait-for-it -t 120 redis-cache:6379;
- wait-for-it -t 120 redis-queue:6379;
- export start=`date +%s`;
- until [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".db_host // empty"` ]] && \
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_cache // empty"` ]] && \
- [[ -n `grep -hs ^ sites/common_site_config.json | jq -r ".redis_queue // empty"` ]];
- do
- echo "Waiting for sites/common_site_config.json to be created";
- sleep 5;
- if (( `date +%s`-start > 120 )); then
- echo "could not find sites/common_site_config.json with required keys";
- exit 1
- fi
- done;
- echo "sites/common_site_config.json found";
- [[ -d "sites/${SITE_NAME}" ]] && echo "${SITE_NAME} already exists" && exit 0;
- bench new-site --mariadb-user-host-login-scope='%' --admin-password=$${ADMIN_PASSWORD} --db-root-username=root --db-root-password=$${DB_ROOT_PASSWORD} $${INSTALL_APP_ARGS} $${SITE_NAME};
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- environment:
- SITE_NAME: ${SITE_NAME}
- ADMIN_PASSWORD: ${ADMIN_PASSWORD}
- DB_HOST: ${DB_HOST:-db}
- DB_PORT: "${DB_PORT:-3306}"
- DB_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
- INSTALL_APP_ARGS: ${INSTALL_APP_ARGS}
- networks:
- - bench-network
-
- migration:
- <<: *custom_image
- deploy:
- mode: replicated
- replicas: ${MIGRATE:-0}
- restart_policy:
- condition: none
- entrypoint: ["bash", "-c"]
- command:
- - >
- curl -f http://${SITE_NAME}:8080/api/method/ping || echo "Site busy" && exit 0;
- bench --site all set-config -p maintenance_mode 1;
- bench --site all set-config -p pause_scheduler 1;
- bench --site all migrate;
- bench --site all set-config -p maintenance_mode 0;
- bench --site all set-config -p pause_scheduler 0;
- volumes:
- - sites:/home/frappe/frappe-bench/sites
- networks:
- - bench-network
-
- db:
- image: mariadb:10.6
- deploy:
- mode: replicated
- replicas: ${ENABLE_DB:-0}
- restart_policy:
- condition: always
- healthcheck:
- test: mysqladmin ping -h localhost --password=${DB_ROOT_PASSWORD}
- interval: 1s
- retries: 20
- command:
- - --character-set-server=utf8mb4
- - --collation-server=utf8mb4_unicode_ci
- - --skip-character-set-client-handshake
- - --skip-innodb-read-only-compressed
- environment:
- - MYSQL_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- - MARIADB_ROOT_PASSWORD=${DB_ROOT_PASSWORD}
- volumes:
- - db-data:/var/lib/mysql
- networks:
- - bench-network
-
- redis-cache:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-cache-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
- redis-queue:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-queue-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
- redis-socketio:
- deploy:
- restart_policy:
- condition: always
- image: redis:6.2-alpine
- volumes:
- - redis-socketio-data:/data
- networks:
- - bench-network
- healthcheck:
- test:
- - CMD
- - redis-cli
- - ping
- interval: 5s
- timeout: 5s
- retries: 3
-
-volumes:
- db-data:
- redis-cache-data:
- redis-queue-data:
- redis-socketio-data:
- sites:
- driver_opts:
- type: "${SITE_VOLUME_TYPE}"
- o: "${SITE_VOLUME_OPTS}"
- device: "${SITE_VOLUME_DEV}"
-
-networks:
- bench-network:
\ No newline at end of file
diff --git a/apps/dokploy/templates/frappe-hr/index.ts b/apps/dokploy/templates/frappe-hr/index.ts
deleted file mode 100644
index 1e6b9474..00000000
--- a/apps/dokploy/templates/frappe-hr/index.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const dbRootPassword = generatePassword(32);
- const adminPassword = generatePassword(32);
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "frontend",
- },
- ];
-
- const envs = [
- `SITE_NAME=${mainDomain}`,
- `ADMIN_PASSWORD=${adminPassword}`,
- `DB_ROOT_PASSWORD=${dbRootPassword}`,
- "MIGRATE=1",
- "ENABLE_DB=1",
- "DB_HOST=db",
- "CREATE_SITE=1",
- "CONFIGURE=1",
- "REGENERATE_APPS_TXT=1",
- "INSTALL_APP_ARGS=--install-app hrms",
- "IMAGE_NAME=ghcr.io/frappe/hrms",
- "VERSION=version-15",
- "FRAPPE_SITE_NAME_HEADER=",
- ];
-
- return { envs, domains };
-}
diff --git a/apps/dokploy/templates/ghost/docker-compose.yml b/apps/dokploy/templates/ghost/docker-compose.yml
deleted file mode 100644
index 33c47f7f..00000000
--- a/apps/dokploy/templates/ghost/docker-compose.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-version: "3.8"
-services:
- ghost:
- image: ghost:5-alpine
- restart: always
- environment:
- database__client: mysql
- database__connection__host: db
- database__connection__user: root
- database__connection__password: example
- database__connection__database: ghost
- url: http://${GHOST_HOST}
-
- volumes:
- - ghost:/var/lib/ghost/content
-
- db:
- image: mysql:8.0
- restart: always
-
- environment:
- MYSQL_ROOT_PASSWORD: example
- volumes:
- - db:/var/lib/mysql
-
-volumes:
- ghost:
- db:
diff --git a/apps/dokploy/templates/ghost/index.ts b/apps/dokploy/templates/ghost/index.ts
deleted file mode 100644
index 052b7c6b..00000000
--- a/apps/dokploy/templates/ghost/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 2368,
- serviceName: "ghost",
- },
- ];
- const envs = [`GHOST_HOST=${mainDomain}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/gitea/docker-compose.yml b/apps/dokploy/templates/gitea/docker-compose.yml
deleted file mode 100644
index 5127224c..00000000
--- a/apps/dokploy/templates/gitea/docker-compose.yml
+++ /dev/null
@@ -1,35 +0,0 @@
-version: "3.8"
-services:
- gitea:
- image: gitea/gitea:1.22.3
- environment:
- - USER_UID=${USER_UID}
- - USER_GID=${USER_GID}
- - GITEA__database__DB_TYPE=postgres
- - GITEA__database__HOST=db:5432
- - GITEA__database__NAME=gitea
- - GITEA__database__USER=gitea
- - GITEA__database__PASSWD=gitea
- restart: always
-
- volumes:
- - gitea_server:/data
- - /etc/timezone:/etc/timezone:ro
- - /etc/localtime:/etc/localtime:ro
- depends_on:
- - db
-
- db:
- image: postgres:17
- restart: always
- environment:
- - POSTGRES_USER=gitea
- - POSTGRES_PASSWORD=gitea
- - POSTGRES_DB=gitea
-
- volumes:
- - gitea_db:/var/lib/postgresql/data
-
-volumes:
- gitea_db:
- gitea_server:
\ No newline at end of file
diff --git a/apps/dokploy/templates/gitea/index.ts b/apps/dokploy/templates/gitea/index.ts
deleted file mode 100644
index 92a20df6..00000000
--- a/apps/dokploy/templates/gitea/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "gitea",
- },
- ];
- const envs = ["USER_UID=1000", "USER_GID=1000"];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/glance/docker-compose.yml b/apps/dokploy/templates/glance/docker-compose.yml
deleted file mode 100644
index ace8bc94..00000000
--- a/apps/dokploy/templates/glance/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-services:
- glance:
- image: glanceapp/glance
- volumes:
- - ../files/app/config/:/app/config
- - ../files/app/assets:/app/assets
- # Optionally, also mount docker socket if you want to use the docker containers widget
- # - /var/run/docker.sock:/var/run/docker.sock:ro
- ports:
- - 8080
- env_file: .env
\ No newline at end of file
diff --git a/apps/dokploy/templates/glance/index.ts b/apps/dokploy/templates/glance/index.ts
deleted file mode 100644
index a0ab1b67..00000000
--- a/apps/dokploy/templates/glance/index.ts
+++ /dev/null
@@ -1,108 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "glance",
- },
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/app/config/glance.yml",
- content: `
-branding:
- hide-footer: true
- logo-text: P
-
-pages:
- - name: Home
- columns:
- - size: small
- widgets:
- - type: calendar
-
- - type: releases
- show-source-icon: true
- repositories:
- - Dokploy/dokploy
- - n8n-io/n8n
- - Budibase/budibase
- - home-assistant/core
- - tidbyt/pixlet
-
- - type: twitch-channels
- channels:
- - nmplol
- - extraemily
- - qtcinderella
- - ludwig
- - timthetatman
- - mizkif
-
- - size: full
- widgets:
- - type: hacker-news
-
- - type: videos
- style: grid-cards
- channels:
- - UC3GzdWYwUYI1ACxuP9Nm-eg
- - UCGbg3DjQdcqWwqOLHpYHXIg
- - UC24RSoLcjiNZbQcT54j5l7Q
- limit: 3
-
- - type: rss
- limit: 10
- collapse-after: 3
- cache: 3h
- feeds:
- - url: https://daringfireball.net/feeds/main
- title: Daring Fireball
-
- - size: small
- widgets:
- - type: weather
- location: Gansevoort, New York, United States
- show-area-name: false
- units: imperial
- hour-format: 12h
-
- - type: markets
- markets:
- - symbol: SPY
- name: S&P 500
- - symbol: VOO
- name: Vanguard
- - symbol: BTC-USD
- name: Bitcoin
- - symbol: ETH-USD
- name: Etherium
- - symbol: NVDA
- name: NVIDIA
- - symbol: AAPL
- name: Apple
- - symbol: MSFT
- name: Microsoft
- - symbol: GOOGL
- name: Google
- - symbol: AMD
- name: AMD
- - symbol: TSLA
- name: Tesla`,
- },
- ];
-
- return {
- domains,
- mounts,
- };
-}
diff --git a/apps/dokploy/templates/glitchtip/docker-compose.yml b/apps/dokploy/templates/glitchtip/docker-compose.yml
deleted file mode 100644
index f47742f0..00000000
--- a/apps/dokploy/templates/glitchtip/docker-compose.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-x-environment: &default-environment
- DATABASE_URL: postgres://postgres:postgres@postgres:5432/postgres
- SECRET_KEY: ${SECRET_KEY}
- PORT: ${GLITCHTIP_PORT}
- EMAIL_URL: consolemail://
- GLITCHTIP_DOMAIN: http://${GLITCHTIP_HOST}
- DEFAULT_FROM_EMAIL: email@glitchtip.com
- CELERY_WORKER_AUTOSCALE: "1,3"
- CELERY_WORKER_MAX_TASKS_PER_CHILD: "10000"
-
-x-depends_on: &default-depends_on
- - postgres
- - redis
-
-services:
- postgres:
- image: postgres:16
- environment:
- POSTGRES_HOST_AUTH_METHOD: "trust"
- restart: unless-stopped
- volumes:
- - pg-data:/var/lib/postgresql/data
-
- redis:
- image: redis
- restart: unless-stopped
-
- web:
- image: glitchtip/glitchtip:v4.0
- depends_on: *default-depends_on
- ports:
- - ${GLITCHTIP_PORT}
- environment: *default-environment
- restart: unless-stopped
- volumes:
- - uploads:/code/uploads
- worker:
- image: glitchtip/glitchtip:v4.0
- command: ./bin/run-celery-with-beat.sh
- depends_on: *default-depends_on
- environment: *default-environment
- restart: unless-stopped
- volumes:
- - uploads:/code/uploads
-
- migrate:
- image: glitchtip/glitchtip:v4.0
- depends_on: *default-depends_on
- command: "./manage.py migrate"
- environment: *default-environment
-
-
-volumes:
- pg-data:
- uploads:
diff --git a/apps/dokploy/templates/glitchtip/index.ts b/apps/dokploy/templates/glitchtip/index.ts
deleted file mode 100644
index 093d752e..00000000
--- a/apps/dokploy/templates/glitchtip/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretKey = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8000,
- serviceName: "web",
- },
- ];
- const envs = [
- `GLITCHTIP_HOST=${mainDomain}`,
- "GLITCHTIP_PORT=8000",
- `SECRET_KEY=${secretKey}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/glpi/docker-compose.yml b/apps/dokploy/templates/glpi/docker-compose.yml
deleted file mode 100644
index fa732fa3..00000000
--- a/apps/dokploy/templates/glpi/docker-compose.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-services:
- glpi-mysql:
- image: mysql:9.1.0
- restart: always
- volumes:
- - glpi-mysql-data:/var/lib/mysql
-
-
- glpi-web:
- image: elestio/glpi:10.0.16
- restart: always
- volumes:
- - /etc/timezone:/etc/timezone:ro
- - /etc/localtime:/etc/localtime:ro
- - glpi-www-data:/var/www/html/glpi
- environment:
- - TIMEZONE=Europe/Brussels
-
-
-volumes:
- glpi-mysql-data:
- glpi-www-data:
-
-networks:
- dokploy-network:
- external: true
\ No newline at end of file
diff --git a/apps/dokploy/templates/glpi/index.ts b/apps/dokploy/templates/glpi/index.ts
deleted file mode 100644
index 48695fb5..00000000
--- a/apps/dokploy/templates/glpi/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 80,
- serviceName: "glpi-web",
- },
- ];
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/gotenberg/docker-compose.yml b/apps/dokploy/templates/gotenberg/docker-compose.yml
deleted file mode 100644
index 02bbacb7..00000000
--- a/apps/dokploy/templates/gotenberg/docker-compose.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-services:
- gotenberg:
- image: gotenberg/gotenberg:latest
- environment:
- # NOTE: requires the --api-enable-basic-auth option in "command"
- # make sure to also change the credentials in Dokploy environment
- GOTENBERG_API_BASIC_AUTH_USERNAME: ${GOTENBERG_API_BASIC_AUTH_USERNAME}
- GOTENBERG_API_BASIC_AUTH_PASSWORD: ${GOTENBERG_API_BASIC_AUTH_PASSWORD}
- command: [
- "gotenberg",
- # See the full list of options at https://gotenberg.dev/docs/configuration
-
- # Examples:
- "--api-enable-basic-auth"
- #"--api-timeout=60s",
- #"--chromium-auto-start"
- ]
- restart: unless-stopped
\ No newline at end of file
diff --git a/apps/dokploy/templates/gotenberg/index.ts b/apps/dokploy/templates/gotenberg/index.ts
deleted file mode 100644
index ef48703e..00000000
--- a/apps/dokploy/templates/gotenberg/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const username = "gotenberg";
- const password = "changethis";
-
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 3000,
- serviceName: "gotenberg",
- },
- ];
-
- const envs = [
- `GOTENBERG_API_BASIC_AUTH_USERNAME=${username}`,
- `GOTENBERG_API_BASIC_AUTH_PASSWORD=${password}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/grafana/docker-compose.yml b/apps/dokploy/templates/grafana/docker-compose.yml
deleted file mode 100644
index 9d913c17..00000000
--- a/apps/dokploy/templates/grafana/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-version: "3.8"
-services:
- grafana:
- image: grafana/grafana-enterprise:9.5.20
- restart: unless-stopped
- volumes:
- - grafana-storage:/var/lib/grafana
-volumes:
- grafana-storage: {}
diff --git a/apps/dokploy/templates/grafana/index.ts b/apps/dokploy/templates/grafana/index.ts
deleted file mode 100644
index fb614ef3..00000000
--- a/apps/dokploy/templates/grafana/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 3000,
- serviceName: "grafana",
- },
- ];
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/heyform/docker-compose.yml b/apps/dokploy/templates/heyform/docker-compose.yml
deleted file mode 100644
index ec7e02fc..00000000
--- a/apps/dokploy/templates/heyform/docker-compose.yml
+++ /dev/null
@@ -1,48 +0,0 @@
-services:
- heyform:
- image: heyform/community-edition:latest
- restart: always
- volumes:
- # Persist uploaded images
- - heyform-data:/app/static/upload
- depends_on:
- - mongo
- - redis
- ports:
- - 8000
- env_file:
- - .env
- environment:
- MONGO_URI: 'mongodb://mongo:27017/heyform'
- REDIS_HOST: redis
- REDIS_PORT: 6379
- networks:
- - heyform-network
-
- mongo:
- image: percona/percona-server-mongodb:4.4
- restart: always
- networks:
- - heyform-network
- volumes:
- # Persist MongoDB data
- - mongo-data:/data/db
-
- redis:
- image: redis
- restart: always
- command: "redis-server --appendonly yes"
- networks:
- - heyform-network
- volumes:
- # Persist KeyDB data
- - redis-data:/data
-
-networks:
- heyform-network:
- driver: bridge
-
-volumes:
- heyform-data:
- mongo-data:
- redis-data:
diff --git a/apps/dokploy/templates/heyform/index.ts b/apps/dokploy/templates/heyform/index.ts
deleted file mode 100644
index 03ea4b92..00000000
--- a/apps/dokploy/templates/heyform/index.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const sessionKey = generateBase64(64);
- const formEncryptionKey = generateBase64(64);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8000,
- serviceName: "heyform",
- },
- ];
-
- const envs = [
- `APP_HOMEPAGE_URL=http://${mainDomain}`,
- `SESSION_KEY=${sessionKey}`,
- `FORM_ENCRYPTION_KEY=${formEncryptionKey}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/hi-events/docker-compose.yml b/apps/dokploy/templates/hi-events/docker-compose.yml
deleted file mode 100644
index cce45fec..00000000
--- a/apps/dokploy/templates/hi-events/docker-compose.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-services:
- all-in-one:
- image: daveearley/hi.events-all-in-one:v0.8.0-beta.1
- restart: always
- environment:
- - VITE_FRONTEND_URL=https://${DOMAIN}
- - APP_FRONTEND_URL=https://${DOMAIN}
- - VITE_API_URL_CLIENT=https://${DOMAIN}/api
- - VITE_API_URL_SERVER=http://localhost:80/api
- - VITE_STRIPE_PUBLISHABLE_KEY
- - LOG_CHANNEL=stderr
- - QUEUE_CONNECTION=sync
- - MAIL_MAILER=array
- - APP_KEY
- - JWT_SECRET
- - FILESYSTEM_PUBLIC_DISK=public
- - FILESYSTEM_PRIVATE_DISK=local
- - APP_CDN_URL=https://${DOMAIN}/storage
- - DATABASE_URL=postgresql://${POSTGRES_USER}:${POSTGRES_PASSWORD}@postgres:5432/${POSTGRES_DB}
- - MAIL_MAILER
- - MAIL_HOST
- - MAIL_PORT
- - MAIL_FROM_ADDRESS
- - MAIL_FROM_NAME
- depends_on:
- - postgres
-
- postgres:
- image: elestio/postgres:16
- restart: always
-
- environment:
- - POSTGRES_DB
- - POSTGRES_USER
- - POSTGRES_PASSWORD
- volumes:
- - pg_hi-events_data:/var/lib/postgresql/data
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- pg_hi-events_data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/hi-events/index.ts b/apps/dokploy/templates/hi-events/index.ts
deleted file mode 100644
index f799bb73..00000000
--- a/apps/dokploy/templates/hi-events/index.ts
+++ /dev/null
@@ -1,41 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 80,
- serviceName: "all-in-one",
- },
- ];
-
- const envs = [
- "# change domain here",
- "DOMAIN=my-events.com",
- "",
- "POSTGRES_DB=hievents",
- "POSTGRES_USER=hievents",
- "POSTGRES_PASSWORD=VERY_STRONG_PASSWORD",
- "",
- "VITE_STRIPE_PUBLISHABLE_KEY=",
- "",
- "APP_KEY=my-app-key",
- "JWT_SECRET=STRONG_JWT_SECRET",
- "",
- "MAIL_MAILER=",
- "MAIL_HOST=",
- "MAIL_PORT=",
- "MAIL_FROM_ADDRESS=",
- "MAIL_FROM_NAME=",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/hoarder/docker-compose.yml b/apps/dokploy/templates/hoarder/docker-compose.yml
deleted file mode 100644
index 93e59469..00000000
--- a/apps/dokploy/templates/hoarder/docker-compose.yml
+++ /dev/null
@@ -1,45 +0,0 @@
-services:
- web:
- image: ghcr.io/hoarder-app/hoarder:0.22.0
- restart: unless-stopped
- volumes:
- - hoarder-data:/data
- ports:
- - 3000
- environment:
- - DISABLE_SIGNUPS
- - NEXTAUTH_URL
- - NEXTAUTH_SECRET
- - MEILI_ADDR=http://meilisearch:7700
- - BROWSER_WEB_URL=http://chrome:9222
- - DATA_DIR=/data
- chrome:
- image: gcr.io/zenika-hub/alpine-chrome:124
- restart: unless-stopped
- command:
- - --no-sandbox
- - --disable-gpu
- - --disable-dev-shm-usage
- - --remote-debugging-address=0.0.0.0
- - --remote-debugging-port=9222
- - --hide-scrollbars
- meilisearch:
- image: getmeili/meilisearch:v1.6
- restart: unless-stopped
- environment:
- - MEILI_MASTER_KEY
- - MEILI_NO_ANALYTICS="true"
- volumes:
- - meilisearch-data:/meili_data
- healthcheck:
- test:
- - CMD
- - curl
- - '-f'
- - 'http://127.0.0.1:7700/health'
- interval: 2s
- timeout: 10s
- retries: 15
-volumes:
- meilisearch-data:
- hoarder-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/hoarder/index.ts b/apps/dokploy/templates/hoarder/index.ts
deleted file mode 100644
index d1c656e1..00000000
--- a/apps/dokploy/templates/hoarder/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
- const nextSecret = generateBase64(32);
- const meiliMasterKey = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "web",
- },
- ];
-
- const envs = [
- `NEXTAUTH_SECRET=${nextSecret}`,
- `MEILI_MASTER_KEY=${meiliMasterKey}`,
- `NEXTAUTH_URL=http://${mainDomain}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/homarr/docker-compose.yml b/apps/dokploy/templates/homarr/docker-compose.yml
deleted file mode 100644
index 876ea3f6..00000000
--- a/apps/dokploy/templates/homarr/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-services:
- homarr:
- image: ghcr.io/homarr-labs/homarr:latest
- restart: unless-stopped
- volumes:
- # - /var/run/docker.sock:/var/run/docker.sock # Optional, only if you want docker integration
- - ../homarr/appdata:/appdata
- environment:
- - SECRET_ENCRYPTION_KEY=${SECRET_ENCRYPTION_KEY}
- ports:
- - 7575
diff --git a/apps/dokploy/templates/homarr/index.ts b/apps/dokploy/templates/homarr/index.ts
deleted file mode 100644
index eb5a9f82..00000000
--- a/apps/dokploy/templates/homarr/index.ts
+++ /dev/null
@@ -1,27 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretKey = generatePassword(64);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 7575,
- serviceName: "homarr",
- },
- ];
-
- const envs = [`SECRET_ENCRYPTION_KEY=${secretKey}`];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/huly/docker-compose.yml b/apps/dokploy/templates/huly/docker-compose.yml
deleted file mode 100644
index 639b10d2..00000000
--- a/apps/dokploy/templates/huly/docker-compose.yml
+++ /dev/null
@@ -1,172 +0,0 @@
-name: ${DOCKER_NAME}
-version: "3"
-services:
- nginx:
-
- image: "nginx:1.21.3"
- ports:
- - 80
- volumes:
- - ../files/volumes/nginx/.huly.nginx:/etc/nginx/conf.d/default.conf
- restart: unless-stopped
-
- mongodb:
-
- image: "mongo:7-jammy"
- environment:
- - PUID=1000
- - PGID=1000
- volumes:
- - db:/data/db
- restart: unless-stopped
-
- minio:
-
- image: "minio/minio:RELEASE.2024-11-07T00-52-20Z"
- command: server /data --address ":9000" --console-address ":9001"
- volumes:
- - files:/data
- restart: unless-stopped
-
- elastic:
-
- image: "elasticsearch:7.14.2"
- command: |
- /bin/sh -c "./bin/elasticsearch-plugin list | grep -q ingest-attachment || yes | ./bin/elasticsearch-plugin install --silent ingest-attachment;
- /usr/local/bin/docker-entrypoint.sh eswrapper"
- volumes:
- - elastic:/usr/share/elasticsearch/data
- environment:
- - ELASTICSEARCH_PORT_NUMBER=9200
- - BITNAMI_DEBUG=true
- - discovery.type=single-node
- - ES_JAVA_OPTS=-Xms1024m -Xmx1024m
- - http.cors.enabled=true
- - http.cors.allow-origin=http://localhost:8082
- healthcheck:
- interval: 20s
- retries: 10
- test: curl -s http://localhost:9200/_cluster/health | grep -vq '"status":"red"'
- restart: unless-stopped
-
- rekoni:
-
- image: hardcoreeng/rekoni-service:${HULY_VERSION}
- environment:
- - SECRET=${SECRET}
- deploy:
- resources:
- limits:
- memory: 500M
- restart: unless-stopped
-
- transactor:
-
- image: hardcoreeng/transactor:${HULY_VERSION}
- environment:
- - SERVER_PORT=3333
- - SERVER_SECRET=${SECRET}
- - SERVER_CURSOR_MAXTIMEMS=30000
- - DB_URL=mongodb://mongodb:27017
- - MONGO_URL=mongodb://mongodb:27017
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- - FRONT_URL=http://localhost:8087
- - ACCOUNTS_URL=http://account:3000
- - FULLTEXT_URL=http://fulltext:4700
- - STATS_URL=http://stats:4900
- - LAST_NAME_FIRST=${LAST_NAME_FIRST:-true}
- restart: unless-stopped
-
- collaborator:
-
- image: hardcoreeng/collaborator:${HULY_VERSION}
- environment:
- - COLLABORATOR_PORT=3078
- - SECRET=${SECRET}
- - ACCOUNTS_URL=http://account:3000
- - DB_URL=mongodb://mongodb:27017
- - STATS_URL=http://stats:4900
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- restart: unless-stopped
-
- account:
-
- image: hardcoreeng/account:${HULY_VERSION}
- environment:
- - SERVER_PORT=3000
- - SERVER_SECRET=${SECRET}
- - DB_URL=mongodb://mongodb:27017
- - MONGO_URL=mongodb://mongodb:27017
- - TRANSACTOR_URL=ws://transactor:3333;ws${SECURE:+s}://${HOST_ADDRESS}/_transactor
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- - FRONT_URL=http://front:8080
- - STATS_URL=http://stats:4900
- - MODEL_ENABLED=*
- - ACCOUNTS_URL=http://localhost:3000
- - ACCOUNT_PORT=3000
- restart: unless-stopped
-
- workspace:
-
- image: hardcoreeng/workspace:${HULY_VERSION}
- environment:
- - SERVER_SECRET=${SECRET}
- - DB_URL=mongodb://mongodb:27017
- - MONGO_URL=mongodb://mongodb:27017
- - TRANSACTOR_URL=ws://transactor:3333;ws${SECURE:+s}://${HOST_ADDRESS}/_transactor
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- - MODEL_ENABLED=*
- - ACCOUNTS_URL=http://account:3000
- - STATS_URL=http://stats:4900
- restart: unless-stopped
-
- front:
-
- image: hardcoreeng/front:${HULY_VERSION}
- environment:
- - SERVER_PORT=8080
- - SERVER_SECRET=${SECRET}
- - LOVE_ENDPOINT=http${SECURE:+s}://${HOST_ADDRESS}/_love
- - ACCOUNTS_URL=http${SECURE:+s}://${HOST_ADDRESS}/_accounts
- - REKONI_URL=http${SECURE:+s}://${HOST_ADDRESS}/_rekoni
- - CALENDAR_URL=http${SECURE:+s}://${HOST_ADDRESS}/_calendar
- - GMAIL_URL=http${SECURE:+s}://${HOST_ADDRESS}/_gmail
- - TELEGRAM_URL=http${SECURE:+s}://${HOST_ADDRESS}/_telegram
- - STATS_URL=http${SECURE:+s}://${HOST_ADDRESS}/_stats
- - UPLOAD_URL=/files
- - ELASTIC_URL=http://elastic:9200
- - COLLABORATOR_URL=ws${SECURE:+s}://${HOST_ADDRESS}/_collaborator
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- - DB_URL=mongodb://mongodb:27017
- - MONGO_URL=mongodb://mongodb:27017
- - TITLE=${TITLE:-Huly Self Host}
- - DEFAULT_LANGUAGE=${DEFAULT_LANGUAGE:-en}
- - LAST_NAME_FIRST=${LAST_NAME_FIRST:-true}
- - DESKTOP_UPDATES_CHANNEL=selfhost
- restart: unless-stopped
-
- fulltext:
-
- image: hardcoreeng/fulltext:${HULY_VERSION}
- environment:
- - SERVER_SECRET=${SECRET}
- - DB_URL=mongodb://mongodb:27017
- - FULLTEXT_DB_URL=http://elastic:9200
- - ELASTIC_INDEX_NAME=huly_storage_index
- - STORAGE_CONFIG=minio|minio?accessKey=minioadmin&secretKey=minioadmin
- - REKONI_URL=http://rekoni:4004
- - ACCOUNTS_URL=http://account:3000
- - STATS_URL=http://stats:4900
- restart: unless-stopped
-
- stats:
-
- image: hardcoreeng/stats:${HULY_VERSION}
- environment:
- - PORT=4900
- - SERVER_SECRET=${SECRET}
- restart: unless-stopped
-volumes:
- db:
- elastic:
- files:
diff --git a/apps/dokploy/templates/huly/index.ts b/apps/dokploy/templates/huly/index.ts
deleted file mode 100644
index 3157ed51..00000000
--- a/apps/dokploy/templates/huly/index.ts
+++ /dev/null
@@ -1,152 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const hulySecret = generateBase64(64);
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "nginx",
- },
- ];
-
- const envs = [
- "HULY_VERSION=v0.6.377",
- "DOCKER_NAME=huly",
- "",
- "# The address of the host or server from which you will access your Huly instance.",
- "# This can be a domain name (e.g., huly.example.com) or an IP address (e.g., 192.168.1.1).",
- `HOST_ADDRESS=${mainDomain}`,
- "",
- "# Set this variable to 'true' to enable SSL (HTTPS/WSS). ",
- "# Leave it empty to use non-SSL (HTTP/WS).",
- "SECURE=",
- "",
- "# Specify the IP address to bind to; leave blank to bind to all interfaces (0.0.0.0).",
- "# Do not use IP:PORT format in HTTP_BIND or HTTP_PORT.",
- "HTTP_PORT=80",
- "HTTP_BIND=",
- "",
- "# Huly specific variables",
- "TITLE=Huly",
- "DEFAULT_LANGUAGE=en",
- "LAST_NAME_FIRST=true",
- "",
- "# The following configs are auto-generated by the setup script. ",
- "# Please do not manually overwrite.",
- "",
- "# Run with --secret to regenerate.",
- `SECRET=${hulySecret}`,
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/volumes/nginx/.huly.nginx",
- content: `server {
- listen 80;
- server_name _;
- location / {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
- proxy_pass http://front:8080;
- }
-
- location /_accounts {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- rewrite ^/_accounts(/.*)$ $1 break;
- proxy_pass http://account:3000/;
- }
-
- #location /_love {
- # proxy_set_header Host $host;
- # proxy_set_header X-Real-IP $remote_addr;
- # proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- # proxy_set_header X-Forwarded-Proto $scheme;
-
- # proxy_http_version 1.1;
- # proxy_set_header Upgrade $http_upgrade;
- # proxy_set_header Connection "upgrade";
- # rewrite ^/_love(/.*)$ $1 break;
- # proxy_pass http://love:8096/;
- #}
-
- location /_collaborator {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- rewrite ^/_collaborator(/.*)$ $1 break;
- proxy_pass http://collaborator:3078/;
- }
-
- location /_transactor {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- rewrite ^/_transactor(/.*)$ $1 break;
- proxy_pass http://transactor:3333/;
- }
-
- location ~ ^/eyJ {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- proxy_http_version 1.1;
- proxy_set_header Upgrade $http_upgrade;
- proxy_set_header Connection "upgrade";
- proxy_pass http://transactor:3333;
- }
-
- location /_rekoni {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- rewrite ^/_rekoni(/.*)$ $1 break;
- proxy_pass http://rekoni:4004/;
- }
-
- location /_stats {
- proxy_set_header Host $host;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- proxy_set_header X-Forwarded-Proto $scheme;
-
- rewrite ^/_stats(/.*)$ $1 break;
- proxy_pass http://stats:4900/;
- }
-}`,
- },
- ];
-
- return {
- domains,
- envs,
- mounts,
- };
-}
diff --git a/apps/dokploy/templates/immich/docker-compose.yml b/apps/dokploy/templates/immich/docker-compose.yml
deleted file mode 100644
index 743f70ac..00000000
--- a/apps/dokploy/templates/immich/docker-compose.yml
+++ /dev/null
@@ -1,107 +0,0 @@
-version: "3.9"
-
-services:
- immich-server:
- image: ghcr.io/immich-app/immich-server:v1.121.0
-
- volumes:
- - immich-library:/usr/src/app/upload
- - /etc/localtime:/etc/localtime:ro
- depends_on:
- immich-redis:
- condition: service_healthy
- immich-database:
- condition: service_healthy
- environment:
- PORT: 2283
- SERVER_URL: ${SERVER_URL}
- FRONT_BASE_URL: ${FRONT_BASE_URL}
- # Database Configuration
- DB_HOSTNAME: ${DB_HOSTNAME}
- DB_PORT: ${DB_PORT}
- DB_USERNAME: ${DB_USERNAME}
- DB_PASSWORD: ${DB_PASSWORD}
- DB_DATABASE_NAME: ${DB_DATABASE_NAME}
- # Redis Configuration
- REDIS_HOSTNAME: ${REDIS_HOSTNAME}
- REDIS_PORT: ${REDIS_PORT}
- REDIS_DBINDEX: ${REDIS_DBINDEX}
- # Server Configuration
- TZ: ${TZ}
- restart: always
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:2283/server-info/ping"]
- interval: 30s
- timeout: 10s
- retries: 3
-
- immich-machine-learning:
- image: ghcr.io/immich-app/immich-machine-learning:v1.121.0
-
- volumes:
- - immich-model-cache:/cache
- environment:
- REDIS_HOSTNAME: ${REDIS_HOSTNAME}
- REDIS_PORT: ${REDIS_PORT}
- REDIS_DBINDEX: ${REDIS_DBINDEX}
- restart: always
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:3003/ping"]
- interval: 30s
- timeout: 10s
- retries: 3
-
- immich-redis:
- image: redis:6.2-alpine
-
- volumes:
- - immich-redis-data:/data
- healthcheck:
- test: ["CMD", "redis-cli", "ping"]
- interval: 10s
- timeout: 5s
- retries: 5
- restart: always
-
- immich-database:
- image: tensorchord/pgvecto-rs:pg14-v0.2.0
-
- volumes:
- - immich-postgres:/var/lib/postgresql/data
- environment:
- POSTGRES_PASSWORD: ${DB_PASSWORD}
- POSTGRES_USER: ${DB_USERNAME}
- POSTGRES_DB: immich
- POSTGRES_INITDB_ARGS: '--data-checksums'
- healthcheck:
- test: pg_isready -U ${DB_USERNAME} -d immich || exit 1
- interval: 10s
- timeout: 5s
- retries: 5
- command:
- [
- 'postgres',
- '-c',
- 'shared_preload_libraries=vectors.so',
- '-c',
- 'search_path="$$user", public, vectors',
- '-c',
- 'logging_collector=on',
- '-c',
- 'max_wal_size=2GB',
- '-c',
- 'shared_buffers=512MB',
- '-c',
- 'wal_compression=on',
- ]
- restart: always
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- immich-model-cache:
- immich-postgres:
- immich-library:
- immich-redis-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/immich/index.ts b/apps/dokploy/templates/immich/index.ts
deleted file mode 100644
index 4beca87d..00000000
--- a/apps/dokploy/templates/immich/index.ts
+++ /dev/null
@@ -1,46 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dbPassword = generatePassword();
- const dbUser = "immich";
- const _appSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 2283,
- serviceName: "immich-server",
- },
- ];
-
- const envs = [
- `IMMICH_HOST=${mainDomain}`,
- `SERVER_URL=https://${mainDomain}`,
- `FRONT_BASE_URL=https://${mainDomain}`,
- "# Database Configuration",
- "DB_HOSTNAME=immich-database",
- "DB_PORT=5432",
- `DB_USERNAME=${dbUser}`,
- `DB_PASSWORD=${dbPassword}`,
- "DB_DATABASE_NAME=immich",
- "# Redis Configuration",
- "REDIS_HOSTNAME=immich-redis",
- "REDIS_PORT=6379",
- "REDIS_DBINDEX=0",
- "# Server Configuration",
- "TZ=UTC",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/infisical/docker-compose.yml b/apps/dokploy/templates/infisical/docker-compose.yml
deleted file mode 100644
index 7566c898..00000000
--- a/apps/dokploy/templates/infisical/docker-compose.yml
+++ /dev/null
@@ -1,83 +0,0 @@
-services:
- db-migration:
- depends_on:
- db:
- condition: service_healthy
- image: infisical/infisical:v0.90.1-postgres
- environment:
- - NODE_ENV=production
- - ENCRYPTION_KEY
- - AUTH_SECRET
- - SITE_URL
- - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- - REDIS_URL=redis://redis:6379
- - SMTP_HOST
- - SMTP_PORT
- - SMTP_FROM_NAME
- - SMTP_USERNAME
- - SMTP_PASSWORD
- - SMTP_SECURE=true
- command: npm run migration:latest
- pull_policy: always
-
-
- backend:
- restart: unless-stopped
- depends_on:
- db:
- condition: service_healthy
- redis:
- condition: service_started
- db-migration:
- condition: service_completed_successfully
- image: infisical/infisical:v0.90.1-postgres
- pull_policy: always
- environment:
- - NODE_ENV=production
- - ENCRYPTION_KEY
- - AUTH_SECRET
- - SITE_URL
- - DB_CONNECTION_URI=postgres://${POSTGRES_USER}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB}
- - REDIS_URL=redis://redis:6379
- - SMTP_HOST
- - SMTP_PORT
- - SMTP_FROM_NAME
- - SMTP_USERNAME
- - SMTP_PASSWORD
- - SMTP_SECURE=true
-
-
- redis:
- image: redis:7.4.1
- env_file: .env
- restart: always
- environment:
- - ALLOW_EMPTY_PASSWORD=yes
-
- volumes:
- - redis_infisical_data:/data
-
- db:
- image: postgres:14-alpine
- restart: always
- environment:
- - POSTGRES_PASSWORD
- - POSTGRES_USER
- - POSTGRES_DB
- volumes:
- - pg_infisical_data:/var/lib/postgresql/data
-
- healthcheck:
- test: "pg_isready --username=${POSTGRES_USER} && psql --username=${POSTGRES_USER} --list"
- interval: 5s
- timeout: 10s
- retries: 10
-
-volumes:
- pg_infisical_data:
- redis_infisical_data:
-
-networks:
- dokploy-network:
- external: true
-
diff --git a/apps/dokploy/templates/infisical/index.ts b/apps/dokploy/templates/infisical/index.ts
deleted file mode 100644
index 6d212774..00000000
--- a/apps/dokploy/templates/infisical/index.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8080,
- serviceName: "backend",
- },
- ];
-
- const envs = [
- "# THIS IS A SAMPLE ENCRYPTION KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
- "ENCRYPTION_KEY=6c1fe4e407b8911c104518103505b218",
- "",
- "# THIS IS A SAMPLE AUTH_SECRET KEY AND SHOULD NEVER BE USED FOR PRODUCTION",
- "AUTH_SECRET=5lrMXKKWCVocS/uerPsl7V+TX/aaUaI7iDkgl3tSmLE=",
- "# Postgres creds",
- "POSTGRES_PASSWORD=infisical",
- "POSTGRES_USER=infisical",
- "POSTGRES_DB=infisical",
- "",
- "# Website URL",
- "# Required",
- "SITE_URL=http://localhost:8080",
- "",
- "# Mail/SMTP",
- "SMTP_HOST=",
- "SMTP_PORT=",
- "SMTP_NAME=",
- "SMTP_USERNAME=",
- "SMTP_PASSWORD=",
- "",
- "# Integration",
- "# Optional only if integration is used",
- "CLIENT_ID_HEROKU=",
- "CLIENT_ID_VERCEL=",
- "CLIENT_ID_NETLIFY=",
- "CLIENT_ID_GITHUB=",
- "CLIENT_ID_GITHUB_APP=",
- "CLIENT_SLUG_GITHUB_APP=",
- "CLIENT_ID_GITLAB=",
- "CLIENT_ID_BITBUCKET=",
- "CLIENT_SECRET_HEROKU=",
- "CLIENT_SECRET_VERCEL=",
- "CLIENT_SECRET_NETLIFY=",
- "CLIENT_SECRET_GITHUB=",
- "CLIENT_SECRET_GITHUB_APP=",
- "CLIENT_SECRET_GITLAB=",
- "CLIENT_SECRET_BITBUCKET=",
- "CLIENT_SLUG_VERCEL=",
- "",
- "CLIENT_PRIVATE_KEY_GITHUB_APP=",
- "CLIENT_APP_ID_GITHUB_APP=",
- "",
- "# Sentry (optional) for monitoring errors",
- "SENTRY_DSN=",
- "",
- "# Infisical Cloud-specific configs",
- "# Ignore - Not applicable for self-hosted version",
- "POSTHOG_HOST=",
- "POSTHOG_PROJECT_API_KEY=",
- "",
- "# SSO-specific variables",
- "CLIENT_ID_GOOGLE_LOGIN=",
- "CLIENT_SECRET_GOOGLE_LOGIN=",
- "",
- "CLIENT_ID_GITHUB_LOGIN=",
- "CLIENT_SECRET_GITHUB_LOGIN=",
- "",
- "CLIENT_ID_GITLAB_LOGIN=",
- "CLIENT_SECRET_GITLAB_LOGIN=",
- "",
- "CAPTCHA_SECRET=",
- "",
- "NEXT_PUBLIC_CAPTCHA_SITE_KEY=",
- "",
- "PLAIN_API_KEY=",
- "PLAIN_WISH_LABEL_IDS=",
- "",
- "SSL_CLIENT_CERTIFICATE_HEADER_KEY=",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/influxdb/docker-compose.yml b/apps/dokploy/templates/influxdb/docker-compose.yml
deleted file mode 100644
index 1327c602..00000000
--- a/apps/dokploy/templates/influxdb/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-services:
- influxdb:
- image: influxdb:2.7.10
- restart: unless-stopped
- volumes:
- - influxdb2-data:/var/lib/influxdb2
- - influxdb2-config:/etc/influxdb2
-
-volumes:
- influxdb2-data:
- influxdb2-config:
\ No newline at end of file
diff --git a/apps/dokploy/templates/influxdb/index.ts b/apps/dokploy/templates/influxdb/index.ts
deleted file mode 100644
index 550b680e..00000000
--- a/apps/dokploy/templates/influxdb/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8086,
- serviceName: "influxdb",
- },
- ];
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/invoiceshelf/docker-compose.yml b/apps/dokploy/templates/invoiceshelf/docker-compose.yml
deleted file mode 100644
index ef47f1c0..00000000
--- a/apps/dokploy/templates/invoiceshelf/docker-compose.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-version: "3.8"
-
-services:
- invoiceshelf-postgres:
- image: postgres:15
-
- volumes:
- - invoiceshelf-postgres-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_PASSWORD=${DB_PASSWORD}
- - POSTGRES_USER=${DB_USERNAME}
- - POSTGRES_DB=${DB_DATABASE}
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U ${DB_USERNAME}"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- invoiceshelf-app:
- image: invoiceshelf/invoiceshelf:latest
-
- volumes:
- - invoiceshelf-app-data:/data
- - invoiceshelf-app-conf:/conf
- environment:
- - PHP_TZ=UTC
- - TIMEZONE=UTC
- - APP_NAME=InvoiceShelf
- - APP_ENV=production
- - APP_DEBUG=false
- - APP_URL=http://${INVOICESHELF_HOST}
- - DB_CONNECTION=pgsql
- - DB_HOST=invoiceshelf-postgres
- - DB_PORT=5432
- - DB_DATABASE=${DB_DATABASE}
- - DB_USERNAME=${DB_USERNAME}
- - DB_PASSWORD=${DB_PASSWORD}
- - CACHE_STORE=file
- - SESSION_DRIVER=file
- - SESSION_LIFETIME=120
- - SESSION_ENCRYPT=true
- - SESSION_PATH=/
- - SESSION_DOMAIN=${INVOICESHELF_HOST}
- - SANCTUM_STATEFUL_DOMAINS=${INVOICESHELF_HOST}
- - STARTUP_DELAY=10
- depends_on:
- invoiceshelf-postgres:
- condition: service_healthy
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- invoiceshelf-postgres-data:
- invoiceshelf-app-data:
- invoiceshelf-app-conf:
\ No newline at end of file
diff --git a/apps/dokploy/templates/invoiceshelf/index.ts b/apps/dokploy/templates/invoiceshelf/index.ts
deleted file mode 100644
index a83ebf07..00000000
--- a/apps/dokploy/templates/invoiceshelf/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dbPassword = generatePassword();
- const dbUsername = "invoiceshelf";
- const dbDatabase = "invoiceshelf";
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "invoiceshelf-app",
- },
- ];
-
- const envs = [
- `INVOICESHELF_HOST=${mainDomain}`,
- `DB_PASSWORD=${dbPassword}`,
- `DB_USERNAME=${dbUsername}`,
- `DB_DATABASE=${dbDatabase}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/it-tools/docker-compose.yml b/apps/dokploy/templates/it-tools/docker-compose.yml
deleted file mode 100644
index b26665f8..00000000
--- a/apps/dokploy/templates/it-tools/docker-compose.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-services:
- it-tools:
- image: corentinth/it-tools:latest
- healthcheck:
- test: ["CMD", "curl", "-f", "http://127.0.0.1:80"]
- interval: 30s
- timeout: 10s
- retries: 3
diff --git a/apps/dokploy/templates/it-tools/index.ts b/apps/dokploy/templates/it-tools/index.ts
deleted file mode 100644
index 9912c4ba..00000000
--- a/apps/dokploy/templates/it-tools/index.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 80,
- serviceName: "it-tools",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/jellyfin/docker-compose.yml b/apps/dokploy/templates/jellyfin/docker-compose.yml
deleted file mode 100644
index cb61476a..00000000
--- a/apps/dokploy/templates/jellyfin/docker-compose.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-version: "3.8"
-services:
- jellyfin:
- image: jellyfin/jellyfin:10
- volumes:
- - config:/config
- - cache:/cache
- - media:/media
- restart: "unless-stopped"
- # Optional - alternative address used for autodiscovery
- environment:
- - JELLYFIN_PublishedServerUrl=http://${JELLYFIN_HOST}
- # Optional - may be necessary for docker healthcheck to pass if running in host network mode
- extra_hosts:
- - "host.docker.internal:host-gateway"
-volumes:
- config:
- cache:
- media:
diff --git a/apps/dokploy/templates/jellyfin/index.ts b/apps/dokploy/templates/jellyfin/index.ts
deleted file mode 100644
index 61c9c9b7..00000000
--- a/apps/dokploy/templates/jellyfin/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-// EXAMPLE
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domain = generateRandomDomain(schema);
- const domains: DomainSchema[] = [
- {
- host: domain,
- port: 8096,
- serviceName: "jellyfin",
- },
- ];
-
- const envs = [`JELLYFIN_HOST=${domain}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/kimai/docker-compose.yml b/apps/dokploy/templates/kimai/docker-compose.yml
deleted file mode 100644
index 253ecb00..00000000
--- a/apps/dokploy/templates/kimai/docker-compose.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-services:
- app:
- image: kimai/kimai2:apache-2.26.0
- restart: unless-stopped
- environment:
- APP_ENV: prod
- DATABASE_URL: mysql://kimai:${KI_MYSQL_PASSWORD:-kimai}@db/kimai
- TRUSTED_PROXIES: localhost
- APP_SECRET: ${KI_APP_SECRET}
- MAILER_FROM: ${KI_MAILER_FROM:-admin@kimai.local}
- MAILER_URL: ${KI_MAILER_URL:-null://null}
- ADMINMAIL: ${KI_ADMINMAIL:-admin@kimai.local}
- ADMINPASS: ${KI_ADMINPASS}
- volumes:
- - kimai-data:/opt/kimai/var
- depends_on:
- db:
- condition: service_healthy
-
- db:
- image: mariadb:10.11
- restart: unless-stopped
- environment:
- - MYSQL_DATABASE=kimai
- - MYSQL_USER=kimai
- - MYSQL_PASSWORD=${KI_MYSQL_PASSWORD}
- - MYSQL_ROOT_PASSWORD=${KI_MYSQL_ROOT_PASSWORD}
- volumes:
- - mysql-data:/var/lib/mysql
- command:
- - --character-set-server=utf8mb4
- - --collation-server=utf8mb4_unicode_ci
- - --innodb-buffer-pool-size=256M
- - --innodb-flush-log-at-trx-commit=2
- healthcheck:
- test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "kimai", "-p${KI_MYSQL_PASSWORD}"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 30s
-
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- kimai-data:
- mysql-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/kimai/index.ts b/apps/dokploy/templates/kimai/index.ts
deleted file mode 100644
index 5569905e..00000000
--- a/apps/dokploy/templates/kimai/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domain = generateRandomDomain(schema);
- const domains: DomainSchema[] = [
- {
- host: domain,
- port: 8001,
- serviceName: "app",
- },
- ];
-
- const adminPassword = generatePassword(32);
- const mysqlPassword = generatePassword(32);
- const mysqlRootPassword = generatePassword(32);
- const appSecret = generatePassword(32);
-
- const envs = [
- `KI_HOST=${domain}`,
- "KI_ADMINMAIL=admin@kimai.local",
- `KI_ADMINPASS=${adminPassword}`,
- `KI_MYSQL_ROOT_PASSWORD=${mysqlRootPassword}`,
- `KI_MYSQL_PASSWORD=${mysqlPassword}`,
- `KI_APP_SECRET=${appSecret}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/langflow/docker-compose.yml b/apps/dokploy/templates/langflow/docker-compose.yml
deleted file mode 100644
index a9628286..00000000
--- a/apps/dokploy/templates/langflow/docker-compose.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-version: "3.8"
-
-services:
- langflow:
- image: langflowai/langflow:v1.1.1
- ports:
- - 7860
- depends_on:
- - postgres-langflow
- environment:
- - LANGFLOW_DATABASE_URL=postgresql://${DB_USERNAME}:${DB_PASSWORD}@postgres-langflow:5432/langflow
- # This variable defines where the logs, file storage, monitor data and secret keys are stored.
- volumes:
- - langflow-data:/app/langflow
-
-
- postgres-langflow:
- image: postgres:16
- environment:
- POSTGRES_USER: ${DB_USERNAME}
- POSTGRES_PASSWORD: ${DB_PASSWORD}
- POSTGRES_DB: langflow
- ports:
- - 5432
- volumes:
- - langflow-postgres:/var/lib/postgresql/data
-
-
-volumes:
- langflow-postgres:
- langflow-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/langflow/index.ts b/apps/dokploy/templates/langflow/index.ts
deleted file mode 100644
index 75f6db58..00000000
--- a/apps/dokploy/templates/langflow/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dbPassword = generatePassword();
- const dbUsername = "langflow";
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 7860,
- serviceName: "langflow",
- },
- ];
-
- const envs = [`DB_PASSWORD=${dbPassword}`, `DB_USERNAME=${dbUsername}`];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/linkwarden/docker-compose.yml b/apps/dokploy/templates/linkwarden/docker-compose.yml
deleted file mode 100644
index 05ffb8a0..00000000
--- a/apps/dokploy/templates/linkwarden/docker-compose.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-services:
- linkwarden:
- environment:
- - NEXTAUTH_SECRET
- - NEXTAUTH_URL
- - DATABASE_URL=postgresql://linkwarden:${POSTGRES_PASSWORD}@postgres:5432/linkwarden
- restart: unless-stopped
- image: ghcr.io/linkwarden/linkwarden:v2.9.3
- ports:
- - 3000
- volumes:
- - linkwarden-data:/data/data
- depends_on:
- - postgres
- healthcheck:
- test: curl --fail http://localhost:3000 || exit 1
- interval: 60s
- retries: 2
- start_period: 60s
- timeout: 15s
-
- postgres:
- image: postgres:17-alpine
- restart: unless-stopped
- user: postgres
- environment:
- POSTGRES_USER: linkwarden
- POSTGRES_DB: linkwarden
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- volumes:
- - postgres-data:/var/lib/postgresql/data
- healthcheck:
- test: ["CMD-SHELL", "pg_isready"]
- interval: 10s
- timeout: 5s
- retries: 5
-
-volumes:
- linkwarden-data:
- postgres-data:
diff --git a/apps/dokploy/templates/linkwarden/index.ts b/apps/dokploy/templates/linkwarden/index.ts
deleted file mode 100644
index 86025035..00000000
--- a/apps/dokploy/templates/linkwarden/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
- const nextSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "linkwarden",
- },
- ];
-
- const envs = [
- `POSTGRES_PASSWORD=${postgresPassword}`,
- `NEXTAUTH_SECRET=${nextSecret}`,
- `NEXTAUTH_URL=http://${mainDomain}/api/v1/auth`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/listmonk/docker-compose.yml b/apps/dokploy/templates/listmonk/docker-compose.yml
deleted file mode 100644
index d9da8b50..00000000
--- a/apps/dokploy/templates/listmonk/docker-compose.yml
+++ /dev/null
@@ -1,49 +0,0 @@
-services:
- db:
- image: postgres:17-alpine
- ports:
- - 5432
-
- environment:
- - POSTGRES_PASSWORD=listmonk
- - POSTGRES_USER=listmonk
- - POSTGRES_DB=listmonk
- restart: unless-stopped
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U listmonk"]
- interval: 10s
- timeout: 5s
- retries: 6
- volumes:
- - listmonk-data:/var/lib/postgresql/data
-
- setup:
- image: listmonk/listmonk:v4.1.0
-
- volumes:
- - ../files/config.toml:/listmonk/config.toml
- depends_on:
- - db
- command:
- [
- sh,
- -c,
- "sleep 3 && ./listmonk --install --idempotent --yes --config config.toml",
- ]
-
- app:
- restart: unless-stopped
- image: listmonk/listmonk:v4.1.0
- environment:
- - TZ=Etc/UTC
- depends_on:
- - db
- - setup
- volumes:
- - ../files/config.toml:/listmonk/config.toml
- - listmonk-uploads:/listmonk/uploads
-
-volumes:
- listmonk-uploads:
- listmonk-data:
- driver: local
diff --git a/apps/dokploy/templates/listmonk/index.ts b/apps/dokploy/templates/listmonk/index.ts
deleted file mode 100644
index 2a25efca..00000000
--- a/apps/dokploy/templates/listmonk/index.ts
+++ /dev/null
@@ -1,52 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 9000,
- serviceName: "app",
- },
- ];
-
- const envs = [
- "# visit the page to setup your super admin user",
- "# check config.toml in Advanced / Volumes for more options",
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "config.toml",
- content: `[app]
-address = "0.0.0.0:9000"
-
-[db]
-host = "db"
-port = 5432
-user = "listmonk"
-password = "listmonk"
-database = "listmonk"
-
-ssl_mode = "disable"
-max_open = 25
-max_idle = 25
-max_lifetime = "300s"
-
-params = ""
-`,
- },
- ];
-
- return {
- envs,
- mounts,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/lobe-chat/docker-compose.yml b/apps/dokploy/templates/lobe-chat/docker-compose.yml
deleted file mode 100644
index 67614090..00000000
--- a/apps/dokploy/templates/lobe-chat/docker-compose.yml
+++ /dev/null
@@ -1,12 +0,0 @@
-version: '3.8'
-
-services:
- lobe-chat:
- image: lobehub/lobe-chat:v1.26.1
- restart: always
- ports:
- - 3210
- environment:
- OPENAI_API_KEY: sk-xxxx
- OPENAI_PROXY_URL: https://api-proxy.com/v1
- ACCESS_CODE: lobe66
\ No newline at end of file
diff --git a/apps/dokploy/templates/lobe-chat/index.ts b/apps/dokploy/templates/lobe-chat/index.ts
deleted file mode 100644
index a07a4e09..00000000
--- a/apps/dokploy/templates/lobe-chat/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3210,
- serviceName: "lobe-chat",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/logto/docker-compose.yml b/apps/dokploy/templates/logto/docker-compose.yml
deleted file mode 100644
index 6f2b920a..00000000
--- a/apps/dokploy/templates/logto/docker-compose.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-services:
- app:
- depends_on:
- postgres:
- condition: service_healthy
- image: svhd/logto:1.22.0
- entrypoint: ["sh", "-c", "npm run cli db seed -- --swe && npm start"]
- ports:
- - 3001
- - 3002
-
- environment:
- TRUST_PROXY_HEADER: 1
- DB_URL: postgres://logto:${LOGTO_POSTGRES_PASSWORD}@postgres:5432/logto
- ENDPOINT: ${LOGTO_ENDPOINT}
- ADMIN_ENDPOINT: ${LOGTO_ADMIN_ENDPOINT}
- volumes:
- - logto-connectors:/etc/logto/packages/core/connectors
- postgres:
- image: postgres:17-alpine
- user: postgres
-
- environment:
- POSTGRES_USER: logto
- POSTGRES_PASSWORD: ${LOGTO_POSTGRES_PASSWORD}
- volumes:
- - postgres-data:/var/lib/postgresql/data
- healthcheck:
- test: ["CMD-SHELL", "pg_isready"]
- interval: 10s
- timeout: 5s
- retries: 5
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- logto-connectors:
- postgres-data:
diff --git a/apps/dokploy/templates/logto/index.ts b/apps/dokploy/templates/logto/index.ts
deleted file mode 100644
index 09b099d8..00000000
--- a/apps/dokploy/templates/logto/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const adminDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3001,
- serviceName: "app",
- },
- {
- host: adminDomain,
- port: 3002,
- serviceName: "app",
- },
- ];
-
- const envs = [
- `LOGTO_ENDPOINT=http://${adminDomain}`,
- `LOGTO_ADMIN_ENDPOINT=http://${adminDomain}`,
- `LOGTO_POSTGRES_PASSWORD=${postgresPassword}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/macos/docker-compose.yml b/apps/dokploy/templates/macos/docker-compose.yml
deleted file mode 100644
index 585c1bf9..00000000
--- a/apps/dokploy/templates/macos/docker-compose.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-services:
- macos:
- image: dockurr/macos:1.14
- volumes:
- - macos-storage:/storage
- environment:
- - VERSION
- devices:
- # If in .env string 'KVM=N' is not commented, you need to comment line below
- - /dev/kvm
- cap_add:
- - NET_ADMIN
- stop_grace_period: 2m
-
-volumes:
- macos-storage:
\ No newline at end of file
diff --git a/apps/dokploy/templates/macos/index.ts b/apps/dokploy/templates/macos/index.ts
deleted file mode 100644
index ebda4106..00000000
--- a/apps/dokploy/templates/macos/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8006,
- serviceName: "macos",
- },
- ];
-
- const envs = [
- "# https://github.com/dockur/macos?tab=readme-ov-file#how-do-i-select-the-macos-version",
- "VERSION=15",
- "",
- "# Uncomment this if your PC/VM or etc does not support virtualization technology",
- "# KVM=N",
- "",
- "DISK_SIZE=64G",
- "RAM_SIZE=4G",
- "CPU_CORES=2",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/mailpit/docker-compose.yml b/apps/dokploy/templates/mailpit/docker-compose.yml
deleted file mode 100644
index d0dbdb8e..00000000
--- a/apps/dokploy/templates/mailpit/docker-compose.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-services:
- mailpit:
- image: axllent/mailpit:v1.22.3
- restart: unless-stopped
- ports:
- - '1025:1025'
- volumes:
- - 'mailpit-data:/data'
- environment:
- - MP_SMTP_AUTH_ALLOW_INSECURE=true
- - MP_MAX_MESSAGES=5000
- - MP_DATABASE=/data/mailpit.db
- - MP_UI_AUTH=${MP_UI_AUTH}
- - MP_SMTP_AUTH=${MP_SMTP_AUTH}
- healthcheck:
- test:
- - CMD
- - /mailpit
- - readyz
- interval: 5s
- timeout: 20s
- retries: 10
-
-volumes:
- mailpit-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/mailpit/index.ts b/apps/dokploy/templates/mailpit/index.ts
deleted file mode 100644
index 25f18f7e..00000000
--- a/apps/dokploy/templates/mailpit/index.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 8025,
- serviceName: "mailpit",
- },
- ];
-
- const defaultPassword = generatePassword();
-
- const envs = [
- "# Uncomment below if you want basic auth on UI and SMTP",
- `#MP_UI_AUTH=mailpit:${defaultPassword}`,
- `#MP_SMTP_AUTH=mailpit:${defaultPassword}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/maybe/docker-compose.yml b/apps/dokploy/templates/maybe/docker-compose.yml
deleted file mode 100644
index db529e0a..00000000
--- a/apps/dokploy/templates/maybe/docker-compose.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-services:
- app:
- image: ghcr.io/maybe-finance/maybe:sha-68c570eed8810fd59b5b33cca51bbad5eabb4cb4
- restart: unless-stopped
- volumes:
- - ../files/uploads:/app/uploads
- environment:
- DATABASE_URL: postgresql://maybe:maybe@db:5432/maybe
- SECRET_KEY_BASE: ${SECRET_KEY_BASE}
- SELF_HOSTED: true
- SYNTH_API_KEY: ${SYNTH_API_KEY}
- RAILS_FORCE_SSL: "false"
- RAILS_ASSUME_SSL: "false"
- GOOD_JOB_EXECUTION_MODE: async
- depends_on:
- db:
- condition: service_healthy
-
- db:
- image: postgres:16
- restart: always
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
- interval: 5s
- timeout: 5s
- retries: 5
-
- volumes:
- - db-data:/var/lib/postgresql/data
- environment:
- POSTGRES_DB: maybe
- POSTGRES_USER: maybe
- POSTGRES_PASSWORD: maybe
-
-volumes:
- db-data:
diff --git a/apps/dokploy/templates/maybe/index.ts b/apps/dokploy/templates/maybe/index.ts
deleted file mode 100644
index 5eaf7a81..00000000
--- a/apps/dokploy/templates/maybe/index.ts
+++ /dev/null
@@ -1,43 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretKeyBase = generateBase64(64);
- const synthApiKey = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "app",
- },
- ];
-
- const envs = [
- `SECRET_KEY_BASE=${secretKeyBase}`,
- "SELF_HOSTED=true",
- `SYNTH_API_KEY=${synthApiKey}`,
- "RAILS_FORCE_SSL=false",
- "RAILS_ASSUME_SSL=false",
- "GOOD_JOB_EXECUTION_MODE=async",
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "./uploads",
- content: "This is where user uploads will be stored",
- },
- ];
-
- return {
- envs,
- mounts,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/meilisearch/docker-compose.yml b/apps/dokploy/templates/meilisearch/docker-compose.yml
deleted file mode 100644
index ae5ebcb1..00000000
--- a/apps/dokploy/templates/meilisearch/docker-compose.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-version: "3.8"
-
-services:
- meilisearch:
- image: getmeili/meilisearch:v1.8.3
- volumes:
- - meili_data:/meili_data
- environment:
- MEILI_MASTER_KEY: ${MEILI_MASTER_KEY}
- MEILI_ENV: ${MEILI_ENV}
-
-volumes:
- meili_data:
- driver: local
diff --git a/apps/dokploy/templates/meilisearch/index.ts b/apps/dokploy/templates/meilisearch/index.ts
deleted file mode 100644
index cfb8a9a4..00000000
--- a/apps/dokploy/templates/meilisearch/index.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const masterKey = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 7700,
- serviceName: "meilisearch",
- },
- ];
- const envs = ["MEILI_ENV=development", `MEILI_MASTER_KEY=${masterKey}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/metabase/docker-compose.yml b/apps/dokploy/templates/metabase/docker-compose.yml
deleted file mode 100644
index 43a03987..00000000
--- a/apps/dokploy/templates/metabase/docker-compose.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-version: "3.8"
-services:
- metabase:
- image: metabase/metabase:v0.50.8
- volumes:
- - /dev/urandom:/dev/random:ro
- environment:
- MB_DB_TYPE: postgres
- MB_DB_DBNAME: metabaseappdb
- MB_DB_PORT: 5432
- MB_DB_USER: metabase
- MB_DB_PASS: mysecretpassword
- MB_DB_HOST: postgres
- healthcheck:
- test: curl --fail -I http://localhost:3000/api/health || exit 1
- interval: 15s
- timeout: 5s
- retries: 5
- postgres:
- image: postgres:14
- environment:
- POSTGRES_USER: metabase
- POSTGRES_DB: metabaseappdb
- POSTGRES_PASSWORD: mysecretpassword
-
diff --git a/apps/dokploy/templates/metabase/index.ts b/apps/dokploy/templates/metabase/index.ts
deleted file mode 100644
index 0a08916e..00000000
--- a/apps/dokploy/templates/metabase/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 3000,
- serviceName: "metabase",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/minio/docker-compose.yml b/apps/dokploy/templates/minio/docker-compose.yml
deleted file mode 100644
index 4b24bbcc..00000000
--- a/apps/dokploy/templates/minio/docker-compose.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-version: "3.8"
-services:
- minio:
- image: minio/minio
- volumes:
- - minio-data:/data
- environment:
- - MINIO_ROOT_USER=minioadmin
- - MINIO_ROOT_PASSWORD=minioadmin123
- command: server /data --console-address ":9001"
-
-volumes:
- minio-data:
diff --git a/apps/dokploy/templates/minio/index.ts b/apps/dokploy/templates/minio/index.ts
deleted file mode 100644
index 1345aafd..00000000
--- a/apps/dokploy/templates/minio/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const apiDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 9001,
- serviceName: "minio",
- },
- {
- host: apiDomain,
- port: 9000,
- serviceName: "minio",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/n8n/docker-compose.yml b/apps/dokploy/templates/n8n/docker-compose.yml
deleted file mode 100644
index d810fa33..00000000
--- a/apps/dokploy/templates/n8n/docker-compose.yml
+++ /dev/null
@@ -1,18 +0,0 @@
-version: "3.8"
-services:
- n8n:
- image: docker.n8n.io/n8nio/n8n:1.70.3
- restart: always
- environment:
- - N8N_HOST=${N8N_HOST}
- - N8N_PORT=${N8N_PORT}
- - N8N_PROTOCOL=http
- - NODE_ENV=production
- - WEBHOOK_URL=https://${N8N_HOST}/
- - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
- - N8N_SECURE_COOKIE=false
- volumes:
- - n8n_data:/home/node/.n8n
-
-volumes:
- n8n_data:
diff --git a/apps/dokploy/templates/n8n/index.ts b/apps/dokploy/templates/n8n/index.ts
deleted file mode 100644
index da93c025..00000000
--- a/apps/dokploy/templates/n8n/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 5678,
- serviceName: "n8n",
- },
- ];
- const envs = [
- `N8N_HOST=${mainDomain}`,
- "N8N_PORT=5678",
- "GENERIC_TIMEZONE=Europe/Berlin",
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/nextcloud-aio/docker-compose.yml b/apps/dokploy/templates/nextcloud-aio/docker-compose.yml
deleted file mode 100644
index 1e6d00fe..00000000
--- a/apps/dokploy/templates/nextcloud-aio/docker-compose.yml
+++ /dev/null
@@ -1,36 +0,0 @@
-services:
- nextcloud:
- image: nextcloud:30.0.2
- restart: always
-
- ports:
- - 80
- volumes:
- - nextcloud_data:/var/www/html
- environment:
- - NEXTCLOUD_TRUSTED_DOMAINS=${NEXTCLOUD_DOMAIN}
- - MYSQL_HOST=nextcloud_db
- - MYSQL_DATABASE=nextcloud
- - MYSQL_USER=nextcloud
- - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD}
- - OVERWRITEPROTOCOL=https
-
- nextcloud_db:
- image: mariadb
- restart: always
-
- volumes:
- - nextcloud_db_data:/var/lib/mysql
- environment:
- - MYSQL_ROOT_PASSWORD=${MYSQL_SECRET_PASSWORD_ROOT}
- - MYSQL_DATABASE=nextcloud
- - MYSQL_USER=nextcloud
- - MYSQL_PASSWORD=${MYSQL_SECRET_PASSWORD}
-
-volumes:
- nextcloud_data:
- nextcloud_db_data:
-
-networks:
- dokploy-network:
- external: true
diff --git a/apps/dokploy/templates/nextcloud-aio/index.ts b/apps/dokploy/templates/nextcloud-aio/index.ts
deleted file mode 100644
index f6bfc893..00000000
--- a/apps/dokploy/templates/nextcloud-aio/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const databasePassword = generatePassword();
- const databaseRootPassword = generatePassword();
- const envs = [
- `NEXTCLOUD_DOMAIN=${randomDomain}`,
- `MYSQL_SECRET_PASSWORD=${databasePassword}`,
- `MYSQL_SECRET_PASSWORD_ROOT=${databaseRootPassword}`,
- ];
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 80,
- serviceName: "nextcloud",
- },
- ];
-
- return { envs, domains };
-}
diff --git a/apps/dokploy/templates/nocodb/docker-compose.yml b/apps/dokploy/templates/nocodb/docker-compose.yml
deleted file mode 100644
index 7c4fd1e9..00000000
--- a/apps/dokploy/templates/nocodb/docker-compose.yml
+++ /dev/null
@@ -1,31 +0,0 @@
-version: "3.8"
-services:
- nocodb:
- image: nocodb/nocodb:0.257.2
- restart: always
- environment:
- NC_DB: "pg://root_db?u=postgres&p=password&d=root_db"
- PORT: ${NOCODB_PORT}
- NC_REDIS_URL: ${NC_REDIS_URL}
- volumes:
- - nc_data:/usr/app/data
-
- root_db:
- image: postgres:17
- restart: always
-
- environment:
- POSTGRES_DB: root_db
- POSTGRES_PASSWORD: password
- POSTGRES_USER: postgres
- healthcheck:
- interval: 10s
- retries: 10
- test: 'pg_isready -U "$$POSTGRES_USER" -d "$$POSTGRES_DB"'
- timeout: 2s
- volumes:
- - "db_data:/var/lib/postgresql/data"
-
-volumes:
- db_data: {}
- nc_data: {}
diff --git a/apps/dokploy/templates/nocodb/index.ts b/apps/dokploy/templates/nocodb/index.ts
deleted file mode 100644
index 60620dbd..00000000
--- a/apps/dokploy/templates/nocodb/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-// EXAMPLE
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const secretBase = generateBase64(64);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 8000,
- serviceName: "nocodb",
- },
- ];
-
- const envs = ["NOCODB_PORT=8000", `NC_AUTH_JWT_SECRET=${secretBase}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/odoo/docker-compose.yml b/apps/dokploy/templates/odoo/docker-compose.yml
deleted file mode 100644
index 7c1c7d3c..00000000
--- a/apps/dokploy/templates/odoo/docker-compose.yml
+++ /dev/null
@@ -1,28 +0,0 @@
-version: "3.8"
-services:
- web:
- image: odoo:16.0
- depends_on:
- - db
- environment:
- - HOST=db
- - USER=odoo
- - PASSWORD=odoo
- volumes:
- - odoo-web-data:/var/lib/odoo
- - ../files/config:/etc/odoo
- - ../files/addons:/mnt/extra-addons
-
- db:
- image: postgres:13
-
- environment:
- - POSTGRES_DB=postgres
- - POSTGRES_USER=odoo
- - POSTGRES_PASSWORD=odoo
- volumes:
- - odoo-db-data:/var/lib/postgresql/data
-
-volumes:
- odoo-web-data:
- odoo-db-data:
diff --git a/apps/dokploy/templates/odoo/index.ts b/apps/dokploy/templates/odoo/index.ts
deleted file mode 100644
index 904293c1..00000000
--- a/apps/dokploy/templates/odoo/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 8069,
- serviceName: "web",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/onedev/docker-compose.yml b/apps/dokploy/templates/onedev/docker-compose.yml
deleted file mode 100644
index af4122cf..00000000
--- a/apps/dokploy/templates/onedev/docker-compose.yml
+++ /dev/null
@@ -1,12 +0,0 @@
----
-services:
- onedev:
- image: 1dev/server:11.6.6
- restart: always
-
- volumes:
- - "/var/run/docker.sock:/var/run/docker.sock"
- - "onedev-data:/opt/onedev"
-
-volumes:
- onedev-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/onedev/index.ts b/apps/dokploy/templates/onedev/index.ts
deleted file mode 100644
index 8017c351..00000000
--- a/apps/dokploy/templates/onedev/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 6610,
- serviceName: "onedev",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/ontime/docker-compose.yml b/apps/dokploy/templates/ontime/docker-compose.yml
deleted file mode 100644
index 2c04bcb3..00000000
--- a/apps/dokploy/templates/ontime/docker-compose.yml
+++ /dev/null
@@ -1,14 +0,0 @@
-services:
- ontime:
- image: getontime/ontime:v3.8.0
- ports:
- - 4001
- - 8888
- - 9999
- volumes:
- - ontime-data:/data/
- environment:
- - TZ
- restart: unless-stopped
-volumes:
- ontime-data:
diff --git a/apps/dokploy/templates/ontime/index.ts b/apps/dokploy/templates/ontime/index.ts
deleted file mode 100644
index 17cac25d..00000000
--- a/apps/dokploy/templates/ontime/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 4001,
- serviceName: "ontime",
- },
- ];
-
- const envs = ["TZ=UTC"];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/open-webui/docker-compose.yml b/apps/dokploy/templates/open-webui/docker-compose.yml
deleted file mode 100644
index ee179721..00000000
--- a/apps/dokploy/templates/open-webui/docker-compose.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-version: "3.8"
-services:
- ollama:
- volumes:
- - ollama:/root/.ollama
-
- pull_policy: always
- tty: true
- restart: unless-stopped
- image: ollama/ollama:${OLLAMA_DOCKER_TAG-latest}
-
- open-webui:
- image: ghcr.io/open-webui/open-webui:${WEBUI_DOCKER_TAG-main}
- volumes:
- - open-webui:/app/backend/data
- depends_on:
- - ollama
- environment:
- - "OLLAMA_BASE_URL=http://ollama:11434"
- - "WEBUI_SECRET_KEY="
- restart: unless-stopped
-
-volumes:
- ollama: {}
- open-webui: {}
diff --git a/apps/dokploy/templates/open-webui/index.ts b/apps/dokploy/templates/open-webui/index.ts
deleted file mode 100644
index 0431c2a1..00000000
--- a/apps/dokploy/templates/open-webui/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 8080,
- serviceName: "open-webui",
- },
- ];
- const envs = ["OLLAMA_DOCKER_TAG=0.1.47", "WEBUI_DOCKER_TAG=0.3.7"];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/outline/docker-compose.yml b/apps/dokploy/templates/outline/docker-compose.yml
deleted file mode 100644
index aaf98ac0..00000000
--- a/apps/dokploy/templates/outline/docker-compose.yml
+++ /dev/null
@@ -1,57 +0,0 @@
-services:
- outline:
- image: outlinewiki/outline:0.82.0
- restart: always
- depends_on:
- - postgres
- - redis
- - dex
- ports:
- - 3000
- environment:
- NODE_ENV: production
- URL: ${URL}
- FORCE_HTTPS: 'false'
- SECRET_KEY: ${SECRET_KEY}
- UTILS_SECRET: ${UTILS_SECRET}
- DATABASE_URL: postgres://outline:${POSTGRES_PASSWORD}@postgres:5432/outline
- PGSSLMODE: disable
- REDIS_URL: redis://redis:6379
- OIDC_CLIENT_ID: outline
- OIDC_CLIENT_SECRET: ${CLIENT_SECRET}
- OIDC_AUTH_URI: ${DEX_URL}/auth
- OIDC_TOKEN_URI: ${DEX_URL}/token
- OIDC_USERINFO_URI: ${DEX_URL}/userinfo
-
- dex:
- image: ghcr.io/dexidp/dex:v2.37.0
- restart: always
- volumes:
- - ../files/etc/dex/config.yaml:/etc/dex/config.yaml
- command:
- - dex
- - serve
- - /etc/dex/config.yaml
- ports:
- - 5556
-
- postgres:
- image: postgres:15
- restart: always
- environment:
- POSTGRES_DB: outline
- POSTGRES_USER: outline
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- volumes:
- - postgres_data-test-outline-khufpx:/var/lib/postgresql/data
-
- redis:
- image: redis:latest
- restart: always
- command: redis-server --appendonly yes
- volumes:
- - redis_data-test-outline-khufpx:/data
-
-volumes:
- postgres_data-test-outline-khufpx:
- redis_data-test-outline-khufpx:
\ No newline at end of file
diff --git a/apps/dokploy/templates/outline/index.ts b/apps/dokploy/templates/outline/index.ts
deleted file mode 100644
index 8431e568..00000000
--- a/apps/dokploy/templates/outline/index.ts
+++ /dev/null
@@ -1,90 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dexDomain = generateRandomDomain(schema);
- const SECRET_KEY = generateBase64(32);
- const UTILS_SECRET = generateBase64(32);
- const CLIENT_SECRET = generateBase64(32);
- const POSTGRES_PASSWORD = generatePassword();
-
- const mainURL = `http://${mainDomain}`;
- const dexURL = `http://${dexDomain}`;
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "outline",
- },
- {
- host: dexDomain,
- port: 5556,
- serviceName: "dex",
- },
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/etc/dex/config.yaml",
- content: `issuer: ${dexURL}
-
-web:
- http: 0.0.0.0:5556
-
-storage:
- type: memory
-
-enablePasswordDB: true
-
-frontend:
- issuer: Outline
-
-logger:
- level: debug
-
-staticPasswords:
- - email: "admin@example.com"
- # bcrypt hash of the string "password": $(echo password | htpasswd -BinC 10 admin | cut -d: -f2)
- hash: "$2y$10$jsRWHw54uxTUIfhjgUrB9u8HSzPk7TUuQri9sXZrKzRXcScvwYor."
- username: "admin"
- userID: "1"
-
-
-oauth2:
- skipApprovalScreen: true
- alwaysShowLoginScreen: false
- passwordConnector: local
-
-staticClients:
- - id: "outline"
- redirectURIs:
- - ${mainURL}/auth/oidc.callback
- name: "Outline"
- secret: "${CLIENT_SECRET}"`,
- },
- ];
-
- const envs = [
- `URL=${mainURL}`,
- `DEX_URL=${dexURL}`,
- `DOMAIN_NAME=${mainDomain}`,
- `POSTGRES_PASSWORD=${POSTGRES_PASSWORD}`,
- `SECRET_KEY=${SECRET_KEY}`,
- `UTILS_SECRET=${UTILS_SECRET}`,
- `CLIENT_SECRET=${CLIENT_SECRET}`,
- ];
-
- return {
- domains,
- envs,
- mounts,
- };
-}
diff --git a/apps/dokploy/templates/penpot/docker-compose.yml b/apps/dokploy/templates/penpot/docker-compose.yml
deleted file mode 100644
index 3e0efe91..00000000
--- a/apps/dokploy/templates/penpot/docker-compose.yml
+++ /dev/null
@@ -1,207 +0,0 @@
-## Common flags:
-# demo-users
-# email-verification
-# log-emails
-# log-invitation-tokens
-# login-with-github
-# login-with-gitlab
-# login-with-google
-# login-with-ldap
-# login-with-oidc
-# login-with-password
-# prepl-server
-# registration
-# secure-session-cookies
-# smtp
-# smtp-debug
-# telemetry
-# webhooks
-##
-## You can read more about all available flags and other
-## environment variables here:
-## https://help.penpot.app/technical-guide/configuration/#advanced-configuration
-#
-# WARNING: if you're exposing Penpot to the internet, you should remove the flags
-# 'disable-secure-session-cookies' and 'disable-email-verification'
-
-volumes:
- penpot_postgres_v15:
- penpot_assets:
- penpot_traefik:
- # penpot_minio:
-
-services:
-
- penpot-frontend:
- image: "penpotapp/frontend:2.3.2"
- restart: always
- ports:
- - 8080
- - 9001
-
- volumes:
- - penpot_assets:/opt/data/assets
-
- depends_on:
- - penpot-backend
- - penpot-exporter
-
-
-
- environment:
- PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
-
- penpot-backend:
- image: "penpotapp/backend:2.3.2"
- restart: always
-
- volumes:
- - penpot_assets:/opt/data/assets
-
- depends_on:
- - penpot-postgres
- - penpot-redis
-
-
-
- ## Configuration envronment variables for the backend
- ## container.
-
- environment:
- PENPOT_PUBLIC_URI: http://${DOMAIN_NAME}
- PENPOT_FLAGS: disable-email-verification enable-smtp enable-prepl-server disable-secure-session-cookies
-
- ## Penpot SECRET KEY. It serves as a master key from which other keys for subsystems
- ## (eg http sessions, or invitations) are derived.
- ##
- ## If you leave it commented, all created sessions and invitations will
- ## become invalid on container restart.
- ##
- ## If you going to uncomment this, we recommend to use a trully randomly generated
- ## 512 bits base64 encoded string here. You can generate one with:
- ##
- ## python3 -c "import secrets; print(secrets.token_urlsafe(64))"
-
- # PENPOT_SECRET_KEY: my-insecure-key
-
- ## The PREPL host. Mainly used for external programatic access to penpot backend
- ## (example: admin). By default it will listen on `localhost` but if you are going to use
- ## the `admin`, you will need to uncomment this and set the host to `0.0.0.0`.
-
- # PENPOT_PREPL_HOST: 0.0.0.0
-
- ## Database connection parameters. Don't touch them unless you are using custom
- ## postgresql connection parameters.
-
- PENPOT_DATABASE_URI: postgresql://penpot-postgres/penpot
- PENPOT_DATABASE_USERNAME: penpot
- PENPOT_DATABASE_PASSWORD: penpot
-
- ## Redis is used for the websockets notifications. Don't touch unless the redis
- ## container has different parameters or different name.
-
- PENPOT_REDIS_URI: redis://penpot-redis/0
-
- ## Default configuration for assets storage: using filesystem based with all files
- ## stored in a docker volume.
-
- PENPOT_ASSETS_STORAGE_BACKEND: assets-fs
- PENPOT_STORAGE_ASSETS_FS_DIRECTORY: /opt/data/assets
-
- ## Also can be configured to to use a S3 compatible storage
- ## service like MiniIO. Look below for minio service setup.
-
- # AWS_ACCESS_KEY_ID:
- # AWS_SECRET_ACCESS_KEY:
- # PENPOT_ASSETS_STORAGE_BACKEND: assets-s3
- # PENPOT_STORAGE_ASSETS_S3_ENDPOINT: http://penpot-minio:9000
- # PENPOT_STORAGE_ASSETS_S3_BUCKET:
-
- ## Telemetry. When enabled, a periodical process will send anonymous data about this
- ## instance. Telemetry data will enable us to learn how the application is used,
- ## based on real scenarios. If you want to help us, please leave it enabled. You can
- ## audit what data we send with the code available on github.
-
- PENPOT_TELEMETRY_ENABLED: true
-
- ## Example SMTP/Email configuration. By default, emails are sent to the mailcatch
- ## service, but for production usage it is recommended to setup a real SMTP
- ## provider. Emails are used to confirm user registrations & invitations. Look below
- ## how the mailcatch service is configured.
-
- PENPOT_SMTP_DEFAULT_FROM: no-reply@example.com
- PENPOT_SMTP_DEFAULT_REPLY_TO: no-reply@example.com
- PENPOT_SMTP_HOST: penpot-mailcatch
- PENPOT_SMTP_PORT: 1025
- PENPOT_SMTP_USERNAME:
- PENPOT_SMTP_PASSWORD:
- PENPOT_SMTP_TLS: false
- PENPOT_SMTP_SSL: false
-
- penpot-exporter:
- image: "penpotapp/exporter:2.3.2"
- restart: always
-
-
- environment:
- # Don't touch it; this uses an internal docker network to
- # communicate with the frontend.
- PENPOT_PUBLIC_URI: http://penpot-frontend
-
- ## Redis is used for the websockets notifications.
- PENPOT_REDIS_URI: redis://penpot-redis/0
-
- penpot-postgres:
- image: "postgres:15"
- restart: always
- stop_signal: SIGINT
-
- volumes:
- - penpot_postgres_v15:/var/lib/postgresql/data
-
-
-
- environment:
- - POSTGRES_INITDB_ARGS=--data-checksums
- - POSTGRES_DB=penpot
- - POSTGRES_USER=penpot
- - POSTGRES_PASSWORD=penpot
-
- penpot-redis:
- image: redis:7.2
- restart: always
-
-
- ## A mailcatch service, used as temporal SMTP server. You can access via HTTP to the
- ## port 1080 for read all emails the penpot platform has sent. Should be only used as a
- ## temporal solution while no real SMTP provider is configured.
-
- penpot-mailcatch:
- image: sj26/mailcatcher:latest
- restart: always
- expose:
- - '1025'
- ports:
- - 1080
-
-
- ## Example configuration of MiniIO (S3 compatible object storage service); If you don't
- ## have preference, then just use filesystem, this is here just for the completeness.
-
- # minio:
- # image: "minio/minio:latest"
- # command: minio server /mnt/data --console-address ":9001"
- # restart: always
- #
- # volumes:
- # - "penpot_minio:/mnt/data"
- #
- # environment:
- # - MINIO_ROOT_USER=minioadmin
- # - MINIO_ROOT_PASSWORD=minioadmin
- #
- # ports:
- # - 9000:9000
- # - 9001:9001
-
-
diff --git a/apps/dokploy/templates/penpot/index.ts b/apps/dokploy/templates/penpot/index.ts
deleted file mode 100644
index a3e90e8a..00000000
--- a/apps/dokploy/templates/penpot/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "penpot-frontend",
- },
- ];
-
- const envs = [`DOMAIN_NAME=${mainDomain}`];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/peppermint/docker-compose.yml b/apps/dokploy/templates/peppermint/docker-compose.yml
deleted file mode 100644
index 06fb46c6..00000000
--- a/apps/dokploy/templates/peppermint/docker-compose.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-version: "3.8"
-
-services:
- peppermint-postgres:
- image: postgres:latest
- restart: always
-
- volumes:
- - peppermint-postgres-data:/var/lib/postgresql/data
- environment:
- POSTGRES_USER: peppermint
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- POSTGRES_DB: peppermint
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U peppermint"]
- interval: 10s
- timeout: 5s
- retries: 5
-
- peppermint-app:
- image: pepperlabs/peppermint:latest
- restart: always
-
- depends_on:
- peppermint-postgres:
- condition: service_healthy
- environment:
- DB_USERNAME: "peppermint"
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_HOST: "peppermint-postgres"
- SECRET: ${SECRET}
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- peppermint-postgres-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/peppermint/index.ts b/apps/dokploy/templates/peppermint/index.ts
deleted file mode 100644
index de63f845..00000000
--- a/apps/dokploy/templates/peppermint/index.ts
+++ /dev/null
@@ -1,40 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const apiDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
- const secret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "peppermint-app",
- },
- {
- host: apiDomain,
- port: 5003,
- serviceName: "peppermint-app",
- },
- ];
-
- const envs = [
- `MAIN_DOMAIN=${mainDomain}`,
- `API_DOMAIN=${apiDomain}`,
- `POSTGRES_PASSWORD=${postgresPassword}`,
- `SECRET=${secret}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/photoprism/docker-compose.yml b/apps/dokploy/templates/photoprism/docker-compose.yml
deleted file mode 100644
index 56793dbd..00000000
--- a/apps/dokploy/templates/photoprism/docker-compose.yml
+++ /dev/null
@@ -1,76 +0,0 @@
-services:
- photoprism:
- image: photoprism/photoprism:latest
- stop_grace_period: 10s
- depends_on:
- - mariadb
- security_opt:
- - seccomp:unconfined
- - apparmor:unconfined
-
- environment:
- PHOTOPRISM_ADMIN_USER: "admin"
- PHOTOPRISM_ADMIN_PASSWORD: ${ADMIN_PASSWORD}
- PHOTOPRISM_AUTH_MODE: "password"
- PHOTOPRISM_SITE_URL: "http://localhost:2342/"
- PHOTOPRISM_DISABLE_TLS: "false"
- PHOTOPRISM_DEFAULT_TLS: "false"
- PHOTOPRISM_ORIGINALS_LIMIT: 5000 # file size limit for originals in MB (increase for high-res video)
- PHOTOPRISM_HTTP_COMPRESSION: "gzip"
- PHOTOPRISM_LOG_LEVEL: "info" # log level: trace, debug, info, warning, error, fatal, or panic
- PHOTOPRISM_READONLY: "false"
- PHOTOPRISM_EXPERIMENTAL: "false"
- PHOTOPRISM_DISABLE_CHOWN: "false"
- PHOTOPRISM_DISABLE_WEBDAV: "false"
- PHOTOPRISM_DISABLE_SETTINGS: "false"
- PHOTOPRISM_DISABLE_TENSORFLOW: "false"
- PHOTOPRISM_DISABLE_FACES: "false"
- PHOTOPRISM_DISABLE_CLASSIFICATION: "false"
- PHOTOPRISM_DISABLE_VECTORS: "false"
- PHOTOPRISM_DISABLE_RAW: "false"
- PHOTOPRISM_RAW_PRESETS: "false"
- PHOTOPRISM_SIDECAR_YAML: "true"
- PHOTOPRISM_BACKUP_ALBUMS: "true"
- PHOTOPRISM_BACKUP_DATABASE: "true"
- PHOTOPRISM_BACKUP_SCHEDULE: "daily"
- PHOTOPRISM_INDEX_SCHEDULE: ""
- PHOTOPRISM_AUTO_INDEX: 300
- PHOTOPRISM_AUTO_IMPORT: -1
- PHOTOPRISM_DETECT_NSFW: "false"
- PHOTOPRISM_UPLOAD_NSFW: "true"
- PHOTOPRISM_DATABASE_DRIVER: "mysql"
- PHOTOPRISM_DATABASE_SERVER: "mariadb:3306"
- PHOTOPRISM_DATABASE_NAME: "photoprism"
- PHOTOPRISM_DATABASE_USER: "photoprism"
- PHOTOPRISM_DATABASE_PASSWORD: "insecure"
- PHOTOPRISM_SITE_CAPTION: "AI-Powered Photos App"
- PHOTOPRISM_SITE_DESCRIPTION: ""
- PHOTOPRISM_SITE_AUTHOR: ""
- working_dir:
- "/photoprism"
- volumes:
- - pictures:/photoprism/originals
- - storage-data:/photoprism/storage
-
- mariadb:
- image: mariadb:11
- restart: unless-stopped
- stop_grace_period: 5s
-
- security_opt:
- - seccomp:unconfined
- - apparmor:unconfined
- volumes:
- - db-data:/var/lib/mysql
- environment:
- MARIADB_AUTO_UPGRADE: "1"
- MARIADB_INITDB_SKIP_TZINFO: "1"
- MARIADB_DATABASE: "photoprism"
- MARIADB_USER: "photoprism"
- MARIADB_PASSWORD: "insecure"
- MARIADB_ROOT_PASSWORD: "insecure"
-
-volumes:
- db-data:
- storage-data:
- pictures:
\ No newline at end of file
diff --git a/apps/dokploy/templates/photoprism/index.ts b/apps/dokploy/templates/photoprism/index.ts
deleted file mode 100644
index 4a103a62..00000000
--- a/apps/dokploy/templates/photoprism/index.ts
+++ /dev/null
@@ -1,30 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const randomPassword = generatePassword();
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 2342,
- serviceName: "photoprism",
- },
- ];
-
- const envs = [
- `BASE_URL=http://${randomDomain}`,
- `ADMIN_PASSWORD=${randomPassword}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/phpmyadmin/docker-compose.yml b/apps/dokploy/templates/phpmyadmin/docker-compose.yml
deleted file mode 100644
index 91674e87..00000000
--- a/apps/dokploy/templates/phpmyadmin/docker-compose.yml
+++ /dev/null
@@ -1,27 +0,0 @@
-version: "3.8"
-
-services:
- db:
- image: mysql:5.7
- environment:
- MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE: tu_base_de_datos
- MYSQL_USER: ${MYSQL_USER}
- MYSQL_PASSWORD: ${MYSQL_PASSWORD}
- volumes:
- - db_data:/var/lib/mysql
-
-
- phpmyadmin:
- image: phpmyadmin/phpmyadmin:5.2.1
- environment:
- PMA_HOST: db
- PMA_USER: ${MYSQL_USER}
- PMA_PASSWORD: ${MYSQL_PASSWORD}
- PMA_ARBITRARY: 1
- depends_on:
- - db
-
-volumes:
- db_data:
- driver: local
diff --git a/apps/dokploy/templates/phpmyadmin/index.ts b/apps/dokploy/templates/phpmyadmin/index.ts
deleted file mode 100644
index e1c976b9..00000000
--- a/apps/dokploy/templates/phpmyadmin/index.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const rootPassword = generatePassword(32);
- const password = generatePassword(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "phpmyadmin",
- },
- ];
- const envs = [
- `MYSQL_ROOT_PASSWORD=${rootPassword}`,
- "MYSQL_DATABASE=mysql",
- "MYSQL_USER=phpmyadmin",
- `MYSQL_PASSWORD=${password}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/plausible/docker-compose.yml b/apps/dokploy/templates/plausible/docker-compose.yml
deleted file mode 100644
index ad483ecf..00000000
--- a/apps/dokploy/templates/plausible/docker-compose.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-services:
- plausible_db:
- image: postgres:16-alpine
- restart: always
-
- volumes:
- - db-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_PASSWORD=postgres
-
- plausible_events_db:
- image: clickhouse/clickhouse-server:24.3.3.102-alpine
- restart: always
-
- volumes:
- - event-data:/var/lib/clickhouse
- - event-logs:/var/log/clickhouse-server
- - ../files/clickhouse/clickhouse-config.xml:/etc/clickhouse-server/config.d/logging.xml:ro
- - ../files/clickhouse/clickhouse-user-config.xml:/etc/clickhouse-server/users.d/logging.xml:ro
- ulimits:
- nofile:
- soft: 262144
- hard: 262144
-
- plausible:
- image: ghcr.io/plausible/community-edition:v2.1.5
- restart: always
- command: sh -c "sleep 10 && /entrypoint.sh db createdb && /entrypoint.sh db migrate && /entrypoint.sh run"
- depends_on:
- - plausible_db
- - plausible_events_db
- env_file:
- - .env
-
-volumes:
- db-data:
- driver: local
- event-data:
- driver: local
- event-logs:
- driver: local
diff --git a/apps/dokploy/templates/plausible/index.ts b/apps/dokploy/templates/plausible/index.ts
deleted file mode 100644
index 2bd1212b..00000000
--- a/apps/dokploy/templates/plausible/index.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const secretBase = generateBase64(64);
- const toptKeyBase = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8000,
- serviceName: "plausible",
- },
- ];
-
- const envs = [
- `BASE_URL=http://${mainDomain}`,
- `SECRET_KEY_BASE=${secretBase}`,
- `TOTP_VAULT_KEY=${toptKeyBase}`,
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/clickhouse/clickhouse-config.xml",
- content: `
-
-
- warning
- true
-
-
-
-
-
-
-
-
-
-
-
-
-
- `,
- },
- {
- filePath: "/clickhouse/clickhouse-user-config.xml",
- content: `
-
-
-
- 0
- 0
-
-
-
- `,
- },
- ];
-
- return {
- envs,
- mounts,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/pocket-id/docker-compose.yml b/apps/dokploy/templates/pocket-id/docker-compose.yml
deleted file mode 100644
index f9385143..00000000
--- a/apps/dokploy/templates/pocket-id/docker-compose.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-services:
- pocket-id:
- image: ghcr.io/pocket-id/pocket-id:v0.35.1
- restart: unless-stopped
- environment:
- - PUBLIC_UI_CONFIG_DISABLED
- - PUBLIC_APP_URL
- - TRUST_PROXY
- ports:
- - 80
- volumes:
- - pocket-id-data:/app/backend/data
- healthcheck:
- test: "curl -f http://localhost/health"
- interval: 1m30s
- timeout: 5s
- retries: 2
- start_period: 10s
-
-volumes:
- pocket-id-data:
diff --git a/apps/dokploy/templates/pocket-id/index.ts b/apps/dokploy/templates/pocket-id/index.ts
deleted file mode 100644
index 9a9faa2a..00000000
--- a/apps/dokploy/templates/pocket-id/index.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 80,
- serviceName: "pocket-id",
- },
- ];
-
- const envs = [
- "PUBLIC_UI_CONFIG_DISABLED=false",
- `PUBLIC_APP_URL=http://${mainDomain}`,
- "TRUST_PROXY=true",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/portainer/docker-compose.yml b/apps/dokploy/templates/portainer/docker-compose.yml
deleted file mode 100644
index 19e67a3e..00000000
--- a/apps/dokploy/templates/portainer/docker-compose.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-version: '3.8'
-
-services:
- agent:
- image: portainer/agent
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - /var/lib/docker/volumes:/var/lib/docker/volumes
-
-
- deploy:
- mode: global
- placement:
- constraints: [node.platform.os == linux]
-
- portainer:
- image: portainer/portainer-ce
- volumes:
- - /var/run/docker.sock:/var/run/docker.sock
- - portainer-data:/data
- deploy:
- mode: replicated
- placement:
- constraints: [node.role == manager]
-
-
-volumes:
- portainer-data:
-
\ No newline at end of file
diff --git a/apps/dokploy/templates/portainer/index.ts b/apps/dokploy/templates/portainer/index.ts
deleted file mode 100644
index 7775a0ed..00000000
--- a/apps/dokploy/templates/portainer/index.ts
+++ /dev/null
@@ -1,19 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 9000,
- serviceName: "portainer",
- },
- ];
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/postiz/docker-compose.yml b/apps/dokploy/templates/postiz/docker-compose.yml
deleted file mode 100644
index cd06e795..00000000
--- a/apps/dokploy/templates/postiz/docker-compose.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-version: "3.8"
-
-services:
- postiz-app:
- image: ghcr.io/gitroomhq/postiz-app:latest
- restart: always
-
- environment:
- MAIN_URL: "https://${POSTIZ_HOST}"
- FRONTEND_URL: "https://${POSTIZ_HOST}"
- NEXT_PUBLIC_BACKEND_URL: "https://${POSTIZ_HOST}/api"
- JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: "postgresql://${DB_USER}:${DB_PASSWORD}@postiz-postgres:5432/${DB_NAME}"
- REDIS_URL: "redis://postiz-redis:6379"
- BACKEND_INTERNAL_URL: "http://localhost:3000"
- IS_GENERAL: "true"
- STORAGE_PROVIDER: "local"
- UPLOAD_DIRECTORY: "/uploads"
- NEXT_PUBLIC_UPLOAD_DIRECTORY: "/uploads"
- volumes:
- - postiz-config:/config/
- - postiz-uploads:/uploads/
- depends_on:
- postiz-postgres:
- condition: service_healthy
- postiz-redis:
- condition: service_healthy
-
- postiz-postgres:
- image: postgres:17-alpine
- restart: always
-
- environment:
- POSTGRES_PASSWORD: ${DB_PASSWORD}
- POSTGRES_USER: ${DB_USER}
- POSTGRES_DB: ${DB_NAME}
- volumes:
- - postiz-postgres-data:/var/lib/postgresql/data
- healthcheck:
- test: pg_isready -U ${DB_USER} -d ${DB_NAME}
- interval: 10s
- timeout: 3s
- retries: 3
-
- postiz-redis:
- image: redis:7.2
- restart: always
-
- healthcheck:
- test: redis-cli ping
- interval: 10s
- timeout: 3s
- retries: 3
- volumes:
- - postiz-redis-data:/data
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- postiz-postgres-data:
- postiz-redis-data:
- postiz-config:
- postiz-uploads:
\ No newline at end of file
diff --git a/apps/dokploy/templates/postiz/index.ts b/apps/dokploy/templates/postiz/index.ts
deleted file mode 100644
index a05d2d94..00000000
--- a/apps/dokploy/templates/postiz/index.ts
+++ /dev/null
@@ -1,37 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dbPassword = generatePassword();
- const dbUser = "postiz";
- const dbName = "postiz";
- const jwtSecret = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 5000,
- serviceName: "postiz-app",
- },
- ];
-
- const envs = [
- `POSTIZ_HOST=${mainDomain}`,
- `DB_PASSWORD=${dbPassword}`,
- `DB_USER=${dbUser}`,
- `DB_NAME=${dbName}`,
- `JWT_SECRET=${jwtSecret}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/registry/docker-compose.yml b/apps/dokploy/templates/registry/docker-compose.yml
deleted file mode 100644
index 08c5c368..00000000
--- a/apps/dokploy/templates/registry/docker-compose.yml
+++ /dev/null
@@ -1,19 +0,0 @@
-services:
- registry:
- restart: always
- image: registry:2
- ports:
- - 5000
- volumes:
- - ../files/auth/registry.password:/auth/registry.password
- - registry-data:/var/lib/registry
- environment:
- REGISTRY_STORAGE_DELETE_ENABLED: true
- REGISTRY_HEALTH_STORAGEDRIVER_ENABLED: false
- REGISTRY_HTTP_SECRET: ${REGISTRY_HTTP_SECRET}
- REGISTRY_AUTH: htpasswd
- REGISTRY_AUTH_HTPASSWD_REALM: Registry Realm
- REGISTRY_AUTH_HTPASSWD_PATH: /auth/registry.password
-
-volumes:
- registry-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/registry/index.ts b/apps/dokploy/templates/registry/index.ts
deleted file mode 100644
index 81965e6e..00000000
--- a/apps/dokploy/templates/registry/index.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const domains: DomainSchema[] = [
- {
- host: generateRandomDomain(schema),
- port: 5000,
- serviceName: "registry",
- },
- ];
-
- const registryHttpSecret = generatePassword(30);
-
- const envs = [`REGISTRY_HTTP_SECRET=${registryHttpSecret}`];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/auth/registry.password",
- content:
- "# from: docker run --rm --entrypoint htpasswd httpd:2 -Bbn docker password\ndocker:$2y$10$qWZoWev/u5PV7WneFoRAMuoGpRcAQOgUuIIdLnU7pJXogrBSY23/2\n",
- },
- ];
-
- return {
- domains,
- envs,
- mounts,
- };
-}
diff --git a/apps/dokploy/templates/rocketchat/docker-compose.yml b/apps/dokploy/templates/rocketchat/docker-compose.yml
deleted file mode 100644
index 5119f5a4..00000000
--- a/apps/dokploy/templates/rocketchat/docker-compose.yml
+++ /dev/null
@@ -1,34 +0,0 @@
-version: "3.8"
-services:
- rocketchat:
- image: registry.rocket.chat/rocketchat/rocket.chat:6.9.2
- restart: always
- environment:
- MONGO_URL: "mongodb://mongodb:27017/rocketchat?replicaSet=rs0"
- MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0"
- ROOT_URL: ${ROOT_URL:-http://${ROCKETCHAT_HOST}:${ROCKETCHAT_PORT}}
- PORT: ${ROCKETCHAT_PORT}
- DEPLOY_METHOD: docker
- DEPLOY_PLATFORM:
- REG_TOKEN:
- depends_on:
- - mongodb
-
- mongodb:
- image: docker.io/bitnami/mongodb:5.0
- restart: always
- volumes:
- - mongodb_data:/bitnami/mongodb
- environment:
- MONGODB_REPLICA_SET_MODE: primary
- MONGODB_REPLICA_SET_NAME: rs0
- MONGODB_PORT_NUMBER: 27017
- MONGODB_INITIAL_PRIMARY_HOST: mongodb
- MONGODB_INITIAL_PRIMARY_PORT_NUMBER: 27017
- MONGODB_ADVERTISED_HOSTNAME: mongodb
- MONGODB_ENABLE_JOURNAL: true
- ALLOW_EMPTY_PASSWORD: yes
-
-
-volumes:
- mongodb_data: { driver: local }
diff --git a/apps/dokploy/templates/rocketchat/index.ts b/apps/dokploy/templates/rocketchat/index.ts
deleted file mode 100644
index 0c10307a..00000000
--- a/apps/dokploy/templates/rocketchat/index.ts
+++ /dev/null
@@ -1,25 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 3000,
- serviceName: "rocketchat",
- },
- ];
-
- const envs = [`ROCKETCHAT_HOST=${mainDomain}`, "ROCKETCHAT_PORT=3000"];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/roundcube/docker-compose.yml b/apps/dokploy/templates/roundcube/docker-compose.yml
deleted file mode 100644
index e5ba4a8b..00000000
--- a/apps/dokploy/templates/roundcube/docker-compose.yml
+++ /dev/null
@@ -1,16 +0,0 @@
-services:
- roundcubemail:
- image: roundcube/roundcubemail:1.6.9-apache
- volumes:
- - ./www:/var/www/html
- - ./db/sqlite:/var/roundcube/db
- environment:
- - ROUNDCUBEMAIL_DB_TYPE=sqlite
- - ROUNDCUBEMAIL_SKIN=elastic
- - ROUNDCUBEMAIL_DEFAULT_HOST=${DEFAULT_HOST}
- - ROUNDCUBEMAIL_SMTP_SERVER=${SMTP_SERVER}
-
-
-networks:
- dokploy-network:
- external: true
diff --git a/apps/dokploy/templates/roundcube/index.ts b/apps/dokploy/templates/roundcube/index.ts
deleted file mode 100644
index 8df8c743..00000000
--- a/apps/dokploy/templates/roundcube/index.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const envs = [
- "DEFAULT_HOST=tls://mail.example.com",
- "SMTP_SERVER=tls://mail.example.com",
- ];
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 80,
- serviceName: "roundcubemail",
- },
- ];
-
- return { envs, domains };
-}
diff --git a/apps/dokploy/templates/ryot/docker-compose.yml b/apps/dokploy/templates/ryot/docker-compose.yml
deleted file mode 100644
index 09a72707..00000000
--- a/apps/dokploy/templates/ryot/docker-compose.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-version: '3.7'
-
-services:
- ryot-app:
- image: ignisda/ryot:v7.10
-
- environment:
- - DATABASE_URL=postgres://postgres:${POSTGRES_PASSWORD}@ryot-db:5432/postgres
- - SERVER_ADMIN_ACCESS_TOKEN=${ADMIN_ACCESS_TOKEN}
- - TZ=UTC
- # Optional: Uncomment and set your pro key if you have one
- # - SERVER_PRO_KEY=${SERVER_PRO_KEY}
- depends_on:
- ryot-db:
- condition: service_healthy
- restart: always
- pull_policy: always
-
- ryot-db:
- image: postgres:16-alpine
-
- volumes:
- - ryot-postgres-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- - POSTGRES_USER=postgres
- - POSTGRES_DB=postgres
- - TZ=UTC
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U postgres"]
- interval: 10s
- timeout: 5s
- retries: 5
- restart: unless-stopped
-
-volumes:
- ryot-postgres-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/ryot/index.ts b/apps/dokploy/templates/ryot/index.ts
deleted file mode 100644
index 1d8d5ce2..00000000
--- a/apps/dokploy/templates/ryot/index.ts
+++ /dev/null
@@ -1,34 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const postgresPassword = generatePassword();
- const adminAccessToken = generateBase64(32);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8000,
- serviceName: "ryot-app",
- },
- ];
-
- const envs = [
- `POSTGRES_PASSWORD=${postgresPassword}`,
- `ADMIN_ACCESS_TOKEN=${adminAccessToken}`,
- "# Optional: Uncomment and set your pro key if you have one",
- "# SERVER_PRO_KEY=your_pro_key_here",
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/shlink/docker-compose.yml b/apps/dokploy/templates/shlink/docker-compose.yml
deleted file mode 100644
index 6d15a26d..00000000
--- a/apps/dokploy/templates/shlink/docker-compose.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-services:
- shlink:
- image: shlinkio/shlink:stable
- environment:
- - INITIAL_API_KEY=${INITIAL_API_KEY}
- - DEFAULT_DOMAIN=${DEFAULT_DOMAIN}
- # Note: you should also update SHLINK_SERVER_URL in the shlink-web service.
- - IS_HTTPS_ENABLED=false
- volumes:
- - shlink-data:/etc/shlink/data
- healthcheck:
- test: ["CMD", "curl", "-f", "http://127.0.0.1:8080/rest/v3/health"]
- interval: 30s
- timeout: 10s
- retries: 3
- shlink-web:
- image: shlinkio/shlink-web-client
- environment:
- - SHLINK_SERVER_API_KEY=${INITIAL_API_KEY}
- # Note: if you've set IS_HTTPS_ENABLED=true, change http to https.
- - SHLINK_SERVER_URL=http://${DEFAULT_DOMAIN}
- healthcheck:
- test: ["CMD", "curl", "-f", "http://127.0.0.1:8080"]
- interval: 30s
- timeout: 10s
- retries: 3
-
-volumes:
- shlink-data:
diff --git a/apps/dokploy/templates/shlink/index.ts b/apps/dokploy/templates/shlink/index.ts
deleted file mode 100644
index 1e456e1c..00000000
--- a/apps/dokploy/templates/shlink/index.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const defaultDomain = generateRandomDomain(schema);
- const initialApiKey = generatePassword(30);
-
- const domains: DomainSchema[] = [
- {
- host: `web-${defaultDomain}`,
- port: 8080,
- serviceName: "shlink-web",
- },
- {
- host: defaultDomain,
- port: 8080,
- serviceName: "shlink",
- },
- ];
-
- const envs = [
- `INITIAL_API_KEY=${initialApiKey}`,
- `DEFAULT_DOMAIN=${defaultDomain}`,
- ];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/slash/docker-compose.yml b/apps/dokploy/templates/slash/docker-compose.yml
deleted file mode 100644
index ee6cdf89..00000000
--- a/apps/dokploy/templates/slash/docker-compose.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-version: "3.8"
-
-services:
- slash-app:
- image: yourselfhosted/slash:latest
-
- volumes:
- - slash-app-data:/var/opt/slash
- environment:
- - SLASH_DRIVER=postgres
- - SLASH_DSN=postgresql://${DB_USER}:${DB_PASSWORD}@slash-postgres:5432/${DB_NAME}?sslmode=disable
- depends_on:
- slash-postgres:
- condition: service_healthy
- restart: unless-stopped
-
- slash-postgres:
- image: postgres:16-alpine
-
- volumes:
- - slash-postgres-data:/var/lib/postgresql/data
- environment:
- - POSTGRES_USER=${DB_USER}
- - POSTGRES_PASSWORD=${DB_PASSWORD}
- - POSTGRES_DB=${DB_NAME}
- healthcheck:
- test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
- interval: 10s
- timeout: 5s
- retries: 5
- restart: unless-stopped
-
-networks:
- dokploy-network:
- external: true
-
-volumes:
- slash-app-data:
- slash-postgres-data:
\ No newline at end of file
diff --git a/apps/dokploy/templates/slash/index.ts b/apps/dokploy/templates/slash/index.ts
deleted file mode 100644
index ba614fd8..00000000
--- a/apps/dokploy/templates/slash/index.ts
+++ /dev/null
@@ -1,33 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const dbPassword = generatePassword();
- const dbUser = "slash";
- const dbName = "slash";
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 5231,
- serviceName: "slash-app",
- },
- ];
-
- const envs = [
- `DB_USER=${dbUser}`,
- `DB_PASSWORD=${dbPassword}`,
- `DB_NAME=${dbName}`,
- ];
-
- return {
- domains,
- envs,
- };
-}
diff --git a/apps/dokploy/templates/soketi/docker-compose.yml b/apps/dokploy/templates/soketi/docker-compose.yml
deleted file mode 100644
index d38cbb08..00000000
--- a/apps/dokploy/templates/soketi/docker-compose.yml
+++ /dev/null
@@ -1,11 +0,0 @@
-version: "3"
-
-services:
- soketi:
- image: quay.io/soketi/soketi:1.6.1-16-debian
- environment:
- SOKETI_DEBUG: "1"
- SOKETI_HOST: "0.0.0.0"
- SOKETI_PORT: "6001"
- SOKETI_METRICS_SERVER_PORT: "9601"
- restart: unless-stopped
diff --git a/apps/dokploy/templates/soketi/index.ts b/apps/dokploy/templates/soketi/index.ts
deleted file mode 100644
index 47aa461d..00000000
--- a/apps/dokploy/templates/soketi/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
- const metricsDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 6001,
- serviceName: "soketi",
- },
- {
- host: metricsDomain,
- port: 9601,
- serviceName: "soketi",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/spacedrive/docker-compose.yml b/apps/dokploy/templates/spacedrive/docker-compose.yml
deleted file mode 100644
index b98d55ab..00000000
--- a/apps/dokploy/templates/spacedrive/docker-compose.yml
+++ /dev/null
@@ -1,9 +0,0 @@
-services:
- server:
- image: ghcr.io/spacedriveapp/spacedrive/server:latest
- ports:
- - 8080
- environment:
- - SD_AUTH=${SD_USERNAME}:${SD_PASSWORD}
- volumes:
- - /var/spacedrive:/var/spacedrive
diff --git a/apps/dokploy/templates/spacedrive/index.ts b/apps/dokploy/templates/spacedrive/index.ts
deleted file mode 100644
index 15db4b19..00000000
--- a/apps/dokploy/templates/spacedrive/index.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const randomDomain = generateRandomDomain(schema);
- const secretKey = generatePassword();
- const randomUsername = "admin"; // Default username
-
- const domains: DomainSchema[] = [
- {
- host: randomDomain,
- port: 8080,
- serviceName: "server",
- },
- ];
-
- const envs = [`SD_USERNAME=${randomUsername}`, `SD_PASSWORD=${secretKey}`];
-
- return {
- envs,
- domains,
- };
-}
diff --git a/apps/dokploy/templates/stirling/docker-compose.yml b/apps/dokploy/templates/stirling/docker-compose.yml
deleted file mode 100644
index 27bd0121..00000000
--- a/apps/dokploy/templates/stirling/docker-compose.yml
+++ /dev/null
@@ -1,22 +0,0 @@
-services:
- stirling-pdf:
- image: frooodle/s-pdf:latest
- ports:
- - 8080
- volumes:
- - stirling_pdf_trainingdata:/usr/share/tessdata
- - stirling_pdf_extraconfigs:/configs
- - stirling_pdf_customfiles:/customFiles/
- - stirling_pdf_logs:/logs/
- - stirling_pdf_pipeline:/pipeline/
- environment:
- - DOCKER_ENABLE_SECURITY=false
- - INSTALL_BOOK_AND_ADVANCED_HTML_OPS=false
- - LANGS=en_GB
-
-volumes:
- stirling_pdf_trainingdata:
- stirling_pdf_extraconfigs:
- stirling_pdf_customfiles:
- stirling_pdf_logs:
- stirling_pdf_pipeline:
diff --git a/apps/dokploy/templates/stirling/index.ts b/apps/dokploy/templates/stirling/index.ts
deleted file mode 100644
index a8df5e33..00000000
--- a/apps/dokploy/templates/stirling/index.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateRandomDomain,
-} from "../utils";
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const domains: DomainSchema[] = [
- {
- host: mainDomain,
- port: 8080,
- serviceName: "stirling-pdf",
- },
- ];
-
- return {
- domains,
- };
-}
diff --git a/apps/dokploy/templates/supabase/docker-compose.yml b/apps/dokploy/templates/supabase/docker-compose.yml
deleted file mode 100644
index 89339736..00000000
--- a/apps/dokploy/templates/supabase/docker-compose.yml
+++ /dev/null
@@ -1,448 +0,0 @@
-# Usage
-# Start: docker compose up
-# With helpers: docker compose -f docker-compose.yml -f ../files/dev/docker-compose.dev.yml up
-# Stop: docker compose down
-# Destroy: docker compose -f docker-compose.yml -f ../files/dev/docker-compose.dev.yml down -v --remove-orphans
-
-name: supabase
-version: "3.8"
-
-services:
- studio:
- container_name: supabase-studio
- image: supabase/studio:20240729-ce42139
-
- restart: unless-stopped
- healthcheck:
- test:
- [
- "CMD",
- "node",
- "-e",
- "require('http').get('http://localhost:3000/api/profile', (r) => {if (r.statusCode !== 200) throw new Error(r.statusCode)})",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- STUDIO_PG_META_URL: http://meta:8080
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
-
- DEFAULT_ORGANIZATION_NAME: ${STUDIO_DEFAULT_ORGANIZATION}
- DEFAULT_PROJECT_NAME: ${STUDIO_DEFAULT_PROJECT}
-
- SUPABASE_URL: http://kong:8000
- SUPABASE_PUBLIC_URL: http://${SUPABASE_HOST}
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- AUTH_JWT_SECRET: ${JWT_SECRET}
-
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_URL: http://analytics:4000
- NEXT_PUBLIC_ENABLE_LOGS: true
- # Comment to use Big Query backend for analytics
- NEXT_ANALYTICS_BACKEND_PROVIDER: postgres
- # Uncomment to use Big Query backend for analytics
- # NEXT_ANALYTICS_BACKEND_PROVIDER: bigquery
-
- kong:
- container_name: supabase-kong
- image: kong:2.8.1
- restart: unless-stopped
-
- # https://unix.stackexchange.com/a/294837
- entrypoint: bash -c 'eval "echo \"$$(cat ~/temp.yml)\"" > ~/kong.yml && /docker-entrypoint.sh kong docker-start'
- #ports:
- # - ${KONG_HTTP_PORT}:8000/tcp
- # - ${KONG_HTTPS_PORT}:8443/tcp
- expose:
- - 8000
- - 8443
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- KONG_DATABASE: "off"
- KONG_DECLARATIVE_CONFIG: /home/kong/kong.yml
- # https://github.com/supabase/cli/issues/14
- KONG_DNS_ORDER: LAST,A,CNAME
- KONG_PLUGINS: request-transformer,cors,key-auth,acl,basic-auth
- KONG_NGINX_PROXY_PROXY_BUFFER_SIZE: 160k
- KONG_NGINX_PROXY_PROXY_BUFFERS: 64 160k
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_KEY: ${SERVICE_ROLE_KEY}
- DASHBOARD_USERNAME: ${DASHBOARD_USERNAME}
- DASHBOARD_PASSWORD: ${DASHBOARD_PASSWORD}
- volumes:
- # https://github.com/supabase/supabase/issues/12661
- - ../files/volumes/api/kong.yml:/home/kong/temp.yml:ro
-
- auth:
- container_name: supabase-auth
- image: supabase/gotrue:v2.158.1
-
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "wget",
- "--no-verbose",
- "--tries=1",
- "--spider",
- "http://localhost:9999/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- GOTRUE_API_HOST: 0.0.0.0
- GOTRUE_API_PORT: 9999
- API_EXTERNAL_URL: http://${SUPABASE_HOST}
-
- GOTRUE_DB_DRIVER: postgres
- GOTRUE_DB_DATABASE_URL: postgres://supabase_auth_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:${POSTGRES_PORT}/${POSTGRES_DB}
-
- GOTRUE_SITE_URL: http://${SUPABASE_HOST}
- GOTRUE_URI_ALLOW_LIST: ${ADDITIONAL_REDIRECT_URLS}
- GOTRUE_DISABLE_SIGNUP: ${DISABLE_SIGNUP}
-
- GOTRUE_JWT_ADMIN_ROLES: service_role
- GOTRUE_JWT_AUD: authenticated
- GOTRUE_JWT_DEFAULT_GROUP_NAME: authenticated
- GOTRUE_JWT_EXP: ${JWT_EXPIRY}
- GOTRUE_JWT_SECRET: ${JWT_SECRET}
-
- GOTRUE_EXTERNAL_EMAIL_ENABLED: ${ENABLE_EMAIL_SIGNUP}
- GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED: ${ENABLE_ANONYMOUS_USERS}
- GOTRUE_MAILER_AUTOCONFIRM: ${ENABLE_EMAIL_AUTOCONFIRM}
- # GOTRUE_MAILER_SECURE_EMAIL_CHANGE_ENABLED: true
- # GOTRUE_SMTP_MAX_FREQUENCY: 1s
- GOTRUE_SMTP_ADMIN_EMAIL: ${SMTP_ADMIN_EMAIL}
- GOTRUE_SMTP_HOST: ${SMTP_HOSTNAME}
- GOTRUE_SMTP_PORT: ${SMTP_PORT}
- GOTRUE_SMTP_USER: ${SMTP_USER}
- GOTRUE_SMTP_PASS: ${SMTP_PASS}
- GOTRUE_SMTP_SENDER_NAME: ${SMTP_SENDER_NAME}
- GOTRUE_MAILER_URLPATHS_INVITE: ${MAILER_URLPATHS_INVITE}
- GOTRUE_MAILER_URLPATHS_CONFIRMATION: ${MAILER_URLPATHS_CONFIRMATION}
- GOTRUE_MAILER_URLPATHS_RECOVERY: ${MAILER_URLPATHS_RECOVERY}
- GOTRUE_MAILER_URLPATHS_EMAIL_CHANGE: ${MAILER_URLPATHS_EMAIL_CHANGE}
-
- GOTRUE_EXTERNAL_PHONE_ENABLED: ${ENABLE_PHONE_SIGNUP}
- GOTRUE_SMS_AUTOCONFIRM: ${ENABLE_PHONE_AUTOCONFIRM}
- # Uncomment to enable custom access token hook. You'll need to create a public.custom_access_token_hook function and grant necessary permissions.
- # See: https://supabase.com/docs/guides/auth/auth-hooks#hook-custom-access-token for details
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_ENABLED="true"
- # GOTRUE_HOOK_CUSTOM_ACCESS_TOKEN_URI="pg-functions://postgres/public/custom_access_token_hook"
-
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_MFA_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/mfa_verification_attempt"
-
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_ENABLED="true"
- # GOTRUE_HOOK_PASSWORD_VERIFICATION_ATTEMPT_URI="pg-functions://postgres/public/password_verification_attempt"
-
- rest:
- container_name: supabase-rest
- image: postgrest/postgrest:v12.2.0
-
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PGRST_DB_URI: postgres://authenticator:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:${POSTGRES_PORT}/${POSTGRES_DB}
- PGRST_DB_SCHEMAS: ${PGRST_DB_SCHEMAS}
- PGRST_DB_ANON_ROLE: anon
- PGRST_JWT_SECRET: ${JWT_SECRET}
- PGRST_DB_USE_LEGACY_GUCS: "false"
- PGRST_APP_SETTINGS_JWT_SECRET: ${JWT_SECRET}
- PGRST_APP_SETTINGS_JWT_EXP: ${JWT_EXPIRY}
- command: "postgrest"
-
- realtime:
- # This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain
- container_name: realtime-dev.supabase-realtime
- image: supabase/realtime:v2.30.23
-
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- healthcheck:
- test:
- [
- "CMD",
- "curl",
- "-sSfL",
- "--head",
- "-o",
- "/dev/null",
- "-H",
- "Authorization: Bearer ${ANON_KEY}",
- "http://localhost:4000/api/tenants/realtime-dev/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- PORT: 4000
- DB_HOST: ${POSTGRES_HOSTNAME}
- DB_PORT: ${POSTGRES_PORT}
- DB_USER: supabase_admin
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_NAME: ${POSTGRES_DB}
- DB_AFTER_CONNECT_QUERY: "SET search_path TO _realtime"
- DB_ENC_KEY: supabaserealtime
- API_JWT_SECRET: ${JWT_SECRET}
- SECRET_KEY_BASE: UpNVntn3cDxHJpq99YMc1T1AQgQpc8kfYTuRgBiYa15BLrx8etQoXz3gZv1/u2oq
- ERL_AFLAGS: -proto_dist inet_tcp
- DNS_NODES: "''"
- RLIMIT_NOFILE: "10000"
- APP_NAME: realtime
- SEED_SELF_HOST: true
-
- # To use S3 backed storage: docker compose -f docker-compose.yml -f docker-compose.s3.yml up
- storage:
- container_name: supabase-storage
- image: supabase/storage-api:v1.0.6
-
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- rest:
- condition: service_started
- imgproxy:
- condition: service_started
- healthcheck:
- test:
- [
- "CMD",
- "wget",
- "--no-verbose",
- "--tries=1",
- "--spider",
- "http://localhost:5000/status",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- restart: unless-stopped
- environment:
- ANON_KEY: ${ANON_KEY}
- SERVICE_KEY: ${SERVICE_ROLE_KEY}
- POSTGREST_URL: http://rest:3000
- PGRST_JWT_SECRET: ${JWT_SECRET}
- DATABASE_URL: postgres://supabase_storage_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:${POSTGRES_PORT}/${POSTGRES_DB}
- FILE_SIZE_LIMIT: 52428800
- STORAGE_BACKEND: file
- FILE_STORAGE_BACKEND_PATH: /var/lib/storage
- TENANT_ID: stub
- # TODO: https://github.com/supabase/storage-api/issues/55
- REGION: stub
- GLOBAL_S3_BUCKET: stub
- ENABLE_IMAGE_TRANSFORMATION: "true"
- IMGPROXY_URL: http://imgproxy:5001
- volumes:
- - ../files/volumes/storage:/var/lib/storage:z
-
- imgproxy:
- container_name: supabase-imgproxy
- image: darthsim/imgproxy:v3.8.0
-
- healthcheck:
- test: ["CMD", "imgproxy", "health"]
- timeout: 5s
- interval: 5s
- retries: 3
- environment:
- IMGPROXY_BIND: ":5001"
- IMGPROXY_LOCAL_FILESYSTEM_ROOT: /
- IMGPROXY_USE_ETAG: "true"
- IMGPROXY_ENABLE_WEBP_DETECTION: ${IMGPROXY_ENABLE_WEBP_DETECTION}
- volumes:
- - ../files/volumes/storage:/var/lib/storage:z
-
- meta:
- container_name: supabase-meta
- image: supabase/postgres-meta:v0.83.2
-
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- analytics:
- condition: service_healthy
- restart: unless-stopped
- environment:
- PG_META_PORT: 8080
- PG_META_DB_HOST: ${POSTGRES_HOSTNAME}
- PG_META_DB_PORT: ${POSTGRES_PORT}
- PG_META_DB_NAME: ${POSTGRES_DB}
- PG_META_DB_USER: supabase_admin
- PG_META_DB_PASSWORD: ${POSTGRES_PASSWORD}
-
- functions:
- container_name: supabase-edge-functions
- image: supabase/edge-runtime:v1.56.0
- restart: unless-stopped
-
- depends_on:
- analytics:
- condition: service_healthy
- environment:
- JWT_SECRET: ${JWT_SECRET}
- SUPABASE_URL: http://kong:8000
- SUPABASE_ANON_KEY: ${ANON_KEY}
- SUPABASE_SERVICE_ROLE_KEY: ${SERVICE_ROLE_KEY}
- SUPABASE_DB_URL: postgresql://postgres:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:${POSTGRES_PORT}/${POSTGRES_DB}
- # TODO: Allow configuring VERIFY_JWT per function. This PR might help: https://github.com/supabase/cli/pull/786
- VERIFY_JWT: "${FUNCTIONS_VERIFY_JWT}"
- volumes:
- - ../files/volumes/functions:/home/deno/functions:Z
- command:
- - start
- - --main-service
- - /home/deno/functions/main
-
- analytics:
- container_name: supabase-analytics
- image: supabase/logflare:1.4.0
-
- healthcheck:
- test: ["CMD", "curl", "http://localhost:4000/health"]
- timeout: 5s
- interval: 5s
- retries: 10
- restart: unless-stopped
- depends_on:
- db:
- # Disable this if you are using an external Postgres database
- condition: service_healthy
- # Uncomment to use Big Query backend for analytics
- # volumes:
- # - type: bind
- # source: ${PWD}/gcloud.json
- # target: /opt/app/rel/logflare/bin/gcloud.json
- # read_only: true
- environment:
- LOGFLARE_NODE_HOST: 127.0.0.1
- DB_USERNAME: supabase_admin
- DB_DATABASE: ${POSTGRES_DB}
- DB_HOSTNAME: ${POSTGRES_HOSTNAME}
- DB_PORT: ${POSTGRES_PORT}
- DB_PASSWORD: ${POSTGRES_PASSWORD}
- DB_SCHEMA: _analytics
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- LOGFLARE_SINGLE_TENANT: true
- LOGFLARE_SUPABASE_MODE: true
- LOGFLARE_MIN_CLUSTER_SIZE: 1
-
- # Comment variables to use Big Query backend for analytics
- POSTGRES_BACKEND_URL: postgresql://supabase_admin:${POSTGRES_PASSWORD}@${POSTGRES_HOSTNAME}:${POSTGRES_PORT}/${POSTGRES_DB}
- POSTGRES_BACKEND_SCHEMA: _analytics
- LOGFLARE_FEATURE_FLAG_OVERRIDE: multibackend=true
- # Uncomment to use Big Query backend for analytics
- # GOOGLE_PROJECT_ID: ${GOOGLE_PROJECT_ID}
- # GOOGLE_PROJECT_NUMBER: ${GOOGLE_PROJECT_NUMBER}
- #ports:
- # - 4000:4000
- expose:
- - 4000
-
- # Comment out everything below this point if you are using an external Postgres database
- db:
- container_name: supabase-db
- image: supabase/postgres:15.1.1.78
-
- healthcheck:
- test: pg_isready -U postgres -h localhost
- interval: 5s
- timeout: 5s
- retries: 10
- depends_on:
- vector:
- condition: service_healthy
- command:
- - postgres
- - -c
- - config_file=/etc/postgresql/postgresql.conf
- - -c
- - log_min_messages=fatal # prevents Realtime polling queries from appearing in logs
- restart: unless-stopped
- #ports:
- # # Pass down internal port because it's set dynamically by other services
- # - ${POSTGRES_PORT}:${POSTGRES_PORT}
- expose:
- - ${POSTGRES_PORT}
- environment:
- POSTGRES_HOST: /var/run/postgresql
- PGPORT: ${POSTGRES_PORT}
- POSTGRES_PORT: ${POSTGRES_PORT}
- PGPASSWORD: ${POSTGRES_PASSWORD}
- POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
- PGDATABASE: ${POSTGRES_DB}
- POSTGRES_DB: ${POSTGRES_DB}
- JWT_SECRET: ${JWT_SECRET}
- JWT_EXP: ${JWT_EXPIRY}
- volumes:
- - ../files/volumes/db/realtime.sql:/docker-entrypoint-initdb.d/migrations/99-realtime.sql:Z
- # Must be superuser to create event trigger
- - ../files/volumes/db/webhooks.sql:/docker-entrypoint-initdb.d/init-scripts/98-webhooks.sql:Z
- # Must be superuser to alter reserved role
- - ../files/volumes/db/roles.sql:/docker-entrypoint-initdb.d/init-scripts/99-roles.sql:Z
- # Initialize the database settings with JWT_SECRET and JWT_EXP
- - ../files/volumes/db/jwt.sql:/docker-entrypoint-initdb.d/init-scripts/99-jwt.sql:Z
- # PGDATA directory is persisted between restarts
- - ../files/volumes/db/data:/var/lib/postgresql/data:Z
- # Changes required for Analytics support
- - ../files/volumes/db/logs.sql:/docker-entrypoint-initdb.d/migrations/99-logs.sql:Z
- # Use named volume to persist pgsodium decryption key between restarts
- - db-config:/etc/postgresql-custom
-
- vector:
- container_name: supabase-vector
- image: timberio/vector:0.28.1-alpine
-
- healthcheck:
- test:
- [
- "CMD",
- "wget",
- "--no-verbose",
- "--tries=1",
- "--spider",
- "http://vector:9001/health",
- ]
- timeout: 5s
- interval: 5s
- retries: 3
- volumes:
- - ../files/volumes/logs/vector.yml:/etc/vector/vector.yml:ro
- - ${DOCKER_SOCKET_LOCATION}:/var/run/docker.sock:ro
- environment:
- LOGFLARE_API_KEY: ${LOGFLARE_API_KEY}
- command: ["--config", "etc/vector/vector.yml"]
-
-volumes:
- db-config:
-
-networks:
- dokploy-network:
- external: true
diff --git a/apps/dokploy/templates/supabase/index.ts b/apps/dokploy/templates/supabase/index.ts
deleted file mode 100644
index 6922c77f..00000000
--- a/apps/dokploy/templates/supabase/index.ts
+++ /dev/null
@@ -1,995 +0,0 @@
-import { createHmac } from "node:crypto";
-import {
- type DomainSchema,
- type Schema,
- type Template,
- generateBase64,
- generatePassword,
- generateRandomDomain,
-} from "../utils";
-
-interface JWTPayload {
- role: "anon" | "service_role";
- iss: string;
- iat: number;
- exp: number;
-}
-
-function base64UrlEncode(str: string): string {
- return Buffer.from(str)
- .toString("base64")
- .replace(/\+/g, "-")
- .replace(/\//g, "_")
- .replace(/=/g, "");
-}
-
-function generateJWT(payload: JWTPayload, secret: string): string {
- const header = { alg: "HS256", typ: "JWT" };
-
- const encodedHeader = base64UrlEncode(JSON.stringify(header));
- const encodedPayload = base64UrlEncode(JSON.stringify(payload));
-
- const signature = createHmac("sha256", secret)
- .update(`${encodedHeader}.${encodedPayload}`)
- .digest("base64url");
-
- return `${encodedHeader}.${encodedPayload}.${signature}`;
-}
-
-export function generateSupabaseAnonJWT(secret: string): string {
- const now = Math.floor(Date.now() / 1000);
- const payload: JWTPayload = {
- role: "anon",
- iss: "supabase",
- iat: now,
- exp: now + 100 * 365 * 24 * 60 * 60, // 100 years
- };
-
- return generateJWT(payload, secret);
-}
-
-export function generateSupabaseServiceJWT(secret: string): string {
- const now = Math.floor(Date.now() / 1000);
- const payload: JWTPayload = {
- role: "service_role",
- iss: "supabase",
- iat: now,
- exp: now + 100 * 365 * 24 * 60 * 60, // 100 years
- };
-
- return generateJWT(payload, secret);
-}
-
-export function generate(schema: Schema): Template {
- const mainDomain = generateRandomDomain(schema);
-
- const postgresPassword = generatePassword(32);
- const jwtSecret = generateBase64(32);
- const dashboardPassword = generatePassword(32);
- const logflareApiKey = generatePassword(32);
-
- const annonKey = generateSupabaseAnonJWT(jwtSecret);
- const serviceRoleKey = generateSupabaseServiceJWT(jwtSecret);
- const domains: DomainSchema[] = [
- {
- serviceName: "kong",
- host: mainDomain,
- port: 8000,
- },
- ];
-
- const envs = [
- `SUPABASE_HOST=${mainDomain}`,
- `POSTGRES_PASSWORD=${postgresPassword}`,
- `JWT_SECRET=${jwtSecret}`,
- `ANON_KEY=${annonKey}`,
- `SERVICE_ROLE_KEY=${serviceRoleKey}`,
- "DASHBOARD_USERNAME=supabase",
- `DASHBOARD_PASSWORD=${dashboardPassword}`,
- "POSTGRES_HOSTNAME=db",
- "POSTGRES_DB=postgres",
- "POSTGRES_PORT=5432",
- "KONG_HTTP_PORT=8000",
- "KONG_HTTPS_PORT=8443",
- "PGRST_DB_SCHEMAS=public,storage,graphql_public",
- "ADDITIONAL_REDIRECT_URLS=",
- "JWT_EXPIRY=3600",
- "DISABLE_SIGNUP=false",
- `MAILER_URLPATHS_CONFIRMATION=\"/auth/v1/verify\"`,
- `MAILER_URLPATHS_INVITE=\"/auth/v1/verify\"`,
- `MAILER_URLPATHS_RECOVERY=\"/auth/v1/verify\"`,
- `MAILER_URLPATHS_EMAIL_CHANGE=\"/auth/v1/verify\"`,
- "ENABLE_EMAIL_SIGNUP=true",
- "ENABLE_EMAIL_AUTOCONFIRM=false",
- "SMTP_ADMIN_EMAIL=admin@example.com",
- "SMTP_HOSTNAME=supabase-mail",
- "SMTP_PORT=2500",
- "SMTP_USER=fake_mail_user",
- "SMTP_PASS=fake_mail_password",
- "SMTP_SENDER_NAME=fake_sender",
- "ENABLE_ANONYMOUS_USERS=false",
- "ENABLE_PHONE_SIGNUP=true",
- "ENABLE_PHONE_AUTOCONFIRM=true",
- "STUDIO_DEFAULT_ORGANIZATION=Default Organization",
- "STUDIO_DEFAULT_PROJECT=Default Project",
- "STUDIO_PORT=3000",
- "IMGPROXY_ENABLE_WEBP_DETECTION=true",
- "FUNCTIONS_VERIFY_JWT=false",
- `LOGFLARE_LOGGER_BACKEND_API_KEY=${logflareApiKey}`,
- `LOGFLARE_API_KEY=${logflareApiKey}`,
- "DOCKER_SOCKET_LOCATION=/var/run/docker.sock",
- "GOOGLE_PROJECT_ID=GOOGLE_PROJECT_ID",
- "GOOGLE_PROJECT_NUMBER=GOOGLE_PROJECT_NUMBER",
- ];
-
- const mounts: Template["mounts"] = [
- {
- filePath: "/volumes/api/kong.yml",
- content: `
-_format_version: '2.1'
-_transform: true
-
-###
-### Consumers / Users
-###
-consumers:
- - username: DASHBOARD
- - username: anon
- keyauth_credentials:
- - key: $SUPABASE_ANON_KEY
- - username: service_role
- keyauth_credentials:
- - key: $SUPABASE_SERVICE_KEY
-
-###
-### Access Control List
-###
-acls:
- - consumer: anon
- group: anon
- - consumer: service_role
- group: admin
-
-###
-### Dashboard credentials
-###
-basicauth_credentials:
- - consumer: DASHBOARD
- username: $DASHBOARD_USERNAME
- password: $DASHBOARD_PASSWORD
-
-###
-### API Routes
-###
-services:
- ## Open Auth routes
- - name: auth-v1-open
- url: http://auth:9999/verify
- routes:
- - name: auth-v1-open
- strip_path: true
- paths:
- - /auth/v1/verify
- plugins:
- - name: cors
- - name: auth-v1-open-callback
- url: http://auth:9999/callback
- routes:
- - name: auth-v1-open-callback
- strip_path: true
- paths:
- - /auth/v1/callback
- plugins:
- - name: cors
- - name: auth-v1-open-authorize
- url: http://auth:9999/authorize
- routes:
- - name: auth-v1-open-authorize
- strip_path: true
- paths:
- - /auth/v1/authorize
- plugins:
- - name: cors
-
- ## Secure Auth routes
- - name: auth-v1
- _comment: 'GoTrue: /auth/v1/* -> http://auth:9999/*'
- url: http://auth:9999/
- routes:
- - name: auth-v1-all
- strip_path: true
- paths:
- - /auth/v1/
- plugins:
- - name: cors
- - name: key-auth
- config:
- hide_credentials: false
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
- - anon
-
- ## Secure REST routes
- - name: rest-v1
- _comment: 'PostgREST: /rest/v1/* -> http://rest:3000/*'
- url: http://rest:3000/
- routes:
- - name: rest-v1-all
- strip_path: true
- paths:
- - /rest/v1/
- plugins:
- - name: cors
- - name: key-auth
- config:
- hide_credentials: true
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
- - anon
-
- ## Secure GraphQL routes
- - name: graphql-v1
- _comment: 'PostgREST: /graphql/v1/* -> http://rest:3000/rpc/graphql'
- url: http://rest:3000/rpc/graphql
- routes:
- - name: graphql-v1-all
- strip_path: true
- paths:
- - /graphql/v1
- plugins:
- - name: cors
- - name: key-auth
- config:
- hide_credentials: true
- - name: request-transformer
- config:
- add:
- headers:
- - Content-Profile:graphql_public
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
- - anon
-
- ## Secure Realtime routes
- - name: realtime-v1-ws
- _comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*'
- url: http://realtime-dev.supabase-realtime:4000/socket
- protocol: ws
- routes:
- - name: realtime-v1-ws
- strip_path: true
- paths:
- - /realtime/v1/
- plugins:
- - name: cors
- - name: key-auth
- config:
- hide_credentials: false
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
- - anon
- - name: realtime-v1-rest
- _comment: 'Realtime: /realtime/v1/* -> ws://realtime:4000/socket/*'
- url: http://realtime-dev.supabase-realtime:4000/api
- protocol: http
- routes:
- - name: realtime-v1-rest
- strip_path: true
- paths:
- - /realtime/v1/api
- plugins:
- - name: cors
- - name: key-auth
- config:
- hide_credentials: false
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
- - anon
- ## Storage routes: the storage server manages its own auth
- - name: storage-v1
- _comment: 'Storage: /storage/v1/* -> http://storage:5000/*'
- url: http://storage:5000/
- routes:
- - name: storage-v1-all
- strip_path: true
- paths:
- - /storage/v1/
- plugins:
- - name: cors
-
- ## Edge Functions routes
- - name: functions-v1
- _comment: 'Edge Functions: /functions/v1/* -> http://functions:9000/*'
- url: http://functions:9000/
- routes:
- - name: functions-v1-all
- strip_path: true
- paths:
- - /functions/v1/
- plugins:
- - name: cors
-
- ## Analytics routes
- - name: analytics-v1
- _comment: 'Analytics: /analytics/v1/* -> http://logflare:4000/*'
- url: http://analytics:4000/
- routes:
- - name: analytics-v1-all
- strip_path: true
- paths:
- - /analytics/v1/
-
- ## Secure Database routes
- - name: meta
- _comment: 'pg-meta: /pg/* -> http://pg-meta:8080/*'
- url: http://meta:8080/
- routes:
- - name: meta-all
- strip_path: true
- paths:
- - /pg/
- plugins:
- - name: key-auth
- config:
- hide_credentials: false
- - name: acl
- config:
- hide_groups_header: true
- allow:
- - admin
-
- ## Protected Dashboard - catch all remaining routes
- - name: dashboard
- _comment: 'Studio: /* -> http://studio:3000/*'
- url: http://studio:3000/
- routes:
- - name: dashboard-all
- strip_path: true
- paths:
- - /
- plugins:
- - name: cors
- - name: basic-auth
- config:
- hide_credentials: true
- `,
- },
- {
- filePath: "/volumes/db/init/data.sql",
- content: `
- `,
- },
- {
- filePath: "/volumes/db/jwt.sql",
- content: `
-\\set jwt_secret \`echo "$JWT_SECRET"\`
-\\set jwt_exp \`echo "$JWT_EXP"\`
-
-ALTER DATABASE postgres SET "app.settings.jwt_secret" TO :'jwt_secret';
-ALTER DATABASE postgres SET "app.settings.jwt_exp" TO :'jwt_exp';
- `,
- },
- {
- filePath: "/volumes/db/logs.sql",
- content: `
-\\set pguser \`echo "$POSTGRES_USER"\`
-
-create schema if not exists _analytics;
-alter schema _analytics owner to :pguser;
- `,
- },
- {
- filePath: "/volumes/db/realtime.sql",
- content: `
-\\set pguser \`echo "$POSTGRES_USER"\`
-
-create schema if not exists _realtime;
-alter schema _realtime owner to :pguser;
- `,
- },
- {
- filePath: "/volumes/db/roles.sql",
- content: `
--- NOTE: change to your own passwords for production environments
-\\set pgpass \`echo "$POSTGRES_PASSWORD"\`
-
-ALTER USER authenticator WITH PASSWORD :'pgpass';
-ALTER USER pgbouncer WITH PASSWORD :'pgpass';
-ALTER USER supabase_auth_admin WITH PASSWORD :'pgpass';
-ALTER USER supabase_functions_admin WITH PASSWORD :'pgpass';
-ALTER USER supabase_storage_admin WITH PASSWORD :'pgpass';
- `,
- },
- {
- filePath: "/volumes/db/webhooks.sql",
- content: `
-BEGIN;
- -- Create pg_net extension
- CREATE EXTENSION IF NOT EXISTS pg_net SCHEMA extensions;
- -- Create supabase_functions schema
- CREATE SCHEMA supabase_functions AUTHORIZATION supabase_admin;
- GRANT USAGE ON SCHEMA supabase_functions TO postgres, anon, authenticated, service_role;
- ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON TABLES TO postgres, anon, authenticated, service_role;
- ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON FUNCTIONS TO postgres, anon, authenticated, service_role;
- ALTER DEFAULT PRIVILEGES IN SCHEMA supabase_functions GRANT ALL ON SEQUENCES TO postgres, anon, authenticated, service_role;
- -- supabase_functions.migrations definition
- CREATE TABLE supabase_functions.migrations (
- version text PRIMARY KEY,
- inserted_at timestamptz NOT NULL DEFAULT NOW()
- );
- -- Initial supabase_functions migration
- INSERT INTO supabase_functions.migrations (version) VALUES ('initial');
- -- supabase_functions.hooks definition
- CREATE TABLE supabase_functions.hooks (
- id bigserial PRIMARY KEY,
- hook_table_id integer NOT NULL,
- hook_name text NOT NULL,
- created_at timestamptz NOT NULL DEFAULT NOW(),
- request_id bigint
- );
- CREATE INDEX supabase_functions_hooks_request_id_idx ON supabase_functions.hooks USING btree (request_id);
- CREATE INDEX supabase_functions_hooks_h_table_id_h_name_idx ON supabase_functions.hooks USING btree (hook_table_id, hook_name);
- COMMENT ON TABLE supabase_functions.hooks IS 'Supabase Functions Hooks: Audit trail for triggered hooks.';
- CREATE FUNCTION supabase_functions.http_request()
- RETURNS trigger
- LANGUAGE plpgsql
- AS $function$
- DECLARE
- request_id bigint;
- payload jsonb;
- url text := TG_ARGV[0]::text;
- method text := TG_ARGV[1]::text;
- headers jsonb DEFAULT '{}'::jsonb;
- params jsonb DEFAULT '{}'::jsonb;
- timeout_ms integer DEFAULT 1000;
- BEGIN
- IF url IS NULL OR url = 'null' THEN
- RAISE EXCEPTION 'url argument is missing';
- END IF;
-
- IF method IS NULL OR method = 'null' THEN
- RAISE EXCEPTION 'method argument is missing';
- END IF;
-
- IF TG_ARGV[2] IS NULL OR TG_ARGV[2] = 'null' THEN
- headers = '{"Content-Type": "application/json"}'::jsonb;
- ELSE
- headers = TG_ARGV[2]::jsonb;
- END IF;
-
- IF TG_ARGV[3] IS NULL OR TG_ARGV[3] = 'null' THEN
- params = '{}'::jsonb;
- ELSE
- params = TG_ARGV[3]::jsonb;
- END IF;
-
- IF TG_ARGV[4] IS NULL OR TG_ARGV[4] = 'null' THEN
- timeout_ms = 1000;
- ELSE
- timeout_ms = TG_ARGV[4]::integer;
- END IF;
-
- CASE
- WHEN method = 'GET' THEN
- SELECT http_get INTO request_id FROM net.http_get(
- url,
- params,
- headers,
- timeout_ms
- );
- WHEN method = 'POST' THEN
- payload = jsonb_build_object(
- 'old_record', OLD,
- 'record', NEW,
- 'type', TG_OP,
- 'table', TG_TABLE_NAME,
- 'schema', TG_TABLE_SCHEMA
- );
-
- SELECT http_post INTO request_id FROM net.http_post(
- url,
- payload,
- params,
- headers,
- timeout_ms
- );
- ELSE
- RAISE EXCEPTION 'method argument % is invalid', method;
- END CASE;
-
- INSERT INTO supabase_functions.hooks
- (hook_table_id, hook_name, request_id)
- VALUES
- (TG_RELID, TG_NAME, request_id);
-
- RETURN NEW;
- END
- $function$;
- -- Supabase super admin
- DO
- $$
- BEGIN
- IF NOT EXISTS (
- SELECT 1
- FROM pg_roles
- WHERE rolname = 'supabase_functions_admin'
- )
- THEN
- CREATE USER supabase_functions_admin NOINHERIT CREATEROLE LOGIN NOREPLICATION;
- END IF;
- END
- $$;
- GRANT ALL PRIVILEGES ON SCHEMA supabase_functions TO supabase_functions_admin;
- GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA supabase_functions TO supabase_functions_admin;
- GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA supabase_functions TO supabase_functions_admin;
- ALTER USER supabase_functions_admin SET search_path = "supabase_functions";
- ALTER table "supabase_functions".migrations OWNER TO supabase_functions_admin;
- ALTER table "supabase_functions".hooks OWNER TO supabase_functions_admin;
- ALTER function "supabase_functions".http_request() OWNER TO supabase_functions_admin;
- GRANT supabase_functions_admin TO postgres;
- -- Remove unused supabase_pg_net_admin role
- DO
- $$
- BEGIN
- IF EXISTS (
- SELECT 1
- FROM pg_roles
- WHERE rolname = 'supabase_pg_net_admin'
- )
- THEN
- REASSIGN OWNED BY supabase_pg_net_admin TO supabase_admin;
- DROP OWNED BY supabase_pg_net_admin;
- DROP ROLE supabase_pg_net_admin;
- END IF;
- END
- $$;
- -- pg_net grants when extension is already enabled
- DO
- $$
- BEGIN
- IF EXISTS (
- SELECT 1
- FROM pg_extension
- WHERE extname = 'pg_net'
- )
- THEN
- GRANT USAGE ON SCHEMA net TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
- ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
- ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
- ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
- REVOKE ALL ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
- REVOKE ALL ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
- GRANT EXECUTE ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- GRANT EXECUTE ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- END IF;
- END
- $$;
- -- Event trigger for pg_net
- CREATE OR REPLACE FUNCTION extensions.grant_pg_net_access()
- RETURNS event_trigger
- LANGUAGE plpgsql
- AS $$
- BEGIN
- IF EXISTS (
- SELECT 1
- FROM pg_event_trigger_ddl_commands() AS ev
- JOIN pg_extension AS ext
- ON ev.objid = ext.oid
- WHERE ext.extname = 'pg_net'
- )
- THEN
- GRANT USAGE ON SCHEMA net TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
- ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SECURITY DEFINER;
- ALTER function net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
- ALTER function net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) SET search_path = net;
- REVOKE ALL ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
- REVOKE ALL ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) FROM PUBLIC;
- GRANT EXECUTE ON FUNCTION net.http_get(url text, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- GRANT EXECUTE ON FUNCTION net.http_post(url text, body jsonb, params jsonb, headers jsonb, timeout_milliseconds integer) TO supabase_functions_admin, postgres, anon, authenticated, service_role;
- END IF;
- END;
- $$;
- COMMENT ON FUNCTION extensions.grant_pg_net_access IS 'Grants access to pg_net';
- DO
- $$
- BEGIN
- IF NOT EXISTS (
- SELECT 1
- FROM pg_event_trigger
- WHERE evtname = 'issue_pg_net_access'
- ) THEN
- CREATE EVENT TRIGGER issue_pg_net_access ON ddl_command_end WHEN TAG IN ('CREATE EXTENSION')
- EXECUTE PROCEDURE extensions.grant_pg_net_access();
- END IF;
- END
- $$;
- INSERT INTO supabase_functions.migrations (version) VALUES ('20210809183423_update_grants');
- ALTER function supabase_functions.http_request() SECURITY DEFINER;
- ALTER function supabase_functions.http_request() SET search_path = supabase_functions;
- REVOKE ALL ON FUNCTION supabase_functions.http_request() FROM PUBLIC;
- GRANT EXECUTE ON FUNCTION supabase_functions.http_request() TO postgres, anon, authenticated, service_role;
-COMMIT;
- `,
- },
- {
- filePath: "/volumes/functions/hello/index.ts",
- content: `
-// Follow this setup guide to integrate the Deno language server with your editor:
-// https://deno.land/manual/getting_started/setup_your_environment
-// This enables autocomplete, go to definition, etc.
-
-import { serve } from "https://deno.land/std@0.177.1/http/server.ts"
-
-serve(async () => {
- return new Response(
- \`"Hello from Edge Functions!"\`,
- { headers: { "Content-Type": "application/json" } },
- )
-})
-
-// To invoke:
-// curl 'http://localhost:/functions/v1/hello' \\
-// --header 'Authorization: Bearer '
- `,
- },
- {
- filePath: "/volumes/functions/main/index.ts",
- content: `
-import { serve } from 'https://deno.land/std@0.131.0/http/server.ts'
-import * as jose from 'https://deno.land/x/jose@v4.14.4/index.ts'
-
-console.log('main function started')
-
-const JWT_SECRET = Deno.env.get('JWT_SECRET')
-const VERIFY_JWT = Deno.env.get('VERIFY_JWT') === 'true'
-
-function getAuthToken(req: Request) {
- const authHeader = req.headers.get('authorization')
- if (!authHeader) {
- throw new Error('Missing authorization header')
- }
- const [bearer, token] = authHeader.split(' ')
- if (bearer !== 'Bearer') {
- throw new Error(\`Auth header is not 'Bearer {token}'\`)
- }
- return token
-}
-
-async function verifyJWT(jwt: string): Promise {
- const encoder = new TextEncoder()
- const secretKey = encoder.encode(JWT_SECRET)
- try {
- await jose.jwtVerify(jwt, secretKey)
- } catch (err) {
- console.error(err)
- return false
- }
- return true
-}
-
-serve(async (req: Request) => {
- if (req.method !== 'OPTIONS' && VERIFY_JWT) {
- try {
- const token = getAuthToken(req)
- const isValidJWT = await verifyJWT(token)
-
- if (!isValidJWT) {
- return new Response(JSON.stringify({ msg: 'Invalid JWT' }), {
- status: 401,
- headers: { 'Content-Type': 'application/json' },
- })
- }
- } catch (e) {
- console.error(e)
- return new Response(JSON.stringify({ msg: e.toString() }), {
- status: 401,
- headers: { 'Content-Type': 'application/json' },
- })
- }
- }
-
- const url = new URL(req.url)
- const { pathname } = url
- const path_parts = pathname.split('/')
- const service_name = path_parts[1]
-
- if (!service_name || service_name === '') {
- const error = { msg: 'missing function name in request' }
- return new Response(JSON.stringify(error), {
- status: 400,
- headers: { 'Content-Type': 'application/json' },
- })
- }
-
- const servicePath = \`/home/deno/functions/\${service_name}\`
- console.error(\`serving the request with \${servicePath}\`)
-
- const memoryLimitMb = 150
- const workerTimeoutMs = 1 * 60 * 1000
- const noModuleCache = false
- const importMapPath = null
- const envVarsObj = Deno.env.toObject()
- const envVars = Object.keys(envVarsObj).map((k) => [k, envVarsObj[k]])
-
- try {
- const worker = await EdgeRuntime.userWorkers.create({
- servicePath,
- memoryLimitMb,
- workerTimeoutMs,
- noModuleCache,
- importMapPath,
- envVars,
- })
- return await worker.fetch(req)
- } catch (e) {
- const error = { msg: e.toString() }
- return new Response(JSON.stringify(error), {
- status: 500,
- headers: { 'Content-Type': 'application/json' },
- })
- }
-})
- `,
- },
- {
- filePath: "/volumes/logs/vector.yml",
- content: `
-api:
- enabled: true
- address: 0.0.0.0:9001
-
-sources:
- docker_host:
- type: docker_logs
- exclude_containers:
- - supabase-vector
-
-transforms:
- project_logs:
- type: remap
- inputs:
- - docker_host
- source: |-
- .project = "default"
- .event_message = del(.message)
- .appname = del(.container_name)
- del(.container_created_at)
- del(.container_id)
- del(.source_type)
- del(.stream)
- del(.label)
- del(.image)
- del(.host)
- del(.stream)
- router:
- type: route
- inputs:
- - project_logs
- route:
- kong: '.appname == "supabase-kong"'
- auth: '.appname == "supabase-auth"'
- rest: '.appname == "supabase-rest"'
- realtime: '.appname == "supabase-realtime"'
- storage: '.appname == "supabase-storage"'
- functions: '.appname == "supabase-functions"'
- db: '.appname == "supabase-db"'
- # Ignores non nginx errors since they are related with kong booting up
- kong_logs:
- type: remap
- inputs:
- - router.kong
- source: |-
- req, err = parse_nginx_log(.event_message, "combined")
- if err == null {
- .timestamp = req.timestamp
- .metadata.request.headers.referer = req.referer
- .metadata.request.headers.user_agent = req.agent
- .metadata.request.headers.cf_connecting_ip = req.client
- .metadata.request.method = req.method
- .metadata.request.path = req.path
- .metadata.request.protocol = req.protocol
- .metadata.response.status_code = req.status
- }
- if err != null {
- abort
- }
- # Ignores non nginx errors since they are related with kong booting up
- kong_err:
- type: remap
- inputs:
- - router.kong
- source: |-
- .metadata.request.method = "GET"
- .metadata.response.status_code = 200
- parsed, err = parse_nginx_log(.event_message, "error")
- if err == null {
- .timestamp = parsed.timestamp
- .severity = parsed.severity
- .metadata.request.host = parsed.host
- .metadata.request.headers.cf_connecting_ip = parsed.client
- url, err = split(parsed.request, " ")
- if err == null {
- .metadata.request.method = url[0]
- .metadata.request.path = url[1]
- .metadata.request.protocol = url[2]
- }
- }
- if err != null {
- abort
- }
- # Gotrue logs are structured json strings which frontend parses directly. But we keep metadata for consistency.
- auth_logs:
- type: remap
- inputs:
- - router.auth
- source: |-
- parsed, err = parse_json(.event_message)
- if err == null {
- .metadata.timestamp = parsed.time
- .metadata = merge!(.metadata, parsed)
- }
- # PostgREST logs are structured so we separate timestamp from message using regex
- rest_logs:
- type: remap
- inputs:
- - router.rest
- source: |-
- parsed, err = parse_regex(.event_message, r'^(?P