-
-
Notifications
You must be signed in to change notification settings - Fork 4.2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
MagicMirror loading fails behind reverse proxy after upgrading to v2.29 due to missing environment variables #3613
Comments
thanks, we should have a test for this ... |
but I have no idea for this without a reverse proxy ... |
fixes #3613 wanted to write a test for `basePath` but have no idea at the moment to simulate this without a reverse proxy. Here my test setup for documentation: ```yaml networks: proxy: driver: bridge services: socket-proxy: privileged: true image: tecnativa/docker-socket-proxy:edge container_name: socket-proxy restart: unless-stopped volumes: - /var/run/docker.sock:/var/run/docker.sock:ro environment: CONTAINERS: 1 ports: - "127.0.0.1:2375:2375" networks: - proxy traefik: image: traefik:latest container_name: traefik restart: unless-stopped user: 1000:1000 command: - "--providers.docker=true" - "--providers.docker.network=traefik_proxy" - "--providers.docker.endpoint=tcp://socket-proxy:2375" - "--entryPoints.http.address=:80" - "--global.sendAnonymousUsage=false" - "--log.level=INFO" - "--api=true" - "--api.dashboard=true" # - "--accessLog=true" # - "--accesslog.fields.defaultmode=keep" # - "--accesslog.fields.headers.defaultmode=keep" networks: - proxy ports: - "80:80" magicmirror: image: karsten13/magicmirror:develop container_name: mm restart: unless-stopped entrypoint: - sleep - infinity networks: - proxy labels: - "traefik.http.services.karsten13.loadbalancer.server.port=8080" - "traefik.http.routers.k13-http.service=karsten13" - "traefik.http.routers.k13-http.entrypoints=http" - "traefik.http.routers.k13-http.rule=Host(`localhost`) && PathPrefix(`/testbasepath`)" - "traefik.http.middlewares.k13-stripprefix.stripprefix.prefixes=/testbasepath" - "traefik.http.routers.k13-http.middlewares=k13-stripprefix" ```
so, i created a simple proxy it works for whatever I code to use the port (config +10) server.js if(process.env.mmTestMode === 'true' ){
const httpProxy = require('http-proxy')
var proxy = httpProxy.createProxyServer({});
//
// proxies the request, but removes the basePath as we are in the same location
// this is just for testing the basePath function
//
console.log("setup proxy server")
http.createServer(function (req, res) {
// This simulates an operation that takes 500ms to execute
const requestedUrl = req.url;
console.log("proxy for="+requestedUrl);
if(config.basePath.length>1 && requestedUrl.startsWith(config.basePath)){
req.url=requestedUrl.slice(config.basePath.length)
}
// send the request to the normal port
proxy.web(req, res, {
target: 'http://localhost:'+port
});
}).listen(port+10);
} |
log of requests thru proxy... only socket.io uses the basePath prefix
|
## [2.30.0] - 2025-01-01 Thanks to: @xsorifc28, @HeikoGr, @bugsounet, @khassel, @KristjanESPERANTO, @rejas, @sdetweil. >⚠️ This release needs nodejs version `v20` or `v22 or higher`, minimum version is `v20.18.1` ### Added - [core] Add wayland and windows start options to `package.json` (#3594) - [docs] Add step for npm publishing in release process (#3595) - [core] Add GitHub workflow to run spellcheck a few days before each release (#3623) - [core] Add test flag to `index.html` to pass to module js for test mode detection (needed by #3630) - [core] Add export on animation names (#3644) - [compliments] Add support for refreshing remote compliments file, and test cases (#3630) - [linter] Re-add `eslint-plugin-import`now that it supports ESLint v9 (#3586) - [linter] Re-activate `eslint-plugin-package-json` to lint `package.json` (#3643) - [linter] Add linting for markdown files (#3646) - [linter] Add some handy ESLint rules. - [calendar] Add ability to display end date for full date events, where end is not same day (showEnd=true) (#3650) - [core] Add text to the config.js.sample file about the locale variable (#3654, #3655) - [core] Add fetch timeout for all node_helpers (thru undici, forces node 20.18.1 minimum) to help on slower systems. (#3660) (3661) ### Changed - [core] Run code style checks in workflow only once (#3648) - [core] Fix animations export #3644 only on server side (#3649) - [core] Use project URL in fallback config (#3656) - [core] Fix Access Denied crash writing js/positions.js (on synology nas) #3651. new message, MM starts, but no modules showing (#3652) - [linter] Switch to 'npx' for lint-staged in pre-commit hook (#3658) ### Removed - [tests] Remove `node-pty` and `drivelist` from rebuilded test (#3575) - [deps] Remove `@eslint/js` dependency. Already installed with `eslint` in deep (#3636) ### Updated - [repo] Reactivate `stale.yaml` as GitHub action to mark issues as stale after 60 days and close them 7 days later (if no activity) (#3577, #3580, #3581) - [core] Update electron dependency to v32 (test electron rebuild) and all other dependencies too (#3657) - [tests] All test configs have been updated to allow full external access, allowing for easier debugging (especially when running as a container) - [core] Run and test with node 23 (#3588) - [workflow] delete exception `allow-ghsas: GHSA-8hc4-vh64-cxmj` in `dep-review.yaml` (#3659) ### Fixed - [updatenotification] Fix pm2 using detection when pm2 script is inside or outside MagicMirror root folder (#3576) (#3605) (#3626) (#3628) - [core] Fix loading node_helper of modules: avoid black screen, display errors and continue loading with next module (#3578) - [weather] Change default value for weatherEndpoint of provider openweathermap to "/onecall" (#3574) - [tests] Fix electron tests with mock dates, the mock on server side was missing (#3597) - [tests] Fix testcases with hard coded Date.now (#3597) - [core] Fix missing `basePath` where `location.host` is used (#3613) - [compliments] croner library changed filenames used in latest version (#3624) - [linter] Fix ESLint ignore pattern which caused that default modules not to be linted (#3632) - [core] Fix module path in case of sub/sub folder is used and use path.resolve for resolve `moduleFolder` and `defaultModuleFolder` in app.js (#3653) - [calendar] Update to resolve issues #3098 #3144 #3351 #3422 #3443 #3467 #3537 related to timezone changes - [calendar] Fix #3267 (styles array), also fixes event with both exdate AND recurrence(and testcase) - [calendar] Fix showEndsOnlyWithDuration not working, #3598, applies ONLY to full day events - [calendar] Fix showEnd for Full Day events (#3602) - [tests] Suppress "module is not defined" in e2e tests (#3647) - [calendar] Fix #3267 (styles array, really this time!) - [core] Fix #3662 js/positions.js created incorrectly --------- Signed-off-by: dependabot[bot] <[email protected]> Co-authored-by: Michael Teeuw <[email protected]> Co-authored-by: Kristjan ESPERANTO <[email protected]> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Karsten Hassel <[email protected]> Co-authored-by: Ross Younger <[email protected]> Co-authored-by: Veeck <[email protected]> Co-authored-by: Bugsounet - Cédric <[email protected]> Co-authored-by: jkriegshauser <[email protected]> Co-authored-by: illimarkangur <[email protected]> Co-authored-by: vppencilsharpener <[email protected]> Co-authored-by: veeck <[email protected]> Co-authored-by: Paranoid93 <[email protected]> Co-authored-by: Brian O'Connor <[email protected]> Co-authored-by: WallysWellies <[email protected]> Co-authored-by: Jason Stieber <[email protected]> Co-authored-by: jargordon <[email protected]> Co-authored-by: Daniel <[email protected]> Co-authored-by: Ryan Williams <[email protected]> Co-authored-by: Panagiotis Skias <[email protected]> Co-authored-by: Marc Landis <[email protected]> Co-authored-by: HeikoGr <[email protected]> Co-authored-by: Pedro Lamas <[email protected]> Co-authored-by: veeck <[email protected]>
Platform: Raspbian GNU/Linux 11 (bullseye) on Raspberry Pi 2
Node Version: 22.11.0
MagicMirror² Version: 2.29.0
Description: After upgrading MagicMirror from v2.28.0 to v2.29.0 my web interface won't display anything. Turning on developer tools displays missing /env subpath resulting in an exception in
loader.js
/main.js
and subsequent loading.Steps to Reproduce: I use a nginx webserver, which uses a reverse proxy on /apps/MagicMirror to redirect it to hostname:8080. My
config.js
has the reverse proxy included.Expected Results: As for previous versions socket.io uses the basePath to establish socket connection between client and server. The initial loading for loading environment variables should, too.
Actual Results: MagicMirror loading fails. As a workaround I modified
loader.js
toin order to make my application work again. Probably needs further refinement and exception handling.
The text was updated successfully, but these errors were encountered: