From 8b0273e70b7c1c8233065d044269c6fd6e05a51e Mon Sep 17 00:00:00 2001 From: josh Date: Mon, 30 Mar 2026 19:51:49 -0400 Subject: [PATCH] =?UTF-8?q?Remove=20Traefik=20=E2=80=94=20use=20simple=20p?= =?UTF-8?q?ort=20binding=20for=20NPM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Stack uses Tailscale + Nginx Proxy Manager, not Traefik. Client exposes PORT (default 3080) for NPM to proxy to. Co-Authored-By: Claude Sonnet 4.6 --- .env.example | 7 +++++-- README.md | 7 +++++-- docker-compose.yml | 13 +++---------- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/.env.example b/.env.example index 30a3ecc..0b28b2c 100644 --- a/.env.example +++ b/.env.example @@ -12,5 +12,8 @@ POSTGRES_PASSWORD=change-this-to-a-strong-password # Generate with: openssl rand -hex 64 JWT_SECRET=change-this-to-a-long-random-string -# Fully-qualified domain — must match your Traefik routing rule -DOMAIN=tickets.thewrightserver.net +# Origin NPM proxies to this app (used for CORS) +CLIENT_URL=http://tickets.thewrightserver.net + +# Host port NPM proxies to — change if 3080 is taken +PORT=3080 diff --git a/README.md b/README.md index 95f4df5..9c80736 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Internal ticketing system with CTI-based routing, severity levels, and n8n/autom ### Prerequisites - Docker + Docker Compose -- Traefik running with a `proxy` Docker network +- Nginx Proxy Manager pointed at the host port (default `3080`) - Access to your Gitea container registry ### 1. Copy files to your server @@ -42,9 +42,12 @@ REGISTRY=gitea.thewrightserver.net TAG=latest POSTGRES_PASSWORD= JWT_SECRET= -DOMAIN=tickets.thewrightserver.net +CLIENT_URL=http://tickets.thewrightserver.net +PORT=3080 ``` +Point NPM at `http://:3080` for the proxy host. + ### 3. Create the initial database migration Run this **once** on your local dev machine before first deploy, then commit the result: diff --git a/docker-compose.yml b/docker-compose.yml index 821288c..d2c53b3 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -28,7 +28,7 @@ services: environment: DATABASE_URL: postgresql://postgres:${POSTGRES_PASSWORD}@postgres:5432/ticketing JWT_SECRET: ${JWT_SECRET} - CLIENT_URL: https://${DOMAIN} + CLIENT_URL: ${CLIENT_URL} PORT: 3000 depends_on: postgres: @@ -39,23 +39,16 @@ services: client: image: ${REGISTRY}/josh/ticketing-client:${TAG:-latest} restart: unless-stopped + ports: + - "${PORT:-3080}:80" depends_on: - server networks: - internal - - proxy - labels: - - "traefik.enable=true" - - "traefik.http.routers.tickets.rule=Host(`${DOMAIN}`)" - - "traefik.http.routers.tickets.entrypoints=websecure" - - "traefik.http.routers.tickets.tls.certresolver=letsencrypt" - - "traefik.http.services.tickets.loadbalancer.server.port=80" networks: internal: driver: bridge - proxy: - external: true # Traefik's proxy network volumes: postgres_data: