Implement comprehensive web app API endpoint fix

- Patch origins.ts during Docker build to use window.location.origin + '/api'
- Update version to 0.1.69 to force rebuild
- Add browser compatibility check for server-side rendering
- Fix both API and uploader endpoint redirections

This addresses the root cause where web apps were hardcoded to use
https://api.ente.io instead of the local Museum server.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Your Name
2025-07-25 19:27:11 -06:00
parent c7b9ab18bb
commit 06e0f5075e
5 changed files with 56 additions and 7 deletions

View File

@@ -7,7 +7,7 @@
"contactEmail": "contact@ente.io", "contactEmail": "contact@ente.io",
"tagline": "Open Source End-to-End Encrypted Photos & Authentication", "tagline": "Open Source End-to-End Encrypted Photos & Authentication",
"upstreamVersion": "1.0.0", "upstreamVersion": "1.0.0",
"version": "0.1.66", "version": "0.1.69",
"healthCheckPath": "/ping", "healthCheckPath": "/ping",
"httpPort": 3080, "httpPort": 3080,
"memoryLimit": 1073741824, "memoryLimit": 1073741824,

View File

@@ -28,10 +28,20 @@ RUN apt-get update && apt-get install -y git && \
RUN corepack enable RUN corepack enable
# Set environment variables for web app build # Set environment variables for web app build
# Set the API endpoint to use current origin - this will work at runtime # Instead of using a relative path, patch the origins.ts file to use dynamic origin
ENV NEXT_PUBLIC_ENTE_ENDPOINT="/api" RUN echo "Patching origins.ts to use dynamic API endpoint based on current origin"
# Use relative path so it works with any domain
RUN echo "Building with NEXT_PUBLIC_ENTE_ENDPOINT=/api, will work with any domain via Caddy proxy" # Patch the origins.ts file to use relative API endpoint instead of hardcoded ente.io
RUN if [ -f "web/packages/base/origins.ts" ]; then \
echo "Patching origins.ts to use window.location.origin + '/api'"; \
sed -i 's|(await customAPIOrigin()) ?? "https://api.ente.io"|(await customAPIOrigin()) ?? (typeof window !== "undefined" ? window.location.origin + "/api" : "https://api.ente.io")|g' web/packages/base/origins.ts; \
sed -i 's|(await customAPIOrigin()) ?? "https://uploader.ente.io"|(await customAPIOrigin()) ?? (typeof window !== "undefined" ? window.location.origin + "/api" : "https://uploader.ente.io")|g' web/packages/base/origins.ts; \
echo "Patched origins.ts:"; \
cat web/packages/base/origins.ts | head -20; \
else \
echo "origins.ts not found, checking alternative paths"; \
find . -name "origins.ts" -type f; \
fi
# Debugging the repository structure # Debugging the repository structure
RUN find . -type d -maxdepth 3 | sort RUN find . -type d -maxdepth 3 | sort

38
debug-network.html Normal file
View File

@@ -0,0 +1,38 @@
<!DOCTYPE html>
<html>
<head>
<title>Debug Ente Auth Network Calls</title>
</head>
<body>
<h1>Debug Ente Auth Network Calls</h1>
<div id="output"></div>
<script>
// Override fetch to log all network requests
const originalFetch = window.fetch;
window.fetch = function(...args) {
console.log('FETCH REQUEST:', args[0], args[1]);
const output = document.getElementById('output');
output.innerHTML += '<p>FETCH: ' + args[0] + '</p>';
return originalFetch.apply(this, args)
.then(response => {
console.log('FETCH RESPONSE:', response.status, response.url);
output.innerHTML += '<p>RESPONSE: ' + response.status + ' ' + response.url + '</p>';
return response;
})
.catch(error => {
console.log('FETCH ERROR:', error);
output.innerHTML += '<p>ERROR: ' + error.message + '</p>';
throw error;
});
};
// Load the Ente Auth app in an iframe to see what happens
const iframe = document.createElement('iframe');
iframe.src = 'https://ente.due.ren/auth/';
iframe.style.width = '100%';
iframe.style.height = '400px';
document.body.appendChild(iframe);
</script>
</body>
</html>

1
ente-source Submodule

Submodule ente-source added at 702b03a288

View File

@@ -152,9 +152,9 @@ email:
# WebAuthn configuration for passkey support # WebAuthn configuration for passkey support
webauthn: webauthn:
rpid: "${CLOUDRON_APP_FQDN:-localhost}" rpid: "${CLOUDRON_APP_DOMAIN:-localhost}"
rporigins: rporigins:
- "https://${CLOUDRON_APP_FQDN:-localhost}" - "https://${CLOUDRON_APP_DOMAIN:-localhost}"
EOF EOF
chmod 600 "$MUSEUM_CONFIG" chmod 600 "$MUSEUM_CONFIG"
log "INFO" "Created Museum configuration at ${MUSEUM_CONFIG}" log "INFO" "Created Museum configuration at ${MUSEUM_CONFIG}"