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:
@@ -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,
|
||||||
|
18
Dockerfile
18
Dockerfile
@@ -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
38
debug-network.html
Normal 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
1
ente-source
Submodule
Submodule ente-source added at 702b03a288
4
start.sh
4
start.sh
@@ -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}"
|
||||||
|
Reference in New Issue
Block a user