Fixed frontend URL error by injecting config.js and runtime-config.js before Caddy starts
This commit is contained in:
parent
e329b54b8b
commit
e093bfc571
60
start.sh
60
start.sh
@ -1037,6 +1037,66 @@ echo "==> Created Caddy config at /app/data/caddy/Caddyfile"
|
|||||||
|
|
||||||
# Start Caddy server
|
# Start Caddy server
|
||||||
echo "==> Starting Caddy server"
|
echo "==> Starting Caddy server"
|
||||||
|
|
||||||
|
# First inject the config.js script tags into all HTML files
|
||||||
|
echo "==> Injecting config.js into web application HTML files"
|
||||||
|
|
||||||
|
# Function to inject the script tag
|
||||||
|
inject_script_tag() {
|
||||||
|
file="$1"
|
||||||
|
if [ -f "$file" ]; then
|
||||||
|
echo "==> Injecting config.js into $file"
|
||||||
|
# Make a backup just in case
|
||||||
|
cp "$file" "${file}.bak"
|
||||||
|
# Insert the script tag right after the opening head tag
|
||||||
|
sed -i 's/<head>/<head>\n <script src="\/config.js" type="text\/javascript"><\/script>/' "$file"
|
||||||
|
else
|
||||||
|
echo "==> WARNING: Could not find $file to inject config script"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Inject into all the web apps
|
||||||
|
inject_script_tag "/app/web/photos/index.html"
|
||||||
|
inject_script_tag "/app/web/accounts/index.html"
|
||||||
|
inject_script_tag "/app/web/auth/index.html"
|
||||||
|
inject_script_tag "/app/web/cast/index.html"
|
||||||
|
|
||||||
|
# Also create a runtime-config.js file with properly escaped content
|
||||||
|
cat > /app/web/photos/runtime-config.js <<EOT
|
||||||
|
// Runtime configuration for Ente
|
||||||
|
window.ENTE_CONFIG = {
|
||||||
|
API_URL: '${API_ENDPOINT}',
|
||||||
|
PUBLIC_ALBUMS_URL: '${CLOUDRON_APP_ORIGIN}/public'
|
||||||
|
};
|
||||||
|
|
||||||
|
// Next.js environment variables
|
||||||
|
window.process = window.process || {};
|
||||||
|
window.process.env = window.process.env || {};
|
||||||
|
window.process.env.NEXT_PUBLIC_ENTE_ENDPOINT = '${API_ENDPOINT}';
|
||||||
|
window.process.env.NEXT_PUBLIC_ENTE_PUBLIC_ALBUMS_ENDPOINT = '${CLOUDRON_APP_ORIGIN}/public';
|
||||||
|
|
||||||
|
console.log('Ente runtime config loaded from runtime-config.js');
|
||||||
|
console.log('API_URL:', window.ENTE_CONFIG.API_URL);
|
||||||
|
console.log('PUBLIC_ALBUMS_URL:', window.ENTE_CONFIG.PUBLIC_ALBUMS_URL);
|
||||||
|
EOT
|
||||||
|
|
||||||
|
# Copy the runtime-config.js to each app directory
|
||||||
|
for app_dir in /app/web/photos /app/web/accounts /app/web/auth /app/web/cast; do
|
||||||
|
cp /app/web/photos/runtime-config.js "$app_dir/"
|
||||||
|
|
||||||
|
# Update the HTML to include this file too
|
||||||
|
index_file="$app_dir/index.html"
|
||||||
|
if [ -f "$index_file" ]; then
|
||||||
|
echo "==> Adding runtime-config.js to $index_file"
|
||||||
|
sed -i 's/<\/head>/<script src="runtime-config.js" type="text\/javascript"><\/script>\n <\/head>/' "$index_file"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Ensure all files are readable
|
||||||
|
chmod -R 644 /app/web/*/runtime-config.js
|
||||||
|
|
||||||
|
echo "==> Config injected into all web applications"
|
||||||
|
|
||||||
caddy start --config /app/data/caddy/Caddyfile --adapter caddyfile &
|
caddy start --config /app/data/caddy/Caddyfile --adapter caddyfile &
|
||||||
CADDY_PID=$!
|
CADDY_PID=$!
|
||||||
echo "==> Caddy started with PID $CADDY_PID"
|
echo "==> Caddy started with PID $CADDY_PID"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user