Skip to content

Commit c941907

Browse files
authored
Merge pull request #1509 from MODSetter/dev
feat(release: 0.0.29): ETL/embedding caches, unified model connections, reverse-proxy support, podcast & indexing improvements
2 parents 77688ac + 0729e5a commit c941907

408 files changed

Lines changed: 15851 additions & 16284 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/desktop-release.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,12 @@ jobs:
9595
run: pnpm build
9696
working-directory: surfsense_web
9797
env:
98-
NEXT_PUBLIC_FASTAPI_BACKEND_URL: ${{ vars.NEXT_PUBLIC_FASTAPI_BACKEND_URL }}
98+
NEXT_PUBLIC_FASTAPI_BACKEND_URL: ${{ vars.HOSTED_BACKEND_URL }}
99+
SURFSENSE_BACKEND_INTERNAL_URL: ${{ vars.HOSTED_BACKEND_URL }}
99100
NEXT_PUBLIC_ZERO_CACHE_URL: ${{ vars.NEXT_PUBLIC_ZERO_CACHE_URL }}
100101
NEXT_PUBLIC_DEPLOYMENT_MODE: ${{ vars.NEXT_PUBLIC_DEPLOYMENT_MODE }}
101-
NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: ${{ vars.NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE }}
102+
NEXT_PUBLIC_AUTH_TYPE: ${{ vars.NEXT_PUBLIC_AUTH_TYPE }}
103+
NEXT_PUBLIC_ETL_SERVICE: ${{ vars.NEXT_PUBLIC_ETL_SERVICE }}
102104
NEXT_PUBLIC_POSTHOG_KEY: ${{ secrets.NEXT_PUBLIC_POSTHOG_KEY }}
103105

104106
- name: Install desktop dependencies
@@ -109,6 +111,7 @@ jobs:
109111
run: pnpm build
110112
working-directory: surfsense_desktop
111113
env:
114+
HOSTED_BACKEND_URL: ${{ vars.HOSTED_BACKEND_URL }}
112115
HOSTED_FRONTEND_URL: ${{ vars.HOSTED_FRONTEND_URL }}
113116
POSTHOG_KEY: ${{ secrets.POSTHOG_KEY }}
114117
POSTHOG_HOST: ${{ vars.POSTHOG_HOST }}

.github/workflows/docker-build.yml

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -199,11 +199,6 @@ jobs:
199199
build-args: |
200200
${{ matrix.image == 'backend' && format('USE_CUDA={0}', matrix.use_cuda) || '' }}
201201
${{ matrix.image == 'backend' && format('CUDA_EXTRA={0}', matrix.cuda_extra) || '' }}
202-
${{ matrix.image == 'web' && 'NEXT_PUBLIC_FASTAPI_BACKEND_URL=__NEXT_PUBLIC_FASTAPI_BACKEND_URL__' || '' }}
203-
${{ matrix.image == 'web' && 'NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE=__NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE__' || '' }}
204-
${{ matrix.image == 'web' && 'NEXT_PUBLIC_ETL_SERVICE=__NEXT_PUBLIC_ETL_SERVICE__' || '' }}
205-
${{ matrix.image == 'web' && 'NEXT_PUBLIC_ZERO_CACHE_URL=__NEXT_PUBLIC_ZERO_CACHE_URL__' || '' }}
206-
${{ matrix.image == 'web' && 'NEXT_PUBLIC_DEPLOYMENT_MODE=__NEXT_PUBLIC_DEPLOYMENT_MODE__' || '' }}
207202
208203
- name: Export digest
209204
run: |

.github/workflows/e2e-tests.yml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,10 @@ jobs:
2727
PLAYWRIGHT_TEST_EMAIL: e2e-test@surfsense.net
2828
PLAYWRIGHT_TEST_PASSWORD: E2eTestPassword123!
2929
# Frontend env: Playwright's webServer (surfsense_web/playwright.config.ts)
30-
# spawns `pnpm build && pnpm start` in CI; these get baked into the build.
30+
# spawns `pnpm build && pnpm start` in CI.
3131
NEXT_PUBLIC_FASTAPI_BACKEND_URL: http://localhost:8000
32-
NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: LOCAL
32+
SURFSENSE_BACKEND_INTERNAL_URL: http://localhost:8000
33+
AUTH_TYPE: LOCAL
3334
# Shared secret for the test-only POST /__e2e__/auth/token endpoint.
3435
# Must match docker-compose.e2e.yml's backend env (x-backend-env).
3536
E2E_MINT_SECRET: e2e-mint-secret-not-for-production

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
0.0.28
1+
0.0.29

docker/.env.example

Lines changed: 101 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,9 @@ SECRET_KEY=replace_me_with_a_random_string
3030
# Auth type: LOCAL (email/password) or GOOGLE (OAuth)
3131
AUTH_TYPE=LOCAL
3232

33+
# Deployment mode: self-hosted enables local filesystem connectors; cloud hides them.
34+
DEPLOYMENT_MODE=self-hosted
35+
3336
# Allow new user registrations (TRUE or FALSE)
3437
# REGISTRATION_ENABLED=TRUE
3538

@@ -43,51 +46,47 @@ ETL_SERVICE=DOCLING
4346
EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
4447

4548
# ------------------------------------------------------------------------------
46-
# Ports (change to avoid conflicts with other services on your machine)
49+
# How You Access SurfSense
4750
# ------------------------------------------------------------------------------
51+
# One public URL. Browser traffic stays same-origin and Caddy routes internally.
52+
SURFSENSE_PUBLIC_URL=http://localhost:3929
4853

49-
# BACKEND_PORT=8929
50-
# FRONTEND_PORT=3929
51-
# ZERO_CACHE_PORT=5929
52-
# SEARXNG_PORT=8888
53-
# FLOWER_PORT=5555
54-
55-
# ==============================================================================
56-
# DEV COMPOSE ONLY (docker-compose.dev.yml)
57-
# You only need them only if you are running `docker-compose.dev.yml`.
58-
# ==============================================================================
59-
60-
# -- pgAdmin (database GUI) --
61-
# PGADMIN_PORT=5050
62-
# PGADMIN_DEFAULT_EMAIL=admin@surfsense.com
63-
# PGADMIN_DEFAULT_PASSWORD=surfsense
64-
65-
# -- Redis exposed port (dev only; Redis is internal-only in prod) --
66-
# REDIS_PORT=6379
67-
68-
# -- WhatsApp bridge exposed port (dev/hybrid only; prod keeps it Docker-internal) --
69-
# WHATSAPP_BRIDGE_PORT=9929
54+
# ------------------------------------------------------------------------------
55+
# Public Ports
56+
# ------------------------------------------------------------------------------
57+
# Production Docker exposes only Caddy to your machine. Caddy then routes
58+
# frontend, backend, and zero-cache traffic internally.
59+
#
60+
# Local default: LISTEN_HTTP_PORT=3929
61+
# Domain default: LISTEN_HTTP_PORT=80 and LISTEN_HTTPS_PORT=443
62+
LISTEN_HTTP_PORT=3929
63+
LISTEN_HTTPS_PORT=443
7064

71-
# -- Frontend Build Args --
72-
# In dev, the frontend is built from source and these are passed as build args.
73-
# In prod, they are automatically derived from AUTH_TYPE, ETL_SERVICE, and the port settings above.
74-
# NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE=LOCAL
75-
# NEXT_PUBLIC_ETL_SERVICE=DOCLING
76-
# NEXT_PUBLIC_DEPLOYMENT_MODE=self-hosted
65+
# ------------------------------------------------------------------------------
66+
# Custom Domain / HTTPS
67+
# ------------------------------------------------------------------------------
68+
# Leave SURFSENSE_SITE_ADDRESS as :80 for local HTTP.
69+
# Set it to your domain to enable automatic HTTPS:
70+
# SURFSENSE_SITE_ADDRESS=surf.example.com
71+
# CERT_EMAIL=you@example.com
72+
SURFSENSE_SITE_ADDRESS=:80
73+
CERT_EMAIL=
7774

7875
# ------------------------------------------------------------------------------
79-
# Custom Domain / Reverse Proxy
76+
# Advanced Reverse Proxy Settings
8077
# ------------------------------------------------------------------------------
81-
# ONLY set these if you are serving SurfSense on a real domain via a reverse
82-
# proxy (e.g. Caddy, Nginx, Cloudflare Tunnel).
83-
# For standard localhost deployments, leave all of these commented out.
84-
# they are automatically derived from the port settings above.
78+
# Usually do not change these. They are for custom certificate setup, CDNs/load
79+
# balancers, trusted proxy IPs, or changing upload limits.
80+
#
81+
# CERT_ACME_CA=https://acme-v02.api.letsencrypt.org/directory
82+
# CERT_ACME_DNS=
83+
# If a CDN/load balancer sits in front of Caddy, narrow this to that proxy's CIDRs.
84+
# TRUSTED_PROXIES=0.0.0.0/0
85+
# SURFSENSE_MAX_BODY_SIZE=5GB
8586
#
86-
# NEXT_FRONTEND_URL=https://app.yourdomain.com
87-
# BACKEND_URL=https://api.yourdomain.com
88-
# NEXT_PUBLIC_FASTAPI_BACKEND_URL=https://api.yourdomain.com
89-
# NEXT_PUBLIC_ZERO_CACHE_URL=https://zero.yourdomain.com
90-
# FASTAPI_BACKEND_INTERNAL_URL=http://backend:8000
87+
# Browser API and Zero URLs are same-origin relative behind bundled Caddy.
88+
# Next.js server-side calls use Docker DNS through SURFSENSE_BACKEND_INTERNAL_URL
89+
# set internally by docker-compose.yml. Usually do not override it.
9190

9291
# ------------------------------------------------------------------------------
9392
# Zero-cache (real-time sync)
@@ -108,10 +107,9 @@ EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
108107

109108
# Sync worker tuning. zero-cache defaults ZERO_NUM_SYNC_WORKERS to the number
110109
# of CPU cores, which can exceed the connection pool limits on high-core machines.
111-
# Each sync worker needs at least 1 connection from both the UPSTREAM and CVR
112-
# pools, so these constraints must hold:
113-
# ZERO_UPSTREAM_MAX_CONNS >= ZERO_NUM_SYNC_WORKERS
114-
# ZERO_CVR_MAX_CONNS >= ZERO_NUM_SYNC_WORKERS
110+
# Each sync worker needs at least 1 connection from both the UPSTREAM and CVR pools.
111+
# Keep ZERO_UPSTREAM_MAX_CONNS and ZERO_CVR_MAX_CONNS greater than or equal to
112+
# ZERO_NUM_SYNC_WORKERS.
115113
# Default of 4 workers is sufficient for self-hosted / personal use.
116114
# ZERO_NUM_SYNC_WORKERS=4
117115
# ZERO_UPSTREAM_MAX_CONNS=20
@@ -125,16 +123,16 @@ EMBEDDING_MODEL=sentence-transformers/all-MiniLM-L6-v2
125123

126124
# ZERO_QUERY_URL: where zero-cache forwards query requests for resolution.
127125
# ZERO_MUTATE_URL: required by zero-cache when auth tokens are used, even though
128-
# SurfSense does not use Zero mutators. Setting both URLs tells zero-cache to
129-
# skip its own JWT verification and let the app endpoints handle auth instead.
130-
# The mutate endpoint is a no-op that returns an empty response.
126+
# SurfSense does not use Zero mutators. Setting both URLs tells zero-cache to
127+
# skip its own JWT verification and let the app endpoints handle auth instead.
128+
# The mutate endpoint is a no-op that returns an empty response.
131129
# Default: Docker service networking (http://frontend:3000/api/zero/...).
132130
# Override when running the frontend outside Docker:
133-
# ZERO_QUERY_URL=http://host.docker.internal:3000/api/zero/query
134-
# ZERO_MUTATE_URL=http://host.docker.internal:3000/api/zero/mutate
135-
# Override for custom domain:
136-
# ZERO_QUERY_URL=https://app.yourdomain.com/api/zero/query
137-
# ZERO_MUTATE_URL=https://app.yourdomain.com/api/zero/mutate
131+
# ZERO_QUERY_URL=http://host.docker.internal:3000/api/zero/query
132+
# ZERO_MUTATE_URL=http://host.docker.internal:3000/api/zero/mutate
133+
# Override for custom domain only when zero-cache is not in the bundled Docker network:
134+
# ZERO_QUERY_URL=https://surf.example.com/api/zero/query
135+
# ZERO_MUTATE_URL=https://surf.example.com/api/zero/mutate
138136
# ZERO_QUERY_URL=http://frontend:3000/api/zero/query
139137
# ZERO_MUTATE_URL=http://frontend:3000/api/zero/mutate
140138

@@ -222,73 +220,74 @@ STT_SERVICE=local/base
222220
# ------------------------------------------------------------------------------
223221

224222
# -- Google Connectors --
225-
# GOOGLE_CALENDAR_REDIRECT_URI=http://localhost:8000/api/v1/auth/google/calendar/connector/callback
226-
# GOOGLE_GMAIL_REDIRECT_URI=http://localhost:8000/api/v1/auth/google/gmail/connector/callback
227-
# GOOGLE_DRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/google/drive/connector/callback
223+
# GOOGLE_CALENDAR_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/calendar/connector/callback
224+
# GOOGLE_GMAIL_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/gmail/connector/callback
225+
# GOOGLE_DRIVE_REDIRECT_URI=http://localhost:3929/api/v1/auth/google/drive/connector/callback
228226

229227
# -- Notion --
230228
# NOTION_CLIENT_ID=
231229
# NOTION_CLIENT_SECRET=
232-
# NOTION_REDIRECT_URI=http://localhost:8000/api/v1/auth/notion/connector/callback
230+
# NOTION_REDIRECT_URI=http://localhost:3929/api/v1/auth/notion/connector/callback
233231

234232
# -- Slack --
235233
# SLACK_CLIENT_ID=
236234
# SLACK_CLIENT_SECRET=
237-
# SLACK_REDIRECT_URI=http://localhost:8000/api/v1/auth/slack/connector/callback
235+
# SLACK_REDIRECT_URI=http://localhost:3929/api/v1/auth/slack/connector/callback
238236

239237
# -- Discord --
240238
# DISCORD_CLIENT_ID=
241239
# DISCORD_CLIENT_SECRET=
242-
# DISCORD_REDIRECT_URI=http://localhost:8000/api/v1/auth/discord/connector/callback
240+
# DISCORD_REDIRECT_URI=http://localhost:3929/api/v1/auth/discord/connector/callback
243241
# DISCORD_BOT_TOKEN=
244242

245243
# -- Atlassian (Jira & Confluence) --
246244
# ATLASSIAN_CLIENT_ID=
247245
# ATLASSIAN_CLIENT_SECRET=
248-
# JIRA_REDIRECT_URI=http://localhost:8000/api/v1/auth/jira/connector/callback
249-
# CONFLUENCE_REDIRECT_URI=http://localhost:8000/api/v1/auth/confluence/connector/callback
246+
# JIRA_REDIRECT_URI=http://localhost:3929/api/v1/auth/jira/connector/callback
247+
# CONFLUENCE_REDIRECT_URI=http://localhost:3929/api/v1/auth/confluence/connector/callback
250248

251249
# -- Linear --
252250
# LINEAR_CLIENT_ID=
253251
# LINEAR_CLIENT_SECRET=
254-
# LINEAR_REDIRECT_URI=http://localhost:8000/api/v1/auth/linear/connector/callback
252+
# LINEAR_REDIRECT_URI=http://localhost:3929/api/v1/auth/linear/connector/callback
255253

256254
# -- ClickUp --
257255
# CLICKUP_CLIENT_ID=
258256
# CLICKUP_CLIENT_SECRET=
259-
# CLICKUP_REDIRECT_URI=http://localhost:8000/api/v1/auth/clickup/connector/callback
257+
# CLICKUP_REDIRECT_URI=http://localhost:3929/api/v1/auth/clickup/connector/callback
260258

261259
# -- Airtable --
262260
# AIRTABLE_CLIENT_ID=
263261
# AIRTABLE_CLIENT_SECRET=
264-
# AIRTABLE_REDIRECT_URI=http://localhost:8000/api/v1/auth/airtable/connector/callback
262+
# AIRTABLE_REDIRECT_URI=http://localhost:3929/api/v1/auth/airtable/connector/callback
265263

266264
# -- Microsoft OAuth (Teams & OneDrive) --
267265
# MICROSOFT_CLIENT_ID=
268266
# MICROSOFT_CLIENT_SECRET=
269-
# TEAMS_REDIRECT_URI=http://localhost:8000/api/v1/auth/teams/connector/callback
270-
# ONEDRIVE_REDIRECT_URI=http://localhost:8000/api/v1/auth/onedrive/connector/callback
267+
# TEAMS_REDIRECT_URI=http://localhost:3929/api/v1/auth/teams/connector/callback
268+
# ONEDRIVE_REDIRECT_URI=http://localhost:3929/api/v1/auth/onedrive/connector/callback
271269

272270
# -- Dropbox --
273271
# DROPBOX_APP_KEY=
274272
# DROPBOX_APP_SECRET=
275-
# DROPBOX_REDIRECT_URI=http://localhost:8000/api/v1/auth/dropbox/connector/callback
273+
# DROPBOX_REDIRECT_URI=http://localhost:3929/api/v1/auth/dropbox/connector/callback
276274

277275
# -- Composio --
278276
# COMPOSIO_API_KEY=
279277
# COMPOSIO_ENABLED=TRUE
280-
# COMPOSIO_REDIRECT_URI=http://localhost:8000/api/v1/auth/composio/connector/callback
278+
# COMPOSIO_REDIRECT_URI=http://localhost:3929/api/v1/auth/composio/connector/callback
281279

282280
# ------------------------------------------------------------------------------
283281
# Messaging Channels (optional)
284282
# ------------------------------------------------------------------------------
285283
# Configure only the external chat channels you want to use.
284+
# GATEWAY_ENABLED=TRUE
286285

287286
# -- Telegram --
288287
# TELEGRAM_SHARED_BOT_TOKEN=
289288
# TELEGRAM_SHARED_BOT_USERNAME=
290289
# TELEGRAM_WEBHOOK_SECRET=
291-
# GATEWAY_BASE_URL=http://localhost:8929
290+
# GATEWAY_BASE_URL=http://localhost:3929
292291
# GATEWAY_TELEGRAM_INTAKE_MODE=webhook
293292

294293
# -- WhatsApp --
@@ -307,20 +306,20 @@ STT_SERVICE=local/base
307306
#
308307
# GATEWAY_SLACK_ENABLED=FALSE
309308
# GATEWAY_SLACK_SIGNING_SECRET=
310-
# GATEWAY_SLACK_REDIRECT_URI=http://localhost:8929/api/v1/gateway/slack/callback
309+
# GATEWAY_SLACK_REDIRECT_URI=http://localhost:3929/api/v1/gateway/slack/callback
311310

312311
# -- Discord --
313312
# Uses DISCORD_CLIENT_ID, DISCORD_CLIENT_SECRET, and DISCORD_BOT_TOKEN from the
314313
# Discord connector section.
315314
#
316315
# GATEWAY_DISCORD_ENABLED=FALSE
317-
# GATEWAY_DISCORD_REDIRECT_URI=http://localhost:8929/api/v1/gateway/discord/callback
316+
# GATEWAY_DISCORD_REDIRECT_URI=http://localhost:3929/api/v1/gateway/discord/callback
318317

319318
# ------------------------------------------------------------------------------
320319
# SearXNG (bundled web search, works out of the box with no config needed)
321320
# ------------------------------------------------------------------------------
322321
# SearXNG provides web search to all search spaces automatically.
323-
# To access the SearXNG UI directly: http://localhost:8888
322+
# To access the SearXNG UI directly in dev/deps-only compose: http://localhost:8888
324323
# To disable the service entirely: docker compose up --scale searxng=0
325324
# To point at your own SearXNG instance instead of the bundled one:
326325
# SEARXNG_DEFAULT_HOST=http://your-searxng:8080
@@ -457,3 +456,36 @@ NOLOGIN_MODE_ENABLED=FALSE
457456
# RESIDENTIAL_PROXY_HOSTNAME=
458457
# RESIDENTIAL_PROXY_LOCATION=
459458
# RESIDENTIAL_PROXY_TYPE=1
459+
460+
# ==============================================================================
461+
# DEV / DEPS-ONLY COMPOSE OVERRIDES
462+
# These are only needed for docker-compose.dev.yml or docker-compose.deps-only.yml.
463+
# Production Docker exposes Caddy only; raw app ports below do not affect
464+
# docker-compose.yml.
465+
# ==============================================================================
466+
467+
# -- pgAdmin (database GUI, dev/deps-only only) --
468+
# PGADMIN_PORT=5050
469+
# PGADMIN_DEFAULT_EMAIL=admin@surfsense.com
470+
# PGADMIN_DEFAULT_PASSWORD=surfsense
471+
472+
# -- Redis exposed port (dev/deps-only only; Redis is internal-only in prod) --
473+
# REDIS_PORT=6379
474+
475+
# -- SearXNG exposed port (dev/deps-only only; internal-only in prod) --
476+
# SEARXNG_PORT=8888
477+
478+
# -- WhatsApp bridge exposed port (dev/hybrid only; prod keeps it Docker-internal) --
479+
# WHATSAPP_BRIDGE_PORT=9929
480+
481+
# -- Raw app ports (dev/deps-only only; prod exposes Caddy instead) --
482+
# BACKEND_PORT=8000
483+
# FRONTEND_PORT=3000
484+
# ZERO_CACHE_PORT=4848
485+
486+
# -- Frontend runtime flags (prod and dev compose) --
487+
# The frontend reads these at request time in Docker; no NEXT_PUBLIC_* rebuild
488+
# or startup substitution is required.
489+
# AUTH_TYPE=LOCAL
490+
# ETL_SERVICE=DOCLING
491+
# DEPLOYMENT_MODE=self-hosted

docker/docker-compose.dev.yml

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -257,16 +257,15 @@ services:
257257
frontend:
258258
build:
259259
context: ../surfsense_web
260-
args:
261-
NEXT_PUBLIC_FASTAPI_BACKEND_URL: ${NEXT_PUBLIC_FASTAPI_BACKEND_URL:-http://localhost:8000}
262-
NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE: ${NEXT_PUBLIC_FASTAPI_BACKEND_AUTH_TYPE:-LOCAL}
263-
NEXT_PUBLIC_ETL_SERVICE: ${NEXT_PUBLIC_ETL_SERVICE:-DOCLING}
264-
NEXT_PUBLIC_ZERO_CACHE_URL: ${NEXT_PUBLIC_ZERO_CACHE_URL:-http://localhost:${ZERO_CACHE_PORT:-4848}}
265-
NEXT_PUBLIC_DEPLOYMENT_MODE: ${NEXT_PUBLIC_DEPLOYMENT_MODE:-self-hosted}
266260
ports:
267261
- "${FRONTEND_PORT:-3000}:3000"
268262
env_file:
269263
- ../surfsense_web/.env
264+
environment:
265+
AUTH_TYPE: ${AUTH_TYPE:-LOCAL}
266+
ETL_SERVICE: ${ETL_SERVICE:-DOCLING}
267+
DEPLOYMENT_MODE: ${DEPLOYMENT_MODE:-self-hosted}
268+
SURFSENSE_BACKEND_INTERNAL_URL: http://backend:8000
270269
depends_on:
271270
backend:
272271
condition: service_healthy

0 commit comments

Comments
 (0)