fix: remove public backend domain that always returned 404

The Multica backend is an API-only chi server with no route registered
at "/", so the generated backend domain (path "/") permanently answered
HTTP 404 even though the container was healthy. The web frontend already
proxies /api/*, /ws, /auth/* and /uploads/* to http://backend:8080 via
Next.js rewrites, and when NEXT_PUBLIC_WS_URL is unset the browser
derives the WebSocket URL from the page origin, so the backend never
needs to be exposed publicly.

- drop the backend [[config.domains]] entry and api_domain variable
- drop NEXT_PUBLIC_WS_URL so the WS URL falls back to the page origin
  and goes through the frontend's /ws rewrite
- remove ephemeral host port publications (ports: "8080"/"3000");
  Traefik reaches the containers over the docker network

Verified on a Dokploy instance: deploy done, frontend / -> 200 and
backend reachable through the proxy (/api/config -> 200).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Mauricio Siu
2026-07-08 02:50:24 -06:00
parent eb1c47e86b
commit 0ada7ae5f2
2 changed files with 0 additions and 13 deletions

View File

@@ -24,8 +24,6 @@ services:
depends_on:
postgres:
condition: service_healthy
ports:
- "8080"
volumes:
- backend_uploads:/app/data/uploads
environment:
@@ -53,13 +51,10 @@ services:
dockerfile: Dockerfile.web
args:
REMOTE_API_URL: http://backend:8080
NEXT_PUBLIC_WS_URL: ${NEXT_PUBLIC_WS_URL}
NEXT_PUBLIC_GOOGLE_CLIENT_ID: ${NEXT_PUBLIC_GOOGLE_CLIENT_ID}
restart: unless-stopped
depends_on:
- backend
ports:
- "3000"
environment:
HOSTNAME: "0.0.0.0"

View File

@@ -1,6 +1,5 @@
[variables]
app_domain = "${domain}"
api_domain = "${domain}"
jwt_secret = "${password:64}"
postgres_password = "${password:32}"
@@ -11,12 +10,6 @@ port = 3000
host = "${app_domain}"
path = "/"
[[config.domains]]
serviceName = "backend"
port = 8080
host = "${api_domain}"
path = "/"
[config.env]
POSTGRES_DB = "multica"
POSTGRES_USER = "multica"
@@ -25,7 +18,6 @@ JWT_SECRET = "${jwt_secret}"
FRONTEND_ORIGIN = "https://${app_domain}"
ALLOWED_ORIGINS = "https://${app_domain}"
MULTICA_APP_URL = "https://${app_domain}"
NEXT_PUBLIC_WS_URL = "wss://${api_domain}/ws"
RESEND_API_KEY = ""
RESEND_FROM_EMAIL = "noreply@multica.ai"
GOOGLE_CLIENT_ID = ""