dashy/docs/troubleshooting/index.html

40 lines
90 KiB
HTML

<!doctype html>
<html lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.2">
<link rel="search" type="application/opensearchdescription+xml" title="Dashy" href="/opensearch.xml">
<script src="https://no-track.as93.net/js/script.js" defer="defer" data-domain="dashy.to"></script><title data-react-helmet="true">Troubleshooting | Dashy</title><meta data-react-helmet="true" property="og:url" content="https://dashy.to/docs/troubleshooting"><meta data-react-helmet="true" name="docsearch:language" content="en"><meta data-react-helmet="true" name="docsearch:version" content="current"><meta data-react-helmet="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-react-helmet="true" property="og:title" content="Troubleshooting | Dashy"><meta data-react-helmet="true" name="description" content="**This document contains common problems and their solutions.**"><meta data-react-helmet="true" property="og:description" content="**This document contains common problems and their solutions.**"><link data-react-helmet="true" rel="shortcut icon" href="/img/favicon.ico"><link data-react-helmet="true" rel="canonical" href="https://dashy.to/docs/troubleshooting"><link data-react-helmet="true" rel="alternate" href="https://dashy.to/docs/troubleshooting" hreflang="en"><link data-react-helmet="true" rel="alternate" href="https://dashy.to/docs/troubleshooting" hreflang="x-default"><link data-react-helmet="true" rel="preconnect" href="https://BH4D9OD16A-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.de060916.css">
<link rel="preload" href="/assets/js/runtime~main.ac7349e8.js" as="script">
<link rel="preload" href="/assets/js/main.d13b237a.js" as="script">
</head>
<body>
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"dark")}()</script><div id="__docusaurus">
<div><a href="#main" class="skipToContent_OuoZ">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><img src="/img/dashy.png" alt="Dashy Logo" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/dashy.png" alt="Dashy Logo" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"><b class="navbar__title">Dashy</b></a><a href="https://github.com/lissy93/dashy" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">GitHub</a><a href="https://demo.dashy.to" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link">Live Demo</a><a class="navbar__item navbar__link" href="/docs/quick-start">Quick Start</a><a aria-current="page" class="navbar__item navbar__link navbar__link--active" href="/docs">Documentation</a></div><div class="navbar__items navbar__items--right"><div class="react-toggle displayOnlyInLargeViewport_cxYs react-toggle--checked react-toggle--disabled"><div class="react-toggle-track" role="button" tabindex="-1"><div class="react-toggle-track-check"><span class="toggle_iYfV">🌙</span></div><div class="react-toggle-track-x"><span class="toggle_iYfV">☀️</span></div><div class="react-toggle-thumb"></div></div><input type="checkbox" checked="" class="react-toggle-screenreader-only" aria-label="Switch between dark and light mode"></div><div class="searchBox_Bc3W"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20" aria-hidden="true"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div><div class="navbar-sidebar"><div class="navbar-sidebar__brand"><a class="navbar__brand" href="/"><img src="/img/dashy.png" alt="Dashy Logo" class="themedImage_TMUO themedImage--light_4Vu1 navbar__logo"><img src="/img/dashy.png" alt="Dashy Logo" class="themedImage_TMUO themedImage--dark_uzRr navbar__logo"><b class="navbar__title">Dashy</b></a></div><div class="navbar-sidebar__items"><div class="menu"><ul class="menu__list"><li class="menu__list-item"><a href="https://github.com/lissy93/dashy" target="_blank" rel="noopener noreferrer" class="menu__link">GitHub</a></li><li class="menu__list-item"><a href="https://demo.dashy.to" target="_blank" rel="noopener noreferrer" class="menu__link">Live Demo</a></li><li class="menu__list-item"><a class="menu__link" href="/docs/quick-start">Quick Start</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link navbar__link--active" href="/docs">Documentation</a></li></ul></div></div></div></nav><div class="main-wrapper docs-wrapper doc-page"><div class="docPage_lDyR"><aside class="docSidebarContainer_0YBq"><div class="sidebar_LIo8"><nav class="menu menu--responsive thin-scrollbar menu_oAhv menuWithAnnouncementBar_IVfW" aria-label="Sidebar navigation"><button aria-label="Open menu" aria-haspopup="true" class="button button--secondary button--sm menu__button" type="button"><svg class="sidebarMenuIcon_nrF-" width="24" height="24" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><ul class="menu__list"><li class="menu__list-item"><a class="menu__link menu__link--sublist menu__link--active" href="#!">Running Dashy</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/quick-start">Quick Start</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/deployment">Deployment</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/configuring">Configuring</a></li><li class="menu__list-item"><a class="menu__link" tabindex="0" href="/docs/management">App Management</a></li><li class="menu__list-item"><a aria-current="page" class="menu__link menu__link--active active" tabindex="0" href="/docs/troubleshooting">Troubleshooting</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Feature Docs</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/icons">Icons</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/widgets">Widgets</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/theming">Theming</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/status-indicators">Status Indicators</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/authentication">Authentication</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/searching">Keyboard Shortcuts</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/alternate-views">Alternate Views &amp; Opening Methods</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/multi-language-support">Internationalization</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/backup-restore">Cloud Backup and Restore</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/pages-and-sections">Pages and Sections</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Community</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/showcase">*Dashy Showcase* 🌟</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/contributing">Contributing</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/developing">Developing</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/development-guides">Development Guides</a></li></ul></li><li class="menu__list-item menu__list-item--collapsed"><a class="menu__link menu__link--sublist" href="#!">Misc</a><ul class="menu__list"><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/privacy">Privacy &amp; Security</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/changelog">Changelog</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/license">license</a></li><li class="menu__list-item"><a class="menu__link" tabindex="-1" href="/docs/code-of-conduct">Contributor Covenant Code of Conduct</a></li></ul></li></ul></nav><div class="sidebar-ad"><script async="" src="//cdn.carbonads.com/carbon.js?serve=CWYIC53L&amp;placement=dashyto" id="_carbonads_js"></script></div></div></aside><main class="docMainContainer_r8cw"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_zHA2"><div class="docItemContainer_oiyr"><article><div class="markdown"><header><h1 class="h1Heading_dC7a">Troubleshooting</h1></header><blockquote><p><em><strong>This document contains common problems and their solutions.</strong></em><br>
Please ensure your issue isn&#x27;t listed here, before opening a new ticket.</p><p><em>Found something not listed here? Consider adding it, to help other users.</em></p></blockquote><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="contents"></a>Contents<a class="hash-link" href="#contents" title="Direct link to heading">#</a></h2><ul><li><a href="#config-not-saving">Config not saving</a></li><li><a href="#refused-to-connect-in-modal-or-workspace-view">Refused to Connect in Web Content View</a></li><li><a href="#404-on-static-hosting">404 On Static Hosting</a></li><li><a href="#404-after-launch-from-mobile-home-screen">404 from Mobile Home Screen</a></li><li><a href="#yarn-error">Yarn Build or Run Error</a></li><li><a href="#remote-config-not-loading">Remote Config Not Loading</a></li><li><a href="#ineffective-mark-compacts-near-heap-limit-allocation-failed">Heap limit Allocation failed</a></li><li><a href="#command-failed-with-signal-sigkill">Command failed with signal &quot;SIGKILL&quot;</a></li><li><a href="#auth-validation-error-should-be-object">Auth Validation Error: &quot;should be object&quot;</a></li><li><a href="#app-not-starting-after-update-to-204">App Not Starting After Update to 2.0.4</a></li><li><a href="#keycloak-redirect-error">Keycloak Redirect Error</a></li><li><a href="#docker-directory">Docker Directory Error</a></li><li><a href="#user-content-config-not-saving-on-vercel--netlify--cdn">Config not Saving on Vercel / Netlify / CDN</a></li><li><a href="#config-not-updating">Config Not Updating</a></li><li><a href="#config-still-not-updating">Config Still not Updating</a></li><li><a href="#styles-and-assets-not-updating">Styles and Assets not Updating</a></li><li><a href="#dockerhub-toomanyrequests">DockerHub toomanyrequests</a></li><li><a href="#config-validation-errors">Config Validation Errors</a></li><li><a href="#node-sass-does-not-yet-support-your-current-environment">Node Sass unsupported environment</a></li><li><a href="#unreachable-code-error">Unreachable Code Error</a></li><li><a href="#error-cannot-find-module-_basevalues">Cannot find module &#x27;./_baseValues&#x27;</a></li><li><a href="#invalid-host-header-while-running-through-ngrok">Ngrok Invalid Host Headers</a></li><li><a href="#warnings-in-the-console-during-deploy">Warnings in the Console during deploy</a></li><li><a href="#docker-login-fails-on-ubuntu">Docker Login Fails on Ubuntu</a></li><li><a href="#status-checks-failing">Status Checks Failing</a></li><li><a href="#widget-errors">Diagnosing Widget Errors</a></li><li><a href="#widget-cors-errors">Fixing Widget CORS Errors</a></li><li><a href="#widget-shows-error-incorrectly">Widget Shows Error Incorrectly</a></li><li><a href="#weather-forecast-widget-401">Weather Forecast Widget 401</a></li><li><a href="#widget-displaying-inaccurate-data">Widget Displaying Inaccurate Data</a></li><li><a href="#font-awesome-icons-not-displaying">Font Awesome Icons not Displaying</a></li><li><a href="#copy-to-clipboard-not-working">Copy to Clipboard not Working</a></li><li><a href="#unsupported-digital-envelope-routines">Unsupported Digital Envelope Routines</a></li><li><a href="#how-to-reset-local-settings">How to Reset Local Settings</a></li><li><a href="#how-to-make-a-bug-report">How to make a bug report</a></li><li><a href="#how-to-open-browser-console">How-To Open Browser Console</a></li><li><a href="#git-contributions-not-displaying">Git Contributions not Displaying</a></li></ul><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="config-not-saving"></a>Config not saving<a class="hash-link" href="#config-not-saving" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="possible-issue-1-unable-to-call-save-endpoint-from-cdnstatic-server"></a>Possible Issue 1: Unable to call save endpoint from CDN/static server<a class="hash-link" href="#possible-issue-1-unable-to-call-save-endpoint-from-cdnstatic-server" title="Direct link to heading">#</a></h3><p>If you&#x27;re running Dashy using a static hosting provider (like Vercel), then there is no Node server, and so the save config action will not work via the UI.
You&#x27;ll instead need to copy the YAML after making your changes, and paste that into your <code>conf.yml</code> directly. If you&#x27;ve connected Vercel to git, then these changes will take effect automatically, once you commit your changes.
Look here for more information: <a href="https://dashy.to/docs/deployment#deploy-to-cloud-service" target="_blank" rel="noopener noreferrer">https://dashy.to/docs/deployment#deploy-to-cloud-service</a></p><p>If you&#x27;re running on Netlify, there are some cloud functions which take care of all the server endpoints (like status checking), so these will work as expected.</p><p>See also <a href="https://github.com/Lissy93/dashy/issues/1465" target="_blank" rel="noopener noreferrer">#1465</a></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="possible-issue-2-unable-to-save"></a>Possible Issue 2: Unable to save<a class="hash-link" href="#possible-issue-2-unable-to-save" title="Direct link to heading">#</a></h3><p>In Docker, double check that the file isn&#x27;t read-only, and that the container actually has permissions to modify it. You shouldn&#x27;t really be running it as a root user, and I&#x27;m not sure if it will work if you do-</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="possible-issue-3-saved-but-not-updating"></a>Possible Issue 3: Saved but not updating<a class="hash-link" href="#possible-issue-3-saved-but-not-updating" title="Direct link to heading">#</a></h3><p>After saving, the frontend will recompile, which may take a couple seconds (or a bit longer on a Pi or low-powered device). If it doesn&#x27;t recompile, you can manually trigger a re-build.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="refused-to-connect-in-modal-or-workspace-view"></a><code>Refused to Connect</code> in Modal or Workspace View<a class="hash-link" href="#refused-to-connect-in-modal-or-workspace-view" title="Direct link to heading">#</a></h2><p>This is not an issue with Dashy, but instead caused by the target app preventing direct access through embedded elements.</p><p>As defined in <a href="https://datatracker.ietf.org/doc/html/rfc7034" target="_blank" rel="noopener noreferrer">RFC-7034</a>, for any web content to be accessed through an embedded element, it must have the <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options" target="_blank" rel="noopener noreferrer"><code>X-Frame-Options</code></a> HTTP header set to <code>ALLOW</code>. If you are getting a <code>Refused to Connect</code> error then this header is set to <code>DENY</code> (or <code>SAMEORIGIN</code> and it&#x27;s on a different host). Thankfully, for self-hosted services, it is easy to set these headers.</p><p>These settings are usually set in the config file for the web server that&#x27;s hosting the target application, here are some examples of how to enable cross-origin access with common web servers:</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="nginx"></a>NGINX<a class="hash-link" href="#nginx" title="Direct link to heading">#</a></h3><p>In NGINX, you can use the <a href="https://nginx.org/en/docs/http/ngx_http_headers_module.html" target="_blank" rel="noopener noreferrer"><code>add_header</code></a> module within the app block.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">server {</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> ...</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> add_header X-Frame-Options SAMEORIGIN always;</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>Then reload with <code>service nginx reload</code></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="caddy"></a>Caddy<a class="hash-link" href="#caddy" title="Direct link to heading">#</a></h3><p>In Caddy, you can use the <a href="https://caddyserver.com/docs/caddyfile/directives/header" target="_blank" rel="noopener noreferrer"><code>header</code></a> directive.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">header {</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> X-Frame-Options SAMEORIGIN</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">}</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="apache"></a>Apache<a class="hash-link" href="#apache" title="Direct link to heading">#</a></h3><p>In Apache, you can use the <a href="https://httpd.apache.org/docs/current/mod/mod_headers.html" target="_blank" rel="noopener noreferrer"><code>mod_headers</code></a> module to set the <code>X-Frame-Options</code> in your config file. This file is usually located somewhere like `/etc/apache2/httpd.conf</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Header set X-Frame-Options: &quot;ALLOW-FROM http://[dashy-location]/&quot;</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="lighthttpd"></a>LightHttpd<a class="hash-link" href="#lighthttpd" title="Direct link to heading">#</a></h3><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Content-Security-Policy: frame-ancestors &#x27;self&#x27; https://[dashy-location]/</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="404-on-static-hosting"></a>404 On Static Hosting<a class="hash-link" href="#404-on-static-hosting" title="Direct link to heading">#</a></h2><p>If you&#x27;re seeing Dashy&#x27;s 404 page on initial load/ refresh, and then the main app when you go back to Home, then this is likely caused by the Vue router, and if so can be fixed in one of two ways.</p><p>The first solution is to switch the routing mode, from HTML5 <code>history</code> mode to <code>hash</code> mode, by setting <code>appConfig.routingMode</code> to <code>hash</code>.</p><p>If this works, but you wish to continue using HTML5 history mode, then a bit of extra <a href="/docs/management#web-server-configuration">server configuration</a> is required. This is explained in more detaail in the <a href="https://router.vuejs.org/guide/essentials/history-mode.html" target="_blank" rel="noopener noreferrer">Vue Docs</a>. Once completed, you can then use <code>routingMode: history</code> again, for neater URLs.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="404-after-launch-from-mobile-home-screen"></a>404 after Launch from Mobile Home Screen<a class="hash-link" href="#404-after-launch-from-mobile-home-screen" title="Direct link to heading">#</a></h2><p>Similar to the above issue, if you get a 404 after using iOS and Android&#x27;s &quot;Add to Home Screen&quot; feature, then this is caused by Vue router.
It can be fixed by setting <code>appConfig.routingMode</code> to <code>hash</code></p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/628" target="_blank" rel="noopener noreferrer">#628</a>, <a href="https://github.com/Lissy93/dashy/issues/762" target="_blank" rel="noopener noreferrer">#762</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="404-on-multi-page-apps"></a>404 On Multi-Page Apps<a class="hash-link" href="#404-on-multi-page-apps" title="Direct link to heading">#</a></h2><p>Similar to above, if you get a 404 error when visiting a page directly on multi-page apps, then this can be fixed under <code>appConfig</code>, by setting <code>routingMode</code> to <code>hash</code>. Then rebuilding, and refreshing the page.</p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/670" target="_blank" rel="noopener noreferrer">#670</a>, <a href="https://github.com/Lissy93/dashy/issues/763" target="_blank" rel="noopener noreferrer">#763</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="yarn-error"></a>Yarn Error<a class="hash-link" href="#yarn-error" title="Direct link to heading">#</a></h2><p>For more info, see <a href="https://github.com/Lissy93/dashy/issues/1" target="_blank" rel="noopener noreferrer">Issue #1</a></p><p>First of all, check that you&#x27;ve got yarn installed correctly - see the <a href="https://classic.yarnpkg.com/en/docs/install" target="_blank" rel="noopener noreferrer">yarn installation docs</a> for more info.</p><p>If you&#x27;re getting an error about scenarios, then you&#x27;ve likely installed the wrong yarn... (you&#x27;re <a href="https://github.com/yarnpkg/yarn/issues/2821" target="_blank" rel="noopener noreferrer">not</a> the only one!). You can fix it by uninstalling, adding the correct repo, and reinstalling, for example, in Debian:</p><ul><li><code>sudo apt remove yarn</code></li><li><code>curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -</code></li><li><code>echo &quot;deb https://dl.yarnpkg.com/debian/ stable main&quot; | sudo tee /etc/apt/sources.list.d/yarn.list</code></li><li><code>sudo apt update &amp;&amp; sudo apt install yarn</code></li></ul><p>Alternatively, as a workaround, you have several options:</p><ul><li>Try using <a href="https://www.npmjs.com/get-npm" target="_blank" rel="noopener noreferrer">NPM</a> instead: So clone, cd, then run <code>npm install</code>, <code>npm run build</code> and <code>npm start</code></li><li>Try using <a href="https://www.docker.com/get-started" target="_blank" rel="noopener noreferrer">Docker</a> instead, and all of the system setup and dependencies will already be taken care of. So from within the directory, just run <code>docker build -t lissy93/dashy .</code> to build, and then use docker start to run the project, e.g: <code>docker run -it -p 8080:80 lissy93/dashy</code> (see the <a href="https://github.com/Lissy93/dashy/blob/master/docs/deployment.md#deploy-with-docker" target="_blank" rel="noopener noreferrer">deploying docs</a> for more info)</li></ul><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="remote-config-not-loading"></a>Remote Config Not Loading<a class="hash-link" href="#remote-config-not-loading" title="Direct link to heading">#</a></h2><p>If you&#x27;ve got a multi-page dashboard, and are hosting the additional config files yourself, then CORS rules will apply. A CORS error will look something like:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Access to XMLHttpRequest at &#x27;https://example.com/raw/my-config.yml&#x27; from origin &#x27;http://dashy.local&#x27; has been blocked by CORS policy:</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">No &#x27;Access-Control-Allow-Origin&#x27; header is present on the requested resource.</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>The solution is to add the appropriate headers onto the target server, to allow it to accept requests from the origin where you&#x27;re running Dashy.</p><p>If it is a remote service, that you do not have admin access to, then another option is to proxy the request. Either host your own, or use a publicly accessible service, like <a href="https://allorigins.win" target="_blank" rel="noopener noreferrer">allorigins.win</a>, e.g: <code>https://api.allorigins.win/raw?url=https://pastebin.com/raw/4tZpaJV5</code>. For git-based services specifically, there&#x27;s <a href="https://raw.githack.com/" target="_blank" rel="noopener noreferrer">raw.githack.com</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="ineffective-mark-compacts-near-heap-limit-allocation-failed"></a>Ineffective mark-compacts near heap limit Allocation failed<a class="hash-link" href="#ineffective-mark-compacts-near-heap-limit-allocation-failed" title="Direct link to heading">#</a></h2><p>If you see an error message, similar to:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">&lt;--- Last few GCs ---&gt;</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block">
</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">[61:0x74533040] 229060 ms: Mark-sweep (reduce) 127.1 (236.9) -&gt; 127.1 (137.4) MB, 5560.7 / 0.3 ms (average mu = 0.286, current mu = 0.011) allocation failure scavenge might not succeed</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block">
</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">&lt;--- JS stacktrace ---&gt;</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain" style="display:inline-block">
</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>This is likely caused by insufficient memory allocation to the container. When the container first starts up, or has to rebuild, the memory usage spikes, and if there isn&#x27;t enough memory, it may terminate. This can be specified with, for example: <code>--memory=1024m</code>. For more info, see <a href="https://docs.docker.com/config/containers/resource_constraints/" target="_blank" rel="noopener noreferrer">Docker: Runtime options with Memory, CPUs, and GPUs</a>.</p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/380" target="_blank" rel="noopener noreferrer">#380</a>, <a href="https://github.com/Lissy93/dashy/issues/350" target="_blank" rel="noopener noreferrer">#350</a>, <a href="https://github.com/Lissy93/dashy/issues/297" target="_blank" rel="noopener noreferrer">#297</a>, <a href="https://github.com/Lissy93/dashy/issues/349" target="_blank" rel="noopener noreferrer">#349</a>, <a href="https://github.com/Lissy93/dashy/issues/510" target="_blank" rel="noopener noreferrer">#510</a>, <a href="https://github.com/Lissy93/dashy/issues/511" target="_blank" rel="noopener noreferrer">#511</a> and <a href="https://github.com/Lissy93/dashy/issues/834" target="_blank" rel="noopener noreferrer">#834</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="command-failed-with-signal-sigkill"></a>Command failed with signal &quot;SIGKILL&quot;<a class="hash-link" href="#command-failed-with-signal-sigkill" title="Direct link to heading">#</a></h2><p>In Docker, this can be caused by not enough memory. When the container first starts up, or has to rebuild, the memory usage spikes, and so a larger allocation may be required. This can be specified with, for example: <code>--memory=1024m</code>. For more info, see <a href="https://docs.docker.com/config/containers/resource_constraints/" target="_blank" rel="noopener noreferrer">Docker: Runtime options with Memory, CPUs, and GPUs</a></p><p>See also <a href="https://github.com/Lissy93/dashy/issues/624" target="_blank" rel="noopener noreferrer">#624</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="auth-validation-error-should-be-object"></a>Auth Validation Error: &quot;should be object&quot;<a class="hash-link" href="#auth-validation-error-should-be-object" title="Direct link to heading">#</a></h2><p>In V 1.6.5 an update was made that in the future will become a breaking change. You will need to update you config to reflect this before V 2.0.0 is released. In the meantime, your previous config will continue to function normally, but you will see a validation warning. The change means that the structure of the <code>appConfig.auth</code> object is now an object, which has a <code>users</code> property.</p><p>For more info, see <a href="https://github.com/Lissy93/dashy/discussions/177" target="_blank" rel="noopener noreferrer">this announcement</a>.</p><p>You can fix this by replacing:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">auth</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">user</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> xxx</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">hash</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> xxx</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>with</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">auth</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">users</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> </span><span class="token key atrule">user</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> xxx</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"> </span><span class="token key atrule">hash</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"> xxx</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="app-not-starting-after-update-to-204"></a>App Not Starting After Update to 2.0.4<a class="hash-link" href="#app-not-starting-after-update-to-204" title="Direct link to heading">#</a></h2><p>Version 2.0.4 introduced changes to how the config is read, and the app is build. If you were previously mounting <code>/public</code> as a volume, then this will over-write the build app, preventing it from starting. The solution is to just pass in the file(s) / sub-directories that you need. For example:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token key atrule">volumes</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain"></span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> /srv/dashy/conf.yml</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">/app/public/conf.yml</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain"></span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain"> /srv/dashy/item</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">icons</span><span class="token punctuation" style="color:rgb(248, 248, 242)">:</span><span class="token plain">/app/public/item</span><span class="token punctuation" style="color:rgb(248, 248, 242)">-</span><span class="token plain">icons</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="keycloak-redirect-error"></a>Keycloak Redirect Error<a class="hash-link" href="#keycloak-redirect-error" title="Direct link to heading">#</a></h2><p>Check the <a href="#how-to-open-browser-console">browser&#x27;s console output</a>, if you&#x27;ve not set any headers, you will likely see a CORS error here, which would be the source of the issue.</p><p>You need to allow Dashy to make requests to Keycloak, and Keycloak to redirect to Dashy. The way you do this depends on how you&#x27;re hosting these applications / which proxy you are using, and examples can be found in the <a href="/docs/management#setting-headers">Management Docs</a>.</p><p>For example, add the access control header to Keycloak, like:</p><p><code>Access-Control-Allow-Origin [URL-of Dashy]</code></p><p>Note that for requests that transport sensitive info like credentials, setting the accept header to a wildcard (<code>*</code>) is not allowed - see <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#requests_with_credentials" target="_blank" rel="noopener noreferrer">MDN Docs</a>, so you will need to specify the actual URL.</p><p>You should also ensure that Keycloak is correctly configured, with a user, realm and application, and be sure that you have set a valid redirect URL in Keycloak (<a href="https://user-images.githubusercontent.com/1862727/148599768-db4ee4f8-72c5-402d-8f00-051d999e6267.png" target="_blank" rel="noopener noreferrer">screenshot</a>).</p><p>For more details on how to set headers, see the <a href="/docs/management#setting-headers">Example Headers</a> in the management docs, or reference the documentation for your proxy.</p><p>If you&#x27;re running in Kubernetes, you will need to enable CORS ingress rules, see <a href="https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/#enable-cors" target="_blank" rel="noopener noreferrer">docs</a>, e.g:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">nginx.ingress.kubernetes.io/cors-allow-origin: &quot;https://dashy.example.com&quot;</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">nginx.ingress.kubernetes.io/enable-cors: &quot;true&quot;</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>See also: #479, #409, #507, #491, #341, #520</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="docker-directory"></a>Docker Directory<a class="hash-link" href="#docker-directory" title="Direct link to heading">#</a></h2><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Error response from daemon: OCI runtime create failed: container_linux.go:380:</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">starting container process caused: process_linux.go:545: container init caused:</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">rootfs_linux.go:76: mounting &quot;/home/ubuntu/my-conf.yml&quot; to rootfs at</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">&quot;/app/public/conf.yml&quot; caused: mount through procfd: not a directory:</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">unknown: Are you trying to mount a directory onto a file (or vice-versa)?</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Check if the specified host path exists and is the expected type.</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>If you get an error similar to the one above, you are mounting a directory to the config file&#x27;s location, when a plain file is expected. Create a YAML file, (<code>touch my-conf.yml</code>), populate it with a sample config, then pass it as a volume: <code>-v ./my-local-conf.yml:/app/public/conf.yml</code></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="config-not-saving-on-vercel--netlify--cdn"></a>Config not Saving on Vercel / Netlify / CDN<a class="hash-link" href="#config-not-saving-on-vercel--netlify--cdn" title="Direct link to heading">#</a></h2><p>If you&#x27;re running Dashy using a static hosting provider (like Vercel), then there is no Node server, and so the save config action will not work via the UI.
You&#x27;ll instead need to copy the YAML after making your changes, and paste that into your <code>conf.yml</code> directly. If you&#x27;ve connected Vercel to git, then these changes will take effect automatically, once you commit your changes.</p><p>If you&#x27;re running on Netlify, there are some cloud functions which take care of all the server endpoints (like status checking), so these will work as expected.</p><p>See also <a href="https://github.com/Lissy93/dashy/issues/1465" target="_blank" rel="noopener noreferrer">#1465</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="config-not-updating"></a>Config Not Updating<a class="hash-link" href="#config-not-updating" title="Direct link to heading">#</a></h2><p>Dashy has the option to save settings and config locally, in browser storage. Anything here will take precedence over whatever is in your config file, sometimes with unintended consequences. If you&#x27;ve updated the config file manually, and are not seeing changes reflected in the UI, then try visiting the site in Incognito mode. If that works, then the solution is just to clear local storage. This can be done from the config menu, under &quot;Clear Local Settings&quot;.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="config-still-not-updating"></a>Config Still not Updating<a class="hash-link" href="#config-still-not-updating" title="Direct link to heading">#</a></h2><p>Sometimes your text editor updates files <a href="https://linuxhandbook.com/inode-linux/" target="_blank" rel="noopener noreferrer">inode</a>, meaning changes will not be picked up by the Docker container. This <a href="https://medium.com/@jonsbun/why-need-to-be-careful-when-mounting-single-files-into-a-docker-container-4f929340834" target="_blank" rel="noopener noreferrer">article</a> explains things further.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="styles-and-assets-not-updating"></a>Styles and Assets not Updating<a class="hash-link" href="#styles-and-assets-not-updating" title="Direct link to heading">#</a></h2><p>If you find that your styles and other visual assets work when visiting <code>ip:port</code> by not <code>dashy.domain.com</code>, then this is usually caused by caching. In your browser, do a hard-refresh (<kbd>Ctrl</kbd> + <kbd>F5</kbd>). If you use Cloudflare, then you can clear the cache through the management console, or set the cache level to Bypass for certain files, under the Rules tab.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="dockerhub-toomanyrequests"></a>DockerHub <code>toomanyrequests</code><a class="hash-link" href="#dockerhub-toomanyrequests" title="Direct link to heading">#</a></h2><p>This situation relates to error messages similar to one of the following, returned when pulling, updating or running the Docker container from Docker Hub.</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Continuing execution. Pulling image lissy93/dashy:release-1.6.0</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">error pulling image configuration: toomanyrequests</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>or</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>When DockerHub returns one of these errors, or a <code>429</code> status, that means you&#x27;ve hit your rate limit. This was <a href="https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/" target="_blank" rel="noopener noreferrer">introduced</a> last year, and prevents unauthenticated or free users from running docker pull more than 100 times per 6 hours.
You can <a href="https://www.docker.com/blog/checking-your-current-docker-pull-rate-limits-and-status/" target="_blank" rel="noopener noreferrer">check your rate limit status</a> by looking for the <code>ratelimit-remaining</code> header in any DockerHub responses.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="solution-1---use-an-alternate-container-registry"></a>Solution 1 - Use an alternate container registry<a class="hash-link" href="#solution-1---use-an-alternate-container-registry" title="Direct link to heading">#</a></h3><ul><li>Dashy is also available through GHCR, which at present does not have any hard limits. Just use <code>docker pull ghcr.io/lissy93/dashy:latest</code> to fetch the image</li><li>You can also build the image from source, by cloning the repo, and running <code>docker build -t dashy .</code> or use the pre-made docker compose</li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="solution-2---increase-your-rate-limits"></a>Solution 2 - Increase your rate limits<a class="hash-link" href="#solution-2---increase-your-rate-limits" title="Direct link to heading">#</a></h3><ul><li>Logging in to DockerHub will increase your rate limit from 100 requests to 200 requests per 6 hour period</li><li>Upgrading to a Pro for $5/month will increase your image requests to 5,000 per day, and any plans above have no rate limits</li><li>Since rate limits are counted based on your IP address, proxying your requests, or using a VPN may work</li></ul><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="config-validation-errors"></a>Config Validation Errors<a class="hash-link" href="#config-validation-errors" title="Direct link to heading">#</a></h2><p>The configuration file is validated against <a href="https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json" target="_blank" rel="noopener noreferrer">Dashy&#x27;s Schema</a> using AJV.</p><p>First, check that your syntax is valid, using <a href="https://codebeautify.org/yaml-validator/" target="_blank" rel="noopener noreferrer">YAML Validator</a> or <a href="https://codebeautify.org/jsonvalidator" target="_blank" rel="noopener noreferrer">JSON Validator</a>. If the issue persists, then take a look at the <a href="https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json" target="_blank" rel="noopener noreferrer">schema</a>, and verify that the field you are trying to add/ modify matches the required format. You can also use <a href="https://www.jsonschemavalidator.net/s/JFUj7X9J" target="_blank" rel="noopener noreferrer">this tool</a> to validate your JSON config against the schema, or run <code>yarn validate-config</code>.</p><p>If you&#x27;re trying to use a recently released feature, and are getting a warning, this is likely because you&#x27;ve not yet updated the the current latest version of Dashy.</p><p>If the issue still persists, you should raise an issue.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="node-sass-does-not-yet-support-your-current-environment"></a>Node Sass does not yet support your current environment<a class="hash-link" href="#node-sass-does-not-yet-support-your-current-environment" title="Direct link to heading">#</a></h2><p>Caused by node-sass&#x27;s binaries being built for a for a different architecture
To fix this, just run: <code>yarn rebuild node-sass</code></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="unreachable-code-error"></a>Unreachable Code Error<a class="hash-link" href="#unreachable-code-error" title="Direct link to heading">#</a></h2><p>An error similar to: <code>Fatal error in , line 0. Unreachable code, FailureMessage Object: 0xffe6c8ac. Illegal instruction (core dumped)</code>
Is related to a bug in a downstream package, see <a href="https://github.com/nodejs/docker-node/issues/1477" target="_blank" rel="noopener noreferrer">nodejs/docker-node#1477</a>.
Usually, updating your system and packages will resolve the issue.</p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/776" target="_blank" rel="noopener noreferrer">#776</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="error-cannot-find-module-_basevalues"></a>Error: Cannot find module &#x27;./_baseValues&#x27;<a class="hash-link" href="#error-cannot-find-module-_basevalues" title="Direct link to heading">#</a></h2><p>Clearing the cache should fix this: <code>yarn cache clean</code>
If the issue persists, remove (<code>rm -rf node_modules\ yarn.lock</code>) and reinstall (<code>yarn</code>) node_modules</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="invalid-host-header-while-running-through-ngrok"></a>Invalid Host Header while running through ngrok<a class="hash-link" href="#invalid-host-header-while-running-through-ngrok" title="Direct link to heading">#</a></h2><p>Just add the <a href="https://ngrok.com/docs#http-host-header" target="_blank" rel="noopener noreferrer">-host-header</a> flag, e.g. <code>ngrok http 8080 -host-header=&quot;localhost:8080&quot;</code></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="warnings-in-the-console-during-deploy"></a>Warnings in the Console during deploy<a class="hash-link" href="#warnings-in-the-console-during-deploy" title="Direct link to heading">#</a></h2><p>Please acknowledge the difference between errors and warnings before raising an issue about messages in the console. It&#x27;s not unusual to see warnings about a new version of a certain package being available, an asset bundle bing oversized or a service worker not yet having a cache. These shouldn&#x27;t have any impact on the running application, so please don&#x27;t raise issues about these unless it directly relates to a bug or issue you&#x27;re experiencing. Errors on the other hand should not appear in the console, and they are worth looking into further.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="docker-login-fails-on-ubuntu"></a>Docker Login Fails on Ubuntu<a class="hash-link" href="#docker-login-fails-on-ubuntu" title="Direct link to heading">#</a></h2><p>Run <code>sudo apt install gnupg2 pass &amp;&amp; gpg2 -k</code></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="status-checks-failing"></a>Status Checks Failing<a class="hash-link" href="#status-checks-failing" title="Direct link to heading">#</a></h2><p>If you&#x27;re using status checks, and despite a given service being online, the check is displaying an error, there are a couple of things you can look at:</p><p>If your service requires requests to include any authorization in the headers, then use the <code>statusCheckHeaders</code> property, as described in the <a href="/docs/status-indicators#setting-custom-headers">docs</a>.</p><p>If you are still having issues, it may be because your target application is blocking requests from Dashy&#x27;s IP. This is a <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" target="_blank" rel="noopener noreferrer">CORS error</a>, and can be fixed by setting the headers on your target app, to include:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Access-Control-Allow-Origin: https://location-of-dashy/</span></span><span class="token-line" style="color:#F8F8F2"><span class="token plain">Vary: Origin</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>If the URL you are checking has an unsigned certificate, or is not using HTTPS, then you may need to disable the rejection of insecure requests. This can be done by setting <code>statusCheckAllowInsecure</code> to true for a given item.</p><p>If your service is online, but responds with a status code that is not in the 2xx range, then you can use <code>statusCheckAcceptCodes</code> to set an accepted status code.</p><p>If you get an error, like <code>Service Unavailable: Server resulted in a fatal error</code>, even when it&#x27;s definitely online, this is most likely caused by missing the protocol. Don&#x27;t forget to include <code>https://</code> (or whatever protocol) before the URL, and ensure that if needed, you&#x27;ve specified the port.</p><p>Running Dashy in HOST network mode, instead of BRIDGE will allow status check access to other services in HOST mode. For more info, see <a href="https://github.com/Lissy93/dashy/discussions/445" target="_blank" rel="noopener noreferrer">#445</a>.</p><p>If you have firewall rules configured, then ensure that they don&#x27;t prevent Dashy from making requests to the other services you are trying to access.</p><p>Currently, the status check needs a page to be rendered, so if this URL in your browser does not return anything, then status checks will not work. This may be modified in the future, but in the meantime, a fix would be to make your own status service, which just checks if your app responds with whatever code you&#x27;d like, and then return a 200 plus renders an arbitrary message. Then just point <code>statusCheckUrl</code> to your custom page.</p><p>For further troubleshooting, use an application like <a href="https://postman.com" target="_blank" rel="noopener noreferrer">Postman</a> to diagnose the issue. Set the parameter to <code>GET</code>, and then make a call to: <code>https://[url-of-dashy]/status-check/?&amp;url=[service-url]</code>. Where the service URL must have first been encoded (e.g. with <code>encodeURIComponent()</code> or <a href="https://www.urlencoder.io/" target="_blank" rel="noopener noreferrer">urlencoder.io</a>)</p><p>If you&#x27;re serving Dashy though a CDN, instead of using the Node server or Docker image, then the Node endpoint that makes requests will not be available to you, and all requests will fail. A workaround for this may be implemented in the future, but in the meantime, your only option is to use the Docker or Node deployment method.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="widget-errors"></a>Widget Errors<a class="hash-link" href="#widget-errors" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="find-error-message"></a>Find Error Message<a class="hash-link" href="#find-error-message" title="Direct link to heading">#</a></h3><p>If an error occurs when fetching or rendering results, you will see a short message in the UI. If that message doesn&#x27;t adequately explain the problem, then you can <a href="/docs/troubleshooting#how-to-open-browser-console">open the browser console</a> to see more details.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="check-config"></a>Check Config<a class="hash-link" href="#check-config" title="Direct link to heading">#</a></h3><p>Before proceeding, ensure that if the widget requires auth your API is correct, and for custom widgets, double check that the URL and protocol is correct.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="timeout-error"></a>Timeout Error<a class="hash-link" href="#timeout-error" title="Direct link to heading">#</a></h3><p>If the error message in the console includes: <code>Error: timeout of 500ms exceeded</code>, then your Glances endpoint is slower to respond than expected. You can fix this by <a href="https://github.com/Lissy93/dashy/blob/master/docs/widgets.md#setting-timeout" target="_blank" rel="noopener noreferrer">setting timeout</a> to a larger value. This is done on each widget, with the <code>timeout</code> attribute, and is specified in ms. E.g. <code>timeout: 5000</code> would only fail if no response is returned within 5 seconds.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="cors-error"></a>CORS error<a class="hash-link" href="#cors-error" title="Direct link to heading">#</a></h3><p>If the console message mentions to corss-origin blocking, then this is a CORS error, see: <a href="#widget-cors-errors">Fixing Widget CORS Errors</a></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="more-info"></a>More Info<a class="hash-link" href="#more-info" title="Direct link to heading">#</a></h3><p>If you&#x27;re able to, you can find more information about why the request may be failing in the Dev Tools under the Network tab, and you can ensure your endpoint is correct and working using a tool like Postman.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="widget-cors-errors"></a>Widget CORS Errors<a class="hash-link" href="#widget-cors-errors" title="Direct link to heading">#</a></h2><p>The most common widget issue is a CORS error. This is a browser security mechanism which prevents the client-side app (Dashy) from from accessing resources on a remote origin, without that server&#x27;s explicit permission (e.g. with headers like Access-Control-Allow-Origin). See the MDN Docs for more info: <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS" target="_blank" rel="noopener noreferrer">Cross-Origin Resource Sharing</a>.</p><p>There are several ways to fix a CORS error:</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="option-1---ensure-correct-protocol"></a>Option 1 - Ensure Correct Protocol<a class="hash-link" href="#option-1---ensure-correct-protocol" title="Direct link to heading">#</a></h3><p>You will get a CORS error if you try and access a http service from a https source. So ensure that the URL you are requesting has the right protocol, and is correctly formatted.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="option-2---set-headers"></a>Option 2 - Set Headers<a class="hash-link" href="#option-2---set-headers" title="Direct link to heading">#</a></h3><p>If you have control over the destination (e.g. for a self-hosted service), then you can simply apply the correct headers.
Add the <code>Access-Control-Allow-Origin</code> header, with the value of either <code>*</code> to allow requests from anywhere, or more securely, the host of where Dashy is served from. For example:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Access-Control-Allow-Origin: https://url-of-dashy.local</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>or</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI text"><pre tabindex="0" class="prism-code language-text codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">Access-Control-Allow-Origin: *</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>For more info on how to set headers, see: <a href="/docs/management#setting-headers">Setting Headers</a> in the management docs</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="option-3---proxying-request"></a>Option 3 - Proxying Request<a class="hash-link" href="#option-3---proxying-request" title="Direct link to heading">#</a></h3><p>You can route requests through Dashy&#x27;s built-in CORS proxy. Instructions and more details can be found <a href="/docs/widgets#proxying-requests">here</a>. If you don&#x27;t have control over the target origin, and you are running Dashy either through Docker, with the Node server or on Netlify, then this solution will work for you.</p><p>Just add the <code>useProxy: true</code> option to the failing widget.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="option-4---use-a-plugin"></a>Option 4 - Use a plugin<a class="hash-link" href="#option-4---use-a-plugin" title="Direct link to heading">#</a></h3><p>For testing purposes, you can use an addon, which will disable the CORS checks. You can get the Allow-CORS extension for <a href="https://chrome.google.com/webstore/detail/allow-cors-access-control/lhobafahddgcelffkeicbaginigeejlf?hl=en-US" target="_blank" rel="noopener noreferrer">Chrome</a> or <a href="https://addons.mozilla.org/en-US/firefox/addon/access-control-allow-origin/" target="_blank" rel="noopener noreferrer">Firefox</a>, more details <a href="https://mybrowseraddon.com/access-control-allow-origin.html" target="_blank" rel="noopener noreferrer">here</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="widget-shows-error-incorrectly"></a>Widget Shows Error Incorrectly<a class="hash-link" href="#widget-shows-error-incorrectly" title="Direct link to heading">#</a></h2><p>When there&#x27;s an error fetching or displaying a widgets data, then it will be highlighted in yellow, and a message displayed on the UI.</p><p>In some instances, this is a false positive, and the widget is actually functioning correctly.
If this is the case, you can disable the UI error message of a given widget by setting: <code>ignoreErrors: true</code></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="weather-forecast-widget-401"></a>Weather Forecast Widget 401<a class="hash-link" href="#weather-forecast-widget-401" title="Direct link to heading">#</a></h2><p>A 401 error means your API key is invalid, it is not an issue with Dashy.</p><p>Usually this happens due to an error in your config. If you&#x27;re unsure, copy and paste the <a href="/docs/widgets#weather">example</a> config, replacing the API key with your own.</p><p>Check that <code>apiKey</code> is correctly specified, and nested within <code>options</code>. Ensure your input city is valid.</p><p>To test your API key, try making a request to <code>https://api.openweathermap.org/data/2.5/weather?q=London&amp;appid=[your-api-key]</code></p><p>If <a href="/docs/widgets#weather-forecast">Weather widget</a> is working fine, but you are getting a <code>401</code> for the <a href="/docs/widgets#weather-forecast">Weather Forecast widget</a>, then this is also an OWM API key issue.
Since the forecasting API requires an upgraded plan. ULPT: You can get a free, premium API key by filling in <a href="https://home.openweathermap.org/students" target="_blank" rel="noopener noreferrer">this form</a>. It&#x27;s a student plan, but there&#x27;s no verification to check that you are still a student.</p><p>A future update will be pushed out, to use a free weather forecasting API.</p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/803" target="_blank" rel="noopener noreferrer">#803</a>, <a href="https://github.com/Lissy93/dashy/issues/789" target="_blank" rel="noopener noreferrer">#789</a>, <a href="https://github.com/Lissy93/dashy/issues/577" target="_blank" rel="noopener noreferrer">#577</a>, <a href="https://github.com/Lissy93/dashy/issues/621" target="_blank" rel="noopener noreferrer">#621</a>, <a href="https://github.com/Lissy93/dashy/issues/578" target="_blank" rel="noopener noreferrer">#578</a>, <a href="https://github.com/Lissy93/dashy/discussions/806" target="_blank" rel="noopener noreferrer">#806</a></p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="widget-displaying-inaccurate-data"></a>Widget Displaying Inaccurate Data<a class="hash-link" href="#widget-displaying-inaccurate-data" title="Direct link to heading">#</a></h2><p>If any widget is not displaying the data you expect, first confirm that your config is correct, then try manually calling the API endpoint.</p><p>If the raw API output is correct, yet the widget is rendering incorrect results, then it is likely a bug, and a ticket should be raised. You can start to debug the issue, by looking at the widget&#x27;s code (<a href="https://github.com/Lissy93/dashy/tree/master/src/components/Widgets" target="_blank" rel="noopener noreferrer">here</a>), and the browser console + networking tab.</p><p>If the API itself is returning incorrect, incomplete or inaccurate data then an issue needs to be raised <strong>with the API provider</strong> (not Dashy!). You can find the API provider included within the widget docs, or for a full list see the <a href="https://github.com/Lissy93/dashy/blob/master/docs/privacy.md#widgets" target="_blank" rel="noopener noreferrer">Privacy Docs</a>.</p><p>See also: <a href="https://github.com/Lissy93/dashy/issues/807" target="_blank" rel="noopener noreferrer">#807</a> (re, domain monitor)</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="font-awesome-icons-not-displaying"></a>Font Awesome Icons not Displaying<a class="hash-link" href="#font-awesome-icons-not-displaying" title="Direct link to heading">#</a></h2><p>Usually, Font Awesome will be automatically enabled if one or more of your icons are using Font-Awesome. If this is not happening, then you can always manually enable (or disable) Font Awesome by setting: <a href="/docs/configuring#appconfig-optional"><code>appConfig</code></a>.<code>enableFontAwesome</code> to <code>true</code>.</p><p>If you are trying to use a premium icon, then you must have a <a href="https://fontawesome.com/plans" target="_blank" rel="noopener noreferrer">Pro License</a>. You&#x27;ll then need to specify your Pro plan API key under <code>appConfig.fontAwesomeKey</code>. You can find this key, by logging into your FA account, navigate to Account → <a href="https://fontawesome.com/kits" target="_blank" rel="noopener noreferrer">Kits</a> → New Kit → Copy Kit Code. The code is a 10-digit alpha-numeric code, and is also visible within the new kit&#x27;s URL, for example: <code>81e48ce079</code>.</p><p align="center"><img src="https://i.ibb.co/hZ0D9vs/where-do-i-find-my-font-awesome-key.png" width="600"></p><p>Be sure that you&#x27;re specifying the icon category and name correctly. You&#x27;re icon should look be <code>[category] fa-[icon-name]</code>. The following categories are supported: <code>far</code> <em>(regular)</em>, <code>fas</code> <em>(solid)</em>, <code>fal</code><em>(light)</em>, <code>fad</code> <em>(duo-tone)</em> and <code>fab</code><em>(brands)</em>. With the exception of brands, you&#x27;ll usually want all your icons to be in from same category, so they look uniform.</p><p>Ensure the icon you are trying to use, is available within <a href="https://fontawesome.com/v5/search" target="_blank" rel="noopener noreferrer">FontAwesome Version 5</a> (we&#x27;ve not yet upgraded to V6, as it works a little differently).</p><p>Examples: <code>fab fa-raspberry-pi</code>, <code>fas fa-database</code>, <code>fas fa-server</code>, <code>fas fa-ethernet</code></p><p>Finally, check the <a href="#how-to-open-browser-console">browser console</a> for any error messages, and raise a ticket if the issue persists.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="copy-to-clipboard-not-working"></a>Copy to Clipboard not Working<a class="hash-link" href="#copy-to-clipboard-not-working" title="Direct link to heading">#</a></h2><p>If the copy to clipboard feature (either under Config --&gt; Export, or Item --&gt; Copy URL) isn&#x27;t functioning as expected, first check the browser console. If you see <code>TypeError: Cannot read properties of undefined (reading &#x27;writeText&#x27;)</code> then this feature is not supported by your browser.
The most common reason for this, is if you not running the app over HTTPS. Copying to the clipboard requires the app to be running in a secure origin / aka have valid HTTPS cert. You can read more about this <a href="https://stackoverflow.com/a/71876238/979052" target="_blank" rel="noopener noreferrer">here</a>.</p><p>As a workaround, you could either:</p><ul><li>Highlight the text and copy / <kbd>Ctrl</kbd> + <kbd>C</kbd></li><li>Or setup SSL - <a href="https://github.com/Lissy93/dashy/blob/master/docs/management.md#ssl-certificates" target="_blank" rel="noopener noreferrer">here&#x27;s a guide</a> on doing so</li></ul><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="unsupported-digital-envelope-routines"></a>Unsupported Digital Envelope Routines<a class="hash-link" href="#unsupported-digital-envelope-routines" title="Direct link to heading">#</a></h2><p>If you&#x27;re running on GitHub Codespaces, and seeing: <code>Error: error:0308010C:digital envelope routines::unsupported</code> when using Node 17+, it can be resolved by adding the <code>--openssl-legacy-provider</code> flag to your <code>NODE_OPTIONS</code> environmental variable.
For example:</p><div class="codeBlockContainer_J+bg"><div class="codeBlockContent_csEI"><pre tabindex="0" class="prism-code language-undefined codeBlock_rtdJ thin-scrollbar" style="color:#F8F8F2;background-color:#282A36"><code class="codeBlockLines_1zSZ"><span class="token-line" style="color:#F8F8F2"><span class="token plain">export NODE_OPTIONS=--openssl-legacy-provider</span></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_M3SB clean-btn">Copy</button></div></div><p>This will be fixed once <a href="https://github.com/webpack/webpack/pull/17659" target="_blank" rel="noopener noreferrer">webpack/webpack#17659</a> is merged.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="how-to-reset-local-settings"></a>How to Reset Local Settings<a class="hash-link" href="#how-to-reset-local-settings" title="Direct link to heading">#</a></h2><p>Some settings are stored locally, in the browser&#x27;s storage.</p><p>In some instances cached assets can prevent your settings from being updated, in which case you may wish to reset local data.</p><p>To clear all local data from the UI, head to the Config Menu, then click &quot;Reset Local Settings&quot;, and Confirm when prompted.
This will not affect your config file. But be sure that you keep a backup of your config, if you&#x27;ve not written changes it to disk.</p><p>You can also view any and all data that Dashy is storing, using the developer tools. Open your browser&#x27;s dev tools (usually <kbd>F12</kbd>), in Chromium head to the Application tab, or in Firefox go to the Storage tab. Select Local Storage, then scroll down the the URL Dashy is running on. You should now see all data being stored, and you can select and delete any fields you wish.</p><p>For a full list of all data that may be cached, see the <a href="/docs/privacy#browser-storage">Privacy Docs</a>.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="how-to-make-a-bug-report"></a>How to make a bug report<a class="hash-link" href="#how-to-make-a-bug-report" title="Direct link to heading">#</a></h2><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="step-1---where-to-open-issues"></a>Step 1 - Where to open issues<a class="hash-link" href="#step-1---where-to-open-issues" title="Direct link to heading">#</a></h3><p>You will need a GitHub account in order to raise a ticket. You can then <a href="https://github.com/Lissy93/dashy/issues/new?assignees=lissy93&amp;labels=%F0%9F%90%9B+Bug&amp;template=bug.yml&amp;title=%5BBUG%5D+%3Ctitle%3E" target="_blank" rel="noopener noreferrer">click here</a> to open a new bug report.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="step-2---checking-its-not-already-covered"></a>Step 2 - Checking it&#x27;s not already covered<a class="hash-link" href="#step-2---checking-its-not-already-covered" title="Direct link to heading">#</a></h3><p>Before submitting, please check that:</p><ul><li>A similar ticket has not previously been opened</li><li>The issue is not covered in the <a href="https://github.com/Lissy93/dashy/blob/master/docs/troubleshooting.md" target="_blank" rel="noopener noreferrer">troubleshooting guide</a> or <a href="https://github.com/Lissy93/dashy/tree/master/docs#readme" target="_blank" rel="noopener noreferrer">docs</a></li></ul><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="step-3---describe-the-issue"></a>Step 3 - Describe the Issue<a class="hash-link" href="#step-3---describe-the-issue" title="Direct link to heading">#</a></h3><p>Your ticket will likely be dealt with more effectively if you can explain the issue clearly, and provide all relevant supporting material.</p><p>Complete the fields, asking for your environment info and version of Dashy.
Then describe the issue, briefly explaining the steps to reproduce, expected outcome and actual outcome.</p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="step-4---provide-supporting-info"></a>Step 4 - Provide Supporting Info<a class="hash-link" href="#step-4---provide-supporting-info" title="Direct link to heading">#</a></h3><p>Where relevant please also include:</p><ul><li>A screenshot of the issue</li><li>The relevant parts of your config file</li><li>Logs<ul><li>If client-side issue, then include the browser logs (<a href="#how-to-open-browser-console">see how</a>)</li><li>If server-side / during deployment, include the terminal output</li></ul></li></ul><p><em>Take care to redact any personal info, (like IP addresses, auth hashes or API keys).</em></p><h3><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="step-5---fix-released"></a>Step 5 - Fix Released<a class="hash-link" href="#step-5---fix-released" title="Direct link to heading">#</a></h3><p>A maintainer will aim to respond within 48 hours.
The timeframe for resolving your issue, will vary depending on severity of the bug and the complexity of the fix.
You will be notified on your ticket, when a fix has been released.</p><p>Finally, be sure to remain respectful to other users and project maintainers, in line with the <a href="https://github.com/Lissy93/dashy/blob/master/.github/CODE_OF_CONDUCT.md#contributor-covenant-code-of-conduct" target="_blank" rel="noopener noreferrer">Contributor Covenant Code of Conduct</a>.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="how-to-open-browser-console"></a>How-To Open Browser Console<a class="hash-link" href="#how-to-open-browser-console" title="Direct link to heading">#</a></h2><p>When raising a bug, one crucial piece of info needed is the browser&#x27;s console output. This will help the developer diagnose and fix the issue.</p><p>If you&#x27;ve been asked for this info, but are unsure where to find it, then it is under the &quot;Console&quot; tab, in the browsers developer tools, which can be opened with <kbd>F12</kbd>. You can right-click the console, and select Save As to download the log.</p><p>To open dev tools, and jump straight to the console:</p><ul><li>Win / Linux: <kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>J</kbd></li><li>MacOS: <kbd>Cmd</kbd> + <kbd>Option</kbd> + <kbd>J</kbd></li></ul><p>For more detailed walk through, see <a href="https://support.shortpoint.com/support/solutions/articles/1000222881-save-browser-console-file" target="_blank" rel="noopener noreferrer">this article</a>.</p><hr><h2><a aria-hidden="true" tabindex="-1" class="anchor enhancedAnchor_WiXH" id="git-contributions-not-displaying"></a>Git Contributions not Displaying<a class="hash-link" href="#git-contributions-not-displaying" title="Direct link to heading">#</a></h2><p>If you&#x27;ve contributed to Dashy (or any other project), but your contributions are not showing up on your GH profile, or in Dashy&#x27;s <a href="https://github.com/Lissy93/dashy/blob/master/docs/credits.md" target="_blank" rel="noopener noreferrer">Credits Page</a>, then this is likely a git config issue.</p><p>These statistics are generated using the username / email associated with commits. This info needs to be setup on your local machine using <a href="https://git-scm.com/docs/git-config" target="_blank" rel="noopener noreferrer"><code>git config</code></a>.</p><p>Run the following commands (replacing name + email with your info):</p><ul><li><code>git config --global user.name &quot;John Doe&quot;</code></li><li><code>git config --global user.email johndoe@example.com</code></li></ul><p>For more info, see <a href="https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup" target="_blank" rel="noopener noreferrer">Git First Time Setup Docs</a>.</p><p>Note that only contributions to the master / main branch or a project are counted</p></div><footer class="row docusaurus-mt-lg"><div class="col"><a href="https://github.com/Lissy93/dashy/edit/gh-pages/docs/docs/troubleshooting.md" target="_blank" rel="noreferrer noopener"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_mS5F" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_wj+Z"></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/management"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">« App Management</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/icons"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Icons »</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_vrFS thin-scrollbar"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#contents" class="table-of-contents__link">Contents</a></li><li><a href="#config-not-saving" class="table-of-contents__link">Config not saving</a><ul><li><a href="#possible-issue-1-unable-to-call-save-endpoint-from-cdnstatic-server" class="table-of-contents__link">Possible Issue 1: Unable to call save endpoint from CDN/static server</a></li><li><a href="#possible-issue-2-unable-to-save" class="table-of-contents__link">Possible Issue 2: Unable to save</a></li><li><a href="#possible-issue-3-saved-but-not-updating" class="table-of-contents__link">Possible Issue 3: Saved but not updating</a></li></ul></li><li><a href="#refused-to-connect-in-modal-or-workspace-view" class="table-of-contents__link"><code>Refused to Connect</code> in Modal or Workspace View</a><ul><li><a href="#nginx" class="table-of-contents__link">NGINX</a></li><li><a href="#caddy" class="table-of-contents__link">Caddy</a></li><li><a href="#apache" class="table-of-contents__link">Apache</a></li><li><a href="#lighthttpd" class="table-of-contents__link">LightHttpd</a></li></ul></li><li><a href="#404-on-static-hosting" class="table-of-contents__link">404 On Static Hosting</a></li><li><a href="#404-after-launch-from-mobile-home-screen" class="table-of-contents__link">404 after Launch from Mobile Home Screen</a></li><li><a href="#404-on-multi-page-apps" class="table-of-contents__link">404 On Multi-Page Apps</a></li><li><a href="#yarn-error" class="table-of-contents__link">Yarn Error</a></li><li><a href="#remote-config-not-loading" class="table-of-contents__link">Remote Config Not Loading</a></li><li><a href="#ineffective-mark-compacts-near-heap-limit-allocation-failed" class="table-of-contents__link">Ineffective mark-compacts near heap limit Allocation failed</a></li><li><a href="#command-failed-with-signal-sigkill" class="table-of-contents__link">Command failed with signal &quot;SIGKILL&quot;</a></li><li><a href="#auth-validation-error-should-be-object" class="table-of-contents__link">Auth Validation Error: &quot;should be object&quot;</a></li><li><a href="#app-not-starting-after-update-to-204" class="table-of-contents__link">App Not Starting After Update to 2.0.4</a></li><li><a href="#keycloak-redirect-error" class="table-of-contents__link">Keycloak Redirect Error</a></li><li><a href="#docker-directory" class="table-of-contents__link">Docker Directory</a></li><li><a href="#config-not-saving-on-vercel--netlify--cdn" class="table-of-contents__link">Config not Saving on Vercel / Netlify / CDN</a></li><li><a href="#config-not-updating" class="table-of-contents__link">Config Not Updating</a></li><li><a href="#config-still-not-updating" class="table-of-contents__link">Config Still not Updating</a></li><li><a href="#styles-and-assets-not-updating" class="table-of-contents__link">Styles and Assets not Updating</a></li><li><a href="#dockerhub-toomanyrequests" class="table-of-contents__link">DockerHub <code>toomanyrequests</code></a><ul><li><a href="#solution-1---use-an-alternate-container-registry" class="table-of-contents__link">Solution 1 - Use an alternate container registry</a></li><li><a href="#solution-2---increase-your-rate-limits" class="table-of-contents__link">Solution 2 - Increase your rate limits</a></li></ul></li><li><a href="#config-validation-errors" class="table-of-contents__link">Config Validation Errors</a></li><li><a href="#node-sass-does-not-yet-support-your-current-environment" class="table-of-contents__link">Node Sass does not yet support your current environment</a></li><li><a href="#unreachable-code-error" class="table-of-contents__link">Unreachable Code Error</a></li><li><a href="#error-cannot-find-module-_basevalues" class="table-of-contents__link">Error: Cannot find module &#39;./_baseValues&#39;</a></li><li><a href="#invalid-host-header-while-running-through-ngrok" class="table-of-contents__link">Invalid Host Header while running through ngrok</a></li><li><a href="#warnings-in-the-console-during-deploy" class="table-of-contents__link">Warnings in the Console during deploy</a></li><li><a href="#docker-login-fails-on-ubuntu" class="table-of-contents__link">Docker Login Fails on Ubuntu</a></li><li><a href="#status-checks-failing" class="table-of-contents__link">Status Checks Failing</a></li><li><a href="#widget-errors" class="table-of-contents__link">Widget Errors</a><ul><li><a href="#find-error-message" class="table-of-contents__link">Find Error Message</a></li><li><a href="#check-config" class="table-of-contents__link">Check Config</a></li><li><a href="#timeout-error" class="table-of-contents__link">Timeout Error</a></li><li><a href="#cors-error" class="table-of-contents__link">CORS error</a></li><li><a href="#more-info" class="table-of-contents__link">More Info</a></li></ul></li><li><a href="#widget-cors-errors" class="table-of-contents__link">Widget CORS Errors</a><ul><li><a href="#option-1---ensure-correct-protocol" class="table-of-contents__link">Option 1 - Ensure Correct Protocol</a></li><li><a href="#option-2---set-headers" class="table-of-contents__link">Option 2 - Set Headers</a></li><li><a href="#option-3---proxying-request" class="table-of-contents__link">Option 3 - Proxying Request</a></li><li><a href="#option-4---use-a-plugin" class="table-of-contents__link">Option 4 - Use a plugin</a></li></ul></li><li><a href="#widget-shows-error-incorrectly" class="table-of-contents__link">Widget Shows Error Incorrectly</a></li><li><a href="#weather-forecast-widget-401" class="table-of-contents__link">Weather Forecast Widget 401</a></li><li><a href="#widget-displaying-inaccurate-data" class="table-of-contents__link">Widget Displaying Inaccurate Data</a></li><li><a href="#font-awesome-icons-not-displaying" class="table-of-contents__link">Font Awesome Icons not Displaying</a></li><li><a href="#copy-to-clipboard-not-working" class="table-of-contents__link">Copy to Clipboard not Working</a></li><li><a href="#unsupported-digital-envelope-routines" class="table-of-contents__link">Unsupported Digital Envelope Routines</a></li><li><a href="#how-to-reset-local-settings" class="table-of-contents__link">How to Reset Local Settings</a></li><li><a href="#how-to-make-a-bug-report" class="table-of-contents__link">How to make a bug report</a><ul><li><a href="#step-1---where-to-open-issues" class="table-of-contents__link">Step 1 - Where to open issues</a></li><li><a href="#step-2---checking-its-not-already-covered" class="table-of-contents__link">Step 2 - Checking it&#39;s not already covered</a></li><li><a href="#step-3---describe-the-issue" class="table-of-contents__link">Step 3 - Describe the Issue</a></li><li><a href="#step-4---provide-supporting-info" class="table-of-contents__link">Step 4 - Provide Supporting Info</a></li><li><a href="#step-5---fix-released" class="table-of-contents__link">Step 5 - Fix Released</a></li></ul></li><li><a href="#how-to-open-browser-console" class="table-of-contents__link">How-To Open Browser Console</a></li><li><a href="#git-contributions-not-displaying" class="table-of-contents__link">Git Contributions not Displaying</a></li></ul></div></div></div></div></main></div></div><footer class="footer footer--dark"><div class="container"><div class="row footer__links"><div class="col footer__col"><div class="footer__title">Intro</div><ul class="footer__items"><li class="footer__item"><a href="https://github.com/lissy93/dashy" target="_blank" rel="noopener noreferrer" class="footer__link-item">GitHub</a></li><li class="footer__item"><a href="https://demo.dashy.to" target="_blank" rel="noopener noreferrer" class="footer__link-item">Live Demo</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/quick-start">Quick Start</a></li><li class="footer__item"><a class="footer__link-item" href="/docs">Documentation</a></li></ul></div><div class="col footer__col"><div class="footer__title">Setup Guide</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/deployment">Deploying</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/configuring">Configuring</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/management">Management</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/troubleshooting">Troubleshooting</a></li></ul></div><div class="col footer__col"><div class="footer__title">Feature Docs Pt 1</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/authentication">Authentication</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/alternate-views">Alternate Views</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/backup-restore">Backup &amp; Restore</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/icons">Icons</a></li></ul></div><div class="col footer__col"><div class="footer__title">Feature Docs Pt 2</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/multi-language-support">Language Switching</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/status-indicators">Status Indicators</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/searching">Searching &amp; Shortcuts</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/theming">Theming</a></li></ul></div><div class="col footer__col"><div class="footer__title">Community</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/developing">Developing</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/development-guides">Development Guides</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/contributing">Contributing</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/showcase">Showcase</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/credits">Credits</a></li></ul></div><div class="col footer__col"><div class="footer__title">Misc</div><ul class="footer__items"><li class="footer__item"><a class="footer__link-item" href="/docs/privacy">Privacy &amp; Security</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/license">License</a></li><li class="footer__item"><a href="https://github.com/Lissy93/dashy/blob/master/.github/LEGAL.md" target="_blank" rel="noopener noreferrer" class="footer__link-item">Legal</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/code-of-conduct">Code of Conduct</a></li><li class="footer__item"><a class="footer__link-item" href="/docs/changelog">Changelog</a></li></ul></div></div><div class="footer__bottom text--center"><div class="footer__copyright"><a href="https://dashy.to">Dashy</a> - The Self-Hosted Dashboard for your Homelab<br>License under <a href="https://github.com/Lissy93/dashy/blob/master/LICENSE">MIT</a>. Copyright © 2024 <a href="https://aliciasykes.com">Alicia Sykes</a></div></div></div></footer></div>
<script src="/assets/js/runtime~main.ac7349e8.js"></script>
<script src="/assets/js/main.d13b237a.js"></script>
</body>
</html>