gigafibre-fsm/apps/portal/traefik-client-portal.yml
louispaulb 101faa21f1 feat: inline editing, search, notifications + full repo cleanup
- InlineField component + useInlineEdit composable for Odoo-style dblclick editing
- Client search by name, account ID, and legacy_customer_id (or_filters)
- SMS/Email notification panel on ContactCard via n8n webhooks
- Ticket reply thread via Communication docs
- All migration scripts (51 files) now tracked
- Client portal and field tech app added to monorepo
- README rewritten with full feature list, migration summary, architecture
- CHANGELOG updated with all recent work
- ROADMAP updated with current completion status
- Removed hardcoded tokens from docs (use $ERP_SERVICE_TOKEN)
- .gitignore updated (docker/, .claude/, exports/, .quasar/)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-31 07:34:41 -04:00

54 lines
1.6 KiB
YAML

# Traefik dynamic route: client.gigafibre.ca → ERPNext (no Authentik)
#
# Purpose: Customer portal accessible without SSO.
# Customers log in via ERPNext's built-in /login page.
#
# Deploy: copy to /opt/traefik/dynamic/ on 96.125.196.67
# scp traefik-client-portal.yml root@96.125.196.67:/opt/traefik/dynamic/
# (Traefik auto-reloads dynamic config — no restart needed)
#
# DNS: *.gigafibre.ca wildcard already resolves to 96.125.196.67
# TLS: Let's Encrypt auto-provisions cert for client.gigafibre.ca
http:
routers:
# Main portal router — NO authentik middleware
client-portal:
rule: "Host(`client.gigafibre.ca`)"
entryPoints:
- web
- websecure
service: client-portal-svc
tls:
certResolver: letsencrypt
# Explicitly NO middlewares — customers auth via ERPNext /login
# Block /desk access for portal users
client-portal-block-desk:
rule: "Host(`client.gigafibre.ca`) && PathPrefix(`/desk`)"
entryPoints:
- web
- websecure
service: client-portal-svc
middlewares:
- portal-redirect-home
tls:
certResolver: letsencrypt
priority: 200
middlewares:
# Redirect /desk attempts to portal home
portal-redirect-home:
redirectRegex:
regex: ".*"
replacement: "https://client.gigafibre.ca/me"
permanent: false
services:
# Same ERPNext frontend container, unique service name to avoid
# conflicts with Docker-label-defined services
client-portal-svc:
loadBalancer:
servers:
- url: "http://erpnext-frontend-1:8080"