1
0
Fork 0
mirror of https://github.com/bastienwirtz/homer.git synced 2026-01-23 10:25:19 +00:00

Compare commits

...

752 commits

Author SHA1 Message Date
Bastien Wirtz
6367012675 dependency updates 2026-01-17 15:17:11 +01:00
Bastien Wirtz
d7bee37405 chore: dependency updates 2025-12-14 16:01:41 +01:00
Iustin G
4cf69b3a25
Fix grammar in connectivity checks documentation (#1003)
Corrected grammatical errors in the connectivity checks section.
2025-11-23 06:36:57 -08:00
Zach Damit
2e1c7b3d27
fix: ensure smart cards re-mount correctly between pages (stable keys in ServiceGroup) (#1005)
* fix: prevent smart card reuse between pages by adding stable keys in ServiceGroup

Previously ServiceGroup keyed components only by index, causing Vue to reuse the wrong smart-card instance when navigating between pages. Keys now include groupIndex and item identity to ensure components re-mount correctly.

* Fix duplicate Service cards by ensuring unique Vue keys

The search feature was causing some Service cards to duplicate when multiple items in a group shared the same `name` value. Vue reused DOM nodes because the generated `key` for <Service> was not always unique:

This caused instability during filtering and resulted in one of the cards being duplicated repeatedly until a full page reload.
2025-11-23 06:34:31 -08:00
Bastien Wirtz
151c136923 Release version bump 2025-11-16 13:59:13 +01:00
Bastien Wirtz
2a27bee30e
Added Miniflux custom service
Co-authored-by: Moritz Kreutzer
Co-authored-by: Reiko Kaps 
Co-authored-by: igorkulman
2025-11-16 02:49:01 -08:00
Bastien Wirtz
d1356c3e6a chore: lint apply 2025-11-15 15:47:36 +01:00
Bastien Wirtz
8d82c77630 chore: dependency updates 2025-11-15 15:46:28 +01:00
dependabot[bot]
f11c14e764 chore(deps-dev): bump vite from 7.1.6 to 7.1.11
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.1.6 to 7.1.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.1.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.1.11
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-26 10:40:52 +01:00
M
62606e0caf Gatus seems to have changed the duration format from us to ns 2025-10-08 09:31:32 +02:00
Bastien Wirtz
184c16d46c chore: release version bump 2025-10-06 16:22:17 +02:00
M
ee57fa05fb Add documentation about hiding times 2025-10-06 16:20:40 +02:00
M
8249aa8ae4 Add a flag to hide the averages. They are not calculated in this case 2025-10-06 16:20:40 +02:00
M
a4ec46ee35 Remove console logging 2025-10-06 16:20:40 +02:00
M
bac62457f1 Add doc about update Interval 2025-10-06 16:20:40 +02:00
M
3913c30a56 Refactor: Allow reload. Reformat with template by joriswvanrijn 2025-10-06 16:20:40 +02:00
M
3f49479556 Simplify durations 2025-10-06 16:20:40 +02:00
M
6aa29935f6 Add missing link in docs 2025-10-06 16:20:40 +02:00
M
19c5f174e8 Add documentation on Groups 2025-10-06 16:20:40 +02:00
M
89a264563a Update dummy data for groups example 2025-10-06 16:20:40 +02:00
M
d19724b896 Add optional filtering on groups 2025-10-06 16:20:40 +02:00
M
8a598dbdc0 Add documentation 2025-10-06 16:20:40 +02:00
M
2f4bbee491 Add dummy data 2025-10-06 16:20:40 +02:00
M
7bd56d941a Add script 2025-10-06 16:20:40 +02:00
Robert Dixon
5a816709e5 Update walkxcode.scss
Addresses issue #769 where background image url is referencing <ip_address>/resources/assets/themes/walkxcode (404) rather than <ip_address>/assets/themes/walkxcode where the images are stored
2025-10-05 15:00:16 +02:00
Bastien Wirtz
81c7496264 feat: Inject package.json version into the app 2025-09-29 22:00:20 +02:00
Bastien Wirtz
4904717db0 fix(smartcard): fix transmission service rework 2025-09-28 22:06:53 +02:00
Bastien Wirtz
92a79ffdfb chore(transmission): cleanup component code 2025-09-27 15:20:57 +02:00
Igor Kulman
35e49e3d91 Update Transmission documentation to reflect code changes 2025-09-27 14:54:35 +02:00
Igor Kulman
68fb183c20 Use service mixin fetch method with custom session handling for Transmission RPC 2025-09-27 14:54:35 +02:00
Igor Kulman
9054bd8941 Use consistent auth format with auth field instead of username/password 2025-09-27 14:54:35 +02:00
Igor Kulman
b821651017 Remove endpoint validation as service mixin handles this 2025-09-27 14:54:35 +02:00
Igor Kulman
5b29bc411c Fix variable naming and bounds check in displayRate function 2025-09-27 14:54:35 +02:00
Igor Kulman
06b677ab76 Add subtitle support - display subtitle if provided, otherwise show data 2025-09-27 14:54:35 +02:00
Igor Kulman
843a814ac5 Remove showWhenEmpty option and always show data for consistency 2025-09-27 14:54:35 +02:00
Igor Kulman
1b6c3e6213 Use single interval config instead of separate rate and torrent intervals 2025-09-27 14:54:35 +02:00
Igor Kulman
90ba82de8f Add Transmission service 2025-09-27 14:54:35 +02:00
Bastien Wirtz
6f902b78c0 doc: add agent instructions file. 2025-09-27 14:42:31 +02:00
Bastien Wirtz
9aaef4eaef chore(release): version bump 2025-09-26 21:21:27 +02:00
Rodrigo Maia
e4588bc634 fix(neon-theme): add missing highlight-variant-inverted colors for better contrast
Adds --highlight-variant-inverted color definitions to both light and dark variants of the neon theme to improve text contrast against the bright neon green background.
2025-09-26 20:50:31 +02:00
Bastien Wirtz
61d5d0b722 fix: ensure independent service state between page 2025-09-21 15:45:16 +02:00
Igor Kulman
63647e837a Do not append subtitle to document title when empty 2025-09-21 15:03:02 +02:00
Bastien Wirtz
2df7d5947b chore: add ai generated data for missing mocks 2025-09-21 14:51:04 +02:00
Bastien Wirtz
8ce2daff4d chore: dependencies updates 2025-09-21 14:48:49 +02:00
Bastien Wirtz
1f2c2058f6 doc: cosmetic update on Traefic documentation 2025-09-21 14:44:44 +02:00
3thibaut1304
a36634c237 update customeservices docs 2025-09-21 14:42:20 +02:00
3thibaut1304
ee152fd202 fix service traefik with basic auth 2025-09-21 14:42:20 +02:00
Jeremy Meyers
5eaa479b3c
Update customservices.md (#887)
updated paperless title to reflect active version of this project and added note about custom service info not showing up with subtitle enabled

Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2025-09-21 05:36:04 -07:00
dependabot[bot]
11bd5fd9d5 chore(deps-dev): bump vite from 7.0.6 to 7.0.7
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 7.0.6 to 7.0.7.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v7.0.7/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v7.0.7/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 7.0.7
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-09-21 09:21:06 +02:00
Bastien Wirtz
da32035841 doc: improve smart card documentation. 2025-09-19 21:45:12 +02:00
Bastien Wirtz
2046d8d30c
Update FUNDING.yml 2025-09-15 14:34:14 +02:00
Bastien Wirtz
308deb95e0 fix(dev-server): fix unparsable dummy-data fson file 2025-08-17 17:26:37 +02:00
Bastien Wirtz
a941e94a3b chore: Update dependencies 2025-08-06 23:02:37 +02:00
Bastien Wirtz
83152453c5 fix(connectivity-checker): fix network offline issue with auth proxies #961 2025-08-06 23:02:02 +02:00
Bastien Wirtz
b4e20fe8af refactor(layouts): remove duplicated code. 2025-08-06 16:13:26 +02:00
Cs137
a38514739d Sort community themes alphabetically 2025-07-22 12:43:44 -07:00
Cs137
7ea9b2e882 Add community theme: DietPi 2025-07-22 12:43:44 -07:00
Cs137
60cc984f12 Update docs: Fix typo mentioning user 2025-07-22 12:43:44 -07:00
Cs137
fcf730f610 Update docs: Fix typo 2025-07-22 12:43:44 -07:00
tanasegabriel
c230392da8 Use promises for HTTP calls 2025-05-20 20:49:21 +02:00
tanasegabriel
adf671772b Add orange indicator for disabled blocking 2025-05-20 20:49:21 +02:00
tanasegabriel
51b4649628 Improve PiHole status 2025-05-20 20:49:21 +02:00
Bastien Wirtz
6344970eb6 chore(release): version bump 2025-05-17 14:52:27 +02:00
Bastien Wirtz
3f1d8e01ad fix(fresh-rss): Fix response decoding #902 2025-05-17 14:50:09 +02:00
Bastien Wirtz
58a1a0764d update dependencies 2025-05-17 14:49:36 +02:00
Juan Jose Pablos
105937d438 Do not force lang
hardcoding lang attribute on the html tag force to define the english language. 
If your user is a non english language the browser try to suggest to translate. But maybe the dashboard is already translated.
2025-05-17 14:38:04 +02:00
tanasegabriel
abb0cf84bb Do not mandate the usage of an API key for Pi-hole v6 2025-05-17 14:26:52 +02:00
蔡鳳駿
517de68e74 docs: configure Pi-Hole v6 API with URL that ends with admin 2025-05-05 02:51:25 -07:00
Bastien Wirtz
1afa0afd00 chore(lint): Apply lint 2025-05-04 15:15:12 +02:00
Bastien Wirtz
a5eeb1e44e feat(smart-cards): handle dynamic loading error 2025-05-04 06:14:06 -07:00
Bastien Wirtz
acb304adec deps update 2025-05-04 14:15:57 +02:00
Molham
347a3d062b remove deleteing the session over the API call when leaving the page 2025-05-04 04:11:59 -07:00
Molham
15f59b9e36 delete unused object 2025-05-04 04:11:59 -07:00
Molham
42f3a3ee71 reset the mixin service.js and make use of the actual error message from the current service.js 2025-05-04 04:11:59 -07:00
Molham
ad76093a38 modify service.js mixin to accept one more parameter and return full response and use this.fetch in PiHole.vue 2025-05-04 04:11:59 -07:00
Molham
9e314c960b fix integration test 2025-05-04 04:11:59 -07:00
Molham
07207dca55 reset the api_v5 function to fetch the remote api with this.fetch 2025-05-04 04:11:59 -07:00
Molham
59b0ed7688 set this.status after checking the response is OK 2025-05-04 04:11:59 -07:00
Molham
4684b23a8c better handle errors and set the subtitle as a message holder for errors 2025-05-04 04:11:59 -07:00
Molham
28ad80369f add support to dynamic interval time for polling the status 2025-05-04 04:11:59 -07:00
Molham
9307f5a926 feat(pihole): Support Pi-hole v6 API with session management (#875)
Add support for Pi-hole v6 API while maintaining v5 compatibility. The component now
handles both API versions with proper session-based authentication for v6 and legacy
authentication for v5. Includes automated retries, session caching, and proper cleanup.

- Add new apiVersion config option (default: 5, accepts: 5,6)
- Implement session-based auth with caching for v6 API
- Add auto-retry mechanism with configurable attempts
- Add periodic status polling for v6 API
- Separate v5/v6 API handling logic for better maintenance
- Improve error handling and status display
- Update documentation with v6 API support details

Breaking changes: None. V5 remains default for backward compatibility.
V6 mode must be explicitly enabled by setting apiVersion: 6 in config.
2025-05-04 04:11:59 -07:00
dependabot[bot]
1f6e6e7cce chore(deps-dev): bump vite from 6.1.5 to 6.1.6
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.5 to 6.1.6.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.1.6/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.1.6/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.1.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-05-04 04:10:01 -07:00
Gabriel Tanase
cde338a48d Fix typo in customservices docs
I was checking the newly added services and noticed that upon clicking the hyperlink it doesn't automatically scroll down to the corresponding section. Seems to be caused by a small typo.

Looking forward to the new release, these additions are great!
2025-04-26 01:54:21 -07:00
Rishi1208
66e7989e97 Update CONTRIBUTING.md 2025-04-26 01:53:22 -07:00
Rishi1208
fef1e8dcbe Update CONTRIBUTING.md 2025-04-26 01:53:22 -07:00
Marco Kreeft
b40d008400 Removed upload 2025-04-14 00:06:32 -07:00
Marco Kreeft
f4c026fe2e Handled subtitle if present 2025-04-14 00:06:32 -07:00
Marco Kreeft
1de57d9423 Comments Bastien 2025-04-14 00:06:32 -07:00
Marco Kreeft
042e4a0529 Update SABnzbd.vue 2025-04-14 00:06:32 -07:00
Marco Kreeft
ef95630225 Added download and upload speed to Sabnzbd 2025-04-14 00:06:32 -07:00
Marco Kreeft
68441f2b81 Update dockerhub.yml 2025-04-14 00:06:32 -07:00
Marco Kreeft
5de2344dc2 Update dockerhub.yml 2025-04-14 00:06:32 -07:00
Marco Kreeft
5976f8f561 Edited the anchors 2025-04-14 00:06:32 -07:00
Marco Kreeft
5c4b5e805e Added documentation for the services 2025-04-14 00:06:32 -07:00
Marco Kreeft
1ecbef0aca Added Docker Socket Proxy service 2025-04-14 00:06:32 -07:00
Marco Kreeft
4b63b7784f Added Plex Service 2025-04-14 00:06:32 -07:00
dependabot[bot]
deec0aaa68 chore(deps-dev): bump vite from 6.1.4 to 6.1.5
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.4 to 6.1.5.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.1.5/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.1.5/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.1.5
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-14 00:05:59 -07:00
Molham Al Nasr
bf531404f5 fix typo 2025-04-13 05:47:02 -07:00
Molham Al Nasr
fc10b5c512 Markdown-linter consider <string> as HTML and it shows the wrong text in a preview mode 2025-04-13 05:47:02 -07:00
Molham Al Nasr
04164acff3 Markdown-linter hates the trailing-punctuation. avoid warnings in editors 2025-04-13 05:47:02 -07:00
Molham Al Nasr
7cc7effd2e add blanks around headings. avoid warnings in editors 2025-04-13 05:47:02 -07:00
Molham Al Nasr
4a05f0d113 Markdown-linter hates the Bare URLs. avoid warnings in editors 2025-04-13 05:47:02 -07:00
Molham Al Nasr
d15ebb9d09 Markdown-linter hates the trailing-spaces. avoid warnings in editors 2025-04-13 05:47:02 -07:00
Bastien Wirtz
933e7a0991 Release version bump 2025-04-05 14:38:48 +02:00
dependabot[bot]
f0cd8ce91f chore(deps-dev): bump vite from 6.1.3 to 6.1.4
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.3 to 6.1.4.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.1.4/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.1.4/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-version: 6.1.4
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-05 05:20:11 -07:00
dependabot[bot]
fcf332a31c chore(deps-dev): bump vite from 6.1.2 to 6.1.3
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.2 to 6.1.3.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.1.3/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.1.3/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-04 00:27:13 -07:00
Bastien Wirtz
7cb7293abf
Merge pull request #895 from cbos/linkding_support
Add Linkding support
2025-04-04 00:26:53 -07:00
Cees Bos
2024297f61 Merge branch 'main' into linkding_support
# Conflicts:
#	docs/customservices.md
2025-04-01 20:28:18 +02:00
Cees Bos
a63f9e2c7c Rework Linkding integration based on feedback on the PR 2025-04-01 20:24:54 +02:00
Bastien Wirtz
3f154b07a7 chore(lint): apply lint 2025-03-30 16:02:39 +02:00
thibaut1304
6916c2fed3 add service TruenasScale, view status and version 2025-03-30 07:00:41 -07:00
thibaut1304
e5bd328d21 add service vaultwarden, view status and version 2025-03-30 06:58:51 -07:00
thibaut1304
2a290004b7 add service matrix, view status and version 2025-03-30 06:53:44 -07:00
3thibaut1304
b11bee7d64 add status online/offline and version of the card 2025-03-30 06:51:09 -07:00
Bastien Wirtz
234e063d2e feat(components): Register Generic component globally 2025-03-30 15:23:22 +02:00
dependabot[bot]
02ff6a2039 chore(deps-dev): bump vite from 6.1.1 to 6.1.2
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.1.1 to 6.1.2.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v6.1.2/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.1.2/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-30 05:21:59 -07:00
Cees Bos
e1fdb0069b Fix issues in Linkding integration revealed by code check in the pipeline 2025-03-20 18:27:59 +01:00
Mathieu Bélanger
37716c8d42 Fix typos in config-schema.json 2025-03-20 01:14:51 -07:00
Cees Bos
50acb9957e Add Linkding support 2025-03-19 22:25:34 +01:00
Bastien Wirtz
76e6c70696 release 25.03.3 2025-03-17 21:54:56 +01:00
Bastien Wirtz
c812bda08f fix(docker): disable log for healthcheck requests 2025-03-17 13:50:35 -07:00
Cees Bos
1b607b6357 Update schema based on review 2025-03-08 05:37:36 -08:00
Cees Bos
c546fc1605 Add YAML config schema for auto complete support 2025-03-08 05:37:36 -08:00
Bastien Wirtz
7dfb3b8faf release 25.03.2 2025-03-04 21:27:53 +01:00
Bastien Wirtz
11934c3995 fix: hide overflow to avoid scroll bars in cards #885 2025-03-04 21:24:20 +01:00
Bastien Wirtz
60a45191b9 Release 25.03.1 2025-03-01 09:56:26 +01:00
Bastien Wirtz
4bd449e036 fix(navbar): Adjust icon spacing #857 2025-03-01 09:54:26 +01:00
Molham Al Nasr
a8f7d09bd4 fix(Dockerfile): add default value for ARG VERSION_TAG to prevent build errors
Added a default value `latest` to the ARG VERSION_TAG in the Dockerfile.
This ensures that the build does not fail when the VERSION_TAG argument
is not explicitly provided, making manual builds more reliable.

Fixes #881
2025-03-01 00:27:32 -08:00
Molham Al Nasr
2a0387f90e fix(Dockerfile): ensure VERSION_TAG is correctly passed as a build argument
The VERSION_TAG label was not correctly set in the built image due to
a missing ARG definition in the Dockerfile. This commit adds ARG VERSION_TAG
so that the build argument can be properly passed and used in image labels.

Fixes #881
2025-03-01 00:27:32 -08:00
Bastien Wirtz
12a004a9e1 chore: Set official config 2025-03-01 09:25:49 +01:00
Bastien Wirtz
20fb0c2254 fix(cards): Avoid lowercase letters cut off #794 2025-03-01 09:24:44 +01:00
Bastien Wirtz
13fb05696a feat(logs): get lighthttpd accesslog in docker logs 2025-02-28 19:21:32 +01:00
Bastien Wirtz
31f7cfa09f fix(search): Allow usage of the hotkey in the text 2025-02-27 04:55:30 -08:00
tanasegabriel
36d753df58 Fix quicklinks conditional icon rendering 2025-02-27 04:31:25 -08:00
Bastien Wirtz
1c09714c43 fix: make sure healthcheck dont use a proxy #394 2025-02-25 21:55:09 +01:00
Bastien Wirtz
bc0ceee894 Release 25.02.2 2025-02-25 21:31:34 +01:00
Matt Bentley
5a1697a5e6 Added interval to update status for the *arrs & Tautulli
Signed-off-by: Matt Bentley <mbentley@mbentley.net>
2025-02-25 12:25:17 -08:00
Molham Al Nasr
b3e67b5af5 Fixes #858: fix image.ref.name and image.url 2025-02-25 12:22:17 -08:00
Molham Al Nasr
cb8a1e992c Fixes #858: typo 2025-02-25 12:22:17 -08:00
Molham Al Nasr
f0bcd50503 Fixes #858: add conventional labels to the docker image and pass the github.ref_name as VERSION_TAG build_args in docker/build-push-action pipeline 2025-02-25 12:22:17 -08:00
Adam Monsen
1d680ab2db disable cache for Docuseal fetch
I noticed my Docuseal card was showing "online" after I'd shut it down.

Might be from one of these? https://github.com/search?q=repo%3Adocusealco%2Fdocuseal%20cache%20control&type=code

and/or because /version is just a file?

Either way, this fixes it from the Homer side.
2025-02-23 05:30:22 -08:00
Bastien Wirtz
474dc3ae8c chore(lint): apply config update 2025-02-23 14:28:41 +01:00
Bastien Wirtz
1cc724c800 chore: dependency updates 2025-02-23 14:28:41 +01:00
tanasegabriel
986954953b Snappier container healthchecks 2025-02-22 06:49:56 -08:00
Bastien Wirtz
6031d57ccb Release 25.02.1 2025-02-02 15:48:14 +01:00
Bastien Wirtz
3468b9d795 feat(cards): add multi link support 2025-02-02 06:39:28 -08:00
Max Netyaga
45acac744a updated doc 2025-02-02 05:44:18 -08:00
Max Netyaga
7490a1948f added updateInterval to Ping smartcard 2025-02-02 05:44:18 -08:00
dependabot[bot]
741e7f5a1f chore(deps-dev): bump vite from 6.0.5 to 6.0.9
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 6.0.5 to 6.0.9.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v6.0.9/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-02-02 05:41:19 -08:00
Victor Löfgren
a421a6ba12 Fix "Get Started" link in demo files 2025-01-05 06:25:50 -08:00
Victor Löfgren
03cf1c2c42 Fix "Get Started" link 2025-01-05 06:25:50 -08:00
Adam Monsen
66d4cc36b5 add Docuseal smart card
Fixes #847

Requires #850
2025-01-05 06:24:11 -08:00
Adam Monsen
aba3b5eed7 force response to text if not json
Without that I'm getting Version "[object Response]" on the smart card
from an api that returns text/plain.

See #847 - add Docuseal (requires text/plain support or hack)
2025-01-05 06:24:11 -08:00
Bastien Wirtz
2f1cbe7328 chore: Update dependencies 2024-12-22 09:53:47 +01:00
dependabot[bot]
72a5daf705 chore(deps): bump nanoid from 3.3.7 to 3.3.8
Bumps [nanoid](https://github.com/ai/nanoid) from 3.3.7 to 3.3.8.
- [Release notes](https://github.com/ai/nanoid/releases)
- [Changelog](https://github.com/ai/nanoid/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ai/nanoid/compare/3.3.7...3.3.8)

---
updated-dependencies:
- dependency-name: nanoid
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-12-22 00:39:37 -08:00
João Antunes
52ac793d45 Update customservices.md
Improve README for Mealie to be in line with other examples. A added some breadcrums on where to find the Mealie API page.
2024-12-22 00:39:16 -08:00
kubistika
db535442d6 Fix link for smart cards in demo app 2024-12-22 00:37:47 -08:00
Bastien Wirtz
47a7831764 Release 24.12.1 2024-12-02 16:07:19 +01:00
Bastien Wirtz
fa4c10c9a4 fix: Peanut mock data folder & doc typos 2024-12-01 14:55:10 +01:00
Adam Monsen
103168544d
add Gitea subtitle fallback and dummy data (#839)
I omitted most of the 0.5MiB Gitea/Foregejo API reponse for brevity.
2024-12-01 05:29:57 -08:00
Adam Monsen
f150c6c037
Add Traefik, Wallabag, Olivetin (#838)
* Add Traefik, Wallabag, Olivetin

* allow subtitle override

* add dummy data for olivetin, traefik, wallabag
2024-12-01 05:29:36 -08:00
Bastien Wirtz
7909bd1054 doc(smartcards): fix incomplete sentence. Fix #834 2024-11-24 09:31:35 +01:00
Bastien Wirtz
97bb74a114 doc(docker): remove deprecated docker compose section fix #836 2024-11-24 09:30:09 +01:00
Bastien Wirtz
cbb7977170 release v24.11.5 2024-11-23 16:02:10 +01:00
Bastien Wirtz
e58637d935
Glances service improvements (#837)
* feat: add a basic glances service widget

* feat: auto update for glances widget

* feat(services/glances): multiple metric support

* Update dependencies

---------

Co-authored-by: Manuel Quarneti <manuelquarneti@protonmail.com>
2024-11-23 07:00:01 -08:00
Adam Monsen
496f9083b2 Add Gitea custom service 2024-11-23 02:03:10 -08:00
SergeiTarkhanov
a8629ba80c Fix param for demo showcase 2024-11-23 02:01:50 -08:00
Bastien Wirtz
f431551744 demo: update smart card showcase 2024-11-18 22:18:52 +01:00
Bastien Wirtz
8d0bc456c1 doc(smart-cards): sort service list alphabetically 2024-11-18 22:17:46 +01:00
SergeiTarkhanov
fd919076df Dummy data for peanut service 2024-11-18 12:39:54 -08:00
SergeiTarkhanov
1e7542b632 Add PeaNUT custom service 2024-11-18 12:39:54 -08:00
Bastien Wirtz
721a8c2e66 feat(ping): support for custom http success codes. Fix #425 2024-11-18 14:01:37 +01:00
dependabot[bot]
9b0e3f595e chore(deps): bump cross-spawn from 7.0.3 to 7.0.5
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.5.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.5)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 04:19:45 -08:00
dependabot[bot]
ce9a09ff81 chore(deps): bump @eslint/plugin-kit from 0.2.0 to 0.2.3
Bumps [@eslint/plugin-kit](https://github.com/eslint/rewrite) from 0.2.0 to 0.2.3.
- [Release notes](https://github.com/eslint/rewrite/releases)
- [Changelog](https://github.com/eslint/rewrite/blob/main/release-please-config.json)
- [Commits](https://github.com/eslint/rewrite/compare/core-v0.2.0...plugin-kit-v0.2.3)

---
updated-dependencies:
- dependency-name: "@eslint/plugin-kit"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-11-18 04:18:35 -08:00
Bastien Wirtz
0b95836c64 doc: Add demo link 2024-11-14 09:41:05 +01:00
Bastien Wirtz
92d3d6e922 Release 24.11.4 2024-11-14 08:58:14 +01:00
Sergey
80e458fcb4 Update docs/customservices.md
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2024-11-13 23:57:47 -08:00
SergeiTarkhanov
268ac05821 Update docs 2024-11-13 23:57:47 -08:00
SergeiTarkhanov
b8ec139112 Timeout for Ping service 2024-11-13 23:57:47 -08:00
Bastien Wirtz
a1c6cb7681 doc: remove outdated screenshot 2024-11-13 23:13:45 +01:00
Bastien Wirtz
900bf058da chore: lint the style files 2024-11-13 23:00:07 +01:00
Bastien Wirtz
3419a4b6d6 fix(style): remove duplicated styles 2024-11-13 22:53:34 +01:00
SergeiTarkhanov
b6d9749dea Tag use --highlight-secondary background if not set bulma classes 2024-11-13 13:13:46 -08:00
Shirsendu Das
29a9cd3ea5 added the missing leading slash.md 2024-11-13 04:35:01 -08:00
Bastien Wirtz
3396257528 feat(docker): skip assets install on permission error 2024-11-13 12:12:24 +01:00
Bastien Wirtz
a40acb2fee lint fix 2024-11-13 12:12:15 +01:00
Bastien Wirtz
012f472aa7 doc: minor improvements 2024-11-13 12:07:23 +01:00
Bastien Wirtz
d5921d939b feat(container): support timezone configuration 2024-11-12 18:06:58 +01:00
Bastien Wirtz
b7ebdcaec8 ops: Release 24.11.3 2024-11-11 17:21:39 +01:00
SergeiTarkhanov
88d675d7f5 Scrutiny custom service 2024-11-11 08:20:28 -08:00
Bastien Wirtz
794ac79f52 ops: release 24.11.2 2024-11-11 17:18:34 +01:00
Bastien Wirtz
37091fa3d9 chore(docker): small cleanup 2024-11-11 17:17:11 +01:00
Bastien Wirtz
a666d7aa93 feat(smartcard): Simplify ping card 2024-11-08 18:08:14 +01:00
Bastien Wirtz
f7cc9761e9 doc: add lemmy and dashboard icons links, cleanup 2024-11-06 14:04:34 +01:00
Bastien Wirtz
aa8be8e576 release version bump 2024-11-04 20:49:06 +01:00
SergeiTarkhanov
546db41ab7 Fix immich widget after breaking changes update 2024-11-04 11:45:26 -08:00
René Hansen
1ca9a4b0eb
Fixes mealie when meal plan is empty (#819) 2024-11-04 11:39:05 -08:00
Jian Qin
18360e223f
Display round-trip time on the subtitle of the custom service ping (#800)
* Show rtt on subtitle of custom service ping

* Display subtitle when showRtt is false and handle offline service RTT

- Ensure the subtitle is still displayed even if `showRtt` is set to false.
- When `showRtt` is true and the service is not online, display "N/A" instead of omitting the RTT value.
2024-11-04 10:04:19 +01:00
Bothari
1febbadfba
Improve warning and missing reports for Radarr connections (#809)
Improve warning and missing reports for Radarr connections
2024-11-02 07:44:01 -07:00
Rich Schumacher
779deedecd
feat: Add Gotify custom service component (#706)
This adds a new custom service component for Gotify, a system for
sending and receiving messages. The component will display the number of
messages outstanding as well as the overall system health.

Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2024-10-31 21:32:08 +01:00
Ronald Jerez
a2866e1714 Pass accept header when fetching the message via url 2024-10-30 05:47:01 -07:00
Bastien Wirtz
c7a6f54f35 doc: Avoid tarball install issue. fix #620 2024-10-30 13:40:54 +01:00
Bastien Wirtz
b168430fbf fix: empty / null headers issue 2024-10-27 14:40:43 +01:00
Hector Cuesta
95f1d94219 Add the option to set custom headers in the SW 2024-10-27 06:35:36 -07:00
Alex Fornuto
bbc88262ee Update README.md
Fixed ToC anchor link.
2024-10-27 02:13:40 -07:00
Bastien Wirtz
4c26a49922 release version bump 2024-10-26 21:19:56 +02:00
Bastien Wirtz
43678d09c1 fix: name collision in NextCloud service 2024-10-26 20:47:28 +02:00
Adam Monsen
58b718c2a9
Add Nextcloud custom service (#650)
Add Nextcloud custom service
2024-10-26 20:41:23 +02:00
thedroid
cd25756fd0
FreshRSS custom service. (#672)
Add FreshRSS custom service.
2024-10-26 16:48:03 +02:00
Bobby B
0e5106c42a fix: Update Mealie service component endpoints 2024-10-26 06:26:02 -07:00
Bastien Wirtz
c6571b48b4 doc: review documentation 2024-10-25 21:58:32 +02:00
Kaustubh Murumkar
ea12ee520b
Fix octoprint timestamp (#693)
update octoprint service with timestamp changes
2024-10-25 21:39:21 +02:00
Matheus Peviani Vellone
11cdb50ea5 doc: add tips and tricks to show latest picture from camera feed 2024-10-25 12:20:40 -07:00
Matheus Peviani Vellone
88585186f2 doc: update message.content docs 2024-10-25 12:20:40 -07:00
mattxcnm
2c33b54385 Update README.md for tarball install cmds
add "-d homer" so the unzip command puts files in the correct "~/homer" directory, which is used in the next step
2024-10-25 04:28:06 -07:00
Bastien Wirtz
842cf8ad2c feat(ci): remove debug flag 2024-10-17 10:05:08 +02:00
Bastien Wirtz
0d0df3d568 fix(ci) run build stage on build platform arch 2024-10-17 09:39:28 +02:00
Bastien Wirtz
08bc4f417d chore(lint): Eslint 9 update 2024-10-16 21:31:58 +02:00
Bastien Wirtz
56a5c0c581 fix dockerhub workflow 2024-10-16 21:28:30 +02:00
Bastien Wirtz
aac5885056 fix(ci): remove duplicate pnpm version 2024-10-16 20:59:07 +02:00
Bastien Wirtz
99697a6a07 chore: dependencies update 2024-10-16 14:08:13 +02:00
Bastien Wirtz
b760f04962 fix(ci): latest docker tag targets the latest tag
Until now, the latest was more a "dev" release, targeting the latest
changes in the main branch instead of the latest stable release.
2024-10-16 14:05:24 +02:00
royto
64629742f7 feat: add missing notif for lidarr 2024-07-16 04:48:04 -07:00
royto
f6b124767e feat: add missing notif for radarr 2024-07-16 04:48:04 -07:00
royto
4797047571 feat: add missing notif for sonarr 2024-07-16 04:48:04 -07:00
Felix Bartels
2389cac9b0 Update theming.md
Minor wording fixes
2024-07-16 00:30:43 -07:00
Bastien Wirtz
6c438298f2 fix(search): make keyboard shortcut works again 2024-07-15 13:55:32 +02:00
Bastien Wirtz
fe25fb03a8 fix(fonts): Remove lato reference 2024-06-30 10:11:01 +02:00
Bastien Wirtz
359f1ffb53 feat(ui): Rework theming system, add new theme. 2024-06-29 13:36:55 -07:00
Dan Simpson
2b83a38fc3
Fix up deploy previews (#749)
fix(ci): deploy previews

---------

Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2024-06-26 07:53:54 +02:00
Bastien Wirtz
4726d8dbc7 doc(demo): update welcome message. 2024-06-20 10:22:07 +02:00
Bastien Wirtz
8196cf71a4 doc(demo): Update demo links 2024-06-20 09:37:44 +02:00
Bastien Wirtz
5935a62aad doc(theming): Describe customization options 2024-06-07 11:56:00 +02:00
Bastien Wirtz
e23868c594 chore(lint): Apply on latest additions 2024-06-01 16:15:13 +02:00
TheWhale01
95fde896e0
Added custom service jellystat (#770)
Added custom service jellystat
2024-06-01 16:10:35 +02:00
Jérémy PLANCKEEL
e6adfd7bb7 fix: correct procedure to install chart 2024-05-22 23:45:47 -07:00
Jérémy PLANCKEEL
fbc20353ef fix: remove copy past error 2024-05-22 23:45:47 -07:00
Jérémy PLANCKEEL
204a9538c8 docs: update kubernetes installation with multiple solution 2024-05-22 23:45:47 -07:00
Bastien Wirtz
6ab50f11e2 Release 24.05.1 2024-05-22 09:28:23 +02:00
Emily Wotruba
765a24e7d0 updated documentation, logo no longer optional (if you want a logo) 2024-05-22 00:26:46 -07:00
Emily Wotruba
75d8afebe6 no longer manipulating props 2024-05-22 00:26:46 -07:00
Emily Wotruba
5872d5fa72 removing unused data 2024-05-22 00:26:46 -07:00
Emily Wotruba
7f750127b3 changed display style of entity count 2024-05-22 00:26:46 -07:00
Emily Wotruba
8f7752a0b8 wait for fetchServerStatus before calling fetchServerStats 2024-05-22 00:26:46 -07:00
Emily Wotruba
ce4d3a3dbe returning fetch to make fetchServerStatus awaitable
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2024-05-22 00:26:46 -07:00
Emily Wotruba
c53c3957d5 added documentation for the home assistant custom component 2024-05-22 00:26:46 -07:00
Emily Wotruba
efc9b1e0ad added custom component for home assistant 2024-05-22 00:26:46 -07:00
SenorSmartyPants
04c178a51b Mylar Custom Service
Styled like Arr apps. Displays upcoming and wanted counts
2024-05-21 04:27:46 -07:00
Bastien Wirtz
3583c6a420 fix(lint): downgrade eslint, requires more work 2024-05-21 13:23:05 +02:00
Bastien Wirtz
dd820b599f dependencies update 2024-05-01 22:04:38 +02:00
Florian Grabmeier
76224d85ec Fix Pi-hole logo URL
Signed-off-by: Florian Grabmeier <flo.grabmeier@gmail.com>
2024-05-01 21:34:51 +02:00
Bastien Wirtz
9cd822b5c4 Release 24.04.1 2024-04-22 20:46:45 +02:00
Bastien Wirtz
164357c5f9 fix(ci) try building using ubuntu 18 2024-04-22 20:30:37 +02:00
Bastien Wirtz
0740fb31b5 Switch package manager to pnpm 2024-04-22 19:55:25 +02:00
Bastien Wirtz
8326eba25f Debug package install 2024-04-22 14:44:21 +02:00
Andrea Pierangeli
9c537fb926 Add OpenHAB custom service 2024-03-11 02:05:55 -07:00
Bastien Wirtz
bcebb3e67e Fix CI build 2024-03-11 10:00:37 +01:00
Eric McDonald
5f5a508b6e fix: improve grammar of offline message 2024-03-10 06:42:25 -07:00
Alceatraz Warprays
b11faee878 Update README.md
typo
2024-03-10 06:39:59 -07:00
Emlin Charly
49d4d742a2 Update customservices.md with Readarr link 2024-03-10 06:37:55 -07:00
Bastien Wirtz
a6cbd1c22d Drop armv6 support
armv6 build seems broken, bloking all other arch release. Disabling it,
at least for now.
2024-03-10 14:30:57 +01:00
Bastien Wirtz
7e8cc22b0c chore: lint 2024-03-10 14:19:43 +01:00
Bastien Wirtz
f2f03eb3cc make sure to use the latest node LTS 2024-03-10 14:15:49 +01:00
Bastien Wirtz
c0e7103c67 chore: dependency update 2024-03-10 14:06:11 +01:00
Bastien Wirtz
dad372bbe6 Update build build actions 2024-03-08 10:27:34 +01:00
Ctrl_Plus
4d30ab4c4a Update customservices.md
Added version number requirements to Immich
2024-02-23 00:59:40 -08:00
Ctrl_Plus
ff136b6a2c Update Immich.vue
api changes in immich v1.85.0
2024-02-23 00:59:40 -08:00
Bastien Wirtz
de4b7e6124 Linting update 2023-10-21 14:24:05 +02:00
vlorian
ecf664d19b Handling empty groups in search function 2023-10-21 05:18:47 -07:00
dependabot[bot]
7569ec3d2c Bump @babel/traverse from 7.18.6 to 7.23.2
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.18.6 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-21 05:16:35 -07:00
Thomas Anderson
9b77b47022 fix: reverse IPV6_DISABLE logic
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2023-10-21 05:16:20 -07:00
thomas
c8470d1e75 fix(docs): only accept 1 for IPV6_DISABLE 2023-10-21 05:16:20 -07:00
thomas
5b11259dd7 fix: rename ipv6.sh -> lighttpd-ipv6.sh 2023-10-21 05:16:20 -07:00
Thomas Anderson
74f6879ed0 fix: use double brackets instead of test
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2023-10-21 05:16:20 -07:00
thomas
ce2d3e945a fix: allow disabling IPv6 2023-10-21 05:16:20 -07:00
royto
a3c5b4ac9d fix: fix search on page load
Fix #611
2023-10-16 12:57:38 -07:00
dependabot[bot]
86f3fbbfaf Bump postcss from 8.4.14 to 8.4.31
Bumps [postcss](https://github.com/postcss/postcss) from 8.4.14 to 8.4.31.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.4.14...8.4.31)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-16 12:54:57 -07:00
JenswBE
f160caecfa Fix YAML anchors
Fixes https://github.com/bastienwirtz/homer/issues/559
Based on https://eemeli.org/yaml/#schema-options
2023-10-16 12:54:40 -07:00
Bastien Wirtz
504efe01cb Dependencies update 2023-09-25 22:15:48 +02:00
Lindemberg Barbosa
cce42cc6d1 doc: better description 2023-09-25 20:10:17 +02:00
Lindemberg Barbosa
45626232f3 doc: update port to match the speedtest-tracker compose example 2023-09-25 20:10:17 +02:00
Lindemberg Barbosa
6f0193fb32 doc: documentation enchancement for SpeedtestTracker service 2023-09-25 20:10:17 +02:00
Mikkel Rindholt
2eb808385b Update link to Portainer apikey guide
The old link was dead, so I found the new location for the guide
2023-09-25 20:08:29 +02:00
royto
018344d911 PR review: use API const and lint 2023-08-08 12:48:44 -07:00
royto
16d3f4f53a feat: add Readarr custom service 2023-08-08 12:48:44 -07:00
thedroid
f682a84e9f
PiAlert custom service (#674)
Add Pi Alert custom service
2023-08-06 21:48:52 +02:00
thedroid
b1fa1d585a Add dummy data 2023-08-06 12:45:15 -07:00
thedroid
b8e3f74e59 Add Immich custom service 2023-08-06 12:45:15 -07:00
dependabot[bot]
ce9d164dba Bump semver from 6.3.0 to 6.3.1
Bumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.
- [Release notes](https://github.com/npm/node-semver/releases)
- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)
- [Commits](https://github.com/npm/node-semver/compare/v6.3.0...v6.3.1)

---
updated-dependencies:
- dependency-name: semver
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-07-30 22:29:33 +02:00
Bastien Wirtz
0a0da84332 Update dependencies 2023-07-30 22:03:54 +02:00
Gabe Cook
df903a2c04 Add GHCR Docker image mirror 2023-05-13 15:49:20 +02:00
Andrew Pearson
acd6a8911b Listen on IPv6 as well 2023-05-13 15:22:47 +02:00
Gabe Cook
6cfa1643b4 Toggle dark mode when prefers-color-scheme changes 2023-05-13 15:19:54 +02:00
LoV432
f0f9f0a017
Fix: don't stretch non-square logos (#640) 2023-05-02 09:28:57 +02:00
Zach Russell
6d2d9baf35
Fixed OctoPrint ‘text’ display when idle. (#607)
* Added moonraker support and temperature when idle

* removed config change

* Delete package-lock.json
2023-05-02 09:27:27 +02:00
dependabot[bot]
1707f5adad
Bump yaml from 2.1.3 to 2.2.2 (#636)
Bumps [yaml](https://github.com/eemeli/yaml) from 2.1.3 to 2.2.2.
- [Release notes](https://github.com/eemeli/yaml/releases)
- [Commits](https://github.com/eemeli/yaml/compare/v2.1.3...v2.2.2)

---
updated-dependencies:
- dependency-name: yaml
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-04-28 09:36:59 +02:00
Floren Munteanu
d362add383
Implement PiHole API token (#580)
Implement PiHole API token
2023-02-19 12:18:56 -08:00
Matt Bentley
dfde8ea89d
Added Tdarr service (#573)
* Added Tdarr service

Signed-off-by: Matt Bentley <mbentley@mbentley.net>

* Added dummy-data for Tdarr; remove trailing / for API endpoint

Signed-off-by: Matt Bentley <mbentley@mbentley.net>

---------

Signed-off-by: Matt Bentley <mbentley@mbentley.net>
2023-02-07 08:38:37 +01:00
dependabot[bot]
1c7451bc81
Bump json5 from 2.2.1 to 2.2.3 (#583)
Bumps [json5](https://github.com/json5/json5) from 2.2.1 to 2.2.3.
- [Release notes](https://github.com/json5/json5/releases)
- [Changelog](https://github.com/json5/json5/blob/main/CHANGELOG.md)
- [Commits](https://github.com/json5/json5/compare/v2.2.1...v2.2.3)

---
updated-dependencies:
- dependency-name: json5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-02-07 08:34:49 +01:00
Ivan Barsukov
0591208096
Minor doc fixes (#595) 2023-02-07 08:33:33 +01:00
Bastien Wirtz
b7cd8f9482 Add Helm installation instructions (#562) 2022-12-20 21:19:38 +01:00
Bastien Wirtz
49c2023b8e Avoid hidding all info when copy pasting the exemple config 2022-12-20 20:47:56 +01:00
Bastien Wirtz
53726ecc1a Fix typo in demo page (#574) 2022-12-20 20:27:13 +01:00
Bastien Wirtz
bd122e2700
Create FUNDING.yml 2022-12-20 19:56:33 +01:00
Bastien Wirtz
71759ad6fb
Update issue templates 2022-12-20 19:55:11 +01:00
Bastien Wirtz
bad762c000 Add missing data for proxmox demo 2022-12-07 22:48:38 +01:00
Bastien Wirtz
70f583c3e1
Octoprint service (#324) (#560)
Add Octoprint service.
2022-11-27 09:41:12 -08:00
Matt Bentley
98fe0a3939
Adds SABnzbd custom service; fixes #494 (#555)
* Adds SABnzbd custom service; fixes #494
2022-11-19 07:14:22 -08:00
Maxime Mouchet
f62972f659 Properly pass signals to lighttpd 2022-11-19 16:06:09 +01:00
csleal
a8292ef757 Update customservices.md 2022-11-15 10:27:20 +01:00
Sean McGrath
6868a0911b Add scope and start_url to PWA manifest
These URLs are relative, so given that manifest.json lives in assets/, these should point to the root of the site
2022-11-08 20:56:10 +01:00
Julien Roy
c9a6495186
What's up docker custom service (#444)
Add WUD
2022-11-05 14:44:25 -07:00
bchavez
d141a69a7d ConnectivityChecker: Bug Fix - Remove double // in aliveCheckUrl causing Invalid Redirect URL with CloudFlare Access. 2022-11-05 22:35:41 +01:00
Bastien Wirtz
beb5755747 Rework speedtesttracker based on the Generic component 2022-11-05 22:14:32 +01:00
Bernhard Großer
b5048fc353
Speedtesttracker integration (#262)
added SpeedtestTracker service
2022-11-05 07:32:56 -07:00
Bastien Wirtz
24b6dedbe1 Apply lint 2022-11-05 15:24:41 +01:00
Bastien Wirtz
d32f7f6467 Proxmox improvements 2022-11-05 15:21:18 +01:00
Bastien Wirtz
f72c0bc781 New Copy to clipboard custom service 2022-11-05 15:11:48 +01:00
Bastien Wirtz
bdad8933ff Apply lint fixes 2022-10-31 10:12:15 +01:00
lindely
51ba5ff503
Service for rTorrent. (#511)
Service for rTorrent.
2022-10-31 02:09:59 -07:00
tralce
7edcfe0705
Fixed the table in the Proxmox section (#534)
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2022-10-30 10:35:56 -07:00
Shagon94
cfd31b86b5
qBittorrent service (#540)
qBittorrent service
2022-10-30 10:32:51 -07:00
Bastien Wirtz
ac5f04f058 Shorter weather title 2022-10-30 15:13:59 +01:00
Bastien Wirtz
5bb84dcefb Fix openweather service 2022-10-30 14:48:45 +01:00
apivko
de814b9e04
Displaying the timezone hour near temprature for each location (#449)
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2022-10-30 06:28:58 -07:00
CleanMachine1
3ed40599e5
troubleshooting: add openweather service help (#471)
* troubleshooting: add openweather service help
2022-10-30 06:22:32 -07:00
Bastien Wirtz
d7fb8f5e3d Add support link to demo content. 2022-10-29 16:06:20 +02:00
Bastien Wirtz
7172b6f507 Update dependencies 2022-10-29 15:39:35 +02:00
Bastien Wirtz
4c9212c93e
Update README.md 2022-10-28 10:24:38 +02:00
Paul Bennett
52a136e0de Adding my custom theme for homer 2022-10-27 21:58:22 +02:00
Sylwester Wróblewski
956f38a5dc Fixed 'method' not defaulting to HEAD request in Ping functionality 2022-10-16 11:06:34 +02:00
Bastien Wirtz
0800e9ac3c Fix proxmox demo service data loading 2022-10-14 09:39:02 +02:00
Bastien Wirtz
81c90009b4 Refine demo content 2022-10-13 22:23:31 +02:00
luixal
494529f0a9 Adds proxmox data for demo. 2022-10-13 21:57:53 +02:00
luixal
96da0c7ce0 Fixes typo. 2022-10-13 21:51:06 +02:00
luixal
4fe179c533 Small refactor to remove one redundant line. 2022-10-13 21:51:06 +02:00
luixal
13069da195 Adds loading and errors icons/msgs. Adds docs. 2022-10-13 21:51:06 +02:00
Bastien Wirtz
0a03fcd9cd Docs for dummy data 2022-10-11 19:19:50 +02:00
Bastien Wirtz
73a2a4aa76 Fix pihole demo url 2022-10-11 14:53:35 +02:00
Bastien Wirtz
e6069776ce Improve demo content 2022-10-11 13:57:42 +02:00
luixal
e274807602 Adds total count for VMs. 2022-10-09 10:23:32 +02:00
luixal
10f4cca67a Adds custom service for Proxmox 2022-10-09 10:23:32 +02:00
csleal
fdf6d4284d Update customservices.md
"cicle" to circle
2022-10-08 11:54:16 +02:00
Isaac Suttell
84930a632b added more strict checking of http method to Ping service 2022-10-08 11:53:26 +02:00
Isaac Suttell
db28142374 updated Ping docs to include how to use new method property 2022-10-08 11:53:26 +02:00
Isaac Suttell
6c083d6a36 added support for Get method to Ping custom service 2022-10-08 11:53:26 +02:00
Bastien Wirtz
5418c6291a Fix UptimeKuma status message when all sites are down #503 2022-09-18 16:30:32 +02:00
Bastien Wirtz
ae1b04d1c4 Remove useless docker VOLUME instruction #509 2022-09-18 16:30:32 +02:00
Bastien Wirtz
77167e24ea
Merge pull request #504 from ostanislaw/main
Add blazing speed badge reflecting the "speed" of homer.
2022-09-06 08:54:06 +02:00
Stanislaw Ostrowski
e9faffbb1f Add blazing badge. Why? Because this is realing blazing fast dashboard. Similar to IlanCosman/tide Fish prompt. 2022-09-01 15:29:12 +02:00
Bastien Wirtz
34259e1e94 Additional page name as css class 2022-08-26 21:52:28 +02:00
Bastien Wirtz
18d9582d7b Update deps 2022-08-26 21:23:44 +02:00
Bastien Wirtz
ba5b98614b
Merge pull request #488 from bastienwirtz/dependabot/npm_and_yarn/terser-5.14.2
Bump terser from 5.14.1 to 5.14.2
2022-08-05 01:39:18 -07:00
Bastien Wirtz
204a7057e4
Merge pull request #493 from ChrHan/homer-internal-port-readme
Add `PORT` usage in Readme
2022-07-29 10:12:22 -07:00
ChrHan
38c1aa3a78
Add PORT usage in Readme
Add `PORT` usage in Readme for repointing internal port, as mentioned on https://github.com/bastienwirtz/homer/issues/489
2022-07-28 16:00:57 +07:00
Bastien Wirtz
9371c1537c Disable service worker navigation fallback (Fix #486) 2022-07-21 22:10:49 +02:00
Bastien Wirtz
b16b69951e Add armv6 support for docker. 2022-07-21 22:10:49 +02:00
dependabot[bot]
e68640002a
Bump terser from 5.14.1 to 5.14.2
Bumps [terser](https://github.com/terser/terser) from 5.14.1 to 5.14.2.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-21 07:25:08 +00:00
Bastien Wirtz
746ede73ff
Merge pull request #485 from Tooa/fix-healthchecks-service-name
fix: resolve typo in Healthchecks service name
2022-07-17 13:30:49 -07:00
toa
23990e8509 fix: resolve typo in Healthchecks service name
* refs #474
2022-07-16 09:56:24 +02:00
Bastien Wirtz
e4ec8a6aa3 Dedicated demo page config 2022-07-15 22:18:55 +02:00
Bastien Wirtz
f031ac440a Adding theming documentation 2022-07-14 14:26:46 +02:00
Bastien Wirtz
c11c45a661
Merge pull request #482 from bastienwirtz/vuejs-3
Vuejs 3
2022-07-13 13:46:03 -07:00
Bastien Wirtz
0eca982f8b
Merge branch 'main' into vuejs-3 2022-07-12 13:28:07 -07:00
Bastien Wirtz
a46bede230 Small fixes 2022-07-12 22:26:45 +02:00
Bastien Wirtz
eb03092286 Fix theming issue & subfolder hosting 2022-07-12 14:07:10 +02:00
Bastien Wirtz
9582b1871a Fix search widget 2022-07-11 22:07:48 +02:00
Bastien Wirtz
ce391840e5 Documentation update 2022-07-11 22:07:15 +02:00
Bastien Wirtz
5609315fe7 Simplify index & fix logo path 2022-07-11 21:00:01 +02:00
Bastien Wirtz
4b639b1c10 Uniform workflow yaml style 2022-07-11 20:58:57 +02:00
Bastien Wirtz
d57821b5fa
Merge pull request #475 from Tooa/add-healthchecks-custom-service
feat: add custom service Healthchecks
2022-07-05 13:37:15 -07:00
Bastien Wirtz
2f1aff4dc5 Fix icons path 2022-07-04 22:17:41 +02:00
Bastien Wirtz
73d52dbd38 Add missing icons 2022-07-03 22:43:01 +02:00
Bastien Wirtz
5890d41932 Missing eof 2022-07-03 22:09:14 +02:00
Bastien Wirtz
59994bfee8 Fix lint issues 2022-07-03 21:59:57 +02:00
Bastien Wirtz
b4207f2782 new PWA implementation 2022-07-03 21:40:47 +02:00
Bastien Wirtz
c80854cb2d Make connectivity check work with vitejs dev server
Head requests on directory path end up in 404
2022-07-02 21:18:29 +02:00
Bastien Wirtz
cbbed6346a Migrate to VueJS 3 2022-07-02 21:16:41 +02:00
Bastien Wirtz
95c589ba71 Vue-cli update 2022-07-02 14:51:08 +02:00
Bastien Wirtz
263be7806c Prevent webserver restart on clock jump 2022-07-02 14:29:34 +02:00
Bastien Wirtz
bb4ccfb6c7
Merge pull request #472 from bastienwirtz/dependabot/npm_and_yarn/shell-quote-1.7.3
Bump shell-quote from 1.7.2 to 1.7.3
2022-07-02 05:07:20 -07:00
Bastien Wirtz
9e57f9bd1d
Merge pull request #479 from ngonkalves/patch-1
Fix wrong config.yml path
2022-07-02 05:06:07 -07:00
Bastien Wirtz
b5bf977402 Adding permissions configuration information. 2022-06-29 23:02:10 +02:00
Nuno Goncalves
71d929a55a
Fix wrong config.yml path
Path to config.yml when checking for existing configuration was wrong and it will never be found
2022-06-29 10:58:05 +01:00
toa
1b9a3f1975 feat: add custom service Healthchecks
* refs #474
2022-06-25 15:34:25 +02:00
dependabot[bot]
7315b9e28c
Bump shell-quote from 1.7.2 to 1.7.3
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.7.2 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/v1.7.2...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 03:33:16 +00:00
Bastien Wirtz
a01c40d4b3 fix repository name 2022-06-12 21:46:11 +02:00
Bastien Wirtz
a43fe354ec Simplified & updated CI/CD 2022-06-12 16:15:54 +02:00
Bastien Wirtz
1327cc0ab0 Configuring automatically generated release notes 2022-06-06 21:45:10 +02:00
Bastien Wirtz
10f6f123e8 Lint run 2022-06-05 21:50:28 +02:00
Bastien Wirtz
e03e759285
Merge pull request #462 from bastienwirtz/dependabot/npm_and_yarn/eventsource-1.1.1
Bump eventsource from 1.1.0 to 1.1.1
2022-06-04 09:07:36 +02:00
Bastien Wirtz
2b48d1c057
Merge pull request #448 from bemble/main
feat(pwa): enhance connectivity checks
2022-06-04 09:07:15 +02:00
dependabot[bot]
fb668b6a3c
Bump eventsource from 1.1.0 to 1.1.1
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 17:08:51 +00:00
Pierre
95249e1125 doc(auth): add auth proxy documentation 2022-05-30 17:04:41 +02:00
Pierre
132e9a0df5 feat(auth): do not handle redirection in getConfig
It will be handled by connectivity checker
2022-05-30 17:04:21 +02:00
Pierre
f64278d41d feat(connectivity): change query parameter to change connectivity
Always use timestamp as query parameter instead of alive
2022-05-30 17:03:28 +02:00
Bastien Wirtz
95d73348e5 Updates 2022-05-29 09:46:05 +02:00
Bastien Wirtz
d4001281d9
Merge pull request #451 from GRMrGecko/main
Add support for search keywords to solve issue #372
2022-05-24 11:10:48 +02:00
Mr. Gecko
7f4130fd04
Update docs/configuration.md
Add comment to describe keywords

Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2022-05-23 16:58:53 -05:00
Bastien Wirtz
889cdc0fcc
Merge pull request #454 from ericperko/jellyfin-docs
Emby service also supports Jellyfin
2022-05-23 22:00:01 +02:00
Eric Perko
bf6b543bfb Emby service also supports Jellyfin 2022-05-21 22:22:17 -04:00
Pierre
4353f5e036 feat(auth): handle unauthorized request in connectivity
Reload page without cache if 401 and 403 status in response
2022-05-16 14:52:46 +02:00
James Coleman
9506ed53c8 Add support for search keywords to solve issue #372 2022-05-12 17:30:24 -05:00
Pierre
98b460d6fe fix(auth): add timestamp in URL to prevent infinite redirection loop 2022-05-10 09:46:42 +02:00
Pierre
bf2fcc6641 feat(pwa): enhance connectivity checks
Also add support to auth proxy such as Authelia
2022-05-09 23:47:05 +02:00
Bastien Wirtz
2ac75c0534
Merge pull request #443 from therumbler/patch-1
Update README.md
2022-05-03 22:07:42 +02:00
Benjamin Rumble
766efb1a19
Update README.md
exemple -> example
2022-05-03 13:00:49 -04:00
Bastien Wirtz
cab7bfd15e Apply lastest update to arm dockerfile 2022-04-30 15:58:04 +02:00
Bastien Wirtz
7e48e099aa
Merge pull request #421 from bastienwirtz/docker-rework
Docker rework
2022-04-30 15:42:31 +02:00
Bastien Wirtz
4f56c2c11b Handle 404 error on config file. 2022-04-30 15:39:36 +02:00
Bastien Wirtz
049f85221e Simplify the container starting process to allow it to run with a
unprivileged user
2022-04-30 15:39:36 +02:00
Bastien Wirtz
cd75da69f9 Alias subfolder hosting 2022-04-30 10:46:00 +02:00
Kirmy
b6b31e440c Replaced darkhttpd with lighttpd 2022-04-30 10:46:00 +02:00
Bernhard Großer
caf5fae8a8 Added feature for subfolder hosting
By setting the SUBFOLDER env var, you can host Homer in a subfolder behind a reverse proxy.
2022-04-30 10:46:00 +02:00
Evan Steinkerchner
af0a6e89c9 Added Tautulli service to ToC 2022-04-29 14:51:20 -04:00
Evan Steinkerchner
9bb51bb244 Fixed prettier warning 2022-04-29 14:21:42 -04:00
Evan Steinkerchner
e6c106eb72
Added Tautulli service (#439) 2022-04-29 14:18:59 -04:00
Evan Steinkerchner
6e4410d8f1 Change main-section margin-bottom to padding-bottom to compensate for footer 2022-04-28 17:50:56 -04:00
Evan Steinkerchner
cc0bc909da Small formatting fix 2022-04-28 17:13:37 -04:00
Evan Steinkerchner
4d35b1fdcc Fixed issue where v-for keys could clash if two groups had the same name 2022-04-28 17:07:52 -04:00
dependabot[bot]
2c79b4f0f6
Bump async from 2.6.3 to 2.6.4 (#433)
Bumps [async](https://github.com/caolan/async) from 2.6.3 to 2.6.4.
- [Release notes](https://github.com/caolan/async/releases)
- [Changelog](https://github.com/caolan/async/blob/v2.6.4/CHANGELOG.md)
- [Commits](https://github.com/caolan/async/compare/v2.6.3...v2.6.4)

---
updated-dependencies:
- dependency-name: async
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-04-26 18:22:37 -04:00
Evan Steinkerchner
b2bf3901e7 Update fontawesome from 5.15.4 to 6.1.1, fixes #432 2022-04-26 18:19:36 -04:00
Evan Steinkerchner
f483f16561 Add Uptime Kuma service to ToC 2022-04-22 12:32:38 -04:00
Adyanth H
847d1ba3e8
Add UptimeKuma Service component (#414)
*  Add UptimeKuma Service component

* 📝 Add custom services documentation

* Change await to fetch and use new API

*  Tri State logic from Uptime Kuma

* 📝 Add and lint documentation

* Remove erroneous logging

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Remove CORS warning

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Correct error level

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Correct error level

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Prevent caching of requests

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Prevent caching of requests

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>

* Undo unrelated changes

Co-authored-by: Evan Steinkerchner <esteinkerchner@gmail.com>
2022-04-20 08:43:55 -04:00
Bastien Wirtz
9c370d3c5e
Merge pull request #321 from Darkham42/feature/adguard-home-customservices-doc
doc: add doc for AdGuard Home
2022-04-07 22:33:58 +02:00
Bastien Wirtz
7341d7634b
Merge branch 'main' into feature/adguard-home-customservices-doc 2022-04-07 22:33:20 +02:00
Darkham
b2a4140054
Improve with @bastienwirtz comments 2022-04-07 22:06:26 +02:00
Bastien Wirtz
9e1e82b0f3
Merge pull request #402 from Zareix/feature/portainer-environments
Portainer service - Select environments
2022-04-07 21:45:32 +02:00
Bastien Wirtz
000a46ee88
Merge pull request #410 from espilioto/main
Emby integration
2022-04-07 21:27:37 +02:00
SouLSLayeR
1275a8cce5
Update src/components/services/Emby.vue
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2022-04-01 00:07:02 +03:00
unknown
cd1fc28f51 Removed await from api call 2022-03-31 23:55:32 +03:00
unknown
5c42d50d47 No authentication required for public endpoint 2022-03-31 23:54:26 +03:00
Bastien Wirtz
31027f4791
Merge pull request #409 from bastienwirtz/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-03-31 21:59:47 +02:00
unknown
abfe72b9cf Fixed yarn lint errors 2022-03-29 11:39:15 +03:00
SouLSLayeR
6dc8fa2026
Update customservices.md 2022-03-28 20:42:06 +03:00
SouLSLayeR
345dd6c194
Update customservices.md 2022-03-28 20:41:19 +03:00
unknown
585844394d Initial Emby service commit 2022-03-28 20:00:17 +03:00
dependabot[bot]
a25f317bee
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-26 19:46:32 +00:00
Little-Karl
775d0a8e86
FA note chages for new users (#404)
Update link to Font Awesome to reference v5 directly
2022-03-19 19:34:16 -04:00
Evan Steinkerchner
6351bf973c
Merge pull request #401 from Zareix/fix/portainer-service
Portainer service - Fix for down endpoints
2022-03-19 12:58:34 -04:00
Raphaël Catarino
4e953d7c81 prettier 2022-03-19 14:12:30 +01:00
Raphaël Catarino
e2ebf9973b select environments 2022-03-19 13:52:41 +01:00
Raphaël Catarino
a7cbcc7700 fix if endpoint not up 2022-03-19 12:59:05 +01:00
Evan Steinkerchner
049610bc91
Merge pull request #311 from Aryess/main
Fix #121 - Change default theme and layout from config
2022-03-13 15:00:09 -04:00
Bastien Wirtz
f398006935 Add a get started link when no configuration is found 2022-03-11 22:47:26 +01:00
Bastien Wirtz
db2a2af3a4
Merge pull request #393 from jamesmacwhite/ping-endpoint-urls
Check if path has data before adding a trailing slash (/)
2022-03-06 22:30:10 +01:00
Bastien Wirtz
2ccadd578e
Merge pull request #389 from bastienwirtz/dependabot/npm_and_yarn/url-parse-1.5.10
Bump url-parse from 1.5.7 to 1.5.10
2022-03-06 22:23:43 +01:00
Bastien Wirtz
120ee25bf5
Merge pull request #391 from Roundaround/portainer
Added Portainer custom service
2022-03-06 22:23:34 +01:00
James White
1340a8e6d0 Check if path has data before adding / 2022-03-06 20:04:16 +00:00
Evan Steinkerchner
edd2c9ce2d Removed number fudging used for testing 2022-03-01 21:05:14 -05:00
Evan Steinkerchner
a1a70d4a3c Added Portainer custom service 2022-03-01 20:55:45 -05:00
dependabot[bot]
1acdbe4920
Bump url-parse from 1.5.7 to 1.5.10
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.7 to 1.5.10.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.7...1.5.10)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-28 04:27:15 +00:00
Bastien Wirtz
ba2c7c5c57
Merge pull request #385 from saschabrockel/patch-1
Fix typos in troubleshooting
2022-02-23 22:09:34 +01:00
Sascha Brockel
e4b077843c
Fix typos in troubleshooting 2022-02-21 22:04:51 +01:00
Bastien Wirtz
5cd802d157
Merge pull request #380 from FinalDoom/main
Change Radarr/Sonarr v3 to use totalRecords
2022-02-19 09:10:19 +01:00
Bastien Wirtz
4a526f6e7f
Merge pull request #371 from Wurzelmann/patch-2
fixed typos: "additionnal" -> "additional"
2022-02-19 09:08:40 +01:00
Bastien Wirtz
2c52f45048
Merge pull request #369 from Wurzelmann/patch-1
fixed typo: "additionnal" -> "additional"
2022-02-19 09:06:35 +01:00
Bastien Wirtz
7e81828b34
Merge pull request #377 from bastienwirtz/dependabot/npm_and_yarn/follow-redirects-1.14.8
Bump follow-redirects from 1.14.7 to 1.14.8
2022-02-19 09:04:15 +01:00
Bastien Wirtz
78d0fc5f1b
Merge pull request #383 from bastienwirtz/dependabot/npm_and_yarn/url-parse-1.5.7
Bump url-parse from 1.5.3 to 1.5.7
2022-02-19 09:01:26 +01:00
dependabot[bot]
dabcc0bae1
Bump url-parse from 1.5.3 to 1.5.7
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.7.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.7)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-19 02:57:57 +00:00
FinalDoom
c6ec28f1c5 Change Radarr/Sonarr v3 to use totalRecords as counting paged records is
wrong number
2022-02-18 06:39:27 -07:00
dependabot[bot]
9bfa95963d
Bump follow-redirects from 1.14.7 to 1.14.8
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.7 to 1.14.8.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.7...v1.14.8)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-02-15 13:19:33 +00:00
Wurzelmann
8b9ec8465f
fixed typos: "Additionnal" -> "Additional"
Fixed all occurrences of typo "Additionnal" (including file name)
2022-02-11 11:44:32 +01:00
Bastien Wirtz
893690cf95 Lint fixes 2022-02-10 22:07:00 +01:00
Bastien Wirtz
dec7e466b9
Merge pull request #365 from nthduy-deevotech/fix/sonarr-radarr-api
Support for Radarr, Sonarr V3 API
2022-02-10 21:52:05 +01:00
Bastien Wirtz
096c7eda48
Merge branch 'main' into fix/sonarr-radarr-api 2022-02-10 21:50:53 +01:00
Bastien Wirtz
d92444ec19
Merge pull request #353 from spaceneb/patch-1
Fix Possible Typo (Heath -> Health)
2022-02-10 21:45:19 +01:00
Bastien Wirtz
5fdf790e2c
Merge pull request #364 from Zareix/feature/add-prowlarr
Added Prowlarr custom services
2022-02-10 21:43:58 +01:00
Bastien Wirtz
5afd21a84c
Merge pull request #354 from bastienwirtz/dependabot/npm_and_yarn/follow-redirects-1.14.7
Bump follow-redirects from 1.14.1 to 1.14.7
2022-02-10 21:38:00 +01:00
Wurzelmann
51829a85c4
fixed typo: "additionnal" -> "additional"
Fixed all occurrences of a typo (additionnal).
2022-02-05 20:50:46 +01:00
Duy NGUYEN
6c8f9f1c5b Fix radarr legacy api call 2022-02-01 23:01:09 +01:00
Duy NGUYEN
f7f4ebdf66 Parse new V3 api response 2022-02-01 18:32:25 +01:00
Duy NGUYEN
8ede30411e Radarr and Sonarr V3 api support optional 2022-02-01 17:05:23 +01:00
Duy NGUYEN
cb154a6818 Update Sonarr and Radarr API 2022-02-01 16:39:15 +01:00
Raphaël Catarino
50b3bddff1 Added Prowlarr doc 2022-01-31 13:14:40 +01:00
Raphaël Catarino
990606a38a Added Prowlarr custom service 2022-01-31 13:13:28 +01:00
dependabot[bot]
0aa343d744
Bump follow-redirects from 1.14.1 to 1.14.7
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.14.1 to 1.14.7.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.14.1...v1.14.7)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-14 10:47:08 +00:00
spaceneb
26dbed936a
Fix Possible Typo (Heath -> Health) 2022-01-14 00:45:26 -05:00
Bastien Wirtz
68b10120c9
Merge pull request #342 from b-t-k/patch-1
Typo: should have "s" in alias
2021-12-23 07:41:59 -08:00
Bastien Wirtz
9f14de32fe
Merge pull request #344 from michaelkrieger/patch-1
Warn about exposed apikeys
2021-12-22 07:34:07 -08:00
Michael Krieger
ad8efdc799
Warn about exposed apikeys 2021-12-20 16:11:15 -05:00
BTK
a9cdf57043
Typo: should have "s" in alias 2021-12-15 12:58:56 -07:00
Bastien Wirtz
8283b8da5a Make Lidaar component use the Generic base component 2021-12-13 21:07:30 +01:00
Bastien Wirtz
b1c8586441
Merge pull request #329 from Panzer1119/main
Add Lidarr service
2021-12-13 11:54:04 -08:00
Bastien Wirtz
9c77651692 Last batch of custom services refacto. 2021-12-12 22:20:10 +01:00
Bastien Wirtz
b4a2db6e37 Services refactoring 2021-12-12 16:28:20 +01:00
Bastien Wirtz
e6ba84d35a Upgrade dependancies 2021-12-12 09:45:54 +01:00
Bastien Wirtz
611fe797eb
Merge pull request #338 from naioja/bump_alpine_version
Using a newer version of alpine
2021-12-08 12:32:28 -08:00
Adrian Joian
e961af8255
Using a newer version of alpine
Signed-off-by: Adrian Joian <ajoian@microsoft.com>
2021-12-04 01:35:55 +01:00
Paul Hagedorn
0121fa8036
docs: add Lidarr service to customservices.md 2021-11-02 18:28:47 +01:00
Paul Hagedorn
754372579e
feat: add Lidarr service 2021-11-02 18:26:33 +01:00
Darkham
6e6efc7d29 doc: add doc for AdGuard Home 2021-10-27 21:53:39 +02:00
Bastien Wirtz
b7480f632e
Merge pull request #316 from robinschneider/apikey
Fixes apikey inconsistency
2021-10-25 13:17:30 -07:00
Robin Schneider
9fce0ce5a5
Update src/components/services/OpenWeather.vue
Co-authored-by: Bastien Wirtz <bastien.wirtz@gmail.com>
2021-10-25 14:08:31 +02:00
Robin Schneider
f2c901a1ec
Merge branch 'bastienwirtz:main' into apikey 2021-10-25 14:06:41 +02:00
Bastien Wirtz
cf33747f42
Merge pull request #274 from robinschneider/hotkey
Added custom hotkey support
2021-10-25 04:46:58 -07:00
Bastien Wirtz
46c9a513e5
Merge pull request #319 from t-huyeng/fix-ping-doc
fixed Ping documentation yaml
2021-10-25 04:45:18 -07:00
Huyeng
400cdb8f6a fixed Ping documentation yaml 2021-10-21 16:52:06 +02:00
Robin Schneider
487f954a36 Fixes apikey inconsistency 2021-10-13 13:51:39 +02:00
Robin Schneider
446e78d2ab Merged main, fixed hotkey support 2021-10-12 14:36:22 +02:00
Robin Schneider
3668050ba3
Merge branch 'bastienwirtz:main' into hotkey 2021-10-12 14:16:13 +02:00
Bastien Wirtz
54c19bb5f0
Merge pull request #314 from AlexFullmoon/patch-1
Update customservices.md
2021-10-12 04:59:13 -07:00
AlexFullmoon
168f157cf9
Update customservices.md
Added PaperlessNG configuration to be in line with other services.
2021-10-12 11:37:30 +03:00
Aryess
5db2414d05 Fix #121 - Change default theme and layout from config 2021-10-12 11:37:24 +11:00
Robin Schneider
1c0bf7132a Added requested changes 2021-10-11 23:54:34 +02:00
Robin Schneider
2f19540400
Merge branch 'bastienwirtz:main' into hotkey 2021-10-11 23:48:05 +02:00
Bastien Wirtz
c72acd57d0
Merge pull request #310 from ArturBa/main
Add Prometheus custom component
2021-10-11 13:23:43 -07:00
Artur Bauer
80ba98cf66
Code review fixes 2021-10-11 18:41:28 +02:00
Bastien Wirtz
d31a9a79c2
Merge pull request #307 from robinschneider/icon-color
Added custom fontawesome icon color option with link property
2021-10-10 23:17:41 -07:00
Artur Bauer
277dafafa9
Update docs 2021-10-10 22:20:34 +02:00
Artur Bauer
8d9cfa98bd
Add Prometheus custom component 2021-10-10 22:14:33 +02:00
Robin Schneider
7a4e78e8d0
Merge branch 'bastienwirtz:main' into icon-color 2021-10-10 21:41:23 +02:00
Robin Schneider
87aadbb6df
Merge branch 'bastienwirtz:main' into hotkey 2021-10-10 21:40:42 +02:00
Bastien Wirtz
66a434e7db Implementation status warning 2021-10-10 20:57:04 +02:00
Bastien Wirtz
3acfb01d99 Custom services common options documentation 2021-10-10 10:47:23 +02:00
Bastien Wirtz
2fba043575 Allow non json reponse in fetch. 2021-10-10 10:37:20 +02:00
Bastien Wirtz
efc2bbb856 Allow any service to override the credentials option 2021-10-10 10:16:18 +02:00
Bastien Wirtz
fea0f09045 Proxy settings documentation 2021-10-10 09:46:51 +02:00
Bastien Wirtz
0a3be103dc Factorize fetch options 2021-10-10 09:26:02 +02:00
Bastien Wirtz
a25e1b1a70 Auto PR lint 2021-10-10 09:23:35 +02:00
Bastien Wirtz
cc26624f39
Merge pull request #308 from robinschneider/patch-1
Spelling fix
2021-10-08 12:39:32 -07:00
Robin Schneider
d7e17e6146
Spelling fix 2021-10-08 17:50:19 +02:00
Robin Schneider
3faeac7e9f Added custom fontawesome icon color option with link property 2021-10-08 17:42:23 +02:00
Robin Schneider
b64b17a4f9 Fixed spelling 2021-10-08 15:11:00 +02:00
Robin Schneider
270e522e0e
Merge branch 'bastienwirtz:main' into hotkey 2021-10-07 00:15:26 +02:00
Bastien Wirtz
220c60cba0 Reduce docker healthcheck frequency 2021-10-06 22:55:53 +02:00
Bastien Wirtz
2ca4faad9c Extendable base service for easier development. 2021-10-06 22:55:09 +02:00
Bastien Wirtz
c7dc6bfd0d
Merge pull request #304 from xconverge/patch-1
Update Ping entry in docs
2021-10-06 12:42:22 -07:00
Sean Kelly
b2f6da0382
Cleanup 2021-10-06 09:17:46 -07:00
Sean Kelly
e58461ffe3
Update customservices readme for ping
Fixes #249

Would be improved with https://github.com/bastienwirtz/homer/pull/255
2021-10-06 09:16:17 -07:00
Bastien Wirtz
451b1ac624
Merge pull request #277 from bastienwirtz/dependabot/npm_and_yarn/url-parse-1.5.3
Bump url-parse from 1.5.1 to 1.5.3
2021-09-25 04:37:00 -07:00
Bastien Wirtz
7129af3bda Add troubleshooting section 2021-09-25 12:19:32 +02:00
Bastien Wirtz
1d3287dcca Apply linters 2021-09-25 12:18:13 +02:00
Bastien Wirtz
6173d7df60
Merge pull request #260 from vosdev/main
Add healthcheck to Dockerfile
2021-09-25 01:19:52 -07:00
Bastien Wirtz
b2a31c0701
Merge pull request #291 from mcclurec/radarr-sonarr-sso-fix
Add credentials: "include" back to Radarr and Sonarr
2021-09-24 23:59:38 -07:00
Colin
d6d078132b
Update Sonarr.vue 2021-09-22 10:47:10 -07:00
Colin
e32643056e
Add credentials: "include" back to Sonarr 2021-09-22 10:37:52 -07:00
Colin
eecd0db92e
Add credentials: "include" back to Radarr` 2021-09-22 10:23:24 -07:00
Bastien Wirtz
d489f6ef87
Merge pull request #243 from waschinski/patch-1
Improving Adguard Home service
2021-09-15 00:40:05 -07:00
Andreas Waschinski
b63add2f95
Status visibility no longer depending on subtitle 2021-09-14 22:44:42 +02:00
Bastien Wirtz
a6b72c97d0
Merge pull request #246 from waschinski/mealie-service
Adding Mealie service
2021-09-14 13:38:23 -07:00
Andreas Waschinski
4eeed6596b
Merge branch 'main' into patch-1 2021-09-14 08:56:06 +02:00
Bastien Wirtz
f11b1c9dcf Weather service refactoring 2021-09-13 23:13:26 +02:00
Bastien Wirtz
fd18715085
Merge pull request #181 from dickwolff/main
Added OpenWeatherMap service
2021-09-13 14:08:08 -07:00
Bastien Wirtz
92d5b8d424
Merge branch 'main' into main 2021-09-13 13:09:40 -07:00
dependabot[bot]
bcec0449ec
Bump url-parse from 1.5.1 to 1.5.3
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-09-13 20:04:32 +00:00
Bastien Wirtz
55c3ea4d92 Deps updates & lint 2021-09-13 22:03:13 +02:00
Bastien Wirtz
33d60aa76a
Merge pull request #271 from Sharknoon/main
Fixed the height of the Dashboard Title in case of a long string
2021-09-13 12:57:58 -07:00
Bastien Wirtz
afe6d34ced
Merge pull request #258 from mcclurec/sso-compliant-fetch-calls
SSO Compliant Fetch Calls
2021-09-13 12:55:14 -07:00
Bastien Wirtz
1ed0a2f387
Merge pull request #213 from simonporte/main
Fix transparency level behind links
2021-09-13 12:45:58 -07:00
Bastien Wirtz
117fa7d3b9
Merge pull request #263 from jeremymeyers/patch-1
typo
2021-09-13 12:43:02 -07:00
Robin Schneider
584f2b4b32 Added custom hotkey support 2021-09-11 12:42:57 +02:00
Josua Frank
6c834c24b6
Update app.scss
Fixed the height of the header in case of a longer dashboard title
2021-09-09 16:14:49 +02:00
Jeremy Meyers
cb325bd58a
typo 2021-08-26 21:54:59 -04:00
Colin
bbe7149d58
Update PiHole.vue 2021-08-16 14:17:15 -07:00
Colin
7efcd282bb
Update AdGuardHome.vue 2021-08-16 14:16:29 -07:00
simonporte
addaf36c3d Fix transparency level behind links 2021-08-16 21:08:25 +02:00
Bastien Wirtz
6b54eedae7
Merge pull request #254 from rvankraaij/fix-cors-radarr-sonarr
Fix cors issue with radarr and sonarr services
2021-08-15 10:28:51 -07:00
Daniël Vos
6dd8342bf0 Add healthcheck to Dockerfile 2021-08-15 15:34:17 +02:00
Colin
4852ae6b85
Update AdGuardHome.vue 2021-08-11 15:41:33 -07:00
Colin
2f6d9e1b09
Update PaperlessNG.vue 2021-08-11 15:41:11 -07:00
Colin
0dc3cea15e
Update PiHole.vue 2021-08-11 15:40:22 -07:00
Colin
76a46c3507
Update Ping.vue 2021-08-11 15:38:24 -07:00
Colin
cf2fb08dc7
Update PaperlessNG.vue 2021-08-11 15:37:17 -07:00
Colin
077be43473
Update AdGuardHome.vue 2021-08-11 15:35:41 -07:00
Colin
ecec695272
include credentials while making fetch calls 2021-08-11 15:25:51 -07:00
Andreas Waschinski
a74fa38302
Merge branch 'main' into patch-1 2021-08-08 11:18:46 +02:00
rvk
304362adfd Fix CORS issue for Radarr and Sonarr services 2021-08-04 21:26:15 +02:00
rvk
25f99adc6c Fix CORS issue for Radarr and Sonarr services 2021-08-04 21:19:28 +02:00
Andreas Waschinski
b2062fb60a Merge remote-tracking branch 'upstream/main' into mealie-service 2021-07-28 16:13:50 +02:00
Andreas Waschinski
4386cd094b Updating configuration 2021-07-28 16:12:19 +02:00
Andreas Waschinski
64ac4c48d5 Statistics now also need the token for authentication 2021-07-28 16:10:11 +02:00
Bastien Wirtz
35926e1e6e Version bump 2021-07-14 16:48:55 +02:00
Bastien Wirtz
f3b3b89b7c Simplify the connectivity checker 2021-07-14 16:41:00 +02:00
Bastien Wirtz
a6b7db5437
Merge pull request #186 from pdevq/connectivity_checker_status
Fix ConnectivityChecker to evaluate the response status codes
2021-07-14 07:37:53 -07:00
Bastien Wirtz
3a8fa151f4 Improve ping service 2021-07-14 15:49:19 +02:00
Bastien Wirtz
92d899bd48 regroup service documentation 2021-07-14 15:48:57 +02:00
Bastien Wirtz
c06c0cdf9b Lint & updates 2021-07-14 12:05:53 +02:00
Andreas Waschinski
73a102f3fa Merge branch 'main' into mealie-service 2021-07-14 11:48:54 +02:00
Bastien Wirtz
f9cc1d27cc
Merge pull request #239 from azrikahar/patch-1
fix card border radius when it's the only child
2021-07-14 02:23:39 -07:00
Bastien Wirtz
f5b467f933
Merge pull request #245 from boerniee/paperlessng-integration
Added paperless service
2021-07-14 02:13:52 -07:00
Bastien Wirtz
ded5228972
Merge pull request #240 from stubbfel/stubbfel-add-ping-service
Add  Ping services
2021-07-14 02:07:35 -07:00
Bastien Wirtz
90d6bc67c0
Merge pull request #223 from bastienwirtz/dependabot/npm_and_yarn/browserslist-4.16.6
Bump browserslist from 4.16.4 to 4.16.6
2021-07-14 01:57:49 -07:00
Bastien Wirtz
5d642b3674
Merge pull request #225 from bastienwirtz/dependabot/npm_and_yarn/dns-packet-1.3.4
Bump dns-packet from 1.3.1 to 1.3.4
2021-07-14 01:57:40 -07:00
Bastien Wirtz
c98f88eaf2
Merge pull request #228 from bastienwirtz/dependabot/npm_and_yarn/ws-6.2.2
Bump ws from 6.2.1 to 6.2.2
2021-07-14 01:57:27 -07:00
Bastien Wirtz
b1ccd8d6b2
Merge pull request #233 from bastienwirtz/dependabot/npm_and_yarn/postcss-7.0.36
Bump postcss from 7.0.35 to 7.0.36
2021-07-14 01:57:14 -07:00
Bastien Wirtz
c4cae400d5
Merge pull request #219 from tpansino/support-message-icon-url
Support passing FA icon in message URL payload
2021-07-14 01:55:59 -07:00
Bastien Wirtz
9e1b1bd1d2
Merge pull request #178 from twolaw/healthcheck2
Create Radarr, Sonarr & Medusa services
2021-07-14 01:52:35 -07:00
Andreas Waschinski
c3878bca0b Adding Mealie service 2021-07-13 19:16:15 +02:00
Andreas Waschinski
bebb6953cb Adding status "unknown"
Changing code as per linter
2021-07-10 09:58:17 +02:00
Andreas Waschinski
3832025b0c
Improving Adguard Home service
Showing "x.x% blocked" similar to how the PiHole service is doing it.
The status text will no longer be `true/false` but `enabled/disabled`.
Endpoints require to be logged in so fetch does now send cookies to prevent 403s.
2021-07-10 02:02:57 +02:00
stubbfel
68955dc1d3
Add Ping services
a  service (type) which check if the given url as available or not. if the service is  available then set the status to enable other to disable
2021-06-28 23:20:20 +02:00
Azri Kahar
f9ebff9311
fix card border radius when it's the only child 2021-06-24 09:05:13 +08:00
boerniee
24229b5411 Added paperless service with documentation 2021-06-23 17:06:19 +02:00
dependabot[bot]
adacb3c33f
Bump postcss from 7.0.35 to 7.0.36
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.35 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.35...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-17 04:22:49 +00:00
dependabot[bot]
0178d73f66
Bump ws from 6.2.1 to 6.2.2
Bumps [ws](https://github.com/websockets/ws) from 6.2.1 to 6.2.2.
- [Release notes](https://github.com/websockets/ws/releases)
- [Commits](https://github.com/websockets/ws/commits)

---
updated-dependencies:
- dependency-name: ws
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-06 05:50:18 +00:00
dependabot[bot]
a2b59fb6c1
Bump dns-packet from 1.3.1 to 1.3.4
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.3.1 to 1.3.4.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v1.3.1...v1.3.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-28 19:03:13 +00:00
dependabot[bot]
764b470209
Bump browserslist from 4.16.4 to 4.16.6
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.16.4 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.16.4...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-26 11:32:52 +00:00
Tom Pansino
742ae4eb52
Support passing FA icon in message URL payload 2021-05-15 02:20:51 -07:00
Bastien Wirtz
996011956b
Merge pull request #214 from pkoenig10/patch-1
Add crossorigin use-credentials attribute to manifest tag
2021-04-30 09:28:27 -07:00
Patrick Koenig
2428998313
Add crossorigin use-credentials attribute to manifest tag 2021-04-25 14:38:41 -07:00
Bastien Wirtz
7596bc527f Fix null error releated to refreshInterval + cleanup. Fix #210 2021-04-21 22:10:51 -07:00
Bastien Wirtz
aadd8b49cc Make sure dependencies are compatible with vue-cli. Fix #206 2021-04-21 21:37:51 -07:00
Bastien Wirtz
64f189c9dc Update deps 2021-04-08 22:06:20 -07:00
twolaw
4399f5fade pihole, medusa, radarr/sonarr services help 2021-03-11 16:12:17 +01:00
twolaw
275a335cce tag moved to bottom 2021-03-11 16:12:16 +01:00
twolaw
b1de1f9e08 medusa service 2021-03-11 16:12:15 +01:00
twolaw
0211da26c8 radarr, sonarr services 2021-03-11 16:12:15 +01:00
Bastien Wirtz
b6c667a129
Merge pull request #197 from GaaH/add-auto-theme-mode
cycle between automatic-light-dark themes
2021-03-09 21:33:15 -08:00
Gaëtan Caillaut
edc336bba6 yarn lint 2021-03-09 18:32:38 +01:00
Gaëtan Caillaut
c0044cc765 title attribute that display current theme 2021-03-09 18:32:38 +01:00
Gaëtan Caillaut
4a1e8717e9 cycle between automatic-light-dark themes 2021-03-09 18:32:38 +01:00
Bastien Wirtz
66eace9e95
Merge pull request #196 from GaaH/use-logo-in-groups
Use logo in groups
2021-03-08 22:25:35 -08:00
Bastien Wirtz
ba07da6b10 Avoid full reload when swithcing page. 2021-03-06 22:50:58 -08:00
Bastien Wirtz
00b46a6dde
Merge pull request #177 from luixal/multiple-pages
Adds multiple pages based on different config files
2021-03-06 22:09:58 -08:00
Gaëtan Caillaut
8e09331379 documenting logo in groups 2021-03-06 14:03:40 +01:00
Gaëtan Caillaut
42477020cf add option to use logo instead of icons in groups 2021-03-06 13:56:44 +01:00
Bastien Wirtz
cc7ff88552
Merge pull request #175 from luixal/message-remote-fields-mapping
Adds mapping remote field to Homer expected ones when loading message from URL
2021-03-04 18:40:07 -08:00
luixal
c6267296ec Changes relative paths to hash. Avoids problems with #8 2021-02-23 20:50:32 +01:00
luixal
9542de6eb2 Fixes identations and link docs. 2021-02-23 20:17:51 +01:00
Bastien Wirtz
7bcfce6bda
Merge pull request #174 from GeorgeSG/main
Fix #167: align item name when subtitle is empty
2021-02-17 21:44:23 -08:00
Bastien Wirtz
2c0cb7ad55 Update dependencies 2021-02-15 22:23:54 -08:00
Bastien Wirtz
9ba0d54e22 Improved docker command. 2021-02-15 22:23:16 -08:00
pdevq
a5fe53beb2 Fix ConnectivityChecker to evaluate the response status codes. 2021-01-30 00:17:24 -05:00
Dick Wolff
97f0c43ccc Added doc for locationID 2021-01-28 13:02:18 +01:00
Dick Wolff
551e32e203 Added location id 2021-01-28 12:58:29 +01:00
Dick Wolff
fb158d4767 Error handling and fixed link to city. 2021-01-13 22:19:17 +01:00
Dick Wolff
9e0ef05efe Removed URL and made fixed. 2021-01-13 21:27:19 +01:00
Dick Wolff
dfb0b14626 Fixed some typo's. 2021-01-13 21:25:07 +01:00
Dick Wolff
fd12de9ebd Improvements 2021-01-13 21:22:35 +01:00
Dick Wolff
b79561bc9c Format file. 2021-01-12 11:39:27 +01:00
Dick Wolff
593f8afc90 Added OpenWeather service component. 2021-01-12 11:35:57 +01:00
luixal
b6782c92b5 Removes forgotten console.log 2021-01-07 21:26:22 +01:00
luixal
1ddf394176 Refactors created function (splits logic for getting message) and adds timeout according to refreshInterval field 2021-01-07 21:23:13 +01:00
luixal
e3bd2ecc2c Adds multiple pages based on different config files 2021-01-07 09:39:58 +01:00
luixal
6d29bc27e7 Adds mapping remote field to Homer expected ones when loading message from url 2021-01-04 09:43:58 +01:00
Bastien Wirtz
3786f80dae Replace licence placeholder. Fix #142 2020-12-23 10:55:05 -08:00
Georgi Gardev
6f2b141bf7 Fix #167: align item name when subtitle is empty 2020-12-23 16:11:47 +02:00
Bastien Wirtz
c1b5f6adab Fix #171: empty search opens first item 2020-12-19 15:59:01 -08:00
Bastien Wirtz
168810d76f Fix #173: invisible tag border. 2020-12-19 15:57:16 -08:00
Bastien Wirtz
59db9d2e12 Depenencies update 2020-12-19 15:56:22 -08:00
Bastien Wirtz
31bd77c81d Adding search url support 2020-12-11 11:30:59 -08:00
Bastien Wirtz
16a86df3e4
Merge pull request #169 from bramceulemans/extended-pihole-component
Added extended PiHole statistics
2020-12-09 15:16:19 -08:00
Bram Ceulemans
4ce53b68ea Fixed wrongly removed computed property 2020-12-10 00:07:53 +01:00
Bram Ceulemans
f81dc6f488 Fixed wrongly removed computed property 2020-12-10 00:05:30 +01:00
Bram Ceulemans
273a268ac4 Remove unused computed property 2020-12-09 22:57:35 +01:00
Bram Ceulemans
c5eab80d76 Added extended PiHole statistics 2020-12-08 13:26:18 +01:00
Bastien Wirtz
71a7d3cce4 Fix documentation link. 2020-12-07 22:57:44 -08:00
Bastien Wirtz
12063dafef Apply lint fix 2020-12-07 22:53:55 -08:00
Bastien Wirtz
2bd57d17fd
Merge pull request #160 from simonporte/AdGuard-Home
Create AdGuard Home service
2020-12-07 22:13:50 -08:00
Bastien Wirtz
4c1f6c4329
Merge pull request #166 from jo-me/search-for-subtitle
Include subtitles in search
2020-12-07 21:42:43 -08:00
Jochen Mehlhorn
6fe21127f5 Merge branch 'main' into search-for-subtitle 2020-12-02 20:35:06 +01:00
Bastien Wirtz
a2481f7317
Merge pull request #164 from jo-me/fix-search-result-key
Fix item key for horizontal layout
2020-12-01 18:39:09 -08:00
jo-me
e1ecf86ffd Change service iteration key to index 2020-11-29 20:43:08 +01:00
jo-me
1c451e119e Include subtitles in search 2020-11-22 14:00:29 +01:00
jo-me
1b41b46193 Fix item key for horizontal layout 2020-11-22 13:42:15 +01:00
Bastien Wirtz
a2e28229a9
Merge pull request #159 from simonporte/main
Minor edits on readme and documentation
2020-11-16 22:06:14 -08:00
simonporte
33750a4cbc Create AdGuard Home service 2020-11-14 14:03:37 +01:00
simonporte
86f4680a5b Minor edits on readme and documentation 2020-11-14 13:25:01 +01:00
Bastien Wirtz
ade77e4257
Merge pull request #153 from taigrr/appcolor
feat: Enables setting colors for individual cards
2020-11-10 21:52:16 -08:00
Bastien Wirtz
f8d0761d0c
Merge pull request #156 from my-flow/main
Use gender-neutral terminology
2020-11-02 20:48:33 -08:00
Florian J. Breunig
c701075dfa
Use gender-neutral terminology
Fix #155
2020-11-02 22:56:39 +01:00
Tai Groot
be30825917
docs: document background property for cards 2020-10-28 18:44:55 -07:00
Tai Groot
23eb5b3fb7
feat: Enables setting colors for individual cards 2020-10-28 18:42:29 -07:00
Bastien Wirtz
ff0b5150f1
Merge pull request #151 from taigrr/spellcheck
chore: applies spell-check against entire repo (aspell)
2020-10-26 14:04:15 -07:00
Bastien Wirtz
5a85322c92
Merge pull request #146 from taigrr/fixDuplicateKeys
bug: Fix duplicate URL keys #145
2020-10-26 14:02:54 -07:00
Tai Groot
1f12c43da8
Fix duplicate URL keys #145 2020-10-26 03:19:40 -07:00
Tai Groot
2662b17049
chore: applies spell-check against entire repo (aspell) 2020-10-25 21:27:09 -07:00
Bastien Wirtz
d1b29caaa6
Update README.md 2020-10-23 22:57:35 -07:00
Bastien Wirtz
e75945851c
Fix screenshot url 2020-10-23 22:56:51 -07:00
Bastien Wirtz
13071ae3d1
Merge pull request #140 from Genymobile/dynamic-services
Custom service components
2020-10-23 18:29:14 -07:00
Bastien Wirtz
5b727eee02
Merge branch 'main' into dynamic-services 2020-10-23 18:29:06 -07:00
Bastien Wirtz
37dfd2a132
Merge pull request #139 from Genymobile/update-deps-and-fix-code-styles
Update deps & fix lint issues
2020-10-23 18:26:41 -07:00
Bastien Wirtz
9a14de007e Implement custom service component 2020-10-23 18:16:16 -07:00
Bastien Wirtz
ed8b17e0df Update deps & fix lint issues 2020-10-23 15:24:16 -07:00
Bastien Wirtz
c368290e32
Merge pull request #127 from NotWoods/pwa-icons
Reduce number of PWA icons, fix paths
2020-10-23 14:46:36 -07:00
Bastien Wirtz
00b069fc6f
Merge pull request #136 from gabe565/message-icon
Add support for a message icon
2020-10-23 14:32:49 -07:00
Tiger Oakes
40d3e8de76 Pull all values from manifest 2020-10-23 13:59:55 -07:00
Tiger Oakes
1017cc9864 Update vue config 2020-10-23 13:56:51 -07:00
Tiger Oakes
b04e718367 Update paths and style 2020-10-23 13:44:46 -07:00
Bastien Wirtz
ab8136bab7
Merge pull request #138 from taigrr/master
Fix config doc for sample application
2020-10-23 09:29:37 -07:00
Tai Groot
488e4bbe7f
docs: Fixes spelling error in filename 2020-10-18 22:43:23 -07:00
Tai Groot
62ec6fa099
docs: Updates code-fork to code-branch 2020-10-18 22:42:43 -07:00
Bastien Wirtz
67fd101a38 Dark theme improvements 2020-10-16 21:58:37 -07:00
Gabe Cook
0e045b4c55
Add support for a message icon 2020-10-15 13:22:51 -05:00
Bastien Wirtz
e608701404 Minor css adjustement.
Fixes #114 & #117
2020-10-14 22:41:55 -07:00
Bastien Wirtz
2b5f88db18
Merge pull request #135 from AlexGustafsson/master
Update @fortawesome/fontawesome-free to 5.15.1
2020-10-14 22:04:28 -07:00
Alex Gustafsson
b8c81389dc Update @fortawesome/fontawesome-free to 5.15.1 2020-10-12 16:46:23 +02:00
Bastien Wirtz
5b05842512
Merge pull request #129 from Crayon2000/fix-typo
Fix typos
2020-09-13 17:52:19 -07:00
Crayon
80f6a13140 Fix typos
Changed Optionnal to Optional
2020-09-11 17:14:57 -04:00
Bastien Wirtz
f2eacfcba1
Merge pull request #120 from tpansino/feature/custom-document-title
Feature/custom document title
2020-09-05 10:08:58 -07:00
Tom Pansino
a02961b70b Add documentTitle example to documentation 2020-09-04 16:09:43 -07:00
Tom Pansino
9d0ec9e348 Support custom document title 2020-09-04 16:07:20 -07:00
Bastien Wirtz
ffe3404a2a Simplify service structure 2020-09-04 15:52:34 -07:00
Bastien Wirtz
bcf0e1bec2
Merge pull request #119 from tpansino/feature/custom-card-colors
Feature/custom card colors
2020-09-04 15:30:01 -07:00
Tiger Oakes
f70fc3ecae Reduce number of PWA icons, fix paths 2020-09-02 22:02:14 -07:00
Tom Pansino
e9afa4d7dd Rewrite custom card colors to use custom CSS classes instead of styles 2020-09-02 00:34:37 -07:00
Tom Pansino
fbe9338fd3 Merge remote-tracking branch 'upstream/master' into feature/custom-card-colors 2020-09-01 23:47:59 -07:00
Bastien Wirtz
83665e4f48
Merge pull request #113 from gabe565/custom-stylesheet
Add support for a custom stylesheet
2020-08-29 10:50:42 -07:00
Gabe Cook
8e5ee54a78
🔧 Make stylesheet config be an array of files 2020-08-29 02:43:02 -05:00
Gabe Cook
71cf63eb3b
📝 Document new stylesheet config 2020-08-29 02:21:09 -05:00
Gabe Cook
6777bc347b
Add support for a custom stylesheet 2020-08-29 02:21:09 -05:00
Bastien Wirtz
2644101276
Merge pull request #118 from vosdev/patch-1
Add chrome extension for a custom new tab page
2020-08-28 23:36:41 -07:00
Bastien Wirtz
607fb898f8
Merge pull request #115 from gabe565/navbar-alignment
Fix alignment when navbar link name is empty
2020-08-28 23:35:08 -07:00
Bastien Wirtz
2e7eb41f8c
Merge pull request #112 from gabe565/fa-fw-logo-alignment
Remove fa-fw from main logo to fix Font Awesome duotone issues
2020-08-28 23:15:00 -07:00
Bastien Wirtz
db738288fa
Merge pull request #101 from simonporte/master
Added docker-compose.yml
2020-08-28 23:12:22 -07:00
Tom Pansino
7e5ad02248 Add example card colors to configuration.md 2020-08-10 23:31:34 -07:00
Tom Pansino
118d3e5ac0 Rename color: to colors: 2020-08-10 17:25:43 -07:00
Tom Pansino
687a9e4086 Add support for custom card colors 2020-08-09 23:03:00 -07:00
Daniel Vos
4f04feb2da
Add chrome extension for a custom new tab page
I finally found a chrome extension that gives the same functionality as the firefox extension for the custom new tab page. I have updated the docs accordingly!
2020-08-03 20:00:52 +02:00
Gabe Cook
68c36d6c54
🐛 Fix alignment when navbar link name is empty 2020-07-28 17:18:41 -05:00
simonporte
e4537f134b Added docker-compose.yml
Plus short explanation in readme
Changed the commit as pointed by @Shuro
Explained readme more as asked by @bastienwirtz
2020-07-24 14:38:42 +02:00
Gabe Cook
239ef1688d
🐛 Remove fa-fw from main logo to fix Font Awesome duotone issues 2020-07-22 15:06:26 -05:00
Bastien Wirtz
154e6efe80 Adding support for section backgrounf images 2020-07-15 14:26:01 -07:00
Bastien Wirtz
d05b8d3bf0 Uniformise dockerfile 2020-07-15 14:23:29 -07:00
Bastien Wirtz
0ae40f78f8 Auth redirection support 2020-07-13 09:16:47 -07:00
Bastien Wirtz
6de53c49b3
Merge pull request #108 from GlennToms/master
Added su-exec to ARM dockerfiles and removed USER line
2020-07-12 21:09:42 -07:00
Bastien Wirtz
ab40c4e007 Adding support for release build. 2020-07-12 20:12:53 -07:00
Bastien Wirtz
1f92e1746d Dependancies update 2020-07-12 20:12:31 -07:00
Bastien Wirtz
8ae1fe8a4e Lint clean 2020-07-12 20:11:54 -07:00
AgileVirus
fd9237eb52 Added su-exec to ARM dockerfiles and removed USER line 2020-07-09 18:47:33 +01:00
Bastien Wirtz
4bfcc5bc95
Merge pull request #100 from fbartels/start_url
Explicitly define start_url
2020-07-04 18:11:08 -07:00
Bastien Wirtz
d3da4cfe93
Merge pull request #105 from fbartels/deduplicate
Removing duplicated dependencies
2020-07-04 18:10:22 -07:00
Felix Bartels
d1cc18761f deduplicate dependencies with https://github.com/atlassian/yarn-deduplicate
Signed-off-by: Felix Bartels <felix@host-consultants.de>
2020-07-01 11:56:54 +02:00
Felix Bartels
a503c5743e Explicitly define start_url
Relates to #99

Signed-off-by: Felix Bartels <felix@host-consultants.de>
2020-06-29 20:03:52 +02:00
Bastien Wirtz
a9aed9f9e2 Modernize readme 2020-06-28 21:42:07 -07:00
Bastien Wirtz
7ef65940ee Fix dynamic message override. 2020-06-28 18:31:42 -07:00
Bastien Wirtz
d1b9dea287 Donut's back! 2020-06-28 15:24:44 -07:00
Bastien Wirtz
ae73d7a5a0
Merge pull request #97 from gabe565/fa-fw
Add fa-fw to icons by default to fix variable width icons
2020-06-28 11:55:50 -07:00
Bastien Wirtz
25b6367aa1
Merge pull request #94 from bastienwirtz/avoid-file-volume
Regroup all editable files in one place
2020-06-28 11:07:37 -07:00
Bastien Wirtz
b102c9b2b3 Regroup all editable files in one place 2020-06-28 11:05:40 -07:00
Gabe Cook
da6e676d6e
💄 Add fa-fw to icons by default to fix variable width icons
Fixes #93
2020-06-25 17:56:26 -05:00
Bastien Wirtz
796a16c8da
Fix Github action trigger syntax 2020-06-19 08:22:34 -07:00
Bastien Wirtz
8d7ca88c46 Merge branch 'master' of github.com-perso:bastienwirtz/homer 2020-06-19 08:03:55 -07:00
Bastien Wirtz
b242511101
Merge pull request #90 from JamiePhonic/patch-1
Add new trick: news as dynamic message
2020-06-19 08:02:50 -07:00
Bastien Wirtz
638dee7704
Merge pull request #87 from GlennToms/master
Added ENV PORT options and EXPORT PORT
2020-06-19 08:01:44 -07:00
Bastien Wirtz
fea05ea099 Release on tag event. 2020-06-19 07:56:17 -07:00
Glenn Toms
29d6b359ab Added entrypoint script and Dockerfile port&volume 2020-06-18 15:46:33 +01:00
Glenn Toms
5f71d1ea01 Merge branch 'master' of github.com:bastienwirtz/homer 2020-06-18 14:29:33 +01:00
James
af663d3376
Add news as dynamic message
Adds a method to dynamically replace the "message" in homer with a news item from a chosen RSS feed!
2020-06-14 21:05:51 +01:00
Bastien Wirtz
aac817970c
Merge pull request #85 from bastienwirtz/splitted-documentation
Split documentation into separate files
2020-06-13 16:26:40 -07:00
Bastien Wirtz
b3635ea460 remove duplicated part 2020-06-13 16:24:26 -07:00
Glenn Toms
481ab9a01b Added ENV PORT options and EXPORT PORT 2020-06-12 17:50:07 +01:00
Bastien Wirtz
1bc75494ca Split documentation into separate files 2020-06-11 22:48:22 -07:00
Bastien Wirtz
cad54a560f
Merge pull request #84 from calvinbui/master
Dockerfile Improvements
2020-06-11 21:50:00 -07:00
Calvin Bui
e6596ca6ee
freeze-lockfile option on yarn 2020-06-11 11:42:56 +10:00
Calvin Bui
d10b219db5
copy artifacts later in the build step with permissions 2020-06-11 11:32:24 +10:00
Calvin Bui
ac1442c640
use env for USER instruction 2020-06-11 11:31:46 +10:00
Bastien Wirtz
a23914d573 specify all icons path to fix pwa issue, 2020-06-09 22:30:28 -07:00
Bastien Wirtz
9e4fe0d227 Customizable number of columns 2020-06-09 21:55:29 -07:00
Bastien Wirtz
e9113b48ce Optionnal connectivity check 2020-06-09 21:55:29 -07:00
Bastien Wirtz
1a42e30a17 Adding external config support 2020-06-09 21:55:29 -07:00
251 changed files with 20990 additions and 10067 deletions

View file

@ -1,3 +0,0 @@
> 1%
last 2 versions
not dead

View file

@ -2,4 +2,5 @@ assets/*
dockerfile
*.md
.git
screenshot.png
screenshot.png
node_modules

View file

@ -1,15 +0,0 @@
module.exports = {
root: true,
env: {
node: true,
},
extends: ["plugin:vue/essential", "eslint:recommended", "@vue/prettier"],
parserOptions: {
parser: "babel-eslint",
},
rules: {
"no-console": "off",
"no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off",
"vue/require-v-for-key": "off",
},
};

6
.github/FUNDING.yml vendored Normal file
View file

@ -0,0 +1,6 @@
# These are supported funding model platforms
# These are supported funding model platforms
github: [bastienwirtz]
buy_me_a_coffee: bastien

28
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,28 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**Expected behavior**
A clear and concise description of what you expected to happen.
**Logs & errors**
Please include any usefull information:
- Errors in your browser console (`ctrl+shift+i` or `F12`)
- If applicable, your docker container logs.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Configuration**
If applicable, copy related homer yaml configuration here.
```yml
```

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -9,10 +9,11 @@ Fixes # (issue)
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
- [ ] Refactoring
## Checklist:
- [ ] I read & comply with the [contributing guidelines](https://github.com/bastienwirtz/homer/blob/master/CONTRIBUTING.md)
- [ ] I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
- [ ] I have made corresponding changes the documentation (README.md).
- [ ] I've check my modifications for any breaking change, especially in the `config.yml` file
- [ ] I've read & comply with the [contributing guidelines](https://github.com/bastienwirtz/homer/blob/main/CONTRIBUTING.md)
- [ ] I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
- [ ] I have made corresponding changes to the documentation (`README.md`).
- [ ] I've checked my modifications for any breaking changes, especially in the `config.yml` file

8
.github/release.yml vendored Normal file
View file

@ -0,0 +1,8 @@
changelog:
exclude:
authors:
- dependabot
categories:
- title: Main changes
labels:
- "*"

48
.github/workflows/dockerhub.yml vendored Normal file
View file

@ -0,0 +1,48 @@
# Build & publish docker images
name: Dockerhub
on:
push:
tags: [v*]
jobs:
dockerhub:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: Set up QEMU
uses: docker/setup-qemu-action@v3
-
name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
-
name: Login to Docker Hub
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
-
name: Login to GHCR
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ github.token }}
-
name: Build and push
uses: docker/build-push-action@v6
with:
push: true
tags: |
b4bz/homer:latest
b4bz/homer:${{ github.ref_name }}
ghcr.io/${{ github.repository }}:latest
ghcr.io/${{ github.repository }}:${{ github.ref_name }}
platforms: linux/amd64,linux/arm/v7,linux/arm/v6,linux/arm64
build-args: |
VERSION_TAG=${{ github.ref_name }}

34
.github/workflows/integration.yml vendored Normal file
View file

@ -0,0 +1,34 @@
# This workflow will do a clean install of node dependencies, cache/restore them, build the source code and run tests across different versions of node
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-nodejs-with-github-actions
name: Integration
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: pnpm setup
uses: pnpm/action-setup@v4
-
name: Node.js setup
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
-
name: install dependencies
run: pnpm install --frozen-lockfile
-
name: Check code style & potentential issues
run: pnpm lint

View file

@ -1,40 +0,0 @@
# Publish pre-build release
name: Upload Release Asset
on:
push:
branches: [master]
jobs:
build:
name: Upload Release Asset
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Build project
run: |
yarn install
yarn build
- name: Create artifact
working-directory: "dist"
run: zip -r ../homer.zip ./*
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.run_id }}
release_name: Release ${{ github.run_id }}
draft: false
prerelease: false
- name: Upload Release Asset
id: upload-release-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ./homer.zip
asset_name: homer.zip
asset_content_type: application/zip

43
.github/workflows/release.yml vendored Normal file
View file

@ -0,0 +1,43 @@
# Publish pre-build release
name: Create Github release
on:
push:
tags: [v*]
jobs:
build:
name: Upload Release Asset
runs-on: ubuntu-latest
timeout-minutes: 20
steps:
-
name: Checkout
uses: actions/checkout@v4
-
name: pnpm setup
uses: pnpm/action-setup@v4
-
name: Node.js setup
uses: actions/setup-node@v4
with:
node-version: 22
cache: 'pnpm'
-
name: Build project
run: |
pnpm install --frozen-lockfile
pnpm build
-
name: Create artifact
working-directory: "dist"
run: zip -r ../homer.zip ./*
-
name: Create Release
id: create_release
uses: softprops/action-gh-release@v2
with:
token: ${{ secrets.GITHUB_TOKEN }}
generate_release_notes: true
files: |
homer.zip

8
.gitignore vendored
View file

@ -21,4 +21,10 @@ yarn-error.log*
*.sw?
# App configuration
public/config.yml
config.yml
.drone.yml
# Specific Agent file
CLAUDE.md
GEMINI.md

8
.jsconfig.json Normal file
View file

@ -0,0 +1,8 @@
{
"compilerOptions": {
"paths": {
"@/*": ["./src/*"]
}
},
"exclude": ["node_modules", "dist"]
}

359
.schema/config-schema.json Normal file
View file

@ -0,0 +1,359 @@
{
"$id": "https://raw.githubusercontent.com/bastienwirtz/homer/main/.schema/config-schema.json",
"$schema": "http://json-schema.org/draft-07/schema",
"description": "https://github.com/bastienwirtz/homer/blob/main/docs/configuration.md",
"examples": [],
"title": "Homer Dashboard configuration",
"type": "object",
"definitions": {
"Colors": {
"type": "object",
"additionalProperties": false,
"properties": {
"light": {
"$ref": "#/definitions/ColorSet"
},
"dark": {
"$ref": "#/definitions/ColorSet"
}
},
"title": "Colors"
},
"ColorSet": {
"type": "object",
"additionalProperties": false,
"properties": {
"highlight-primary": {
"type": "string"
},
"highlight-secondary": {
"type": "string"
},
"highlight-hover": {
"type": "string"
},
"background": {
"type": "string"
},
"card-background": {
"type": "string"
},
"text": {
"type": "string"
},
"text-header": {
"type": "string"
},
"text-title": {
"type": "string"
},
"text-subtitle": {
"type": "string"
},
"card-shadow": {
"type": "string"
},
"link": {
"type": "string"
},
"link-hover": {
"type": "string"
},
"background-image": {
"type": "string"
}
}
},
"Defaults": {
"type": "object",
"additionalProperties": false,
"properties": {
"layout": {
"enum": [
"columns",
"list"
],
"description": "Layout of the dashboard, either 'columns' or 'list'"
},
"colorTheme": {
"enum": [
"auto",
"light",
"dark"
],
"description": "One of 'auto', 'light', or 'dark'"
}
},
"title": "Defaults"
},
"Hotkey": {
"type": "object",
"additionalProperties": false,
"properties": {
"search": {
"type": "string",
"description": "hotkey for search, e.g. Shift"
}
},
"required": [
"search"
]
},
"Link": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Name as seen in the navbar"
},
"icon": {
"type": "string",
"description": "Fontawesome icon"
},
"url": {
"type": "string",
"description": "Url of the link. When #filename is used, it is a link to another homer page, while 'filename' is the name of the config file"
},
"target": {
"type": "string",
"description": "html tag target attribute like _blank for a new page"
}
},
"required": [
"url"
],
"title": "Link"
},
"Message": {
"type": "object",
"additionalProperties": false,
"properties": {
"url": {
"type": "string",
"format": "uri"
},
"mapping": {
"$ref": "#/definitions/Mapping",
"description": "Mapping for the content loaded from the URL"
},
"refreshInterval": {
"type": "integer",
"description": "The refresh interval in milliseconds for reloading the message url"
},
"style": {
"type": "string",
"description": "See https://bulma.io/documentation/components/message/#colors for styling options"
},
"title": {
"type": "string",
"description": "Title of the message box"
},
"icon": {
"type": "string",
"description": "Fontawesome icon for the message box"
},
"content": {
"type": "string",
"description": "HTML content for the message box"
}
},
"title": "Messagebox"
},
"Mapping": {
"type": "object",
"additionalProperties": true,
"title": "Mapping"
},
"Proxy": {
"type": "object",
"additionalProperties": false,
"properties": {
"useCredentials": {
"type": "boolean",
"description": "# send cookies & authorization headers when fetching service specific data. Set to `true` if you use an authentication proxy. Can be overrided on service level. "
},
"headers": {
"$ref": "#/definitions/Headers",
"description": "send custom headers when fetching service specific data. Can also be set on a service level."
}
},
"title": "Proxy"
},
"Headers": {
"type": "object",
"additionalProperties": true,
"title": "Headers"
},
"Service": {
"type": "object",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"description": "Service name"
},
"icon": {
"type": "string",
"description": "Fontawesome icon for the service"
},
"logo": {
"type": "string",
"description": "A path to an image can also be provided. Note that icon take precedence if both icon and logo are set."
},
"class": {
"type": "string",
"description": "Optional css class to add on the service group. Example 'highlight-purple'"
},
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/Item"
}
}
},
"required": [
"items"
],
"title": "Service"
},
"Item": {
"type": "object",
"additionalProperties": true,
"properties": {
"name": {
"type": "string"
},
"logo": {
"type": "string",
"description": "Path to a logo. Alternatively a fa icon can be provided"
},
"icon": {
"type": "string",
"description": "Fontawesome icon for the item, alternative for logo"
},
"subtitle": {
"type": "string"
},
"tag": {
"type": "string",
"description": "Show tag"
},
"keywords": {
"type": "string",
"description": "Optional keyword used for searching purpose"
},
"url": {
"type": "string",
"description": "Url of this item"
},
"target": {
"type": "string",
"description": "html tag target attribute like _blank for a new page"
},
"tagstyle": {
"type": "string",
"description": "Styleclass for the tag"
},
"type": {
"type": "string",
"description": "Optional, loads a specific component that provides extra features. MUST MATCH a file name (without file extension) available in `src/components/services`"
}
},
"title": "Item"
}
},
"properties": {
"externalConfig": {
"type": "string",
"description": "Use external configuration file. Using this will ignore remaining config in this file externalConfig: https://example.com/server-luci/config.yaml"
},
"title": {
"type": "string",
"description": "Title of the dashboard"
},
"subtitle": {
"type": "string",
"description": "Subtitle of the dashboard"
},
"documentTitle": {
"type": "string",
"description": "Title of the document. When not filled, title (and subtitle will be used)"
},
"logo": {
"type": "string",
"description": "Path to logo image"
},
"icon": {
"type": "string",
"description": "Dashboard icon"
},
"header": {
"type": "boolean",
"description": "Show header, default is true"
},
"hotkey": {
"$ref": "#/definitions/Hotkey",
"description": "Define hotkeys, for example for search"
},
"footer": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "string"
}
],
"description": "footer Line content. HTML is supported. Set false if you want to hide it."
},
"columns": {
"type": "string",
"description": "'auto' or number (must be a factor of 12: 1, 2, 3, 4, 6, 12)",
"format": "integer"
},
"connectivityCheck": {
"type": "boolean",
"description": "# whether you want to display a message when the apps are not accessible anymore (VPN disconnected for example). You should set it to true when using an authentication proxy, it also reloads the page when a redirection is detected when checking connectivity."
},
"proxy": {
"$ref": "#/definitions/Proxy",
"description": "Optional: Proxy / hosting option"
},
"defaults": {
"$ref": "#/definitions/Defaults"
},
"theme": {
"type": "string",
"description": "'default' or one of the themes available in 'src/assets/themes'"
},
"stylesheet": {
"type": "array",
"items": {
"type": "string"
},
"description": "Will load custom CSS files. Especially useful for custom icon sets. Entries are paths to the stylesheets"
},
"colors": {
"$ref": "#/definitions/Colors"
},
"message": {
"$ref": "#/definitions/Message",
"description": "Messagebox"
},
"links": {
"description": "Links in the navigation bar",
"type": "array",
"items": {
"$ref": "#/definitions/Link"
}
},
"services": {
"description": "Services",
"type": "array",
"items": {
"$ref": "#/definitions/Service"
}
}
}
}

84
AGENTS.md Normal file
View file

@ -0,0 +1,84 @@
# AGENTS Instructions
This file provides guidance to AI Agents when working with code in this repository.
## Development Commands
```bash
pnpm install # Install dependencies (PNPM enforced via packageManager)
pnpm dev # Start development server on http://localhost:3000
pnpm mock # Start mock API server for testing service integrations
pnpm build # Build for production
pnpm preview # Preview production build
pnpm lint # Run ESLint with auto-fix
```
## Architecture Overview
Homer is a static Vue.js 3 PWA dashboard that loads configuration from YAML files. The architecture is service-oriented with dynamic component loading.
### Core Application Structure
- **Entry Point**: `src/main.js` mounts the Vue app
- **Root Component**: `src/App.vue` handles layout, configuration loading, and routing
- **Configuration System**: YAML-based with runtime merging of defaults (`src/assets/defaults.yml`) and user config (`/assets/config.yml`)
- **Service Components**: 53 specialized integrations in `src/components/services/` that extend a Generic component pattern
### Service Integration Pattern
All service components follow this architecture:
- Extend `Generic.vue` using Vue slots (`<template #indicator>`, `<template #content>`, `<template #icon>`)
- Use the `service.js` mixin (`src/mixins/service.js`) for common API functionality
- Use a custom `fetch` method provided by the service mixin to seamlessly support proxy configuration, custom headers, and credentials.
### Configuration & Routing
- **Multi-page Support**: Hash-based routing without Vue Router
- **Dynamic Config Loading**: External URLs supported via `config.remote_config`
- **Theme System**: CSS layers architecture with three built-in themes in `src/assets/themes/`
- **Asset Management**: Static files served from `/assets/` with runtime configuration merging
### Build System Details
- **Vite 7**: Modern build tool with Vue plugin
- **PWA**: Auto-updating service worker via `vite-plugin-pwa`
- **SCSS**: Bulma framework with modular component styling
- **Docker**: Multi-stage build (Node.js → Alpine + Lighttpd)
### Mock Data Creation Pattern
When creating mock data for service components testing:
**Structure**: `dummy-data/[component-name]/[api-path]/[endpoint]`
**Steps**:
1. **Analyze component**: Read the Vue component file to identify API calls (look for `this.fetch()` calls)
2. **Check existing mock**: If mock directory exists, read existing files to check for missing fields
3. **Create/update structure**: `mkdir -p dummy-data/[lowercase-component-name]/` and mirror API endpoint paths
4. **Create/update JSON files**: Write realistic mock responses matching the expected data structure
5. **Verify fields**: Ensure all fields used in the component's computed properties and templates are included
6. **Update existing mocks**: If mock files exist but are missing fields, add the missing fields without removing existing data
**Key Points**:
- Component directory name should be lowercase version of component name (e.g., `AdGuardHome.vue``adguardhome/`)
- Directory structure mirrors API endpoints exactly
- Files contain JSON responses (no file extension needed)
- Mock server serves from `dummy-data/` via `pnpm mock` command
- Each component gets isolated directory to prevent API path conflicts
- When updating existing mocks, preserve existing data and only add missing fields required by the component
- Always read existing mock files first to understand current structure before making changes
**Example**: For `AdGuardHome.vue`:
- API calls: `/control/status`, `/control/stats`
- Mock files: `dummy-data/adguardhome/control/status`, `dummy-data/adguardhome/control/stats`
### Development Notes
- Use `pnpm mock` to test service integrations with dummy data
- Configuration changes require restart in development mode
- New service components should follow the Generic component slot pattern
- Themes use CSS custom properties for dynamic color switching
- The app has no backend dependencies and generates static files only

View file

@ -6,27 +6,23 @@ First off, thank you for considering contributing to Homer!
### Project philosophy
Homer is meant to be a light and very simple dashboard that keeps all your usefull utilities at hands. The few features implemented in Homer focus on
UX and usability. If you are looking for a full featured dashboard, there is tons of great stuff out there like https://heimdall.site/, https://github.com/rmountjoy92/DashMachine or https://organizr.app/.
Homer is meant to be a light and very simple dashboard that keeps all your useful utilities at hand. The few features implemented in Homer focus on
UX and usability. If you are looking for a full featured dashboard, there are tons of great stuff out there like https://gethomepage.dev/, https://heimdall.site/, https://github.com/rmountjoy92/DashMachine or https://organizr.app/.
- Configuration is stored in a simple config file, avoiding the need for a backend/database while making possible to use versionning or [config template](https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html).
- Configuration is stored in a simple config file, avoiding the need for a backend/database while making it possible to use versioning or [config template](https://docs.ansible.com/ansible/latest/user_guide/playbooks_templating.html).
- Only modern browsers are supported, feel free to use any JS features without any polyfill as soon as the latest version of the major browsers supports them.
### Roadmap
If you want to know more about the project direction or looking for something to work on, checkout the [roadmap](https://github.com/bastienwirtz/homer#Roadmap)!
Feel free to open an issue if you have any question.
# Ground Rules
### Code of conduct and guidelines
First of all, we expect everyone (contributors and maintainers alike) to respect the [Code of conduct](https://github.com/bastienwirtz/homer/blob/master/CODE_OF_CONDUCT.md). It is not a recomandation, it is mandatory.
First of all, we expect everyone (contributors and maintainers alike) to respect the [Code of conduct](https://github.com/bastienwirtz/homer/blob/main/CODE_OF_CONDUCT.md). It is not a recommendation, it is mandatory.
For all contributions, please respect the following guidelines:
* Each pull request should implement ONE feature or bugfix. If you want to add or fix more than one thing, submit more than one pull request.
* Do not commit changes to files that are irrelevant to your feature or bugfix (eg: `.gitignore`).
* Do not commit changes to files that are irrelevant to your feature or bugfix (e.g. `.gitignore`).
* Do not add unnecessary dependencies.
* Be aware that the pull request review process is not immediate, and is generally proportional to the size of the pull request.
@ -34,14 +30,24 @@ For all contributions, please respect the following guidelines:
### Discuss about ideas
If you want to add a feature, it's often best to talk about it before starting working on it and submitting a pull request. It's not mandatory at all, but
If you want to add a feature, it's often best to talk about it before starting to work on it and submitting a pull request. It's not mandatory at all, but
feel free to open an issue to present your idea.
### Working with AI Agents
This repository include an [`AGENTS.md`](https://github.com/bastienwirtz/homer/blob/main/AGENTS.md) instruction file for agents. It use an [open format](https://agents.md/), which most agent should natively use for context. However, for specific agent like Claude Code or Gemini, you will have to specifically ask it to read the file or create symlink:
```sh
ln -s AGENTS.md CLAUDE.md
ln -s AGENTS.md GEMINI.md
```
### How to submit a contribution
The general process to submit a contribution is as follow:
1. Create your own fork of the code
2. Do the changes in your fork
3. Make sure to fill the [pull request description](https://github.com/bastienwirtz/homer/blob/master/.github/PULL_REQUEST_TEMPLATE.md) properly.
1. Take a look at the [development guideline](https://github.com/bastienwirtz/homer/blob/main/docs/development.md).
2. Create your own fork of the code
3. Do the changes in your fork
4. Make sure to fill the [pull request description](https://github.com/bastienwirtz/homer/blob/main/.github/PULL_REQUEST_TEMPLATE.md) properly.
### Happy coding :metal:

View file

@ -1,27 +1,58 @@
# build stage
FROM node:lts-alpine as build-stage
FROM --platform=$BUILDPLATFORM node:22-alpine3.21 AS build-stage
ENV PNPM_HOME="/pnpm"
ENV PATH="$PNPM_HOME:$PATH"
RUN corepack enable && corepack use pnpm@10
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY package.json pnpm-lock.yaml ./
RUN pnpm install --frozen-lockfile
COPY . .
RUN yarn build
RUN pnpm build
# production stage
FROM alpine:3.11
FROM alpine:3.21
COPY --from=build-stage /app/dist /www/
ARG VERSION_TAG=latest
ENV USER darkhttpd
ENV GROUP darkhttpd
ENV GID 911
ENV UID 911
LABEL \
org.label-schema.schema-version="1.0" \
org.label-schema.version="$VERSION_TAG" \
org.opencontainers.image.title="Homer Image" \
org.opencontainers.image.description="A dead simple static Home-Page for your server to keep your services on hand, from a simple yaml configuration file." \
org.opencontainers.image.ref.name="b4bz/homer:${VERSION_TAG}" \
org.opencontainers.image.version="$VERSION_TAG" \
org.opencontainers.image.licenses="Apache-2.0 license" \
org.opencontainers.image.source="https://github.com/bastienwirtz/homer" \
org.opencontainers.image.url="https://hub.docker.com/r/b4bz/homer"
RUN addgroup -S ${GROUP} -g ${GID} && adduser -D -S -u ${UID} ${USER} ${GROUP} && \
apk add -U darkhttpd
ENV GID=1000 \
UID=1000 \
PORT=8080 \
SUBFOLDER="/_" \
INIT_ASSETS=1 \
IPV6_DISABLE=0
USER darkhttpd
RUN addgroup -S lighttpd -g ${GID} && adduser -D -S -u ${UID} lighttpd lighttpd && \
apk add -U --no-cache tzdata lighttpd
ENTRYPOINT ["darkhttpd","/www/", "--no-listing"]
WORKDIR /www
COPY lighttpd.conf /lighttpd.conf
COPY lighttpd-ipv6.sh /etc/lighttpd/ipv6.sh
COPY entrypoint.sh /entrypoint.sh
COPY --from=build-stage --chown=${UID}:${GID} /app/dist /www/
COPY --from=build-stage --chown=${UID}:${GID} /app/dist/assets /www/default-assets
USER ${UID}:${GID}
HEALTHCHECK --start-period=10s --start-interval=1s --interval=30s --timeout=5s --retries=3 \
CMD wget --no-verbose -Y off --tries=1 --spider http://127.0.0.1:${PORT}/ || exit 1
EXPOSE ${PORT}
ENTRYPOINT ["/bin/sh", "/entrypoint.sh"]

View file

@ -1,36 +0,0 @@
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . .
RUN yarn build
# Multi arch build support
FROM alpine as qemu
ARG QEMU_VERSION="v4.2.0-7"
RUN wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-arm-static && chmod +x qemu-arm-static
# production stage
FROM arm32v7/alpine:3.11
COPY --from=qemu qemu-arm-static /usr/bin/
COPY --from=build-stage /app/dist /www/
ENV USER darkhttpd
ENV GROUP darkhttpd
ENV GID 911
ENV UID 911
RUN addgroup -S ${GROUP} -g ${GID} && adduser -D -S -u ${UID} ${USER} ${GROUP} && \
apk add -U darkhttpd && \
rm /usr/bin/qemu-arm-static
USER darkhttpd
ENTRYPOINT ["darkhttpd","/www/","--no-listing"]

View file

@ -1,36 +0,0 @@
# build stage
FROM node:lts-alpine as build-stage
WORKDIR /app
COPY package*.json ./
RUN yarn install
COPY . .
RUN yarn build
# Multi arch build support
FROM alpine as qemu
ARG QEMU_VERSION="v4.2.0-7"
RUN wget https://github.com/multiarch/qemu-user-static/releases/download/${QEMU_VERSION}/qemu-aarch64-static && chmod +x qemu-aarch64-static
# production stage
FROM arm64v8/alpine:3.11
COPY --from=qemu qemu-aarch64-static /usr/bin/
COPY --from=build-stage /app/dist /www/
ENV USER darkhttpd
ENV GROUP darkhttpd
ENV GID 911
ENV UID 911
RUN addgroup -S ${GROUP} -g ${GID} && adduser -D -S -u ${UID} ${USER} ${GROUP} && \
apk add -U darkhttpd && \
rm /usr/bin/qemu-aarch64-static
USER darkhttpd
ENTRYPOINT ["darkhttpd","/www/","--no-listing"]

View file

@ -186,7 +186,7 @@
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Copyright 2018 Bastien Wirtz
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.

322
README.md
View file

@ -1,239 +1,143 @@
# Homer
[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
[![Contribution Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](http://makeapullrequest.com)
[![Gitter](https://badges.gitter.im/homer-dashboard/community.svg)](https://gitter.im/homer-dashboard/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
[![Dowload](https://img.shields.io/badge/Dowload-homer.zip-orange)](https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip)
[![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/awesome-selfhosted/awesome-selfhosted)
<h1 align="center">
<img
width="180"
alt="Homer's donut"
src="https://raw.githubusercontent.com//bastienwirtz/homer/main/public/logo.png">
<br/>
Homer
</h1>
A dead simple static **HOM**epage for your serv**ER** to keep your s
ervices on hand, from a simple `yaml` configuration file.
<h4 align="center">
A dead simple static <strong>HOM</strong>epage for your serv<strong>ER</strong> to keep your services on hand, from a simple <code>yaml</code> configuration file.
</h4>
<p align="center">
<a href="https://www.buymeacoffee.com/bastien" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-yellow.png" alt="Buy Me A Coffee" height="41" width="174"></a>
<p>
<p align="center">
<a href="https://opensource.org/licenses/Apache-2.0"><img
alt="License: Apache 2"
src="https://img.shields.io/badge/License-Apache%202.0-blue.svg"></a>
<a href="https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip"><img
alt="Download homer static build"
src="https://img.shields.io/badge/Download-homer.zip-orange"></a>
<a href="https://twitter.com/acdlite/status/974390255393505280"><img
alt="speed-blazing"
src="https://img.shields.io/badge/speed-blazing%20%F0%9F%94%A5-red"></a>
<a href="https://github.com/awesome-selfhosted/awesome-selfhosted"><img
alt="Awesome"
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"></a>
</p>
## [Live demo](https://homer-demo.netlify.app) • [Chat](https://gitter.im/homer-dashboard/community)
![screenshot](https://raw.github.com/bastienwirtz/homer/master/screenshot.png)
<p align="center">
<strong>
<a href="https://homer-demo.netlify.app">Demo</a>
<a href="https://hub.docker.com/r/b4bz/homer">Docker Hub</a>
<a href="#get-started">Get started</a>
</strong>
</p>
## Highlights
- ⚡️ Lightweight & Fast
- 🥱 Low / No maintenance
- 📄 Simple [yaml](http://yaml.org/) file configuration
- Installable (pwa)
- 🧠 Smart cards
- 🔍️ Fuzzy search
- 📂 Multi pages & item grouping
- 🎨 Theme customization
- ⌨️ keyboard shortcuts:
- <kbd>/</kbd> Start searching.
- <kbd>Escape</kbd> Stop searching.
- <kbd>Enter</kbd> Open the first matching result (respects the bookmark's `_target` property).
- <kbd>Alt</kbd> (or <kbd>Option</kbd>) + <kbd>Enter</kbd> Open the first matching result in a new tab.
## Table of Contents
- [Features](#features)
- [Getting started](#getting-started)
- [Configuration](#configuration)
- [Roadmap](#roadmap)
- [Developement](#developement)
## Features
- [yaml](http://yaml.org/) file configuration
- Installable (pwa)
- Search
- Grouping
- Theme customization
- Offline heathcheck
- keyboard shortcuts:
- `/` Start searching.
- `Escape` Stop searching.
- `Enter` Open the first matching result (respects the bookmark's `_target` property).
- `Alt`/`Option` + `Enter` Open the first matching result in a new tab.
- [Getting started](#get-started)
- [Kubernetes Installation](docs/kubernetes.md)
- [Configuration](docs/configuration.md)
- [Theming](docs/theming.md)
- [Smart cards](docs/customservices.md)
- [Tips & tricks](docs/tips-and-tricks.md)
- [Development](docs/development.md)
- [Troubleshooting](docs/troubleshooting.md)
## Get started
## Getting started
Homer is a full static html/js dashboard, based on a simple yaml configuration file. See [documentation](docs/configuration.md) for information about the configuration (`assets/config.yml`) options.
Homer is a full static html/js dashboard, generated from the source in `/src` using webpack. It's meant to be served by an HTTP server, **it will not work if you open dist/index.html directly over file:// protocol**.
It's meant to be served by an HTTP server, **it will not work if you open the index.html directly over file:// protocol**.
### Using docker
The configuration directory is bind mounted to make your dashboard easy to maintain.
**Start the container with `docker run`**
```sh
docker run -p 8080:8080 -v /your/local/config.yml:/www/config.yml -v /your/local/assets/:/www/assets b4bz/homer:latest
# Make sure your local config directory exists
docker run -d \
--name homer \
-p 8080:8080 \
--mount type=bind,source="/path/to/config/dir",target=/www/assets \
--restart=unless-stopped \
b4bz/homer:latest
```
As a bind mount is used here, docker will not copy the initial content of the `assets` directory to the mounted directory.
You can initialise your assets directory with the content provided in this repository
```sh
cp -r /public/assets/* /your/local/assets/
> [!NOTE]
> The container will run using a user uid and gid 1000 by default, add `--user <your-UID>:<your-GID>` to the docker command to adjust it if necessary. Make sure this match the permissions of your assets directory.
**or `docker-compose`**
```yaml
services:
homer:
image: b4bz/homer
container_name: homer
volumes:
- /path/to/config/dir:/www/assets # Make sure your local config directory exists
ports:
- 8080:8080
user: 1000:1000 # default
environment:
- INIT_ASSETS=1 # default, requires the config directory to be writable for the container user (see user option)
restart: unless-stopped
```
**Alternatively** if you just want to provide images/icons without customizing the other files (app manifest & pwa icons), you can mount a custom directory in the `www` directory and use it in your `config.yml` for icons path.
**Environment variables:**
- **`INIT_ASSETS`** (default: `1`)
Install example configuration file & assets (favicons, ...) to help you get started.
- **`SUBFOLDER`** (default: `null`)
If you would like to host Homer in a subfolder, (ex: *<http://my-domain/homer>*), set this to the subfolder path (ex `/homer`).
- **`PORT`** (default: `8080`)
If you would like to change internal port of Homer from default `8080` to your port choice.
- **`IPV6_DISABLE`** (default: 0)
Set to `1` to disable listening on IPv6.
### Using the release tarball (prebuilt, ready to use)
Download and extract the latest the latest release (`homer.zip`) from the [release page](https://github.com/bastienwirtz/homer/releases), rename the `config.yml.dist` file to `config.yml`, and put it behind a webserver.
Download and extract the latest release (`homer.zip`) from the [release page](https://github.com/bastienwirtz/homer/releases), rename the `assets/config.yml.dist` file to `assets/config.yml`, and put it behind a web server.
```sh
wget https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip
unzip homer.zip
unzip homer.zip -d homer
cd homer
cp config.yml.dist config.yml
npx serve # or python -m http.server 8010 or apache, nginx ...
cp assets/config.yml.dist assets/config.yml
pnpx http-server # or python -m http.server 8010 or any web server.
```
### Build manually
```sh
# Using yarn (recommended)
yarn install
yarn build
# **OR** Using npm
npm install
npm run build
pnpm install
pnpm build
```
Then your dashboard is ready to use in the `/dist` directory.
## Configuration
Title, icons, links, colors, and services can be configured in the `config.yml` file (located in project root directory once built, or in the `public/` directory in developement mode), using [yaml](http://yaml.org/) format.
```yaml
---
# Homepage configuration
# See https://fontawesome.com/icons for icons options
title: "App dashboard"
subtitle: "Homer"
logo: "assets/homer.png"
# Alternatively a fa icon can be provided:
# icon: "fas fa-skull-crossbones"
header: true # Set to false to hide the header
footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it.
# Optional theming
theme: default # 'default' or one of the theme available in 'src/assets/themes'.
# Here is the exaustive list of customization parameters
# However all value are optional and will fallback to default if not set.
# if you want to change only some of the colors, feel free to remove all unused key.
colors:
light:
highlight-primary: "#3367d6"
highlight-secondary: "#4285f4"
highlight-hover: "#5a95f5"
background: "#f5f5f5"
card-background: "#ffffff"
text: "#363636"
text-header: "#424242"
text-title: "#303030"
text-subtitle: "#424242"
card-shadow: rgba(0, 0, 0, 0.1)
link-hover: "#363636"
dark:
highlight-primary: "#3367d6"
highlight-secondary: "#4285f4"
highlight-hover: "#5a95f5"
background: "#131313"
card-background: "#2b2b2b"
text: "#eaeaea"
text-header: "#ffffff"
text-title: "#fafafa"
text-subtitle: "#f5f5f5"
card-shadow: rgba(0, 0, 0, 0.4)
link-hover: "#ffdd57"
# Optional message
message:
# url: "https://<my-api-endpoint>" # Can fetch information from an endpoint to override value below.
style: "is-warning"
title: "Optional message!"
content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
# Optional navbar
# links: [] # Allows for navbar (dark mode, layout, and search) without any links
links:
- name: "Link 1"
icon: "fab fa-github"
url: "https://github.com/bastienwirtz/homer"
target: "_blank" # optional html tag target attribute
- name: "link 2"
icon: "fas fa-book"
url: "https://github.com/bastienwirtz/homer"
# Services
# First level array represent a group.
# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
services:
- name: "Application"
icon: "fa fa-code-fork"
items:
- name: "Awesome app"
logo: "assets/tools/sample.png"
# Alternatively a fa icon can be provided:
# icon: "fab fa-jenkins"
subtitle: "Bookmark example"
tag: "app"
url: "https://www.reddit.com/r/selfhosted/"
target: "_blank" # optional html tag target attribute
- name: "Another one"
logo: "assets/tools/sample2.png"
subtitle: "Another application"
tag: "app"
# Optional tagstyle
tagstyle: "is-success"
url: "#"
- name: "Other group"
icon: "fas fa-heartbeat"
items:
- name: "Another app"
logo: "assets/tools/sample.png"
subtitle: "Another example"
tag: "other"
url: "https://www.reddit.com/r/selfhosted/"
target: "_blank" # optionnal html a tag target attribute
```
If you choose to fetch message information from an endpoint, the output format should be:
```json
{
"style": null,
"title": "Lorem ipsum 42",
"content": "LA LA LA Lorem ipsum dolor sit amet, ....."
}
```
`null` value or missing keys will be ignored and value from the `config.yml` will be used if available.
Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar).
### Style Options
Homer uses [bulma CSS](https://bulma.io/), which provides a [modifiers syntax](https://bulma.io/documentation/modifiers/syntax/). You'll notice in the config there is a `tagstyle` option. It can be set to any of the bulma modifiers. You'll probably want to use one of these 4 main colors:
- `is-info` (blue)
- `is-success` (green)
- `is-warning` (yellow)
- `is-danger` (red)
You can read the [bulma modifiers page](https://bulma.io/documentation/modifiers/syntax/) for other options regarding size, style, or state.
## Roadmap
- [ ] Add more themes.
- [ ] Add support for custom service card (add custom feature to some service / app link)
## Development
```sh
# Using yarn (recommended)
yarn install
yarn serve
# **OR** Using npm
npm install
npm run serve
```
### Themes
Themes are meant to be simple customization (written in [scss](https://sass-lang.com/documentation/syntax)).
To addd a new theme, just add a file in the theme directory, and put all style in the `body #app.theme-<name>` scope. Then import it in the main style file.
```scss
// `src/assets/themes/my-awesome-theme.scss`
body #app.theme-my-awesome-theme. { ... }
```
```scss
// `src/assets/app.scss`
// Themes import
@import "./themes/sui.scss";
...
@import "./themes/my-awesome-theme.scss";
```

View file

@ -1,3 +0,0 @@
module.exports = {
presets: ["@vue/cli-plugin-babel/preset"],
};

216
docs/configuration.md Normal file
View file

@ -0,0 +1,216 @@
# Configuration
Homer relies on a single [yaml](http://yaml.org/) configuration file, located in the `/assets` directory.
`.dist` sample configuration files are available to help you get started. Alternatively, the example below can be
copied into the config file.
> [!NOTE]
> On docker installations, the sample configuration is automatically installed when no configuration is found **if**
> the configuration directory is writable to the docker user. If no configuration has been installed, check your
> container logs and your mounted configuration directory ownership & permissions
```yaml
---
# Homepage configuration
# See https://fontawesome.com/search for icons options
# Optional: Use external configuration file.
# Using this will ignore remaining config in this file
# externalConfig: https://example.com/server-luci/config.yaml
title: "App dashboard"
subtitle: "Homer"
# documentTitle: "Welcome" # Customize the browser tab text
logo: "assets/logo.png"
# Alternatively a fa icon can be provided:
# icon: "fas fa-skull-crossbones"
header: true # Set to false to hide the header
# Optional: Different hotkey for search, defaults to "/"
# hotkey:
# search: "Shift"
footer: '<p>Created with <span class="has-text-danger">❤️</span> with <a href="https://bulma.io/">bulma</a>, <a href="https://vuejs.org/">vuejs</a> & <a href="https://fontawesome.com/">font awesome</a> // Fork me on <a href="https://github.com/bastienwirtz/homer"><i class="fab fa-github-alt"></i></a></p>' # set false if you want to hide it.
columns: "3" # "auto" or number (must be a factor of 12: 1, 2, 3, 4, 6, 12)
connectivityCheck: true # whether you want to display a message when the apps are not accessible anymore (VPN disconnected for example).
# You should set it to true when using an authentication proxy, it also reloads the page when a redirection is detected when checking connectivity.
# Optional: Proxy / hosting option
proxy:
useCredentials: false # send cookies & authorization headers when fetching service specific data. Set to `true` if you use an authentication proxy. Can be overrided on service level.
headers: # send custom headers when fetching service specific data. Can also be set on a service level.
Test: "Example"
Test1: "Example1"
# Set the default layout and color scheme
defaults:
layout: columns # Either 'columns', or 'list'
colorTheme: auto # One of 'auto', 'light', or 'dark'
# Optional theming
theme: default # 'default' or one of the themes available in 'src/assets/themes'.
# Optional custom stylesheet
# Will load custom CSS files. Especially useful for custom icon sets.
# stylesheet:
# - "assets/custom.css"
# Here is the exhaustive list of customization parameters
# However all value are optional and will fallback to default if not set.
# if you want to change only some of the colors, feel free to remove all unused key.
colors:
light:
highlight-primary: "#3367d6"
highlight-secondary: "#4285f4"
highlight-hover: "#5a95f5"
background: "#f5f5f5"
card-background: "#ffffff"
text: "#363636"
text-header: "#424242"
text-title: "#303030"
text-subtitle: "#424242"
card-shadow: rgba(0, 0, 0, 0.1)
link: "#3273dc"
link-hover: "#363636"
background-image: "/assets/your/light/bg.png" # prefix with your sub subpath if any (ex: /homer/assets/...)
dark:
highlight-primary: "#3367d6"
highlight-secondary: "#4285f4"
highlight-hover: "#5a95f5"
background: "#131313"
card-background: "#2b2b2b"
text: "#eaeaea"
text-header: "#ffffff"
text-title: "#fafafa"
text-subtitle: "#f5f5f5"
card-shadow: rgba(0, 0, 0, 0.4)
link: "#3273dc"
link-hover: "#ffdd57"
background-image: "/assets/your/dark/bg.png" # prefix with your sub subpath if any (ex: /homer/assets/...)
# Optional message
message:
# url: "https://<my-api-endpoint>" # Can fetch information from an endpoint to override value below.
# mapping: # allows to map fields from the remote format to the one expected by Homer
# title: 'id' # use value from field 'id' as title
# content: 'value' # value from field 'value' as content
# refreshInterval: 10000 # Optional: time interval to refresh message
#
# Real example using chucknorris.io for showing Chuck Norris facts as messages:
# url: https://api.chucknorris.io/jokes/random
# mapping:
# title: 'id'
# content: 'value'
# refreshInterval: 10000
style: "is-warning"
title: "Optional message!"
icon: "fa fa-exclamation-triangle"
# The content also accepts HTML content, so you can add divs, images or whatever you want to make match your needs.
content: "Lorem ipsum dolor sit amet, consectetur adipiscing elit."
# Optional navbar
# links: [] # Allows for navbar (dark mode, layout, and search) without any links
links:
- name: "Link 1"
icon: "fab fa-github"
url: "https://github.com/bastienwirtz/homer"
target: "_blank" # optional html tag target attribute
- name: "link 2"
icon: "fas fa-book"
url: "https://github.com/bastienwirtz/homer"
# this will link to a second homer page that will load config from page2.yml and keep default config values as in config.yml file
# see url field and assets/page.yml used in this example:
- name: "Second Page"
icon: "fas fa-file-alt"
url: "#page2"
# Services
# First level array represents a group.
# Leave only a "items" key if not using group (group name, icon & tagstyle are optional, section separation will not be displayed).
services:
- name: "Application"
icon: "fas fa-code-branch"
# A path to an image can also be provided. Note that icon take precedence if both icon and logo are set.
# logo: "path/to/logo"
# class: "highlight-purple" # Optional css class to add on the service group.
items:
- name: "Awesome app"
logo: "assets/tools/sample.png"
# Alternatively a fa icon can be provided:
# icon: "fab fa-jenkins"
subtitle: "Bookmark example"
tag: "app"
keywords: "self hosted reddit" # optional keyword used for searching purpose
url: "https://www.reddit.com/r/selfhosted/"
target: "_blank" # optional html tag target attribute
- name: "Another one"
logo: "assets/tools/sample2.png"
subtitle: "Another application"
tag: "app"
# Optional tagstyle
tagstyle: "is-success"
url: "#"
- name: "Other group"
icon: "fas fa-heartbeat"
items:
- name: "Pi-hole"
logo: "assets/tools/sample.png"
# subtitle: "Network-wide Ad Blocking" # optional, if no subtitle is defined, PiHole statistics will be shown
tag: "other"
url: "http://192.168.0.151/admin"
type: "PiHole" # optional, loads a specific component that provides extra features. MUST MATCH a file name (without file extension) available in `src/components/services`
target: "_blank" # optional html a tag target attribute
# class: "green" # optional custom CSS class for card, useful with custom stylesheet
# background: red # optional color for card to set color directly without custom stylesheet
```
View **[smart cards](customservices.md)** for details about all available cards (like `PiHole`) and how to configure them.
If you choose to fetch message information from an endpoint, the output format should be as follows (or you can [custom map fields as shown in tips-and-tricks](./tips-and-tricks.md#mapping-fields)):
```json
{
"style": null,
"title": "Lorem ipsum 42",
"content": "LA LA LA Lorem ipsum dolor sit amet, ....."
}
```
`null` value or missing keys will be ignored and value from the `config.yml` will be used if available.
Empty values (either in `config.yml` or the endpoint data) will hide the element (ex: set `"title": ""` to hide the title bar).
## Connectivity checks
As a webapp (PWA) the dashboard can still be displayed when your homer server is offline.
The connectivity checker periodically sends a HEAD request bypassing the PWA cache to the dashbord page to make sure it's still reachable.
It can be useful when you access your dashboard through a VPN or ssh tunnel for example, to know if your conection is up. It also helps when using an authentication proxy, it will reload the page if the authentication expires (when a redirect is send in response to the HEAD request).
## Style Options
Homer uses [bulma CSS](https://bulma.io/), which provides a [modifiers syntax](https://bulma.io/documentation/start/syntax/). You'll notice in the config there is a `tagstyle` option. It can be set to any of the bulma modifiers. You'll probably want to use one of these 4 main colors:
- `is-info` (blue)
- `is-success` (green)
- `is-warning` (yellow)
- `is-danger` (red)
You can read the [bulma modifiers page](https://bulma.io/documentation/start/syntax/) for other options regarding size, style, or state.
## Theming & customization
See `colors` settings in the configuration example above.
Favicon and application icon (pwa) are located in the `assets/icons` directory and can be replaced by any image you want (just keep the same name & size).
The `/assets/manifest.json` can also be edited to change the app (pwa) name, description and other settings.
### Community theme
- [Catppuccin theme](https://github.com/mrpbennett/catppucin-homer) by [@mrpbenett](https://github.com/mrpbennett)
- [DietPi theme](https://codeberg.org/Cs137/homer-theme-dietpi) by [@Cs137](https://codeberg.org/Cs137)
- [Dracula theme](https://draculatheme.com/homer) by [@Tuetenk0pp](https://github.com/Tuetenk0pp)
- [Homer Theme v2](https://github.com/walkxcode/homer-theme) by [@walkxcode](https://github.com/walkxcode)
## PWA Icons
See icons documentation [here](https://github.com/bastienwirtz/homer/blob/main/public/assets/icons/README.md).

844
docs/customservices.md Normal file
View file

@ -0,0 +1,844 @@
# Smart cards
Smart cards provide specific integrations for external services. They display additional information and extra features beyond basic service card. Smart cards are enabled by adding a `type` key to the service item in your YAML configuration.
Each service integration has different requirements and may need additional configuration parameters (see card list below).
> [!WARNING]
> Your `config.yml` file is exposed at `/assets/config.yml` via HTTP. Any sensitive information (like API keys)
> in this file is visible to anyone who can access your Homer instance. Only include API keys if your Homer
> instance is protected by authentication or access controls **or use a proxy like [`CORSair`](https://github.com/bastienwirtz/corsair)
> to inject your credentials safely**, using environment variable on the server side.
Available services are located in `src/components/`:
- [Common options](#common-options)
- [AdGuard Home](#adguard-home)
- [CopyToClipboard](#copy-to-clipboard)
- [Docuseal](#docuseal)
- [Docker Socket Proxy](#docker-socket-proxy)
- [Emby / Jellyfin](#emby--jellyfin)
- [FreshRSS](#freshrss)
- [Gatus](#gatus)
- [Gitea / Forgejo](#gitea--forgejo)
- [Glances](#glances)
- [Gotify](#gotify)
- [Healthchecks](#healthchecks)
- [Home Assistant](#home-assistant)
- [Immich](#immich)
- [Jellystat](#jellystat)
- [Lidarr, Prowlarr, Sonarr, Readarr and Radarr](#lidarr-prowlarr-sonarr-readarr-and-radarr)
- [Linkding](#linkding)
- [Matrix](#matrix)
- [Mealie](#mealie)
- [Medusa](#medusa)
- [Miniflux](#miniflux)
- [Nextcloud](#nextcloud)
- [OctoPrint / Moonraker](#octoprintmoonraker)
- [Olivetin](#olivetin)
- [OpenHAB](#openhab)
- [OpenWeatherMap](#openweathermap)
- [Paperless-NGX](#paperlessng)
- [PeaNUT](#peanut)
- [PiAlert](#pialert)
- [PiHole](#pihole)
- [Ping](#ping)
- [Plex](#plex)
- [Portainer](#portainer)
- [Prometheus](#prometheus)
- [Proxmox](#proxmox)
- [qBittorrent](#qbittorrent)
- [rTorrent](#rtorrent)
- [SABnzbd](#sabnzbd)
- [Scrutiny](#scrutiny)
- [Speedtest Tracker](#speedtesttracker)
- [Tautulli](#tautulli)
- [Tdarr](#tdarr)
- [Traefik](#traefik)
- [Transmission](#transmission)
- [TrueNas Scale](#truenas-scale)
- [Uptime Kuma](#uptime-kuma)
- [Vaultwarden](#vaultwarden)
- [Wallabag](#wallabag)
- [What's Up Docker](#whats-up-docker)
> [!IMPORTANT]
> Smart cards that interact with external services are subject to CORS restrictions, therefore require one of the following:
>
> - All services hosted on the **same domain** as Homer (mydomain.tld/pihole, mydomain.tld/proxmox) to avoid cross-domain request entirely.
> - All services configured to **accept cross-site requests** by sending the necessary CORS headers (either directly in service configuration or via proxy).
> - **Use a proxy** to add the necessary CORS headers (lot of options, some of them described [here](https://enable-cors.org/server.html). Also check [`CORSair`](https://github.com/bastienwirtz/corsair), a light and simple solution)
>
> If you experience any issues, see the [troubleshooting](troubleshooting.md#my-service-card-doesnt-work-nothing-appears-or-offline-status-is-displayed-pi-hole-sonarr-ping-) page.
## Common options
```yaml
- name: "My Service"
type: "<type>"
logo: "assets/tools/sample.png" # Optional
url: https://my-service.url # Optional: Card link and API base url unless 'endpoint' is provided (see below)
endpoint: https://my-service-api.url # Optional: alternative base URL used to fetch service data when necessary.
useCredentials: false # Optional: Override global proxy.useCredentials configuration.
headers: # Optional: Override global proxy.headers configuration.
```
If a subtitle is provided, (using the `subtitle` configuration key), **it will override (hide)** any custom information displayed on the subtitle line by the custom integration.
## AdGuard Home
Displays AdGuard Home protection status and blocked query statistics.
```yaml
- name: "AdGuard Home"
type: "AdGuardHome"
logo: "assets/tools/sample.png"
url: https://my-service.url
```
> **Note**: If AdGuard Homes web user is password-protected, you must pass Authorization HTTP header along with all requests. It can be done using a proxy or adding the following to the item configuration:
>
> ```yaml
> headers:
> Authorization: "Basic <base64-encoded for username:password>"
> ```
## Copy to Clipboard
Displays a service card with a copy button that copies the specified text to your clipboard when clicked.
```yaml
- name: "Copy me!"
type: "CopyToClipboard"
logo: "assets/tools/sample.png"
subtitle: "Click the copy icon to copy text"
clipboard: "this text will be copied to your clipboard"
url: "https://optional-link.com" # optional: opens when clicking the card (not the copy button)
```
## Docker Socket Proxy
Displays counts of running, stopped, and error containers from Docker Socket Proxy.
```yaml
- name: "Docker"
type: "DockerSocketProxy"
logo: "assets/tools/sample.png"
endpoint: "https://my-service-api.url:port"
```
## Docuseal
Displays the Docuseal version.
```yaml
- name: Docuseal
type: Docuseal
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## Emby / Jellyfin
Displays stats from your Emby or Jellyfin server.
The `libraryType` configuration let you choose which stats to show.
```yaml
- name: "Emby"
type: "Emby"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
libraryType: "music" # Choose which stats to show. Can be one of: music, series or movies.
```
## FreshRSS
Displays unread article count and total subscriptions from your FreshRSS server.
```yaml
- name: "FreshRSS"
type: "FreshRSS"
url: https://my-service.url
updateInterval: 5000 # (Optional) Interval (in ms) for updating the stats
username: "<---your-username--->"
password: "<---your-password--->"
```
## Gatus
The Gatus service displays information about the configured services from the defined Gatus server.
Two lines are needed in the config.yml :
```yaml
type: "Gatus"
url: "http://192.168.0.151/gatus"
```
Optionally, the results can be filtered to only include jobs in the defined groups:
```yaml
groups: [Services, External]
```
The status can be checked regularly by defining an update Interval in ms:
```yaml
updateInterval: 5000
```
The average times can be hidden (saves their calculation also) by setting the following:
```yaml
hideaverages: true
```
## Gitea / Forgejo
Displays a Gitea / Forgejo version.
```yaml
- name: Forgejo
type: Gitea
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## Glances
Displays system metrics (CPU, memory, swap, load) from a Glances server.
```yaml
- name: "System Metrics"
type: "Glances"
icon: "fa-solid fa-heart-pulse"
url: https://my-service.url
stats: [cpu, mem] # Options: load, cpu, mem, swap
```
If you don't already have a glances server up and running, here is a sample Docker compose file to get you started:
```yml
---
services:
glances:
image: nicolargo/glances:latest
container_name: glances
environment:
- TZ=Europe/Rome
- GLANCES_OPT=-w
ports:
- 61208:61208
restart: unless-stopped
```
## Gotify
Displays the number of outstanding messages and system health status.
```yaml
- name: "Gotify"
type: "Gotify"
url: https://my-service.url
apikey: "<---insert-client-token-here--->"
```
**API Token**: Use a **client token** (not an app token).
## Healthchecks
Displays status counts (up/down/grace) from your Healthchecks monitoring service.
```yaml
- name: "Healthchecks"
type: "Healthchecks"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
**API Key**: Found in Healthchecks web interface under **Settings > API Access > API key (read-only)**.
## Home Assistant
Displays Home Assistant instance status, version, location, and entity count.
```yaml
- name: "Home Assistant"
type: "HomeAssistant"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-long-lived-access-token-here--->"
items: [] # optional: "name", "version", "entities"
separator: " " # optional
```
**API Token**: Create a long-lived access token in Home Assistant:
1. Go to **Profile > Security > Long-lived access tokens**
2. Click **Create Token**
**CORS Configuration**: Edit Home Assistant `configuration.yml` and add Homer's IP:
```yaml
http:
cors_allowed_origins:
- "http://homer.local:8080"
- "https://your-homer-domain.com"
```
## Immich
Displays user count, photo/video counts, and storage usage from your Immich server.
```yaml
- name: "Immich"
type: "Immich"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
**Requirements**: Immich server version `1.118.0` or later
**API Key**: Create an API key in Immich web interface under **Administration > API Keys**
## Jellystat
Display the number of concurrent streams on your jellyfin server.
```yaml
- name: "Jellystat"
type: "Jellystat"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
**API Key**: You can create an API key in the dashboard of you jellystat server: settings/API Keys -> Add Key
## Lidarr, Prowlarr, Sonarr, Readarr and Radarr
Displays Activity (blue), Missing (purple) Warning (orange) or Error (red) notifications bubbles from the Lidarr, Readarr, Radarr or Sonarr application.
Two lines are needed in the `config.yml`:
```yaml
- name: "Lidarr"
type: "Lidarr" # "Lidarr" "Prowlarr", "Radarr" or "Sonarr"
logo: "assets/tools/sample.png"
url: https://my-service.url
checkInterval: 5000 # (Optional) Interval (in ms) for updating the status
apikey: "<---insert-api-key-here--->"
```
The url must be the root url of Lidarr, Prowlarr, Readarr, Radarr or Sonarr application.
**API Key**: The Lidarr, Prowlarr, Readarr, Radarr or Sonarr API key can be found in `Settings` > `General`. It is needed to access the API.
> [!IMPORTANT]
> **Radarr API V3 support**: If you are using an older version of Radarr or Sonarr which don't support the new V3 api endpoints, add the following line to your service config `"legacyApi: true"`
## Linkding
This integration makes it possible to query Linkding and list multiple results from Linkding.
Linkding has to be configured with CORS enabled. Linkding does not support that, but a reverse proxy in front can fix that.
This integration supports at max 15 results from Linkding, but you can add it multiple times to you dashboard with different queries to retrieve what you need.
```yaml
- name: "Linkding"
type: "Linkding"
url: https://my-service.url
token: "<---insert-api-key-here--->"
limit: 10 # Maximum number of items returned by Linkding, minimal 1 and max 15
query: "#ToDo #Homer" # query to do on Linkding. Use #tagname to search for tags
```
## Matrix
Displays a Matrix version, and shows if the server is online.
```yaml
- name: "Matrix - Server"
type: "Matrix"
logo: "assets/tools/sample.png"
url: "http://matrix.example.com"
```
## Mealie
Displays the number of recipes Mealie is keeping organized or the planned meal for today if one is planned.
```yaml
- name: "Mealie"
type: "Mealie"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
**API Key**: You will have to set an API key in the field `apikey` which can be created in your Mealie installation.
The API page can be found: Click on hamburger menu -> Click on your profile -> Click on "Manage your API Tokens"
## Medusa
Displays News (grey), Warning (orange) or Error (red) notifications bubbles from the Medusa application.
```yaml
- name: "Medusa"
type: "Medusa"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
The url must be the root url of Medusa application.
**API Key**: The Medusa API key can be found in General configuration > Interface. It is needed to access Medusa API.
## Miniflux
Displays the number of unread articles from your Miniflux RSS reader.
```yaml
- name: "Miniflux"
type: "Miniflux"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
style: "status" # Either "status" or "counter"
checkInterval: 60000 # Optional: Interval (in ms) for updating the unread count
```
**API Key**: Generate an API key in Miniflux web interface under **Settings > API Keys > Create a new API key**
## Nextcloud
Displays Nextcloud version and shows if Nextcloud is online, offline, or in [maintenance
mode](https://docs.nextcloud.com/server/stable/admin_manual/maintenance/upgrade.html#maintenance-mode).
```yaml
- name: Nextcloud
type: Nextcloud
logo: assets/tools/sample.png
url: https://my-service.url
```
## OctoPrint/Moonraker
The OctoPrint/Moonraker service only needs an `apikey` & `endpoint` and optionally a `display` or `url` option. `url` can be used when you click on the service it will launch the `url`
Moonraker's API mimmicks a few of OctoPrint's endpoints which makes these services compatible. See <https://moonraker.readthedocs.io/en/latest/web_api/#octoprint-api-emulation> for details.
```yaml
- name: "Octoprint"
type: "OctoPrint"
logo: assets/tools/sample.png
endpoint: "https://my-service-api.url:port"
apikey: "<---insert-api-key-here--->"
display: "text" # 'text' or 'bar'. Default to `text`.
```
## Olivetin
Displays a Olivetin version.
```yaml
- name: Olivetin
type: Olivetin
logo: assets/tools/sample.png
url: https://my-service.url
```
## OpenHAB
Displays OpenHAB system status, things count, and items count.
```yaml
- name: "OpenHAB"
type: "OpenHAB"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
things: true # query things API for counts
items: true # query items API for counts
```
**API Token**: Create an API token following the [official OpenHAB documentation](https://www.openhab.org/docs/configuration/apitokens.html)
**CORS Configuration**: Edit `services/runtime.cfg` and add:
```ini
org.openhab.cors:enable=true
```
## OpenWeatherMap
Using the OpenWeatherMap service you can display weather information about a given location.
The following configuration is available for the OpenWeatherMap service:
```yaml
- name: "Weather"
type: "OpenWeather"
apikey: "<---insert-api-key-here--->" # Request one from https://openweathermap.org/api.
location: "Amsterdam" # your location.
locationId: "2759794" # Optional: Specify OpenWeatherMap city ID for better accuracy
units: "metric" # units to display temperature. Can be one of: metric, imperial, kelvin. Defaults to kelvin.
background: "square" # choose which type of background you want behind the image. Can be one of: square, circle, none. Defaults to none.
```
**Remarks:**
If for some reason your city can't be found by entering the name in the `location` property, you could also try to configure the OWM city ID in the `locationId` property. To retrieve your specific City ID, go to the [OWM website](https://openweathermap.org), search for your city and retrieve the ID from the URL (for example, the City ID of Amsterdam is 2759794).
## Paperless-NGX
Displays total number of documents stored.
```yaml
- name: "Paperless"
type: "PaperlessNG"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
```
**API Key**: API key can be generated in Settings > Administration > Auth Tokens
## PeaNUT
Displays current status and UPS load of the UPS device.
```yaml
- name: "PeaNUT"
type: PeaNUT
logo: "assets/tools/sample.png"
url: https://my-service.url
# device: "ups" # The ID of the device
```
## PiAlert
Displays stats from your PiAlert server.
```yaml
- name: "PiAlert"
type: "PiAlert"
logo: "assets/tools/sample.png"
url: https://my-service.url
updateInterval: 5000 # (Optional) Interval (in ms) for updating the stats
```
## PiHole
Displays info about your local PiHole instance right on your Homer dashboard.
```yaml
- name: "Pi-hole"
type: "PiHole"
logo: "assets/tools/sample.png"
url: https://my-service.url
# endpoint: "https://my-service-api.url" # optional, For v6 API, this is the base URL used to fetch Pi-hole data overwriting the url
apikey: "<---insert-api-key-here--->" # optional, needed if web interface is password protected
apiVersion: 5 # optional, defaults to 5. Use 6 if your PiHole instance uses API v6
checkInterval: 3000 # optional, defaults to 300000. interval in ms to check Pi-hole status
```
**API Key**: Required only if Pi-hole web interface is password protected. Go to **Settings > API/Web Interface > Show API token**
**API Versions**:
- **v5** (default): Uses legacy API endpoints
- **v6**: Uses modern API with session management - set `apiVersion: 6`
## Ping
Checks if the target link is available and displays the round trip time (RTT) of the request.
By default the HEAD method is used but it can be configured to use GET using the optional `method` property.
Optionally, use `successCodes` to define which HTTP response status codes should be considered as available status.
```yaml
- name: "Awesome app"
type: Ping
logo: "assets/tools/sample.png"
url: "https://www.wikipedia.org/"
# method: "head"
# successCodes: [200, 418] # Optional, default to all 2xx HTTP response status codes
# timeout: 500 # Timeout in ms before ping is aborted. Default 2000
# subtitle: "Bookmark example" # By default, request round trip time is displayed when subtitle is not set
# updateInterval: 5000 # (Optional) Interval (in ms) for updating ping status
```
## Plex
Displays active streams, total movies, and total TV series from your Plex server.
```yaml
- name: "Plex"
type: "Plex"
logo: "assets/tools/sample.png"
url: "https://my-service.url/web"
endpoint: "https://my-service.url"
token: "<---insert-plex-token-here--->"
```
**Plex Token**: See [How to find your Plex token](https://www.plexopedia.com/plex-media-server/general/plex-token/)
## Portainer
Displays container counts (running/dead/misc), version, and online status from your Portainer instance.
```yaml
- name: "Portainer"
type: "Portainer"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
environments: # optional: specific environments to check
- "raspberry"
- "local"
```
**Requirements**: Portainer version 1.11 or later
**API Key**: Generate an access token in Portainer UI. See [Creating an Access Token](https://docs.portainer.io/api/access#creating-an-access-token)
## Prometheus
```yaml
- name: "Prometheus"
type: "Prometheus"
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## Proxmox
Displays status information of a Proxmox node (VMs running and disk, memory and cpu used).
```yaml
- name: "Proxmox - Node"
type: "Proxmox"
logo: "assets/tools/sample.png"
url: https://my-service.url
node: "your-node-name"
warning_value: 50
danger_value: 80
api_token: "PVEAPIToken=root@pam!your-api-token-name=your-api-token-key"
# values below this line are optional (default value are false/empty):
hide_decimals: true # removes decimals from stats values.
hide: [] # hides information. Possible values are "vms", "vms_total", "lxcs", "lxcs_total", "disk", "mem" and "cpu".
small_font_on_small_screens: true # uses small font on small screens (like mobile)
small_font_on_desktop: true # uses small font on desktops (just in case you're showing much info)
```
**API Key**: You can set it up in Proxmox under Permissions > API Tokens. You also need to know the realm the user of the API Token is assigned to (by default pam).
The API Token (or the user assigned to that token if not separated permissions is checked) are this:
| Path | Permission | Comments |
|---------------------|------------|-------------------------------------------------------------------|
| /nodes/\<your-node> | Sys.Audit | |
| /vms/\<id-vm> | VM.Audit | You need to have this permission on any VM you want to be counted |
It is highly recommended that you create and API Token with only these permissions on a read-only mode.
## qBittorrent
Displays the global upload and download rates, as well as the number of torrents
listed. The service communicates with the qBittorrent API interface which needs
to be accessible from the browser. Please consult
[the instructions](https://github.com/qbittorrent/qBittorrent/pull/12579)
for setting up qBittorrent.
```yaml
- name: "qBittorrent"
type: "qBittorrent"
logo: "assets/tools/sample.png"
url: https://my-service.url # Your rTorrent web UI, f.e. ruTorrent or Flood.
rateInterval: 2000 # Interval for updating the download and upload rates.
torrentInterval: 5000 # Interval for updating the torrent count.
```
## rTorrent
Displays the global upload and download rates, as well as the number of torrents
listed in rTorrent. The service communicates with the rTorrent XML-RPC interface which needs
to be accessible from the browser. Please consult
[the instructions](https://github.com/rakshasa/rtorrent-doc/blob/master/RPC-Setup-XMLRPC.md)
for setting up rTorrent.
```yaml
- name: "rTorrent"
type: "Rtorrent"
logo: "assets/tools/sample.png"
url: "https://my-service.url" # Your rTorrent web UI, f.e. ruTorrent or Flood.
xmlrpc: "https://my-service.url:port" # Reverse proxy for rTorrent's XML-RPC.
rateInterval: 5000 # Interval for updating the download and upload rates.
torrentInterval: 60000 # Interval for updating the torrent count.
username: "username" # Username for logging into rTorrent (if applicable).
password: "password" # Password for logging into rTorrent (if applicable).
```
## SABnzbd
Displays the number of currently active downloads on your SABnzbd instance.
```yaml
- name: "SABnzbd"
type: "SABnzbd"
logo: "assets/tools/sample.png"
url: https://my-service.url
apikey: "<---insert-api-key-here--->"
downloadInterval: 5000 # (Optional) Interval (in ms) for updating the download count
```
**API Key**: An API key is required, and can be obtained from the "Config" > "General" section of the SABnzbd config in the web UI.
## Scrutiny
Displays info about the total number of disk passed and failed S.M.A.R.T and scrutiny checks
```yaml
- name: "Scrutiny"
type: "Scrutiny"
logo: "assets/tools/sample.png"
url: https://my-service.url
updateInterval: 5000 # (Optional) Interval (in ms) for updating the status
```
## SpeedtestTracker
Displays the download and upload speeds in Mbit/s and the ping in ms.
```yaml
- name: "Speedtest Tracker"
type: "SpeedtestTracker"
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## Tautulli
Displays the number of currently active streams on you Plex instance.
```yaml
- name: "Tautulli"
type: "Tautulli"
logo: "assets/tools/sample.png"
url: https://my-service.url
checkInterval: 5000 # (Optional) Interval (in ms) for updating the status
apikey: "<---insert-api-key-here--->"
```
**API Key**: An API key is required, and can be obtained from the "Web Interface" section of settings on the Tautulli web UI.
Because the service type and link don't necessarily have to match, you could
even make the service type Tautulli on your Plex card and provide a separate
endpoint pointing to Tautulli!
```yaml
- name: "Plex"
type: "Tautulli"
logo: "assets/tools/sample.png"
url: https://my-plex.url/web # Plex
endpoint: https://my-tautulli.url # Tautulli
apikey: "<---insert-api-key-here--->"
```
## Tdarr
Displays the number of currently queued items for transcoding on your Tdarr instance as well as the number of errored items.
```yaml
- name: "Tdarr"
type: "Tdarr"
logo: "assets/tools/sample.png"
url: https://my-service.url
checkInterval: 5000 # (Optional) Interval (in ms) for updating the queue & error counts
```
## Traefik
Displays Traefik.
```yaml
- name: "Traefik"
type: "Traefik"
logo: "assets/tools/sample.png"
url: "http://traefik.example.com"
# basic_auth: "admin:password" # (Optional) Send Authorization header.
```
**Authentication**: If BasicAuth is set, credentials will be encoded in Base64 and sent as an Authorization header (`Basic <encoded_value>`). The value must be formatted as "admin:password".
## Transmission
Displays the global upload and download rates, as well as the number of active torrents from your Transmission daemon.
The service communicates with the Transmission RPC interface which needs to be accessible from the browser.
```yaml
- name: "Transmission"
logo: "assets/tools/sample.png"
url: "http://192.168.1.2:9091" # Your Transmission web interface URL
type: "Transmission"
auth: "username:password" # Optional: HTTP Basic Auth
interval: 5000 # Optional: Interval for refreshing data (ms)
target: "_blank" # Optional: HTML a tag target attribute
```
The service automatically handles Transmission's session management and CSRF protection.
## Truenas Scale
Displays TrueNAS version.
```yaml
- name: "Truenas"
type: "TruenasScale"
logo: "assets/tools/sample.png"
url: https://my-service.url
api_token: "<---insert-api-key-here--->"
```
## Uptime Kuma
Displays overall status, uptime percentage, and incident information from your Uptime Kuma status page.
```yaml
- name: "Uptime Kuma"
type: "UptimeKuma"
logo: "assets/tools/sample.png"
url: https://my-service.url
slug: "default" # status page slug, defaults to "default"
```
**Requirements**: Uptime Kuma version `1.13.1` or later (for [multiple status pages support](https://github.com/louislam/uptime-kuma/releases/tag/1.13.1))
## Vaultwarden
Displays Vaultwarden version and status.
```yaml
- name: "Vaultwarden - Server"
type: "Vaultwarden"
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## Wallabag
Displays Wallabag version.
```yaml
- name: Wallabag
type: Wallabag
logo: "assets/tools/sample.png"
url: https://my-service.url
```
## What's up Docker
Display info about the number of container running and the number for which an update is available on your Homer dashboard.
```yaml
- name: "What's Up Docker"
type: "WUD"
logo: "assets/tools/sample.png"
url: https://my-service.url
subtitle: "Docker image update notifier"
```

69
docs/development.md Normal file
View file

@ -0,0 +1,69 @@
# Development
If you want to contribute to Homer, please read the [contributing guidelines](https://github.com/bastienwirtz/homer/blob/main/CONTRIBUTING.md) first.
```sh
pnpm install
pnpm dev
```
## Custom services
Custom services are small VueJs component (see `src/components/services/`) that add little features to a classic, "static", dashboard item. It should be very simple.
A dashboard can contain a lot of items, so performance is very important.
The [`Generic`](https://github.com/bastienwirtz/homer/blob/main/src/components/services/Generic.vue) service provides a typical card layout which
you can extend to add specific features. Unless you want a completely different design, extended the generic service is the recommended way. It gives you 3 [slots](https://vuejs.org/v2/guide/components-slots.html#Named-Slots) to extend: `icon`, `content` and `indicator`.
Each one is **optional**, and will display the usual information if omitted.
Each service must implement the `item` [property](https://vuejs.org/v2/guide/components-props.html) and bind it the Generic component if used.
### Skeleton
```Vue
<template>
<Generic :item="item">
<template #icon>
<!-- left area containing the icon -->
</template>
<template #content>
<!-- main area containing the title, subtitle, ... -->
</template>
<template #indicator>
<!-- top right area, empty by default -->
</template>
</Generic>
</template>
<script>
import Generic from "./Generic.vue";
export default {
name: "MyNewService",
props: {
item: Object,
},
components: {
Generic,
}
};
</script>
```
## Themes
Themes are meant to be simple customization (written in [scss](https://sass-lang.com/documentation/syntax)).
To add a new theme, just add a file in the theme directory, and put all style in the `body #app.theme-<name>` scope. Then import it in the main style file.
```scss
// `src/assets/themes/my-awesome-theme.scss`
body #app.theme-my-awesome-theme. { ... }
```
```scss
// `src/assets/app.scss`
// Themes import
@import "./themes/sui.scss";
...
@import "./themes/my-awesome-theme.scss";
```

83
docs/kubernetes.md Normal file
View file

@ -0,0 +1,83 @@
# Kubernetes Installation
We have different solution to install Homer on Kubernetes Cluster, each solution responds to a specific need.
## Table of Contents
- [Helm Chart](#helm-chart)
- [Controller With CRDs](#controller-crds)
- [Controller With Ingress Annotations](#controller-annotations)
- [Operator](#Operator)
## Helm Chart
To deploy Homer in Kubernetes
Thanks to [@djjudas21](https://github.com/djjudas21) [charts](https://github.com/djjudas21/charts/tree/main/charts/homer):
### Installation
```sh
helm repo add djjudas21 https://djjudas21.github.io/charts/
helm repo update djjudas21
# install with all defaults
helm install homer djjudas21/homer
# install with customisations
wget https://raw.githubusercontent.com/djjudas21/charts/main/charts/homer/values.yaml
# edit values.yaml
helm install homer djjudas21/homer -f values.yaml
```
## Controller CRDs
To deploy Homer in Kubernetes with [Custom Resources Definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/) to dynamic declaration for Homer Service
Thanks to [@jplanckeel](https://github.com/jplanckeel) [homer-k8s](https://github.com/bananaops/homer-k8s/tree/main/):
### Installation
```sh
helm repo add bananaops https://bananaops.github.io/homer-k8s/
helm repo update bananaops
# install with all defaults
helm install homer bananaops/homer-k8s
# install with customisations
wget https://raw.githubusercontent.com/bananaops/homer-k8s/main/helm/homer-k8s/values.yaml
# edit values.yaml
helm install homer bananaops/homer-k8s -f values.yaml
```
### Usage
- [usage](https://github.com/bananaops/homer-k8s/tree/main/?tab=readme-ov-file#crds-homerservices)
## Controller Annotations
To deploy Homer in Kubernetes with controller to check ingress annotation and modify homer configuration
Thanks to [@paulfantom](https://github.com/paulfantom) [homer-reloader](https://github.com/paulfantom/homer-reloader/tree/main/):
## Operator
To deploy many Homer in Kubernetes with [Custom Resources Definition](https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/)
Thanks to [@rajsinghtech](https://github.com/rajsinghtech) [homer-operator](https://github.com/rajsinghtech/homer-operator/tree/main/):
### Installation
```sh
# install with customisations
wget https://raw.githubusercontent.com/rajsinghtech/homer-operator/main/deploy/operator.yaml
# Apply operator file
kubectl apply -f operator.yaml
```
### Usage
- [usage](https://github.com/rajsinghtech/homer-operator?tab=readme-ov-file#usage)

90
docs/theming.md Normal file
View file

@ -0,0 +1,90 @@
# Theming
## Change theme
The default theme can be changed using the yaml configuration file
```yaml
theme: default # 'default', 'walkxcode', or 'neon' see files in 'src/assets/themes'.
```
## Colors and background customization
Default colors and background can be customized for each theme variant (light and dark), using either the yaml config file, or the css variables (see "Additional stylesheets" below).
### Available options
| yaml | css | description |
| --------------------- | ----------------------- | --- |
| `highlight-primary` | `--highlight-primary` | header background, group title icons |
| `highlight-secondary` | `--highlight-secondary` | navbar background, default tag color |
| `highlight-hover` | `--highlight-hover` | navbar links hover, search input background |
| `background` | `--background` | page background color |
| `card-background` | `--card-background` | service card background color |
| `text` | `--text` | main text color |
| `text-header` | `--text-header` | header text color |
| `text-title` | `--text-title` | service card title color |
| `text-subtitle` | `--text-subtitle` | service card subtitle color |
| `card-shadow` | `--card-shadow` | Service card `box-shadow` |
| `link` | `--link` | Links color (footer & message), service card icon color |
| `link-hover` | `--link-hover` | Links hover color (footer & message), service card icon hover color |
| `background-image` | `--background-image` | page background image url (when used in css, set `url(<image-url>)` instead of just the url. see example below)|
YAML example
```yml
colors:
light:
highlight-primary: "#3367d6"
background-image: "assets/your/light/bg.webp"
...
dark:
highlight-primary: "#3367d6"
background-image: "assets/your/dark/bg.webp"
...
```
CSS example
```css
.light {
--highlight-primary: #3367d6;
--background-image: url("assets/your/light/bg.webp");
...
}
.dark {
--highlight-primary: #3367d6;
--background-image: url("assets/your/dark/bg.webp");
...
}
```
## Additional stylesheets
One or more additional stylesheets can be loaded to add or override style from the current theme. Use the 'stylesheet' option in the yaml configuration file to load your own CSS file.
```yml
stylesheet:
- "assets/custom.css"
```
### Customization example
#### Max width modification
```css
body #main-section .container {
max-width: 2000px; // adjust to your needs (eg: calc(100% - 100px), none, ...)
}
```
#### Background gradient
```css
#app {
height: 100%;
background: linear-gradient(90deg, #5c2483, #0095db);
}
```

246
docs/tips-and-tricks.md Normal file
View file

@ -0,0 +1,246 @@
# Tips & Tricks
Here is a collection of neat tips and tricks that Homer users have come up with!
## Dashboard icons
Great source to find service icons
- <https://selfh.st/icons/>
- <https://github.com/homarr-labs/dashboard-icons>
## Use Homer as a custom "new tab" page
#### `by @vosdev`
These extensions for [Firefox](https://addons.mozilla.org/firefox/addon/custom-new-tab-page) and [Chrome & Friends](https://chrome.google.com/webstore/detail/new-tab-changer/occbjkhimchkolibngmcefpjlbknggfh) allow you to have your homer dashboard in your new tab page, while leaving focus on the address bar meaning you can still type right away if you want to search or go to a page that is not on your homer dash.
The Firefox extension loads Homer in an iframe on your new tab page, meaning you have to add `target: '_top'` to each of your items.
```yaml
- name: "Reddit"
logo: "assets/daily/reddit.png"
url: "https://reddit.com"
target: '_top'
- name: "YouTube"
logo: "assets/daily/youtube.png"
url: "https://youtube.com"
target: '_top'
```
## YAML Anchors
#### `by @JamiePhonic`
Since Homer is configured using YAML, it supports all of YAML's helpful features, such as anchoring!
For example, you can define tags and tag styles for each "item" in a service.
Using Anchoring, you can define all your tags and their styles once like this: (for example)
```yaml
# Some pre-defined tag styles. reference these using <<: *{NAME} inside an item definition; For Example, <<: *Apps
tags:
Favourite: &Favourite
- tag: "Favourite"
tagstyle: "is-medium is-primary"
CI: &CI
- tag: "CI"
tagstyle: "is-medium is-success"
Apps: &Apps
- tag: "App"
tagstyle: "is-medium is-info"
```
and then simply reference these pre-defined (anchored) tags in each item like so:
```yaml
- name: "VS Code"
logo: "/assets/vscode.png"
subtitle: "Develop Code Anywhere, On Anything!"
<<: *Apps # Reference to the predefined "App" Tag
url: "https://vscode.example.com/"
target: "_blank" # optional html tag target attribute
````
Then when Homer reads your config, it will substitute your anchors automatically, the above example is equal to:
```yaml
- name: "VS Code"
logo: "/assets/vscode.png"
subtitle: "Develop Code Anywhere, On Anything!"
tag: "App"
tagstyle: "is-medium is-info"
url: "https://vscode.example.com/"
target: "_blank" # optional html tag target attribute
```
The end result is that if you want to update the name or style of any particular tag, just update it once, in the tags section!
Great if you have a lot of services or a lot of tags!
## YAML auto complete with a YAML schema
A lot of editor support auto completion, see <https://www.schemastore.org/json/>
The homer schema is available here: <https://raw.githubusercontent.com/bastienwirtz/homer/main/.schema/config-schema.json>
For example with IntelliJ you can define:
```yaml
# $schema: https://raw.githubusercontent.com/bastienwirtz/homer/main/.schema/config-schema.json
```
With VSCode you can define it like this:
```yaml
# yaml-language-server: $schema=https://raw.githubusercontent.com/bastienwirtz/homer/main/.schema/config-schema.json
```
## Remotely edit your config with Code Server
#### `by @JamiePhonic`
Homer doesn't yet provide a way to edit your configuration from inside Homer itself, but that doesn't mean it can't be done!
You can setup and use [Code-Server](https://github.com/cdr/code-server) to edit your `config.yml` file from anywhere!
If you're running Homer in docker, you can setup a Code-Server container and pass your homer config directory into it.
Simply pass your homer config directory as an extra -v parameter to your code-server container:
```sh
-v '/your/local/homer/config-dir/':'/config/homer':'rw'
```
This will map your homer config directory (For example, /docker/appdata/homer/) into code-server's `/config/` directory, in a sub folder called `homer`
As a bonus, Code-Server puts the "current folder" as a parameter in the URL bar, so you could add a `links:` entry in Homer that points to your code-server instance with the directory pre-filled for essentially 1 click editing!
For example:
```yml
links:
- name: Edit config
icon: fas fa-cog
url: https://vscode.example.net/?folder=/config/homer
target: "_blank" # optional html tag target attribute
```
where the path after `?folder=` is the path to the folder where you mounted your homer config INSIDE the Code-Server container.
### Example Code-Server docker create command
```sh
docker create \
--name=code-server \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=Europe/London \
-e PASSWORD={YOUR_PASSWORD} `#optional` \
-e SUDO_PASSWORD={YOUR SUDO_PASSWORD} `#optional` \
-p 8443:8443 \
-v /path/to/appdata/config:/config \
-v /your/local/homer/config-dir/:/config/homer \
--restart unless-stopped \
linuxserver/code-server
```
## Get the news headlines in Homer
### Mapping Fields
Most times, the url you're getting headlines from follows a different schema than the one expected by Homer.
For example, if you would like to show jokes from ChuckNorris.io, you'll find that the url <https://api.chucknorris.io/jokes/random> is giving you info like this:
```json
{
"categories": [],
"created_at": "2020-01-05 13:42:22.089095",
"icon_url": "https://assets.chucknorris.host/img/avatar/chuck-norris.png",
"id": "MR2-BnMBR667xSpQBIleUg",
"updated_at": "2020-01-05 13:42:22.089095",
"url": "https://api.chucknorris.io/jokes/MR2-BnMBR667xSpQBIleUg",
"value": "Chuck Norris can quitely sneak up on himself"
}
```
but... you need that info to be transformed to something like this:
```json
{
"title": "MR2-BnMBR667xSpQBIleUg",
"content": "Chuck Norris can quitely sneak up on himself"
}
```
Now, you can do that using the `mapping` field in your `message` configuration. This example would be something like this:
```yml
message:
url: https://api.chucknorris.io/jokes/random
mapping:
title: 'id'
content: 'value'
```
As you would see, using the ID as a title doesn't seem nice, that's why when a field is empty it would keep the default values, like this:
```yml
message:
url: https://api.chucknorris.io/jokes/random
mapping:
content: 'value'
title: "Chuck Norris Facts!"
```
and even an error message in case the `url` didn't respond or threw an error:
```yml
message:
url: https://api.chucknorris.io/jokes/random
mapping:
content: 'value'
title: "Chuck Norris Facts!"
content: "Message could not be loaded"
```
#### `by @JamiePhonic`
Homer allows you to set a "message" that will appear at the top of the page, however, you can also supply a `url:`.
If the URL you specified returns a JSON object that defines a `title` and `content` item, homer will replace these values from your `config.yml` with the ones in the returned object.
So, using [Node-Red](https://nodered.org/docs/getting-started/) and a quick flow, you can process an RSS feed to replace the message with a news item!
To get started, simply import [this flow](https://flows.nodered.org/flow/4b6406c9a684c26ace0430dd1826e95d) into your Node-Red instance and change the RSS feed in the "Get News RSS Feed" node to one of your choosing!
So far, the flow has been tested with BBC News and Sky News, however it should be easy to modify the flow to work with other RSS feeds if they don't work out of the box!
## Write HTML into the dashboard
### Show latest camera feed
#### `by @matheusvellone`
The `message.content` config entry accepts HTML code, so you can add images.
If you use Frigate, or have any `latest.jpg` URL for your camera, you can add it to your dashboard. You can also style the `div`/`img` tags to look nicer on your dashboard.
```yml
message:
title: Cameras
content: >
<div>
<a href="http://frigate.local:5000/cameras/garage">
<img src="http://frigate.local:5000/api/garage/latest.jpg?h=220"/>
</a>
<a href="http://frigate.local:5000/cameras/backyard">
<img src="http://frigate.local:5000/api/backyard/latest.jpg?h=220"/>
</a>
</div>
```
When using Frigate you can even add a live feed to your dashboard, like this:
```yml
message:
title: Cameras
content: >
<img src="http://frigate.local:5000/api/piscina"/>
```

61
docs/troubleshooting.md Normal file
View file

@ -0,0 +1,61 @@
# Troubleshooting
## My docker container refuse to start / is stuck at restarting
You might be facing a permission issue. First of all, check your container logs (adjust the container name if necessary):
```sh
$ docker logs homer
[...]
Assets directory not writable. Check assets directory permissions & docker user or skip default assets install by setting the INIT_ASSETS env var to 0
```
In this case you need to make sure your mounted assets directory have the same GID / UID the container user have (default 1000:1000), and that the read and write permission is granted for the user or the group.
You can either:
- Update your assets directory permissions (ex: `chown -R 1000:1000 /your/assets/folder/`, `chmod -R u+rw /your/assets/folder/`)
- Change the docker user by using the `--user` arguments with docker cli or `user: 1000:1000` with docker compose.
> [!NOTE]
>
> - **Do not** use env var to set the GID / UID of the user running container. Use the Docker `user` option.
> - **Do not** use 0:0 as a user value, it would be a security risk, and it's not guaranty to work.
Check this [thread](https://github.com/bastienwirtz/homer/issues/459) for more information about debugging
permission issues.
## My service card doesn't work, nothing appears or offline status is displayed (pi-hole, sonarr, ping, ...)
You might be facing a [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS) (Cross Origin Request Sharing) issue.
It happens when the targeted service is hosted on a different domain or port.
Web browsers will not allow to fetch information from a different site without explicit permissions (the targeted service
must include a special `Access-Control-Allow-Origin: *` HTTP headers).
If this happens your web console (`ctrl+shift+i` or `F12`) will be filled with this kind of errors:
```text
Access to fetch at 'https://<target-service>' from origin 'https://<homer>' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
```
To resolve this, you can either:
- Host all your target service under the same domain & port.
- Modify the target server configuration so that the response of the server included following header- `Access-Control-Allow-Origin: *` (<https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS#simple_requests>). It might be an option in the targeted service, otherwise depending on how the service is hosted, the proxy or web server can seamlessly add it.
- **Use a proxy** to add the necessary CORS headers (lot of options, some of them described [here](https://enable-cors.org/server.html). Also check [`CORSair`](https://github.com/bastienwirtz/corsair), a light and simple solution)
## I am using an authentication proxy and homer says I am offline
This should be a configuration issue.
- Make sure the option `connectivityCheck` is set to `true` in configuration.
- Check your proxy configuration, the expected behavior is to redirect user using a 302 to the login page when user is not authenticated.
## I put my API key into the OpenWeather service and it still isn't working
If you have just made an OpenWeatherMap account and/or a newly-made API key, there is a high chance that you need to wait for it to be activated (often a few hours). If after waiting it still doesn't work, make sure to check the location you have provided since it may be an invalid location.
For some basic debugging steps, you can:
- Check with a large city such as Amsterdam as the specified location within your configuration.
- Make sure your web browser is running the latest version of the homer configuration after updating the location (Ctrl + Shift + R).
- Check for errors within the browser console (Ctrl + Shift + I) relating to api.openweathermap.org

22
dummy-data/README.md Normal file
View file

@ -0,0 +1,22 @@
# Dummy data
This directory content makes possible to test custom services cards or create a demo without actually running the service.
The principle is simple: save a sample output of the API used in the service in a static file in this directory. The path must be identical as the service endpoint to be used seamlessly.
## Start the mock server to expose dummy data
```sh
pnpm mock
```
## How to add a new services sample
- create a directory for your service, and any sub-folder existing in the service api path.
- save the api output in a file named after the service endpoint.
Example:
```sh
mkdir pihole
curl http://my-pihole.me/admin/api.php -o pihole/api.php # /admin is omitted because for PiHole, the implementation expect it to be in the base url (`url` or `endpoint` property)
```

2
dummy-data/_headers Normal file
View file

@ -0,0 +1,2 @@
/*
Content-Type: application/json

View file

@ -0,0 +1,51 @@
{
"time_units": "hours",
"num_dns_queries": 28947,
"num_blocked_filtering": 12489,
"num_replaced_safebrowsing": 0,
"num_replaced_safesearch": 0,
"num_replaced_parental": 0,
"avg_processing_time": 0.34,
"top_queried_domains": [
{
"name": "example.com",
"count": 1289
},
{
"name": "api.github.com",
"count": 892
}
],
"top_clients": [
{
"name": "192.168.1.100",
"count": 8945
},
{
"name": "192.168.1.101",
"count": 6234
}
],
"top_blocked_domains": [
{
"name": "ads.google.com",
"count": 1245
},
{
"name": "tracker.example.com",
"count": 987
}
],
"dns_queries": [
12450, 13200, 14100, 13800, 12900, 11200, 10800, 9600, 8200, 7800,
9200, 10500, 12100, 13600, 14800, 15200, 14900, 13700, 12800, 11900,
11200, 10800, 10200, 9800
],
"blocked_filtering": [
5200, 5800, 6100, 5900, 5400, 4800, 4600, 4200, 3600, 3400,
4000, 4500, 5200, 5800, 6300, 6500, 6300, 5800, 5400, 5100,
4800, 4600, 4300, 4200
],
"replaced_safebrowsing": [],
"replaced_parental": []
}

View file

@ -0,0 +1,16 @@
{
"protection_enabled": true,
"version": "v0.107.48",
"language": "en",
"dns_address": "127.0.0.1:53",
"dns_port": 53,
"protection_disabled_duration": null,
"http_port": 80,
"https_port": 443,
"querylog_enabled": true,
"querylog_size": 5000,
"querylog_size_memory": 1000,
"querylog_interval": 2160,
"dhcp_available": true,
"running": true
}

View file

@ -0,0 +1,215 @@
[
{
"Id": "8dfafdbc3a40",
"Names": ["/boring_feynman"],
"Image": "nginx:latest",
"ImageID": "sha256:f6d0b4767a6c",
"Command": "/docker-entrypoint.sh nginx -g 'daemon off;'",
"Created": 1640995200,
"Ports": [
{
"IP": "0.0.0.0",
"PrivatePort": 80,
"PublicPort": 8080,
"Type": "tcp"
}
],
"Labels": {
"maintainer": "NGINX Docker Maintainers <docker-maint@nginx.com>"
},
"State": "running",
"Status": "Up 2 hours",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "f2de39df4171",
"EndpointID": "2cdc4edb1ded",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:02"
}
}
},
"Mounts": []
},
{
"Id": "9e87a2b84b8e",
"Names": ["/web-app"],
"Image": "node:16-alpine",
"ImageID": "sha256:c85b8f829d1f",
"Command": "npm start",
"Created": 1640991600,
"Ports": [
{
"IP": "0.0.0.0",
"PrivatePort": 3000,
"PublicPort": 3000,
"Type": "tcp"
}
],
"Labels": {},
"State": "running",
"Status": "Up 3 hours",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "f2de39df4171",
"EndpointID": "3edc5fdb2efe",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.3",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:03"
}
}
},
"Mounts": [
{
"Type": "bind",
"Source": "/home/user/app",
"Destination": "/app",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
},
{
"Id": "7b9a3c6d2e1f",
"Names": ["/database"],
"Image": "postgres:13",
"ImageID": "sha256:b4ed8d5b4f3a",
"Command": "docker-entrypoint.sh postgres",
"Created": 1640988000,
"Ports": [
{
"IP": "127.0.0.1",
"PrivatePort": 5432,
"PublicPort": 5432,
"Type": "tcp"
}
],
"Labels": {},
"State": "dead",
"Status": "Up 4 hours",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "f2de39df4171",
"EndpointID": "4fdc6gdb3gfg",
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.4",
"IPPrefixLen": 16,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": "02:42:ac:11:00:04"
}
}
},
"Mounts": [
{
"Type": "volume",
"Name": "postgres_data",
"Source": "/var/lib/docker/volumes/postgres_data/_data",
"Destination": "/var/lib/postgresql/data",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
}
]
},
{
"Id": "5c8d1f4e9a2b",
"Names": ["/old-service"],
"Image": "ubuntu:20.04",
"ImageID": "sha256:f643c72bc252",
"Command": "/bin/bash",
"Created": 1640984400,
"Ports": [],
"Labels": {},
"State": "exited",
"Status": "Exited (0) 2 hours ago",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "",
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": ""
}
}
},
"Mounts": []
},
{
"Id": "1a2b3c4d5e6f",
"Names": ["/backup-job"],
"Image": "alpine:latest",
"ImageID": "sha256:c059bfaa849c",
"Command": "sh -c 'sleep 3600'",
"Created": 1640980800,
"Ports": [],
"Labels": {},
"State": "exited",
"Status": "Exited (0) 30 minutes ago",
"HostConfig": {
"NetworkMode": "default"
},
"NetworkSettings": {
"Networks": {
"bridge": {
"IPAMConfig": null,
"Links": null,
"Aliases": null,
"NetworkID": "",
"EndpointID": "",
"Gateway": "",
"IPAddress": "",
"IPPrefixLen": 0,
"IPv6Gateway": "",
"GlobalIPv6Address": "",
"GlobalIPv6PrefixLen": 0,
"MacAddress": ""
}
}
},
"Mounts": []
}
]

View file

@ -0,0 +1 @@
1.8.3a

View file

@ -0,0 +1,24 @@
{
"LocalAddress": "192.168.1.100:8096",
"ServerName": "Homer-Emby-Server",
"Version": "4.8.8.0",
"ProductName": "Emby Server",
"OperatingSystem": "Linux",
"Id": "a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"StartupWizardCompleted": true,
"SupportsLibraryMonitor": true,
"WebSocketPortNumber": 8096,
"CompletedInstallations": [],
"CanSelfRestart": true,
"CanSelfUpdate": true,
"CanLaunchWebBrowser": false,
"WanAddress": "192.168.1.100:8096",
"HasUpdateAvailable": false,
"SupportsAutoRunAtStartup": false,
"TranscodingTempPath": "/var/lib/emby/transcoding-temp",
"CachePath": "/var/lib/emby/cache",
"LogPath": "/var/log/emby",
"InternalMetadataPath": "/var/lib/emby/metadata",
"ItemsByNamePath": "/var/lib/emby/metadata/People",
"ProgramDataPath": "/var/lib/emby"
}

View file

@ -0,0 +1,12 @@
{
"MovieCount": 1247,
"SeriesCount": 89,
"EpisodeCount": 2156,
"ArtistCount": 234,
"AlbumCount": 567,
"SongCount": 8923,
"MusicVideoCount": 42,
"BoxSetCount": 23,
"BookCount": 156,
"ItemCount": 13437
}

View file

@ -0,0 +1,3 @@
SID=username/c7fef7ce380efb8c79a0df25686a3387
LSID=null
Auth=username/c7fef7ce380efb8c79a0df25686a3387

View file

@ -0,0 +1 @@
{"subscriptions":[{"id":"feed/3","title":"Test News","categories":[{"id":"user/-/label/News","label":"News"}],"url":"https://www.reddit.com/r/testnews.rss","htmlUrl":"https://www.reddit.com/r/testnews","iconUrl":"http://192.168.10.165/f.php?b4a11f09"},{"id":"feed/17","title":"Announcements Latest Topics","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://forums.testsite.net/forums/forum/7-announcements.xml","htmlUrl":"https://forums.testsite.net/forum/7-announcements/","iconUrl":"http://192.168.10.165/f.php?70b5fd98"},{"id":"feed/16","title":"Blog","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://www.firewall.com/blog/rss.xml","htmlUrl":"https://www.firewall.com/blog","iconUrl":"http://192.168.20.165/f.php?0107d102"},{"id":"feed/2","title":"techsite","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://techsite.com/rss","htmlUrl":"https://techsite.com/","iconUrl":"http://192.168.10.100/f.php?69ad225d"},{"id":"feed/5","title":"Hackaday","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://hackaday.com/feed/","htmlUrl":"https://hackaday.com/","iconUrl":"http://192.168.10.15/f.php?7be93110"},{"id":"feed/7","title":"Self-Hosted Alternatives to Popular Services","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://www.reddit.com/r/selfhosted.rss","htmlUrl":"https://www.reddit.com/r/selfhosted","iconUrl":"http://192.168.10.100/f.php?87bdf454"},{"id":"feed/15","title":"UniFi Access PointSwitchLTE | Releases | Ubiquiti Community","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://community.ui.com/rss/releases/UniFi-Access-Point-Switch-LTE/9fc3b2fa-9e73-449a-924f-470e79884470","htmlUrl":"https://community.ui.com/","iconUrl":"http://192.168.10.100/f.php?a8b7368a"},{"id":"feed/14","title":"UniFi Network Application | Releases | Ubiquiti Community","categories":[{"id":"user/-/label/Technology","label":"Technology"}],"url":"https://community.ui.com/rss/releases/UniFi-Network-Application/e6712595-81bb-4829-8e42-9e2630fabcfe","htmlUrl":"https://community.ui.com/","iconUrl":"http://192.168.10.100/f.php?87f0ed63"},{"id":"feed/1","title":"FreshRSS releases","categories":[{"id":"user/-/label/Uncategorized","label":"Uncategorized"}],"url":"https://github.com/FreshRSS/FreshRSS/releases.atom","htmlUrl":"https://github.com/FreshRSS/FreshRSS/","iconUrl":"http://192.168.10.100/f.php?261334e9"},{"id":"feed/10","title":"Hooked on Wood","categories":[{"id":"user/-/label/Videos","label":"Videos"}],"url":"https://www.youtube.com/feeds/videos.xml?channel_id=UCuvjeMfKGqSoYc32Xk5MLfQ","htmlUrl":"https://www.youtube.com/channel/UCuvjeMfKGqSoYc32Xk5MLfQ","iconUrl":"http://192.168.10.100/f.php?e6aff645"},{"id":"feed/11","title":"Jeff Geerling","categories":[{"id":"user/-/label/Videos","label":"Videos"}],"url":"https://www.youtube.com/feeds/videos.xml?channel_id=UCR-DXc1voovS8nhAvccRZhg","htmlUrl":"https://www.youtube.com/channel/UCR-DXc1voovS8nhAvccRZhg","iconUrl":"http://192.168.10.100/f.php?5b542c1f"},{"id":"feed/9","title":"Lawrence Systems","categories":[{"id":"user/-/label/Videos","label":"Videos"}],"url":"https://www.youtube.com/feeds/videos.xml?channel_id=UCHkYOD-3fZbuGhwsADBd9ZQ","htmlUrl":"https://www.youtube.com/channel/UCHkYOD-3fZbuGhwsADBd9ZQ","iconUrl":"http://192.168.10.100/f.php?3ab68f8e"},{"id":"feed/13","title":"Thunderf00t","categories":[{"id":"user/-/label/Videos","label":"Videos"}],"url":"https://www.youtube.com/feeds/videos.xml?channel_id=UCmb8hO2ilV9vRa8cilis88A","htmlUrl":"https://www.youtube.com/channel/UCmb8hO2ilV9vRa8cilis88A","iconUrl":"http://192.168.10.100/f.php?d87007ad"}]}

View file

@ -0,0 +1 @@
{"max":1070,"unreadcounts":[{"id":"feed/3","count":234,"newestItemTimestampUsec":"1690915225367106"},{"id":"user/-/label/News","count":234,"newestItemTimestampUsec":"1690915225367106"},{"id":"feed/17","count":48,"newestItemTimestampUsec":"1689390054724200"},{"id":"feed/16","count":17,"newestItemTimestampUsec":"1689796853964422"},{"id":"feed/2","count":219,"newestItemTimestampUsec":"1690916425408239"},{"id":"feed/5","count":199,"newestItemTimestampUsec":"1690915225367107"},{"id":"feed/7","count":211,"newestItemTimestampUsec":"1690916425408242"},{"id":"feed/15","count":22,"newestItemTimestampUsec":"1689663652972458"},{"id":"feed/14","count":21,"newestItemTimestampUsec":"1688368807781577"},{"id":"user/-/label/Technology","count":737,"newestItemTimestampUsec":"1690916425408242"},{"id":"feed/1","count":10,"newestItemTimestampUsec":"1687016967198678"},{"id":"user/-/label/Uncategorized","count":10,"newestItemTimestampUsec":"1687016967198678"},{"id":"feed/10","count":15,"newestItemTimestampUsec":"1688654406671211"},{"id":"feed/11","count":25,"newestItemTimestampUsec":"1690902033356786"},{"id":"feed/9","count":34,"newestItemTimestampUsec":"1690736426018726"},{"id":"feed/13","count":15,"newestItemTimestampUsec":"1690837226605329"},{"id":"user/-/label/Videos","count":89,"newestItemTimestampUsec":"1690902033356786"},{"id":"user/-/state/com.google/reading-list","count":1070,"newestItemTimestampUsec":"1690916425408242"}]}

View file

@ -0,0 +1,211 @@
[
{
"name": "Gateway",
"group": "Services",
"key": "services_gateway",
"results": [
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:35:41.784208588Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:40:41.804489793Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:45:41.837925713Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:50:41.848391366Z"
}
]
},
{
"name": "Website",
"group": "External",
"key": "external_website",
"results": [
{
"status": 200,
"hostname": "www.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": false
}
],
"success": false,
"timestamp": "2025-05-26T07:35:41.784208588Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": false
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": false,
"timestamp": "2025-05-26T07:40:41.804489793Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:45:41.837925713Z"
},
{
"status": 200,
"hostname": "gateway.example.com",
"duration": 10000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": true
},
{
"condition": "[RESPONSE_TIME] < 500",
"success": true
}
],
"success": true,
"timestamp": "2025-05-26T07:50:41.848391366Z"
}
]
},
{
"name": "DNS",
"group": "Services",
"key": "services_dns",
"results": [
{
"status": 200,
"hostname": "ns1.example",
"duration": 20000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": false
}
],
"success": false,
"timestamp": "2025-05-26T07:35:41.784208588Z"
},
{
"status": 200,
"hostname": "ns1.example.com",
"duration": 20000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": false
}
],
"success": false,
"timestamp": "2025-05-26T07:40:41.804489793Z"
},
{
"status": 200,
"hostname": "ns1.example.com",
"duration": 20000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": false
}
],
"success": false,
"timestamp": "2025-05-26T07:45:41.837925713Z"
},
{
"status": 200,
"hostname": "ns1.example.com",
"duration": 20000000,
"conditionResults": [
{
"condition": "[STATUS] == 200",
"success": false
}
],
"success": false,
"timestamp": "2025-05-26T07:50:41.848391366Z"
}
]
}
]

View file

@ -0,0 +1,11 @@
{
"info": {
"description": "This documentation describes the Forgejo API.",
"title": "Forgejo API",
"license": {
"name": "MIT",
"url": "http://opensource.org/licenses/MIT"
},
"version": "8.0.3+gitea-1.22.0"
}
}

View file

@ -0,0 +1 @@
{"cpu_name":"AMD Ryzen 7 3700X 8-Core Processor","cpu_hz_current":2662987562.5,"cpu_hz":3600000000.0,"cpu":3.7,"percpu":[{"key":"cpu_number","cpu_number":0,"total":5.1,"user":3.3,"system":0.6,"idle":94.9,"nice":0.0,"iowait":0.0,"irq":0.8,"softirq":0.3,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":1,"total":2.6,"user":2.0,"system":0.5,"idle":97.4,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.1,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":2,"total":1.6,"user":1.1,"system":0.3,"idle":98.4,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":3,"total":7.4,"user":6.2,"system":0.9,"idle":92.6,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":4,"total":1.3,"user":0.9,"system":0.4,"idle":98.7,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":5,"total":10.4,"user":8.9,"system":1.2,"idle":89.6,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":6,"total":3.1,"user":2.3,"system":0.6,"idle":96.9,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":7,"total":2.1,"user":1.3,"system":0.6,"idle":97.9,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":8,"total":5.8,"user":4.9,"system":0.7,"idle":94.2,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":9,"total":2.0,"user":1.3,"system":0.4,"idle":98.0,"nice":0.0,"iowait":0.2,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":10,"total":1.5,"user":0.9,"system":0.3,"idle":98.5,"nice":0.0,"iowait":0.2,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":11,"total":5.3,"user":4.6,"system":0.6,"idle":94.7,"nice":0.0,"iowait":0.1,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":12,"total":1.5,"user":1.0,"system":0.4,"idle":98.5,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":13,"total":5.7,"user":4.9,"system":0.7,"idle":94.3,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":14,"total":2.9,"user":2.0,"system":0.8,"idle":97.1,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null},{"key":"cpu_number","cpu_number":15,"total":1.7,"user":1.1,"system":0.5,"idle":98.3,"nice":0.0,"iowait":0.0,"irq":0.1,"softirq":0.0,"steal":0.0,"guest":0.0,"guest_nice":0.0,"dpc":null,"interrupt":null}],"mem":59.6,"swap":0.0,"cpu_log_core":16,"cpu_phys_core":8,"load":5.7}

4
dummy-data/gotify/health Normal file
View file

@ -0,0 +1,4 @@
{
"health": "green",
"database": "green"
}

65
dummy-data/gotify/message Normal file
View file

@ -0,0 +1,65 @@
{
"messages": [
{
"id": 1,
"appid": 1,
"message": "System backup completed successfully",
"title": "Backup Service",
"priority": 2,
"date": "2024-01-15T10:30:00Z"
},
{
"id": 2,
"appid": 2,
"message": "Database optimization finished",
"title": "Database Manager",
"priority": 1,
"date": "2024-01-15T09:15:00Z"
},
{
"id": 3,
"appid": 1,
"message": "Server restart scheduled for maintenance",
"title": "System Admin",
"priority": 5,
"date": "2024-01-15T08:45:00Z"
},
{
"id": 4,
"appid": 3,
"message": "New user registration: john.doe@example.com",
"title": "User Management",
"priority": 1,
"date": "2024-01-15T07:20:00Z"
},
{
"id": 5,
"appid": 2,
"message": "Weekly report generated and sent",
"title": "Report Generator",
"priority": 2,
"date": "2024-01-14T18:00:00Z"
},
{
"id": 6,
"appid": 4,
"message": "Security scan completed - no threats detected",
"title": "Security Monitor",
"priority": 2,
"date": "2024-01-14T16:30:00Z"
},
{
"id": 7,
"appid": 1,
"message": "Disk usage is at 85% on /var partition",
"title": "System Monitor",
"priority": 4,
"date": "2024-01-14T14:15:00Z"
}
],
"paging": {
"size": 7,
"since": 0,
"limit": 100
}
}

View file

@ -0,0 +1,95 @@
{
"checks": [
{
"name": "Database Backup",
"tags": "backup database",
"desc": "Daily database backup job",
"grace": 3600,
"n_pings": 127,
"status": "up",
"last_ping": "2024-01-15T10:30:00+00:00",
"next_ping": "2024-01-16T10:30:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
},
{
"name": "Web Server Monitoring",
"tags": "web server nginx",
"desc": "Monitor web server health",
"grace": 300,
"n_pings": 2847,
"status": "up",
"last_ping": "2024-01-15T10:25:00+00:00",
"next_ping": "2024-01-15T10:30:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "b2c3d4e5-f6g7-8901-bcde-f23456789012"
},
{
"name": "SSL Certificate Check",
"tags": "ssl certificate",
"desc": "Weekly SSL certificate expiry check",
"grace": 86400,
"n_pings": 52,
"status": "up",
"last_ping": "2024-01-14T12:00:00+00:00",
"next_ping": "2024-01-21T12:00:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "c3d4e5f6-g7h8-9012-cdef-345678901234"
},
{
"name": "Log Cleanup Service",
"tags": "cleanup logs maintenance",
"desc": "Weekly log file cleanup",
"grace": 7200,
"n_pings": 15,
"status": "grace",
"last_ping": "2024-01-13T02:00:00+00:00",
"next_ping": "2024-01-20T02:00:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "d4e5f6g7-h8i9-0123-defa-456789012345"
},
{
"name": "Email Service",
"tags": "email smtp",
"desc": "Email service availability check",
"grace": 600,
"n_pings": 0,
"status": "down",
"last_ping": "2024-01-12T08:15:00+00:00",
"next_ping": "2024-01-15T08:15:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "e5f6g7h8-i9j0-1234-efab-567890123456"
},
{
"name": "API Health Check",
"tags": "api health",
"desc": "External API endpoint health monitoring",
"grace": 180,
"n_pings": 1440,
"status": "up",
"last_ping": "2024-01-15T10:28:00+00:00",
"next_ping": "2024-01-15T10:30:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "f6g7h8i9-j0k1-2345-fabc-678901234567"
},
{
"name": "Backup Verification",
"tags": "backup verify",
"desc": "Verify backup integrity",
"grace": 1800,
"n_pings": 45,
"status": "grace",
"last_ping": "2024-01-14T22:30:00+00:00",
"next_ping": "2024-01-15T22:30:00+00:00",
"manual_resume": false,
"methods": "",
"unique_key": "g7h8i9j0-k1l2-3456-gbcd-789012345678"
}
]
}

View file

@ -0,0 +1,45 @@
{
"location_name": "Home",
"latitude": 40.7128,
"longitude": -74.0060,
"elevation": 10,
"unit_system": {
"length": "km",
"mass": "kg",
"pressure": "Pa",
"temperature": "°C",
"volume": "L"
},
"time_zone": "America/New_York",
"components": [
"automation",
"climate",
"device_tracker",
"frontend",
"history",
"light",
"logger",
"media_player",
"recorder",
"script",
"sensor",
"switch",
"system_health",
"weather"
],
"config_dir": "/config",
"allowlist_external_dirs": [
"/config",
"/share"
],
"allowlist_external_urls": [],
"version": "2024.1.5",
"config_source": "storage",
"recovery_mode": false,
"state": "RUNNING",
"external_url": null,
"internal_url": null,
"currency": "USD",
"country": "US",
"language": "en"
}

View file

@ -0,0 +1,141 @@
[
{
"entity_id": "sensor.living_room_temperature",
"state": "22.5",
"attributes": {
"unit_of_measurement": "°C",
"device_class": "temperature",
"friendly_name": "Living Room Temperature"
},
"last_changed": "2024-01-15T10:30:00+00:00",
"last_updated": "2024-01-15T10:30:00+00:00",
"context": {
"id": "01HMV123456789",
"parent_id": null,
"user_id": null
}
},
{
"entity_id": "light.bedroom_ceiling",
"state": "on",
"attributes": {
"brightness": 180,
"color_mode": "brightness",
"supported_color_modes": ["brightness"],
"friendly_name": "Bedroom Ceiling Light"
},
"last_changed": "2024-01-15T09:15:00+00:00",
"last_updated": "2024-01-15T09:15:00+00:00",
"context": {
"id": "01HMV234567890",
"parent_id": null,
"user_id": "user123"
}
},
{
"entity_id": "switch.coffee_maker",
"state": "off",
"attributes": {
"friendly_name": "Coffee Maker"
},
"last_changed": "2024-01-14T22:00:00+00:00",
"last_updated": "2024-01-14T22:00:00+00:00",
"context": {
"id": "01HMV345678901",
"parent_id": null,
"user_id": null
}
},
{
"entity_id": "climate.living_room",
"state": "heat",
"attributes": {
"temperature": 21.0,
"current_temperature": 20.5,
"hvac_modes": ["off", "heat", "cool", "auto"],
"min_temp": 7.0,
"max_temp": 35.0,
"target_temp_step": 0.5,
"friendly_name": "Living Room Thermostat"
},
"last_changed": "2024-01-15T08:00:00+00:00",
"last_updated": "2024-01-15T10:25:00+00:00",
"context": {
"id": "01HMV456789012",
"parent_id": null,
"user_id": "user123"
}
},
{
"entity_id": "sensor.front_door",
"state": "closed",
"attributes": {
"device_class": "door",
"friendly_name": "Front Door"
},
"last_changed": "2024-01-15T07:30:00+00:00",
"last_updated": "2024-01-15T07:30:00+00:00",
"context": {
"id": "01HMV567890123",
"parent_id": null,
"user_id": null
}
},
{
"entity_id": "media_player.living_room_tv",
"state": "playing",
"attributes": {
"volume_level": 0.4,
"is_volume_muted": false,
"media_content_type": "tvshow",
"media_title": "The Office",
"app_name": "Netflix",
"friendly_name": "Living Room TV"
},
"last_changed": "2024-01-15T10:00:00+00:00",
"last_updated": "2024-01-15T10:20:00+00:00",
"context": {
"id": "01HMV678901234",
"parent_id": null,
"user_id": "user123"
}
},
{
"entity_id": "automation.morning_routine",
"state": "on",
"attributes": {
"last_triggered": "2024-01-15T07:00:00+00:00",
"mode": "single",
"current": 0,
"friendly_name": "Morning Routine"
},
"last_changed": "2024-01-14T07:00:00+00:00",
"last_updated": "2024-01-15T07:00:00+00:00",
"context": {
"id": "01HMV789012345",
"parent_id": null,
"user_id": null
}
},
{
"entity_id": "weather.home",
"state": "partly-cloudy",
"attributes": {
"temperature": 18.0,
"humidity": 65,
"pressure": 1013.2,
"wind_speed": 12.5,
"wind_bearing": 225,
"visibility": 16.0,
"forecast": [],
"friendly_name": "Home Weather"
},
"last_changed": "2024-01-15T10:00:00+00:00",
"last_updated": "2024-01-15T10:30:00+00:00",
"context": {
"id": "01HMV890123456",
"parent_id": null,
"user_id": null
}
}
]

View file

@ -0,0 +1,3 @@
{
"message": "API running."
}

View file

@ -0,0 +1 @@
{"photos":25754,"videos":1774,"usage":123142197784,"usageByUser":[{"userId":"28eff0e8-60b3-4b4c-9236-bd48559b1400","userFirstName":"John","userLastName":"Doe","photos":14153,"videos":501,"usage":54391364678},{"userId":"f3051051-9794-3470-b253-d1d7c1d46ef3","userFirstName":"John","userLastName":"Doe","photos":0,"videos":0,"usage":0},{"userId":"940bd5e2-bf3d-33e6-86b6-b9d60a1d1e06","userFirstName":"Jane","userLastName":"Doe","photos":11601,"videos":1273,"usage":68750833106}]}

View file

@ -0,0 +1,41 @@
{
"photos": 12847,
"videos": 1523,
"usage": 248576851456,
"usageByUser": [
{
"userId": "user-1234-5678-9abc-def0",
"userName": "john.doe",
"photos": 8945,
"videos": 892,
"usage": 156789012345
},
{
"userId": "user-2345-6789-abcd-ef01",
"userName": "jane.smith",
"photos": 2134,
"videos": 423,
"usage": 67891234567
},
{
"userId": "user-3456-789a-bcde-f012",
"userName": "family.shared",
"photos": 1768,
"videos": 208,
"usage": 23896604544
}
],
"usageRaw": 248576851456,
"photosGrowth": {
"date": "2024-01-15",
"value": 42
},
"videosGrowth": {
"date": "2024-01-15",
"value": 7
},
"usageGrowth": {
"date": "2024-01-15",
"value": 2147483648
}
}

View file

@ -0,0 +1,342 @@
[
{
"PlayState": {
"CanSeek": true,
"IsPaused": false,
"IsMuted": false,
"RepeatMode": "RepeatNone",
"ShuffleMode": "Sorted",
"VolumeLevel": 85,
"AudioStreamIndex": 1,
"SubtitleStreamIndex": -1,
"MediaSourceId": "12345abcdef",
"PlayMethod": "DirectPlay",
"PlaySessionId": "session-1-abc123",
"PlaylistItemId": "playlist-item-1",
"PositionTicks": 18000000000
},
"AdditionalUsers": [],
"Capabilities": {
"PlayableMediaTypes": ["Audio", "Video"],
"SupportedCommands": ["Play", "Pause", "Stop", "Seek"]
},
"RemoteEndPoint": "192.168.1.100",
"PlayableMediaTypes": ["Audio", "Video"],
"Id": "session-1-abc123",
"UserId": "user123abc",
"UserName": "john_doe",
"Client": "Jellyfin Web",
"LastActivityDate": "2024-01-15T10:30:00.0000000Z",
"LastPlaybackCheckIn": "2024-01-15T10:30:00.0000000Z",
"DeviceName": "Chrome on Desktop",
"DeviceId": "device-desktop-chrome",
"ApplicationVersion": "10.8.13",
"IsActive": true,
"SupportsMediaControl": true,
"SupportsRemoteControl": true,
"NowPlayingItem": {
"Name": "The Office - S03E01 - Gay Witch Hunt",
"OriginalTitle": "Gay Witch Hunt",
"Id": "episode123abc",
"Etag": "etag123",
"SourceType": "Library",
"PlaylistItemId": "playlist-item-1",
"DateCreated": "2024-01-10T00:00:00.0000000Z",
"DateLastMediaAdded": "2024-01-10T00:00:00.0000000Z",
"ExtraType": null,
"AirsBeforeSeasonNumber": null,
"AirsAfterSeasonNumber": null,
"AirsBeforeEpisodeNumber": null,
"CanDelete": false,
"CanDownload": false,
"HasSubtitles": true,
"Container": "mkv",
"SortName": "office s03e01 gay witch hunt",
"ForcedSortName": null,
"Video3DFormat": null,
"PremiereDate": "2006-09-21T00:00:00.0000000Z",
"ExternalUrls": [],
"MediaSources": [],
"CriticRating": null,
"ProductionLocations": [],
"Path": "/media/tv/The Office/Season 03/S03E01.mkv",
"EnableMediaSourceDisplay": true,
"OfficialRating": "TV-14",
"CustomRating": null,
"ChannelId": null,
"ChannelName": null,
"Overview": "Michael's kiss with Oscar at the Dundies leads to sensitivity training for the office.",
"Taglines": [],
"Genres": ["Comedy"],
"CommunityRating": 8.1,
"CumulativeRunTimeTicks": 13050000000,
"RunTimeTicks": 13050000000,
"PlayAccess": "Full",
"AspectRatio": "16:9",
"ProductionYear": 2006,
"IsPlaceHolder": false,
"Number": null,
"ChannelNumber": null,
"IndexNumber": 1,
"IndexNumberEnd": null,
"ParentIndexNumber": 3,
"RemoteTrailers": [],
"ProviderIds": {},
"IsHD": true,
"IsFolder": false,
"ParentId": "season3abc",
"Type": "Episode",
"People": [],
"Studios": [],
"GenreItems": [],
"ParentLogoItemId": null,
"ParentBackdropItemId": "series123",
"ParentBackdropImageTags": ["backdrop1"],
"LocalTrailerCount": 0,
"UserData": {
"Rating": null,
"PlayedPercentage": 75.5,
"UnplayedItemCount": null,
"PlaybackPositionTicks": 18000000000,
"PlayCount": 1,
"IsFavorite": false,
"Likes": null,
"LastPlayedDate": "2024-01-15T10:30:00.0000000Z",
"Played": false,
"Key": "episode123abc"
},
"RecursiveItemCount": 0,
"ChildCount": 0,
"SeriesName": "The Office",
"SeriesId": "series123",
"SeasonId": "season3abc",
"SpecialFeatureCount": 0,
"DisplayPreferencesId": "episode123abc",
"Status": null,
"AirTime": null,
"AirDays": [],
"Tags": [],
"PrimaryImageAspectRatio": 1.777777777777778,
"Artists": [],
"ArtistItems": [],
"Album": null,
"CollectionType": null,
"DisplayOrder": null,
"AlbumId": null,
"AlbumPrimaryImageTag": null,
"SeriesPrimaryImageTag": "series-primary",
"AlbumArtist": null,
"AlbumArtists": [],
"SeasonName": "Season 3",
"MediaStreams": [],
"VideoType": "VideoFile",
"PartCount": 1,
"MediaSourceCount": 1,
"ImageTags": {
"Primary": "episode-primary"
},
"BackdropImageTags": [],
"ScreenshotImageTags": [],
"ParentLogoImageTag": null,
"ParentArtItemId": null,
"ParentArtImageTag": null,
"SeriesThumbImageTag": null,
"ImageBlurHashes": {},
"SeriesStudio": "NBC",
"ParentThumbItemId": null,
"ParentThumbImageTag": null,
"ParentPrimaryImageItemId": "series123",
"ParentPrimaryImageTag": "series-primary",
"Chapters": [],
"LocationType": "FileSystem",
"IsoType": null,
"MediaType": "Video",
"EndDate": null,
"LockedFields": [],
"TrailerCount": 0,
"MovieCount": 0,
"SeriesCount": 0,
"ProgramCount": 0,
"EpisodeCount": 0,
"SongCount": 0,
"AlbumCount": 0,
"ArtistCount": 0,
"MusicVideoCount": 0,
"LockData": false,
"Width": 1920,
"Height": 1080,
"CameraMake": null,
"CameraModel": null,
"Software": null,
"ExposureTime": null,
"FocalLength": null,
"ImageOrientation": null,
"Aperture": null,
"ShutterSpeed": null,
"Latitude": null,
"Longitude": null,
"Altitude": null,
"IsoSpeedRating": null,
"SeriesTimerId": null,
"ProgramId": null,
"ChannelPrimaryImageTag": null,
"StartDate": null,
"CompletionPercentage": null,
"IsRepeat": null,
"EpisodeTitle": "Gay Witch Hunt",
"ChannelType": null,
"Audio": null,
"IsMovie": false,
"IsSports": false,
"IsNews": false,
"IsKids": false,
"IsPremiere": false,
"TimerId": null,
"NormalizationGain": null,
"CurrentProgram": null
},
"FullNowPlayingItem": {},
"NowViewingItem": null,
"DeviceType": "Desktop",
"NowPlayingQueue": [],
"NowPlayingQueueFullItems": [],
"HasCustomDeviceName": false,
"PlaylistItemId": "playlist-item-1",
"ServerId": "jellyfin-server-123",
"UserPrimaryImageTag": null,
"SupportedCommands": []
},
{
"PlayState": {
"CanSeek": true,
"IsPaused": true,
"IsMuted": false,
"RepeatMode": "RepeatNone",
"ShuffleMode": "Sorted",
"VolumeLevel": 65,
"AudioStreamIndex": 1,
"SubtitleStreamIndex": 2,
"MediaSourceId": "67890defghi",
"PlayMethod": "DirectPlay",
"PlaySessionId": "session-2-def456",
"PlaylistItemId": "playlist-item-2",
"PositionTicks": 45000000000
},
"AdditionalUsers": [],
"Capabilities": {
"PlayableMediaTypes": ["Audio", "Video"],
"SupportedCommands": ["Play", "Pause", "Stop", "Seek"]
},
"RemoteEndPoint": "192.168.1.101",
"PlayableMediaTypes": ["Audio", "Video"],
"Id": "session-2-def456",
"UserId": "user456def",
"UserName": "jane_smith",
"Client": "Jellyfin Android",
"LastActivityDate": "2024-01-15T10:25:00.0000000Z",
"LastPlaybackCheckIn": "2024-01-15T10:25:00.0000000Z",
"DeviceName": "Samsung Galaxy S21",
"DeviceId": "device-android-samsung",
"ApplicationVersion": "2.6.2",
"IsActive": true,
"SupportsMediaControl": true,
"SupportsRemoteControl": true,
"NowPlayingItem": {
"Name": "Inception",
"OriginalTitle": "Inception",
"Id": "movie456def",
"Etag": "etag456",
"SourceType": "Library",
"PlaylistItemId": "playlist-item-2",
"DateCreated": "2024-01-05T00:00:00.0000000Z",
"DateLastMediaAdded": "2024-01-05T00:00:00.0000000Z",
"Container": "mkv",
"SortName": "inception",
"PremiereDate": "2010-07-16T00:00:00.0000000Z",
"Path": "/media/movies/Inception (2010)/Inception.mkv",
"EnableMediaSourceDisplay": true,
"OfficialRating": "PG-13",
"Overview": "A thief who steals corporate secrets through the use of dream-sharing technology is given the inverse task of planting an idea into the mind of a C.E.O.",
"Taglines": ["Your mind is the scene of the crime"],
"Genres": ["Action", "Sci-Fi", "Thriller"],
"CommunityRating": 8.8,
"CumulativeRunTimeTicks": 88800000000,
"RunTimeTicks": 88800000000,
"PlayAccess": "Full",
"AspectRatio": "2.40:1",
"ProductionYear": 2010,
"IsPlaceHolder": false,
"IsHD": true,
"IsFolder": false,
"Type": "Movie",
"LocalTrailerCount": 0,
"UserData": {
"PlayedPercentage": 50.6,
"PlaybackPositionTicks": 45000000000,
"PlayCount": 0,
"IsFavorite": true,
"LastPlayedDate": "2024-01-15T10:25:00.0000000Z",
"Played": false,
"Key": "movie456def"
},
"PrimaryImageAspectRatio": 0.6666666666666666,
"VideoType": "VideoFile",
"PartCount": 1,
"MediaSourceCount": 1,
"ImageTags": {
"Primary": "movie-primary"
},
"BackdropImageTags": ["backdrop1", "backdrop2"],
"LocationType": "FileSystem",
"MediaType": "Video",
"Width": 1920,
"Height": 800,
"IsMovie": true,
"IsSports": false,
"IsNews": false,
"IsKids": false,
"IsPremiere": false
},
"FullNowPlayingItem": {},
"NowViewingItem": null,
"DeviceType": "Phone",
"NowPlayingQueue": [],
"NowPlayingQueueFullItems": [],
"HasCustomDeviceName": false,
"PlaylistItemId": "playlist-item-2",
"ServerId": "jellyfin-server-123",
"UserPrimaryImageTag": null,
"SupportedCommands": []
},
{
"PlayState": null,
"AdditionalUsers": [],
"Capabilities": {
"PlayableMediaTypes": ["Audio", "Video"],
"SupportedCommands": ["Play", "Pause", "Stop"]
},
"RemoteEndPoint": "192.168.1.102",
"PlayableMediaTypes": ["Audio", "Video"],
"Id": "session-3-ghi789",
"UserId": "user789ghi",
"UserName": "family_user",
"Client": "Jellyfin for Roku",
"LastActivityDate": "2024-01-15T10:20:00.0000000Z",
"LastPlaybackCheckIn": "2024-01-15T10:20:00.0000000Z",
"DeviceName": "Roku Ultra",
"DeviceId": "device-roku-ultra",
"ApplicationVersion": "1.6.8",
"IsActive": true,
"SupportsMediaControl": true,
"SupportsRemoteControl": true,
"FullNowPlayingItem": {},
"NowViewingItem": null,
"DeviceType": "Tv",
"NowPlayingQueue": [],
"NowPlayingQueueFullItems": [],
"HasCustomDeviceName": false,
"ServerId": "jellyfin-server-123",
"UserPrimaryImageTag": null,
"SupportedCommands": []
}
]

View file

@ -0,0 +1,35 @@
[
{
"source": "IndexerStatusCheck",
"type": "warning",
"message": "Indexer MusicBrainzDB is unavailable due to recent indexer errors: Service temporarily unavailable",
"wikiUrl": "https://wiki.servarr.com/lidarr/health#indexers-are-unavailable-due-to-recent-failures"
},
{
"source": "ImportMechanismCheck",
"type": "ok",
"message": "No issues with import mechanism checks"
},
{
"source": "DownloadClientStatusCheck",
"type": "ok",
"message": "All download clients are available"
},
{
"source": "RootFolderCheck",
"type": "error",
"message": "Missing root folder: /music",
"wikiUrl": "https://wiki.servarr.com/lidarr/health#missing-root-folder"
},
{
"source": "UpdateCheck",
"type": "ok",
"message": "Update available: 1.3.6.3557 -> 2.0.7.3849"
},
{
"source": "MetadataProviderCheck",
"type": "warning",
"message": "Metadata provider Last.fm API key is invalid or expired",
"wikiUrl": "https://wiki.servarr.com/lidarr/health#metadata-provider-issues"
}
]

View file

@ -0,0 +1,7 @@
{
"totalCount": 4,
"count": 4,
"unknownCount": 0,
"errors": false,
"warnings": false
}

View file

@ -0,0 +1,179 @@
{
"page": 1,
"pageSize": 20,
"sortKey": "releaseDate",
"sortDirection": "descending",
"totalRecords": 7,
"records": [
{
"artistId": 1,
"albumId": 12345,
"foreignAlbumId": "mbid-123-456-789",
"title": "Dark Side of the Moon",
"disambiguation": "",
"overview": "The eighth studio album by Pink Floyd, released in 1973.",
"artistName": "Pink Floyd",
"foreignArtistId": "mbid-artist-123",
"monitored": true,
"anyReleaseOk": true,
"profileId": 1,
"duration": 2580000,
"albumType": "Album",
"secondaryTypes": [],
"mediumCount": 1,
"releaseDate": "1973-03-01T00:00:00Z",
"releases": [
{
"id": 67890,
"albumId": 12345,
"foreignReleaseId": "mbid-release-123",
"title": "Dark Side of the Moon",
"status": "Official",
"duration": 2580000,
"trackCount": 10,
"mediumCount": 1,
"disambiguation": "",
"country": ["US"],
"label": ["Harvest", "Capitol"],
"monitored": true
}
],
"genres": ["Progressive Rock", "Psychedelic Rock"],
"media": [
{
"mediumNumber": 1,
"mediumName": "",
"mediumFormat": "CD"
}
],
"artist": {
"artistName": "Pink Floyd",
"foreignArtistId": "mbid-artist-123",
"nameSlug": "pink-floyd",
"overview": "English rock band formed in London in 1965.",
"disambiguation": "",
"links": [],
"images": [],
"path": "/music/Pink Floyd",
"qualityProfileId": 1,
"metadataProfileId": 1,
"monitored": true,
"monitorNewItems": "all",
"genres": ["Progressive Rock", "Psychedelic Rock", "Art Rock"],
"cleanName": "pinkfloyd",
"sortName": "Pink Floyd",
"tags": [],
"added": "2024-01-01T00:00:00Z",
"ratings": {
"votes": 54321,
"value": 9.2
},
"statistics": {
"albumCount": 15,
"trackFileCount": 142,
"trackCount": 149,
"totalTrackCount": 149,
"sizeOnDisk": 7516192768,
"percentOfTracks": 95.3
},
"id": 1
},
"images": [],
"links": [],
"statistics": {
"trackFileCount": 0,
"trackCount": 10,
"totalTrackCount": 10,
"sizeOnDisk": 0,
"percentOfTracks": 0.0
},
"grabbed": false,
"id": 12345
},
{
"artistId": 2,
"albumId": 23456,
"foreignAlbumId": "mbid-234-567-890",
"title": "OK Computer",
"disambiguation": "",
"overview": "The third studio album by Radiohead, released in 1997.",
"artistName": "Radiohead",
"foreignArtistId": "mbid-artist-234",
"monitored": true,
"anyReleaseOk": true,
"profileId": 1,
"duration": 3230000,
"albumType": "Album",
"secondaryTypes": [],
"mediumCount": 1,
"releaseDate": "1997-06-16T00:00:00Z",
"releases": [
{
"id": 78901,
"albumId": 23456,
"foreignReleaseId": "mbid-release-234",
"title": "OK Computer",
"status": "Official",
"duration": 3230000,
"trackCount": 12,
"mediumCount": 1,
"disambiguation": "",
"country": ["GB"],
"label": ["Parlophone", "Capitol"],
"monitored": true
}
],
"genres": ["Alternative Rock", "Art Rock"],
"media": [
{
"mediumNumber": 1,
"mediumName": "",
"mediumFormat": "CD"
}
],
"artist": {
"artistName": "Radiohead",
"foreignArtistId": "mbid-artist-234",
"nameSlug": "radiohead",
"overview": "English rock band formed in Abingdon, Oxfordshire, in 1985.",
"disambiguation": "",
"links": [],
"images": [],
"path": "/music/Radiohead",
"qualityProfileId": 1,
"metadataProfileId": 1,
"monitored": true,
"monitorNewItems": "all",
"genres": ["Alternative Rock", "Art Rock", "Electronic"],
"cleanName": "radiohead",
"sortName": "Radiohead",
"tags": [],
"added": "2024-01-01T00:00:00Z",
"ratings": {
"votes": 45678,
"value": 8.9
},
"statistics": {
"albumCount": 9,
"trackFileCount": 89,
"trackCount": 95,
"totalTrackCount": 95,
"sizeOnDisk": 4831838208,
"percentOfTracks": 93.7
},
"id": 2
},
"images": [],
"links": [],
"statistics": {
"trackFileCount": 0,
"trackCount": 12,
"totalTrackCount": 12,
"sizeOnDisk": 0,
"percentOfTracks": 0.0
},
"grabbed": false,
"id": 23456
}
]
}

View file

@ -0,0 +1,61 @@
{
"count": 12,
"next": null,
"previous": null,
"results": [
{
"id": 1,
"url": "https://github.com/bastienwirtz/homer",
"title": "Homer - A very simple static homepage for your server",
"description": "A dead simple static HOMepage for your servER to keep your services on hand, from a simple yaml configuration file.",
"notes": "",
"website_title": "GitHub",
"website_description": "GitHub is where over 100 million developers shape the future of software, together.",
"web_archive_snapshot_url": "",
"favicon_url": "https://github.githubassets.com/favicons/favicon.svg",
"preview_image_url": "",
"is_archived": false,
"unread": false,
"shared": false,
"tag_names": ["selfhosted", "dashboard", "yaml"],
"date_added": "2024-01-15T10:30:00.123456Z",
"date_modified": "2024-01-15T10:30:00.123456Z"
},
{
"id": 2,
"url": "https://docs.docker.com/",
"title": "Docker Documentation",
"description": "Official Docker documentation with guides, references, and tutorials for containerization.",
"notes": "Essential for container management",
"website_title": "Docker Docs",
"website_description": "Docker helps developers build, share, run, and verify applications anywhere.",
"web_archive_snapshot_url": "",
"favicon_url": "https://docs.docker.com/favicons/docs@2x.ico",
"preview_image_url": "",
"is_archived": false,
"unread": false,
"shared": false,
"tag_names": ["docker", "containers", "documentation"],
"date_added": "2024-01-14T15:20:00.123456Z",
"date_modified": "2024-01-14T15:20:00.123456Z"
},
{
"id": 3,
"url": "https://nginx.org/en/docs/",
"title": "nginx documentation",
"description": "Official nginx web server documentation covering installation, configuration, and modules.",
"notes": "",
"website_title": "nginx",
"website_description": "nginx [engine x] is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server.",
"web_archive_snapshot_url": "",
"favicon_url": "https://nginx.org/favicon.ico",
"preview_image_url": "",
"is_archived": false,
"unread": false,
"shared": false,
"tag_names": ["nginx", "webserver", "proxy"],
"date_added": "2024-01-13T09:45:00.123456Z",
"date_modified": "2024-01-13T09:45:00.123456Z"
}
]
}

View file

@ -0,0 +1,6 @@
{
"server": {
"name": "Synapse",
"version": "1.99.0"
}
}

View file

@ -0,0 +1,18 @@
{
"totalRecipes": 247,
"totalUsers": 5,
"totalGroups": 2,
"totalCategories": 18,
"totalTags": 42,
"totalTools": 15,
"totalMealPlans": 156,
"totalShoppingLists": 28,
"totalComments": 89,
"lastUpdated": "2024-01-15T10:30:00Z",
"version": "1.0.0",
"demoStatus": false,
"allowSignup": true,
"defaultGroup": "Home",
"buildVersion": "v1.0.0-1234567",
"apiVersion": "v1"
}

View file

@ -0,0 +1,64 @@
[
{
"id": "meal-123-abc",
"date": "2024-01-15",
"entryType": "dinner",
"title": "Dinner",
"text": "",
"recipe": {
"id": "recipe-456-def",
"name": "Chicken Tikka Masala",
"slug": "chicken-tikka-masala",
"image": "recipe-456-def.webp",
"description": "Creamy tomato-based curry with tender chicken pieces and aromatic spices",
"recipeCategory": [
{
"id": "cat-1",
"name": "Indian",
"slug": "indian"
},
{
"id": "cat-2",
"name": "Main Course",
"slug": "main-course"
}
],
"tags": [
{
"id": "tag-1",
"name": "Curry",
"slug": "curry"
},
{
"id": "tag-2",
"name": "Chicken",
"slug": "chicken"
},
{
"id": "tag-3",
"name": "Spicy",
"slug": "spicy"
}
],
"rating": 4.5,
"totalTime": "45 minutes",
"prepTime": "15 minutes",
"cookTime": "30 minutes",
"performTime": null,
"servings": 4,
"dateAdded": "2024-01-10T00:00:00Z",
"dateUpdated": "2024-01-14T12:30:00Z",
"createdBy": {
"id": "user-789",
"username": "chef_sarah",
"fullName": "Sarah Mitchell"
},
"updateBy": {
"id": "user-789",
"username": "chef_sarah",
"fullName": "Sarah Mitchell"
}
},
"groupId": "group-default-123"
}
]

View file

@ -0,0 +1,108 @@
{
"system": {
"news": {
"unread": 3,
"latest": [
{
"title": "Medusa v1.0.19 Released",
"date": "2024-01-14",
"content": "Bug fixes and performance improvements",
"read": false
},
{
"title": "New indexer support added",
"date": "2024-01-12",
"content": "Support for additional torrent indexers",
"read": false
},
{
"title": "Database maintenance completed",
"date": "2024-01-10",
"content": "Weekly database optimization finished",
"read": false
}
]
},
"version": {
"version": "1.0.19",
"branch": "master",
"commit": "abc123def456",
"dbVersion": 44,
"pythonVersion": "3.11.7"
},
"os": {
"platform": "Linux",
"release": "6.5.0-15-generic",
"version": "#15~22.04.1-Ubuntu"
},
"memory": {
"used": 512.5,
"total": 8192.0,
"percent": 6.3
}
},
"main": {
"logs": {
"numWarnings": 2,
"numErrors": 1,
"loggingLevels": [
"DEBUG",
"INFO",
"WARNING",
"ERROR"
],
"currentLevel": "INFO"
},
"general": {
"webHost": "0.0.0.0",
"webPort": 8081,
"webRoot": "",
"launchBrowser": false,
"versionNotify": true,
"autoUpdate": false,
"logDir": "/app/Logs",
"dataDir": "/app/Data",
"configVersion": 12
},
"showDefaults": {
"status": "Skipped/Wanted/Snatched/Downloaded",
"statusAfter": "Downloaded",
"season_folders": true,
"anime": false,
"scene": false,
"archive_firstmatch": false,
"quality_default": "Standard Definition",
"subtitles": false,
"flatten_folders": false,
"indexer_default": "tvdb",
"indexer_timeout": 20,
"skip_removed_files": false
}
},
"search": {
"general": {
"randomize_providers": false,
"download_propers": true,
"check_propers_interval": "daily",
"propers_search_days": 2,
"backlog_days": 7,
"cache_trimming": false,
"max_cache_age": 30
},
"nzb": {
"nzbs": false,
"nzbs_uid": "",
"nzbs_hash": ""
},
"torrent": {
"torrent_method": "blackhole",
"torrent_path": "",
"torrent_seed_time": 0,
"torrent_paused": false,
"torrent_high_bandwidth": false,
"torrent_label": "",
"torrent_label_anime": "",
"torrent_verify_cert": false
}
}
}

View file

@ -0,0 +1,36 @@
{
"total": 42,
"entries": [
{
"id": 888,
"user_id": 1,
"feed_id": 42,
"title": "Example Unread Entry",
"url": "http://example.org/article.html",
"comments_url": "",
"author": "John Doe",
"content": "<p>This is an unread RSS entry</p>",
"hash": "29f99e4074cdacca1766f47697d03c66070ef6a14770a1fd5a867483c207a1bb",
"published_at": "2025-11-11T16:15:19Z",
"created_at": "2025-11-11T16:15:19Z",
"status": "unread",
"share_code": "",
"starred": false,
"reading_time": 5,
"enclosures": null,
"feed": {
"id": 42,
"user_id": 1,
"title": "Tech Blog",
"site_url": "http://example.org",
"feed_url": "http://example.org/feed.atom",
"checked_at": "2025-11-11T21:06:03.133839Z",
"category": {
"id": 22,
"user_id": 1,
"title": "Technology"
}
}
}
]
}

View file

@ -0,0 +1,10 @@
{
"installed": true,
"maintenance": false,
"needsDbUpgrade": false,
"version": "28.0.2.1",
"versionstring": "28.0.2",
"edition": "",
"productname": "Nextcloud",
"extendedSupport": false
}

View file

@ -0,0 +1,30 @@
{
"job": {
"averagePrintTime": 669.3131185749999,
"estimatedPrintTime": 314.87566979223726,
"filament": {
"tool0": {
"length": 134.81171000000032,
"volume": 0.0
}
},
"file": {
"date": 1665547748,
"display": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"name": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"origin": "local",
"path": "MISC/CE3PRO_3mmX3mm Brass insert V2.gcode",
"size": 129581
},
"lastPrintTime": 669.3131185749999,
"user": "friendlyngeeks"
},
"progress": {
"completion": 27.456185706237797,
"filepos": 35578,
"printTime": 460,
"printTimeLeft": 4612,
"printTimeLeftOrigin": "linear"
},
"state": "Printing"
}

View file

@ -0,0 +1,27 @@
{
"temperature": {
"bed": {
"actual": 20.52,
"offset": 0,
"target": 0.0
},
"tool0": {
"actual": 20.44,
"offset": 0,
"target": 0.0
}
},
"state": {
"text": "Operational",
"flags": {
"operational": true,
"paused": false,
"printing": false,
"cancelling": false,
"pausing": false,
"error": false,
"ready": true,
"closedOrError": false
}
}
}

View file

@ -0,0 +1,26 @@
{
"error": "SerialException: device reports readiness to read but returned no data (device disconnected or multiple access on port?)",
"job": {
"averagePrintTime": null,
"estimatedPrintTime": null,
"filament": null,
"file": {
"date": null,
"display": null,
"name": null,
"origin": null,
"path": null,
"size": null
},
"lastPrintTime": null,
"user": null
},
"progress": {
"completion": null,
"filepos": null,
"printTime": null,
"printTimeLeft": null,
"printTimeLeftOrigin": null
},
"state": "Offline after error"
}

View file

@ -0,0 +1,26 @@
{
"job": {
"estimatedPrintTime": null,
"filament": {
"length": null,
"volume": null
},
"file": {
"date": null,
"name": null,
"origin": null,
"path": null,
"size": null
},
"lastPrintTime": null,
"user": null
},
"progress": {
"completion": null,
"filepos": null,
"printTime": null,
"printTimeLeft": null,
"printTimeOrigin": null
},
"state": "Offline"
}

View file

@ -0,0 +1,26 @@
{
"job": {
"estimatedPrintTime": null,
"filament": {
"length": null,
"volume": null
},
"file": {
"date": null,
"name": null,
"origin": null,
"path": null,
"size": null
},
"lastPrintTime": null,
"user": null
},
"progress": {
"completion": null,
"filepos": null,
"printTime": null,
"printTimeLeft": null,
"printTimeOrigin": null
},
"state": "Operational"
}

View file

@ -0,0 +1,30 @@
{
"job": {
"averagePrintTime": 669.3131185749999,
"estimatedPrintTime": 314.87566979223726,
"filament": {
"tool0": {
"length": 134.81171000000032,
"volume": 0.0
}
},
"file": {
"date": 1665547748,
"display": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"name": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"origin": "local",
"path": "MISC/CE3PRO_3mmX3mm Brass insert V2.gcode",
"size": 129581
},
"lastPrintTime": 669.3131185749999,
"user": "friendlyngeeks"
},
"progress": {
"completion": 0.1551153332664511,
"filepos": 201,
"printTime": 0,
"printTimeLeft": 668,
"printTimeLeftOrigin": "average"
},
"state": "Printing"
}

View file

@ -0,0 +1,30 @@
{
"job": {
"averagePrintTime": 669.3131185749999,
"estimatedPrintTime": 314.87566979223726,
"filament": {
"tool0": {
"length": 134.81171000000032,
"volume": 0.0
}
},
"file": {
"date": 1665547748,
"display": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"name": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"origin": "local",
"path": "MISC/CE3PRO_3mmX3mm Brass insert V2.gcode",
"size": 129581
},
"lastPrintTime": 669.3131185749999,
"user": "friendlyngeeks"
},
"progress": {
"completion": 0.1551153332664511,
"filepos": 201,
"printTime": 0,
"printTimeLeft": 668,
"printTimeLeftOrigin": "average"
},
"state": "Printing"
}

View file

@ -0,0 +1,30 @@
{
"job": {
"averagePrintTime": 669.3131185749999,
"estimatedPrintTime": 314.87566979223726,
"filament": {
"tool0": {
"length": 134.81171000000032,
"volume": 0.0
}
},
"file": {
"date": 1665547748,
"display": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"name": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"origin": "local",
"path": "MISC/CE3PRO_3mmX3mm Brass insert V2.gcode",
"size": 129581
},
"lastPrintTime": 669.3131185749999,
"user": "friendlyngeeks"
},
"progress": {
"completion": 27.456185706237797,
"filepos": 35578,
"printTime": 476,
"printTimeLeft": 1612,
"printTimeLeftOrigin": "linear"
},
"state": "Printing"
}

View file

@ -0,0 +1,30 @@
{
"job": {
"averagePrintTime": 698.814525153,
"estimatedPrintTime": 314.87566979223726,
"filament": {
"tool0": {
"length": 134.81171000000032,
"volume": 0.0
}
},
"file": {
"date": 1665547748,
"display": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"name": "CE3PRO_3mmX3mm Brass insert V2.gcode",
"origin": "local",
"path": "MISC/CE3PRO_3mmX3mm Brass insert V2.gcode",
"size": 129581
},
"lastPrintTime": 728.315931731,
"user": "friendlyngeeks"
},
"progress": {
"completion": 100.0,
"filepos": 129581,
"printTime": 728,
"printTimeLeft": 0,
"printTimeLeftOrigin": null
},
"state": "Operational"
}

View file

@ -0,0 +1,18 @@
{
"Rest": "./api/",
"ShowFooter": true,
"ShowNavigation": true,
"ShowNewVersions": true,
"AvailableVersion": "none",
"CurrentVersion": "2024.11.24",
"PageTitle": "OliveTin",
"SectionNavigationStyle": "sidebar",
"DefaultIconForBack": "&laquo;",
"SshFoundKey": "not found at /home/user/.ssh/id_rsa",
"SshFoundConfig": "not found at /home/user/.ssh/config",
"EnableCustomJs": false,
"AuthLoginUrl": "",
"AuthLocalLogin": false,
"AuthOAuth2Providers": null,
"AdditionalLinks": null
}

View file

@ -0,0 +1,18 @@
{
"systemInfo": {
"configFolder": "/etc/openhab",
"userdataFolder": "/var/lib/openhab",
"logFolder": "/var/log/openhab",
"javaVersion": "17.0.9",
"javaVendor": "Azul Systems, Inc.",
"javaVendorVersion": "Zulu17.46+19-CA",
"osName": "Linux",
"osVersion": "6.5.11-4-pve",
"osArchitecture": "amd64",
"availableProcessors": 2,
"freeMemory": 75885968,
"totalMemory": 494927872,
"uptime": 2150186,
"startLevel": 100
}
}

View file

@ -0,0 +1,43 @@
{
"coord": {
"lon": 3.0586,
"lat": 50.633
},
"weather": [
{
"id": 800,
"main": "Clear",
"description": "clear sky",
"icon": "01d"
}
],
"base": "stations",
"main": {
"temp": 287.38,
"feels_like": 286.76,
"temp_min": 286.38,
"temp_max": 287.71,
"pressure": 1019,
"humidity": 73
},
"visibility": 10000,
"wind": {
"speed": 3.09,
"deg": 30
},
"clouds": {
"all": 0
},
"dt": 1718867378,
"sys": {
"type": 2,
"id": 2011132,
"country": "FR",
"sunrise": 1718854500,
"sunset": 1718913826
},
"timezone": 7200,
"id": 2998324,
"name": "Lille",
"cod": 200
}

View file

@ -0,0 +1,88 @@
{
"count": 1847,
"next": "http://paperless.local/api/documents/?page=2",
"previous": null,
"all": [1, 2, 3, 4, 5],
"results": [
{
"id": 1847,
"correspondent": 15,
"document_type": 12,
"storage_path": null,
"title": "Bank Statement - January 2024",
"content": "Monthly bank statement with account summary and transaction details",
"tags": [8, 15, 23],
"created": "2024-01-15T10:30:00Z",
"created_date": "2024-01-15",
"modified": "2024-01-15T10:30:00Z",
"added": "2024-01-15T10:30:00Z",
"archive_serial_number": "ASN2024001847",
"original_file_name": "bank_statement_202401.pdf",
"archived_file_name": "0001847.pdf"
},
{
"id": 1846,
"correspondent": 23,
"document_type": 5,
"storage_path": null,
"title": "Utility Bill - Electric Company",
"content": "Monthly electricity bill for December 2023",
"tags": [12, 18],
"created": "2024-01-14T16:45:00Z",
"created_date": "2024-01-14",
"modified": "2024-01-14T16:45:00Z",
"added": "2024-01-14T16:45:00Z",
"archive_serial_number": "ASN2024001846",
"original_file_name": "electric_bill_202312.pdf",
"archived_file_name": "0001846.pdf"
},
{
"id": 1845,
"correspondent": 7,
"document_type": 18,
"storage_path": null,
"title": "Insurance Policy Renewal Notice",
"content": "Annual home insurance policy renewal documentation",
"tags": [5, 11, 19],
"created": "2024-01-13T14:20:00Z",
"created_date": "2024-01-13",
"modified": "2024-01-13T14:20:00Z",
"added": "2024-01-13T14:20:00Z",
"archive_serial_number": "ASN2024001845",
"original_file_name": "insurance_renewal_2024.pdf",
"archived_file_name": "0001845.pdf"
},
{
"id": 1844,
"correspondent": 31,
"document_type": 9,
"storage_path": null,
"title": "Tax Document - W2 Form 2023",
"content": "Annual W2 tax form from employer",
"tags": [2, 14, 25],
"created": "2024-01-12T09:15:00Z",
"created_date": "2024-01-12",
"modified": "2024-01-12T09:15:00Z",
"added": "2024-01-12T09:15:00Z",
"archive_serial_number": "ASN2024001844",
"original_file_name": "w2_form_2023.pdf",
"archived_file_name": "0001844.pdf"
},
{
"id": 1843,
"correspondent": 42,
"document_type": 21,
"storage_path": null,
"title": "Medical Records - Annual Checkup",
"content": "Annual physical examination results and health summary",
"tags": [6, 17, 28],
"created": "2024-01-11T11:30:00Z",
"created_date": "2024-01-11",
"modified": "2024-01-11T11:30:00Z",
"added": "2024-01-11T11:30:00Z",
"archive_serial_number": "ASN2024001843",
"original_file_name": "medical_checkup_2024.pdf",
"archived_file_name": "0001843.pdf"
}
]
}

View file

@ -0,0 +1,30 @@
{
"battery.charge": 100,
"battery.voltage": 13,
"battery.voltage.high": 13,
"battery.voltage.low": 10,
"battery.voltage.nominal": 12,
"device.type": "ups",
"driver.flag.noscanlangid": "enabled",
"driver.flag.novendor": "enabled",
"driver.name": "nutdrv_qx",
"driver.parameter.langid_fix": 1000,
"driver.parameter.pollfreq": 30,
"driver.parameter.pollinterval": 2,
"driver.parameter.vendorid": 1,
"driver.version": "2.8.0",
"input.frequency": 50,
"input.frequency.nominal": "0",
"input.voltage": 228,
"input.voltage.fault": "0.0",
"input.voltage.nominal": "0",
"output.voltage": 228,
"ups.beeper.status": "disabled",
"ups.delay.shutdown": 60,
"ups.delay.start": "0",
"ups.load": 50,
"ups.productid": "0000",
"ups.status": "OL",
"ups.temperature": 30,
"ups.type": "offline / line interactive"
}

View file

@ -0,0 +1 @@
[89,82,0,15,0,0]

38
dummy-data/pihole/api.php Normal file
View file

@ -0,0 +1,38 @@
{
"domains_being_blocked": 152588,
"dns_queries_today": 0,
"ads_blocked_today": 0,
"percent_blocked": 42,
"unique_domains": 0,
"queries_forwarded": 0,
"queries_cached": 0,
"clients_ever_seen": 0,
"unique_clients": 0,
"dns_queries_all_types": 0,
"reply_UNKNOWN": 0,
"reply_NODATA": 0,
"reply_NXDOMAIN": 0,
"reply_CNAME": 0,
"reply_IP": 0,
"reply_DOMAIN": 0,
"reply_RRNAME": 0,
"reply_SERVFAIL": 0,
"reply_REFUSED": 0,
"reply_NOTIMP": 0,
"reply_OTHER": 0,
"reply_DNSSEC": 0,
"reply_NONE": 0,
"reply_BLOB": 0,
"dns_queries_all_replies": 0,
"privacy_level": 0,
"status": "enabled",
"gravity_last_updated": {
"file_exists": true,
"absolute": 1665486627,
"relative": {
"days": 0,
"hours": 0,
"minutes": 22
}
}
}

View file

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="3" allowSync="1" art="/:/resources/show-fanart.jpg" identifier="com.plexapp.plugins.library" librarySectionID="0" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1705317600" thumb="/:/resources/show.png" title1="Plex Library" viewGroup="secondary" viewMode="458752">
<Directory allowSync="1" art="/:/resources/movie-fanart.jpg" composite="/library/sections/1/composite/1705317600" filters="1" refreshing="0" thumb="/:/resources/movie.png" key="1" type="movie" title="Movies" agent="com.plexapp.agents.themoviedb" scanner="Plex Movie" language="en-US" uuid="abcd1234-5678-90ab-cdef-123456789012" updatedAt="1705317600" createdAt="1704067200" scannedAt="1705317000" content="1" directory="1" contentChangedAt="1705316400" hidden="0">
<Location id="1" path="/media/movies" />
</Directory>
<Directory allowSync="1" art="/:/resources/show-fanart.jpg" composite="/library/sections/2/composite/1705317600" filters="1" refreshing="0" thumb="/:/resources/show.png" key="2" type="show" title="TV Shows" agent="com.plexapp.agents.thetvdb" scanner="Plex TV Series" language="en-US" uuid="efgh5678-90ab-cdef-1234-567890abcdef" updatedAt="1705317600" createdAt="1704067200" scannedAt="1705317000" content="1" directory="1" contentChangedAt="1705316400" hidden="0">
<Location id="2" path="/media/tv" />
</Directory>
<Directory allowSync="1" art="/:/resources/artist-fanart.jpg" composite="/library/sections/3/composite/1705317600" filters="1" refreshing="0" thumb="/:/resources/artist.png" key="3" type="artist" title="Music" agent="com.plexapp.agents.lastfm" scanner="Plex Music" language="en-US" uuid="ijkl9012-3456-789a-bcde-f0123456789a" updatedAt="1705317600" createdAt="1704067200" scannedAt="1705317000" content="1" directory="1" contentChangedAt="1705316400" hidden="0">
<Location id="3" path="/media/music" />
</Directory>
</MediaContainer>

View file

@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="247" allowSync="1" art="/:/resources/movie-fanart.jpg" identifier="com.plexapp.plugins.library" librarySectionID="1" librarySectionTitle="Movies" librarySectionUUID="abcd1234-5678-90ab-cdef-123456789012" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1705317600" mixedParents="0" nocache="1" offset="0" thumb="/:/resources/movie.png" title1="Movies" title2="All Movies" totalSize="247" viewGroup="movie" viewMode="458752">
<Video ratingKey="1001" key="/library/metadata/1001" guid="plex://movie/5d9c086fe98e47001e0d5001" type="movie" title="Inception" titleSort="Inception" contentRating="PG-13" summary="A thief who steals corporate secrets through dream-sharing technology." rating="8.8" audienceRating="9.1" year="2010" tagline="Your mind is the scene of the crime" thumb="/library/metadata/1001/thumb/1705317600" art="/library/metadata/1001/art/1705317600" duration="8880000" originallyAvailableAt="2010-07-16" addedAt="1705144800" updatedAt="1705317600">
<Media id="2001" duration="8880000" bitrate="12000" width="1920" height="1080" aspectRatio="1.78" audioChannels="6" audioCodec="dts" videoCodec="h264" videoResolution="1080" container="mkv" videoFrameRate="24p" audioProfile="dts" videoProfile="high" />
</Video>
<!-- 246 more movies would be here, showing just one for brevity -->
</MediaContainer>

View file

@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="89" allowSync="1" art="/:/resources/show-fanart.jpg" identifier="com.plexapp.plugins.library" librarySectionID="2" librarySectionTitle="TV Shows" librarySectionUUID="efgh5678-90ab-cdef-1234-567890abcdef" mediaTagPrefix="/system/bundle/media/flags/" mediaTagVersion="1705317600" mixedParents="0" nocache="1" offset="0" thumb="/:/resources/show.png" title1="TV Shows" title2="All Shows" totalSize="89" viewGroup="show" viewMode="458752">
<Directory ratingKey="2001" key="/library/metadata/2001" guid="plex://show/5d9c081fe98e47001e0c2001" type="show" title="Breaking Bad" titleSort="Breaking Bad" contentRating="TV-MA" summary="A high school chemistry teacher diagnosed with inoperable lung cancer turns to manufacturing and selling methamphetamine in order to secure his family's future." rating="9.5" year="2008" thumb="/library/metadata/2001/thumb/1705317600" art="/library/metadata/2001/art/1705317600" banner="/library/metadata/2001/banner/1705317600" duration="2820000" originallyAvailableAt="2008-01-20" leafCount="62" viewedLeafCount="62" childCount="5" addedAt="1705144800" updatedAt="1705317600">
<Genre tag="Crime" />
<Genre tag="Drama" />
<Genre tag="Thriller" />
</Directory>
<Directory ratingKey="2002" key="/library/metadata/2002" guid="plex://show/5d9c081fe98e47001e0c2002" type="show" title="Friends" titleSort="Friends" contentRating="TV-14" summary="Follows the personal and professional lives of six twenty to thirty-something-year-old friends living in Manhattan." rating="8.9" year="1994" thumb="/library/metadata/2002/thumb/1705317600" art="/library/metadata/2002/art/1705317600" banner="/library/metadata/2002/banner/1705317600" duration="1320000" originallyAvailableAt="1994-09-22" leafCount="236" viewedLeafCount="236" childCount="10" addedAt="1705144800" updatedAt="1705317600">
<Genre tag="Comedy" />
<Genre tag="Romance" />
</Directory>
<!-- 87 more shows would be here, showing just two for brevity -->
</MediaContainer>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<MediaContainer size="2" allowCameraUpload="1" allowChannelAccess="1" allowMediaDeletion="1" allowSharing="1" allowSync="1" backgroundProcessing="1" certificateVersion="2" companionProxy="1" countryCode="US" diagnostics="logs,databases,streaminglogs" eventStream="1" friendlyName="Homer-Plex-Server" hubSearch="1" itemClusters="1" livenessTimeout="0" machineIdentifier="abc123def456ghi789jkl012" mediaProviders="1" multiuser="1" myPlex="1" myPlexMappingState="mapped" myPlexSigninState="ok" myPlexSubscription="1" myPlexUsername="homer@example.com" offlineTranscode="1" ownerFeatures="adaptive_bitrate,collections,content_filter,dvr,hardware_transcoding,home,loudness_analysis,music_videos,pass,photo_autotags,premium_music_metadata,session_bandwidth_restrictions,sync,trailers,webhooks" photoAutoTag="1" platform="Linux" platformVersion="6.5.0-15-generic" pluginHost="1" pushNotifications="1" readOnlyLibraries="1" requestParametersInCookie="1" streamingBrainABRVersion="3" streamingBrainVersion="2" sync="1" transcoderActiveVideoSessions="0" transcoderAudio="1" transcoderLyrics="1" transcoderPhoto="1" transcoderSubtitles="1" transcoderVideo="1" transcoderVideoBitrates="64,96,208,320,720,1500,2000,3000,4000,8000,10000,12000,20000" transcoderVideoQualities="0,1,2,3,4,5,6,7,8,9,10,11,12" transcoderVideoResolutions="128,128,160,240,320,480,768,720,720,1080,1080,1080,1080" updatedAt="1705317600" updater="1" version="1.40.1.8227-c0dd5a73e" voiceSearch="1">
<Video sessionKey="1" key="/library/metadata/12345" parentKey="/library/metadata/12300" grandparentKey="/library/metadata/12000" guid="plex://episode/5d9c086fe98e47001e0d5c3f" parentGuid="plex://season/602e67d31d3358002d2fb2bd" grandparentGuid="plex://show/5d9c081fe98e47001e0c8382" type="episode" title="The One Where Monica Gets a Roommate" titleSort="One Where Monica Gets a Roommate, The" grandparentTitle="Friends" parentTitle="Season 1" contentRating="TV-14" summary="Monica and the gang introduce Rachel to the real world after she leaves her fiancé at the altar." index="1" parentIndex="1" lastViewedAt="1705315800" year="1994" thumb="/library/metadata/12345/thumb/1705317600" art="/library/metadata/12000/art/1705317600" parentThumb="/library/metadata/12300/thumb/1705317600" grandparentThumb="/library/metadata/12000/thumb/1705317600" grandparentArt="/library/metadata/12000/art/1705317600" duration="1380000" originallyAvailableAt="1994-09-22" addedAt="1705230400" updatedAt="1705317600" chapterSource="media" primaryExtraKey="/library/metadata/12346" ratingKey="12345" viewOffset="420000" skipCount="1">
<Media id="67890" duration="1380000" bitrate="8137" width="1920" height="1080" aspectRatio="1.78" audioChannels="2" audioCodec="aac" videoCodec="h264" videoResolution="1080" container="mkv" videoFrameRate="24p" audioProfile="lc" videoProfile="high">
<Part accessible="1" exists="1" id="98765" key="/library/parts/98765/1705317600/file.mkv" duration="1380000" file="/media/tv/Friends/Season 01/Friends - S01E01 - The One Where Monica Gets a Roommate.mkv" size="1398101419" audioProfile="lc" container="mkv" indexes="sd" videoProfile="high" />
</Media>
<User id="1" thumb="https://plex.tv/users/abc123def456/avatar?c=1705317600" title="John Doe" />
<Player address="192.168.1.100" device="Chrome" machineIdentifier="browser-chrome-192-168-1-100" model="hosted" platform="Chrome" platformVersion="120" product="Plex Web" profile="Web" remotePublicAddress="203.0.113.1" state="playing" title="Chrome (John's Desktop)" userID="1" vendor="Google" version="4.126.1" />
<Session id="session123abc" bandwidth="8000" location="lan" />
</Video>
<Video sessionKey="2" key="/library/metadata/54321" guid="plex://movie/5d9c086fe98e47001e0d5c4a" type="movie" title="The Matrix" titleSort="Matrix, The" contentRating="R" summary="A computer hacker learns from mysterious rebels about the true nature of his reality and his role in the war against its controllers." rating="8.7" year="1999" tagline="The fight for the future begins" thumb="/library/metadata/54321/thumb/1705317600" art="/library/metadata/54321/art/1705317600" duration="8160000" originallyAvailableAt="1999-03-31" addedAt="1705144800" updatedAt="1705317600" chapterSource="media" ratingKey="54321" viewOffset="2100000">
<Media id="11223" duration="8160000" bitrate="15463" width="1920" height="816" aspectRatio="2.35" audioChannels="6" audioCodec="dts" videoCodec="h264" videoResolution="1080" container="mkv" videoFrameRate="24p" audioProfile="dts" videoProfile="high">
<Part accessible="1" exists="1" id="33445" key="/library/parts/33445/1705317600/file.mkv" duration="8160000" file="/media/movies/The Matrix (1999)/The Matrix (1999).mkv" size="15758698701" audioProfile="dts" container="mkv" indexes="sd" videoProfile="high" />
</Media>
<User id="2" thumb="https://plex.tv/users/def456ghi789/avatar?c=1705317600" title="Jane Smith" />
<Player address="192.168.1.101" device="Android" machineIdentifier="android-phone-samsung" model="SM-G991B" platform="Android" platformVersion="14" product="Plex for Android" profile="Mobile" remotePublicAddress="203.0.113.2" state="paused" title="Samsung Galaxy S21" userID="2" vendor="Samsung" version="9.8.1" />
<Session id="session456def" bandwidth="4000" location="lan" />
</Video>
</MediaContainer>

View file

@ -0,0 +1,94 @@
[
{
"Id": 1,
"Name": "local",
"Type": 1,
"URL": "unix:///var/run/docker.sock",
"GroupId": 1,
"PublicURL": "",
"Status": 1,
"UserAccessPolicies": {},
"TeamAccessPolicies": {},
"Extensions": [],
"TagIds": [],
"AssociatedEndpoints": [],
"Snapshots": [
{
"Time": 1705317600,
"DockerVersion": "24.0.7",
"Swarm": false,
"TotalCPU": 8,
"TotalMemory": 16777216000,
"RunningContainerCount": 12,
"StoppedContainerCount": 5,
"HealthyContainerCount": 10,
"UnhealthyContainerCount": 0,
"VolumeCount": 25,
"ImageCount": 47,
"ServiceCount": 0,
"StackCount": 0,
"DockerRootDir": "/var/lib/docker"
}
],
"Kubernetes": {
"Snapshots": []
},
"Agent": {
"NodeName": "",
"ChecklnInterval": 5,
"Version": ""
},
"Edge": {
"AsyncMode": false,
"PingInterval": 60,
"CommandInterval": 5,
"SnapshotInterval": 5
}
},
{
"Id": 2,
"Name": "production",
"Type": 2,
"URL": "tcp://prod-docker:2376",
"GroupId": 1,
"PublicURL": "https://prod-docker.example.com",
"Status": 1,
"UserAccessPolicies": {},
"TeamAccessPolicies": {},
"Extensions": [],
"TagIds": [],
"AssociatedEndpoints": [],
"Snapshots": [
{
"Time": 1705317600,
"DockerVersion": "24.0.7",
"Swarm": false,
"TotalCPU": 16,
"TotalMemory": 33554432000,
"RunningContainerCount": 25,
"StoppedContainerCount": 3,
"HealthyContainerCount": 23,
"UnhealthyContainerCount": 2,
"VolumeCount": 40,
"ImageCount": 75,
"ServiceCount": 0,
"StackCount": 0,
"DockerRootDir": "/var/lib/docker"
}
],
"Kubernetes": {
"Snapshots": []
},
"Agent": {
"NodeName": "",
"ChecklnInterval": 5,
"Version": ""
},
"Edge": {
"AsyncMode": false,
"PingInterval": 60,
"CommandInterval": 5,
"SnapshotInterval": 5
}
}
]

View file

@ -0,0 +1,94 @@
[
{
"Id": 1,
"Name": "local",
"Type": 1,
"URL": "unix:///var/run/docker.sock",
"GroupId": 1,
"PublicURL": "",
"Status": 1,
"UserAccessPolicies": {},
"TeamAccessPolicies": {},
"Extensions": [],
"TagIds": [],
"AssociatedEndpoints": [],
"Snapshots": [
{
"Time": 1705317600,
"DockerVersion": "24.0.7",
"Swarm": false,
"TotalCPU": 8,
"TotalMemory": 16777216000,
"RunningContainerCount": 12,
"StoppedContainerCount": 5,
"HealthyContainerCount": 10,
"UnhealthyContainerCount": 0,
"VolumeCount": 25,
"ImageCount": 47,
"ServiceCount": 0,
"StackCount": 0,
"DockerRootDir": "/var/lib/docker"
}
],
"Kubernetes": {
"Snapshots": []
},
"Agent": {
"NodeName": "",
"ChecklnInterval": 5,
"Version": ""
},
"Edge": {
"AsyncMode": false,
"PingInterval": 60,
"CommandInterval": 5,
"SnapshotInterval": 5
}
},
{
"Id": 2,
"Name": "production",
"Type": 2,
"URL": "tcp://prod-docker:2376",
"GroupId": 1,
"PublicURL": "https://prod-docker.example.com",
"Status": 1,
"UserAccessPolicies": {},
"TeamAccessPolicies": {},
"Extensions": [],
"TagIds": [],
"AssociatedEndpoints": [],
"Snapshots": [
{
"Time": 1705317600,
"DockerVersion": "24.0.7",
"Swarm": false,
"TotalCPU": 16,
"TotalMemory": 33554432000,
"RunningContainerCount": 25,
"StoppedContainerCount": 3,
"HealthyContainerCount": 23,
"UnhealthyContainerCount": 2,
"VolumeCount": 40,
"ImageCount": 75,
"ServiceCount": 0,
"StackCount": 0,
"DockerRootDir": "/var/lib/docker"
}
],
"Kubernetes": {
"Snapshots": []
},
"Agent": {
"NodeName": "",
"ChecklnInterval": 5,
"Version": ""
},
"Edge": {
"AsyncMode": false,
"PingInterval": 60,
"CommandInterval": 5,
"SnapshotInterval": 5
}
}
]

View file

@ -0,0 +1,38 @@
{
"Version": "2.19.4",
"APIVersion": "2.19.4",
"DatabaseVersion": "34",
"Build": {
"BuildNumber": "1234567890",
"ImageTag": "2.19.4-alpine",
"NodejsVersion": "v18.17.1",
"YarnVersion": "1.22.19",
"WebpackVersion": "5.88.2",
"GoVersion": "go1.21.5"
},
"InstanceID": "portainer-instance-abc123def456",
"Edition": "CE",
"DemoEnvironment": {
"Enabled": false,
"URL": ""
},
"AnalyticsEnabled": false,
"AuthenticationMethod": 1,
"Users": 3,
"ValidLicense": false,
"LicenseInfo": {
"Company": "",
"CreatedAt": 0,
"ExpiresAt": 0,
"LicenseKey": "",
"ProductEdition": "",
"Seats": 0,
"Valid": false
},
"RequiredPasswordLength": 12,
"UserSessionTimeout": "8h",
"Features": {
"EdgeDeviceUntrustedMode": false
},
"EdgeAgentCheckinIntervalSeconds": 5
}

View file

@ -0,0 +1,99 @@
{
"status": "success",
"data": {
"alerts": [
{
"labels": {
"alertname": "HighCPUUsage",
"instance": "localhost:9090",
"job": "prometheus",
"severity": "warning"
},
"annotations": {
"description": "CPU usage is above 80% for more than 5 minutes",
"summary": "High CPU usage detected"
},
"state": "firing",
"activeAt": "2024-01-15T10:30:00.000Z",
"value": "85.2"
},
{
"labels": {
"alertname": "HighMemoryUsage",
"instance": "web-server-01:9090",
"job": "node-exporter",
"severity": "critical"
},
"annotations": {
"description": "Memory usage is above 90% for more than 10 minutes",
"summary": "Critical memory usage detected"
},
"state": "firing",
"activeAt": "2024-01-15T10:25:00.000Z",
"value": "92.8"
},
{
"labels": {
"alertname": "DiskSpaceLow",
"instance": "db-server-01:9090",
"job": "node-exporter",
"severity": "warning",
"device": "/dev/sda1"
},
"annotations": {
"description": "Disk space is below 20% on {{ $labels.device }}",
"summary": "Low disk space warning"
},
"state": "pending",
"activeAt": "2024-01-15T11:00:00.000Z",
"value": "18.5"
},
{
"labels": {
"alertname": "ServiceDown",
"instance": "api-server-02:8080",
"job": "api-health-check",
"severity": "critical",
"service": "user-api"
},
"annotations": {
"description": "Service {{ $labels.service }} is not responding",
"summary": "Service is down"
},
"state": "pending",
"activeAt": "2024-01-15T11:10:00.000Z",
"value": "0"
},
{
"labels": {
"alertname": "DatabaseConnections",
"instance": "db-server-01:5432",
"job": "postgres-exporter",
"severity": "info"
},
"annotations": {
"description": "Database connection count is normal",
"summary": "Database connections stable"
},
"state": "inactive",
"activeAt": "2024-01-15T09:00:00.000Z",
"value": "45"
},
{
"labels": {
"alertname": "HTTPResponseTime",
"instance": "web-server-02:80",
"job": "blackbox-exporter",
"severity": "info"
},
"annotations": {
"description": "HTTP response time is within acceptable limits",
"summary": "Response time normal"
},
"state": "inactive",
"activeAt": "2024-01-15T08:30:00.000Z",
"value": "150"
}
]
}
}

View file

@ -0,0 +1,41 @@
[
{
"source": "IndexerStatusCheck",
"type": "warning",
"message": "Indexer 1337x has been disabled due to recent failures: Connection timeout after 30 seconds",
"wikiUrl": "https://wiki.servarr.com/prowlarr/health#indexers-are-unavailable-due-to-recent-failures"
},
{
"source": "IndexerRSSCheck",
"type": "ok",
"message": "All indexer RSS feeds are functioning normally"
},
{
"source": "ApplicationStatusCheck",
"type": "warning",
"message": "Application Sonarr sync failed: Unable to connect to Sonarr at http://sonarr:8989",
"wikiUrl": "https://wiki.servarr.com/prowlarr/health#applications-are-unavailable-due-to-recent-failures"
},
{
"source": "UpdateCheck",
"type": "ok",
"message": "Update available: 1.11.4.4173 -> 1.12.2.4211"
},
{
"source": "IndexerSearchCheck",
"type": "error",
"message": "Indexer TorrentLeech returned invalid search results: Malformed JSON response",
"wikiUrl": "https://wiki.servarr.com/prowlarr/health#indexer-search-failures"
},
{
"source": "ProxyCheck",
"type": "ok",
"message": "No proxy configuration issues detected"
},
{
"source": "IndexerLongTermStatusCheck",
"type": "warning",
"message": "Indexer RARBG has been failing for more than 6 hours: HTTP 403 Forbidden",
"wikiUrl": "https://wiki.servarr.com/prowlarr/health#indexers-are-unavailable-due-to-recent-failures"
}
]

View file

@ -0,0 +1,35 @@
{
"data": [{
"disk": 0,
"mem": 983848043,
"cpus": 2,
"pid": 1218,
"maxdisk": 107374182400,
"netin": 43863882954,
"diskread": 0,
"diskwrite": 0,
"name": "HAOS",
"netout": 10426448652,
"cpu": 0.00879886290177172,
"uptime": 3390069,
"status": "running",
"maxmem": 3221225472,
"vmid": 100
}, {
"cpu": 0.00219971572544293,
"name": "debian1",
"netout": 919020028,
"vmid": 101,
"maxmem": 4294967296,
"uptime": 3390064,
"status": "running",
"maxdisk": 107374182400,
"pid": 1295,
"cpus": 2,
"disk": 0,
"mem": 2755160795,
"diskread": 0,
"diskwrite": 0,
"netin": 5105600872
}]
}

View file

@ -0,0 +1,35 @@
{
"data": [{
"disk": 0,
"mem": 983848043,
"cpus": 2,
"pid": 1218,
"maxdisk": 107374182400,
"netin": 43863882954,
"diskread": 0,
"diskwrite": 0,
"name": "HAOS",
"netout": 10426448652,
"cpu": 0.00879886290177172,
"uptime": 3390069,
"status": "running",
"maxmem": 3221225472,
"vmid": 100
}, {
"cpu": 0.00219971572544293,
"name": "debian1",
"netout": 919020028,
"vmid": 101,
"maxmem": 4294967296,
"uptime": 3390064,
"status": "running",
"maxdisk": 107374182400,
"pid": 1295,
"cpus": 2,
"disk": 0,
"mem": 2755160795,
"diskread": 0,
"diskwrite": 0,
"netin": 5105600872
}]
}

View file

@ -0,0 +1,44 @@
{
"data": {
"swap": {
"free": 8589930496,
"total": 8589930496,
"used": 0
},
"cpuinfo": {
"model": "Intel(R) Core(TM) i7-4790 CPU @3.60GHz",
"hvm": "1",
"user_hz": 100,
"sockets": 1,
"cpus": 8,
"flags": "fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc cpuid aperfmperf pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 sdbg fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand lahf_lm abm cpuid_fault epb invpcid_single pti tpr_shadow vnmi flexpriority ept vpid ept_ad fsgsbase tsc_adjust bmi1 hle avx2 smep bmi2 erms invpcid rtm xsaveopt dtherm ida arat pln pts",
"cores": 4,
"mhz": "4000.000"
},
"idle": 0,
"memory": {
"used": 6283382784,
"total": 12419133440,
"free": 6135750656
},
"rootfs": {
"avail": 22670036992,
"free": 24176627712,
"total": 29148368896,
"used": 4971741184
},
"uptime": 3390081,
"ksm": {
"shared": 1079975936
},
"cpu": 0.00440286186020914,
"kversion": "Linux 5.15.30-2-pve #1 SMP PVE 5.15.30-3 (Fri, 22 Apr 2022 18: 08: 27+0200)",
"loadavg": [
"0.00",
"0.01",
"0.04"
],
"pveversion": "pve-manager/7.2-3/c743d6c1",
"wait": 0.00330214639515685
}
}

View file

@ -0,0 +1,53 @@
[
{
"added_on": 1666985518,
"amount_left": 0,
"auto_tmm": false,
"availability": -1,
"category": "",
"completed": 1474873344,
"completion_on": 1666985584,
"content_path": "/downloads/ubuntu-22.04.1-live-server-amd64.iso",
"dl_limit": -1,
"dlspeed": 0,
"download_path": "",
"downloaded": 1513976240,
"downloaded_session": 0,
"eta": 8640000,
"f_l_piece_prio": false,
"force_start": false,
"hash": "cf3ea75e2ebbd30e0da6e6e215e2226bf35f2e33",
"infohash_v1": "cf3ea75e2ebbd30e0da6e6e215e2226bf35f2e33",
"infohash_v2": "",
"last_activity": 1666985588,
"magnet_uri": "magnet:?xt=urn:btih:cf3ea75e2ebbd30e0da6e6e215e2226bf35f2e33&dn=ubuntu-22.04.1-live-server-amd64.iso&tr=https%3a%2f%2ftorrent.ubuntu.com%2fannounce&tr=https%3a%2f%2fipv6.torrent.ubuntu.com%2fannounce",
"max_ratio": 0,
"max_seeding_time": -1,
"name": "ubuntu-22.04.1-live-server-amd64.iso",
"num_complete": 0,
"num_incomplete": 583,
"num_leechs": 0,
"num_seeds": 0,
"priority": 0,
"progress": 1,
"ratio": 1.7163413343924075e-05,
"ratio_limit": -2,
"save_path": "/downloads/",
"seeding_time": 4,
"seeding_time_limit": -2,
"seen_complete": 1666985584,
"seq_dl": false,
"size": 1474873344,
"state": "pausedUP",
"super_seeding": false,
"tags": "",
"time_active": 69,
"total_size": 1474873344,
"tracker": "",
"trackers_count": 2,
"up_limit": -1,
"uploaded": 25985,
"uploaded_session": 0,
"upspeed": 0
}
]

View file

@ -0,0 +1,10 @@
{
"connection_status": "connected",
"dht_nodes": 318,
"dl_info_data": 23481469329,
"dl_info_speed": 1234567,
"dl_rate_limit": 40960000,
"up_info_data": 1788370216,
"up_info_speed": 765432,
"up_rate_limit": 10547200
}

View file

@ -0,0 +1,35 @@
[
{
"source": "IndexerStatusCheck",
"type": "warning",
"message": "Indexer TorrentDay is unavailable due to recent indexer errors: HTTP 503 Service Unavailable",
"wikiUrl": "https://wiki.servarr.com/radarr/health#indexers-are-unavailable-due-to-recent-failures"
},
{
"source": "ImportMechanismCheck",
"type": "ok",
"message": "No issues with import mechanism checks"
},
{
"source": "DownloadClientStatusCheck",
"type": "ok",
"message": "All download clients are available"
},
{
"source": "RootFolderCheck",
"type": "warning",
"message": "Missing root folder: /movies",
"wikiUrl": "https://wiki.servarr.com/radarr/health#missing-root-folder"
},
{
"source": "UpdateCheck",
"type": "ok",
"message": "Update available: 4.7.5.7809 -> 5.0.3.8127"
},
{
"source": "DiskSpaceCheck",
"type": "error",
"message": "Disk space is critically low on /movies: 2.1 GB remaining",
"wikiUrl": "https://wiki.servarr.com/radarr/health#disk-space"
}
]

View file

@ -0,0 +1,8 @@
{
"page": 1,
"pageSize": 20,
"sortKey": "progress",
"sortDirection": "descending",
"totalRecords": 2,
"records": []
}

View file

@ -0,0 +1,16 @@
[
{
"movieId": 1,
"title": "Inception (2010)",
"trackedDownloadStatus": "ok",
"trackedDownloadState": "importPending",
"id": 1
},
{
"movieId": 2,
"title": "The Matrix (1999)",
"trackedDownloadStatus": "warning",
"trackedDownloadState": "downloading",
"id": 2
}
]

View file

@ -0,0 +1,161 @@
{
"page": 1,
"pageSize": 20,
"sortKey": "digitalRelease",
"sortDirection": "descending",
"totalRecords": 5,
"records": [
{
"title": "Dune: Part Two",
"originalTitle": "Dune: Part Two",
"originalLanguage": {
"id": 1,
"name": "English"
},
"alternateTitles": [],
"secondaryYear": null,
"secondaryYearSourceId": 0,
"sortTitle": "dune part two",
"sizeOnDisk": 0,
"status": "released",
"overview": "Follow the mythic journey of Paul Atreides as he unites with Chani and the Fremen while on a path of revenge against the conspirators who destroyed his family.",
"inCinemas": "2024-02-29T00:00:00Z",
"physicalRelease": "2024-05-14T00:00:00Z",
"digitalRelease": "2024-04-16T00:00:00Z",
"images": [],
"website": "",
"remotePoster": "",
"year": 2024,
"hasFile": false,
"youTubeTrailerId": "",
"studio": "Warner Bros. Pictures",
"path": "/movies/Dune Part Two (2024)",
"qualityProfileId": 1,
"monitored": true,
"minimumAvailability": "announced",
"isAvailable": true,
"folderName": "Dune Part Two (2024)",
"runtime": 166,
"cleanTitle": "duneparttwo",
"imdbId": "tt15239678",
"tmdbId": 693134,
"titleSlug": "dune-part-two-2024",
"certification": "PG-13",
"genres": ["Adventure", "Drama", "Science Fiction"],
"tags": [],
"added": "2024-01-10T00:00:00Z",
"ratings": {
"votes": 234567,
"value": 8.9
},
"movieFile": null,
"collection": {
"name": "Dune Collection",
"tmdbId": 726871,
"images": []
},
"popularity": 89.245,
"id": 3
},
{
"title": "Oppenheimer",
"originalTitle": "Oppenheimer",
"originalLanguage": {
"id": 1,
"name": "English"
},
"alternateTitles": [],
"secondaryYear": null,
"secondaryYearSourceId": 0,
"sortTitle": "oppenheimer",
"sizeOnDisk": 0,
"status": "released",
"overview": "The story of J. Robert Oppenheimer's role in the development of the atomic bomb during World War II.",
"inCinemas": "2023-07-21T00:00:00Z",
"physicalRelease": "2023-11-21T00:00:00Z",
"digitalRelease": "2023-10-31T00:00:00Z",
"images": [],
"website": "",
"remotePoster": "",
"year": 2023,
"hasFile": false,
"youTubeTrailerId": "",
"studio": "Universal Pictures",
"path": "/movies/Oppenheimer (2023)",
"qualityProfileId": 1,
"monitored": true,
"minimumAvailability": "announced",
"isAvailable": true,
"folderName": "Oppenheimer (2023)",
"runtime": 180,
"cleanTitle": "oppenheimer",
"imdbId": "tt15398776",
"tmdbId": 872585,
"titleSlug": "oppenheimer-2023",
"certification": "R",
"genres": ["Drama", "History"],
"tags": [],
"added": "2024-01-05T00:00:00Z",
"ratings": {
"votes": 456789,
"value": 8.4
},
"movieFile": null,
"collection": null,
"popularity": 92.567,
"id": 4
},
{
"title": "Spider-Man: Across the Spider-Verse",
"originalTitle": "Spider-Man: Across the Spider-Verse",
"originalLanguage": {
"id": 1,
"name": "English"
},
"alternateTitles": [],
"secondaryYear": null,
"secondaryYearSourceId": 0,
"sortTitle": "spider man across spider verse",
"sizeOnDisk": 0,
"status": "released",
"overview": "After reuniting with Gwen Stacy, Brooklyn's full-time, friendly neighborhood Spider-Man is catapulted across the Multiverse, where he encounters the Spider-Society.",
"inCinemas": "2023-06-02T00:00:00Z",
"physicalRelease": "2023-09-05T00:00:00Z",
"digitalRelease": "2023-08-08T00:00:00Z",
"images": [],
"website": "",
"remotePoster": "",
"year": 2023,
"hasFile": false,
"youTubeTrailerId": "",
"studio": "Sony Pictures Animation",
"path": "/movies/Spider-Man Across the Spider-Verse (2023)",
"qualityProfileId": 2,
"monitored": true,
"minimumAvailability": "announced",
"isAvailable": true,
"folderName": "Spider-Man Across the Spider-Verse (2023)",
"runtime": 140,
"cleanTitle": "spidermanacrossthespiderverse",
"imdbId": "tt9362722",
"tmdbId": 569094,
"titleSlug": "spider-man-across-the-spider-verse-2023",
"certification": "PG",
"genres": ["Animation", "Action", "Adventure"],
"tags": [],
"added": "2024-01-03T00:00:00Z",
"ratings": {
"votes": 345678,
"value": 8.7
},
"movieFile": null,
"collection": {
"name": "Spider-Verse Collection",
"tmdbId": 573436,
"images": []
},
"popularity": 85.432,
"id": 5
}
]
}

View file

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><array><data>
<value><string>2BAC78C9E10D82415142E57D24601F2FD8927816</string></value>
<value><string>8BB10DB9EA239106D4907601C342ABBA29BE4391</string></value>
<value><string>2790CE71493BE7083929D5A1CE9CFD6B8394F224</string></value>
</data></array></value></param>
</params>
</methodResponse>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><i8>149279</i8></value></param>
</params>
</methodResponse>

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<methodResponse>
<params>
<param><value><i8>45616</i8></value></param>
</params>
</methodResponse>

Some files were not shown because too many files have changed in this diff Show more