From 949cce10978b874204d9ba0fcc274e6ddd06679d Mon Sep 17 00:00:00 2001 From: Xidik Date: Sun, 22 Mar 2026 22:02:13 +0700 Subject: [PATCH 01/39] fix(service): allow overriding GOTRUE_SITE_URL in Supabase template The Supabase template hardcoded GOTRUE_SITE_URL to the internal Supabase Kong URL, which caused OAuth redirects to go to the Supabase API domain instead of the user's frontend domain. This broke Google OAuth, magic links, and other redirect-based auth flows. Allow users to set GOTRUE_SITE_URL in the Coolify UI to their frontend domain while keeping the Supabase URL as a sensible default. Fixes #5581 --- templates/compose/supabase.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/supabase.yaml b/templates/compose/supabase.yaml index fad059a08..496bade26 100644 --- a/templates/compose/supabase.yaml +++ b/templates/compose/supabase.yaml @@ -975,7 +975,7 @@ services: - GOTRUE_DB_DRIVER=postgres - GOTRUE_DB_DATABASE_URL=postgres://supabase_auth_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOSTNAME:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres} # The base URL your site is located at. Currently used in combination with other settings to construct URLs used in emails. - - GOTRUE_SITE_URL=${SERVICE_URL_SUPABASEKONG} + - GOTRUE_SITE_URL=${GOTRUE_SITE_URL:-${SERVICE_URL_SUPABASEKONG}} # A comma separated list of URIs (e.g. "https://foo.example.com,https://*.foo.example.com,https://bar.example.com") which are permitted as valid redirect_to destinations. - GOTRUE_URI_ALLOW_LIST=${ADDITIONAL_REDIRECT_URLS} - GOTRUE_DISABLE_SIGNUP=${DISABLE_SIGNUP:-false} From 9ca65313eab1a6391b9b30a8d4a3cbf83b407e61 Mon Sep 17 00:00:00 2001 From: Xidik Date: Sun, 22 Mar 2026 22:06:48 +0700 Subject: [PATCH 02/39] fix(service): add CORS defaults to Directus templates The Directus service templates were missing CORS configuration, causing preflight OPTIONS requests to fail when connecting from frontend apps. Users had to manually edit the compose file to add CORS variables. Add sensible CORS defaults (enabled with dynamic origin matching) to both directus.yaml and directus-with-postgresql.yaml templates. All values are user-overridable via the Coolify UI. Fixes #5024 --- templates/compose/directus-with-postgresql.yaml | 5 +++++ templates/compose/directus.yaml | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/templates/compose/directus-with-postgresql.yaml b/templates/compose/directus-with-postgresql.yaml index c35e411fd..3aaa8f139 100644 --- a/templates/compose/directus-with-postgresql.yaml +++ b/templates/compose/directus-with-postgresql.yaml @@ -27,6 +27,11 @@ services: - REDIS_HOST=redis - REDIS_PORT=6379 - WEBSOCKETS_ENABLED=true + - CORS_ENABLED=${CORS_ENABLED:-true} + - CORS_ORIGIN=${CORS_ORIGIN:-true} + - CORS_METHODS=${CORS_METHODS:-GET,POST,PATCH,DELETE,OPTIONS} + - CORS_ALLOWED_HEADERS=${CORS_ALLOWED_HEADERS:-Content-Type,Authorization} + - CORS_CREDENTIALS=${CORS_CREDENTIALS:-true} healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8055/admin/login"] interval: 5s diff --git a/templates/compose/directus.yaml b/templates/compose/directus.yaml index 36589c72a..5c02ab1a3 100644 --- a/templates/compose/directus.yaml +++ b/templates/compose/directus.yaml @@ -22,6 +22,11 @@ services: - DB_CLIENT=sqlite3 - DB_FILENAME=/directus/database/data.db - WEBSOCKETS_ENABLED=true + - CORS_ENABLED=${CORS_ENABLED:-true} + - CORS_ORIGIN=${CORS_ORIGIN:-true} + - CORS_METHODS=${CORS_METHODS:-GET,POST,PATCH,DELETE,OPTIONS} + - CORS_ALLOWED_HEADERS=${CORS_ALLOWED_HEADERS:-Content-Type,Authorization} + - CORS_CREDENTIALS=${CORS_CREDENTIALS:-true} healthcheck: test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:8055/admin/login"] From 9c0bc042ff699a811e99759e430d5ebc22390216 Mon Sep 17 00:00:00 2001 From: Ricky Wanga Date: Mon, 23 Mar 2026 12:55:25 +0100 Subject: [PATCH 03/39] feat: add grimmory service and database configuration to compose template --- public/svgs/grimmory.svg | 4 +++ templates/compose/grimmory.yaml | 49 +++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) create mode 100644 public/svgs/grimmory.svg create mode 100644 templates/compose/grimmory.yaml diff --git a/public/svgs/grimmory.svg b/public/svgs/grimmory.svg new file mode 100644 index 000000000..cd8230fa2 --- /dev/null +++ b/public/svgs/grimmory.svg @@ -0,0 +1,4 @@ + + + + diff --git a/templates/compose/grimmory.yaml b/templates/compose/grimmory.yaml new file mode 100644 index 000000000..aae7c785e --- /dev/null +++ b/templates/compose/grimmory.yaml @@ -0,0 +1,49 @@ +# documentation: https://github.com/grimmory-tools/grimmory +# slogan: Grimmory is a self-hosted application for managing your entire book collection in one place. Organize, read, annotate, sync across devices, and share without relying on third-party services. +# tags: books,ebooks,library,reader +# logo: svgs/grimmory.svg +# port: 80 + +services: + grimmory: + image: 'grimmory/grimmory:latest' + environment: + - SERVICE_URL_GRIMMORY_80 + - 'USER_ID=${GRIMMORY_USER_ID:-0}' + - 'GROUP_ID=${GRIMMORY_GROUP_ID:-0}' + - 'TZ=${TZ:-UTC}' + - 'DATABASE_URL=jdbc:mariadb://mariadb:3306/${MARIADB_DATABASE:-grimmory-db}' + - 'DATABASE_USERNAME=${SERVICE_USER_MARIADB}' + - 'DATABASE_PASSWORD=${SERVICE_PASSWORD_MARIADB}' + - BOOKLORE_PORT=80 + volumes: + - 'grimmory-data:/app/data' + - 'grimmory-books:/books' + - 'grimmory-bookdrop:/bookdrop' + healthcheck: + test: 'wget --no-verbose --tries=1 --spider http://localhost/login || exit 1' + interval: 10s + timeout: 5s + retries: 10 + depends_on: + mariadb: + condition: service_healthy + + mariadb: + image: 'mariadb:12' + environment: + - 'MARIADB_USER=${SERVICE_USER_MARIADB}' + - 'MARIADB_PASSWORD=${SERVICE_PASSWORD_MARIADB}' + - 'MARIADB_ROOT_PASSWORD=${SERVICE_PASSWORD_MARIADBROOT}' + - 'MARIADB_DATABASE=${MARIADB_DATABASE:-grimmory-db}' + volumes: + - 'mariadb-data:/var/lib/mysql' + healthcheck: + test: + - CMD + - healthcheck.sh + - '--connect' + - '--innodb_initialized' + interval: 10s + timeout: 5s + retries: 10 \ No newline at end of file From e895a1d23681164d553d2779d6da64d26ca927de Mon Sep 17 00:00:00 2001 From: Frank Raa Date: Mon, 30 Mar 2026 20:40:07 +0200 Subject: [PATCH 04/39] fix(templates): fix n8n and task-runners health check endpoints --- templates/compose/n8n-with-postgres-and-worker.yaml | 4 ++-- templates/compose/n8n-with-postgresql.yaml | 4 ++-- templates/compose/n8n.yaml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/templates/compose/n8n-with-postgres-and-worker.yaml b/templates/compose/n8n-with-postgres-and-worker.yaml index b7d381399..286038551 100644 --- a/templates/compose/n8n-with-postgres-and-worker.yaml +++ b/templates/compose/n8n-with-postgres-and-worker.yaml @@ -48,7 +48,7 @@ services: redis: condition: service_healthy healthcheck: - test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/"] + test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/healthz"] interval: 5s timeout: 20s retries: 10 @@ -133,7 +133,7 @@ services: healthcheck: test: - CMD-SHELL - - 'wget -qO- http://127.0.0.1:5680/' + - 'wget -qO- http://127.0.0.1:5680/healthz' interval: 5s timeout: 20s retries: 10 diff --git a/templates/compose/n8n-with-postgresql.yaml b/templates/compose/n8n-with-postgresql.yaml index d7096add2..4d1f9e970 100644 --- a/templates/compose/n8n-with-postgresql.yaml +++ b/templates/compose/n8n-with-postgresql.yaml @@ -41,7 +41,7 @@ services: postgresql: condition: service_healthy healthcheck: - test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/"] + test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/healthz"] interval: 5s timeout: 20s retries: 10 @@ -58,7 +58,7 @@ services: healthcheck: test: - CMD-SHELL - - 'wget -qO- http://127.0.0.1:5680/' + - 'wget -qO- http://127.0.0.1:5680/healthz' interval: 5s timeout: 20s retries: 10 diff --git a/templates/compose/n8n.yaml b/templates/compose/n8n.yaml index ff5ee90b2..46a1a9fc5 100644 --- a/templates/compose/n8n.yaml +++ b/templates/compose/n8n.yaml @@ -32,7 +32,7 @@ services: volumes: - n8n-data:/home/node/.n8n healthcheck: - test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/"] + test: ["CMD-SHELL", "wget -qO- http://127.0.0.1:5678/healthz"] interval: 5s timeout: 20s retries: 10 @@ -49,7 +49,7 @@ services: healthcheck: test: - CMD-SHELL - - 'wget -qO- http://127.0.0.1:5680/' + - 'wget -qO- http://127.0.0.1:5680/healthz' interval: 5s timeout: 20s retries: 10 From 1344093a130089a83bccfce37160c1c1b006a2b9 Mon Sep 17 00:00:00 2001 From: Gauthier POGAM--LE MONTAGNER Date: Tue, 31 Mar 2026 19:16:44 +0200 Subject: [PATCH 05/39] fix(service): fix librechat healthcheck --- templates/compose/librechat.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/librechat.yaml b/templates/compose/librechat.yaml index 575411443..952937b2c 100644 --- a/templates/compose/librechat.yaml +++ b/templates/compose/librechat.yaml @@ -64,7 +64,7 @@ services: "--no-verbose", "--tries=1", "--spider", - "http://127.0.0.1:3080/api/health", + "http://127.0.0.1:3080/health", ] interval: 5s timeout: 10s From 3a252fa64b829a4db797217a8d6c482af80be43c Mon Sep 17 00:00:00 2001 From: Gauthier POGAM--LE MONTAGNER Date: Tue, 31 Mar 2026 19:17:21 +0200 Subject: [PATCH 06/39] feat(service): upgrade meilisearch image to v1.35.1 in librechat template --- templates/compose/librechat.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/librechat.yaml b/templates/compose/librechat.yaml index 952937b2c..ee4c10b93 100644 --- a/templates/compose/librechat.yaml +++ b/templates/compose/librechat.yaml @@ -92,7 +92,7 @@ services: retries: 3 meilisearch: - image: getmeili/meilisearch:v1.12.3 + image: getmeili/meilisearch:v1.35.1 environment: - MEILI_MASTER_KEY=${SERVICE_PASSWORD_MEILI} - MEILI_NO_ANALYTICS=${MEILI_NO_ANALYTICS:-false} From 83df12fdacdac110429767ca33b63cc4ec0bc287 Mon Sep 17 00:00:00 2001 From: Romain ROCHAS Date: Wed, 1 Apr 2026 19:58:30 +0200 Subject: [PATCH 07/39] update(template): update Rivet template --- templates/compose/rivet-engine.yaml | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/templates/compose/rivet-engine.yaml b/templates/compose/rivet-engine.yaml index 608cdaac3..e77561cca 100644 --- a/templates/compose/rivet-engine.yaml +++ b/templates/compose/rivet-engine.yaml @@ -7,14 +7,13 @@ services: rivet-engine: - image: rivetkit/engine:25.8.0 + image: rivetdev/engine:2.2.0 environment: - SERVICE_URL_RIVET_6420 - - 'RIVET__AUTH__ADMIN_TOKEN=${SERVICE_PASSWORD_RIVET}' - - RIVET__POSTGRES__URL=postgresql://$SERVICE_USER_POSTGRESQL:$SERVICE_PASSWORD_POSTGRESQL@postgresql:5432/${POSTGRESQL_DATABASE-rivet} - depends_on: - postgresql: - condition: service_healthy + - RIVET__FILE_SYSTEM__PATH=/data + - 'RIVET__AUTH__ADMIN_TOKEN=${SERVICE_BASE64_TOKEN}' + volumes: + - 'rivet-data:/data' healthcheck: test: - CMD @@ -24,19 +23,4 @@ services: interval: 2s timeout: 10s retries: 10 - start_period: 30s - - postgresql: - image: postgres:17-alpine - volumes: - - rivet-postgresql-data:/var/lib/postgresql/data - environment: - - POSTGRES_USER=${SERVICE_USER_POSTGRESQL} - - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRESQL} - - POSTGRES_DB=${POSTGRESQL_DATABASE-rivet} - healthcheck: - test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"] - interval: 5s - timeout: 20s - retries: 10 - + start_period: 30s \ No newline at end of file From bda205c723304e9ea4b2832860898e3b953cf06b Mon Sep 17 00:00:00 2001 From: Iisyourdad Date: Wed, 1 Apr 2026 14:57:43 -0500 Subject: [PATCH 08/39] Change Minecraft catagory from media to games --- templates/compose/minecraft.yaml | 2 +- templates/service-templates-latest.json | 2 +- templates/service-templates.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/templates/compose/minecraft.yaml b/templates/compose/minecraft.yaml index 507bbb8bb..46ae437bb 100644 --- a/templates/compose/minecraft.yaml +++ b/templates/compose/minecraft.yaml @@ -1,6 +1,6 @@ # documentation: https://github.com/itzg/docker-minecraft-server # slogan: Minecraft Server that will automatically download selected version at startup. -# category: media +# category: games # tags: minecraft # logo: svgs/minecraft.svg # port: 25565 diff --git a/templates/service-templates-latest.json b/templates/service-templates-latest.json index 51cb39de0..e7dd82721 100644 --- a/templates/service-templates-latest.json +++ b/templates/service-templates-latest.json @@ -2837,7 +2837,7 @@ "tags": [ "minecraft" ], - "category": "media", + "category": "games", "logo": "svgs/minecraft.svg", "minversion": "0.0.0", "port": "25565" diff --git a/templates/service-templates.json b/templates/service-templates.json index 85445faf6..b863db7f9 100644 --- a/templates/service-templates.json +++ b/templates/service-templates.json @@ -2837,7 +2837,7 @@ "tags": [ "minecraft" ], - "category": "media", + "category": "games", "logo": "svgs/minecraft.svg", "minversion": "0.0.0", "port": "25565" From 2da2d9c44a48778fdfef44bd2d0e6c740d82128f Mon Sep 17 00:00:00 2001 From: Vadko Date: Fri, 13 Feb 2026 02:46:08 +0200 Subject: [PATCH 09/39] chore: update Supabase template to latest versions Updated all Supabase service images to latest versions: - studio: 2026.01.07 -> 2026.01.27-sha-6aa59ff - postgres: 15.8.1.048 -> 15.8.1.085 - logflare: 1.4.0 -> 1.30.3 - postgrest: v12.2.12 -> v14.3 - gotrue: v2.174.0 -> v2.185.0 - realtime: v2.34.47 -> v2.72.0 - storage-api: v1.14.6 -> v1.37.1 - imgproxy: v3.8.0 -> v3.30.1 - postgres-meta: v0.89.3 -> v0.95.2 - edge-runtime: v1.67.4 -> v1.70.0 - supavisor: 2.5.1 -> 2.7.4 Config changes: - analytics: LOGFLARE_API_KEY replaced with LOGFLARE_PUBLIC/PRIVATE_ACCESS_TOKEN, removed LOGFLARE_SINGLE_TENANT_MODE and LOGFLARE_MIN_CLUSTER_SIZE - studio: added POSTGRES_PORT/DB, LOGFLARE_*_ACCESS_TOKEN, SNIPPETS/EDGE_FUNCTIONS management, volumes; removed CURRENT_CLI_VERSION, SUPABASE_PUBLIC_API - imgproxy: added IMGPROXY_BIND, IMGPROXY_MAX_SRC_RESOLUTION - meta: added CRYPTO_KEY - realtime: removed FLY_ALLOC_ID, FLY_APP_NAME, ENABLE_TAILSCALE; added DISABLE_HEALTHCHECK_LOGGING - storage: removed obsolete commented-out env vars --- templates/compose/supabase.yaml | 69 +++++++++++++-------------------- 1 file changed, 27 insertions(+), 42 deletions(-) diff --git a/templates/compose/supabase.yaml b/templates/compose/supabase.yaml index fad059a08..a1e822ab3 100644 --- a/templates/compose/supabase.yaml +++ b/templates/compose/supabase.yaml @@ -33,7 +33,7 @@ services: - 'KONG_STORAGE_WRITE_TIMEOUT=${KONG_STORAGE_WRITE_TIMEOUT:-3600}' - 'KONG_STORAGE_READ_TIMEOUT=${KONG_STORAGE_READ_TIMEOUT:-3600}' - 'KONG_STORAGE_REQUEST_BUFFERING=${KONG_STORAGE_REQUEST_BUFFERING:-false}' - - 'KONG_STORAGE_RESPONSE_BUFFERING=${KONG_STORAGE_RESPONSE_BUFFERING:-false}' + - 'KONG_STORAGE_RESPONSE_BUFFERING=${KONG_STORAGE_RESPONSE_BUFFERING:-false}' volumes: # https://github.com/supabase/supabase/issues/12661 - type: bind @@ -290,7 +290,7 @@ services: config: hide_credentials: true supabase-studio: - image: supabase/studio:2026.01.07-sha-037e5f9 + image: supabase/studio:2026.01.27-sha-6aa59ff healthcheck: test: [ @@ -310,7 +310,8 @@ services: - STUDIO_PG_META_URL=http://supabase-meta:8080 - POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - POSTGRES_HOST=${POSTGRES_HOST:-supabase-db} - - CURRENT_CLI_VERSION=2.67.1 + - POSTGRES_PORT=${POSTGRES_PORT:-5432} + - POSTGRES_DB=${POSTGRES_DB:-postgres} - DEFAULT_ORGANIZATION_NAME=${STUDIO_DEFAULT_ORGANIZATION:-Default Organization} - DEFAULT_PROJECT_NAME=${STUDIO_DEFAULT_PROJECT:-Default Project} @@ -322,8 +323,9 @@ services: - AUTH_JWT_SECRET=${SERVICE_PASSWORD_JWT} - LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE} + - LOGFLARE_PUBLIC_ACCESS_TOKEN=${SERVICE_PASSWORD_LOGFLARE} + - LOGFLARE_PRIVATE_ACCESS_TOKEN=${SERVICE_PASSWORD_LOGFLARE} - LOGFLARE_URL=http://supabase-analytics:4000 - - 'SUPABASE_PUBLIC_API=${SERVICE_URL_SUPABASEKONG}' # Next.js client-side environment variables (required for browser access) - 'NEXT_PUBLIC_SUPABASE_URL=${SERVICE_URL_SUPABASEKONG}' - NEXT_PUBLIC_SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY} @@ -333,8 +335,13 @@ services: # Uncomment to use Big Query backend for analytics # NEXT_ANALYTICS_BACKEND_PROVIDER=bigquery - 'OPENAI_API_KEY=${OPENAI_API_KEY}' + - SNIPPETS_MANAGEMENT_FOLDER=/app/snippets + - EDGE_FUNCTIONS_MANAGEMENT_FOLDER=/app/edge-functions + volumes: + - ./volumes/snippets:/app/snippets + - ./volumes/functions:/app/edge-functions supabase-db: - image: supabase/postgres:15.8.1.048 + image: supabase/postgres:15.8.1.085 healthcheck: test: pg_isready -U postgres -h 127.0.0.1 interval: 5s @@ -633,7 +640,7 @@ services: - supabase-db-config:/etc/postgresql-custom supabase-analytics: - image: supabase/logflare:1.4.0 + image: supabase/logflare:1.30.3 healthcheck: test: ["CMD", "curl", "http://127.0.0.1:4000/health"] timeout: 5s @@ -655,11 +662,10 @@ services: - DB_PORT=${POSTGRES_PORT:-5432} - DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES} - DB_SCHEMA=_analytics - - LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE} + - LOGFLARE_PUBLIC_ACCESS_TOKEN=${SERVICE_PASSWORD_LOGFLARE} + - LOGFLARE_PRIVATE_ACCESS_TOKEN=${SERVICE_PASSWORD_LOGFLARE} - LOGFLARE_SINGLE_TENANT=true - - LOGFLARE_SINGLE_TENANT_MODE=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:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOSTNAME:-supabase-db}:${POSTGRES_PORT:-5432}/_supabase @@ -929,7 +935,7 @@ services: command: ["--config", "etc/vector/vector.yml"] supabase-rest: - image: postgrest/postgrest:v12.2.12 + image: postgrest/postgrest:v14.3 depends_on: supabase-db: # Disable this if you are using an external Postgres database @@ -947,7 +953,7 @@ services: command: "postgrest" exclude_from_hc: true supabase-auth: - image: supabase/gotrue:v2.174.0 + image: supabase/gotrue:v2.185.0 depends_on: supabase-db: # Disable this if you are using an external Postgres database @@ -1038,7 +1044,7 @@ services: realtime-dev: # This container name looks inconsistent but is correct because realtime constructs tenant id by parsing the subdomain - image: supabase/realtime:v2.34.47 + image: supabase/realtime:v2.72.0 container_name: realtime-dev.supabase-realtime depends_on: supabase-db: @@ -1072,11 +1078,8 @@ services: - DB_AFTER_CONNECT_QUERY=SET search_path TO _realtime - DB_ENC_KEY=supabaserealtime - API_JWT_SECRET=${SERVICE_PASSWORD_JWT} - - FLY_ALLOC_ID=fly123 - - FLY_APP_NAME=realtime - SECRET_KEY_BASE=${SECRET_PASSWORD_REALTIME} - ERL_AFLAGS=-proto_dist inet_tcp - - ENABLE_TAILSCALE=false - DNS_NODES='' - RLIMIT_NOFILE=10000 - APP_NAME=realtime @@ -1084,6 +1087,7 @@ services: - LOG_LEVEL=error - RUN_JANITOR=true - JANITOR_INTERVAL=60000 + - DISABLE_HEALTHCHECK_LOGGING=true command: > sh -c "/app/bin/migrate && /app/bin/realtime eval 'Realtime.Release.seeds(Realtime.Repo)' && /app/bin/server" supabase-minio: @@ -1121,7 +1125,7 @@ services: exit 0 supabase-storage: - image: supabase/storage-api:v1.14.6 + image: supabase/storage-api:v1.37.1 depends_on: supabase-db: # Disable this if you are using an external Postgres database @@ -1168,46 +1172,26 @@ services: - DATABASE_SEARCH_PATH=storage - NODE_ENV=production - REQUEST_ALLOW_X_FORWARDED_PATH=true - - # - ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzA4OTg4NDAwLAogICJleHAiOiAxODY2ODQxMjAwCn0.jCDqsoXGT58JnAjf27KOowNQsokkk0aR7rdbGG18P-8 - # - SERVICE_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogInNlcnZpY2Vfcm9sZSIsCiAgImlzcyI6ICJzdXBhYmFzZSIsCiAgImlhdCI6IDE3MDg5ODg0MDAsCiAgImV4cCI6IDE4NjY4NDEyMDAKfQ.GA7yF2BmqTzqGkP_oqDdJAQVt0djjIxGYuhE0zFDJV4 - # - POSTGREST_URL=http://supabase-rest:3000 - # - PGRST_JWT_SECRET=${SERVICE_PASSWORD_JWT} - # - DATABASE_URL=postgres://supabase_storage_admin:${SERVICE_PASSWORD_POSTGRES}@${POSTGRES_HOSTNAME:-supabase-db}:${POSTGRES_PORT:-5432}/${POSTGRES_DB:-postgres} - # - FILE_SIZE_LIMIT=52428800 - # - STORAGE_BACKEND=s3 - # - STORAGE_S3_BUCKET=stub - # - STORAGE_S3_ENDPOINT=http://supabase-minio:9000 - # - STORAGE_S3_PROTOCOL=http - # - STORAGE_S3_REGION=stub - # - STORAGE_S3_FORCE_PATH_STYLE=true - # - AWS_ACCESS_KEY_ID=${SERVICE_USER_MINIO} - # - AWS_SECRET_ACCESS_KEY=${SERVICE_PASSWORD_MINIO} - # - AWS_DEFAULT_REGION=stub - # - FILE_STORAGE_BACKEND_PATH=/var/lib/storage - # - TENANT_ID=stub - # # TODO: https://github.com/supabase/storage-api/issues/55 - # - REGION=stub - # - ENABLE_IMAGE_TRANSFORMATION=true - # - IMGPROXY_URL=http://imgproxy:8080 volumes: - ./volumes/storage:/var/lib/storage imgproxy: - image: darthsim/imgproxy:v3.8.0 + image: darthsim/imgproxy:v3.30.1 healthcheck: test: ["CMD", "imgproxy", "health"] timeout: 5s interval: 5s retries: 3 environment: + - IMGPROXY_BIND=:8080 - IMGPROXY_LOCAL_FILESYSTEM_ROOT=/ - IMGPROXY_USE_ETAG=true - IMGPROXY_ENABLE_WEBP_DETECTION=${IMGPROXY_ENABLE_WEBP_DETECTION:-true} + - IMGPROXY_MAX_SRC_RESOLUTION=16.8 volumes: - ./volumes/storage:/var/lib/storage supabase-meta: - image: supabase/postgres-meta:v0.89.3 + image: supabase/postgres-meta:v0.95.2 depends_on: supabase-db: # Disable this if you are using an external Postgres database @@ -1221,9 +1205,10 @@ services: - PG_META_DB_NAME=${POSTGRES_DB:-postgres} - PG_META_DB_USER=supabase_admin - PG_META_DB_PASSWORD=${SERVICE_PASSWORD_POSTGRES} + - CRYPTO_KEY=${SERVICE_PASSWORD_PGMETACRYPTO} supabase-edge-functions: - image: supabase/edge-runtime:v1.67.4 + image: supabase/edge-runtime:v1.70.0 depends_on: supabase-analytics: condition: service_healthy @@ -1367,7 +1352,7 @@ services: - /home/deno/functions/main supabase-supavisor: - image: 'supabase/supavisor:2.5.1' + image: 'supabase/supavisor:2.7.4' healthcheck: test: - CMD From b5a21543c3e4495dcbc50686ed4fbbbd6e8ba344 Mon Sep 17 00:00:00 2001 From: Vadko Date: Fri, 13 Feb 2026 13:30:01 +0200 Subject: [PATCH 10/39] fix(supabase): fix TUS resumable upload 401 by adding leading slash to TUS_URL_PATH --- templates/compose/supabase.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/supabase.yaml b/templates/compose/supabase.yaml index a1e822ab3..d4843e7f4 100644 --- a/templates/compose/supabase.yaml +++ b/templates/compose/supabase.yaml @@ -1164,7 +1164,7 @@ services: - UPLOAD_FILE_SIZE_LIMIT=524288000 - UPLOAD_FILE_SIZE_LIMIT_STANDARD=524288000 - UPLOAD_SIGNED_URL_EXPIRATION_TIME=120 - - TUS_URL_PATH=upload/resumable + - TUS_URL_PATH=/upload/resumable - TUS_MAX_SIZE=3600000 - ENABLE_IMAGE_TRANSFORMATION=true - IMGPROXY_URL=http://imgproxy:8080 From 16617b90095b7317f8f52db7747d16f4de0af71f Mon Sep 17 00:00:00 2001 From: Vadko Date: Fri, 27 Feb 2026 00:06:50 +0200 Subject: [PATCH 11/39] fix(supabase): update to latest versions, fix vector config, add missing env vars --- templates/compose/supabase.yaml | 75 +++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 26 deletions(-) diff --git a/templates/compose/supabase.yaml b/templates/compose/supabase.yaml index d4843e7f4..04dcb5ef9 100644 --- a/templates/compose/supabase.yaml +++ b/templates/compose/supabase.yaml @@ -290,7 +290,7 @@ services: config: hide_credentials: true supabase-studio: - image: supabase/studio:2026.01.27-sha-6aa59ff + image: supabase/studio:2026.02.16-sha-26c615c healthcheck: test: [ @@ -321,6 +321,7 @@ services: - SUPABASE_ANON_KEY=${SERVICE_SUPABASEANON_KEY} - SUPABASE_SERVICE_KEY=${SERVICE_SUPABASESERVICE_KEY} - AUTH_JWT_SECRET=${SERVICE_PASSWORD_JWT} + - PG_META_CRYPTO_KEY=${SERVICE_PASSWORD_PGMETACRYPTO} - LOGFLARE_API_KEY=${SERVICE_PASSWORD_LOGFLARE} - LOGFLARE_PUBLIC_ACCESS_TOKEN=${SERVICE_PASSWORD_LOGFLARE} @@ -640,7 +641,7 @@ services: - supabase-db-config:/etc/postgresql-custom supabase-analytics: - image: supabase/logflare:1.30.3 + image: supabase/logflare:1.31.2 healthcheck: test: ["CMD", "curl", "http://127.0.0.1:4000/health"] timeout: 5s @@ -676,7 +677,7 @@ services: # GOOGLE_PROJECT_ID=${GOOGLE_PROJECT_ID} # GOOGLE_PROJECT_NUMBER=${GOOGLE_PROJECT_NUMBER} supabase-vector: - image: timberio/vector:0.28.1-alpine + image: timberio/vector:0.53.0-alpine healthcheck: test: [ @@ -799,7 +800,7 @@ services: parsed, err = parse_regex(.event_message, r'^(?P