mirror of
https://github.com/hassio-addons/addon-glances.git
synced 2025-05-03 18:41:22 +00:00
🎉 Initial add-on code
This commit is contained in:
parent
4cfe2662c9
commit
37c3202a84
46 changed files with 1887 additions and 0 deletions
19
.editorconfig
Executable file
19
.editorconfig
Executable file
|
@ -0,0 +1,19 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = lf
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
ident_size = 4
|
||||
|
||||
[*.md]
|
||||
ident_size = 2
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[*.json]
|
||||
ident_size = 2
|
||||
|
||||
[{.gitignore,.gitkeep,.editorconfig}]
|
||||
ident_size = 2
|
4
.github/CODEOWNERS
vendored
Normal file
4
.github/CODEOWNERS
vendored
Normal file
|
@ -0,0 +1,4 @@
|
|||
# Require maintainer's :+1: for changes to the .github/ repo-config files
|
||||
# mainly due to https://github.com/probot/settings privilege escalation
|
||||
.github/* @frenck
|
||||
.gitlab-ci.yml @frenck
|
20
.github/ISSUE_TEMPLATE.md
vendored
Executable file
20
.github/ISSUE_TEMPLATE.md
vendored
Executable file
|
@ -0,0 +1,20 @@
|
|||
# Problem/Motivation
|
||||
|
||||
> (Why the issue was filed)
|
||||
|
||||
## Expected behavior
|
||||
|
||||
> (What you expected to happen)
|
||||
|
||||
## Actual behavior
|
||||
|
||||
> (What actually happened)
|
||||
|
||||
## Steps to reproduce
|
||||
|
||||
> (How can someone else make/see it happen)
|
||||
|
||||
## Proposed changes
|
||||
|
||||
> (If you have a proposed change, workaround or fix,
|
||||
> describe the rationale behind it)
|
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Executable file
9
.github/PULL_REQUEST_TEMPLATE.md
vendored
Executable file
|
@ -0,0 +1,9 @@
|
|||
# Proposed Changes
|
||||
|
||||
> (Describe the changes and rationale behind them)
|
||||
|
||||
## Related Issues
|
||||
|
||||
> ([Github link][autolink-references] to related issues or pull requests)
|
||||
|
||||
[autolink-references]: https://help.github.com/articles/autolinked-references-and-urls/
|
2
.github/autolabeler.yml
vendored
Normal file
2
.github/autolabeler.yml
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
---
|
||||
"Type: Documentation": ["*.md", "*.j2"]
|
50
.github/config.yml
vendored
Normal file
50
.github/config.yml
vendored
Normal file
|
@ -0,0 +1,50 @@
|
|||
---
|
||||
# Configuration for request-info - https://github.com/behaviorbot/request-info
|
||||
|
||||
# *OPTIONAL* Comment to reply with
|
||||
# Can be either a string :
|
||||
requestInfoReplyComment:
|
||||
- "We would appreciate it if you could provide us with more info about this issue/pr!"
|
||||
- "Hmmm... That issue/PR is kinda low on text. Could you please provide some more content?"
|
||||
|
||||
# *OPTIONAL* default titles to check against for lack of descriptiveness
|
||||
# MUST BE ALL LOWERCASE
|
||||
requestInfoDefaultTitles: []
|
||||
|
||||
# *OPTIONAL* Label to be added to Issues and Pull Requests with insufficient information given
|
||||
requestInfoLabelToAdd: "Incomplete"
|
||||
|
||||
# *OPTIONAL* Require Pull Requests to contain more information than what is provided in the PR template
|
||||
# Will fail if the pull request's body is equal to the provided template
|
||||
checkPullRequestTemplate: true
|
||||
|
||||
# *OPTIONAL* Only warn about insufficient information on these events type
|
||||
# Keys must be lowercase. Valid values are 'issue' and 'pullRequest'
|
||||
requestInfoOn:
|
||||
pullRequest: true
|
||||
issue: true
|
||||
|
||||
# *OPTIONAL* Add a list of people whose Issues/PRs will not be commented on
|
||||
# keys must be GitHub usernames
|
||||
requestInfoUserstoExclude: []
|
||||
|
||||
# Configuration for new-issue-welcome - https://github.com/behaviorbot/new-issue-welcome
|
||||
|
||||
# Comment to be posted to on first time issues
|
||||
newIssueWelcomeComment: >
|
||||
:wave: Thanks for opening your first issue here!
|
||||
If you're reporting a :bug: bug, please make sure you include steps to reproduce it.
|
||||
Also, logs, error messages and information about your hardware might be usefull.
|
||||
|
||||
# Configuration for new-pr-welcome - https://github.com/behaviorbot/new-pr-welcome
|
||||
|
||||
# Comment to be posted to on PRs from first time contributors in your repository
|
||||
newPRWelcomeComment: >
|
||||
:sparkling_heart: Thanks for opening this pull request! :sparkling_heart:
|
||||
If your PR gets accepted and merged in, we will invite you to the project :tada:
|
||||
|
||||
# Configuration for first-pr-merge - https://github.com/behaviorbot/first-pr-merge
|
||||
|
||||
# Comment to be posted to on pull requests merged by a first time user
|
||||
firstPRMergeComment: >
|
||||
Congrats on merging your first pull request! :tada::tada::tada:
|
10
.github/invite-contributors.yml
vendored
Normal file
10
.github/invite-contributors.yml
vendored
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
# If true, this will add new contributors as outside collaborators
|
||||
# to the repo their PR was merged in. Team name is ignored if this
|
||||
# flag is set to true.
|
||||
isOutside: false
|
||||
|
||||
# Specify team name to add new contributors to a specific team
|
||||
# within your organization.
|
||||
# Use team name or team-name-slug
|
||||
team: Contributors
|
20
.github/lock.yml
vendored
Normal file
20
.github/lock.yml
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
# Configuration for lock-threads - https://github.com/dessant/lock-threads
|
||||
# Number of days of inactivity before a closed issue or pull request is locked
|
||||
daysUntilLock: 30
|
||||
|
||||
# Comment to post before locking. Set to `false` to disable
|
||||
lockComment: >
|
||||
This thread has been automatically locked because it has not had recent
|
||||
activity. Please open a new issue for related bugs and link to relevant
|
||||
comments in this thread.
|
||||
|
||||
# Issues or pull requests with these labels will not be locked
|
||||
# exemptLabels:
|
||||
# - no-locking
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
# only: issues
|
||||
|
||||
# Add a label when locking. Set to `false` to disable
|
||||
lockLabel: false
|
20
.github/move.yml
vendored
Normal file
20
.github/move.yml
vendored
Normal file
|
@ -0,0 +1,20 @@
|
|||
---
|
||||
# Delete the command comment when it contains no other content
|
||||
deleteCommand: true
|
||||
|
||||
# Close the source issue after moving
|
||||
closeSourceIssue: true
|
||||
|
||||
# Lock the source issue after moving
|
||||
lockSourceIssue: true
|
||||
|
||||
# Mention issue and comment authors
|
||||
mentionAuthors: true
|
||||
|
||||
# Preserve mentions in the issue content
|
||||
keepContentMentions: false
|
||||
|
||||
# Set custom aliases for targets
|
||||
# aliases:
|
||||
# r: repo
|
||||
# or: owner/repo
|
13
.github/no-response.yml
vendored
Normal file
13
.github/no-response.yml
vendored
Normal file
|
@ -0,0 +1,13 @@
|
|||
---
|
||||
# Configuration for probot-no-response - https://github.com/probot/no-response
|
||||
# Number of days of inactivity before an Issue is closed for lack of response
|
||||
daysUntilClose: 14
|
||||
# Label requiring a response
|
||||
responseRequiredLabel: "Status: Awaiting response"
|
||||
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
|
||||
closeComment: >
|
||||
This issue has been automatically closed because there has been no response
|
||||
to our request for more information from the original author. With only the
|
||||
information that is currently in the issue, we don't have enough information
|
||||
to take action. Please reach out if you have or find the answers we need so
|
||||
that we can investigate further.
|
14
.github/potential-duplicates.yml
vendored
Normal file
14
.github/potential-duplicates.yml
vendored
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
# Label name and color to set, when potential duplicates are detected
|
||||
issueLabel: "Potential duplicate"
|
||||
labelColor: e6e6e6
|
||||
|
||||
# If similarity is higher than this threshold, issue will be marked as duplicate
|
||||
threshold: 0.70
|
||||
|
||||
# Comment to post when potential duplicates are detected
|
||||
referenceComment: >
|
||||
Potential duplicates found:
|
||||
{{#issues}}
|
||||
- [#{{ number }}] {{ title }} ({{ accuracy }}%)
|
||||
{{/issues}}
|
150
.github/settings.yml
vendored
Normal file
150
.github/settings.yml
vendored
Normal file
|
@ -0,0 +1,150 @@
|
|||
---
|
||||
repository:
|
||||
description: "Glances - Community Hass.io Add-on for Home Assistant"
|
||||
homepage: https://addons.community
|
||||
topics: glances, monitoring, system, hassio-addons, hassio, hass, home-assistant, homeassistant
|
||||
private: false
|
||||
has_issues: true
|
||||
has_projects: false
|
||||
has_wiki: false
|
||||
has_downloads: false
|
||||
default_branch: master
|
||||
allow_squash_merge: true
|
||||
allow_merge_commit: false
|
||||
allow_rebase_merge: true
|
||||
labels:
|
||||
# Priority labels
|
||||
- name: "Priority: Critical"
|
||||
color: ee0701
|
||||
description: "This should be dealt with ASAP. Not fixing this issue would be a serious error."
|
||||
- name: "Priority: High"
|
||||
color: b60205
|
||||
description: "After critical issues are fixed, these should be dealt with before any further issues."
|
||||
- name: "Priority: Medium"
|
||||
color: 0e8a16
|
||||
description: "This issue may be useful, and needs some attention."
|
||||
- name: "Priority: Low"
|
||||
color: e4ea8a
|
||||
description: "Nice addition, maybe... someday..."
|
||||
|
||||
# Type labels
|
||||
- name: "Type: Bug"
|
||||
color: ee0701
|
||||
description: "Inconsistencies or issues which will cause a problem for users or implementors."
|
||||
- name: "Type: Documentation"
|
||||
color: 0052cc
|
||||
description: "Solely about the documentation of the project."
|
||||
- name: "Type: Enhancement"
|
||||
color: 1d76db
|
||||
description: "Enhancement of the code, not introducing new features."
|
||||
- name: "Type: Feature"
|
||||
color: 0e8a16
|
||||
description: "New features or options."
|
||||
- name: "Type: Support"
|
||||
color: 5319e7
|
||||
description: "Marks an issue as an support ticket."
|
||||
- name: "Type: Discussion"
|
||||
color: d4c5f9
|
||||
description: "Marks an issue as an generic discussion ticket."
|
||||
- name: "Type: Maintaince"
|
||||
color: 2af79e
|
||||
description: "Generic maintaince tasks, e.g., package updates."
|
||||
|
||||
# Additional markers
|
||||
- name: "Security"
|
||||
color: ee0701
|
||||
description: "Marks an security issues that needs to be resolved asap."
|
||||
- name: "Idea"
|
||||
color: fef2c0
|
||||
description: "Marks an idea, which might be excepted and implemented."
|
||||
- name: "Incomplete"
|
||||
color: fef2c0
|
||||
description: "Marks an PR or issue that is missing information."
|
||||
- name: "Pull request"
|
||||
color: fbca04
|
||||
description: "There is an PR opened for this issue."
|
||||
- name: "Accepted"
|
||||
color: c2e0c6
|
||||
description: "This issue or PR has been accepted."
|
||||
- name: "Declined"
|
||||
color: f9d0c4
|
||||
description: "This issue or PR has been declined."
|
||||
- name: "Potential duplicate"
|
||||
color: e6e6e6
|
||||
description: "This issue has been automatically marked as a potential duplicate."
|
||||
|
||||
# Ongoing Status labels
|
||||
- name: "Status: Triage"
|
||||
color: fbca04
|
||||
description: "This issue needs to be triaged."
|
||||
- name: "Status: On hold"
|
||||
color: cccccc
|
||||
description: "Issue or PR that has been placed on hold for now."
|
||||
- name: "Status: In progress"
|
||||
color: fbca04
|
||||
description: "Issue is currently being resolved by a developer."
|
||||
- name: "Status: Stale"
|
||||
color: fef2c0
|
||||
description: "There has not been activity on this issue or PR for quite some time."
|
||||
- name: "Status: Awaiting response"
|
||||
color: fef2c0
|
||||
description: "Issue or PR awaits response from the creator."
|
||||
- name: "Status: Blocked"
|
||||
color: fef2c0
|
||||
description: "Progress on this issue is currently not possible."
|
||||
|
||||
# Closing status labels
|
||||
- name: "Closed: Known limitation"
|
||||
color: e6e6e6
|
||||
description: "Issue is closed, it is a known limitation."
|
||||
- name: "Closed: Expected behavior"
|
||||
color: e6e6e6
|
||||
description: "Issues is closed, it is expected behavior."
|
||||
- name: "Closed: Duplicate"
|
||||
color: e6e6e6
|
||||
description: "Issue is closed, duplicate of an existing issue."
|
||||
- name: "Closed: Invalid"
|
||||
color: e6e6e6
|
||||
description: "Issue is closed, marked as not a valid issue (e.g., an user error)."
|
||||
- name: "Closed: Wrong repository"
|
||||
color: e6e6e6
|
||||
description: "Issue is closed, was created in the wrong repository."
|
||||
- name: "Closed: Won't Fix"
|
||||
color: e6e6e6
|
||||
description: "Issue is closed, it won't be fixed."
|
||||
- name: "Closed: Done"
|
||||
color: c2e0c6
|
||||
description: "Issue closed, work on this issue has been marked complete."
|
||||
|
||||
# Others
|
||||
- name: "Beginner Friendly"
|
||||
color: 0e8a16
|
||||
description: "Good first issue for people wanting to contribute to the project."
|
||||
- name: "Help wanted"
|
||||
color: 0e8a16
|
||||
description: "We need some extra helping hands or expertise in order to resolve this."
|
||||
- name: "Hacktoberfest"
|
||||
description: "Issues/PRs are participating in the Hacktoberfest"
|
||||
color: fbca04
|
||||
|
||||
branches:
|
||||
- name: master
|
||||
protection:
|
||||
required_pull_request_reviews:
|
||||
# required_approving_review_count: 1
|
||||
dismiss_stale_reviews: true
|
||||
require_code_owner_reviews: true
|
||||
dismissal_restrictions:
|
||||
users: []
|
||||
teams:
|
||||
- Admins
|
||||
- Masters
|
||||
required_status_checks:
|
||||
strict: false
|
||||
contexts: []
|
||||
enforce_admins: false
|
||||
restrictions:
|
||||
users: []
|
||||
teams:
|
||||
- Admins
|
||||
- Masters
|
61
.github/stale.yml
vendored
Normal file
61
.github/stale.yml
vendored
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
# Configuration for probot-stale - https://github.com/probot/stale
|
||||
|
||||
# Number of days of inactivity before an Issue or Pull Request becomes stale
|
||||
daysUntilStale: 60
|
||||
|
||||
# Number of days of inactivity before a stale Issue or Pull Request is closed.
|
||||
# Set to false to disable. If disabled, issues still need to be closed manually, but will remain marked as stale.
|
||||
daysUntilClose: 7
|
||||
|
||||
# Issues or Pull Requests with these labels will never be considered stale. Set to `[]` to disable
|
||||
exemptLabels:
|
||||
- "Status: On hold"
|
||||
- "Status: In progress"
|
||||
- "Status: Awaiting response"
|
||||
- "Status: Blocked"
|
||||
- "Idea"
|
||||
- "Security"
|
||||
|
||||
# Set to true to ignore issues in a project (defaults to false)
|
||||
exemptProjects: false
|
||||
|
||||
# Set to true to ignore issues in a milestone (defaults to false)
|
||||
exemptMilestones: false
|
||||
|
||||
# Label to use when marking as stale
|
||||
staleLabel: "Status: Stale"
|
||||
|
||||
# Comment to post when marking as stale. Set to `false` to disable
|
||||
markComment: >
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
|
||||
# Comment to post when removing the stale label.
|
||||
# unmarkComment: >
|
||||
# Your comment here.
|
||||
unmarkComment: false
|
||||
|
||||
# Comment to post when closing a stale Issue or Pull Request.
|
||||
# closeComment: >
|
||||
# Your comment here.
|
||||
closeComment: false
|
||||
|
||||
# Limit the number of actions per hour, from 1-30. Default is 30
|
||||
limitPerRun: 30
|
||||
|
||||
# Limit to only `issues` or `pulls`
|
||||
only: issues
|
||||
|
||||
# Optionally, specify configuration settings that are specific to just 'issues' or 'pulls':
|
||||
# pulls:
|
||||
# daysUntilStale: 30
|
||||
# markComment: >
|
||||
# This pull request has been automatically marked as stale because it has not had
|
||||
# recent activity. It will be closed if no further activity occurs. Thank you
|
||||
# for your contributions.
|
||||
|
||||
# issues:
|
||||
# exemptLabels:
|
||||
# - confirmed
|
22
.github/support.yml
vendored
Normal file
22
.github/support.yml
vendored
Normal file
|
@ -0,0 +1,22 @@
|
|||
---
|
||||
# Configuration for support-requests - https://github.com/dessant/support-requests
|
||||
|
||||
# Label used to mark issues as support requests
|
||||
supportLabel: "Type: Support"
|
||||
|
||||
# Comment to post on issues marked as support requests. Add a link
|
||||
# to a support page, or set to `false` to disable
|
||||
supportComment: >
|
||||
:wave: We use the issue tracker exclusively for bug reports and feature requests.
|
||||
However, this issue appears to be a support request. Please use our
|
||||
support channels to get help with the project.
|
||||
|
||||
Head over to the
|
||||
[Home Assistant community forum](https://community.home-assistant.io/?u=frenck)
|
||||
or join our [Discord](https://discord.me/hassioaddons) chat.
|
||||
|
||||
# Close issues marked as support requests
|
||||
close: true
|
||||
|
||||
# Lock issues marked as support requests
|
||||
lock: false
|
0
.gitignore
vendored
Normal file
0
.gitignore
vendored
Normal file
14
.gitlab-ci.yml
Normal file
14
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
include: https://raw.githubusercontent.com/hassio-addons/organization/master/gitlabci/addon.yml
|
||||
|
||||
variables:
|
||||
ADDON_GITHUB_REPO: "hassio-addons/addon-glances"
|
||||
ADDON_SLUG: "glances"
|
||||
ADDON_TARGET: "glances"
|
||||
|
||||
ADDON_ARMV7: "false"
|
||||
|
||||
ADDON_AARCH64_BASE: "hassioaddons/base-aarch64:2.3.1"
|
||||
ADDON_AMD64_BASE: "hassioaddons/base-amd64:2.3.1"
|
||||
ADDON_ARMHF_BASE: "hassioaddons/base-armhf:2.3.1"
|
||||
ADDON_I386_BASE: "hassioaddons/base-i386:2.3.1"
|
1
.mdlrc
Normal file
1
.mdlrc
Normal file
|
@ -0,0 +1 @@
|
|||
rules "~MD024"
|
66
.yamllint
Normal file
66
.yamllint
Normal file
|
@ -0,0 +1,66 @@
|
|||
---
|
||||
rules:
|
||||
braces:
|
||||
level: error
|
||||
min-spaces-inside: 0
|
||||
max-spaces-inside: 1
|
||||
min-spaces-inside-empty: -1
|
||||
max-spaces-inside-empty: -1
|
||||
brackets:
|
||||
level: error
|
||||
min-spaces-inside: 0
|
||||
max-spaces-inside: 0
|
||||
min-spaces-inside-empty: -1
|
||||
max-spaces-inside-empty: -1
|
||||
colons:
|
||||
level: error
|
||||
max-spaces-before: 0
|
||||
max-spaces-after: 1
|
||||
commas:
|
||||
level: error
|
||||
max-spaces-before: 0
|
||||
min-spaces-after: 1
|
||||
max-spaces-after: 1
|
||||
comments:
|
||||
level: error
|
||||
require-starting-space: true
|
||||
min-spaces-from-content: 2
|
||||
comments-indentation:
|
||||
level: error
|
||||
document-end:
|
||||
level: error
|
||||
present: false
|
||||
document-start:
|
||||
level: error
|
||||
present: true
|
||||
empty-lines:
|
||||
level: error
|
||||
max: 1
|
||||
max-start: 0
|
||||
max-end: 1
|
||||
hyphens:
|
||||
level: error
|
||||
max-spaces-after: 1
|
||||
indentation:
|
||||
level: error
|
||||
spaces: 2
|
||||
indent-sequences: true
|
||||
check-multi-line-strings: false
|
||||
key-duplicates:
|
||||
level: error
|
||||
line-length:
|
||||
ignore: |
|
||||
.github/support.yml
|
||||
level: warning
|
||||
max: 120
|
||||
allow-non-breakable-words: true
|
||||
allow-non-breakable-inline-mappings: true
|
||||
new-line-at-end-of-file:
|
||||
level: error
|
||||
new-lines:
|
||||
level: error
|
||||
type: unix
|
||||
trailing-spaces:
|
||||
level: error
|
||||
truthy:
|
||||
level: error
|
74
CODE_OF_CONDUCT.md
Normal file
74
CODE_OF_CONDUCT.md
Normal file
|
@ -0,0 +1,74 @@
|
|||
# Code of conduct
|
||||
|
||||
## Our pledge
|
||||
|
||||
In the interest of fostering an open and welcoming environment, we as
|
||||
contributors and maintainers pledge to making participation in our project and
|
||||
our community a harassment-free experience for everyone, regardless of age, body
|
||||
size, disability, ethnicity, gender identity and expression, level of experience,
|
||||
nationality, personal appearance, race, religion, or sexual identity and
|
||||
orientation.
|
||||
|
||||
## Our standards
|
||||
|
||||
Examples of behavior that contributes to creating a positive environment
|
||||
include:
|
||||
|
||||
- Using welcoming and inclusive language
|
||||
- Being respectful of differing viewpoints and experiences
|
||||
- Gracefully accepting constructive criticism
|
||||
- Focusing on what is best for the community
|
||||
- Showing empathy towards other community members
|
||||
|
||||
Examples of unacceptable behavior by participants include:
|
||||
|
||||
- The use of sexualized language or imagery and unwelcome sexual attention
|
||||
or advances
|
||||
- Trolling, insulting/derogatory comments, and personal or political attacks
|
||||
- Public or private harassment
|
||||
- Publishing others' private information, such as a physical or
|
||||
electronic address, without explicit permission
|
||||
- Other conduct which could reasonably be considered inappropriate
|
||||
in a professional setting
|
||||
|
||||
## Our responsibilities
|
||||
|
||||
Project maintainers are responsible for clarifying the standards of acceptable
|
||||
behavior and are expected to take appropriate and fair corrective action in
|
||||
response to any instances of unacceptable behavior.
|
||||
|
||||
Project maintainers have the right and responsibility to remove, edit, or
|
||||
reject comments, commits, code, wiki edits, issues, and other contributions
|
||||
that are not aligned to this Code of Conduct, or to ban temporarily or
|
||||
permanently any contributor for other behaviors that they deem inappropriate,
|
||||
threatening, offensive, or harmful.
|
||||
|
||||
## Scope
|
||||
|
||||
This Code of Conduct applies both within project spaces and in public spaces
|
||||
when an individual is representing the project or its community. Examples of
|
||||
representing a project or community include using an official project e-mail
|
||||
address, posting via an official social media account, or acting as an appointed
|
||||
representative at an online or offline event. Representation of a project may be
|
||||
further defined and clarified by project maintainers.
|
||||
|
||||
## Enforcement
|
||||
|
||||
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
||||
reported by contacting the project lead at frenck@addons.community. All
|
||||
complaints will be reviewed and investigated and will result in a response that
|
||||
is deemed necessary and appropriate to the circumstances. The project lead is
|
||||
obligated to maintain confidentiality with regard to the reporter of an incident.
|
||||
Further details of specific enforcement policies may be posted separately.
|
||||
|
||||
Project maintainers who do not follow or enforce the Code of Conduct in good
|
||||
faith may face temporary or permanent repercussions as determined by other
|
||||
members of the project's leadership.
|
||||
|
||||
## Attribution
|
||||
|
||||
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
||||
version 1.4, available at [http://contributor-covenant.org/version/1/4][version]
|
||||
|
||||
[homepage]: http://contributor-covenant.org
|
||||
[version]: http://contributor-covenant.org/version/1/4/
|
29
CONTRIBUTING.md
Normal file
29
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,29 @@
|
|||
# Contributing
|
||||
|
||||
When contributing to this repository, please first discuss the change you wish
|
||||
to make via issue, email, or any other method with the owners of this repository
|
||||
before making a change.
|
||||
|
||||
Please note we have a code of conduct, please follow it in all your interactions
|
||||
with the project.
|
||||
|
||||
## Issues and feature requests
|
||||
|
||||
You've found a bug in the source code, a mistake in the documentation or maybe
|
||||
you'd like a new feature? You can help us by submitting an issue to our
|
||||
[GitHub Repository][github]. Before you create an issue, make sure you search
|
||||
the archive, maybe your question was already answered.
|
||||
|
||||
Even better: You could submit a pull request with a fix / new feature!
|
||||
|
||||
## Pull request process
|
||||
|
||||
1. Search our repository for open or closed [pull requests][prs] that relates
|
||||
to your submission. You don't want to duplicate effort.
|
||||
|
||||
1. You may merge the pull request in once you have the sign-off of two other
|
||||
developers, or if you do not have permission to do that, you may request
|
||||
the second reviewer to merge it for you.
|
||||
|
||||
[github]: https://github.com/hassio-addons/addon-glances/issues
|
||||
[prs]: https://github.com/hassio-addons/addon-glances/pulls
|
21
LICENSE.md
Normal file
21
LICENSE.md
Normal file
|
@ -0,0 +1,21 @@
|
|||
# MIT License
|
||||
|
||||
Copyright (c) 2019 Franck Nijhof
|
||||
|
||||
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.
|
285
README.md
Normal file
285
README.md
Normal file
|
@ -0,0 +1,285 @@
|
|||
# Community Hass.io Add-ons: Glances
|
||||
|
||||
[![GitHub Release][releases-shield]][releases]
|
||||
![Project Stage][project-stage-shield]
|
||||
[![License][license-shield]](LICENSE.md)
|
||||
|
||||
[![GitLab CI][gitlabci-shield]][gitlabci]
|
||||
![Project Maintenance][maintenance-shield]
|
||||
[![GitHub Activity][commits-shield]][commits]
|
||||
|
||||
[![Discord][discord-shield]][discord]
|
||||
[![Community Forum][forum-shield]][forum]
|
||||
|
||||
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
|
||||
|
||||
[![Support my work on Patreon][patreon-shield]][patreon]
|
||||
|
||||
Glances is a cross-platform system monitoring tool written in Python.
|
||||
|
||||

|
||||
|
||||
## About
|
||||
|
||||
Glances is a cross-platform monitoring tool which aims to present a maximum of
|
||||
information in a minimum of space through a Web-based interface.
|
||||
|
||||
Glances can export all system statistics to InfluxDB, allowing you to look
|
||||
at all your system information and its behavior over time.
|
||||
|
||||
## Installation
|
||||
|
||||
The installation of this add-on is pretty straightforward and not different in
|
||||
comparison to installing any other Hass.io add-on.
|
||||
|
||||
1. [Add our Hass.io add-ons repository][repository] to your Hass.io instance.
|
||||
1. Install the "Glances" add-on.
|
||||
1. Disable "Protection mode" in the add-on panel.
|
||||
1. Start the "Glances" add-on.
|
||||
1. Check the logs of the "Glances" to see if everything went well.
|
||||
1. Click the "OPEN WEB UI" button take a glance at Glances.
|
||||
|
||||
**NOTE**: Do not add this repository to Hass.io, please use:
|
||||
`https://github.com/hassio-addons/repository`.
|
||||
|
||||
## Docker status
|
||||
|
||||
![Supports armhf Architecture][armhf-shield]
|
||||
![Supports aarch64 Architecture][aarch64-shield]
|
||||
![Supports amd64 Architecture][amd64-shield]
|
||||
![Supports i386 Architecture][i386-shield]
|
||||
|
||||
[![Docker Layers][layers-shield]][microbadger]
|
||||
[![Docker Pulls][pulls-shield]][dockerhub]
|
||||
|
||||
## Configuration
|
||||
|
||||
**Note**: _Remember to restart the add-on when the configuration is changed._
|
||||
|
||||
Example add-on configuration:
|
||||
|
||||
```json
|
||||
{
|
||||
"log_level": "info",
|
||||
"ssl": false,
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"influxdb": {
|
||||
"enabled": false,
|
||||
"host": "a0d7b954-influxdb",
|
||||
"port": 8086,
|
||||
"username": "glances",
|
||||
"password": "!secret glances_influxdb_password",
|
||||
"database": "glances",
|
||||
"interval": 60
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Note**: _This is just an example, don't copy and paste it! Create your own!_
|
||||
|
||||
### Option: `log_level`
|
||||
|
||||
The `log_level` option controls the level of log output by the addon and can
|
||||
be changed to be more or less verbose, which might be useful when you are
|
||||
dealing with an unknown issue. Possible values are:
|
||||
|
||||
- `trace`: Show every detail, like all called internal functions.
|
||||
- `debug`: Shows detailed debug information.
|
||||
- `info`: Normal (usually) interesting events.
|
||||
- `warning`: Exceptional occurrences that are not errors.
|
||||
- `error`: Runtime errors that do not require immediate action.
|
||||
- `fatal`: Something went terribly wrong. Add-on becomes unusable.
|
||||
|
||||
Please note that each level automatically includes log messages from a
|
||||
more severe level, e.g., `debug` also shows `info` messages. By default,
|
||||
the `log_level` is set to `info`, which is the recommended setting unless
|
||||
you are troubleshooting.
|
||||
|
||||
### Option: `ssl`
|
||||
|
||||
Enables/Disables SSL (HTTPS) on the Glances Web UI. Set it `true` to enable it,
|
||||
`false` otherwise.
|
||||
|
||||
### Option: `certfile`
|
||||
|
||||
The certificate file to use for SSL.
|
||||
|
||||
**Note**: _The file MUST be stored in `/ssl/`, which is default for Hass.io_
|
||||
|
||||
### Option: `keyfile`
|
||||
|
||||
The private key file to use for SSL.
|
||||
|
||||
**Note**: _The file MUST be stored in `/ssl/`, which is default for Hass.io_
|
||||
|
||||
### Option group `influxdb`
|
||||
|
||||
---
|
||||
|
||||
The following options are for the option group: `influxdb`. These settings
|
||||
only apply to the Glances InfluxDB data export.
|
||||
|
||||
#### Option `influxdb`: `enabled`
|
||||
|
||||
Enables/Disables the Glances data export to InfluxDB.
|
||||
|
||||
#### Option `influxdb`: `host`
|
||||
|
||||
The hostname where InfluxDB is running.
|
||||
|
||||
**Note**: _If you are using the Community InfluxDB add-on,
|
||||
use `a0d7b954-influxdb` as the hostname._
|
||||
|
||||
#### Option `influxdb`: `port`
|
||||
|
||||
The port on which InfluxDB is listening.
|
||||
|
||||
#### Option `influxdb`: `username`
|
||||
|
||||
The username that you have created for Glances to authenticate against
|
||||
InfluxDB.
|
||||
|
||||
#### Option `influxdb`: `password`
|
||||
|
||||
The password for the above username option.
|
||||
|
||||
#### Option `influxdb`: `database`
|
||||
|
||||
The name of the database to store all Glances information into.
|
||||
|
||||
**Note**: _It is strongly recommended to create a separate database for glances
|
||||
and not store this in the same database name as Home Assistant._
|
||||
|
||||
#### Option `influxdb`: `interval`
|
||||
|
||||
Defines the interval (in seconds) on how often Glances exports data to InfluxDB.
|
||||
|
||||
## Embedding into Home Assistant
|
||||
|
||||
It is possible to embed Glances directly into Home Assistant, allowing
|
||||
you to access Glances through the Home Assistant frontend.
|
||||
|
||||
Home Assistant provides the `panel_iframe` component, for these purposes.
|
||||
|
||||
Example configuration:
|
||||
|
||||
```yaml
|
||||
panel_iframe:
|
||||
glances:
|
||||
title: Glances
|
||||
icon: mdi:speedometer
|
||||
url: http://hassio.local:61208
|
||||
```
|
||||
|
||||
## Changelog & Releases
|
||||
|
||||
This repository keeps a change log using [GitHub's releases][releases]
|
||||
functionality. The format of the log is based on
|
||||
[Keep a Changelog][keepchangelog].
|
||||
|
||||
Releases are based on [Semantic Versioning][semver], and use the format
|
||||
of ``MAJOR.MINOR.PATCH``. In a nutshell, the version will be incremented
|
||||
based on the following:
|
||||
|
||||
- ``MAJOR``: Incompatible or major changes.
|
||||
- ``MINOR``: Backwards-compatible new features and enhancements.
|
||||
- ``PATCH``: Backwards-compatible bugfixes and package updates.
|
||||
|
||||
## Support
|
||||
|
||||
Got questions?
|
||||
|
||||
You have several options to get them answered:
|
||||
|
||||
- The [Community Hass.io Add-ons Discord chat server][discord] for add-on
|
||||
support and feature requests.
|
||||
- The [Home Assistant Discord chat server][discord-ha] for general Home
|
||||
Assistant discussions and questions.
|
||||
- The Home Assistant [Community Forum][forum].
|
||||
- Join the [Reddit subreddit][reddit] in [/r/homeassistant][reddit]
|
||||
|
||||
You could also [open an issue here][issue] GitHub.
|
||||
|
||||
## Contributing
|
||||
|
||||
This is an active open-source project. We are always open to people who want to
|
||||
use the code or contribute to it.
|
||||
|
||||
We have set up a separate document containing our
|
||||
[contribution guidelines](CONTRIBUTING.md).
|
||||
|
||||
Thank you for being involved! :heart_eyes:
|
||||
|
||||
## Authors & contributors
|
||||
|
||||
The original setup of this repository is by [Franck Nijhof][frenck].
|
||||
|
||||
For a full list of all authors and contributors,
|
||||
check [the contributor's page][contributors].
|
||||
|
||||
## We have got some Hass.io add-ons for you
|
||||
|
||||
Want some more functionality to your Hass.io Home Assistant instance?
|
||||
|
||||
We have created multiple add-ons for Hass.io. For a full list, check out
|
||||
our [GitHub Repository][repository].
|
||||
|
||||
## License
|
||||
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Franck Nijhof
|
||||
|
||||
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.
|
||||
|
||||
[aarch64-shield]: https://img.shields.io/badge/aarch64-yes-green.svg
|
||||
[amd64-shield]: https://img.shields.io/badge/amd64-yes-green.svg
|
||||
[armhf-shield]: https://img.shields.io/badge/armhf-yes-green.svg
|
||||
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
|
||||
[buymeacoffee]: https://www.buymeacoffee.com/frenck
|
||||
[commits-shield]: https://img.shields.io/github/commit-activity/y/hassio-addons/addon-glances.svg
|
||||
[commits]: https://github.com/hassio-addons/addon-glances/commits/master
|
||||
[contributors]: https://github.com/hassio-addons/addon-glances/graphs/contributors
|
||||
[discord-ha]: https://discord.gg/c5DvZ4e
|
||||
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||
[discord]: https://discord.me/hassioaddons
|
||||
[dockerhub]: https://hub.docker.com/r/hassioaddons/glances
|
||||
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||
[forum]: https://community.home-assistant.io/t/community-hass-io-add-on-glances/68836?u=frenck
|
||||
[frenck]: https://github.com/frenck
|
||||
[gitlabci-shield]: https://gitlab.com/hassio-addons/addon-glances/badges/master/pipeline.svg
|
||||
[gitlabci]: https://gitlab.com/hassio-addons/addon-glances/pipelines
|
||||
[home-assistant]: https://home-assistant.io
|
||||
[i386-shield]: https://img.shields.io/badge/i386-yes-green.svg
|
||||
[issue]: https://github.com/hassio-addons/addon-glances/issues
|
||||
[keepchangelog]: http://keepachangelog.com/en/1.0.0/
|
||||
[layers-shield]: https://images.microbadger.com/badges/image/hassioaddons/glances.svg
|
||||
[license-shield]: https://img.shields.io/github/license/hassio-addons/addon-glances.svg
|
||||
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
|
||||
[microbadger]: https://microbadger.com/images/hassioaddons/glances
|
||||
[patreon-shield]: https://www.frenck.nl/images/patreon.png
|
||||
[patreon]: https://www.patreon.com/frenck
|
||||
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
|
||||
[pulls-shield]: https://img.shields.io/docker/pulls/hassioaddons/glances.svg
|
||||
[reddit]: https://reddit.com/r/homeassistant
|
||||
[releases-shield]: https://img.shields.io/github/release/hassio-addons/addon-glances.svg
|
||||
[releases]: https://github.com/hassio-addons/addon-glances/releases
|
||||
[repository]: https://github.com/hassio-addons/repository
|
||||
[semver]: http://semver.org/spec/v2.0.0.htm
|
77
glances/.README.j2
Normal file
77
glances/.README.j2
Normal file
|
@ -0,0 +1,77 @@
|
|||
# Community Hass.io Add-ons: Glances
|
||||
|
||||
[![Release][release-shield]][release] ![Project Stage][project-stage-shield] ![Project Maintenance][maintenance-shield]
|
||||
|
||||
[![Discord][discord-shield]][discord] [![Community Forum][forum-shield]][forum]
|
||||
|
||||
[![Buy me a coffee][buymeacoffee-shield]][buymeacoffee]
|
||||
|
||||
[![Support my work on Patreon][patreon-shield]][patreon]
|
||||
|
||||
Glances is a cross-platform system monitoring tool written in Python.
|
||||
|
||||
## About
|
||||
|
||||
Glances is a cross-platform monitoring tool which aims to present a maximum of
|
||||
information in a minimum of space through a Web-based interface.
|
||||
|
||||
Glances can export all system statistics to InfluxDB, allowing you to look
|
||||
at all your system information and its behavior over time.
|
||||
|
||||
[Click here for the full documentation][docs]
|
||||
|
||||
![Glances screenshot][screenshot]
|
||||
|
||||
{% if channel == "edge" %}
|
||||
## WARNING! THIS IS AN EDGE VERSION!
|
||||
|
||||
This Hass.io Add-ons repository contains edge builds of add-ons. Edge builds
|
||||
add-ons are based upon the latest development version.
|
||||
|
||||
- They may not work at all.
|
||||
- They might stop working at any time.
|
||||
- They could have a negative impact on your system.
|
||||
|
||||
This repository was created for:
|
||||
|
||||
- Anybody willing to test.
|
||||
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||
- Developers.
|
||||
|
||||
If you are more interested in stable releases of our add-ons:
|
||||
|
||||
<https://github.com/hassio-addons/repository>
|
||||
|
||||
{% endif %}
|
||||
{% if channel == "beta" %}
|
||||
## WARNING! THIS IS A BETA VERSION!
|
||||
|
||||
This Hass.io Add-ons repository contains beta releases of add-ons.
|
||||
|
||||
- They might stop working at any time.
|
||||
- They could have a negative impact on your system.
|
||||
|
||||
This repository was created for:
|
||||
|
||||
- Anybody willing to test.
|
||||
- Anybody interested in trying out upcoming add-ons or add-on features.
|
||||
|
||||
If you are more interested in stable releases of our add-ons:
|
||||
|
||||
<https://github.com/hassio-addons/repository>
|
||||
|
||||
{% endif %}
|
||||
[buymeacoffee-shield]: https://www.buymeacoffee.com/assets/img/guidelines/download-assets-sm-2.svg
|
||||
[buymeacoffee]: https://www.buymeacoffee.com/frenck
|
||||
[discord-shield]: https://img.shields.io/discord/478094546522079232.svg
|
||||
[discord]: https://discord.me/hassioaddons
|
||||
[docs]: {{ repo }}/blob/{{ version }}/README.md
|
||||
[forum-shield]: https://img.shields.io/badge/community-forum-brightgreen.svg
|
||||
[forum]: https://community.home-assistant.io/?u=frenck
|
||||
[maintenance-shield]: https://img.shields.io/maintenance/yes/2019.svg
|
||||
[patreon-shield]: https://www.frenck.nl/images/patreon.png
|
||||
[patreon]: https://www.patreon.com/frenck
|
||||
[project-stage-shield]: https://img.shields.io/badge/project%20stage-experimental-yellow.svg
|
||||
[release-shield]: https://img.shields.io/badge/version-{{ version }}-blue.svg
|
||||
[release]: {{ repo }}/tree/{{ version }}
|
||||
[screenshot]: https://github.com/hassio-addons/addon-glances/raw/master/images/screenshot.png
|
57
glances/Dockerfile
Executable file
57
glances/Dockerfile
Executable file
|
@ -0,0 +1,57 @@
|
|||
ARG BUILD_FROM=hassioaddons/base:2.3.1
|
||||
# hadolint ignore=DL3006
|
||||
FROM ${BUILD_FROM}
|
||||
|
||||
# Set shell
|
||||
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
|
||||
|
||||
# Copy Python requirements file
|
||||
COPY requirements.txt /tmp/
|
||||
|
||||
# Setup base
|
||||
RUN \
|
||||
apk add --no-cache --virtual .build-dependencies \
|
||||
automake=1.16.1-r0 \
|
||||
gcc=6.4.0-r9 \
|
||||
linux-headers=4.4.6-r2 \
|
||||
musl-dev=1.1.19-r10 \
|
||||
python3-dev=3.6.6-r0 \
|
||||
\
|
||||
&& apk add --no-cache \
|
||||
lua-resty-http=0.12-r1 \
|
||||
nginx-mod-http-lua=1.14.2-r0 \
|
||||
nginx=1.14.2-r0 \
|
||||
py3-bottle=0.12.13-r2 \
|
||||
py3-psutil=5.4.6-r0 \
|
||||
python3=3.6.6-r0 \
|
||||
\
|
||||
&& pip3 install --no-cache-dir -r /tmp/requirements.txt \
|
||||
\
|
||||
&& apk del --purge .build-dependencies
|
||||
|
||||
# Copy root filesystem
|
||||
COPY rootfs /
|
||||
|
||||
# Build arguments
|
||||
ARG BUILD_ARCH
|
||||
ARG BUILD_DATE
|
||||
ARG BUILD_REF
|
||||
ARG BUILD_VERSION
|
||||
|
||||
# Labels
|
||||
LABEL \
|
||||
io.hass.name="Glances" \
|
||||
io.hass.description="Lorem ipsum" \
|
||||
io.hass.arch="${BUILD_ARCH}" \
|
||||
io.hass.type="addon" \
|
||||
io.hass.version=${BUILD_VERSION} \
|
||||
maintainer="Franck Nijhof <frenck@addons.community>" \
|
||||
org.label-schema.description="Lorem ipsum" \
|
||||
org.label-schema.build-date=${BUILD_DATE} \
|
||||
org.label-schema.name="Glances" \
|
||||
org.label-schema.schema-version="1.0" \
|
||||
org.label-schema.url="https://community.home-assistant.io/?u=frenck" \
|
||||
org.label-schema.usage="https://github.com/hassio-addons/addon-glances/tree/master/README.md" \
|
||||
org.label-schema.vcs-ref=${BUILD_REF} \
|
||||
org.label-schema.vcs-url="https://github.com/hassio-addons/addon-glances" \
|
||||
org.label-schema.vendor="Community Hass.io Add-ons"
|
9
glances/build.json
Normal file
9
glances/build.json
Normal file
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"build_from": {
|
||||
"aarch64": "hassioaddons/base-aarch64:2.3.1",
|
||||
"amd64": "hassioaddons/base-amd64:2.3.1",
|
||||
"armhf": "hassioaddons/base-armhf:2.3.1",
|
||||
"i386": "hassioaddons/base-i386:2.3.1"
|
||||
},
|
||||
"args": {}
|
||||
}
|
64
glances/config.json
Executable file
64
glances/config.json
Executable file
|
@ -0,0 +1,64 @@
|
|||
{
|
||||
"name": "Glances",
|
||||
"version": "dev",
|
||||
"slug": "glances",
|
||||
"description": "A cross-platform system monitoring tool",
|
||||
"url": "https://github.com/hassio-addons/addon-glances",
|
||||
"webui": "[PROTO:ssl]://[HOST]:[PORT:61208]",
|
||||
"startup": "services",
|
||||
"arch": [
|
||||
"aarch64",
|
||||
"amd64",
|
||||
"armhf",
|
||||
"i386"
|
||||
],
|
||||
"map": [
|
||||
"addons",
|
||||
"backup",
|
||||
"config:rw",
|
||||
"share",
|
||||
"ssl"
|
||||
],
|
||||
"boot": "auto",
|
||||
"hassio_api": true,
|
||||
"hassio_role": "default",
|
||||
"auth_api": true,
|
||||
"docker_api": true,
|
||||
"host_network": true,
|
||||
"host_pid": true,
|
||||
"apparmor": false,
|
||||
"options": {
|
||||
"log_level": "info",
|
||||
"ssl": false,
|
||||
"certfile": "fullchain.pem",
|
||||
"keyfile": "privkey.pem",
|
||||
"influxdb": {
|
||||
"enabled": false,
|
||||
"host": "a0d7b954-influxdb",
|
||||
"port": 8086,
|
||||
"username": "glances",
|
||||
"password": "",
|
||||
"database": "glances",
|
||||
"interval": 60
|
||||
}
|
||||
},
|
||||
"schema": {
|
||||
"log_level": "match(^(trace|debug|info|notice|warning|error|fatal)$)",
|
||||
"ssl": "bool",
|
||||
"certfile": "str",
|
||||
"keyfile": "str",
|
||||
"influxdb": {
|
||||
"enabled": "bool",
|
||||
"host": "str",
|
||||
"port": "port",
|
||||
"username": "str",
|
||||
"password": "str",
|
||||
"database": "str",
|
||||
"interval": "int"
|
||||
},
|
||||
"leave_front_door_open": "bool?"
|
||||
},
|
||||
"environment": {
|
||||
"LOG_FORMAT": "{LEVEL}: {MESSAGE}"
|
||||
}
|
||||
}
|
BIN
glances/icon.png
Normal file
BIN
glances/icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 8.3 KiB |
BIN
glances/logo.png
Normal file
BIN
glances/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 23 KiB |
10
glances/requirements.txt
Normal file
10
glances/requirements.txt
Normal file
|
@ -0,0 +1,10 @@
|
|||
docker==3.7.0
|
||||
glances==3.0.2
|
||||
influxdb==5.2.1
|
||||
netifaces==0.10.9
|
||||
paho-mqtt==1.4.0
|
||||
py-cpuinfo==4.0.0
|
||||
requests==2.21.0
|
||||
scandir==1.9.0
|
||||
wifi==0.3.8
|
||||
zeroconf==0.21.3
|
8
glances/rootfs/bin/s6-nuke
Executable file
8
glances/rootfs/bin/s6-nuke
Executable file
|
@ -0,0 +1,8 @@
|
|||
#!/usr/bin/env bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# This file turns s6-nuke into a NOOP to prevent total termination
|
||||
# of the host system since the add-on runs in the same PID namespace.
|
||||
# ==============================================================================
|
||||
echo "S6-NUKE: NOOP"
|
||||
exit 0
|
26
glances/rootfs/etc/cont-init.d/10-requirements.sh
Normal file
26
glances/rootfs/etc/cont-init.d/10-requirements.sh
Normal file
|
@ -0,0 +1,26 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# This files check if all user configuration requirements are met
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
# Check SSL requirements, if enabled
|
||||
if hass.config.true 'ssl'; then
|
||||
if ! hass.config.has_value 'certfile'; then
|
||||
hass.die 'SSL is enabled, but no certfile was specified'
|
||||
fi
|
||||
|
||||
if ! hass.config.has_value 'keyfile'; then
|
||||
hass.die 'SSL is enabled, but no keyfile was specified'
|
||||
fi
|
||||
|
||||
if ! hass.file_exists "/ssl/$(hass.config.get 'certfile')"; then
|
||||
hass.die 'The configured certfile is not found'
|
||||
fi
|
||||
|
||||
if ! hass.file_exists "/ssl/$(hass.config.get 'keyfile')"; then
|
||||
hass.die 'The configured keyfile is not found'
|
||||
fi
|
||||
fi
|
33
glances/rootfs/etc/cont-init.d/11-docker.sh
Normal file
33
glances/rootfs/etc/cont-init.d/11-docker.sh
Normal file
|
@ -0,0 +1,33 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Unprotects this add-on in order to gain access to the Docker socket
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
# Break in case the API is unreachable
|
||||
if ! hass.api.supervisor.ping; then
|
||||
hass.die "Could you contact the HassIO API"
|
||||
fi
|
||||
|
||||
# Docker support is enabled!
|
||||
if [[ -S "/var/run/docker.sock" ]]; then
|
||||
hass.log.info 'Docker support has been enabled.'
|
||||
exit "${EX_OK}"
|
||||
fi
|
||||
|
||||
hass.log.fatal "PROTECTION MODE ENABLED!"
|
||||
hass.log.fatal ""
|
||||
hass.log.fatal "To be able to use this add-on, you'll need to disable"
|
||||
hass.log.fatal "protection mode on this add-on. Without it, the add-on"
|
||||
hass.log.fatal "is unable to access Docker."
|
||||
hass.log.fatal ""
|
||||
hass.log.fatal "Steps:"
|
||||
hass.log.fatal " - Go to the Hass.io Panel."
|
||||
hass.log.fatal " - Click on the 'Glances' add-on."
|
||||
hass.log.fatal " - Set the 'Protection mode' switch to off."
|
||||
hass.log.fatal " - Restart the add-on."
|
||||
hass.log.fatal ""
|
||||
|
||||
exit "${EX_NOK}"
|
19
glances/rootfs/etc/cont-init.d/20-config.sh
Normal file
19
glances/rootfs/etc/cont-init.d/20-config.sh
Normal file
|
@ -0,0 +1,19 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Ensure the configuration exists
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
if hass.file_exists '/config/glances/glances.conf'; then
|
||||
cp -f /config/glances/glances.conf /etc/glances.conf
|
||||
exit "${EX_OK}"
|
||||
fi
|
||||
|
||||
# Ensure configuration exists
|
||||
mkdir -p /config/glances \
|
||||
|| hass.die "Failed to create the Glances configuration directory"
|
||||
|
||||
# Copy in template file
|
||||
cp /etc/glances.conf /config/glances/
|
21
glances/rootfs/etc/cont-init.d/30-influxdb.sh
Normal file
21
glances/rootfs/etc/cont-init.d/30-influxdb.sh
Normal file
|
@ -0,0 +1,21 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Export Glances data to InfluxDB
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
if hass.config.false 'influxdb.enabled'; then
|
||||
exit "${EX_OK}"
|
||||
fi
|
||||
|
||||
# Modify the configuration
|
||||
{
|
||||
echo "[influxdb]"
|
||||
echo "host=$(hass.config.get 'influxdb.host')"
|
||||
echo "port=$(hass.config.get 'influxdb.port')"
|
||||
echo "user=$(hass.config.get 'influxdb.username')"
|
||||
echo "password=$(hass.config.get 'influxdb.password')"
|
||||
echo "db=$(hass.config.get 'influxdb.database')"
|
||||
} >> /etc/glances.conf
|
15
glances/rootfs/etc/cont-init.d/70-nginx.sh
Normal file
15
glances/rootfs/etc/cont-init.d/70-nginx.sh
Normal file
|
@ -0,0 +1,15 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Configure the use of SSL in NGINX
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
if hass.config.true 'ssl'; then
|
||||
certfile=$(hass.config.get 'certfile')
|
||||
keyfile=$(hass.config.get 'keyfile')
|
||||
|
||||
sed -i "s/%%certfile%%/${certfile}/g" /etc/nginx/nginx-ssl.conf
|
||||
sed -i "s/%%keyfile%%/${keyfile}/g" /etc/nginx/nginx-ssl.conf
|
||||
fi
|
315
glances/rootfs/etc/glances.conf
Normal file
315
glances/rootfs/etc/glances.conf
Normal file
|
@ -0,0 +1,315 @@
|
|||
##############################################################################
|
||||
# Globals Glances parameters
|
||||
##############################################################################
|
||||
|
||||
[global]
|
||||
# Does Glances should check if a newer version is available on PyPI ?
|
||||
check_update=false
|
||||
# History size (maximum number of values)
|
||||
# Default is 28800: 1 day with 1 point every 3 seconds (default refresh time)
|
||||
history_size=28800
|
||||
|
||||
##############################################################################
|
||||
# User interface
|
||||
##############################################################################
|
||||
|
||||
[outputs]
|
||||
# Theme name for the Curses interface: black or white
|
||||
curse_theme=black
|
||||
# Limit the number of processes to display in the WebUI
|
||||
max_processes_display=30
|
||||
|
||||
##############################################################################
|
||||
# plugins
|
||||
##############################################################################
|
||||
|
||||
[quicklook]
|
||||
# Define CPU, MEM and SWAP thresholds in %
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
cpu_critical=90
|
||||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
swap_careful=50
|
||||
swap_warning=70
|
||||
swap_critical=90
|
||||
|
||||
[cpu]
|
||||
# Default values if not defined: 50/70/90 (except for iowait)
|
||||
user_careful=50
|
||||
user_warning=70
|
||||
user_critical=90
|
||||
#user_log=False
|
||||
#user_critical_action=echo {{user}} {{value}} {{max}} > /tmp/cpu.alert
|
||||
system_careful=50
|
||||
system_warning=70
|
||||
system_critical=90
|
||||
steal_careful=50
|
||||
steal_warning=70
|
||||
steal_critical=90
|
||||
#steal_log=True
|
||||
# I/O wait percentage should be lower than 1/# (Logical CPU cores)
|
||||
# Leave commented to just use the default config (1/#-20% / 1/#-10% / 1/#)
|
||||
#iowait_careful=30
|
||||
#iowait_warning=40
|
||||
#iowait_critical=50
|
||||
# Context switch limit (core / second)
|
||||
# Leave commented to just use the default config (critical is 50000*# (Logical CPU cores)
|
||||
#ctx_switches_careful=10000
|
||||
#ctx_switches_warning=12000
|
||||
#ctx_switches_critical=14000
|
||||
|
||||
[percpu]
|
||||
# Define CPU thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
user_careful=50
|
||||
user_warning=70
|
||||
user_critical=90
|
||||
iowait_careful=50
|
||||
iowait_warning=70
|
||||
iowait_critical=90
|
||||
system_careful=50
|
||||
system_warning=70
|
||||
system_critical=90
|
||||
|
||||
[gpu]
|
||||
# Default processor values if not defined: 50/70/90
|
||||
proc_careful=50
|
||||
proc_warning=70
|
||||
proc_critical=90
|
||||
# Default memory values if not defined: 50/70/90
|
||||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
|
||||
[mem]
|
||||
# Define RAM thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
careful=50
|
||||
#careful_action_repeat=echo {{percent}} >> /tmp/memory.alert
|
||||
warning=70
|
||||
critical=90
|
||||
|
||||
[memswap]
|
||||
# Define SWAP thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
|
||||
[load]
|
||||
# Define LOAD thresholds
|
||||
# Value * number of cores
|
||||
# Default values if not defined: 0.7/1.0/5.0 per number of cores
|
||||
# Source: http://blog.scoutapp.com/articles/2009/07/31/understanding-load-averages
|
||||
# http://www.linuxjournal.com/article/9001
|
||||
careful=0.7
|
||||
warning=1.0
|
||||
critical=5.0
|
||||
#log=False
|
||||
|
||||
[network]
|
||||
# Default bitrate thresholds in % of the network interface speed
|
||||
# Default values if not defined: 70/80/90
|
||||
rx_careful=70
|
||||
rx_warning=80
|
||||
rx_critical=90
|
||||
tx_careful=70
|
||||
tx_warning=80
|
||||
tx_critical=90
|
||||
# Define the list of hidden network interfaces (comma-separated regexp)
|
||||
#hide=docker.*,lo
|
||||
# WLAN 0 alias
|
||||
#wlan0_alias=Wireless IF
|
||||
# It is possible to overwrite the bitrate thresholds per interface
|
||||
# WLAN 0 Default limits (in bits per second aka bps) for interface bitrate
|
||||
#wlan0_rx_careful=4000000
|
||||
#wlan0_rx_warning=5000000
|
||||
#wlan0_rx_critical=6000000
|
||||
#wlan0_rx_log=True
|
||||
#wlan0_tx_careful=700000
|
||||
#wlan0_tx_warning=900000
|
||||
#wlan0_tx_critical=1000000
|
||||
#wlan0_tx_log=True
|
||||
|
||||
[wifi]
|
||||
# Define the list of hidden wireless network interfaces (comma-separated regexp)
|
||||
hide=lo,docker.*
|
||||
# Define SIGNAL thresholds in db (lower is better...)
|
||||
# Based on: http://serverfault.com/questions/501025/industry-standard-for-minimum-wifi-signal-strength
|
||||
careful=-65
|
||||
warning=-75
|
||||
critical=-85
|
||||
|
||||
[diskio]
|
||||
# Define the list of hidden disks (comma-separated regexp)
|
||||
#hide=sda2,sda5,loop.*
|
||||
hide=loop.*
|
||||
# Alias for sda1
|
||||
#sda1_alias=IntDisk
|
||||
|
||||
[fs]
|
||||
# Define the list of hidden file system (comma-separated regexp)
|
||||
#hide=/boot.*
|
||||
# Define filesystem space thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
# It is also possible to define per mount point value
|
||||
# Example: /_careful=40
|
||||
careful=50
|
||||
warning=70
|
||||
critical=90
|
||||
# Allow additional file system types (comma-separated FS type)
|
||||
#allow=zfs
|
||||
|
||||
[folders]
|
||||
# Define a folder list to monitor
|
||||
# The list is composed of items (list_#nb <= 10)
|
||||
# An item is defined by:
|
||||
# * path: absolute path
|
||||
# * careful: optional careful threshold (in MB)
|
||||
# * warning: optional warning threshold (in MB)
|
||||
# * critical: optional critical threshold (in MB)
|
||||
folder_1_path=/config
|
||||
folder_1_careful=4096
|
||||
folder_1_warning=8196
|
||||
folder_1_critical=12228
|
||||
folder_2_path=/share
|
||||
folder_2_careful=4096
|
||||
folder_2_warning=8196
|
||||
folder_2_critical=12228
|
||||
folder_3_path=/backup
|
||||
folder_3_careful=4096
|
||||
folder_3_warning=8196
|
||||
folder_3_critical=12228
|
||||
|
||||
[sensors]
|
||||
# Sensors core thresholds (in Celsius...)
|
||||
# Default values if not defined: 60/70/80
|
||||
temperature_core_careful=60
|
||||
temperature_core_warning=70
|
||||
temperature_core_critical=80
|
||||
# Temperatures threshold in °C for hddtemp
|
||||
# Default values if not defined: 45/52/60
|
||||
temperature_hdd_careful=45
|
||||
temperature_hdd_warning=52
|
||||
temperature_hdd_critical=60
|
||||
# Battery threshold in %
|
||||
battery_careful=80
|
||||
battery_warning=90
|
||||
battery_critical=95
|
||||
# Sensors alias
|
||||
#temp1_alias=Motherboard 0
|
||||
#temp2_alias=Motherboard 1
|
||||
#core 0_alias=CPU Core 0
|
||||
#core 1_alias=CPU Core 1
|
||||
|
||||
[processlist]
|
||||
# Define CPU/MEM (per process) thresholds in %
|
||||
# Default values if not defined: 50/70/90
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
cpu_critical=90
|
||||
mem_careful=50
|
||||
mem_warning=70
|
||||
mem_critical=90
|
||||
#
|
||||
# Nice priorities range from -20 to 19.
|
||||
# Configure nice levels using a comma separated list.
|
||||
#
|
||||
# Nice: Example 1, non-zero is warning (default behavior)
|
||||
nice_warning=-20,-19,-18,-17,-16,-15,-14,-13,-12,-11,-10,-9,-8,-7,-6,-5,-4,-3,-2,-1,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||
#
|
||||
# Nice: Example 2, low priority processes escalate from careful to critical
|
||||
#nice_careful=1,2,3,4,5,6,7,8,9
|
||||
#nice_warning=10,11,12,13,14
|
||||
#nice_critical=15,16,17,18,19
|
||||
|
||||
[ports]
|
||||
# Ports scanner plugin configuration
|
||||
# Interval in second between two scans
|
||||
refresh=30
|
||||
# Set the default timeout (in second) for a scan (can be overwritten in the scan list)
|
||||
timeout=3
|
||||
# If port_default_gateway is True, add the default gateway on top of the scan list
|
||||
port_default_gateway=True
|
||||
#
|
||||
# Define the scan list (1 < x < 255)
|
||||
# port_x_host (name or IP) is mandatory
|
||||
# port_x_port (TCP port number) is optional (if not set, use ICMP)
|
||||
# port_x_description is optional (if not set, define to host:port)
|
||||
# port_x_timeout is optional and overwrite the default timeout value
|
||||
# port_x_rtt_warning is optional and defines the warning threshold in ms
|
||||
#
|
||||
#port_1_host=192.168.0.1
|
||||
#port_1_port=80
|
||||
#port_1_description=Home Box
|
||||
#port_1_timeout=1
|
||||
#port_2_host=www.free.fr
|
||||
#port_2_description=My ISP
|
||||
#port_3_host=www.google.com
|
||||
#port_3_description=Internet ICMP
|
||||
#port_3_rtt_warning=1000
|
||||
#port_4_description=Internet Web
|
||||
#port_4_host=www.google.com
|
||||
#port_4_port=80
|
||||
#port_4_rtt_warning=1000
|
||||
#
|
||||
# Define Web (URL) monitoring list (1 < x < 255)
|
||||
# web_x_url is the URL to monitor (example: http://my.site.com/folder)
|
||||
# web_x_description is optional (if not set, define to URL)
|
||||
# web_x_timeout is optional and overwrite the default timeout value
|
||||
# web_x_rtt_warning is optional and defines the warning respond time in ms (approximatively)
|
||||
#
|
||||
#web_1_url=https://blog.nicolargo.com
|
||||
#web_1_description=My Blog
|
||||
#web_1_rtt_warning=3000
|
||||
#web_2_url=https://github.com
|
||||
#web_3_url=http://www.google.fr
|
||||
#web_3_description=Google Fr
|
||||
#web_4_url=https://blog.nicolargo.com/nonexist
|
||||
#web_4_description=Intranet
|
||||
|
||||
[docker]
|
||||
# Thresholds for CPU and MEM (in %)
|
||||
cpu_careful=50
|
||||
cpu_warning=70
|
||||
cpu_critical=90
|
||||
mem_careful=20
|
||||
mem_warning=50
|
||||
mem_critical=70
|
||||
#
|
||||
# Per container thresholds
|
||||
#containername_cpu_careful=10
|
||||
#containername_cpu_warning=20
|
||||
#containername_cpu_critical=30
|
||||
#
|
||||
# By default, Glances only display running containers
|
||||
# Set the following key to True to display all containers
|
||||
all=False
|
||||
|
||||
##############################################################################
|
||||
# Client/server
|
||||
##############################################################################
|
||||
|
||||
[serverlist]
|
||||
# Define the static servers list
|
||||
#server_1_name=localhost
|
||||
#server_1_alias=My local PC
|
||||
#server_1_port=61209
|
||||
#server_2_name=localhost
|
||||
#server_2_port=61235
|
||||
#server_3_name=192.168.0.17
|
||||
#server_3_alias=Another PC on my network
|
||||
#server_3_port=61209
|
||||
#server_4_name=pasbon
|
||||
#server_4_port=61237
|
||||
|
||||
[passwords]
|
||||
# Define the passwords list
|
||||
# Syntax: host=password
|
||||
# Where: host is the hostname
|
||||
# password is the clear password
|
||||
# Additionally (and optionally) a default password could be defined
|
||||
#localhost=abc
|
||||
#default=defaultpassword
|
83
glances/rootfs/etc/nginx/ha-auth.lua
Normal file
83
glances/rootfs/etc/nginx/ha-auth.lua
Normal file
|
@ -0,0 +1,83 @@
|
|||
local http = require "resty.http"
|
||||
local auths = ngx.shared.auths
|
||||
|
||||
function authenticate()
|
||||
|
||||
--- Test Authentication header is set and with a value
|
||||
local header = ngx.req.get_headers()['Authorization']
|
||||
if header == nil or header:find(" ") == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
local divider = header:find(' ')
|
||||
if header:sub(0, divider-1) ~= 'Basic' then
|
||||
return false
|
||||
end
|
||||
|
||||
local auth = ngx.decode_base64(header:sub(divider+1))
|
||||
if auth == nil or auth:find(':') == nil then
|
||||
return false
|
||||
end
|
||||
|
||||
divider = auth:find(':')
|
||||
local username = auth:sub(0, divider-1)
|
||||
local password = auth:sub(divider+1)
|
||||
|
||||
--- Check if authentication is cached
|
||||
if auths:get(username) == password then
|
||||
ngx.log(ngx.DEBUG, "Authenticated user against Home Assistant (cache).")
|
||||
return true
|
||||
end
|
||||
|
||||
--- HTTP request against Hassio API
|
||||
local httpc = http.new()
|
||||
local res, err = httpc:request_uri("http://hassio/auth", {
|
||||
method = "POST",
|
||||
body = ngx.encode_args({["username"]=username, ["password"]=password}),
|
||||
headers = {
|
||||
["Content-Type"] = "application/x-www-form-urlencoded",
|
||||
["X-HASSIO-KEY"] = os.getenv("HASSIO_TOKEN"),
|
||||
},
|
||||
keepalive_timeout = 60,
|
||||
keepalive_pool = 10
|
||||
})
|
||||
|
||||
--- Error during API request
|
||||
if err then
|
||||
ngx.log(ngx.WARN, "Error during Hassio user authentication.", err)
|
||||
return false
|
||||
end
|
||||
|
||||
--- No result? Something went wrong...
|
||||
if not res then
|
||||
ngx.log(ngx.WARN, "Error during Hassio user authentication.")
|
||||
return false
|
||||
end
|
||||
|
||||
--- Valid response, the username/password is valid
|
||||
if res.status == 200 then
|
||||
ngx.log(ngx.INFO, "Authenticated user against Home Assistant.")
|
||||
auths:set(username, password, 60)
|
||||
return true
|
||||
end
|
||||
|
||||
--- Whatever the response is, it is invalid
|
||||
ngx.log(ngx.WARN, "Authentication against Home Assistant failed!")
|
||||
return false
|
||||
end
|
||||
|
||||
-- Only authenticate if its not disabled
|
||||
if not os.getenv('DISABLE_HA_AUTHENTICATION') then
|
||||
|
||||
--- Try to authenticate against HA
|
||||
local authenticated = authenticate()
|
||||
|
||||
--- If authentication failed, throw a basic auth
|
||||
if not authenticated then
|
||||
ngx.header.content_type = 'text/plain'
|
||||
ngx.header.www_authenticate = 'Basic realm="Home Assistant"'
|
||||
ngx.status = ngx.HTTP_UNAUTHORIZED
|
||||
ngx.say('401 Access Denied')
|
||||
ngx.exit(ngx.HTTP_UNAUTHORIZED)
|
||||
end
|
||||
end
|
80
glances/rootfs/etc/nginx/nginx-ssl.conf
Normal file
80
glances/rootfs/etc/nginx/nginx-ssl.conf
Normal file
|
@ -0,0 +1,80 @@
|
|||
worker_processes 1;
|
||||
pid /var/run/nginx.pid;
|
||||
error_log /dev/stdout info;
|
||||
daemon off;
|
||||
env HASSIO_TOKEN;
|
||||
env DISABLE_HA_AUTHENTICATION;
|
||||
load_module "/usr/lib/nginx/modules/ndk_http_module.so";
|
||||
load_module "/usr/lib/nginx/modules/ngx_http_lua_module.so";
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
proxy_read_timeout 1200;
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
lua_shared_dict auths 16k;
|
||||
resolver 172.30.32.2;
|
||||
|
||||
upstream glances {
|
||||
ip_hash;
|
||||
server 127.0.0.1:61209;
|
||||
}
|
||||
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 61208 default_server ssl;
|
||||
|
||||
server_name _;
|
||||
access_log /dev/stdout combined;
|
||||
|
||||
client_max_body_size 4G;
|
||||
keepalive_timeout 5;
|
||||
|
||||
ssl on;
|
||||
ssl_certificate /ssl/%%certfile%%;
|
||||
ssl_certificate_key /ssl/%%keyfile%%;
|
||||
ssl_protocols TLSv1.2;
|
||||
ssl_prefer_server_ciphers on;
|
||||
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:DHE-RSA-AES256-SHA;
|
||||
ssl_ecdh_curve secp384r1;
|
||||
ssl_session_timeout 10m;
|
||||
ssl_session_cache shared:SSL:10m;
|
||||
ssl_session_tickets off;
|
||||
ssl_stapling on;
|
||||
ssl_stapling_verify on;
|
||||
|
||||
add_header X-Content-Type-Options nosniff;
|
||||
add_header X-XSS-Protection "1; mode=block";
|
||||
add_header X-Robots-Tag none;
|
||||
|
||||
root /dev/null;
|
||||
|
||||
location / {
|
||||
access_by_lua_file /etc/nginx/ha-auth.lua;
|
||||
|
||||
proxy_redirect off;
|
||||
proxy_pass http://glances;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
}
|
||||
}
|
||||
}
|
63
glances/rootfs/etc/nginx/nginx.conf
Normal file
63
glances/rootfs/etc/nginx/nginx.conf
Normal file
|
@ -0,0 +1,63 @@
|
|||
worker_processes 1;
|
||||
pid /var/run/nginx.pid;
|
||||
error_log /dev/stdout info;
|
||||
daemon off;
|
||||
env HASSIO_TOKEN;
|
||||
env DISABLE_HA_AUTHENTICATION;
|
||||
load_module "/usr/lib/nginx/modules/ndk_http_module.so";
|
||||
load_module "/usr/lib/nginx/modules/ngx_http_lua_module.so";
|
||||
|
||||
events {
|
||||
worker_connections 1024;
|
||||
}
|
||||
|
||||
http {
|
||||
include mime.types;
|
||||
default_type application/octet-stream;
|
||||
sendfile on;
|
||||
keepalive_timeout 65;
|
||||
proxy_read_timeout 1200;
|
||||
gzip on;
|
||||
gzip_disable "msie6";
|
||||
lua_shared_dict auths 16k;
|
||||
resolver 172.30.32.2;
|
||||
|
||||
upstream glances {
|
||||
ip_hash;
|
||||
server 127.0.0.1:61209;
|
||||
}
|
||||
|
||||
map $http_upgrade $connection_upgrade {
|
||||
default upgrade;
|
||||
'' close;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 61208 default_server;
|
||||
|
||||
server_name _;
|
||||
access_log /dev/stdout combined;
|
||||
|
||||
client_max_body_size 4G;
|
||||
keepalive_timeout 5;
|
||||
|
||||
root /dev/null;
|
||||
|
||||
location / {
|
||||
access_by_lua_file /etc/nginx/ha-auth.lua;
|
||||
|
||||
proxy_redirect off;
|
||||
proxy_pass http://glances;
|
||||
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
|
||||
proxy_set_header X-Real-IP $remote_addr;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
proxy_set_header Host $http_host;
|
||||
proxy_set_header X-NginX-Proxy true;
|
||||
}
|
||||
}
|
||||
}
|
10
glances/rootfs/etc/services.d/glances/finish
Normal file
10
glances/rootfs/etc/services.d/glances/finish
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/execlineb -S0
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Take down the S6 supervision tree when Glances fails
|
||||
# ==============================================================================
|
||||
if -n { s6-test $# -ne 0 }
|
||||
if -n { s6-test ${1} -eq 256 }
|
||||
|
||||
s6-svscanctl -t /var/run/s6/services
|
||||
|
23
glances/rootfs/etc/services.d/glances/run
Normal file
23
glances/rootfs/etc/services.d/glances/run
Normal file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Runs Glances
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
declare -a options
|
||||
|
||||
hass.log.info 'Starting Glances'
|
||||
|
||||
options+=(-C /etc/glances.conf)
|
||||
options+=(-w)
|
||||
options+=(--port 61209)
|
||||
options+=(--bind 127.0.0.1)
|
||||
|
||||
if hass.debug; then
|
||||
options+=(--debug)
|
||||
fi
|
||||
|
||||
# Run Glances
|
||||
exec glances "${options[@]}"
|
9
glances/rootfs/etc/services.d/influxdb/finish
Normal file
9
glances/rootfs/etc/services.d/influxdb/finish
Normal file
|
@ -0,0 +1,9 @@
|
|||
#!/usr/bin/execlineb -S0
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Take down the S6 supervision tree when Glances fails
|
||||
# ==============================================================================
|
||||
if -n { s6-test $# -ne 0 }
|
||||
if -n { s6-test ${1} -eq 256 }
|
||||
|
||||
s6-svscanctl -t /var/run/s6/services
|
28
glances/rootfs/etc/services.d/influxdb/run
Normal file
28
glances/rootfs/etc/services.d/influxdb/run
Normal file
|
@ -0,0 +1,28 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Runs Glances InfluxDB Export
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
declare -a options
|
||||
|
||||
if hass.config.false 'influxdb.enabled'; then
|
||||
exec sleep 86400
|
||||
fi
|
||||
|
||||
options+=(-C /etc/glances.conf)
|
||||
options+=(--export influxdb)
|
||||
options+=(--quiet)
|
||||
|
||||
if hass.debug; then
|
||||
options+=(--debug)
|
||||
fi
|
||||
|
||||
# Interval
|
||||
sleep "$(hass.config.get 'influxdb.interval')"
|
||||
|
||||
# Run Glances
|
||||
exec glances "${options[@]}"
|
||||
|
10
glances/rootfs/etc/services.d/nginx/finish
Normal file
10
glances/rootfs/etc/services.d/nginx/finish
Normal file
|
@ -0,0 +1,10 @@
|
|||
#!/usr/bin/execlineb -S0
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Take down the S6 supervision tree when the nginx daemon fails
|
||||
# ==============================================================================
|
||||
# Disabled to allow for some testing
|
||||
if -n { s6-test $# -ne 0 }
|
||||
if -n { s6-test ${1} -eq 256 }
|
||||
|
||||
s6-svscanctl -t /var/run/s6/services
|
23
glances/rootfs/etc/services.d/nginx/run
Normal file
23
glances/rootfs/etc/services.d/nginx/run
Normal file
|
@ -0,0 +1,23 @@
|
|||
#!/usr/bin/with-contenv bash
|
||||
# ==============================================================================
|
||||
# Community Hass.io Add-ons: Glances
|
||||
# Runs the nginx daemon
|
||||
# ==============================================================================
|
||||
# shellcheck disable=SC1091
|
||||
source /usr/lib/hassio-addons/base.sh
|
||||
|
||||
hass.log.info 'Starting the NGINX daemon'
|
||||
|
||||
# Wait for Glances to become available
|
||||
s6-svwait -u -t 5000 /var/run/s6/services/glances
|
||||
|
||||
# Disable HA Authentication if front door is open
|
||||
if hass.config.true 'leave_front_door_open'; then
|
||||
export DISABLE_HA_AUTHENTICATION=true
|
||||
fi
|
||||
|
||||
if hass.config.true 'ssl'; then
|
||||
exec nginx -c /etc/nginx/nginx-ssl.conf
|
||||
else
|
||||
exec nginx -c /etc/nginx/nginx.conf
|
||||
fi
|
BIN
images/screenshot.png
Normal file
BIN
images/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 256 KiB |
Loading…
Add table
Add a link
Reference in a new issue