Currently the dev stack exposes two ports — Nextcloud on :8081 and EuroOffice DocumentServer on :8080. This creates a cross-origin iframe, which among other things causes iOS Safari to block keyboard input inside the editor (iOS enforces stricter keyboard policies for cross-origin frames).
Production always proxies EuroOffice through the same Nextcloud origin, so the dev environment doesn't match prod.
Proposed change
Add a lightweight nginx container that sits in front of both services on a single port:
/ds/* → EuroOffice DocumentServer (internal only, no external port)
/* → Nextcloud (internal only, no external port)
Everything exposed on :8081. Same-origin by default for all contributors.
What changes
develop/docker-compose.yml — add nginx service, remove external ports from eo and nextcloud
develop/setup/nginx-proxy.conf — new file, simple location-based routing with X-Forwarded-Prefix: /ds
develop/Makefile — refresh-urls sets DocumentServerUrl to http://<ip>:8081/ds and DocumentServerInternalUrl to http://eo
- Remove
develop/setup/eo-proxy.conf (temporary workaround, superseded)
Benefits
- iOS keyboard works out of the box — no manual proxy setup for contributors
make mobile / make refresh-urls workflow unchanged
- Matches production topology
- Android emulator, LAN devices, desktop all unaffected (same port, same flow)
Breaking
Existing dev installs need make wipe-nc && make local after pulling the change.
Branch: feat/single-origin-dev-proxy
Created with Claude Code
Currently the dev stack exposes two ports — Nextcloud on
:8081and EuroOffice DocumentServer on:8080. This creates a cross-origin iframe, which among other things causes iOS Safari to block keyboard input inside the editor (iOS enforces stricter keyboard policies for cross-origin frames).Production always proxies EuroOffice through the same Nextcloud origin, so the dev environment doesn't match prod.
Proposed change
Add a lightweight nginx container that sits in front of both services on a single port:
/ds/*→ EuroOffice DocumentServer (internal only, no external port)/*→ Nextcloud (internal only, no external port)Everything exposed on
:8081. Same-origin by default for all contributors.What changes
develop/docker-compose.yml— addnginxservice, remove external ports fromeoandnextclouddevelop/setup/nginx-proxy.conf— new file, simple location-based routing withX-Forwarded-Prefix: /dsdevelop/Makefile—refresh-urlssetsDocumentServerUrltohttp://<ip>:8081/dsandDocumentServerInternalUrltohttp://eodevelop/setup/eo-proxy.conf(temporary workaround, superseded)Benefits
make mobile/make refresh-urlsworkflow unchangedBreaking
Existing dev installs need
make wipe-nc && make localafter pulling the change.Branch:
feat/single-origin-dev-proxyCreated with Claude Code