ConfigService returns empty string (not the default) when env var
exists but is empty. Add || fallbacks in code and set proper defaults
in docker-compose to prevent invalid proxy URL like http://user:pass@:10000.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add EMEX_USE_PROXY, EMEX_PROXY_HOST, EMEX_PROXY_USER, EMEX_PROXY_PASS
to both api and worker services so the proxy config reaches the
containers at runtime.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Traefik was picking the wrong Docker network (_default) for the staging
api container, causing requests to hang. Force it to use the coolify
network which is shared with the Traefik proxy.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Coolify adds its own Traefik labels when FQDN is set on the service.
This allows different domains per environment (sase.tr vs dev.sase.tr).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The 'redis' hostname resolved to coolify-redis (Coolify's internal Redis)
instead of our compose Redis service due to shared coolify network.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add multi-stage Dockerfile (node:22-alpine, pnpm, Chromium for Playwright)
- Add docker-compose.coolify.yml with api, worker, redis services
- Add @nestjs/serve-static for serving Vite frontend from NestJS
- Add .dockerignore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>