🔀 Merge pull request #168 from Lissy93/REFACTOR/deployment-files

[REFACTOR] - Reduce bundle size, update workflows, docs and app config
This commit is contained in:
Alicia Sykes 2021-08-19 22:10:17 +01:00 committed by GitHub
commit 522bbca427
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 652 additions and 574 deletions

9
.dockerignore Normal file
View File

@ -0,0 +1,9 @@
# Files specified here are not required for Docker
# so ignoring them helps to reduce the container size
# The Docker container MUST have the following files:
# package.json yarn.lock server.js vue.config.js src/ services/
node_modules
docs
.git
.github

5
.env
View File

@ -0,0 +1,5 @@
# Store environmental variables here. All variables are optional.
# PORT=4000 # The port to expose the running application on
# NODE_ENV=production # Can be either development, production or test
# BASE_URL=/ # The default base path for serving up static assets

View File

@ -1,5 +1,13 @@
# Changelog # Changelog
## ✨ 1.6.3 - Dependency and Build File Updates [PR #168](https://github.com/Lissy93/dashy/pull/168)
- Removes any dependencies which are not 100% essential
- Moves packages that are only used for building into devDependencies
- Updates dependencies to latest version
- Adds a .dockerignore, so that non-essential files are not included in the container
- Updates deployment config files for Netlify, Heroku and GH actions
- Made a brand new bug-report template, with input fields and validation!
## ✨ 1.6.2 - Support for Guest Access [PR #167](https://github.com/Lissy93/dashy/pull/167) ## ✨ 1.6.2 - Support for Guest Access [PR #167](https://github.com/Lissy93/dashy/pull/167)
- Adds functionality for optional read-only guest access to dashboards with authentication - Adds functionality for optional read-only guest access to dashboards with authentication
- Can be enabled by setting `appConfig.enableGuestAccess: true` - Can be enabled by setting `appConfig.enableGuestAccess: true`

View File

@ -1,22 +0,0 @@
---
name: "Bug Report \U0001F41B"
about: Submit a bug report for an issue you've come across
title: "[BUG]"
labels: "\U0001F41B Bug"
assignees: Lissy93
---
Thank you for taking the time to raise a bug, and sorry that you've had issues with Dashy 😟
**If applicable to your issue, please include:**
- A description of the bug, including actual behavior and if applicable, expected behavior
- Steps to reproduce
- Info about your system (device, OS, browser and browser version)
- Any console errors? If the issue happens at runtime, open up the dev tools [F12], and go to the Console tab. If the output is very long, please use [0bin](https://0bin.net/)
- Any screenshots, if it is a frontend issue
**Before submitting, please ensure that:**
- [ ] This issue has not already been raised
- [ ] You are using the latest version of Dashy
- [ ] You've included the relevant information above

60
.github/ISSUE_TEMPLATE/bug.yml vendored Normal file
View File

@ -0,0 +1,60 @@
name: Bug Report 🐛
description: Report something that's not working the way it's (probably) intended to
title: '[BUG] <title>'
labels: '\U0001F41B Bug'
body:
- type: dropdown
id: environment
attributes:
label: Environment
description: Where are you running Dashy?
options:
- Self-Hosted (Docker)
- Self-Hosted (Bare Metal)
- Cloud Service (Static)
validations:
required: true
- type: input
id: version
attributes:
label: Version
description: What version of Dashy are you running?
placeholder: 1.6.9 ← should look like this (check config menu)
validations:
required: false
- type: textarea
id: repro
attributes:
label: Describe the problem
description: Please describe exactly what is not working, include the steps to reproduce, actual result and expected result
validations:
required: true
- type: textarea
id: logs
attributes:
label: Additional info
description: Logs? Screenshots? Yes, please.
validations:
required: false
- type: checkboxes
id: idiot-check
attributes:
label: Please tick the boxes
description: Before submitting, please ensure that
options:
- label: You are using the latest, or recent version of Dashy
required: true
- label: You've checked that this [issue hasn't already been raised](https://github.com/Lissy93/dashy/issues?q=is%3Aissue)
required: true
- label: You've checked the [docs](https://github.com/Lissy93/dashy/tree/master/docs#readme) and [troubleshooting](https://github.com/Lissy93/dashy/blob/master/docs/troubleshooting.md#troubleshooting) guide
required: true
- label: You agree to the [code of conduct](https://github.com/Lissy93/dashy/blob/master/.github/CODE_OF_CONDUCT.md#contributor-covenant-code-of-conduct)
required: true
- type: markdown
attributes:
value: |-
## Thanks 🙏
Sorry you are having issues with Dashy, and thank you for raising this ticket - in doing so you are helping to make the app better for everyone 💪
You should expect a reply within the next 48 hours :)
validations:
required: false

36
.github/LEGAL.md vendored
View File

@ -14,7 +14,6 @@ The following 3rd-party software packages may be used by or distributed with **d
| **[highlight.js (11.1.0)](#highlight.js-11-1-0)** | **Multi-license:** BSD-2-Clause _OR_ BSD-3-Clause, BSD-3-Clause | | **[highlight.js (11.1.0)](#highlight.js-11-1-0)** | **Multi-license:** BSD-2-Clause _OR_ BSD-3-Clause, BSD-3-Clause |
| **[js-yaml (4.1.0)](#js-yaml-4-1-0)** | MIT | | **[js-yaml (4.1.0)](#js-yaml-4-1-0)** | MIT |
| **[npm-run-all (4.1.5)](#npm-run-all-4-1-5)** | MIT | | **[npm-run-all (4.1.5)](#npm-run-all-4-1-5)** | MIT |
| **[prismjs (1.24.1)](#prismjs-1-24-1)** | MIT |
| **[register-service-worker (1.7.2)](#register-service-worker-1-7-2)** | MIT | | **[register-service-worker (1.7.2)](#register-service-worker-1-7-2)** | MIT |
| **[remedial (1.0.8)](#remedial-1-0-8)** | **Multi-license:** Apache-2.0 _OR_ MIT | | **[remedial (1.0.8)](#remedial-1-0-8)** | **Multi-license:** Apache-2.0 _OR_ MIT |
| **[serve-static (1.14.1)](#serve-static-1-14-1)** | MIT | | **[serve-static (1.14.1)](#serve-static-1-14-1)** | MIT |
@ -392,41 +391,6 @@ The following 3rd-party software packages may be used by or distributed with **d
--- ---
#### **prismjs (1.24.1)**
- Declared License(s)
- MIT
- Attribution:
MIT LICENSE
Copyright (c) 2012 Lea Verou
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
- Discovered License(s)
---
---
#### **register-service-worker (1.7.2)** #### **register-service-worker (1.7.2)**
- Declared License(s) - Declared License(s)

View File

@ -21,7 +21,23 @@ jobs:
userNameHeight: 20 userNameHeight: 20
svgWidth: 830 svgWidth: 830
commitMessage: ':blue_heart: Updates contributor SVG' commitMessage: ':blue_heart: Updates contributor SVG'
# Job #2 - Update the Credits page # Job #2 - Fetches sponsors and inserts into readme and credits page
insert-sponsors:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2
- name: Generate Sponsors in Readme 💖
uses: JamesIves/github-sponsors-readme-action@1.0.5
with:
token: ${{ secrets.GITHUB_TOKEN }}
file: 'README.md'
- name: Generate Sponsors in Credits 💖
uses: JamesIves/github-sponsors-readme-action@1.0.5
with:
token: ${{ secrets.GITHUB_TOKEN }}
file: 'docs/credits.md'
# Job #3 - Update the Credits page
insert-credits: insert-credits:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: Inserts contributors into credits.md name: Inserts contributors into credits.md

View File

@ -1,23 +0,0 @@
# Generates a list of sponsors, and inserts it into specified files
# where the `<!-- sponsors --><!-- sponsors -->` tag is
name: Inserts Sponsors
on:
workflow_dispatch:
release:
types: [published]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v2
- name: Generate Sponsors in Readme 💖
uses: JamesIves/github-sponsors-readme-action@1.0.5
with:
token: ${{ secrets.GITHUB_TOKEN }}
file: 'README.md'
- name: Generate Sponsors in Credits 💖
uses: JamesIves/github-sponsors-readme-action@1.0.5
with:
token: ${{ secrets.GITHUB_TOKEN }}
file: 'docs/credits.md'

View File

@ -10,11 +10,11 @@ jobs:
steps: steps:
- uses: actions/checkout@master - uses: actions/checkout@master
- name: Sync Wiki - name: Sync Wiki
uses: cmbrose/github-docs-to-wiki@v0.24 uses: joeizzard/action-wiki-sync@master
with: with:
githubToken: ${{ secrets.GITHUB_TOKEN }} username: example
defaultBranch: master access_token: ${{ secrets.GITHUB_TOKEN }}
rootDocsFolder: ./docs wiki_folder: ./docs
convertRootReadmeToHomePage: true commit_username: 'liss-bot'
useHeaderForWikiName: true commit_email: 'liss-bot@d0h.co'
customCommitMessageFormat: ':gem: Chore: Sync Docs to GH Wiki' commit_message: '📕 Chore: Sync Wiki'

View File

@ -1 +1,4 @@
# Heroku config - Specifies the commands to execute when the app starts
# See docs for more info: https://devcenter.heroku.com/articles/procfile
web: node server.js web: node server.js

View File

@ -137,7 +137,7 @@ The image defaults to `:latest`, but you can instead specify a specific version,
You will need [git](https://git-scm.com/downloads), the latest or LTS version of [Node.js](https://nodejs.org/) and (optionally) [Yarn](https://yarnpkg.com/) installed on your system. You will need [git](https://git-scm.com/downloads), the latest or LTS version of [Node.js](https://nodejs.org/) and (optionally) [Yarn](https://yarnpkg.com/) installed on your system.
- Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy` - Get Code: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy`
- Configuration: Fill in you're settings in `./public/conf.yml` - Configuration: Fill in you're settings in `./public/conf.yml`
- Install dependencies: `yarn` - Install dependencies: `yarn`
- Build: `yarn build` - Build: `yarn build`
@ -489,7 +489,6 @@ Huge thanks to the sponsors helping to support Dashy's development!
Dashy was made possible thanks to the following packages and components. For more details on each, see [Dependency Credits](./docs/credits.md#dependencies-). Full credit to their respective authors. Dashy was made possible thanks to the following packages and components. For more details on each, see [Dependency Credits](./docs/credits.md#dependencies-). Full credit to their respective authors.
- Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv) - Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv)
- Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93 - Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93
[`prism.js`](https://github.com/PrismJS/prism)
- Core: Vue.js, TypeScript, SCSS, Node.js, ESLint - Core: Vue.js, TypeScript, SCSS, Node.js, ESLint
- The backup & sync server uses [Cloudflare workers](https://workers.cloudflare.com/) plus [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - The backup & sync server uses [Cloudflare workers](https://workers.cloudflare.com/) plus [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto)
- Services: The 1-Click demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). - Services: The 1-Click demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/).
@ -505,7 +504,7 @@ Dashy was made possible thanks to the following packages and components. For mor
Before getting started, you'll need [Git](https://git-scm.com/downloads), [Node](https://nodejs.org/en/download/) and optionally [Yarn](https://yarnpkg.com/) (run `npm i -g yarn`) installed. Before getting started, you'll need [Git](https://git-scm.com/downloads), [Node](https://nodejs.org/en/download/) and optionally [Yarn](https://yarnpkg.com/) (run `npm i -g yarn`) installed.
To set up the development environment: To set up the development environment:
1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy` 1. Get Code: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy`
2. Install dependencies: `yarn` 2. Install dependencies: `yarn`
3. Start dev server: `yarn dev` 3. Start dev server: `yarn dev`

View File

@ -22,7 +22,7 @@
<!-- readme: sponsors -end --> <!-- readme: sponsors -end -->
## Contributors ## Contributors
<!-- readme: contributors -start --> <!-- readme: contributors, BeginCI/-, deepsourcebot/- -start -->
<table> <table>
<tr> <tr>
<td align="center"> <td align="center">
@ -90,7 +90,8 @@
</a> </a>
</td></tr> </td></tr>
</table> </table>
<!-- readme: contributors -end --> <!-- readme: contributors, BeginCI/-, deepsourcebot/- -end -->
## Helpful Users ## Helpful Users
<!-- readme: EVOTk,shadowking001,turnrye,Robert-Ernst,Niklashere,evroon,MilesTEG1 -start --> <!-- readme: EVOTk,shadowking001,turnrye,Robert-Ernst,Niklashere,evroon,MilesTEG1 -start -->
@ -190,8 +191,6 @@ At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as we
- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` - [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT`
- Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License`
- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` - [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT`
- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT`
- Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT`
- [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` - [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT`
##### Backup & Sync Server ##### Backup & Sync Server

View File

@ -3,14 +3,14 @@
Welcome to Dashy, so glad you're here :) Deployment is super easy, and there are several methods available depending on what type of system you're using. If you're self-hosting, then deploying with Docker (or similar container engine) is the recommended approach. Welcome to Dashy, so glad you're here :) Deployment is super easy, and there are several methods available depending on what type of system you're using. If you're self-hosting, then deploying with Docker (or similar container engine) is the recommended approach.
#### Quick Start #### Quick Start
If you want to skip the fuss, and [get straight down to it](./docs/quick-start.md), then you can spin up a new instance of Dashy by running: If you want to skip the fuss, and [get straight down to it](/docs/quick-start.md), then you can spin up a new instance of Dashy by running:
``` ```
docker run -p 8080:80 lissy93/dashy docker run -p 8080:80 lissy93/dashy
``` ```
See [Management Docs](./docs/management.md) for info about securing, monitoring, updating, health checks, auto starting, web server configuration, etc See [Management Docs](/docs/management.md) for info about securing, monitoring, updating, health checks, auto starting, web server configuration, etc
Once you've got Dashy up and running, you'll want to configure it with your own content, for this you can reference the [configuring docs](./docs/configuring.md). Once you've got Dashy up and running, you'll want to configure it with your own content, for this you can reference the [configuring docs](/docs/configuring.md).
## Deployment Methods ## Deployment Methods
@ -110,7 +110,7 @@ If you are building from source, and would like to use one of the [other Dockerf
If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed, and optionally [yarn](https://yarnpkg.com/) If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed, and optionally [yarn](https://yarnpkg.com/)
1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy` 1. Get Code: `git clone https://github.com/Lissy93/dashy.git` and `cd dashy`
2. Configuration: Fill in you're settings in `./public/conf.yml` 2. Configuration: Fill in you're settings in `./public/conf.yml`
3. Install dependencies: `yarn` 3. Install dependencies: `yarn`
4. Build: `yarn build` 4. Build: `yarn build`

View File

@ -18,7 +18,7 @@ You will need either the latest or LTS version of **[Node.js](https://nodejs.org
### Running the Project ### Running the Project
1. Get Code: `git clone git@github.com:Lissy93/dashy.git` 1. Get Code: `git clone https://github.com/Lissy93/dashy.git`
2. Navigate into the directory: `cd dashy` 2. Navigate into the directory: `cd dashy`
3. Install dependencies: `yarn` 3. Install dependencies: `yarn`
4. Start dev server: `yarn dev` 4. Start dev server: `yarn dev`
@ -231,7 +231,7 @@ Styleguides:
│ │ ├── Nav.vue # Navigation bar, includes a list of links │ │ ├── Nav.vue # Navigation bar, includes a list of links
│ │ ╰── PageTitle.vue # Page title and sub-title, visible within the Header │ │ ╰── PageTitle.vue # Page title and sub-title, visible within the Header
│ ╰── Settings # Components relating to the quick-settings, in the top-right │ ╰── Settings # Components relating to the quick-settings, in the top-right
│ ├── AppButtons.vue # Logout button and other app info │ ├── AuthButtons.vue # Logout button and other app info
│ ├── ConfigLauncher.vue # Icon that when clicked will launch the Configuration component │ ├── ConfigLauncher.vue # Icon that when clicked will launch the Configuration component
│ ├── CustomThemeMaker.vue # Color pickers for letting user build their own theme │ ├── CustomThemeMaker.vue # Color pickers for letting user build their own theme
│ ├── ItemSizeSelector.vue # Set of buttons used to set and save item size │ ├── ItemSizeSelector.vue # Set of buttons used to set and save item size

View File

@ -104,3 +104,25 @@ For more info, check out the [Documentation](https://github.com/Lissy93/dashy/tr
Enjoy your dashboard :) Enjoy your dashboard :)
--- ---
## Alternative Deployment Method 1 - From Source
You can also easily run the app on your system without Docker. For this [Git](https://git-scm.com/downloads), [Node.js](https://nodejs.org/), and [Yarn](https://yarnpkg.com/) are required.
```
git clone https://github.com/Lissy93/dashy.git && cd dashy
yarn # Install dependencies
yarn build # Build the app
yarn start # Start the app
```
Then edit `./public/conf.yml` and rebuild the app with `yarn build`
---
## Alternative Deployment Method 2 - Netlify
Don't have a server? No problem! You can run Dashy for free on Netlify (as well as many [other cloud providers](./docs/deployment.md#deploy-to-cloud-service)). All you need it a GitHub account.
1. Fork Dashy's repository on GitHub
2. [Log in](app.netlify.com/login/) to Netlify with GitHub
3. Click "New site from Git" and select your forked repo, then click **Deploy**!
4. You can then edit the config in `./public/conf.yml` in your repo, and Netlify will rebuild the app

View File

@ -1,24 +1,6 @@
# Troubleshooting # Troubleshooting
This document contains common problems and their solutions. This document contains common problems and their solutions.
## Yarn Error
For more info, see [Issue #1](https://github.com/Lissy93/dashy/issues/1)
First of all, check that you've got yarn installed correctly - see the [yarn installation docs](https://classic.yarnpkg.com/en/docs/install) for more info.
If you're getting an error about scenarios, then you've likely installed the wrong yarn... (you're [not](https://github.com/yarnpkg/yarn/issues/2821) the only one!). You can fix it by uninstalling, adding the correct repo, and reinstalling, for example, in Debian:
- `sudo apt remove yarn`
- `curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -`
- `echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list`
- `sudo apt update && sudo apt install yarn`
Alternatively, as a workaround, you have several options:
- Try using [NPM](https://www.npmjs.com/get-npm) instead: So clone, cd, then run `npm install`, `npm run build` and `npm start`
- Try using [Docker](https://www.docker.com/get-started) instead, and all of the system setup and dependencies will already be taken care of. So from within the directory, just run `docker build -t lissy93/dashy .` to build, and then use docker start to run the project, e.g: `docker run -it -p 8080:80 lissy93/dashy` (see the [deploying docs](https://github.com/Lissy93/dashy/blob/master/docs/deployment.md#deploy-with-docker) for more info)
---
## `Refused to Connect` in Modal or Workspace View ## `Refused to Connect` in Modal or Workspace View
This is not an issue with Dashy, but instead caused by the target app preventing direct access through embedded elements. It can be fixed by setting the [`X-Frame-Options`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) HTTP header set to `ALLOW [path to Dashy]` or `SAMEORIGIN`, as defined in [RFC-7034](https://datatracker.ietf.org/doc/html/rfc7034). These settings are usually set in the config file for the web server that's hosting the target application, here are some examples of how to enable cross-origin access with common web servers: This is not an issue with Dashy, but instead caused by the target app preventing direct access through embedded elements. It can be fixed by setting the [`X-Frame-Options`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) HTTP header set to `ALLOW [path to Dashy]` or `SAMEORIGIN`, as defined in [RFC-7034](https://datatracker.ietf.org/doc/html/rfc7034). These settings are usually set in the config file for the web server that's hosting the target application, here are some examples of how to enable cross-origin access with common web servers:
@ -50,3 +32,64 @@ In Apache, you can use the [`mod_headers`](https://httpd.apache.org/docs/current
``` ```
Header set X-Frame-Options: "ALLOW-FROM http://[dashy-location]/" Header set X-Frame-Options: "ALLOW-FROM http://[dashy-location]/"
``` ```
---
## Yarn Error
For more info, see [Issue #1](https://github.com/Lissy93/dashy/issues/1)
First of all, check that you've got yarn installed correctly - see the [yarn installation docs](https://classic.yarnpkg.com/en/docs/install) for more info.
If you're getting an error about scenarios, then you've likely installed the wrong yarn... (you're [not](https://github.com/yarnpkg/yarn/issues/2821) the only one!). You can fix it by uninstalling, adding the correct repo, and reinstalling, for example, in Debian:
- `sudo apt remove yarn`
- `curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -`
- `echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list`
- `sudo apt update && sudo apt install yarn`
Alternatively, as a workaround, you have several options:
- Try using [NPM](https://www.npmjs.com/get-npm) instead: So clone, cd, then run `npm install`, `npm run build` and `npm start`
- Try using [Docker](https://www.docker.com/get-started) instead, and all of the system setup and dependencies will already be taken care of. So from within the directory, just run `docker build -t lissy93/dashy .` to build, and then use docker start to run the project, e.g: `docker run -it -p 8080:80 lissy93/dashy` (see the [deploying docs](https://github.com/Lissy93/dashy/blob/master/docs/deployment.md#deploy-with-docker) for more info)
---
## DockerHub `toomanyrequests`
This situation relates to error messages similar to one of the following, returned when pulling, updating or running the Docker container from Docker Hub.
```
Continuing execution. Pulling image lissy93/dashy:release-1.6.0
error pulling image configuration: toomanyrequests
```
or
```
You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: https://www.docker.com/increase-rate-limit
```
When DockerHub returns one of these errors, or a `429` status, that means you've hit your rate limit. This was [introduced](https://www.docker.com/blog/scaling-docker-to-serve-millions-more-developers-network-egress/) last year, and prevents unauthenticated or free users from running docker pull more than 100 times per 6 hours.
You can [check your rate limit status](https://www.docker.com/blog/checking-your-current-docker-pull-rate-limits-and-status/) by looking for the `ratelimit-remaining` header in any DockerHub responses.
#### Solution 1 - Use an alternate container registry
- Dashy is also availible through GHCR, which at present does not have any hard limits. Just use `docker pull ghcr.io/lissy93/dashy:latest` to fetch the image
- You can also build the image from source, by cloning the repo, and running `docker build -t dashy .` or use the pre-made docker compose
#### Solution 2 - Increase your rate limits
- Logging in to DockerHub will increase your rate limit from 100 requests to 200 requests per 6 hour period
- 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
- Since rate limits are counted based on your IP address, proxying your requests, or using a VPN may work
---
## Config Validation Errors
The configuration file is validated against [Dashy's Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json) using AJV.
First, check that your syntax is valid, using [YAML Validator](https://codebeautify.org/yaml-validator/) or [JSON Validator](https://codebeautify.org/jsonvalidator). If the issue persists, then take a look at the [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json), and verify that the field you are trying to add/ modify matches the required format. You can also use [this tool](https://www.jsonschemavalidator.net/s/JFUj7X9J) to validate your JSON config against the schema, or run `yarn validate-config`.
If you're trying to use a recently released feature, and are getting a warning, this is likely because you've not yet updated the the current latest version of Dashy.
If the issue still persists, you should raise an issue.
---
## Warnings in the Console during deploy
Please acknowledge the difference between errors and warnings before raising an issue about messages in the console. It'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't have any impact on the running application, so please don't raise issues about these unless it directly relates to a bug or issue you're experiencing. Errors on the other hand should not appear in the console, and they are worth looking into further.

View File

@ -1,10 +1,23 @@
# Enables you to easily deploy a fork of Dashy to Netlify
# without the need to configure anything in admin UI
# Docs: https://www.netlify.com/docs/netlify-toml-reference/
# Essential site config
[build] [build]
base = "/"
command = "yarn build" command = "yarn build"
publish = "dist" publish = "dist"
# Site info, used for the 1-Click deploy page
[template.environment] [template.environment]
STATUSKIT_PAGE_TITLE = "Dashy" STATUSKIT_PAGE_TITLE = "Dashy"
STATUSKIT_COMPANY_LOGO = "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png" STATUSKIT_COMPANY_LOGO = "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png"
STATUSKIT_SUPPORT_CONTACT_LINK = "https://dashy.as93.net" STATUSKIT_SUPPORT_CONTACT_LINK = "https://dashy.to"
STATUSKIT_RESOURCES_LINK = "https://github.com/Lissy93/dashy/tree/master/docs" STATUSKIT_RESOURCES_LINK = "https://github.com/Lissy93/dashy/tree/master/docs"
# Set any security headers here
[[headers]]
for = "/*"
[headers.values]
# Uncomment to enable Netlify user control. You must have a paid plan.
# Basic-Auth = "someuser:somepassword anotheruser:anotherpassword"

View File

@ -1,6 +1,6 @@
{ {
"name": "Dashy", "name": "Dashy",
"version": "1.6.2", "version": "1.6.3",
"license": "MIT", "license": "MIT",
"main": "server", "main": "server",
"scripts": { "scripts": {
@ -12,7 +12,8 @@
"build-watch": "vue-cli-service build --watch --mode production", "build-watch": "vue-cli-service build --watch --mode production",
"build-and-start": "npm-run-all --parallel build-watch start", "build-and-start": "npm-run-all --parallel build-watch start",
"validate-config": "node services/config-validator", "validate-config": "node services/config-validator",
"health-check": "node services/healthcheck" "health-check": "node services/healthcheck",
"dependency-audit": "npx improved-yarn-audit --ignore-dev-deps"
}, },
"dependencies": { "dependencies": {
"@sentry/tracing": "^6.10.0", "@sentry/tracing": "^6.10.0",
@ -23,19 +24,15 @@
"connect": "^3.7.0", "connect": "^3.7.0",
"crypto-js": "^4.1.1", "crypto-js": "^4.1.1",
"js-yaml": "^4.1.0", "js-yaml": "^4.1.0",
"npm-run-all": "^4.1.5",
"prismjs": "^1.24.1",
"register-service-worker": "^1.6.2", "register-service-worker": "^1.6.2",
"remedial": "^1.0.8", "remedial": "^1.0.8",
"serve-static": "^1.14.1", "serve-static": "^1.14.1",
"v-jsoneditor": "^1.4.2", "v-jsoneditor": "^1.4.2",
"v-tooltip": "^2.1.3", "v-tooltip": "^2.1.3",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-cli-plugin-yaml": "^1.0.2",
"vue-i18n": "^8.25.0", "vue-i18n": "^8.25.0",
"vue-js-modal": "^2.0.0-rc.6", "vue-js-modal": "^2.0.0-rc.6",
"vue-material-tabs": "0.1.5", "vue-material-tabs": "0.1.5",
"vue-prism-editor": "^1.2.2",
"vue-router": "^3.0.3", "vue-router": "^3.0.3",
"vue-select": "^3.12.1", "vue-select": "^3.12.1",
"vue-swatches": "^2.1.1", "vue-swatches": "^2.1.1",
@ -52,12 +49,13 @@
"eslint": "^7.24.0", "eslint": "^7.24.0",
"eslint-config-airbnb": "^18.0.1", "eslint-config-airbnb": "^18.0.1",
"eslint-plugin-vue": "^7.9.0", "eslint-plugin-vue": "^7.9.0",
"npm-run-all": "^4.1.5",
"progress-bar-webpack-plugin": "^2.1.0", "progress-bar-webpack-plugin": "^2.1.0",
"sass": "^1.18.0", "sass": "^1.38.0",
"sass-loader": "^7.1.0", "sass-loader": "^7.1.0",
"vue-cli-plugin-yaml": "^1.0.2",
"vue-svg-loader": "^0.16.0", "vue-svg-loader": "^0.16.0",
"vue-template-compiler": "^2.6.10", "vue-template-compiler": "^2.6.10"
"webpack-build-notifier": "^2.3.0"
}, },
"gitHooks": { "gitHooks": {
"pre-commit": "yarn lint" "pre-commit": "yarn lint"

View File

@ -7,8 +7,10 @@
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0"> <meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" type="image/png" sizes="64x64" href="/web-icons/favicon-64x64.png"> <link rel="icon" type="image/png" sizes="64x64" href="<%= BASE_URL %>/web-icons/favicon-64x64.png">
<link rel="icon" type="image/png" sizes="32x32" href="/web-icons/favicon-32x32.png"> <link rel="icon" type="image/png" sizes="32x32" href="web-icons/favicon-32x32.png">
<link rel="icon" href="/favicon.ico" />
<link rel="icon" type="image/png" href="<%= BASE_URL %>favicon.ico" />
<title>Dashy</title> <title>Dashy</title>
</head> </head>

View File

@ -1,6 +1,6 @@
<template> <template>
<div class="css-editor-outer"> <div class="css-editor-outer">
<prism-editor class="my-editor" v-model="customCss" :highlight="highlighter" line-numbers /> <textarea class="css-editor" v-model="customCss" />
<button class="save-button" @click="save()">{{ $t('config.css-save-btn') }}</button> <button class="save-button" @click="save()">{{ $t('config.css-save-btn') }}</button>
<p class="quick-note"> <p class="quick-note">
<b>{{ $t('config.css-note-label') }}:</b> <b>{{ $t('config.css-note-label') }}:</b>
@ -12,28 +12,21 @@
<script> <script>
import { PrismEditor } from 'vue-prism-editor';
import { highlight, languages } from 'prismjs/components/prism-core';
import 'prismjs/components/prism-css';
import 'prismjs/themes/prism-funky.css';
import 'vue-prism-editor/dist/prismeditor.min.css';
import CustomThemeMaker from '@/components/Settings/CustomThemeMaker'; import CustomThemeMaker from '@/components/Settings/CustomThemeMaker';
import { getTheme } from '@/utils/ConfigHelpers'; import { getTheme } from '@/utils/ConfigHelpers';
import { localStorageKeys } from '@/utils/defaults'; import { localStorageKeys } from '@/utils/defaults';
export default { export default {
name: 'JsonEditor', name: 'StyleEditor',
props: { props: {
config: Object, config: Object,
}, },
components: { components: {
CustomThemeMaker, CustomThemeMaker,
PrismEditor,
}, },
data() { data() {
return { return {
customCss: this.config.appConfig.customCss || '\n\n\n\n\n', customCss: this.config.appConfig.customCss || '\n\n',
currentTheme: getTheme(), currentTheme: getTheme(),
}; };
}, },
@ -61,9 +54,6 @@ export default {
style.textContent = cleanedCss; style.textContent = cleanedCss;
document.head.append(style); document.head.append(style);
}, },
highlighter(code) {
return highlight(code, languages.css);
},
}, },
}; };
</script> </script>
@ -91,13 +81,22 @@ button.save-button {
} }
} }
.prism-editor-wrapper { .css-editor {
min-height: 200px; margin: 1rem auto;
border: 1px solid var(--transparent-70); padding: 0.5rem;
width: 80%;
height: 8rem;
max-height: 16rem;
min-height: 4rem;
resize: vertical;
outline: none;
border: 1px solid var(--config-settings-color);
border-radius: var(--curve-factor); border-radius: var(--curve-factor);
width: 90%;
margin: 0.5rem auto;
background: var(--transparent-50); background: var(--transparent-50);
color: var(--config-settings-color);
&:focus {
box-shadow: 0 40px 70px -2px rgba(0, 0, 0, 0.6), 1px 1px 6px var(--config-settings-color);
}
} }
p.quick-note { p.quick-note {

View File

@ -1,11 +1,16 @@
/**
* Global config for the main Vue app. ES7 not supported here.
* See docs for all config options: https://cli.vuejs.org/config
*/
const ProgressBarPlugin = require('progress-bar-webpack-plugin'); const ProgressBarPlugin = require('progress-bar-webpack-plugin');
const WebpackBuildNotifierPlugin = require('webpack-build-notifier');
// Get current version // Get current version
process.env.VUE_APP_VERSION = require('./package.json').version; process.env.VUE_APP_VERSION = require('./package.json');
// Specify and export the main Vue app config
module.exports = { module.exports = {
publicPath: process.env.BASE_URL, // || './', publicPath: process.env.BASE_URL,
integrity: true,
chainWebpack: config => { chainWebpack: config => {
config.module.rules.delete('svg'); config.module.rules.delete('svg');
}, },
@ -17,15 +22,11 @@ module.exports = {
], ],
}, },
plugins: [ plugins: [
// Display progress bar while building
new ProgressBarPlugin(), new ProgressBarPlugin(),
new WebpackBuildNotifierPlugin({
title: 'Dashy Build Complete',
logo: './public/web-icons/dashy-logo.png',
suppressSuccess: true,
showDuration: true,
}),
], ],
}, },
// Specify resources for PWA / mobile support
pwa: { pwa: {
name: 'Dashy', name: 'Dashy',
manifestPath: './manifest.json', manifestPath: './manifest.json',
@ -40,6 +41,7 @@ module.exports = {
msTileImage: './web-icons/dashy-logo.png', msTileImage: './web-icons/dashy-logo.png',
}, },
}, },
// Specify page for app entry point
pages: { pages: {
dashy: { dashy: {
entry: 'src/main.js', entry: 'src/main.js',

809
yarn.lock

File diff suppressed because it is too large Load Diff