mirror of
https://github.com/gethomepage/homepage.git
synced 2025-12-06 21:57:48 +01:00
Compare commits
335 Commits
v0.10.4
...
a6ab095ff9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a6ab095ff9 | ||
|
|
9a085bcb17 | ||
|
|
6d7be1c7f2 | ||
|
|
25cd51cee9 | ||
|
|
495de204d1 | ||
|
|
8e5f4d55c9 | ||
|
|
184fd65c76 | ||
|
|
15817f9b27 | ||
|
|
79671ac30e | ||
|
|
1d5db612fd | ||
|
|
d30016304b | ||
|
|
f0fd125e37 | ||
|
|
9ed4b85d5a | ||
|
|
f607d806d0 | ||
|
|
c0ddb5f816 | ||
|
|
fc563532e1 | ||
|
|
98248903c6 | ||
|
|
5870111d11 | ||
|
|
bb23c25690 | ||
|
|
4084c8dafc | ||
|
|
cb1dde1b79 | ||
|
|
1691711a52 | ||
|
|
b5d8f6c01c | ||
|
|
db86b5408a | ||
|
|
4be2c2868b | ||
|
|
c6197a9f92 | ||
|
|
dd861d7d1c | ||
|
|
e65f8c46f9 | ||
|
|
082e1316c1 | ||
|
|
a4b5e72d82 | ||
|
|
0e79501ddc | ||
|
|
4814ee48ef | ||
|
|
5b7a36666c | ||
|
|
75b27a644b | ||
|
|
b3bde11e3a | ||
|
|
8fdf2b074c | ||
|
|
20c4400a9b | ||
|
|
1a7e57bfb6 | ||
|
|
07f70a79be | ||
|
|
a2e3aa7085 | ||
|
|
085d91b3f7 | ||
|
|
9417929c99 | ||
|
|
6bc5f0f499 | ||
|
|
fa2efb1ac9 | ||
|
|
8c4e73e122 | ||
|
|
0c000c1ecd | ||
|
|
bbb013e0ce | ||
|
|
d581d70d1a | ||
|
|
612d05fd4d | ||
|
|
0d6ecae51b | ||
|
|
c48cf71d59 | ||
|
|
7f630fd77f | ||
|
|
aa942dbd73 | ||
|
|
7426a12cdf | ||
|
|
cbf2e1a509 | ||
|
|
d0165326a6 | ||
|
|
dba3a1f893 | ||
|
|
f5ecd6d787 | ||
|
|
1d990ef7c7 | ||
|
|
767e7c58b4 | ||
|
|
c393982e84 | ||
|
|
927b943fa4 | ||
|
|
50f6d5f0e7 | ||
|
|
0482bf7b17 | ||
|
|
e215e7d70e | ||
|
|
0a44a2dade | ||
|
|
0fe76b5af8 | ||
|
|
e51db24418 | ||
|
|
1a1039194c | ||
|
|
00bb1a3f37 | ||
|
|
73aa2018a8 | ||
|
|
8ce9e57ed8 | ||
|
|
6e16adc460 | ||
|
|
352c54ecc4 | ||
|
|
a64c83209a | ||
|
|
1147fc858f | ||
|
|
fcfb9c2237 | ||
|
|
34bffe980a | ||
|
|
5759596a37 | ||
|
|
30abf4e422 | ||
|
|
0e96778740 | ||
|
|
fc99a0d1db | ||
|
|
417d69d39d | ||
|
|
8f4013012a | ||
|
|
0c6c40dae7 | ||
|
|
1a46baae69 | ||
|
|
0fa3d7e57b | ||
|
|
be7e1115cc | ||
|
|
dc0fede4d2 | ||
|
|
7850fe4651 | ||
|
|
524cb7695c | ||
|
|
35be5559b3 | ||
|
|
75ff2e674f | ||
|
|
edab958328 | ||
|
|
2334021da0 | ||
|
|
1079d33ad1 | ||
|
|
42c69db7da | ||
|
|
27a392dcce | ||
|
|
74c2a2462b | ||
|
|
0d47fa8215 | ||
|
|
ee07a7dcbe | ||
|
|
6cf3abd45e | ||
|
|
ea37ab2f78 | ||
|
|
564a0880b0 | ||
|
|
f8768711da | ||
|
|
6abb3d8758 | ||
|
|
3f160cc4ae | ||
|
|
81547f8806 | ||
|
|
d5f66e12fc | ||
|
|
9c7e177b4f | ||
|
|
49ad01733c | ||
|
|
6c82883fa9 | ||
|
|
3c6f99d5ae | ||
|
|
b28cc0b7f6 | ||
|
|
2509d8c235 | ||
|
|
a0868e3201 | ||
|
|
7e8752243c | ||
|
|
41dc2e77cb | ||
|
|
8b50296dad | ||
|
|
61a669c85d | ||
|
|
af7803fd04 | ||
|
|
937cecf24e | ||
|
|
c562016cce | ||
|
|
2376184b14 | ||
|
|
7272823d20 | ||
|
|
3223b1fb87 | ||
|
|
38f60a7566 | ||
|
|
63e521ae93 | ||
|
|
cf54c7b824 | ||
|
|
4a9ca62efd | ||
|
|
a35da39c03 | ||
|
|
d99c3cb691 | ||
|
|
1fe4f49771 | ||
|
|
0a1bf3b2be | ||
|
|
23e9982a7a | ||
|
|
e2c997f29d | ||
|
|
ae9fbdcb8b | ||
|
|
a60dbb7abc | ||
|
|
6597ec566b | ||
|
|
52399e21e1 | ||
|
|
dbc26e835c | ||
|
|
a59ee5a605 | ||
|
|
f46568ec2a | ||
|
|
5e946ed2c2 | ||
|
|
6741eb723d | ||
|
|
1666106dcd | ||
|
|
eda06965fa | ||
|
|
954ab54493 | ||
|
|
30cb893354 | ||
|
|
4567427b9c | ||
|
|
ee7e8fab61 | ||
|
|
313835c0e6 | ||
|
|
999dade861 | ||
|
|
2cabe77b55 | ||
|
|
0a50d5a6aa | ||
|
|
e19dcc2729 | ||
|
|
cadf1433af | ||
|
|
6bae078a8d | ||
|
|
77bbdc6a04 | ||
|
|
1f8fd1c69d | ||
|
|
5d557844cc | ||
|
|
a4b07b91fe | ||
|
|
d853bbfe44 | ||
|
|
7fd5e6ccb1 | ||
|
|
aed602ad70 | ||
|
|
fa28a11658 | ||
|
|
a3b693e2b6 | ||
|
|
708c4e64d1 | ||
|
|
11a6b5d0b8 | ||
|
|
ce0102eb6f | ||
|
|
42f1ed3c47 | ||
|
|
dca23e8547 | ||
|
|
8d20f22932 | ||
|
|
071b5275bc | ||
|
|
de9c015f7f | ||
|
|
b4dc53c7c0 | ||
|
|
934ad3a6f1 | ||
|
|
6fbe080b28 | ||
|
|
4047f8d6e8 | ||
|
|
59cd5564f8 | ||
|
|
5f19e4af91 | ||
|
|
5ea46881ee | ||
|
|
9545757bb9 | ||
|
|
95507aab54 | ||
|
|
564dfb7ce3 | ||
|
|
7b72442114 | ||
|
|
65370a7668 | ||
|
|
6e9339b14c | ||
|
|
241c786710 | ||
|
|
801ce479d8 | ||
|
|
16730ffec2 | ||
|
|
b35dd80e8c | ||
|
|
82b159bf14 | ||
|
|
6292a0709c | ||
|
|
42af93bef3 | ||
|
|
964991781c | ||
|
|
607a14083e | ||
|
|
133a0a6539 | ||
|
|
0d0f465e16 | ||
|
|
16c1b2da9b | ||
|
|
4761a56b3d | ||
|
|
9d40b67d49 | ||
|
|
97f4bcbdb0 | ||
|
|
ea1375e575 | ||
|
|
733a3140d1 | ||
|
|
b5ac617597 | ||
|
|
9b06212a92 | ||
|
|
6b4182ab96 | ||
|
|
8656b8e2f1 | ||
|
|
dd8e9270f2 | ||
|
|
90dd8e5967 | ||
|
|
6fca9e342d | ||
|
|
66a8b1c21e | ||
|
|
a0dc8c9ccb | ||
|
|
8190260400 | ||
|
|
7ced73b206 | ||
|
|
a2f4dd289b | ||
|
|
0c7cac74ea | ||
|
|
d81fcee31f | ||
|
|
f7889eab27 | ||
|
|
91518d972d | ||
|
|
a090f98fab | ||
|
|
5629440acf | ||
|
|
471800d5bc | ||
|
|
6ab57b7b14 | ||
|
|
f767ff047f | ||
|
|
26242d657d | ||
|
|
3ff61cfad6 | ||
|
|
9c1ac747be | ||
|
|
859bd459a8 | ||
|
|
544b9aef2f | ||
|
|
bea02fc8c7 | ||
|
|
1f282a1a93 | ||
|
|
bb5cb36491 | ||
|
|
9a6489c117 | ||
|
|
955baf9cb1 | ||
|
|
e9630afa30 | ||
|
|
4c91dfa71b | ||
|
|
f33ff582fd | ||
|
|
b8b5c1a4cb | ||
|
|
03cd98b1d6 | ||
|
|
f7def5c2ce | ||
|
|
d26ec27942 | ||
|
|
548b5f8081 | ||
|
|
b466be684f | ||
|
|
99cde187d8 | ||
|
|
d55a5e5efe | ||
|
|
fdf405fe0a | ||
|
|
9b8dd94aae | ||
|
|
8b1f1c391f | ||
|
|
a8961c3345 | ||
|
|
7f910814f8 | ||
|
|
862b0e5821 | ||
|
|
d682b6a4bf | ||
|
|
bee16c7eb6 | ||
|
|
9097da2341 | ||
|
|
58391ff33f | ||
|
|
666d075ec4 | ||
|
|
7b7c7a5b80 | ||
|
|
1dd5a9e1b0 | ||
|
|
0fd4ac17cd | ||
|
|
94738e2c0d | ||
|
|
1c24bd7449 | ||
|
|
2881114816 | ||
|
|
f1ec02fb6f | ||
|
|
68480a65db | ||
|
|
63b9d395dd | ||
|
|
a5bdfd92d7 | ||
|
|
48e2c494eb | ||
|
|
d95709de95 | ||
|
|
cf90312089 | ||
|
|
bcdd4a149b | ||
|
|
96af6cf804 | ||
|
|
b63d740ed1 | ||
|
|
fea4b27bb4 | ||
|
|
455103a9f1 | ||
|
|
277fbe8051 | ||
|
|
477392aa29 | ||
|
|
e46377f461 | ||
|
|
f283b83e6e | ||
|
|
0a1265455b | ||
|
|
05af70d11b | ||
|
|
91d5fc8e42 | ||
|
|
2a95f88cdf | ||
|
|
0615799c6c | ||
|
|
839f6d4baf | ||
|
|
cc6fe63d40 | ||
|
|
ae500fd983 | ||
|
|
873c265205 | ||
|
|
07dff4c8a5 | ||
|
|
cbacf458b2 | ||
|
|
cae304b7eb | ||
|
|
e6a821ecc3 | ||
|
|
49036a9738 | ||
|
|
0197b449ed | ||
|
|
dc3382447c | ||
|
|
6beaf665fb | ||
|
|
b9622f75b0 | ||
|
|
cd8c7d9016 | ||
|
|
9021182c2c | ||
|
|
fe462a71d6 | ||
|
|
1e556e105d | ||
|
|
b5f4daa8ef | ||
|
|
fd50241e2a | ||
|
|
6a0fbba407 | ||
|
|
2ee5fd123b | ||
|
|
86a13817df | ||
|
|
2f7d948a5c | ||
|
|
1b79e51194 | ||
|
|
2d98ac30f2 | ||
|
|
1a85175b15 | ||
|
|
6f429a6a4b | ||
|
|
3020a2d1fd | ||
|
|
a6e85240c6 | ||
|
|
98e816204a | ||
|
|
a0b5ac318a | ||
|
|
101461b7b5 | ||
|
|
ba6f50f21d | ||
|
|
dd3a229559 | ||
|
|
630d5024ac | ||
|
|
d239687e2e | ||
|
|
81a3dfbfe4 | ||
|
|
034720f47a | ||
|
|
0717607a97 | ||
|
|
ee5442c15c | ||
|
|
b2158b0921 | ||
|
|
a158866ca1 | ||
|
|
4f27ffbe2d | ||
|
|
10bc8a15a9 | ||
|
|
5d63b3d212 | ||
|
|
43decb0ed9 | ||
|
|
e4d42b5393 | ||
|
|
f717e59085 | ||
|
|
fd05ae377c | ||
|
|
d0937fe6a8 |
@@ -16,11 +16,11 @@
|
||||
**/compose*
|
||||
**/Dockerfile*
|
||||
**/node_modules
|
||||
!.next/standalone/node_modules
|
||||
**/npm-debug.log
|
||||
**/obj
|
||||
**/secrets.dev.yaml
|
||||
**/values.dev.yaml
|
||||
**/.next
|
||||
README.md
|
||||
config/
|
||||
k3d/
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
{
|
||||
"extends": ["airbnb", "next/core-web-vitals", "prettier"],
|
||||
"extends": [
|
||||
"next/core-web-vitals",
|
||||
"prettier",
|
||||
"plugin:react-hooks/recommended"
|
||||
],
|
||||
"plugins": ["prettier"],
|
||||
"rules": {
|
||||
"import/no-cycle": [
|
||||
@@ -27,5 +31,12 @@
|
||||
"paths": ["src"]
|
||||
}
|
||||
}
|
||||
},
|
||||
"parserOptions": {
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module",
|
||||
"ecmaFeatures": {
|
||||
"modules": true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
12
.github/DISCUSSION_TEMPLATE/support.yml
vendored
12
.github/DISCUSSION_TEMPLATE/support.yml
vendored
@@ -4,7 +4,7 @@ body:
|
||||
value: |
|
||||
### ⚠️ Before opening a discussion:
|
||||
|
||||
- [Check the troubleshooting guide](https://gethomepage.dev/troubleshooting/).
|
||||
- [Check the troubleshooting guide](https://gethomepage.dev/troubleshooting/) and include the output of all steps below.
|
||||
- [Search existing issues](https://github.com/gethomepage/homepage/search?q=&type=issues) [and discussions](https://github.com/gethomepage/homepage/search?q=&type=discussions) (including closed ones!).
|
||||
- type: textarea
|
||||
id: description
|
||||
@@ -51,6 +51,14 @@ body:
|
||||
id: troubleshooting
|
||||
attributes:
|
||||
label: Troubleshooting
|
||||
description: Please include output from your [troubleshooting tests](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
|
||||
description: Please include output from your [troubleshooting steps](https://gethomepage.dev/more/troubleshooting/#service-widget-errors), if relevant.
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## ⚠️ STOP ⚠️
|
||||
|
||||
Before you submit this support request, please ensure you have entered your configuration files and actually followed the steps from the troubleshooting guide linked above *and posted the output*, if relevant. The troubleshooting steps often help to solve the problem or at least can help figure it out.
|
||||
|
||||
*Please remember that this project is maintained by regular people **just like you**, so if you don't take the time to fill out the requested information, don't expect a reply back.*
|
||||
|
||||
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
8
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -6,6 +6,7 @@
|
||||
==================== STOP ====
|
||||
|
||||
⚠️ Before opening this pull request please review the guidelines in the checklist below.
|
||||
|
||||
If this PR does not meet those guidelines it will not be accepted, and everyone will be sad.
|
||||
-->
|
||||
|
||||
@@ -14,9 +15,6 @@ If this PR does not meet those guidelines it will not be accepted, and everyone
|
||||
<!--
|
||||
Please include a summary of the change. Screenshots and/or videos can also be helpful if appropriate.
|
||||
|
||||
*** Please see the development guidelines for new widgets: https://gethomepage.dev/more/development/#service-widget-guidelines
|
||||
*** If you do not follow these guidelines your PR will likely be closed without review.
|
||||
|
||||
New service widgets should include example(s) of relevant API output as well as updates to the docs for the new widget.
|
||||
-->
|
||||
|
||||
@@ -30,13 +28,13 @@ What type of change does your PR introduce to Homepage?
|
||||
|
||||
- [ ] New service widget
|
||||
- [ ] Bug fix (non-breaking change which fixes an issue)
|
||||
- [ ] New feature (non-breaking change which adds functionality)
|
||||
- [ ] New feature or enhancement (non-breaking change which adds functionality)
|
||||
- [ ] Documentation only
|
||||
- [ ] Other (please explain)
|
||||
|
||||
## Checklist:
|
||||
|
||||
- [ ] If applicable, I have added corresponding documentation changes.
|
||||
- [ ] If applicable, I have reviewed the [feature](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
||||
- [ ] If applicable, I have reviewed the [feature / enhancement](https://gethomepage.dev/more/development/#new-feature-guidelines) and / or [service widget guidelines](https://gethomepage.dev/more/development/#service-widget-guidelines).
|
||||
- [ ] I have checked that all code style checks pass using [pre-commit hooks](https://gethomepage.dev/more/development/#code-formatting-with-pre-commit-hooks) and [linting checks](https://gethomepage.dev/more/development/#code-linting).
|
||||
- [ ] If applicable, I have tested my code for new features & regressions on both mobile & desktop devices, using the latest version of major browsers.
|
||||
|
||||
2
.github/workflows/crowdin.yml
vendored
2
.github/workflows/crowdin.yml
vendored
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: crowdin action
|
||||
uses: crowdin/github-action@v2
|
||||
with:
|
||||
|
||||
163
.github/workflows/docker-publish.yml
vendored
163
.github/workflows/docker-publish.yml
vendored
@@ -1,9 +1,4 @@
|
||||
name: Docker
|
||||
|
||||
# This workflow uses actions that are not certified by GitHub.
|
||||
# They are provided by a third-party and are governed by
|
||||
# separate terms of service, privacy policy, and support
|
||||
# documentation.
|
||||
name: Docker CI
|
||||
|
||||
on:
|
||||
schedule:
|
||||
@@ -13,94 +8,61 @@ on:
|
||||
- main
|
||||
- feature/**
|
||||
- dev
|
||||
# Publish semver tags as releases.
|
||||
tags: [ 'v*.*.*' ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
pull_request:
|
||||
branches: [ "dev" ]
|
||||
paths-ignore:
|
||||
- 'docs/**'
|
||||
- 'mkdocs.yml'
|
||||
merge_group:
|
||||
|
||||
env:
|
||||
# github.repository as <account>/<repo>
|
||||
IMAGE_NAME: ${{ github.repository }}
|
||||
|
||||
|
||||
jobs:
|
||||
pre-commit:
|
||||
name: Linting Checks
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
-
|
||||
name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
-
|
||||
name: Install python
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v5
|
||||
|
||||
- name: Install python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3.x
|
||||
-
|
||||
name: Check files
|
||||
|
||||
- name: Check files
|
||||
uses: pre-commit/action@v3.0.1
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
run_install: false
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Lint frontend
|
||||
run: pnpm run lint
|
||||
|
||||
build:
|
||||
name: Docker Build & Push
|
||||
if: github.repository == 'gethomepage/homepage'
|
||||
if: github.repository == 'gethomepage/homepage'
|
||||
runs-on: self-hosted
|
||||
needs:
|
||||
- pre-commit
|
||||
needs: [ pre-commit ]
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
# This is used to complete the identity challenge
|
||||
# with sigstore/fulcio when running outside of PRs.
|
||||
id-token: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
|
||||
# Setup QEMU
|
||||
# https://github.com/marketplace/actions/docker-setup-buildx#with-qemu
|
||||
- name: Setup QEMU
|
||||
uses: docker/setup-qemu-action@v3
|
||||
|
||||
# Workaround: https://github.com/docker/build-push-action/issues/461
|
||||
- name: Setup Docker buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
# This step is being disabled because the runner is on a self-hosted machine
|
||||
# where the cache will stick between runs.
|
||||
# - name: Cache Docker layers
|
||||
# uses: actions/cache@v3
|
||||
# with:
|
||||
# path: /tmp/.buildx-cache
|
||||
# key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
# restore-keys: |
|
||||
# ${{ runner.os }}-buildx-
|
||||
|
||||
# Login against a Docker registry except on PR
|
||||
# https://github.com/docker/login-action
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Login to Docker Hub
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
# Extract metadata (tags, labels) for Docker
|
||||
# https://github.com/docker/metadata-action
|
||||
- name: Extract Docker metadata
|
||||
id: meta
|
||||
uses: docker/metadata-action@v5
|
||||
@@ -108,11 +70,68 @@ jobs:
|
||||
images: |
|
||||
${{ env.IMAGE_NAME }}
|
||||
ghcr.io/${{ env.IMAGE_NAME }}
|
||||
tags: |
|
||||
# Default tags
|
||||
type=schedule,pattern=nightly
|
||||
type=ref,event=branch
|
||||
type=ref,event=tag
|
||||
# Versioning tags
|
||||
type=semver,pattern=v{{version}}
|
||||
type=semver,pattern=v{{major}}.{{minor}}
|
||||
type=semver,pattern=v{{major}}
|
||||
flavor: |
|
||||
latest=auto
|
||||
|
||||
# Build and push Docker image with Buildx (don't push on PR)
|
||||
# https://github.com/docker/build-push-action
|
||||
- name: Next.js build cache
|
||||
uses: actions/cache@v4
|
||||
with:
|
||||
path: .next/cache
|
||||
key: nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ hashFiles('**/*.js', '**/*.jsx') }}
|
||||
restore-keys: |
|
||||
nextjs-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}
|
||||
|
||||
- name: Install pnpm
|
||||
uses: pnpm/action-setup@v4
|
||||
with:
|
||||
run_install: false
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
run: pnpm install
|
||||
|
||||
- name: Build app
|
||||
run: |
|
||||
NEXT_PUBLIC_BUILDTIME="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}" \
|
||||
NEXT_PUBLIC_VERSION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}" \
|
||||
NEXT_PUBLIC_REVISION="${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}" \
|
||||
pnpm run build
|
||||
|
||||
- name: Log into registry ${{ env.REGISTRY }}
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Login to Docker Hub
|
||||
if: github.event_name != 'pull_request'
|
||||
uses: docker/login-action@v3
|
||||
with:
|
||||
username: ${{ secrets.DOCKERHUB_USERNAME }}
|
||||
password: ${{ secrets.DOCKERHUB_TOKEN }}
|
||||
|
||||
- name: Setup QEMU
|
||||
uses: docker/setup-qemu-action@v3.6.0
|
||||
|
||||
- name: Setup Docker buildx
|
||||
uses: docker/setup-buildx-action@v3
|
||||
|
||||
- name: Build and push Docker image
|
||||
id: build-and-push
|
||||
uses: docker/build-push-action@v6
|
||||
@@ -122,18 +141,16 @@ jobs:
|
||||
tags: ${{ steps.meta.outputs.tags }}
|
||||
labels: ${{ steps.meta.outputs.labels }}
|
||||
build-args: |
|
||||
CI=true
|
||||
BUILDTIME=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.created'] }}
|
||||
VERSION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.version'] }}
|
||||
REVISION=${{ fromJSON(steps.meta.outputs.json).labels['org.opencontainers.image.revision'] }}
|
||||
# https://github.com/docker/setup-qemu-action#about
|
||||
# platforms: linux/amd64,linux/arm64,linux/riscv64,linux/ppc64le,linux/s390x,linux/386,linux/mips64le,linux/mips64,linux/arm/v7,linux/arm/v6
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6
|
||||
platforms: linux/amd64,linux/arm64
|
||||
provenance: false
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||
|
||||
# Temp fix
|
||||
# https://github.com/docker/build-push-action/issues/252
|
||||
# https://github.com/moby/buildkit/issues/1896
|
||||
# https://github.com/docker/build-push-action/issues/252 / https://github.com/moby/buildkit/issues/1896
|
||||
- name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
|
||||
18
.github/workflows/docs-publish.yml
vendored
18
.github/workflows/docs-publish.yml
vendored
@@ -4,13 +4,7 @@ on:
|
||||
push:
|
||||
tags: ["v*.*.*"]
|
||||
branches: ["main"]
|
||||
paths:
|
||||
- "docs/**"
|
||||
- "mkdocs.yml"
|
||||
pull_request:
|
||||
paths:
|
||||
- "docs/**"
|
||||
- "mkdocs.yml"
|
||||
merge_group:
|
||||
workflow_dispatch:
|
||||
|
||||
@@ -23,7 +17,7 @@ jobs:
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v5
|
||||
- name: Install python
|
||||
uses: actions/setup-python@v5
|
||||
with:
|
||||
@@ -32,13 +26,13 @@ jobs:
|
||||
uses: pre-commit/action@v3.0.1
|
||||
|
||||
test:
|
||||
name: Test Build
|
||||
name: Test Build Docs
|
||||
if: github.repository == 'gethomepage/homepage' && github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- uses: actions/setup-python@v5
|
||||
with:
|
||||
python-version: 3.x
|
||||
@@ -54,13 +48,13 @@ jobs:
|
||||
- name: Test Docs Build
|
||||
run: MKINSIDERS=false mkdocs build
|
||||
deploy:
|
||||
name: Build & Deploy
|
||||
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request'
|
||||
name: Build & Deploy Docs
|
||||
if: github.repository == 'gethomepage/homepage' && github.event_name != 'pull_request' && github.ref == 'refs/heads/main'
|
||||
runs-on: ubuntu-latest
|
||||
needs:
|
||||
- pre-commit
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v5
|
||||
- name: Configure Git Credentials
|
||||
run: |
|
||||
git config user.name github-actions[bot]
|
||||
|
||||
2
.github/workflows/reaction-comments.yml
vendored
2
.github/workflows/reaction-comments.yml
vendored
@@ -5,8 +5,6 @@ on:
|
||||
types: [created, edited]
|
||||
pull_request_review_comment:
|
||||
types: [created, edited]
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
permissions:
|
||||
actions: write
|
||||
|
||||
4
.github/workflows/repo-maintenance.yml
vendored
4
.github/workflows/repo-maintenance.yml
vendored
@@ -212,9 +212,9 @@ jobs:
|
||||
}
|
||||
|
||||
const CUTOFF_1_DAYS = 180;
|
||||
const CUTOFF_1_COUNT = 10;
|
||||
const CUTOFF_1_COUNT = 20;
|
||||
const CUTOFF_2_DAYS = 365;
|
||||
const CUTOFF_2_COUNT = 20;
|
||||
const CUTOFF_2_COUNT = 40;
|
||||
|
||||
const cutoff1Date = new Date();
|
||||
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);
|
||||
|
||||
@@ -9,11 +9,14 @@ repos:
|
||||
- id: check-yaml
|
||||
exclude: "(^mkdocs\\.yml$)"
|
||||
- id: check-added-large-files
|
||||
- repo: https://github.com/pre-commit/mirrors-prettier
|
||||
rev: 'v3.0.3'
|
||||
- repo: https://github.com/rbubley/mirrors-prettier
|
||||
rev: 'v3.3.3'
|
||||
hooks:
|
||||
- id: prettier
|
||||
types_or:
|
||||
- javascript
|
||||
- markdown
|
||||
- jsx
|
||||
additional_dependencies:
|
||||
- prettier@3.3.3
|
||||
- 'prettier-plugin-organize-imports@4.1.0'
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
{}
|
||||
5
.prettierrc.js
Normal file
5
.prettierrc.js
Normal file
@@ -0,0 +1,5 @@
|
||||
const config = {
|
||||
plugins: [require("prettier-plugin-organize-imports")],
|
||||
};
|
||||
|
||||
module.exports = config;
|
||||
32
.vscode/launch.json
vendored
32
.vscode/launch.json
vendored
@@ -1,19 +1,31 @@
|
||||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Next.js: debug full stack",
|
||||
"name": "Debug homepage",
|
||||
"type": "node",
|
||||
"request": "launch",
|
||||
"runtimeExecutable": "${workspaceFolder}/node_modules/.bin/next",
|
||||
"serverReadyAction": {
|
||||
"pattern": "started server on .+, url: (https?://.+)",
|
||||
"uriFormat": "%s",
|
||||
"action": "debugWithChrome"
|
||||
"runtimeExecutable": "pnpm",
|
||||
"runtimeArgs": ["run", "dev"],
|
||||
"env": {
|
||||
"LOG_LEVEL": "debug"
|
||||
},
|
||||
"skipFiles": ["<node_internals>/**"],
|
||||
"console": "integratedTerminal",
|
||||
"serverReadyAction":{
|
||||
"pattern": ".*http://localhost:3000.*",
|
||||
"action": "startDebugging",
|
||||
"name": "Launch Chromium",
|
||||
"killOnServerStop": true,
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "Launch Chromium",
|
||||
"type": "chrome",
|
||||
"request": "launch",
|
||||
"url": "http://localhost:3000",
|
||||
"urlFilter": "http://localhost:3000",
|
||||
"webRoot": "${workspaceFolder}",
|
||||
"trace": true
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@ The homepage team appreciates all effort and interest from the community in fili
|
||||
- Issues, pull requests and discussions that are closed will be locked after 30 days of inactivity.
|
||||
- Discussions with a marked answer will be automatically closed.
|
||||
- Discussions in the 'General' or 'Support' categories will be closed after 180 days of inactivity.
|
||||
- Feature requests that do not meet the following thresholds will be closed: 5 "up-votes" after 180 days of inactivity or 10 "up-votes" after 365 days.
|
||||
- Feature requests that do not meet the following thresholds will be closed: 20 "up-votes" after 180 days of inactivity or 40 "up-votes" after 365 days.
|
||||
|
||||
In all cases, threads can be re-opened by project maintainers and, of course, users can always create a new discussion for related concerns.
|
||||
Finally, remember that all information remains searchable and 'closed' feature requests can still serve as inspiration for new features.
|
||||
|
||||
79
Dockerfile
79
Dockerfile
@@ -1,66 +1,63 @@
|
||||
# syntax = docker/dockerfile:latest
|
||||
|
||||
# Install dependencies only when needed
|
||||
FROM docker.io/node:18-alpine AS deps
|
||||
|
||||
# =========================
|
||||
# Builder Stage
|
||||
# =========================
|
||||
FROM node:22-slim AS builder
|
||||
WORKDIR /app
|
||||
|
||||
COPY --link package.json pnpm-lock.yaml* ./
|
||||
|
||||
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
|
||||
RUN apk add --no-cache libc6-compat \
|
||||
&& apk add --no-cache --virtual .gyp python3 make g++ \
|
||||
&& npm install -g pnpm
|
||||
|
||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"
|
||||
|
||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm install -r --offline
|
||||
|
||||
# Rebuild the source code only when needed
|
||||
FROM docker.io/node:18-alpine AS builder
|
||||
WORKDIR /app
|
||||
# Setup
|
||||
RUN mkdir config
|
||||
COPY . .
|
||||
|
||||
ARG CI
|
||||
ARG BUILDTIME
|
||||
ARG VERSION
|
||||
ARG REVISION
|
||||
ENV CI=$CI
|
||||
|
||||
COPY --link --from=deps /app/node_modules ./node_modules/
|
||||
COPY . .
|
||||
# Install and build only outside CI
|
||||
RUN if [ "$CI" != "true" ]; then \
|
||||
corepack enable && corepack prepare pnpm@latest --activate && \
|
||||
pnpm install --frozen-lockfile --prefer-offline && \
|
||||
NEXT_TELEMETRY_DISABLED=1 \
|
||||
NEXT_PUBLIC_BUILDTIME=$BUILDTIME \
|
||||
NEXT_PUBLIC_VERSION=$VERSION \
|
||||
NEXT_PUBLIC_REVISION=$REVISION \
|
||||
pnpm run build; \
|
||||
else \
|
||||
echo "✅ Using prebuilt app from CI context"; \
|
||||
fi
|
||||
|
||||
SHELL ["/bin/ash", "-xeo", "pipefail", "-c"]
|
||||
RUN npm run telemetry \
|
||||
&& mkdir config \
|
||||
&& NEXT_PUBLIC_BUILDTIME=$BUILDTIME NEXT_PUBLIC_VERSION=$VERSION NEXT_PUBLIC_REVISION=$REVISION npm run build
|
||||
|
||||
# Production image, copy all the files and run next
|
||||
FROM docker.io/node:18-alpine AS runner
|
||||
LABEL org.opencontainers.image.title "Homepage"
|
||||
LABEL org.opencontainers.image.description "A self-hosted services landing page, with docker and service integrations."
|
||||
# =========================
|
||||
# Runtime Stage
|
||||
# =========================
|
||||
FROM node:22-alpine AS runner
|
||||
LABEL org.opencontainers.image.title="Homepage"
|
||||
LABEL org.opencontainers.image.description="A self-hosted services landing page, with docker and service integrations."
|
||||
LABEL org.opencontainers.image.url="https://github.com/gethomepage/homepage"
|
||||
LABEL org.opencontainers.image.documentation='https://github.com/gethomepage/homepage/wiki'
|
||||
LABEL org.opencontainers.image.source='https://github.com/gethomepage/homepage'
|
||||
LABEL org.opencontainers.image.licenses='Apache-2.0'
|
||||
|
||||
ENV NODE_ENV production
|
||||
|
||||
# Setup
|
||||
WORKDIR /app
|
||||
|
||||
# Copy files from context (this allows the files to copy before the builder stage is done).
|
||||
COPY --link --chown=1000:1000 package.json next.config.js ./
|
||||
# Copy some files from context
|
||||
COPY --link --chown=1000:1000 /public ./public/
|
||||
|
||||
# Copy files from builder
|
||||
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone ./
|
||||
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static/
|
||||
COPY --link --chmod=755 docker-entrypoint.sh /usr/local/bin/
|
||||
|
||||
RUN apk add --no-cache su-exec
|
||||
# Copy only necessary files from the build stage
|
||||
COPY --link --from=builder --chown=1000:1000 /app/.next/standalone/ ./
|
||||
COPY --link --from=builder --chown=1000:1000 /app/.next/static/ ./.next/static
|
||||
|
||||
ENV PORT 3000
|
||||
RUN apk add --no-cache su-exec iputils-ping shadow
|
||||
|
||||
ENV NODE_ENV=production
|
||||
ENV HOSTNAME=0.0.0.0
|
||||
ENV PORT=3000
|
||||
EXPOSE $PORT
|
||||
|
||||
HEALTHCHECK --interval=10s --timeout=3s --start-period=20s \
|
||||
CMD wget --no-verbose --tries=1 --spider --no-check-certificate http://localhost:$PORT/api/healthcheck || exit 1
|
||||
CMD wget --no-verbose --tries=1 --spider http://127.0.0.1:$PORT/api/healthcheck || exit 1
|
||||
|
||||
ENTRYPOINT ["docker-entrypoint.sh"]
|
||||
CMD ["node", "server.js"]
|
||||
|
||||
@@ -10,7 +10,7 @@ RUN <<EOF
|
||||
apk add libc6-compat
|
||||
apk add --virtual .gyp python3 make g++
|
||||
npm install -g pnpm
|
||||
npm install -g next
|
||||
pnpm install -g next
|
||||
EOF
|
||||
|
||||
RUN --mount=type=cache,id=pnpm-store,target=/root/.local/share/pnpm/store pnpm fetch | grep -v "cross-device link not permitted\|Falling back to copying packages from store"
|
||||
|
||||
@@ -38,7 +38,7 @@ With features like quick search, bookmarks, weather support, a wide range of int
|
||||
|
||||
- **Fast** - The site is statically generated at build time for instant load times.
|
||||
- **Secure** - All API requests to backend services are proxied, keeping your API keys hidden. Constantly reviewed for security by the community.
|
||||
- **For Everyone** - Images built for AMD64, ARM64, ARMv7, and ARMv6.
|
||||
- **For Everyone** - Images built for AMD64, ARM64.
|
||||
- **Full i18n** - Support for over 40 languages.
|
||||
- **Service & Web Bookmarks** - Add custom links to the homepage.
|
||||
- **Docker Integration** - Container status and stats. Automatic service discovery via labels.
|
||||
@@ -80,6 +80,7 @@ services:
|
||||
image: ghcr.io/gethomepage/homepage:latest
|
||||
container_name: homepage
|
||||
environment:
|
||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||
PUID: 1000 # optional, your user id
|
||||
PGID: 1000 # optional, your group id
|
||||
ports:
|
||||
@@ -94,6 +95,7 @@ or docker run:
|
||||
|
||||
```bash
|
||||
docker run --name homepage \
|
||||
-e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev \
|
||||
-e PUID=1000 \
|
||||
-e PGID=1000 \
|
||||
-p 3000:3000 \
|
||||
@@ -111,7 +113,7 @@ First, clone the repository:
|
||||
git clone https://github.com/gethomepage/homepage.git
|
||||
```
|
||||
|
||||
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
|
||||
Then install dependencies and build the production bundle:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
|
||||
@@ -12,10 +12,49 @@ export PGID=${PGID:-0}
|
||||
|
||||
export HOMEPAGE_BUILDTIME=$(date +%s)
|
||||
|
||||
# Set privileges for /app but only if pid 1 user is root and we are dropping privileges.
|
||||
# If container is run as an unprivileged user, it means owner already handled ownership setup on their own.
|
||||
# Running chown in that case (as non-root) will cause error
|
||||
[ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ] && chown -R ${PUID}:${PGID} /app
|
||||
# Check ownership before chown
|
||||
if [ -e /app/config ]; then
|
||||
CURRENT_UID=$(stat -c %u /app/config)
|
||||
CURRENT_GID=$(stat -c %g /app/config)
|
||||
|
||||
if [ "$CURRENT_UID" -ne "$PUID" ] || [ "$CURRENT_GID" -ne "$PGID" ]; then
|
||||
echo "Fixing ownership of /app/config"
|
||||
if ! chown -R "$PUID:$PGID" /app/config 2>/dev/null; then
|
||||
echo "Warning: Could not chown /app/config; continuing anyway"
|
||||
fi
|
||||
else
|
||||
echo "/app/config already owned by correct UID/GID, skipping chown"
|
||||
fi
|
||||
else
|
||||
echo "/app/config does not exist; skipping ownership check"
|
||||
fi
|
||||
|
||||
# Ensure /app/config/logs exists and is owned
|
||||
if [ -n "$PUID" ] && [ -n "$PGID" ]; then
|
||||
mkdir -p /app/config/logs 2>/dev/null || true
|
||||
if [ -d /app/config/logs ]; then
|
||||
LOG_UID=$(stat -c %u /app/config/logs)
|
||||
LOG_GID=$(stat -c %g /app/config/logs)
|
||||
if [ "$LOG_UID" -ne "$PUID" ] || [ "$LOG_GID" -ne "$PGID" ]; then
|
||||
echo "Fixing ownership of /app/config/logs"
|
||||
chown -R "$PUID:$PGID" /app/config/logs 2>/dev/null || echo "Warning: Could not chown /app/config/logs"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if [ -d /app/.next ]; then
|
||||
CURRENT_UID=$(stat -c %u /app/.next)
|
||||
CURRENT_GID=$(stat -c %g /app/.next)
|
||||
|
||||
if [ "$PUID" -ne 0 ] && ([ "$CURRENT_UID" -ne "$PUID" ] || [ "$CURRENT_GID" -ne "$PGID" ]); then
|
||||
echo "Fixing ownership of /app/.next"
|
||||
if ! chown -R "$PUID:$PGID" /app/.next 2>/dev/null; then
|
||||
echo "Warning: Could not chown /app/.next; continuing anyway"
|
||||
fi
|
||||
else
|
||||
echo "/app/.next already owned by correct UID/GID or running as root, skipping chown"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Drop privileges (when asked to) if root, otherwise run as current user
|
||||
if [ "$(id -u)" == "0" ] && [ "${PUID}" != "0" ]; then
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
.md-typeset[data-page-id="landing"] .md-header-anchor {
|
||||
display: none;
|
||||
}
|
||||
@@ -20,7 +20,7 @@ Since Docker supports connecting with TLS and client certificate authentication,
|
||||
```yaml
|
||||
my-remote-docker:
|
||||
host: 192.168.0.101
|
||||
port: 275
|
||||
port: 2375
|
||||
tls:
|
||||
keyFile: tls/key.pem
|
||||
caFile: tls/ca.pem
|
||||
@@ -66,6 +66,30 @@ my-docker:
|
||||
port: 2375
|
||||
```
|
||||
|
||||
Use `protocol: https` if you’re connecting through a reverse proxy (e.g., Traefik) that serves the Docker API over HTTPS:
|
||||
|
||||
```yaml
|
||||
my-docker:
|
||||
host: dockerproxy
|
||||
port: 443
|
||||
protocol: https
|
||||
```
|
||||
|
||||
!!! note
|
||||
|
||||
Note: This does not require TLS certificates if the proxy handles encryption. Do not use `protocol: https` unless you’re sure the target host supports HTTPS.
|
||||
|
||||
You can also include `headers` for the connection, for example, if you are using a reverse proxy that requires authentication:
|
||||
|
||||
```yaml
|
||||
my-docker:
|
||||
host: dockerproxy
|
||||
port: 443
|
||||
protocol: https
|
||||
headers:
|
||||
Authorization: Basic <base64-encoded-credentials>
|
||||
```
|
||||
|
||||
## Using Socket Directly
|
||||
|
||||
If you'd rather use the socket directly, first make sure that you're passing the local socket into the Docker container.
|
||||
@@ -157,12 +181,12 @@ Multiple widgets can be specified by incrementing the index, e.g.
|
||||
|
||||
```yaml
|
||||
labels: ...
|
||||
- homepage.widget[0].type=emby
|
||||
- homepage.widget[0].url=http://emby.home
|
||||
- homepage.widget[0].key=yourembyapikeyhere
|
||||
- homepage.widget[1].type=uptimekuma
|
||||
- homepage.widget[1].url=http://uptimekuma.home
|
||||
- homepage.widget[1].slug=youreventslughere
|
||||
- homepage.widgets[0].type=emby
|
||||
- homepage.widgets[0].url=http://emby.home
|
||||
- homepage.widgets[0].key=yourembyapikeyhere
|
||||
- homepage.widgets[1].type=uptimekuma
|
||||
- homepage.widgets[1].url=http://uptimekuma.home
|
||||
- homepage.widgets[1].slug=youreventslughere
|
||||
```
|
||||
|
||||
You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:
|
||||
|
||||
@@ -8,6 +8,7 @@ The Kubernetes connectivity has the following requirements:
|
||||
- Kubernetes 1.19+
|
||||
- Metrics Service
|
||||
- An Ingress controller
|
||||
- Optionally: Gateway-API
|
||||
|
||||
The Kubernetes connection is configured in the `kubernetes.yaml` file. There are 3 modes to choose from:
|
||||
|
||||
@@ -19,6 +20,22 @@ The Kubernetes connection is configured in the `kubernetes.yaml` file. There are
|
||||
mode: default
|
||||
```
|
||||
|
||||
To configure Kubernetes gateway-api, ingress or ingressRoute service discovery, add one or multiple of the following settings.
|
||||
|
||||
Example settings:
|
||||
|
||||
```yaml
|
||||
ingress: true # default, enable ingress only
|
||||
```
|
||||
|
||||
or
|
||||
|
||||
```yaml
|
||||
ingress: true # default, enable ingress
|
||||
traefik: true # enable traefik ingressRoute
|
||||
gateway: true # enable gateway-api
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
Once the Kubernetes connection is configured, individual services can be configured to pull statistics. Only CPU and Memory are currently supported.
|
||||
@@ -142,6 +159,22 @@ spec:
|
||||
|
||||
If the `href` attribute is not present, Homepage will ignore the specific IngressRoute.
|
||||
|
||||
### Gateway API HttpRoute support
|
||||
|
||||
Homepage also features automatic service discovery for Gateway API. Service definitions are read by annotating the HttpRoute custom resource definition and are indentical to the Ingress example as defined in [Automatic Service Discovery](#automatic-service-discovery).
|
||||
|
||||
To enable Gateway API HttpRoute update `kubernetes.yaml` to include:
|
||||
|
||||
```
|
||||
gateway: true # enable gateway-api
|
||||
```
|
||||
|
||||
#### Using the unoffocial helm chart?
|
||||
|
||||
If you are using the unofficial helm chart ensure that the `ClusterRole` has required permissions for `gateway.networking.k8s.io`.
|
||||
|
||||
See [ClusterRole and ClusterRoleBinding](../installation/k8s.md#clusterrole-and-clusterrolebinding)
|
||||
|
||||
## Caveats
|
||||
|
||||
Similarly to Docker service discovery, there currently is no rigid ordering to discovered services and discovered services will be displayed above those specified in the `services.yaml`.
|
||||
|
||||
79
docs/configs/proxmox.md
Normal file
79
docs/configs/proxmox.md
Normal file
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Proxmox
|
||||
description: Proxmox Configuration
|
||||
---
|
||||
|
||||
The Proxmox connection is configured in the `proxmox.yaml` file. See [Create token](#create-token) section below for details on how to generate the required API token.
|
||||
|
||||
```yaml
|
||||
url: https://proxmox.host.or.ip:8006
|
||||
token: username@pam!Token ID
|
||||
secret: secret
|
||||
```
|
||||
|
||||
## Services
|
||||
|
||||
Once the Proxmox connection is configured, individual services can be configured to pull statistics of VMs or LXCs. Only CPU and Memory are currently supported.
|
||||
|
||||
### Configuration Options
|
||||
|
||||
- `proxmoxNode`: The name of the Proxmox node where your VM/LXC is running
|
||||
- `proxmoxVMID`: The ID of the Proxmox VM or LXC container
|
||||
- `proxmoxType`: (Optional) The type of Proxmox virtual machine. Defaults to `qemu` for VMs, but can be set to `lxc` for LXC containers
|
||||
|
||||
#### Examples
|
||||
|
||||
For a QEMU VM (default):
|
||||
|
||||
```yaml
|
||||
- HomeAssistant:
|
||||
icon: home-assistant.png
|
||||
href: http://homeassistant.local/
|
||||
description: Home automation
|
||||
proxmoxNode: pve
|
||||
proxmoxVMID: 101
|
||||
# proxmoxType: qemu # This is the default, so it can be omitted
|
||||
```
|
||||
|
||||
For an LXC container:
|
||||
|
||||
```yaml
|
||||
- Nginx:
|
||||
icon: nginx.png
|
||||
href: http://nginx.local/
|
||||
description: Web server
|
||||
proxmoxNode: pve
|
||||
proxmoxVMID: 200
|
||||
proxmoxType: lxc
|
||||
```
|
||||
|
||||
## Create token
|
||||
|
||||
You will need to generate an API Token for new or an existing user. Here is an example of how to do this for a new user.
|
||||
|
||||
1. Navigate to the Proxmox portal, click on Datacenter
|
||||
2. Expand Permissions, click on Groups
|
||||
3. Click the Create button
|
||||
4. Name the group something informative, like api-ro-users
|
||||
5. Click on the Permissions "folder"
|
||||
6. Click Add -> Group Permission
|
||||
- Path: /
|
||||
- Group: group from bullet 4 above
|
||||
- Role: PVEAuditor
|
||||
- Propagate: Checked
|
||||
7. Expand Permissions, click on Users
|
||||
8. Click the Add button
|
||||
- User name: something informative like `api`
|
||||
- Realm: Linux PAM standard authentication
|
||||
- Group: group from bullet 4 above
|
||||
9. Expand Permissions, click on API Tokens
|
||||
10. Click the Add button
|
||||
- User: user from bullet 8 above
|
||||
- Token ID: something informative like the application or purpose like `homepage`
|
||||
- Privilege Separation: Checked
|
||||
11. Go back to the "Permissions" menu
|
||||
12. Click Add -> API Token Permission
|
||||
- Path: /
|
||||
- API Token: select the Token ID created in Step 10
|
||||
- Role: PVE Auditor
|
||||
- Propagate: Checked
|
||||
@@ -97,6 +97,10 @@ Each service can have multiple widgets attached to it, for example:
|
||||
slug: statuspageslug
|
||||
```
|
||||
|
||||
!!! note
|
||||
|
||||
Multiple widgets per service are not yet supported with Kubernetes ingress annotations.
|
||||
|
||||
#### Field Visibility
|
||||
|
||||
Each widget can optionally provide a list of which fields should be visible via the `fields` widget property. If no fields are specified, then all fields will be displayed. The `fields` property must be a valid YAML array of strings. As an example, here is the entry for Sonarr showing only a couple of fields.
|
||||
@@ -134,7 +138,7 @@ Services may have descriptions,
|
||||
|
||||
## Icons
|
||||
|
||||
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/walkxcode/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png` or with `.svg` to use the svg version.
|
||||
Services may have an icon attached to them, you can use icons from [Dashboard Icons](https://github.com/homarr-labs/dashboard-icons) automatically, by passing the name of the icon, with, or without `.png`, `.webp` or `.svg` to specify the desired version.
|
||||
|
||||
You can also specify prefixed icons from:
|
||||
|
||||
@@ -178,6 +182,10 @@ To use a local icon, first create a Docker mount to `/app/public/icons` and then
|
||||
|
||||
Services may have an optional `ping` property that allows you to monitor the availability of an external host. As of v0.8.0, the ping feature attempts to use a true (ICMP) ping command on the underlying host. Currently, only IPv4 is supported.
|
||||
|
||||
!!! note
|
||||
|
||||
Because ping uses the ping command on the underlying host, in some cases you may need to install e.g. the `iputils-ping` package on the host system.
|
||||
|
||||
```yaml
|
||||
- Group A:
|
||||
- Sonarr:
|
||||
|
||||
@@ -13,6 +13,14 @@ You can customize the title of the page if you'd like.
|
||||
title: My Awesome Homepage
|
||||
```
|
||||
|
||||
## Description
|
||||
|
||||
You can customize the description of the page if you'd like.
|
||||
|
||||
```yaml
|
||||
description: A description of my awesome homepage
|
||||
```
|
||||
|
||||
## Start URL
|
||||
|
||||
You can customize the start_url as required for installable apps. The default is "/".
|
||||
@@ -70,7 +78,7 @@ background:
|
||||
You can apply a blur filter to the service & bookmark cards. Note this option is incompatible with the background blur, saturate and brightness filters.
|
||||
|
||||
```yaml
|
||||
cardBlur: sm # sm, "", md, etc... see https://tailwindcss.com/docs/backdrop-blur
|
||||
cardBlur: xs # xs, md, etc... see https://tailwindcss.com/docs/backdrop-blur
|
||||
```
|
||||
|
||||
## Favicon
|
||||
@@ -93,7 +101,7 @@ theme: dark # or light
|
||||
|
||||
## Color Palette
|
||||
|
||||
You can configured a fixed color palette (and disable the palette switcher) by passing the `color` option, like so:
|
||||
You can configure a fixed color palette (and disable the palette switcher) by passing the `color` option, like so:
|
||||
|
||||
```yaml
|
||||
color: slate
|
||||
@@ -246,15 +254,29 @@ layout:
|
||||
columns: 4
|
||||
```
|
||||
|
||||
### Five Columns
|
||||
### Full Width
|
||||
|
||||
You can add a fifth column to services (when `style: columns` which is default) by adding:
|
||||
You can make homepage take up the entire window width by adding:
|
||||
|
||||
```yaml
|
||||
fiveColumns: true
|
||||
fullWidth: true
|
||||
```
|
||||
|
||||
By default homepage will max out at 4 columns for services with `columns` style
|
||||
### Maximum Group Columns
|
||||
|
||||
You can set the maximum number of columns of groups on larger screen sizes (note this is only for groups with the default `style: columns`, not groups with `style: row`) by adding:
|
||||
|
||||
```yaml
|
||||
maxGroupColumns: 8 # default is 4 for services, 6 for bookmarks, max 8
|
||||
```
|
||||
|
||||
By default homepage will max out at 4 columns for services and 6 for bookmarks, thus the minimum for this setting is _5_. Of course, if you're setting this to higher numbers, you may want to consider enabling the [fullWidth](#full-width) option as well.
|
||||
|
||||
If you want to set the maximum columns for bookmark groups separately, you can do so by adding:
|
||||
|
||||
```yaml
|
||||
maxBookmarkGroupColumns: 6 # default is 6, max 8
|
||||
```
|
||||
|
||||
### Collapsible sections
|
||||
|
||||
@@ -439,7 +461,7 @@ quicklaunch:
|
||||
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q=
|
||||
```
|
||||
|
||||
## Homepage Version
|
||||
## Homepage Version & Update Checking
|
||||
|
||||
By default the release version is displayed at the bottom of the page. To hide this, use the `hideVersion` setting, like so:
|
||||
|
||||
@@ -447,6 +469,12 @@ By default the release version is displayed at the bottom of the page. To hide t
|
||||
hideVersion: true
|
||||
```
|
||||
|
||||
You can disable checking for new versions from GitHub (enabled by default) with:
|
||||
|
||||
```yaml
|
||||
disableUpdateCheck: true
|
||||
```
|
||||
|
||||
## Log Path
|
||||
|
||||
By default the homepage logfile is written to the a `logs` subdirectory of the `config` folder. In order to customize this path, you can set the `logpath` setting. A `logs` folder will be created in that location where the logfile will be written.
|
||||
|
||||
@@ -15,6 +15,8 @@ services:
|
||||
volumes:
|
||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations
|
||||
environment:
|
||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||
```
|
||||
|
||||
### Running as non-root
|
||||
@@ -36,6 +38,7 @@ services:
|
||||
- /path/to/config:/app/config # Make sure your local config directory exists
|
||||
- /var/run/docker.sock:/var/run/docker.sock # (optional) For docker integrations, see alternative methods
|
||||
environment:
|
||||
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||
PUID: $PUID
|
||||
PGID: $PGID
|
||||
```
|
||||
@@ -43,7 +46,7 @@ services:
|
||||
### With Docker Run
|
||||
|
||||
```bash
|
||||
docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
|
||||
docker run -p 3000:3000 -e HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/gethomepage/homepage:latest
|
||||
```
|
||||
|
||||
### Using Environment Secrets
|
||||
|
||||
@@ -4,27 +4,37 @@ description: Docs intro
|
||||
icon: simple/docker
|
||||
---
|
||||
|
||||
<p>
|
||||
You have a few options for deploying homepage, depending on your needs. We offer docker images for a majority of platforms. You can also install and run homepage from source if Docker is not your thing. It can even be installed on Kubernetes with Helm.
|
||||
</p>
|
||||
|
||||
!!! warning
|
||||
!!! info
|
||||
|
||||
Please note that when using features such as widgets, Homepage can access personal information (for example from your home automation system) and Homepage currently does not (and is not planned to) include any authentication layer itself. Thus, we recommend homepage be deployed behind a reverse proxy including authentication, SSL etc, and / or behind a VPN.
|
||||
|
||||
<br>
|
||||
|
||||
<div class="grid cards" style="margin: 0 auto;" markdown>
|
||||
:simple-docker: [ Install on Docker :octicons-arrow-right-24:](docker.md)
|
||||
[:simple-docker: Install on Docker :octicons-arrow-right-24:](docker.md)
|
||||
{ .card }
|
||||
|
||||
:simple-kubernetes: [ Install on Kubernetes :octicons-arrow-right-24:](k8s.md)
|
||||
[:simple-kubernetes: Install on Kubernetes :octicons-arrow-right-24:](k8s.md)
|
||||
{ .card }
|
||||
|
||||
:simple-unraid: [ Install on UNRAID :octicons-arrow-right-24:](unraid.md)
|
||||
[:simple-unraid: Install on UNRAID :octicons-arrow-right-24:](unraid.md)
|
||||
{ .card }
|
||||
|
||||
:simple-nextdotjs: [ Building from source :octicons-arrow-right-24:](source.md)
|
||||
[:simple-nextdotjs: Building from source :octicons-arrow-right-24:](source.md)
|
||||
{ .card }
|
||||
|
||||
</div>
|
||||
|
||||
### `HOMEPAGE_ALLOWED_HOSTS`
|
||||
|
||||
As of v1.0 there is one required environment variable to access homepage via a URL other than `localhost`, <code>HOMEPAGE_ALLOWED_HOSTS</code>. The setting helps prevent certain kinds of attacks when retrieving data from the homepage API proxy.
|
||||
|
||||
The value is a comma-separated (no spaces) list of allowed hosts (sometimes with the port) that can host your homepage install. See the [docker](docker.md), [kubernetes](k8s.md) and [source](source.md) installation pages for more information about where / how to set the variable.
|
||||
|
||||
`localhost:3000` and `127.0.0.1:3000` are always included, but you can add a domain or IP address to this list to allow that host such as `HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev,192.168.1.2:1234`, etc.
|
||||
|
||||
If you are seeing errors about host validation, check the homepage logs and ensure that the host exactly as output in the logs is in the `HOMEPAGE_ALLOWED_HOSTS` list.
|
||||
|
||||
This can be disabled by setting `HOMEPAGE_ALLOWED_HOSTS` to `*` but this is not recommended.
|
||||
|
||||
@@ -3,85 +3,6 @@ title: Kubernetes Installation
|
||||
description: Install on Kubernetes
|
||||
---
|
||||
|
||||
## Install with Helm
|
||||
|
||||
There is an [unofficial helm chart](https://github.com/jameswynn/helm-charts/tree/main/charts/homepage) that creates all the necessary manifests, including the service account and RBAC entities necessary for service discovery.
|
||||
|
||||
```sh
|
||||
helm repo add jameswynn https://jameswynn.github.io/helm-charts
|
||||
helm install homepage jameswynn/homepage -f values.yaml
|
||||
```
|
||||
|
||||
The helm chart allows for all the configurations to be inlined directly in your `values.yaml`:
|
||||
|
||||
```yaml
|
||||
config:
|
||||
bookmarks:
|
||||
- Developer:
|
||||
- Github:
|
||||
- abbr: GH
|
||||
href: https://github.com/
|
||||
services:
|
||||
- My First Group:
|
||||
- My First Service:
|
||||
href: http://localhost/
|
||||
description: Homepage is awesome
|
||||
|
||||
- My Second Group:
|
||||
- My Second Service:
|
||||
href: http://localhost/
|
||||
description: Homepage is the best
|
||||
|
||||
- My Third Group:
|
||||
- My Third Service:
|
||||
href: http://localhost/
|
||||
description: Homepage is 😎
|
||||
widgets:
|
||||
# show the kubernetes widget, with the cluster summary and individual nodes
|
||||
- kubernetes:
|
||||
cluster:
|
||||
show: true
|
||||
cpu: true
|
||||
memory: true
|
||||
showLabel: true
|
||||
label: "cluster"
|
||||
nodes:
|
||||
show: true
|
||||
cpu: true
|
||||
memory: true
|
||||
showLabel: true
|
||||
- search:
|
||||
provider: duckduckgo
|
||||
target: _blank
|
||||
kubernetes:
|
||||
mode: cluster
|
||||
settings:
|
||||
|
||||
# The service account is necessary to allow discovery of other services
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: homepage
|
||||
|
||||
# This enables the service account to access the necessary resources
|
||||
enableRbac: true
|
||||
|
||||
ingress:
|
||||
main:
|
||||
enabled: true
|
||||
annotations:
|
||||
# Example annotations to add Homepage to your Homepage!
|
||||
gethomepage.dev/enabled: "true"
|
||||
gethomepage.dev/name: "Homepage"
|
||||
gethomepage.dev/description: "Dynamically Detected Homepage"
|
||||
gethomepage.dev/group: "Dynamic"
|
||||
gethomepage.dev/icon: "homepage.png"
|
||||
hosts:
|
||||
- host: homepage.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
```
|
||||
|
||||
## Install with Kubernetes Manifests
|
||||
|
||||
If you don't want to use the unofficial Helm chart, you can also create your own Kubernetes manifest(s) and apply them with `kubectl apply -f filename.yaml`.
|
||||
@@ -216,6 +137,14 @@ rules:
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- apiGroups:
|
||||
- gateway.networking.k8s.io
|
||||
resources:
|
||||
- httproutes
|
||||
- gateways
|
||||
verbs:
|
||||
- get
|
||||
- list
|
||||
- apiGroups:
|
||||
- metrics.k8s.io
|
||||
resources:
|
||||
@@ -294,6 +223,9 @@ spec:
|
||||
- name: homepage
|
||||
image: "ghcr.io/gethomepage/homepage:latest"
|
||||
imagePullPolicy: Always
|
||||
env:
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: gethomepage.dev # required, may need port. See gethomepage.dev/installation/#homepage_allowed_hosts
|
||||
ports:
|
||||
- name: http
|
||||
containerPort: 3000
|
||||
|
||||
@@ -9,7 +9,13 @@ First, clone the repository:
|
||||
git clone https://github.com/gethomepage/homepage.git
|
||||
```
|
||||
|
||||
Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):
|
||||
If `pnpm` is not installed, install it:
|
||||
|
||||
```bash
|
||||
npm install -g pnpm
|
||||
```
|
||||
|
||||
Then install dependencies and build the production bundle:
|
||||
|
||||
```bash
|
||||
pnpm install
|
||||
@@ -21,5 +27,9 @@ If this is your first time starting, copy the `src/skeleton` directory to `confi
|
||||
Finally, run the server:
|
||||
|
||||
```bash
|
||||
pnpm start
|
||||
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
|
||||
```
|
||||
|
||||
When updating homepage versions you will need to re-build the static files i.e. repeat the process above.
|
||||
|
||||
See [HOMEPAGE_ALLOWED_HOSTS](index.md#homepage_allowed_hosts) for more information on this environment variable.
|
||||
|
||||
@@ -286,3 +286,13 @@ body[data-md-color-scheme="default"] {
|
||||
.md-tabs__link {
|
||||
transform: translateZ(0);
|
||||
}
|
||||
|
||||
.grid.cards .card {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.grid.cards .card a {
|
||||
display: block;
|
||||
padding: 0.8rem;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
@@ -12,14 +12,17 @@ hide:
|
||||
- Check config/logs/homepage.log, on docker simply e.g. `docker logs homepage`. This may provide some insight into the reason for an error.
|
||||
- Check the browser error console, this can also sometimes provide useful information.
|
||||
- Consider setting the `ENV` variable `LOG_LEVEL` to `debug`.
|
||||
- If certain widgets are failing when connecting to public APIs, consider [disabling IPv6](#disabling-ipv6).
|
||||
|
||||
## Service Widget Errors
|
||||
|
||||
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to try:
|
||||
All service widgets work essentially the same, that is, homepage makes a proxied call to an API made available by that service. The majority of the time widgets don't work it is a configuration issue. Of course, sometimes things do break. Some basic steps to check:
|
||||
|
||||
1. **URLs should not end with a / or other API path. Each widget will handle the path on its own.**. Including a trailing slash can result in an error.
|
||||
1. URLs should not end with a / or other API path. Each widget will handle the path on its own.
|
||||
|
||||
2. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
|
||||
2. All services with a widget require a unique name as well as a unique group (and all subgroups) name.
|
||||
|
||||
3. Verify the homepage installation can connect to the IP address or host you are using for the widget `url`. This is most simply achieved by pinging the server from the homepage machine, in Docker this means _from inside the container_ itself, e.g.:
|
||||
|
||||
```
|
||||
docker exec homepage ping SERVICEIPORDOMAIN
|
||||
@@ -27,7 +30,7 @@ All service widgets work essentially the same, that is, homepage makes a proxied
|
||||
|
||||
If your homepage install (container) cannot reach the service then you need to figure out why, for example in Docker this can mean putting the two containers on the same network, checking firewall issues, etc.
|
||||
|
||||
3. If you have verified that homepage can in fact reach the service then you can also check the API output using e.g. `curl`, which is often helpful if you do need to file a bug report. Again, depending on your networking setup this may need to be run from _inside the container_ as IP / hostname resolution can differ inside vs outside.
|
||||
4. If you have verified that homepage can in fact reach the service then you can also check the API output using e.g. `curl`, which is often helpful if you do need to file a bug report. Again, depending on your networking setup this may need to be run from _inside the container_ as IP / hostname resolution can differ inside vs outside.
|
||||
|
||||
!!! note
|
||||
|
||||
@@ -64,3 +67,17 @@ All service widgets work essentially the same, that is, homepage makes a proxied
|
||||
## Missing custom icons
|
||||
|
||||
If, after correctly adding and mapping your custom icons via the [Icons](../configs/services.md#icons) instructions, you are still unable to see your icons please try recreating your container.
|
||||
|
||||
## Disabling IPv6
|
||||
|
||||
If you are having issues with certain widgets that are unable to reach public APIs (e.g. weather), in certain setups you may need to disable IPv6. You can set the environment variable `HOMEPAGE_PROXY_DISABLE_IPV6` to `true` to disable IPv6 for the homepage proxy.
|
||||
|
||||
Alternatively, you can use the `sysctls` option in your docker-compose file to disable IPv6 for the homepage container completely:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
homepage:
|
||||
...
|
||||
sysctls:
|
||||
- net.ipv6.conf.all.disable_ipv6=1
|
||||
```
|
||||
|
||||
@@ -46,9 +46,9 @@ See the [pre-commit documentation](https://pre-commit.com/#install) to get start
|
||||
In general, homepage is meant to be a dashboard for 'self-hosted' services and we believe it is a small way we can help showcase this kind of software. While exceptions are made, mostly when there is no viable
|
||||
self-hosted / open-source alternative, we ask that any widgets, etc. are developed primarily for a self-hosted tool.
|
||||
|
||||
## New Feature Guidelines
|
||||
## New Feature or Enhancement Guidelines {#new-feature-guidelines}
|
||||
|
||||
- New features should be linked to an existing feature request. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
|
||||
- New features or enhancements, **no matter how small**, must be linked to an existing feature request with some comments or 'up-votes' that demonstrate community interest. The purpose of this requirement is to avoid the addition (and maintenance) of features that might only benefit a small number of users.
|
||||
- If you have ideas for a larger feature you may want to open a discussion first.
|
||||
|
||||
## Service Widget Guidelines
|
||||
|
||||
@@ -225,20 +225,8 @@ const widgetExample = {
|
||||
|
||||
#### `method`
|
||||
|
||||
The `method` property is a string that represents the HTTP method that should be used to make the API request. The default value is `GET`.
|
||||
|
||||
```js
|
||||
const widgetExample = {
|
||||
api: "{url}/api/{endpoint}",
|
||||
mappings: {
|
||||
// `/api/stats`
|
||||
stats: {
|
||||
endpoint: "stats",
|
||||
method: "POST",
|
||||
},
|
||||
},
|
||||
};
|
||||
```
|
||||
The `method` represents the HTTP method that should be used to make the API request. The default value is `GET`. Note that `POST` requests are not allowed via the
|
||||
widget API and require the use of a custom proxy.
|
||||
|
||||
#### `headers`
|
||||
|
||||
@@ -251,7 +239,6 @@ const widgetExample = {
|
||||
// `/api/stats`
|
||||
stats: {
|
||||
endpoint: "stats",
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
},
|
||||
@@ -271,7 +258,6 @@ const widgetExample = {
|
||||
// `/api/graphql`
|
||||
stats: {
|
||||
endpoint: "graphql",
|
||||
method: "POST",
|
||||
body: {
|
||||
query: `
|
||||
query {
|
||||
|
||||
@@ -34,7 +34,7 @@ Homepage uses the [next-i18next](https://github.com/i18next/next-i18next) librar
|
||||
|
||||
Homepage uses translated and localized strings for **all text and numerical content** in widgets. English is the default language, and other languages can be added via [Crowdin](https://crowdin.com/project/gethomepage). To add the English translations for your widget, follow these steps:
|
||||
|
||||
Open the `public/locales/en/common.js` file.
|
||||
Open the `public/locales/en/common.json` file.
|
||||
|
||||
Add a new object for your widget to the bottom of the list, like this:
|
||||
|
||||
|
||||
@@ -150,7 +150,7 @@ This will render the widget with placeholders for the data, i.e., a skeleton vie
|
||||
|
||||
!!! tip "Translation Tips"
|
||||
|
||||
The `label` prop in the `Block` component corresponds to the translation key we defined earlier in the `common.js` file. All text and numerical content should be translated.
|
||||
The `label` prop in the `Block` component corresponds to the translation key we defined earlier in the `common.json` file. All text and numerical content should be translated.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -22,9 +22,8 @@ An optional 'site' parameter can be supplied, if it is not the widget will use t
|
||||
```yaml
|
||||
- unifi_console:
|
||||
url: https://unifi.host.or.ip:port
|
||||
site: Site Name # optional
|
||||
username: user
|
||||
password: pass
|
||||
site: Site Name # optional
|
||||
key: unifiapikey # required if using API key instead of username/password
|
||||
```
|
||||
|
||||
_Added in v0.4.18, updated in 0.6.7_
|
||||
|
||||
16
docs/widgets/services/apcups.md
Normal file
16
docs/widgets/services/apcups.md
Normal file
@@ -0,0 +1,16 @@
|
||||
---
|
||||
title: APC UPS Monitoring
|
||||
description: Lightweight monitoring widget for APC UPSs using apcupsd daemon
|
||||
---
|
||||
|
||||
This widget extracts UPS information from an apcupsd daemon.
|
||||
Only works for [APC/Schneider](https://www.se.com/us/en/product-range/61915-smartups/#products) UPS products.
|
||||
|
||||
[!NOTE]
|
||||
By default apcupsd daemon is bound to 127.0.0.1. Edit `/etc/apcupsd.conf` and change `NISIP` to an IP accessible from your homepage docker (usually your internal LAN interface).
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: apcups
|
||||
url: tcp://your.acpupsd.host:3551
|
||||
```
|
||||
@@ -17,9 +17,15 @@ The account you made the API token for also needs the following **Assigned globa
|
||||
|
||||
Allowed fields: `["users", "loginsLast24H", "failedLoginsLast24H"]`.
|
||||
|
||||
| Authentik Version | Homepage Widget Version |
|
||||
| ----------------- | ----------------------- |
|
||||
| < 2025.8.0 | 1 (default) |
|
||||
| >= 2025.8.0 | 2 |
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: authentik
|
||||
url: http://authentik.host.or.ip:port
|
||||
key: api_token
|
||||
version: 2 # optional, default is 1
|
||||
```
|
||||
|
||||
@@ -7,7 +7,9 @@ Learn more about [Beszel](https://github.com/henrygd/beszel)
|
||||
|
||||
The widget has two modes, a single system with detailed info if `systemId` is provided, or an overview of all systems if `systemId` is not provided.
|
||||
|
||||
The `systemID` in the `id` field on the collections page of Beszel.
|
||||
The `systemID` is the `id` field on the collections page of Beszel under the PocketBase admin panel. You can also use the 'nice name' from the Beszel UI.
|
||||
|
||||
A "superuser" is currently required to access the data from the Beszel API.
|
||||
|
||||
Allowed fields for 'overview' mode: `["systems", "up"]`
|
||||
Allowed fields for a single system: `["name", "status", "updated", "cpu", "memory", "disk", "network"]`
|
||||
|
||||
@@ -22,6 +22,7 @@ widget:
|
||||
service_group: Media # group name where widget exists
|
||||
service_name: Sonarr # service name for that widget
|
||||
color: teal # optional - defaults to pre-defined color for the service (teal for sonarr)
|
||||
baseUrl: https://sonarr.domain.url # optional - adds links to sonarr/radarr pages
|
||||
params: # optional - additional params for the service
|
||||
unmonitored: true # optional - defaults to false, used with *arr stack
|
||||
- type: ical # Show calendar events from another service
|
||||
|
||||
17
docs/widgets/services/checkmk.md
Normal file
17
docs/widgets/services/checkmk.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Checkmk
|
||||
description: Checkmk Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Checkmk](https://github.com/Checkmk/checkmk).
|
||||
|
||||
To setup authentication, follow the official [Checkmk API](https://docs.checkmk.com/latest/en/rest_api.html?lquery=api#bearerauth) documentation.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: checkmk
|
||||
url: http://checkmk.host.or.ip:port
|
||||
site: your-site-name-cla-by-default
|
||||
username: username
|
||||
password: password
|
||||
```
|
||||
@@ -19,27 +19,22 @@ widget:
|
||||
requestBody: # optional, can be string or object, see below
|
||||
display: # optional, default to block, see below
|
||||
mappings:
|
||||
- field: key # needs to be YAML string or object
|
||||
- field: key
|
||||
label: Field 1
|
||||
format: text # optional - defaults to text
|
||||
- field: # needs to be YAML string or object
|
||||
path:
|
||||
to: key2
|
||||
- field: path.to.key2
|
||||
format: number # optional - defaults to text
|
||||
label: Field 2
|
||||
- field: # needs to be YAML string or object
|
||||
path:
|
||||
to:
|
||||
another: key3
|
||||
- field: path.to.another.key3
|
||||
label: Field 3
|
||||
format: percent # optional - defaults to text
|
||||
- field: key # needs to be YAML string or object
|
||||
- field: key
|
||||
label: Field 4
|
||||
format: date # optional - defaults to text
|
||||
locale: nl # optional
|
||||
dateStyle: long # optional - defaults to "long". Allowed values: `["full", "long", "medium", "short"]`.
|
||||
timeStyle: medium # optional - Allowed values: `["full", "long", "medium", "short"]`.
|
||||
- field: key # needs to be YAML string or object
|
||||
- field: key
|
||||
label: Field 5
|
||||
format: relativeDate # optional - defaults to text
|
||||
locale: nl # optional
|
||||
@@ -49,9 +44,7 @@ widget:
|
||||
label: Field 6
|
||||
format: text
|
||||
additionalField: # optional
|
||||
field:
|
||||
hourly:
|
||||
time: other key
|
||||
field: hourly.time.key
|
||||
color: theme # optional - defaults to "". Allowed values: `["theme", "adaptive", "black", "white"]`.
|
||||
format: date # optional
|
||||
- field: key
|
||||
@@ -62,10 +55,12 @@ widget:
|
||||
format: size
|
||||
```
|
||||
|
||||
Supported formats for the values are `text`, `number`, `float`, `percent`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`.
|
||||
Supported formats for the values are `text`, `number`, `float`, `percent`, `duration`, `bytes`, `bitrate`, `size`, `date` and `relativeDate`.
|
||||
|
||||
The `dateStyle` and `timeStyle` options of the `date` format are passed directly to [Intl.DateTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat/DateTimeFormat) and the `style` and `numeric` options of `relativeDate` are passed to [Intl.RelativeTimeFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/RelativeTimeFormat/RelativeTimeFormat).
|
||||
|
||||
The `duration` format expects the duration to be specified in seconds. The `scale` transformation tool can be used if a conversion is required.
|
||||
|
||||
The `size` format will return the length of the array or string, or the number of keys in an object. This is then formatted as `number`.
|
||||
|
||||
## Example
|
||||
@@ -101,9 +96,16 @@ mappings:
|
||||
label: Name
|
||||
- field: status # Alive
|
||||
label: Status
|
||||
- field:
|
||||
origin: name # Earth (C-137)
|
||||
- field: origin.name # Earth (C-137)
|
||||
label: Origin
|
||||
- field: locations.1.name # Citadel of Ricks
|
||||
label: Location
|
||||
```
|
||||
|
||||
Note that older versions of the widget accepted fields as a yaml object, which is still supported. E.g.:
|
||||
|
||||
```yaml
|
||||
mappings:
|
||||
- field:
|
||||
locations:
|
||||
1: name # Citadel of Ricks
|
||||
@@ -136,7 +138,15 @@ You can manipulate data with the following tools `remap`, `scale`, `prefix` and
|
||||
prefix: "$"
|
||||
```
|
||||
|
||||
## List View
|
||||
## Display Options
|
||||
|
||||
The widget supports different display modes that can be set using the `display` property.
|
||||
|
||||
### Block View (Default)
|
||||
|
||||
The default display mode is `block`, which shows fields in a block format.
|
||||
|
||||
### List View
|
||||
|
||||
You can change the default block view to a list view by setting the `display` option to `list`.
|
||||
|
||||
@@ -160,13 +170,54 @@ The list view can optionally display an additional field next to the primary fie
|
||||
- any: true # will map all other values
|
||||
to: Unknown
|
||||
additionalField:
|
||||
field:
|
||||
hourly:
|
||||
time: key
|
||||
field: hourly.time.key
|
||||
color: theme
|
||||
format: date
|
||||
```
|
||||
|
||||
### Dynamic List View
|
||||
|
||||
To display a list of items from an array in the API response, set the `display` property to `dynamic-list` and configure the `mappings` object with the following properties:
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: customapi
|
||||
url: https://example.com/api/servers
|
||||
display: dynamic-list
|
||||
mappings:
|
||||
items: data # optional, the path to the array in the API response. Omit this option if the array is at the root level
|
||||
name: id # required, field in each item to use as the item name (left side)
|
||||
label: ip_address # required, field in each item to use as the item label (right side)
|
||||
limit: 5 # optional, limit the number of items to display
|
||||
format: text # optional - format of the label field
|
||||
target: https://example.com/server/{id} # optional, makes items clickable with template support
|
||||
```
|
||||
|
||||
This configuration would work with an API that returns a response like:
|
||||
|
||||
```json
|
||||
{
|
||||
"data": [
|
||||
{ "id": "server1", "name": "Server 1", "ip_address": "192.168.0.1" },
|
||||
{ "id": "server2", "name": "Server 2", "ip_address": "192.168.0.2" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
The widget would display a list with two items:
|
||||
|
||||
- "Server 1" on the left and "192.168.0.1" on the right, clickable to "https://example.com/server/server1"
|
||||
- "Server 2" on the left and "192.168.0.2" on the right, clickable to "https://example.com/server/server2"
|
||||
|
||||
For nested fields in the items, you can use dot notation:
|
||||
|
||||
```yaml
|
||||
mappings:
|
||||
items: data.results.servers
|
||||
name: details.id
|
||||
label: details.name
|
||||
```
|
||||
|
||||
## Custom Headers
|
||||
|
||||
Pass custom headers using the `headers` option, for example:
|
||||
|
||||
@@ -18,7 +18,7 @@ To access these system metrics you need to connect to the DiskStation (`DSM`) wi
|
||||
3. Under the `User Groups` tab of the user config dialogue check the box for `Administrators`.
|
||||
4. On the `Permissions` tab check the top box for `No Access`, effectively prohibiting the user from accessing anything in the shared folders.
|
||||
5. Under `Applications` check the box next to `Deny` in the header to explicitly prohibit login to all applications.
|
||||
6. Now _only_ allow login to the `DSM` application, either by
|
||||
6. Now _only_ allow login to the `DSM` and `Download Station` applications, either by
|
||||
- unchecking `Deny` in the respective row, or (if inheriting permission doesn't work because of other group settings)
|
||||
- checking `Allow` for this app, or
|
||||
- checking `By IP` for this app to limit the source of login attempts to one or more IP addresses/subnets.
|
||||
|
||||
@@ -17,6 +17,7 @@ widget:
|
||||
enableBlocks: true # optional, defaults to false
|
||||
enableNowPlaying: true # optional, defaults to true
|
||||
enableUser: true # optional, defaults to false
|
||||
enableMediaControl: false # optional, defaults to true
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
```
|
||||
|
||||
19
docs/widgets/services/filebrowser.md
Normal file
19
docs/widgets/services/filebrowser.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Filebrowser
|
||||
description: Filebrowser Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Filebrowser](https://filebrowser.org).
|
||||
|
||||
If you are using [Proxy header authentication](https://filebrowser.org/configuration/authentication-method#proxy-header) you have to set `authHeader` and `username`.
|
||||
|
||||
Allowed fields: `["available", "used", "total"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: filebrowser
|
||||
url: http://filebrowserhostorip:port
|
||||
username: username
|
||||
password: password
|
||||
authHeader: X-My-Header # If using Proxy header authentication
|
||||
```
|
||||
17
docs/widgets/services/firefly.md
Normal file
17
docs/widgets/services/firefly.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Firefly III
|
||||
description: Firefly III Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Firefly III](https://www.firefly-iii.org/).
|
||||
|
||||
Find your API key under `Options > Profile > OAuth > Personal Access Tokens`.
|
||||
|
||||
Allowed fields: `["networth" ,"budget"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: firefly
|
||||
url: https://firefly.host.or.ip
|
||||
key: personalaccesstoken.personalaccesstoken.personalaccesstoken
|
||||
```
|
||||
@@ -13,7 +13,7 @@ Home Network > Network > Network Settings > Access Settings in the Home Network
|
||||
|
||||
Credentials are not needed and, as such, you may want to consider using `http` instead of `https` as those requests are significantly faster.
|
||||
|
||||
Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress"]`.
|
||||
Allowed fields (limited to a max of 4): `["connectionStatus", "uptime", "maxDown", "maxUp", "down", "up", "received", "sent", "externalIPAddress", "externalIPv6Address", "externalIPv6Prefix"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
|
||||
@@ -14,4 +14,5 @@ widget:
|
||||
type: gamedig
|
||||
serverType: csgo # see https://github.com/gamedig/node-gamedig#games-list
|
||||
url: udp://server.host.or.ip:port
|
||||
gameToken: # optional, a token used by gamedig with certain games
|
||||
```
|
||||
|
||||
@@ -7,7 +7,7 @@ Learn more about [Gitea](https://gitea.com).
|
||||
|
||||
API token requires `notifications`, `repository` and `issue` permissions. See the [gitea documentation](https://docs.gitea.com/development/api-usage#generating-and-listing-api-tokens) for details on generating tokens.
|
||||
|
||||
Allowed fields: `["notifications", "issues", "pulls"]`.
|
||||
Allowed fields: `["repositories", "notifications", "issues", "pulls"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
|
||||
@@ -9,9 +9,10 @@ Learn more about [Gluetun](https://github.com/qdm12/gluetun).
|
||||
|
||||
Requires [HTTP control server options](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md) to be enabled. By default this runs on port `8000`.
|
||||
|
||||
Allowed fields: `["public_ip", "region", "country"]`.
|
||||
Allowed fields: `["public_ip", "region", "country", "port_forwarded"]`.
|
||||
Default fields: `["public_ip", "region", "country"]`.
|
||||
|
||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication).
|
||||
To setup authentication, follow [the official Gluetun documentation](https://github.com/qdm12/gluetun-wiki/blob/main/setup/advanced/control-server.md#authentication). Note that to use the api key method, you must add the route `GET /v1/publicip/ip` to the `routes` array in your Gluetun config.toml. Similarly, if you want to include the `port_forwarded` field, you must add the route `GET /v1/openvpn/portforwarded` to your Gluetun config.toml.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
|
||||
@@ -5,11 +5,18 @@ description: Grafana Widget Configuration
|
||||
|
||||
Learn more about [Grafana](https://github.com/grafana/grafana).
|
||||
|
||||
| Grafana Version | Homepage Widget Version |
|
||||
| --------------- | ----------------------- |
|
||||
| <= v10.4 | 1 (default) |
|
||||
| > v10.4 | 2 |
|
||||
|
||||
Allowed fields: `["dashboards", "datasources", "totalalerts", "alertstriggered"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: grafana
|
||||
version: 2 # optional, default is 1
|
||||
alerts: alertmanager # optional, default is grafana
|
||||
url: http://grafana.host.or.ip:port
|
||||
username: username
|
||||
password: password
|
||||
|
||||
@@ -14,8 +14,6 @@ Find your API key under `Account Settings > API Keys`.
|
||||
|
||||
Allowed fields: `["users" ,"photos", "videos", "storage"]`.
|
||||
|
||||
Note that API key must be from admin user.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: immich
|
||||
|
||||
@@ -8,6 +8,7 @@ search:
|
||||
You can also find a list of all available service widgets in the sidebar navigation.
|
||||
|
||||
- [Adguard Home](adguard-home.md)
|
||||
- [APC UPS](apcups.md)
|
||||
- [ArgoCD](argocd.md)
|
||||
- [Atsumeru](atsumeru.md)
|
||||
- [Audiobookshelf](audiobookshelf.md)
|
||||
@@ -21,6 +22,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [Calibre-Web](calibre-web.md)
|
||||
- [ChangeDetection.io](changedetectionio.md)
|
||||
- [Channels DVR Server](channelsdvrserver.md)
|
||||
- [Checkmk](checkmk.md)
|
||||
- [Cloudflared](cloudflared.md)
|
||||
- [Coin Market Cap](coin-market-cap.md)
|
||||
- [CrowdSec](crowdsec.md)
|
||||
@@ -32,7 +34,9 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [Emby](emby.md)
|
||||
- [ESPHome](esphome.md)
|
||||
- [EVCC](evcc.md)
|
||||
- [Filebrowser](filebrowser.md)
|
||||
- [Fileflows](fileflows.md)
|
||||
- [Firefly III](firefly.md)
|
||||
- [Flood](flood.md)
|
||||
- [FreshRSS](freshrss.md)
|
||||
- [Frigate](frigate.md)
|
||||
@@ -49,6 +53,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [HDHomeRun](hdhomerun.md)
|
||||
- [Headscale](headscale.md)
|
||||
- [Healthchecks](healthchecks.md)
|
||||
- [Karakeep](karakeep.md)
|
||||
- [Home Assistant](homeassistant.md)
|
||||
- [HomeBox](homebox.md)
|
||||
- [Homebridge](homebridge.md)
|
||||
@@ -58,8 +63,10 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [JDownloader](jdownloader.md)
|
||||
- [Jellyfin](jellyfin.md)
|
||||
- [Jellyseerr](jellyseerr.md)
|
||||
- [Jellystat](jellystat.md)
|
||||
- [Kavita](kavita.md)
|
||||
- [Komga](komga.md)
|
||||
- [Komodo](komodo.md)
|
||||
- [Kopia](kopia.md)
|
||||
- [Lidarr](lidarr.md)
|
||||
- [Linkwarden](linkwarden.md)
|
||||
@@ -114,6 +121,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [ruTorrent](rutorrent.md)
|
||||
- [SABnzbd](sabnzbd.md)
|
||||
- [Scrutiny](scrutiny.md)
|
||||
- [Slskd](slskd.md)
|
||||
- [Sonarr](sonarr.md)
|
||||
- [Speedtest Tracker](speedtest-tracker.md)
|
||||
- [Stash](stash.md)
|
||||
@@ -126,6 +134,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [TDarr](tdarr.md)
|
||||
- [Traefik](traefik.md)
|
||||
- [Transmission](transmission.md)
|
||||
- [Trilium](trilium.md)
|
||||
- [TrueNAS](truenas.md)
|
||||
- [TubeArchivist](tubearchivist.md)
|
||||
- [UniFi Controller](unifi-controller.md)
|
||||
@@ -134,6 +143,7 @@ You can also find a list of all available service widgets in the sidebar navigat
|
||||
- [UptimeRobot](uptimerobot.md)
|
||||
- [UrBackup](urbackup.md)
|
||||
- [Vikunja](vikunja.md)
|
||||
- [Wallos](wallos.md)
|
||||
- [Watchtower](watchtower.md)
|
||||
- [WGEasy](wgeasy.md)
|
||||
- [WhatsUpDocker](whatsupdocker.md)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: JDownloader
|
||||
description: NextPVR Widget Configuration
|
||||
description: JDownloader Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [JDownloader](https://jdownloader.org/).
|
||||
|
||||
@@ -17,6 +17,7 @@ widget:
|
||||
enableBlocks: true # optional, defaults to false
|
||||
enableNowPlaying: true # optional, defaults to true
|
||||
enableUser: true # optional, defaults to false
|
||||
enableMediaControl: false # optional, defaults to true
|
||||
showEpisodeNumber: true # optional, defaults to false
|
||||
expandOneStreamToTwoRows: false # optional, defaults to true
|
||||
```
|
||||
|
||||
18
docs/widgets/services/jellystat.md
Normal file
18
docs/widgets/services/jellystat.md
Normal file
@@ -0,0 +1,18 @@
|
||||
---
|
||||
title: Jellystat
|
||||
description: Jellystat Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Jellystat](https://github.com/CyferShepard/Jellystat). The widget supports (at least) Jellystat version 1.1.6
|
||||
|
||||
You can create an API key from inside Jellystat at `Settings > API Key`.
|
||||
|
||||
Allowed fields: `["songs", "movies", "episodes", "other"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: jellystat
|
||||
url: http://jellystat.host.or.ip
|
||||
key: apikeyapikeyapikeyapikeyapikey
|
||||
days: 30 # optional, defaults to 30
|
||||
```
|
||||
17
docs/widgets/services/karakeep.md
Normal file
17
docs/widgets/services/karakeep.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
title: Karakeep
|
||||
description: Karakeep Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Karakeep](https://karakeep.app) (formerly known as Hoarder).
|
||||
|
||||
Generate an API key for your user at `User Settings > API Keys`.
|
||||
|
||||
Allowed fields: `["bookmarks", "favorites", "archived", "highlights", "lists", "tags"]` (maximum of 4).
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: karakeep
|
||||
url: http[s]://karakeep.host.or.ip[:port]
|
||||
key: karakeep_api_key
|
||||
```
|
||||
@@ -15,4 +15,5 @@ widget:
|
||||
url: http://kavita.host.or.ip:port
|
||||
username: username
|
||||
password: password
|
||||
key: kavitaapikey # Optional, e.g. if not using username and password
|
||||
```
|
||||
|
||||
@@ -9,10 +9,16 @@ Uses the same username and password used to login from the web.
|
||||
|
||||
Allowed fields: `["libraries", "series", "books"]`.
|
||||
|
||||
| Komga API Version | Homepage Widget Version |
|
||||
| ----------------- | ----------------------- |
|
||||
| < v2 | 1 (default) |
|
||||
| >= v2 | 2 |
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: komga
|
||||
url: http://komga.host.or.ip:port
|
||||
username: username
|
||||
password: password
|
||||
key: komgaapikey # optional
|
||||
```
|
||||
|
||||
22
docs/widgets/services/komodo.md
Normal file
22
docs/widgets/services/komodo.md
Normal file
@@ -0,0 +1,22 @@
|
||||
---
|
||||
title: Komodo
|
||||
description: Komodo Widget Configuration
|
||||
---
|
||||
|
||||
This widget shows either details about all containers or stacks (if `showStacks` is true) managed by [Komodo](https://komo.do/) or the number of running servers, containers and stacks when `showSummary` is enabled.
|
||||
|
||||
The api key and secret can be found in the Komodo settings.
|
||||
|
||||
Allowed fields (max 4): `["total", "running", "stopped", "unhealthy", "unknown"]`.
|
||||
Allowed fields with `showStacks` (max 4): `["total", "running", "down", "unhealthy", "unknown"]`.
|
||||
Allowed fields with `showSummary`: `["servers", "stacks", "containers"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: komodo
|
||||
url: http://komodo.hostname.or.ip:port
|
||||
key: K-xxxxxx...
|
||||
secret: S-xxxxxx...
|
||||
showSummary: true # optional, default: false
|
||||
showStacks: true # optional, default: false
|
||||
```
|
||||
@@ -20,4 +20,6 @@ widget:
|
||||
type: peanut
|
||||
url: http://peanut.host.or.ip:port
|
||||
key: nameofyourups
|
||||
username: username # only needed if set
|
||||
password: password # only needed if set
|
||||
```
|
||||
|
||||
@@ -7,12 +7,16 @@ Learn more about [Portainer](https://github.com/portainer/portainer).
|
||||
|
||||
You'll need to make sure you have the correct environment set for the integration to work properly. From the Environments section inside of Portainer, click the one you'd like to connect to and observe the ID at the end of the URL (should be), something like `#!/endpoints/1`, here `1` is the value to set as the `env` value. In order to generate an API key, please follow the steps outlined here https://docs.portainer.io/api/access.
|
||||
|
||||
Allowed fields: `["running", "stopped", "total"]`.
|
||||
Allowed fields:
|
||||
|
||||
- For Docker mode (default): `["running", "stopped", "total"]`
|
||||
- For Kubernetes mode (`kubernetes: true`): `["applications", "services", "namespaces"]`
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: portainer
|
||||
url: https://portainer.host.or.ip:9443
|
||||
env: 1
|
||||
kubernetes: true # optional, defaults to false
|
||||
key: ptr_accesskeyaccesskeyaccesskeyaccesskey
|
||||
```
|
||||
|
||||
@@ -7,34 +7,7 @@ Learn more about [Proxmox](https://www.proxmox.com/en/).
|
||||
|
||||
This widget shows the running and total counts of both QEMU VMs and LX Containers in the Proxmox cluster. It also shows the CPU and memory usage of the first node in the cluster.
|
||||
|
||||
You will need to generate an API Token for new or an existing user. Here is an example of how to do this for a new user.
|
||||
|
||||
1. Navigate to the Proxmox portal, click on Datacenter
|
||||
2. Expand Permissions, click on Groups
|
||||
3. Click the Create button
|
||||
4. Name the group something informative, like api-ro-users
|
||||
5. Click on the Permissions "folder"
|
||||
6. Click Add -> Group Permission
|
||||
- Path: /
|
||||
- Group: group from bullet 4 above
|
||||
- Role: PVEAuditor
|
||||
- Propagate: Checked
|
||||
7. Expand Permissions, click on Users
|
||||
8. Click the Add button
|
||||
- User name: something informative like `api`
|
||||
- Realm: Linux PAM standard authentication
|
||||
- Group: group from bullet 4 above
|
||||
9. Expand Permissions, click on API Tokens
|
||||
10. Click the Add button
|
||||
- User: user from bullet 8 above
|
||||
- Token ID: something informative like the application or purpose like `homepage`
|
||||
- Privilege Separation: Checked
|
||||
11. Go back to the "Permissions" menu
|
||||
12. Click Add -> API Token Permission
|
||||
- Path: /
|
||||
- API Token: select the Token ID created in Step 10
|
||||
- Role: PVE Auditor
|
||||
- Propagate: Checked
|
||||
See the [Proxmox configuration documentation](../../configs/proxmox.md#create-token) for details on creating API tokens.
|
||||
|
||||
Use `username@pam!Token ID` as the `username` (e.g `api@pam!homepage`) setting and `Secret` as the `password` setting.
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ description: Proxmox Backup Server Widget Configuration
|
||||
|
||||
Learn more about [Proxmox Backup Server](https://www.proxmox.com/en/proxmox-backup-server/overview).
|
||||
|
||||
Create a user and an API token similar to the [Proxmox VE description](proxmox.md). The "Audit" role is required for both the user and token (not group).
|
||||
|
||||
Allowed fields: `["datastore_usage", "failed_tasks_24h", "cpu_usage", "memory_usage"]`.
|
||||
|
||||
```yaml
|
||||
@@ -13,4 +15,5 @@ widget:
|
||||
url: https://proxmoxbackupserver.host:port
|
||||
username: api_token_id
|
||||
password: api_token_secret
|
||||
datastore: datastore_name #optional; if ommitted, will display a combination of all datastores used / total
|
||||
```
|
||||
|
||||
@@ -10,7 +10,5 @@ If more than (4) fields are provided, only the first (4) will be used.
|
||||
widget:
|
||||
type: romm
|
||||
url: http://romm.host.or.ip
|
||||
username: username # optional
|
||||
password: password # optional
|
||||
fields: ["platforms", "totalRoms", "saves", "states"] # optional - default fields shown
|
||||
```
|
||||
|
||||
25
docs/widgets/services/slskd.md
Normal file
25
docs/widgets/services/slskd.md
Normal file
@@ -0,0 +1,25 @@
|
||||
---
|
||||
title: Slskd
|
||||
description: Slskd Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Slskd](https://github.com/slskd/slskd).
|
||||
|
||||
Generate an API key for slskd with `openssl rand -base64 48`.
|
||||
Add it to your `path/to/config/slskd.yml` in `web > authentication > api_keys`:
|
||||
|
||||
```yaml
|
||||
homepage_widget:
|
||||
key: <generated key>
|
||||
role: readonly
|
||||
cidr: <homepage subnet>
|
||||
```
|
||||
|
||||
Allowed fields: `["slskStatus", "updateStatus", "downloads", "uploads", "sharedFiles"]` (maximum of 4).
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: slskd
|
||||
url: http[s]://slskd.host.or.ip[:5030]
|
||||
key: generatedapikey
|
||||
```
|
||||
@@ -8,7 +8,12 @@ Learn more about [Speedtest Tracker](https://github.com/alexjustesen/speedtest-t
|
||||
|
||||
No extra configuration is required.
|
||||
|
||||
This widget is compatible with both [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker) and [henrywhitaker3/Speedtest-Tracker](https://github.com/henrywhitaker3/Speedtest-Tracker).
|
||||
Version 1 of the widget is compatible with both [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker) and [henrywhitaker3/Speedtest-Tracker](https://github.com/henrywhitaker3/Speedtest-Tracker), while version 2 is only compatible with [alexjustesen/speedtest-tracker](https://github.com/alexjustesen/speedtest-tracker).
|
||||
|
||||
| Speedtest Version (AJ) | Speedtest Version (HW) | Homepage Widget Version |
|
||||
| ---------------------- | ---------------------- | ----------------------- |
|
||||
| < 1.2.1 | ≤ 1.12.0 | 1 (default) |
|
||||
| >= 1.2.1 | N/A | 2 |
|
||||
|
||||
Allowed fields: `["download", "upload", "ping"]`.
|
||||
|
||||
@@ -16,5 +21,7 @@ Allowed fields: `["download", "upload", "ping"]`.
|
||||
widget:
|
||||
type: speedtest
|
||||
url: http://speedtest.host.or.ip
|
||||
version: 1 # optional, default is 1
|
||||
key: speedtestapikey # required for version 2
|
||||
bitratePrecision: 3 # optional, default is 0
|
||||
```
|
||||
|
||||
19
docs/widgets/services/trilium.md
Normal file
19
docs/widgets/services/trilium.md
Normal file
@@ -0,0 +1,19 @@
|
||||
---
|
||||
title: Trilium
|
||||
description: Trilium Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Trilium](https://github.com/TriliumNext/Notes).
|
||||
|
||||
This widget is compatible with [TriliumNext](https://github.com/TriliumNext/Notes) versions >= [v0.94.0](https://github.com/TriliumNext/Notes/releases/tag/v0.94.0).
|
||||
|
||||
Find (or create) your ETAPI key under `Options > ETAPI > Create new ETAPI token`.
|
||||
|
||||
Allowed fields: `["version", "notesCount", "dbSize"]`
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: trilium
|
||||
url: https://trilium.host.or.ip
|
||||
key: etapi_token
|
||||
```
|
||||
@@ -19,15 +19,14 @@ Allowed fields: `["uptime", "wan", "lan", "lan_users", "lan_devices", "wlan", "w
|
||||
|
||||
!!! hint
|
||||
|
||||
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container to clear the cache.
|
||||
If you enter e.g. incorrect credentials and receive an "API Error", you may need to recreate the container or restart the service to clear the cache.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: unifi
|
||||
url: https://unifi.host.or.ip:port
|
||||
username: username
|
||||
password: password
|
||||
site: Site Name # optional
|
||||
username: user
|
||||
password: pass
|
||||
key: unifiapikey # required if using API key instead of username/password
|
||||
```
|
||||
|
||||
_Added in v0.4.18, updated in 0.6.7_
|
||||
|
||||
23
docs/widgets/services/wallos.md
Normal file
23
docs/widgets/services/wallos.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
title: Wallos
|
||||
description: Wallos Widget Configuration
|
||||
---
|
||||
|
||||
Learn more about [Wallos](https://github.com/ellite/wallos).
|
||||
|
||||
If you're using more than one currency to record subscriptions then you should also have your "Fixer API" key set-up (`Settings > Fixer API Key`).
|
||||
|
||||
> **Please Note:** The monthly cost displayed is the total cost of subscriptions in that month, **not** the _"monthly"_ average cost.
|
||||
|
||||
Get your API key under `Profile > API Key`.
|
||||
|
||||
Allowed fields: `["activeSubscriptions", "nextRenewingSubscription", "previousMonthlyCost", "thisMonthlyCost", "nextMonthlyCost"]`.
|
||||
|
||||
Default fields: `["activeSubscriptions", "nextRenewingSubscription", "thisMonthlyCost", "nextMonthlyCost"]`.
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: wallos
|
||||
url: http://wallos.host.or.ip
|
||||
key: apikeyapikeyapikeyapikeyapikey
|
||||
```
|
||||
@@ -11,10 +11,17 @@ Note: by default `["connected", "enabled", "total"]` are displayed.
|
||||
|
||||
To detect if a device is connected the time since the last handshake is queried. `threshold` is the time to wait in minutes since the last handshake to consider a device connected. Default is 2 minutes.
|
||||
|
||||
| Wg-Easy API Version | Homepage Widget Version |
|
||||
| ------------------- | ----------------------- |
|
||||
| < v15 | 1 (default) |
|
||||
| >= v15 | 2 |
|
||||
|
||||
```yaml
|
||||
widget:
|
||||
type: wgeasy
|
||||
url: http://wg.easy.or.ip
|
||||
version: 2 # optional, default is 1
|
||||
username: yourwgusername # required for v15 and above
|
||||
password: yourwgeasypassword
|
||||
threshold: 2 # optional
|
||||
```
|
||||
|
||||
@@ -46,6 +46,10 @@ config:
|
||||
docker:
|
||||
settings:
|
||||
|
||||
env:
|
||||
- name: HOMEPAGE_ALLOWED_HOSTS
|
||||
value: "homepage.k3d.localhost:8080"
|
||||
|
||||
serviceAccount:
|
||||
create: true
|
||||
name: homepage
|
||||
|
||||
@@ -23,6 +23,12 @@ Set the `mode` in the `kubernetes.yaml` to `cluster`.
|
||||
mode: default
|
||||
```
|
||||
|
||||
To enable Kubernetes gateway-api compatibility, set `route` to `gateway`.
|
||||
|
||||
```yaml
|
||||
route: gateway
|
||||
```
|
||||
|
||||
## Widgets
|
||||
|
||||
The Kubernetes widget can show a high-level overview of the cluster,
|
||||
|
||||
11
mkdocs.yml
11
mkdocs.yml
@@ -25,12 +25,14 @@ nav:
|
||||
- configs/services.md
|
||||
- configs/kubernetes.md
|
||||
- configs/docker.md
|
||||
- configs/proxmox.md
|
||||
- configs/custom-css-js.md
|
||||
- "Widgets":
|
||||
- widgets/index.md
|
||||
- "Service Widgets":
|
||||
- widgets/services/index.md
|
||||
- widgets/services/adguard-home.md
|
||||
- widgets/services/apcups.md
|
||||
- widgets/services/argocd.md
|
||||
- widgets/services/atsumeru.md
|
||||
- widgets/services/audiobookshelf.md
|
||||
@@ -44,6 +46,7 @@ nav:
|
||||
- widgets/services/calibre-web.md
|
||||
- widgets/services/changedetectionio.md
|
||||
- widgets/services/channelsdvrserver.md
|
||||
- widgets/services/checkmk.md
|
||||
- widgets/services/cloudflared.md
|
||||
- widgets/services/coin-market-cap.md
|
||||
- widgets/services/crowdsec.md
|
||||
@@ -55,7 +58,9 @@ nav:
|
||||
- widgets/services/emby.md
|
||||
- widgets/services/esphome.md
|
||||
- widgets/services/evcc.md
|
||||
- widgets/services/filebrowser.md
|
||||
- widgets/services/fileflows.md
|
||||
- widgets/services/firefly.md
|
||||
- widgets/services/flood.md
|
||||
- widgets/services/freshrss.md
|
||||
- widgets/services/frigate.md
|
||||
@@ -72,6 +77,7 @@ nav:
|
||||
- widgets/services/hdhomerun.md
|
||||
- widgets/services/headscale.md
|
||||
- widgets/services/healthchecks.md
|
||||
- widgets/services/karakeep.md
|
||||
- widgets/services/homeassistant.md
|
||||
- widgets/services/homebox.md
|
||||
- widgets/services/homebridge.md
|
||||
@@ -81,8 +87,10 @@ nav:
|
||||
- widgets/services/jdownloader.md
|
||||
- widgets/services/jellyfin.md
|
||||
- widgets/services/jellyseerr.md
|
||||
- widgets/services/jellystat.md
|
||||
- widgets/services/kavita.md
|
||||
- widgets/services/komga.md
|
||||
- widgets/services/komodo.md
|
||||
- widgets/services/kopia.md
|
||||
- widgets/services/lidarr.md
|
||||
- widgets/services/linkwarden.md
|
||||
@@ -137,6 +145,7 @@ nav:
|
||||
- widgets/services/rutorrent.md
|
||||
- widgets/services/sabnzbd.md
|
||||
- widgets/services/scrutiny.md
|
||||
- widgets/services/slskd.md
|
||||
- widgets/services/sonarr.md
|
||||
- widgets/services/speedtest-tracker.md
|
||||
- widgets/services/spoolman.md
|
||||
@@ -151,6 +160,7 @@ nav:
|
||||
- widgets/services/tdarr.md
|
||||
- widgets/services/traefik.md
|
||||
- widgets/services/transmission.md
|
||||
- widgets/services/trilium.md
|
||||
- widgets/services/truenas.md
|
||||
- widgets/services/tubearchivist.md
|
||||
- widgets/services/unifi-controller.md
|
||||
@@ -159,6 +169,7 @@ nav:
|
||||
- widgets/services/uptimerobot.md
|
||||
- widgets/services/urbackup.md
|
||||
- widgets/services/vikunja.md
|
||||
- widgets/services/wallos.md
|
||||
- widgets/services/watchtower.md
|
||||
- widgets/services/wgeasy.md
|
||||
- widgets/services/whatsupdocker.md
|
||||
|
||||
@@ -131,8 +131,8 @@ module.exports = {
|
||||
? BIBIT_UNITS
|
||||
: BIT_UNITS
|
||||
: options.binary
|
||||
? BIBYTE_UNITS
|
||||
: BYTE_UNITS;
|
||||
? BIBYTE_UNITS
|
||||
: BYTE_UNITS;
|
||||
|
||||
if (value === 0) return `0 ${sizes[0]}/s`;
|
||||
|
||||
|
||||
8660
package-lock.json
generated
8660
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
89
package.json
89
package.json
@@ -1,8 +1,9 @@
|
||||
{
|
||||
"name": "homepage",
|
||||
"version": "0.9.6",
|
||||
"version": "1.4.5",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"preinstall": "npx only-allow pnpm",
|
||||
"dev": "next dev",
|
||||
"build": "next build",
|
||||
"start": "next start",
|
||||
@@ -10,57 +11,69 @@
|
||||
"telemetry": "next telemetry disable"
|
||||
},
|
||||
"dependencies": {
|
||||
"@headlessui/react": "^1.7.18",
|
||||
"@kubernetes/client-node": "^0.17.1",
|
||||
"cal-parser": "^1.0.2",
|
||||
"@headlessui/react": "^1.7.19",
|
||||
"@kubernetes/client-node": "^1.0.0",
|
||||
"classnames": "^2.5.1",
|
||||
"compare-versions": "^6.1.0",
|
||||
"dockerode": "^4.0.2",
|
||||
"follow-redirects": "^1.15.9",
|
||||
"gamedig": "^5.1.4",
|
||||
"i18next": "^21.10.0",
|
||||
"compare-versions": "^6.1.1",
|
||||
"dockerode": "^4.0.7",
|
||||
"follow-redirects": "^1.15.11",
|
||||
"gamedig": "^5.2.0",
|
||||
"i18next": "^24.2.3",
|
||||
"ical.js": "^2.1.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"json-rpc-2.0": "^1.7.0",
|
||||
"luxon": "^3.5.0",
|
||||
"luxon": "^3.6.1",
|
||||
"memory-cache": "^0.2.0",
|
||||
"minecraft-ping-js": "^1.0.2",
|
||||
"next": "^12.3.4",
|
||||
"minecraftstatuspinger": "^1.2.2",
|
||||
"next": "^15.4.5",
|
||||
"next-i18next": "^12.1.0",
|
||||
"ping": "^0.4.4",
|
||||
"pretty-bytes": "^6.1.1",
|
||||
"raw-body": "^3.0.0",
|
||||
"react": "^18.3.1",
|
||||
"react-dom": "^18.2.0",
|
||||
"react-i18next": "^11.18.6",
|
||||
"react-icons": "^4.12.0",
|
||||
"recharts": "^2.12.6",
|
||||
"rrule": "^2.8.1",
|
||||
"swr": "^1.3.0",
|
||||
"systeminformation": "^5.23.8",
|
||||
"tough-cookie": "^4.1.3",
|
||||
"urbackup-server-api": "^0.52.1",
|
||||
"winston": "^3.11.0",
|
||||
"react-dom": "^18.3.1",
|
||||
"react-i18next": "^15.5.3",
|
||||
"react-icons": "^5.4.0",
|
||||
"recharts": "^2.15.3",
|
||||
"swr": "^2.3.3",
|
||||
"systeminformation": "^5.27.7",
|
||||
"tough-cookie": "^5.1.2",
|
||||
"urbackup-server-api": "^0.8.9",
|
||||
"winston": "^3.17.0",
|
||||
"xml-js": "^1.6.11"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/forms": "^0.5.8",
|
||||
"autoprefixer": "^10.4.20",
|
||||
"eslint": "^8.57.1",
|
||||
"eslint-config-airbnb": "^19.0.4",
|
||||
"eslint-config-next": "^14.2.3",
|
||||
"eslint-config-prettier": "^9.1.0",
|
||||
"eslint-plugin-import": "^2.31.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.8.0",
|
||||
"eslint-plugin-prettier": "^5.2.1",
|
||||
"eslint-plugin-react": "^7.37.2",
|
||||
"eslint-plugin-react-hooks": "^4.6.2",
|
||||
"postcss": "^8.4.47",
|
||||
"prettier": "^3.2.5",
|
||||
"tailwind-scrollbar": "^3.0.5",
|
||||
"tailwindcss": "^3.4.14",
|
||||
"typescript": "^5.6.3"
|
||||
"@tailwindcss/forms": "^0.5.10",
|
||||
"@tailwindcss/postcss": "^4.0.9",
|
||||
"eslint": "^9.25.1",
|
||||
"eslint-config-next": "^15.2.4",
|
||||
"eslint-config-prettier": "^10.1.1",
|
||||
"eslint-plugin-import": "^2.32.0",
|
||||
"eslint-plugin-jsx-a11y": "^6.10.2",
|
||||
"eslint-plugin-prettier": "^5.5.1",
|
||||
"eslint-plugin-react": "^7.37.4",
|
||||
"eslint-plugin-react-hooks": "^5.2.0",
|
||||
"postcss": "^8.5.6",
|
||||
"prettier": "^3.6.2",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"tailwind-scrollbar": "^4.0.2",
|
||||
"tailwindcss": "^4.0.9",
|
||||
"typescript": "^5.7.3"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"osx-temperature-sensor": "^1.0.8"
|
||||
},
|
||||
"packageManager": "pnpm@10.8.1",
|
||||
"devEngines": {
|
||||
"packageManager": {
|
||||
"name": "pnpm",
|
||||
"version": "10.8.1"
|
||||
}
|
||||
},
|
||||
"pnpm": {
|
||||
"onlyBuiltDependencies": [
|
||||
"osx-temperature-sensor",
|
||||
"sharp"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
4953
pnpm-lock.yaml
generated
4953
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@@ -1,6 +1,5 @@
|
||||
module.exports = {
|
||||
plugins: {
|
||||
tailwindcss: {},
|
||||
autoprefixer: {},
|
||||
"@tailwindcss/postcss": {},
|
||||
},
|
||||
};
|
||||
|
||||
@@ -108,8 +108,8 @@
|
||||
"songs": "Liedjies"
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Vanlyn",
|
||||
"offline_alt": "Vanlyn",
|
||||
"offline": "Vanlyn af",
|
||||
"offline_alt": "Vanlyn af",
|
||||
"online": "Aanlyn",
|
||||
"total": "Totaal",
|
||||
"unknown": "Onbekend"
|
||||
@@ -148,7 +148,9 @@
|
||||
"up": "Op",
|
||||
"received": "Ontvang",
|
||||
"sent": "Gestuur",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Voorvoegsel"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Stroomop",
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Gekoppelde APs",
|
||||
"activeUser": "Aktiewe toestelle",
|
||||
"alerts": "Waarskuwings",
|
||||
"connectedGateway": "Gekoppelde poorte",
|
||||
"connectedGateways": "Gekoppelde poorte",
|
||||
"connectedSwitches": "Gekoppelde skakelaars"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -187,7 +189,7 @@
|
||||
"plex": {
|
||||
"streams": "Aktiewe Strome",
|
||||
"albums": "Albums",
|
||||
"movies": "Flieks",
|
||||
"movies": "Movies",
|
||||
"tv": "TV Programme"
|
||||
},
|
||||
"sabnzbd": {
|
||||
@@ -240,15 +242,15 @@
|
||||
"wanted": "Gesoek",
|
||||
"queued": "In ry",
|
||||
"series": "Reekse",
|
||||
"queue": "Tou",
|
||||
"queue": "Toustaan",
|
||||
"unknown": "Onbekend"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Gesoek",
|
||||
"missing": "Vermis",
|
||||
"queued": "In ry",
|
||||
"movies": "Flieks",
|
||||
"queue": "Tou",
|
||||
"movies": "Movies",
|
||||
"queue": "Toustaan",
|
||||
"unknown": "Onbekend"
|
||||
},
|
||||
"lidarr": {
|
||||
@@ -300,7 +302,7 @@
|
||||
"latency": "Latensie"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "Laai Op",
|
||||
"upload": "Oplaai",
|
||||
"download": "Aflaai",
|
||||
"ping": "Pieng"
|
||||
},
|
||||
@@ -357,8 +359,14 @@
|
||||
"services": "Dienste",
|
||||
"middleware": "Filtreerprogramme"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Weergawe",
|
||||
"notesCount": "Notas",
|
||||
"dbSize": "Databasis Grootte",
|
||||
"unknown": "Onbekend"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Geen aktiewe strome nie",
|
||||
"nothing_streaming": "Geen Aktiewe Strome",
|
||||
"please_wait": "Wag Asseblief"
|
||||
},
|
||||
"npm": {
|
||||
@@ -387,7 +395,7 @@
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Opgestel",
|
||||
"errored": "Fout"
|
||||
"errored": "Gefout"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "Sessies",
|
||||
@@ -410,7 +418,7 @@
|
||||
"version": "Weergawe",
|
||||
"status": "Status",
|
||||
"up": "Aanlyn",
|
||||
"down": "Vanlyn"
|
||||
"down": "Vanlyn af"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Gelees",
|
||||
@@ -547,7 +555,7 @@
|
||||
"indexers": "Indekseerders"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "Tou",
|
||||
"downloads": "Toustaan",
|
||||
"videos": "Videos",
|
||||
"channels": "Kanale",
|
||||
"playlists": "Snitlyste"
|
||||
@@ -555,7 +563,7 @@
|
||||
"truenas": {
|
||||
"load": "Stelsellading",
|
||||
"uptime": "Optyd",
|
||||
"alerts": "Waarskuwings"
|
||||
"alerts": "Opletberigte"
|
||||
},
|
||||
"pyload": {
|
||||
"speed": "Spoed",
|
||||
@@ -566,7 +574,8 @@
|
||||
"gluetun": {
|
||||
"public_ip": "Publieke IP",
|
||||
"region": "Streek",
|
||||
"country": "Land"
|
||||
"country": "Land",
|
||||
"port_forwarded": "Poort Aangestuur"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Kanale",
|
||||
@@ -702,6 +711,10 @@
|
||||
"processed": "Verwerk",
|
||||
"time": "Tyd"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Netto Waarde",
|
||||
"budget": "Begroting"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Databronne",
|
||||
@@ -760,7 +773,7 @@
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "Monitering",
|
||||
"updates": "Opdatering"
|
||||
"updates": "Opdaterings"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Boeke",
|
||||
@@ -794,7 +807,7 @@
|
||||
"gamedig": {
|
||||
"status": "Status",
|
||||
"online": "Aanlyn",
|
||||
"offline": "Vanlyn",
|
||||
"offline": "Vanlyn af",
|
||||
"name": "Naam",
|
||||
"map": "Kaart",
|
||||
"currentPlayers": "Huidige Spelers",
|
||||
@@ -850,7 +863,8 @@
|
||||
"physicalRelease": "Fisiese Vrylating",
|
||||
"digitalRelease": "Digitale Vrylating",
|
||||
"noEventsToday": "Geen gebeure vir vandag nie!",
|
||||
"noEventsFound": "Geen gebeure gevind nie"
|
||||
"noEventsFound": "Geen gebeure gevind nie",
|
||||
"errorWhenLoadingData": "Fout tydens laai van kalenderdata"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platform",
|
||||
@@ -864,7 +878,7 @@
|
||||
"domains": "Domeine",
|
||||
"mailboxes": "Posbusse",
|
||||
"mails": "E-posse",
|
||||
"storage": "Bergplek"
|
||||
"storage": "Stoor plek"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Waarskuwings",
|
||||
@@ -879,7 +893,8 @@
|
||||
"gitea": {
|
||||
"notifications": "Kennisgewings",
|
||||
"issues": "Kwessies",
|
||||
"pulls": "Trek Versoeke"
|
||||
"pulls": "Trek Versoeke",
|
||||
"repositories": "Bewaarplekke"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Tonele",
|
||||
@@ -893,7 +908,7 @@
|
||||
"galleries": "Galerye",
|
||||
"performers": "Kunstenaars",
|
||||
"studios": "Ateljees",
|
||||
"movies": "Flieks",
|
||||
"movies": "Movies",
|
||||
"tags": "Merkers",
|
||||
"oCount": "O Tel"
|
||||
},
|
||||
@@ -911,13 +926,13 @@
|
||||
"totalValue": "Totale Waarde"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Waarskuwings",
|
||||
"alerts": "Opletberigte",
|
||||
"bans": "Verbanne"
|
||||
},
|
||||
"wgeasy": {
|
||||
"connected": "Gekoppel",
|
||||
"enabled": "Geaktiveer",
|
||||
"disabled": "Onaktief",
|
||||
"disabled": "Gediaktiveer",
|
||||
"total": "Totaal"
|
||||
},
|
||||
"swagdashboard": {
|
||||
@@ -929,7 +944,7 @@
|
||||
"myspeed": {
|
||||
"ping": "Pieng",
|
||||
"download": "Aflaai",
|
||||
"upload": "Laai Op"
|
||||
"upload": "Oplaai"
|
||||
},
|
||||
"stocks": {
|
||||
"stocks": "Aandele",
|
||||
@@ -950,7 +965,7 @@
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Nie geklassifiseer nie",
|
||||
"information": "Informasie",
|
||||
"information": "Inligting",
|
||||
"warning": "Waarskuwing",
|
||||
"average": "Gemiddeld",
|
||||
"high": "Hoog",
|
||||
@@ -973,7 +988,7 @@
|
||||
"headscale": {
|
||||
"name": "Naam",
|
||||
"address": "Adres",
|
||||
"last_seen": "Laaste Gesien",
|
||||
"last_seen": "Laas gesien",
|
||||
"status": "Status",
|
||||
"online": "Aanlyn",
|
||||
"offline": "Vanlyn"
|
||||
@@ -982,6 +997,9 @@
|
||||
"name": "Naam",
|
||||
"systems": "Stelsels",
|
||||
"up": "Op",
|
||||
"down": "Af",
|
||||
"paused": "Onderbreek",
|
||||
"pending": "Afwagtend",
|
||||
"status": "Status",
|
||||
"updated": "Opgedateer",
|
||||
"cpu": "SVE",
|
||||
@@ -996,7 +1014,7 @@
|
||||
"healthy": "Gesond",
|
||||
"degraded": "Gedegradeer",
|
||||
"progressing": "Vorderend",
|
||||
"missing": "Vermis",
|
||||
"missing": "Afwesig",
|
||||
"suspended": "Geskors"
|
||||
},
|
||||
"spoolman": {
|
||||
@@ -1007,5 +1025,63 @@
|
||||
"issues": "Kwessies",
|
||||
"merges": "Saamvleg Versoeke",
|
||||
"projects": "Projekte"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Las",
|
||||
"bcharge": "Batterylading",
|
||||
"timeleft": "Oorblywende Tyd"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Boekmerke",
|
||||
"favorites": "Gunstelinge",
|
||||
"archived": "Geargiveer",
|
||||
"highlights": "Hoogtepunte",
|
||||
"lists": "Lyste",
|
||||
"tags": "Merkers"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Netwerk",
|
||||
"connected": "Gekoppel",
|
||||
"disconnected": "Ontkoppel",
|
||||
"updateStatus": "Opdateer",
|
||||
"update_yes": "Beskikbaar",
|
||||
"update_no": "Op Datum",
|
||||
"downloads": "Aflaaie",
|
||||
"uploads": "Oplaaie",
|
||||
"sharedFiles": "Lêers"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Liedjies",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episode",
|
||||
"other": "Ander"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Diensprobleme",
|
||||
"hostErrors": "Gasheerprobleme"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Totaal",
|
||||
"running": "Lopend",
|
||||
"stopped": "Gestop",
|
||||
"down": "Af",
|
||||
"unhealthy": "Ongesond",
|
||||
"unknown": "Onbekend",
|
||||
"servers": "Bedieners",
|
||||
"stacks": "Stapels",
|
||||
"containers": "Houers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -61,15 +61,15 @@
|
||||
"wlan_devices": "WLAN Enheder",
|
||||
"lan_users": "LAN Brugere",
|
||||
"wlan_users": "WLAN Brugere",
|
||||
"up": "OP",
|
||||
"up": "UP",
|
||||
"down": "NED",
|
||||
"wait": "Vent venligst",
|
||||
"wait": "Please wait",
|
||||
"empty_data": "Subsystem status ukendt"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "RX",
|
||||
"tx": "TX",
|
||||
"mem": "RAM",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU",
|
||||
"running": "Kører",
|
||||
"offline": "Offline",
|
||||
@@ -83,7 +83,7 @@
|
||||
"partial": "Delvis"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Fejl",
|
||||
"error": "Error",
|
||||
"ping": "Ping",
|
||||
"down": "Ned",
|
||||
"up": "Op",
|
||||
@@ -91,11 +91,11 @@
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP-status",
|
||||
"error": "Fejl",
|
||||
"error": "Error",
|
||||
"response": "Response",
|
||||
"down": "Ned",
|
||||
"up": "Op",
|
||||
"not_available": "Ikke tilgængelig"
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
},
|
||||
"emby": {
|
||||
"playing": "Afspiller",
|
||||
@@ -112,7 +112,7 @@
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Total",
|
||||
"unknown": "Ukendt"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"evcc": {
|
||||
"pv_power": "Produktion",
|
||||
@@ -141,14 +141,16 @@
|
||||
"connectionStatusDisconnecting": "Disconnecting",
|
||||
"connectionStatusDisconnected": "Disconnected",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"down": "Ned",
|
||||
"up": "Op",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"received": "Modtaget",
|
||||
"sent": "Sendt",
|
||||
"externalIPAddress": "Ekstern IP"
|
||||
"externalIPAddress": "Ekstern IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -166,17 +168,17 @@
|
||||
"passes": "Bestået"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Afspiller",
|
||||
"transcoding": "Transcoder",
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "Ingen Aktive Streams",
|
||||
"no_active": "No Active Streams",
|
||||
"plex_connection_error": "Tjek Plex-forbindelse"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "Forbundne APs",
|
||||
"activeUser": "Aktive enheder",
|
||||
"alerts": "Advarsler",
|
||||
"connectedGateway": "Forbundne gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Forbundne switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -187,11 +189,11 @@
|
||||
"plex": {
|
||||
"streams": "Aktive Streams",
|
||||
"albums": "Albums",
|
||||
"movies": "Film",
|
||||
"movies": "Movies",
|
||||
"tv": "TV-Shows"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "Sats",
|
||||
"rate": "Rate",
|
||||
"queue": "Kø",
|
||||
"timeleft": "Resterende tid"
|
||||
},
|
||||
@@ -239,26 +241,26 @@
|
||||
"sonarr": {
|
||||
"wanted": "Ønsket",
|
||||
"queued": "I Kø",
|
||||
"series": "Serier",
|
||||
"queue": "Kø",
|
||||
"unknown": "Ukendt"
|
||||
"series": "Series",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Ønsket",
|
||||
"wanted": "Wanted",
|
||||
"missing": "Mangler",
|
||||
"queued": "I Kø",
|
||||
"movies": "Film",
|
||||
"queue": "Kø",
|
||||
"unknown": "Ukendt"
|
||||
"queued": "Queued",
|
||||
"movies": "Movies",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Ønsket",
|
||||
"queued": "I Kø",
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"artists": "Artister"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "Ønsket",
|
||||
"queued": "I Kø",
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"books": "Bøger"
|
||||
},
|
||||
"bazarr": {
|
||||
@@ -271,15 +273,15 @@
|
||||
"available": "Tilgængelig"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Afventer",
|
||||
"approved": "Godkendt",
|
||||
"available": "Tilgængelig"
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Afventer",
|
||||
"pending": "Pending",
|
||||
"processing": "Behandler",
|
||||
"approved": "Godkendt",
|
||||
"available": "Tilgængelig"
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Total",
|
||||
@@ -294,8 +296,8 @@
|
||||
"gravity": "Tyngdekraft"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "Forespørgsler",
|
||||
"blocked": "Blokerede",
|
||||
"queries": "Queries",
|
||||
"blocked": "Blocked",
|
||||
"filtered": "Filtreret",
|
||||
"latency": "Latenstid"
|
||||
},
|
||||
@@ -305,15 +307,15 @@
|
||||
"ping": "Ping"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Kører",
|
||||
"running": "Running",
|
||||
"stopped": "Stoppede",
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Hentet",
|
||||
"download": "Downloaded",
|
||||
"nondownload": "Non-Downloaded",
|
||||
"read": "Læst",
|
||||
"unread": "Ulæst",
|
||||
"read": "Read",
|
||||
"unread": "Unread",
|
||||
"downloadedread": "Downloaded & Read",
|
||||
"downloadedunread": "Downloaded & Unread",
|
||||
"nondownloadedread": "Non-Downloaded & Read",
|
||||
@@ -334,7 +336,7 @@
|
||||
"ago": "{{value}} Siden"
|
||||
},
|
||||
"technitium": {
|
||||
"totalQueries": "Forespørgsler",
|
||||
"totalQueries": "Queries",
|
||||
"totalNoError": "Success",
|
||||
"totalServerFailure": "Failures",
|
||||
"totalNxDomain": "NX Domains",
|
||||
@@ -342,12 +344,12 @@
|
||||
"totalAuthoritative": "Authoritative",
|
||||
"totalRecursive": "Recursive",
|
||||
"totalCached": "Cached",
|
||||
"totalBlocked": "Blokerede",
|
||||
"totalBlocked": "Blocked",
|
||||
"totalDropped": "Dropped",
|
||||
"totalClients": "Klienter"
|
||||
},
|
||||
"tdarr": {
|
||||
"queue": "Kø",
|
||||
"queue": "Queue",
|
||||
"processed": "Behandlet",
|
||||
"errored": "Fejlet",
|
||||
"saved": "Gemt"
|
||||
@@ -357,8 +359,14 @@
|
||||
"services": "Tjenester",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Ingen Aktive Streams",
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Vent venligst"
|
||||
},
|
||||
"npm": {
|
||||
@@ -375,35 +383,35 @@
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Applikationer",
|
||||
"clients": "Klienter",
|
||||
"clients": "Clients",
|
||||
"messages": "Beskeder"
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "Indeksører",
|
||||
"numberOfGrabs": "Grab",
|
||||
"numberOfQueries": "Forespørgsler",
|
||||
"numberOfQueries": "Queries",
|
||||
"numberOfFailGrabs": "Fejl Grabs",
|
||||
"numberOfFailQueries": "Fejl Forespørgsler"
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Konfigureret",
|
||||
"errored": "Fejlet"
|
||||
"errored": "Errored"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "Sessioner",
|
||||
"numConnections": "Forbindelser",
|
||||
"dataRelayed": "Videresendt",
|
||||
"transferRate": "Sats"
|
||||
"transferRate": "Rate"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Brugere",
|
||||
"user_count": "Users",
|
||||
"status_count": "Indlæg",
|
||||
"domain_count": "Domæner"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Ønsket",
|
||||
"queued": "I Kø",
|
||||
"series": "Serier"
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"series": "Series"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "Afspillere",
|
||||
@@ -414,34 +422,34 @@
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Læst",
|
||||
"unread": "Ulæst"
|
||||
"unread": "Unread"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "Brugere",
|
||||
"users": "Users",
|
||||
"loginsLast24H": "Login (24 timer)",
|
||||
"failedLoginsLast24H": "Mislykkede logins (24 timer)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "RAM",
|
||||
"mem": "MEM",
|
||||
"cpu": "CPU",
|
||||
"lxc": "LXC",
|
||||
"vms": "VMs"
|
||||
},
|
||||
"glances": {
|
||||
"cpu": "CPU",
|
||||
"load": "Belastning",
|
||||
"wait": "Vent venligst",
|
||||
"load": "Load",
|
||||
"wait": "Please wait",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temp",
|
||||
"warn": "Advar",
|
||||
"uptime": "OP",
|
||||
"uptime": "UP",
|
||||
"total": "Total",
|
||||
"free": "Fri",
|
||||
"used": "Brugt",
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "t",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
"read": "Læst",
|
||||
"read": "Read",
|
||||
"write": "Skriv",
|
||||
"gpu": "GPU",
|
||||
"mem": "Ram",
|
||||
@@ -462,57 +470,57 @@
|
||||
"1-day": "Overvejende Solrigt",
|
||||
"1-night": "Overvejende Skyfrit",
|
||||
"2-day": "Delvist Overskyet",
|
||||
"2-night": "Delvist Overskyet",
|
||||
"2-night": "Partly Cloudy",
|
||||
"3-day": "Skyet",
|
||||
"3-night": "Skyet",
|
||||
"3-night": "Cloudy",
|
||||
"45-day": "Tåget",
|
||||
"45-night": "Tåget",
|
||||
"48-day": "Tåget",
|
||||
"48-night": "Tåget",
|
||||
"45-night": "Foggy",
|
||||
"48-day": "Foggy",
|
||||
"48-night": "Foggy",
|
||||
"51-day": "Let Støvregn",
|
||||
"51-night": "Let Støvregn",
|
||||
"51-night": "Light Drizzle",
|
||||
"53-day": "Støvregn",
|
||||
"53-night": "Støvregn",
|
||||
"53-night": "Drizzle",
|
||||
"55-day": "Kraftig Støvregn",
|
||||
"55-night": "Kraftig Støvregn",
|
||||
"55-night": "Heavy Drizzle",
|
||||
"56-day": "Let Frysende Støvregn",
|
||||
"56-night": "Let Frysende Støvregn",
|
||||
"56-night": "Light Freezing Drizzle",
|
||||
"57-day": "Frysende Støvregn",
|
||||
"57-night": "Frysende Støvregn",
|
||||
"57-night": "Freezing Drizzle",
|
||||
"61-day": "Let Regn",
|
||||
"61-night": "Let Regn",
|
||||
"61-night": "Light Rain",
|
||||
"63-day": "Regn",
|
||||
"63-night": "Regn",
|
||||
"63-night": "Rain",
|
||||
"65-day": "Kraftig Regn",
|
||||
"65-night": "Kraftig Regn",
|
||||
"65-night": "Heavy Rain",
|
||||
"66-day": "Frysende Regn",
|
||||
"66-night": "Frysende Regn",
|
||||
"67-day": "Frysende Regn",
|
||||
"67-night": "Frysende Regn",
|
||||
"66-night": "Freezing Rain",
|
||||
"67-day": "Freezing Rain",
|
||||
"67-night": "Freezing Rain",
|
||||
"71-day": "Let Sne",
|
||||
"71-night": "Let Sne",
|
||||
"71-night": "Light Snow",
|
||||
"73-day": "Sne",
|
||||
"73-night": "Sne",
|
||||
"73-night": "Snow",
|
||||
"75-day": "Kraftig Sne",
|
||||
"75-night": "Kraftig Sne",
|
||||
"75-night": "Heavy Snow",
|
||||
"77-day": "Snekorn",
|
||||
"77-night": "Snekorn",
|
||||
"77-night": "Snow Grains",
|
||||
"80-day": "Lette Byger",
|
||||
"80-night": "Lette Byger",
|
||||
"80-night": "Light Showers",
|
||||
"81-day": "Byger",
|
||||
"81-night": "Byger",
|
||||
"81-night": "Showers",
|
||||
"82-day": "Kraftige Byger",
|
||||
"82-night": "Kraftige Byger",
|
||||
"82-night": "Heavy Showers",
|
||||
"85-day": "Snebyger",
|
||||
"85-night": "Snebyger",
|
||||
"86-day": "Snebyger",
|
||||
"86-night": "Snebyger",
|
||||
"85-night": "Snow Showers",
|
||||
"86-day": "Snow Showers",
|
||||
"86-night": "Snow Showers",
|
||||
"95-day": "Tordenvejr",
|
||||
"95-night": "Tordenvejr",
|
||||
"95-night": "Thunderstorm",
|
||||
"96-day": "Tordenvejr Med Hagl",
|
||||
"96-night": "Tordenvejr Med Hagl",
|
||||
"99-day": "Tordenvejr Med Hagl",
|
||||
"99-night": "Tordenvejr Med Hagl"
|
||||
"96-night": "Thunderstorm With Hail",
|
||||
"99-day": "Thunderstorm With Hail",
|
||||
"99-night": "Thunderstorm With Hail"
|
||||
},
|
||||
"homebridge": {
|
||||
"available_update": "System",
|
||||
@@ -521,15 +529,15 @@
|
||||
"up_to_date": "Opdateret",
|
||||
"child_bridges": "Underbroer",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Op",
|
||||
"pending": "Afventer",
|
||||
"down": "Ned"
|
||||
"up": "Up",
|
||||
"pending": "Pending",
|
||||
"down": "Down"
|
||||
},
|
||||
"healthchecks": {
|
||||
"new": "Ny",
|
||||
"up": "Op",
|
||||
"up": "Up",
|
||||
"grace": "Henstandsperiode",
|
||||
"down": "Ned",
|
||||
"down": "Down",
|
||||
"paused": "Pause",
|
||||
"status": "Status",
|
||||
"last_ping": "Sidste Ping",
|
||||
@@ -541,35 +549,36 @@
|
||||
"containers_failed": "Fejlet"
|
||||
},
|
||||
"autobrr": {
|
||||
"approvedPushes": "Godkendt",
|
||||
"approvedPushes": "Approved",
|
||||
"rejectedPushes": "Afviste",
|
||||
"filters": "Filtre",
|
||||
"indexers": "Indeksører"
|
||||
"indexers": "Indexers"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "Kø",
|
||||
"downloads": "Queue",
|
||||
"videos": "Videoer",
|
||||
"channels": "Kanaler",
|
||||
"playlists": "Afspilningslister"
|
||||
},
|
||||
"truenas": {
|
||||
"load": "Systembelastning",
|
||||
"uptime": "Oppetid",
|
||||
"alerts": "Advarsler"
|
||||
"uptime": "Uptime",
|
||||
"alerts": "Alerts"
|
||||
},
|
||||
"pyload": {
|
||||
"speed": "Hastighed",
|
||||
"active": "Aktive",
|
||||
"queue": "Kø",
|
||||
"active": "Active",
|
||||
"queue": "Queue",
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "Offentlig IP",
|
||||
"region": "Område",
|
||||
"country": "Land"
|
||||
"country": "Land",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Kanaler",
|
||||
"channels": "Channels",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
@@ -582,8 +591,8 @@
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Bestået",
|
||||
"failed": "Fejlet",
|
||||
"unknown": "Ukendt"
|
||||
"failed": "Failed",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Indbakke",
|
||||
@@ -598,18 +607,18 @@
|
||||
"low_battery": "Lavt batteriniveau"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Vent venligst",
|
||||
"wait": "Please Wait",
|
||||
"no_devices": "Ingen Enhedsdata Modtaget"
|
||||
},
|
||||
"mikrotik": {
|
||||
"cpuLoad": "CPU Belastning",
|
||||
"memoryUsed": "Hukommelse Brugt",
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"numberOfLeases": "Leasinger"
|
||||
},
|
||||
"xteve": {
|
||||
"streams_all": "Alle Streams",
|
||||
"streams_active": "Aktive Streams",
|
||||
"streams_active": "Active Streams",
|
||||
"streams_xepg": "XEPG Kanaler"
|
||||
},
|
||||
"opendtu": {
|
||||
@@ -619,7 +628,7 @@
|
||||
"limit": "Begrænsning"
|
||||
},
|
||||
"opnsense": {
|
||||
"cpu": "CPU Belastning",
|
||||
"cpu": "CPU Load",
|
||||
"memory": "Aktiv Hukommelse",
|
||||
"wanUpload": "WAN Upload",
|
||||
"wanDownload": "WAN Download"
|
||||
@@ -644,8 +653,8 @@
|
||||
"load": "Belastning Gns",
|
||||
"memory": "Hukommelse Forbrug",
|
||||
"wanStatus": "WAN Status",
|
||||
"up": "Op",
|
||||
"down": "Ned",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"temp": "Temp",
|
||||
"disk": "Disk Forbrug",
|
||||
"wanIP": "WAN IP"
|
||||
@@ -657,51 +666,55 @@
|
||||
"memory_usage": "Hukommelse"
|
||||
},
|
||||
"immich": {
|
||||
"users": "Brugere",
|
||||
"users": "Users",
|
||||
"photos": "Billeder",
|
||||
"videos": "Videoer",
|
||||
"videos": "Videos",
|
||||
"storage": "Lager"
|
||||
},
|
||||
"uptimekuma": {
|
||||
"up": "Sider Oppe",
|
||||
"down": "Sider Nede",
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"incident": "Hændelse",
|
||||
"m": "m"
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Serier",
|
||||
"series": "Series",
|
||||
"archives": "Arkiver",
|
||||
"chapters": "Kapitler",
|
||||
"categories": "Kategorier"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Biblioteker",
|
||||
"series": "Serier",
|
||||
"books": "Bøger"
|
||||
"series": "Series",
|
||||
"books": "Books"
|
||||
},
|
||||
"diskstation": {
|
||||
"days": "Dage",
|
||||
"uptime": "Oppetid",
|
||||
"volumeAvailable": "Tilgængelig"
|
||||
"days": "Days",
|
||||
"uptime": "Uptime",
|
||||
"volumeAvailable": "Available"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "Serier",
|
||||
"series": "Series",
|
||||
"issues": "Problemer",
|
||||
"wanted": "Ønsket"
|
||||
"wanted": "Wanted"
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Albums",
|
||||
"photos": "Billeder",
|
||||
"videos": "Videoer",
|
||||
"photos": "Photos",
|
||||
"videos": "Videos",
|
||||
"people": "Mennesker"
|
||||
},
|
||||
"fileflows": {
|
||||
"queue": "Kø",
|
||||
"processing": "Behandler",
|
||||
"processed": "Behandlet",
|
||||
"queue": "Queue",
|
||||
"processing": "Processing",
|
||||
"processed": "Processed",
|
||||
"time": "Tid"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Kontrolpanel",
|
||||
"datasources": "Data Kilder",
|
||||
@@ -721,7 +734,7 @@
|
||||
"size": "Størrelse",
|
||||
"lastrun": "Sidst Kørt",
|
||||
"nextrun": "Næste Kørsel",
|
||||
"failed": "Fejlet"
|
||||
"failed": "Failed"
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Aktive Arbejdere",
|
||||
@@ -738,20 +751,20 @@
|
||||
"targets_total": "Totale Mål"
|
||||
},
|
||||
"gatus": {
|
||||
"up": "Sider Oppe",
|
||||
"down": "Sider Nede",
|
||||
"uptime": "Oppetid"
|
||||
"up": "Sites Up",
|
||||
"down": "Sites Down",
|
||||
"uptime": "Uptime"
|
||||
},
|
||||
"ghostfolio": {
|
||||
"gross_percent_today": "I dag",
|
||||
"gross_percent_today": "Today",
|
||||
"gross_percent_1y": "Et År",
|
||||
"gross_percent_max": "Altid"
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"books": "Bøger",
|
||||
"books": "Books",
|
||||
"podcastsDuration": "Varighed",
|
||||
"booksDuration": "Varighed"
|
||||
"booksDuration": "Duration"
|
||||
},
|
||||
"homeassistant": {
|
||||
"people_home": "Personer Hjemme",
|
||||
@@ -760,23 +773,23 @@
|
||||
},
|
||||
"whatsupdocker": {
|
||||
"monitoring": "Overvåger",
|
||||
"updates": "Opdateringer"
|
||||
"updates": "Updates"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Bøger",
|
||||
"books": "Books",
|
||||
"authors": "Forfattere",
|
||||
"categories": "Kategorier",
|
||||
"series": "Serier"
|
||||
"categories": "Categories",
|
||||
"series": "Series"
|
||||
},
|
||||
"jdownloader": {
|
||||
"downloadCount": "Kø",
|
||||
"downloadBytesRemaining": "Manglende",
|
||||
"downloadTotalBytes": "Størrelse",
|
||||
"downloadSpeed": "Hastighed"
|
||||
"downloadCount": "Queue",
|
||||
"downloadBytesRemaining": "Remaining",
|
||||
"downloadTotalBytes": "Size",
|
||||
"downloadSpeed": "Speed"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Serier",
|
||||
"totalFiles": "Filer"
|
||||
"seriesCount": "Series",
|
||||
"totalFiles": "Files"
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Resultat",
|
||||
@@ -784,12 +797,12 @@
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Lykkedes",
|
||||
"notStarted": "Ikke Startet",
|
||||
"failed": "Fejlet",
|
||||
"failed": "Failed",
|
||||
"canceled": "Annulleret",
|
||||
"inProgress": "I Gang",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "Mine PRs",
|
||||
"approved": "Godkendt"
|
||||
"approved": "Approved"
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Status",
|
||||
@@ -798,7 +811,7 @@
|
||||
"name": "Navn",
|
||||
"map": "Kort",
|
||||
"currentPlayers": "Nuværende Spillere",
|
||||
"players": "Afspillere",
|
||||
"players": "Players",
|
||||
"maxPlayers": "Maks spillere",
|
||||
"bots": "Bots",
|
||||
"ping": "Ping"
|
||||
@@ -811,46 +824,47 @@
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "Opskrifter",
|
||||
"users": "Brugere",
|
||||
"categories": "Kategorier",
|
||||
"users": "Users",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloader",
|
||||
"total": "Total",
|
||||
"running": "Kører",
|
||||
"stopped": "Stoppede",
|
||||
"passed": "Bestået",
|
||||
"failed": "Fejlet"
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"passed": "Passed",
|
||||
"failed": "Failed"
|
||||
},
|
||||
"openwrt": {
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"cpuLoad": "CPU Load Avg (5m)",
|
||||
"up": "Op",
|
||||
"down": "Ned",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"bytesTx": "Transmitted",
|
||||
"bytesRx": "Modtaget"
|
||||
"bytesRx": "Received"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Status",
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"lastDown": "Seneste Nedetid",
|
||||
"downDuration": "Nedetid Varighed",
|
||||
"sitesUp": "Sider Oppe",
|
||||
"sitesDown": "Sider Nede",
|
||||
"paused": "Pause",
|
||||
"sitesUp": "Sites Up",
|
||||
"sitesDown": "Sites Down",
|
||||
"paused": "Paused",
|
||||
"notyetchecked": "Endnu Ikke Kontrolleret",
|
||||
"up": "Op",
|
||||
"up": "Up",
|
||||
"seemsdown": "Synes Ned",
|
||||
"down": "Ned",
|
||||
"unknown": "Ukendt"
|
||||
"down": "Down",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "I biografen",
|
||||
"physicalRelease": "Fysisk udgivelse",
|
||||
"digitalRelease": "Digitale udgivelser",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "No events found",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforme",
|
||||
@@ -861,10 +875,10 @@
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domæner",
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Lager"
|
||||
"storage": "Storage"
|
||||
},
|
||||
"netdata": {
|
||||
"warnings": "Advarsler",
|
||||
@@ -873,13 +887,14 @@
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"photos": "Billeder",
|
||||
"photos": "Photos",
|
||||
"species": "Species"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"issues": "Problemer",
|
||||
"pulls": "Pull Requests"
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -893,13 +908,13 @@
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"movies": "Film",
|
||||
"movies": "Movies",
|
||||
"tags": "Tags",
|
||||
"oCount": "O Count"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Brugere",
|
||||
"recipes": "Opskrifter",
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
"homebox": {
|
||||
@@ -907,17 +922,17 @@
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Brugere",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Advarsler",
|
||||
"alerts": "Alerts",
|
||||
"bans": "Bans"
|
||||
},
|
||||
"wgeasy": {
|
||||
"connected": "Connected",
|
||||
"enabled": "Aktiveret",
|
||||
"disabled": "Deaktiveret",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
@@ -940,7 +955,7 @@
|
||||
},
|
||||
"frigate": {
|
||||
"cameras": "Cameras",
|
||||
"uptime": "Oppetid",
|
||||
"uptime": "Uptime",
|
||||
"version": "Version"
|
||||
},
|
||||
"linkwarden": {
|
||||
@@ -971,21 +986,24 @@
|
||||
"tasksInProgress": "Tasks In Progress"
|
||||
},
|
||||
"headscale": {
|
||||
"name": "Navn",
|
||||
"address": "Adresse",
|
||||
"last_seen": "Sidst Set",
|
||||
"name": "Name",
|
||||
"address": "Address",
|
||||
"last_seen": "Last Seen",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Offline"
|
||||
},
|
||||
"beszel": {
|
||||
"name": "Navn",
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Op",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Opdateret",
|
||||
"updated": "Updated",
|
||||
"cpu": "CPU",
|
||||
"memory": "RAM",
|
||||
"memory": "MEM",
|
||||
"disk": "Disk",
|
||||
"network": "NET"
|
||||
},
|
||||
@@ -993,10 +1011,10 @@
|
||||
"apps": "Apps",
|
||||
"synced": "Synced",
|
||||
"outOfSync": "Out Of Sync",
|
||||
"healthy": "Sund",
|
||||
"healthy": "Healthy",
|
||||
"degraded": "Degraded",
|
||||
"progressing": "Progressing",
|
||||
"missing": "Mangler",
|
||||
"missing": "Missing",
|
||||
"suspended": "Suspended"
|
||||
},
|
||||
"spoolman": {
|
||||
@@ -1004,8 +1022,66 @@
|
||||
},
|
||||
"gitlab": {
|
||||
"groups": "Groups",
|
||||
"issues": "Problemer",
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge": "Battery Charge",
|
||||
"timeleft": "Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
"load": "Last",
|
||||
"temp": "TEMP",
|
||||
"max": "Max",
|
||||
"uptime": "UP"
|
||||
"uptime": "BETRIEBSZEIT"
|
||||
},
|
||||
"unifi": {
|
||||
"users": "Benutzer",
|
||||
@@ -61,7 +61,7 @@
|
||||
"wlan_devices": "WLAN-Geräte",
|
||||
"lan_users": "LAN-Benutzer",
|
||||
"wlan_users": "WLAN-Benutzer",
|
||||
"up": "UP",
|
||||
"up": "Gesendet",
|
||||
"down": "EMPFANGEN",
|
||||
"wait": "Bitte warten",
|
||||
"empty_data": "Subsystem-Status unbekannt"
|
||||
@@ -85,16 +85,16 @@
|
||||
"ping": {
|
||||
"error": "Fehler",
|
||||
"ping": "Ping",
|
||||
"down": "Empfangen",
|
||||
"up": "Senden",
|
||||
"down": "Offline",
|
||||
"up": "Online",
|
||||
"not_available": "Nicht verfügbar"
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP-Status",
|
||||
"error": "Fehler",
|
||||
"response": "Antwort",
|
||||
"down": "Empfangen",
|
||||
"up": "Senden",
|
||||
"down": "Online",
|
||||
"up": "Offline",
|
||||
"not_available": "Nicht verfügbar"
|
||||
},
|
||||
"emby": {
|
||||
@@ -111,7 +111,7 @@
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Gesamt",
|
||||
"total": "Total",
|
||||
"unknown": "Unbekannt"
|
||||
},
|
||||
"evcc": {
|
||||
@@ -144,11 +144,13 @@
|
||||
"uptime": "Betriebszeit",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"down": "Empfangen",
|
||||
"up": "Senden",
|
||||
"down": "Download",
|
||||
"up": "Upload",
|
||||
"received": "Empfangen",
|
||||
"sent": "Gesendet",
|
||||
"externalIPAddress": "Externe IP"
|
||||
"externalIPAddress": "Externe IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Präfix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -163,10 +165,10 @@
|
||||
"shows": "Serien",
|
||||
"recordings": "Aufnahmen",
|
||||
"scheduled": "Geplant",
|
||||
"passes": "Pässe"
|
||||
"passes": "Durchläufe"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Wiedergabe",
|
||||
"playing": "Spielt",
|
||||
"transcoding": "Transcodiert",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "Keine aktiven Streams",
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Verbundene APs",
|
||||
"activeUser": "Aktive Geräte",
|
||||
"alerts": "Warnungen",
|
||||
"connectedGateway": "Verbundene Gateways",
|
||||
"connectedGateways": "Verbundene Gateways",
|
||||
"connectedSwitches": "Verbundene Switche"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -191,7 +193,7 @@
|
||||
"tv": "TV-Serien"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "Datenrate",
|
||||
"rate": "Rate",
|
||||
"queue": "Warteschlange",
|
||||
"timeleft": "Verbleibende Zeit"
|
||||
},
|
||||
@@ -271,18 +273,18 @@
|
||||
"available": "Verfügbar"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Ausstehend",
|
||||
"pending": "Wartend",
|
||||
"approved": "Genehmigt",
|
||||
"available": "Verfügbar"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Ausstehend",
|
||||
"pending": "Wartend",
|
||||
"processing": "Wird verarbeitet",
|
||||
"approved": "Genehmigt",
|
||||
"available": "Verfügbar"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Gesamt",
|
||||
"total": "Total",
|
||||
"connected": "Verbunden",
|
||||
"new_devices": "Neue Geräte",
|
||||
"down_alerts": "Down-Warnungen"
|
||||
@@ -307,7 +309,7 @@
|
||||
"portainer": {
|
||||
"running": "Wird ausgeführt",
|
||||
"stopped": "Gestoppt",
|
||||
"total": "Gesamt"
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Heruntergeladen",
|
||||
@@ -350,13 +352,19 @@
|
||||
"queue": "Warteschlange",
|
||||
"processed": "Verarbeitet",
|
||||
"errored": "Fehlgeschlagen",
|
||||
"saved": "Gespeichert"
|
||||
"saved": "Eingespart"
|
||||
},
|
||||
"traefik": {
|
||||
"routers": "Router",
|
||||
"services": "Dienste",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notizen",
|
||||
"dbSize": "Datenbankgröße",
|
||||
"unknown": "Unbekannt"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Keine aktiven Streams",
|
||||
"please_wait": "Bitte warten"
|
||||
@@ -364,7 +372,7 @@
|
||||
"npm": {
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"total": "Gesamt"
|
||||
"total": "Total"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Konfiguriere eine oder mehrere Kryptowährungen zur Beobachtung",
|
||||
@@ -375,7 +383,7 @@
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Programme",
|
||||
"clients": "Benutzer",
|
||||
"clients": "Endgeräte",
|
||||
"messages": "Nachrichten"
|
||||
},
|
||||
"prowlarr": {
|
||||
@@ -393,7 +401,7 @@
|
||||
"numActiveSessions": "Sitzungen",
|
||||
"numConnections": "Verbindungen",
|
||||
"dataRelayed": "Weitergeleitet",
|
||||
"transferRate": "Datenrate"
|
||||
"transferRate": "Rate"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Benutzer",
|
||||
@@ -431,21 +439,21 @@
|
||||
"cpu": "CPU",
|
||||
"load": "Last",
|
||||
"wait": "Bitte warten",
|
||||
"temp": "TEMP",
|
||||
"temp": "Temp",
|
||||
"_temp": "Temperatur",
|
||||
"warn": "Warnung",
|
||||
"uptime": "UP",
|
||||
"total": "Gesamt",
|
||||
"uptime": "Betriebszeit",
|
||||
"total": "Total",
|
||||
"free": "Frei",
|
||||
"used": "In Benutzung",
|
||||
"used": "Benutzt",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Krit",
|
||||
"read": "Gelesen",
|
||||
"read": "Lesen",
|
||||
"write": "Schreiben",
|
||||
"gpu": "GPU",
|
||||
"mem": "RAM",
|
||||
"swap": "Swap"
|
||||
"swap": "Auslagerung"
|
||||
},
|
||||
"quicklaunch": {
|
||||
"bookmark": "Lesezeichen",
|
||||
@@ -466,37 +474,37 @@
|
||||
"3-day": "Bewölkt",
|
||||
"3-night": "Bewölkt",
|
||||
"45-day": "neblig",
|
||||
"45-night": "neblig",
|
||||
"48-day": "neblig",
|
||||
"48-night": "neblig",
|
||||
"45-night": "Nebel",
|
||||
"48-day": "Nebel",
|
||||
"48-night": "Nebel",
|
||||
"51-day": "leichter Nieselregen",
|
||||
"51-night": "leichter Nieselregen",
|
||||
"51-night": "Leichter Nieselregen",
|
||||
"53-day": "Nieselregen",
|
||||
"53-night": "Nieselregen",
|
||||
"55-day": "starker Nieselregen",
|
||||
"55-night": "starker Nieselregen",
|
||||
"55-night": "Starker Nieselregen",
|
||||
"56-day": "leichter gefrierender Nieselregen",
|
||||
"56-night": "leichter gefrierender Nieselregen",
|
||||
"56-night": "Leicht gefrierender Nieselregen",
|
||||
"57-day": "gefrierender Nieselregen",
|
||||
"57-night": "gefrierender Nieselregen",
|
||||
"57-night": "Gefrierender Nieselregen",
|
||||
"61-day": "leichter Regen",
|
||||
"61-night": "leichter Regen",
|
||||
"61-night": "Leichter Regen",
|
||||
"63-day": "Regen",
|
||||
"63-night": "Regen",
|
||||
"65-day": "starker Regen",
|
||||
"65-night": "starker Regen",
|
||||
"65-night": "Starker Regen",
|
||||
"66-day": "Gefrierender Regen",
|
||||
"66-night": "Gefrierender Regen",
|
||||
"67-day": "Gefrierender Regen",
|
||||
"67-night": "Gefrierender Regen",
|
||||
"71-day": "Leichter Schneefall",
|
||||
"71-night": "Leichter Schneefall",
|
||||
"71-night": "Leichter Schnee",
|
||||
"73-day": "Schnee",
|
||||
"73-night": "Schnee",
|
||||
"75-day": "Starker Schneefall",
|
||||
"75-night": "Starker Schneefall",
|
||||
"75-night": "Starker Schnee",
|
||||
"77-day": "Schneegriesel",
|
||||
"77-night": "Schneegriesel",
|
||||
"77-night": "Schneekörner",
|
||||
"80-day": "Leichte Schauer",
|
||||
"80-night": "Leichte Schauer",
|
||||
"81-day": "Schauer",
|
||||
@@ -508,11 +516,11 @@
|
||||
"86-day": "Schneeschauer",
|
||||
"86-night": "Schneeschauer",
|
||||
"95-day": "Gewitter",
|
||||
"95-night": "Gewitter",
|
||||
"95-night": "Sturm",
|
||||
"96-day": "Gewitter mit Hagel",
|
||||
"96-night": "Gewitter mit Hagel",
|
||||
"99-day": "Gewitter mit Hagel",
|
||||
"99-night": "Gewitter mit Hagel"
|
||||
"96-night": "Sturm mit Hagel",
|
||||
"99-day": "Sturm mit Hagel",
|
||||
"99-night": "Sturm mit Hagel"
|
||||
},
|
||||
"homebridge": {
|
||||
"available_update": "System",
|
||||
@@ -521,15 +529,15 @@
|
||||
"up_to_date": "Aktuell",
|
||||
"child_bridges": "Unter-Bridges",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Senden",
|
||||
"pending": "Ausstehend",
|
||||
"down": "Empfangen"
|
||||
"up": "Online",
|
||||
"pending": "Wartend",
|
||||
"down": "Offline"
|
||||
},
|
||||
"healthchecks": {
|
||||
"new": "Neu",
|
||||
"up": "Senden",
|
||||
"up": "Online",
|
||||
"grace": "In Karenzzeit",
|
||||
"down": "Empfangen",
|
||||
"down": "Offline",
|
||||
"paused": "Pausiert",
|
||||
"status": "Status",
|
||||
"last_ping": "Letzter Ping",
|
||||
@@ -544,7 +552,7 @@
|
||||
"approvedPushes": "Genehmigt",
|
||||
"rejectedPushes": "Abgelehnt",
|
||||
"filters": "Filter",
|
||||
"indexers": "Indexer"
|
||||
"indexers": "Indexierer"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "Warteschlange",
|
||||
@@ -555,18 +563,19 @@
|
||||
"truenas": {
|
||||
"load": "Systemlast",
|
||||
"uptime": "Betriebszeit",
|
||||
"alerts": "Warnungen"
|
||||
"alerts": "Alarme"
|
||||
},
|
||||
"pyload": {
|
||||
"speed": "Datenrate",
|
||||
"active": "Aktiv",
|
||||
"queue": "Warteschlange",
|
||||
"total": "Gesamt"
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "Öffentliche IP",
|
||||
"region": "Region",
|
||||
"country": "Land"
|
||||
"country": "Land",
|
||||
"port_forwarded": "Port weitergeleitet"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Kanäle",
|
||||
@@ -582,12 +591,12 @@
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Bestanden",
|
||||
"failed": "Fehlgeschlagen",
|
||||
"failed": "Fehlerhaft",
|
||||
"unknown": "Unbekannt"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Posteingang",
|
||||
"total": "Gesamt"
|
||||
"total": "Total"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Akkuladung",
|
||||
@@ -619,7 +628,7 @@
|
||||
"limit": "Grenze"
|
||||
},
|
||||
"opnsense": {
|
||||
"cpu": "CPU-Auslastung",
|
||||
"cpu": "CPU-Last",
|
||||
"memory": "Aktiver RAM",
|
||||
"wanUpload": "WAN-Upload",
|
||||
"wanDownload": "WAN-Download"
|
||||
@@ -644,9 +653,9 @@
|
||||
"load": "Durchschnittliche Last",
|
||||
"memory": "Speichernutzung",
|
||||
"wanStatus": "WAN-Status",
|
||||
"up": "Senden",
|
||||
"down": "Empfangen",
|
||||
"temp": "Temperatur",
|
||||
"up": "Online",
|
||||
"down": "Offline",
|
||||
"temp": "Temp",
|
||||
"disk": "Datenträgernutzung",
|
||||
"wanIP": "WAN-IP"
|
||||
},
|
||||
@@ -663,11 +672,11 @@
|
||||
"storage": "Speicher"
|
||||
},
|
||||
"uptimekuma": {
|
||||
"up": "Seiten verfügbar",
|
||||
"down": "Seiten nicht verfügbar",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"uptime": "Betriebszeit",
|
||||
"incident": "Vorfall",
|
||||
"m": "min"
|
||||
"m": "m"
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Serien",
|
||||
@@ -699,9 +708,13 @@
|
||||
"fileflows": {
|
||||
"queue": "Warteschlange",
|
||||
"processing": "Wird verarbeitet",
|
||||
"processed": "Verarbeitet",
|
||||
"processed": "Wird verarbeitet",
|
||||
"time": "Zeit"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Reinvermögen",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Datenquellen",
|
||||
@@ -721,7 +734,7 @@
|
||||
"size": "Größe",
|
||||
"lastrun": "Letzter Durchlauf",
|
||||
"nextrun": "Nächster Durchlauf",
|
||||
"failed": "Fehlgeschlagen"
|
||||
"failed": "Fehlerhaft"
|
||||
},
|
||||
"unmanic": {
|
||||
"active_workers": "Aktive Worker",
|
||||
@@ -738,8 +751,8 @@
|
||||
"targets_total": "Alle Ziele"
|
||||
},
|
||||
"gatus": {
|
||||
"up": "Seiten verfügbar",
|
||||
"down": "Seiten nicht verfügbar",
|
||||
"up": "Seiten online",
|
||||
"down": "Seiten offline",
|
||||
"uptime": "Betriebszeit"
|
||||
},
|
||||
"ghostfolio": {
|
||||
@@ -772,7 +785,7 @@
|
||||
"downloadCount": "Warteschlange",
|
||||
"downloadBytesRemaining": "Verbleibend",
|
||||
"downloadTotalBytes": "Größe",
|
||||
"downloadSpeed": "Datenrate"
|
||||
"downloadSpeed": "Geschwindigkeit"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Serien",
|
||||
@@ -784,7 +797,7 @@
|
||||
"buildId": "Build-ID",
|
||||
"succeeded": "Erfolgreich",
|
||||
"notStarted": "Nicht gestartet",
|
||||
"failed": "Fehlgeschlagen",
|
||||
"failed": "Fehlerhaft",
|
||||
"canceled": "Abgebrochen",
|
||||
"inProgress": "In Bearbeitung",
|
||||
"totalPrs": "PRs gesamt",
|
||||
@@ -817,17 +830,17 @@
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Wird heruntergeladen",
|
||||
"total": "Gesamt",
|
||||
"total": "Total",
|
||||
"running": "Wird ausgeführt",
|
||||
"stopped": "Gestoppt",
|
||||
"passed": "Bestanden",
|
||||
"failed": "Fehlgeschlagen"
|
||||
"passed": "Erfolgreich",
|
||||
"failed": "Fehlerhaft"
|
||||
},
|
||||
"openwrt": {
|
||||
"uptime": "Betriebszeit",
|
||||
"cpuLoad": "CPU-Last (5 min-Durchschnitt)",
|
||||
"up": "Senden",
|
||||
"down": "Empfangen",
|
||||
"up": "Online",
|
||||
"down": "Offline",
|
||||
"bytesTx": "Übertragen",
|
||||
"bytesRx": "Empfangen"
|
||||
},
|
||||
@@ -836,13 +849,13 @@
|
||||
"uptime": "Betriebszeit",
|
||||
"lastDown": "Letzter Ausfall",
|
||||
"downDuration": "Ausfalldauer",
|
||||
"sitesUp": "Seiten verfügbar",
|
||||
"sitesDown": "Seiten nicht verfügbar",
|
||||
"sitesUp": "Seiten online",
|
||||
"sitesDown": "Seiten offline",
|
||||
"paused": "Pausiert",
|
||||
"notyetchecked": "Noch nicht geprüft",
|
||||
"up": "Senden",
|
||||
"up": "Online",
|
||||
"seemsdown": "Scheint nicht verfügbar",
|
||||
"down": "Empfangen",
|
||||
"down": "Unbekannt",
|
||||
"unknown": "Unbekannt"
|
||||
},
|
||||
"calendar": {
|
||||
@@ -850,7 +863,8 @@
|
||||
"physicalRelease": "Physische Version",
|
||||
"digitalRelease": "Digitale Version",
|
||||
"noEventsToday": "Heute keine Ereignisse!",
|
||||
"noEventsFound": "Keine Termine gefunden"
|
||||
"noEventsFound": "Keine Termine gefunden",
|
||||
"errorWhenLoadingData": "Fehler beim Laden der Kalenderdaten"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Plattformen",
|
||||
@@ -861,7 +875,7 @@
|
||||
"totalfilesize": "Gesamtgröße"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domänen",
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Postfächer",
|
||||
"mails": "E-Mails",
|
||||
"storage": "Speicher"
|
||||
@@ -879,7 +893,8 @@
|
||||
"gitea": {
|
||||
"notifications": "Benachrichtigungen",
|
||||
"issues": "Probleme",
|
||||
"pulls": "Pull-Requests"
|
||||
"pulls": "Pull-Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Szenen",
|
||||
@@ -894,7 +909,7 @@
|
||||
"performers": "Darsteller",
|
||||
"studios": "Studios",
|
||||
"movies": "Filme",
|
||||
"tags": "Schlagwörter",
|
||||
"tags": "Tags",
|
||||
"oCount": "O-Anzahl"
|
||||
},
|
||||
"tandoor": {
|
||||
@@ -911,14 +926,14 @@
|
||||
"totalValue": "Gesamtwert"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Warnungen",
|
||||
"alerts": "Alarme",
|
||||
"bans": "Banns"
|
||||
},
|
||||
"wgeasy": {
|
||||
"connected": "Verbunden",
|
||||
"enabled": "Aktiviert",
|
||||
"disabled": "Deaktiviert",
|
||||
"total": "Gesamt"
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
"proxied": "Proxied",
|
||||
@@ -946,11 +961,11 @@
|
||||
"linkwarden": {
|
||||
"links": "Links",
|
||||
"collections": "Sammlungen",
|
||||
"tags": "Schlagwörter"
|
||||
"tags": "Tags"
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Nicht klassifiziert",
|
||||
"information": "Informationen",
|
||||
"information": "Information",
|
||||
"warning": "Warnung",
|
||||
"average": "Durchschnitt",
|
||||
"high": "Hoch",
|
||||
@@ -981,9 +996,12 @@
|
||||
"beszel": {
|
||||
"name": "Name",
|
||||
"systems": "Systeme",
|
||||
"up": "Senden",
|
||||
"up": "Offline",
|
||||
"down": "Offline",
|
||||
"paused": "Pausiert",
|
||||
"pending": "Wartend",
|
||||
"status": "Status",
|
||||
"updated": "Aktualisiert",
|
||||
"updated": "Aktuell",
|
||||
"cpu": "CPU",
|
||||
"memory": "RAM",
|
||||
"disk": "Festplatte",
|
||||
@@ -993,19 +1011,77 @@
|
||||
"apps": "Anwendungen",
|
||||
"synced": "Synchronisiert",
|
||||
"outOfSync": "Nicht mehr synchronisiert",
|
||||
"healthy": "Fehlerfrei",
|
||||
"healthy": "Gesund",
|
||||
"degraded": "Beeinträchtigt",
|
||||
"progressing": "Fortschritt",
|
||||
"missing": "Fehlend",
|
||||
"suspended": "Unterbrochen"
|
||||
},
|
||||
"spoolman": {
|
||||
"loading": "Wird geladen"
|
||||
"loading": "Lädt"
|
||||
},
|
||||
"gitlab": {
|
||||
"groups": "Gruppen",
|
||||
"issues": "Probleme",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projekte"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Last",
|
||||
"bcharge": "Batterieladung",
|
||||
"timeleft": "Verbleibende Zeit"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Lesezeichen",
|
||||
"favorites": "Favoriten",
|
||||
"archived": "Archiviert",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Listen",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Netzwerk",
|
||||
"connected": "Verbunden",
|
||||
"disconnected": "Getrennt",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Verfügbar",
|
||||
"update_no": "Aktuell",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Dateien"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Filme",
|
||||
"episodes": "Episoden",
|
||||
"other": "Andere"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Dienstprobleme",
|
||||
"hostErrors": "Hostprobleme"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Gesamt",
|
||||
"running": "Aktiv",
|
||||
"stopped": "Angehalten",
|
||||
"down": "Inaktiv",
|
||||
"unhealthy": "Fehlerhaft",
|
||||
"unknown": "Unbekannt",
|
||||
"servers": "Server",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Container"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Verfügbar",
|
||||
"used": "Benutzt",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Abonnements",
|
||||
"thisMonthlyCost": "Dieser Monat",
|
||||
"nextMonthlyCost": "Nächster Monat",
|
||||
"previousMonthlyCost": "Vorh. Monat",
|
||||
"nextRenewingSubscription": "Nächste Zahlung"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -148,7 +148,9 @@
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Connected APs",
|
||||
"activeUser": "Active devices",
|
||||
"alerts": "Alerts",
|
||||
"connectedGateway": "Connected gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Connected switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -357,6 +359,12 @@
|
||||
"services": "Services",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Please Wait"
|
||||
@@ -566,7 +574,8 @@
|
||||
"gluetun": {
|
||||
"public_ip": "Public IP",
|
||||
"region": "Region",
|
||||
"country": "Country"
|
||||
"country": "Country",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
@@ -702,6 +711,10 @@
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
@@ -850,7 +863,8 @@
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "No events found",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
@@ -877,9 +891,10 @@
|
||||
"species": "Species"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"notifications": "Notifications",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -982,6 +997,9 @@
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Updated",
|
||||
"cpu": "CPU",
|
||||
@@ -1007,5 +1025,63 @@
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge":"Battery Charge",
|
||||
"timeleft":"Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,14 +63,14 @@
|
||||
"wlan_users": "WLAN-Uzantoj",
|
||||
"up": "UP",
|
||||
"down": "DOWN",
|
||||
"wait": "Bonvolu atendi",
|
||||
"wait": "Please wait",
|
||||
"empty_data": "Subsistemostatuso nekonata"
|
||||
},
|
||||
"docker": {
|
||||
"rx": "RX",
|
||||
"tx": "TX",
|
||||
"mem": "MEM",
|
||||
"cpu": "Ĉefprocesoro",
|
||||
"cpu": "CPU",
|
||||
"running": "Rulata",
|
||||
"offline": "Malkonekta",
|
||||
"error": "Eraro",
|
||||
@@ -83,7 +83,7 @@
|
||||
"partial": "Parta"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Eraro",
|
||||
"error": "Error",
|
||||
"ping": "Sondaĵo",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
@@ -91,7 +91,7 @@
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP status",
|
||||
"error": "Eraro",
|
||||
"error": "Error",
|
||||
"response": "Response",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
@@ -108,11 +108,11 @@
|
||||
"songs": "Kantoj"
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Malkonekta",
|
||||
"offline_alt": "Malkonekta",
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Totalo",
|
||||
"unknown": "Nekonata"
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"evcc": {
|
||||
"pv_power": "Production",
|
||||
@@ -133,7 +133,7 @@
|
||||
"unread": "Unread"
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "Stato",
|
||||
"connectionStatus": "Status",
|
||||
"connectionStatusUnconfigured": "Unconfigured",
|
||||
"connectionStatusConnecting": "Connecting",
|
||||
"connectionStatusAuthenticating": "Authenticating",
|
||||
@@ -148,7 +148,9 @@
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -166,9 +168,9 @@
|
||||
"passes": "Passes"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Ludante",
|
||||
"transcoding": "Transkodigo",
|
||||
"bitrate": "Bitrapido",
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "No Active Streams",
|
||||
"plex_connection_error": "Check Plex Connection"
|
||||
},
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Connected APs",
|
||||
"activeUser": "Active devices",
|
||||
"alerts": "Alerts",
|
||||
"connectedGateway": "Connected gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Connected switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -187,7 +189,7 @@
|
||||
"plex": {
|
||||
"streams": "Active Streams",
|
||||
"albums": "Albums",
|
||||
"movies": "Filmoj",
|
||||
"movies": "Movies",
|
||||
"tv": "Televidprogramoj"
|
||||
},
|
||||
"sabnzbd": {
|
||||
@@ -197,18 +199,18 @@
|
||||
},
|
||||
"rutorrent": {
|
||||
"active": "Active",
|
||||
"upload": "Alŝuti",
|
||||
"download": "Elŝuti"
|
||||
"upload": "Upload",
|
||||
"download": "Download"
|
||||
},
|
||||
"transmission": {
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti",
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti",
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
@@ -221,8 +223,8 @@
|
||||
"invalid": "Invalid"
|
||||
},
|
||||
"deluge": {
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti",
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
@@ -231,25 +233,25 @@
|
||||
"cachemissbytes": "Cache Miss Bytes"
|
||||
},
|
||||
"downloadstation": {
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti",
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"series": "Serioj",
|
||||
"series": "Series",
|
||||
"queue": "Queue",
|
||||
"unknown": "Nekonata"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Wanted",
|
||||
"missing": "Missing",
|
||||
"queued": "Queued",
|
||||
"movies": "Filmoj",
|
||||
"movies": "Movies",
|
||||
"queue": "Queue",
|
||||
"unknown": "Nekonata"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Wanted",
|
||||
@@ -272,17 +274,17 @@
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Pending",
|
||||
"approved": "Aprobita",
|
||||
"available": "Havebla"
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Pending",
|
||||
"processing": "Processing",
|
||||
"approved": "Aprobita",
|
||||
"available": "Havebla"
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Totalo",
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
@@ -300,14 +302,14 @@
|
||||
"latency": "Latency"
|
||||
},
|
||||
"speedtest": {
|
||||
"upload": "Alŝuti",
|
||||
"download": "Elŝuti",
|
||||
"ping": "Sondaĵo"
|
||||
"upload": "Upload",
|
||||
"download": "Download",
|
||||
"ping": "Ping"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Rulata",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"total": "Totalo"
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Downloaded",
|
||||
@@ -357,6 +359,12 @@
|
||||
"services": "Servoj",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Please Wait"
|
||||
@@ -364,7 +372,7 @@
|
||||
"npm": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Totalo"
|
||||
"total": "Total"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Configure one or more crypto currencies to track",
|
||||
@@ -375,7 +383,7 @@
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Applications",
|
||||
"clients": "Klientoj",
|
||||
"clients": "Clients",
|
||||
"messages": "Mesaĝoj"
|
||||
},
|
||||
"prowlarr": {
|
||||
@@ -396,48 +404,48 @@
|
||||
"transferRate": "Rate"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Uzantoj",
|
||||
"user_count": "Users",
|
||||
"status_count": "Afiŝoj",
|
||||
"domain_count": "Domains"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"series": "Serioj"
|
||||
"series": "Series"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "Players",
|
||||
"version": "Version",
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"up": "Online",
|
||||
"down": "Malkonekta"
|
||||
"down": "Offline"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Read",
|
||||
"unread": "Unread"
|
||||
},
|
||||
"authentik": {
|
||||
"users": "Uzantoj",
|
||||
"users": "Users",
|
||||
"loginsLast24H": "Logins (24h)",
|
||||
"failedLoginsLast24H": "Failed Logins (24h)"
|
||||
},
|
||||
"proxmox": {
|
||||
"mem": "MEM",
|
||||
"cpu": "Ĉefprocesoro",
|
||||
"cpu": "CPU",
|
||||
"lxc": "LXC",
|
||||
"vms": "VMs"
|
||||
},
|
||||
"glances": {
|
||||
"cpu": "Ĉefprocesoro",
|
||||
"load": "Ŝarĝo",
|
||||
"wait": "Bonvolu atendi",
|
||||
"cpu": "CPU",
|
||||
"load": "Load",
|
||||
"wait": "Please wait",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temp",
|
||||
"warn": "Warn",
|
||||
"uptime": "UP",
|
||||
"total": "Totalo",
|
||||
"free": "Libera",
|
||||
"used": "Uzata",
|
||||
"total": "Total",
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
@@ -462,13 +470,13 @@
|
||||
"1-day": "Mainly Sunny",
|
||||
"1-night": "Mainly Clear",
|
||||
"2-day": "Nubeta",
|
||||
"2-night": "Nubeta",
|
||||
"2-night": "Partly Cloudy",
|
||||
"3-day": "Nuba",
|
||||
"3-night": "Nuba",
|
||||
"3-night": "Cloudy",
|
||||
"45-day": "Nebula",
|
||||
"45-night": "Nebula",
|
||||
"48-day": "Nebula",
|
||||
"48-night": "Nebula",
|
||||
"45-night": "Foggy",
|
||||
"48-day": "Foggy",
|
||||
"48-night": "Foggy",
|
||||
"51-day": "Light Drizzle",
|
||||
"51-night": "Light Drizzle",
|
||||
"53-day": "Drizzle",
|
||||
@@ -482,19 +490,19 @@
|
||||
"61-day": "Light Rain",
|
||||
"61-night": "Light Rain",
|
||||
"63-day": "Pluvo",
|
||||
"63-night": "Pluvo",
|
||||
"63-night": "Rain",
|
||||
"65-day": "Pluvego",
|
||||
"65-night": "Pluvego",
|
||||
"65-night": "Heavy Rain",
|
||||
"66-day": "Frosta pluvo",
|
||||
"66-night": "Frosta pluvo",
|
||||
"67-day": "Frosta pluvo",
|
||||
"67-night": "Frosta pluvo",
|
||||
"66-night": "Freezing Rain",
|
||||
"67-day": "Freezing Rain",
|
||||
"67-night": "Freezing Rain",
|
||||
"71-day": "Light Snow",
|
||||
"71-night": "Light Snow",
|
||||
"73-day": "Neĝo",
|
||||
"73-night": "Neĝo",
|
||||
"73-night": "Snow",
|
||||
"75-day": "Neĝego",
|
||||
"75-night": "Neĝego",
|
||||
"75-night": "Heavy Snow",
|
||||
"77-day": "Snow Grains",
|
||||
"77-night": "Snow Grains",
|
||||
"80-day": "Light Showers",
|
||||
@@ -508,11 +516,11 @@
|
||||
"86-day": "Snow Showers",
|
||||
"86-night": "Snow Showers",
|
||||
"95-day": "Fulmotondro",
|
||||
"95-night": "Fulmotondro",
|
||||
"95-night": "Thunderstorm",
|
||||
"96-day": "Fulmotondro kun hajlo",
|
||||
"96-night": "Fulmotondro kun hajlo",
|
||||
"99-day": "Fulmotondro kun hajlo",
|
||||
"99-night": "Fulmotondro kun hajlo"
|
||||
"96-night": "Thunderstorm With Hail",
|
||||
"99-day": "Thunderstorm With Hail",
|
||||
"99-night": "Thunderstorm With Hail"
|
||||
},
|
||||
"homebridge": {
|
||||
"available_update": "Sistemo",
|
||||
@@ -531,7 +539,7 @@
|
||||
"grace": "In Grace Period",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"last_ping": "Last Ping",
|
||||
"never": "No pings yet"
|
||||
},
|
||||
@@ -541,7 +549,7 @@
|
||||
"containers_failed": "Failed"
|
||||
},
|
||||
"autobrr": {
|
||||
"approvedPushes": "Aprobita",
|
||||
"approvedPushes": "Approved",
|
||||
"rejectedPushes": "Rejected",
|
||||
"filters": "Filtriloj",
|
||||
"indexers": "Indexers"
|
||||
@@ -561,15 +569,16 @@
|
||||
"speed": "Speed",
|
||||
"active": "Active",
|
||||
"queue": "Queue",
|
||||
"total": "Totalo"
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "Public IP",
|
||||
"region": "Regiono",
|
||||
"country": "Lando"
|
||||
"country": "Lando",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Kanaloj",
|
||||
"channels": "Channels",
|
||||
"hd": "HD",
|
||||
"tunerCount": "Tuners",
|
||||
"channelNumber": "Channel",
|
||||
@@ -577,17 +586,17 @@
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"networkRate": "Bitrapido",
|
||||
"networkRate": "Bitrate",
|
||||
"clientIP": "Client"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Passed",
|
||||
"failed": "Failed",
|
||||
"unknown": "Nekonata"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Inbox",
|
||||
"total": "Totalo"
|
||||
"total": "Total"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Battery Charge",
|
||||
@@ -631,14 +640,14 @@
|
||||
"layers": "Layers"
|
||||
},
|
||||
"octoprint": {
|
||||
"printer_state": "Stato",
|
||||
"printer_state": "Status",
|
||||
"temp_tool": "Tool temp",
|
||||
"temp_bed": "Bed temp",
|
||||
"job_completion": "Completion"
|
||||
},
|
||||
"cloudflared": {
|
||||
"origin_ip": "Origin IP",
|
||||
"status": "Stato"
|
||||
"status": "Status"
|
||||
},
|
||||
"pfsense": {
|
||||
"load": "Load Avg",
|
||||
@@ -653,11 +662,11 @@
|
||||
"proxmoxbackupserver": {
|
||||
"datastore_usage": "Datastore",
|
||||
"failed_tasks_24h": "Failed Tasks 24h",
|
||||
"cpu_usage": "Ĉefprocesoro",
|
||||
"cpu_usage": "CPU",
|
||||
"memory_usage": "Memory"
|
||||
},
|
||||
"immich": {
|
||||
"users": "Uzantoj",
|
||||
"users": "Users",
|
||||
"photos": "Photos",
|
||||
"videos": "Videos",
|
||||
"storage": "Storage"
|
||||
@@ -670,23 +679,23 @@
|
||||
"m": "m"
|
||||
},
|
||||
"atsumeru": {
|
||||
"series": "Serioj",
|
||||
"series": "Series",
|
||||
"archives": "Archives",
|
||||
"chapters": "Chapters",
|
||||
"categories": "Categories"
|
||||
},
|
||||
"komga": {
|
||||
"libraries": "Libraries",
|
||||
"series": "Serioj",
|
||||
"books": "Libroj"
|
||||
"series": "Series",
|
||||
"books": "Books"
|
||||
},
|
||||
"diskstation": {
|
||||
"days": "Tagoj",
|
||||
"days": "Days",
|
||||
"uptime": "Uptime",
|
||||
"volumeAvailable": "Havebla"
|
||||
"volumeAvailable": "Available"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "Serioj",
|
||||
"series": "Series",
|
||||
"issues": "Issues",
|
||||
"wanted": "Wanted"
|
||||
},
|
||||
@@ -702,6 +711,10 @@
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
@@ -717,7 +730,7 @@
|
||||
"numshares": "Shared Items"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"size": "Size",
|
||||
"lastrun": "Last Run",
|
||||
"nextrun": "Next Run",
|
||||
@@ -749,7 +762,7 @@
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"books": "Libroj",
|
||||
"books": "Books",
|
||||
"podcastsDuration": "Duration",
|
||||
"booksDuration": "Duration"
|
||||
},
|
||||
@@ -763,10 +776,10 @@
|
||||
"updates": "Updates"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Libroj",
|
||||
"books": "Books",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"series": "Serioj"
|
||||
"series": "Series"
|
||||
},
|
||||
"jdownloader": {
|
||||
"downloadCount": "Queue",
|
||||
@@ -775,12 +788,12 @@
|
||||
"downloadSpeed": "Speed"
|
||||
},
|
||||
"kavita": {
|
||||
"seriesCount": "Serioj",
|
||||
"seriesCount": "Series",
|
||||
"totalFiles": "Files"
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Result",
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Succeeded",
|
||||
"notStarted": "Not Started",
|
||||
@@ -789,19 +802,19 @@
|
||||
"inProgress": "In Progress",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"approved": "Aprobita"
|
||||
"approved": "Approved"
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Malkonekta",
|
||||
"offline": "Offline",
|
||||
"name": "Name",
|
||||
"map": "Map",
|
||||
"currentPlayers": "Current players",
|
||||
"players": "Players",
|
||||
"maxPlayers": "Max players",
|
||||
"bots": "Bots",
|
||||
"ping": "Sondaĵo"
|
||||
"ping": "Ping"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "Ok",
|
||||
@@ -811,14 +824,14 @@
|
||||
},
|
||||
"mealie": {
|
||||
"recipes": "Recipes",
|
||||
"users": "Uzantoj",
|
||||
"users": "Users",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"total": "Totalo",
|
||||
"running": "Rulata",
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"passed": "Passed",
|
||||
"failed": "Failed"
|
||||
@@ -832,7 +845,7 @@
|
||||
"bytesRx": "Received"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"uptime": "Uptime",
|
||||
"lastDown": "Last Downtime",
|
||||
"downDuration": "Downtime Duration",
|
||||
@@ -843,14 +856,15 @@
|
||||
"up": "Up",
|
||||
"seemsdown": "Seems Down",
|
||||
"down": "Down",
|
||||
"unknown": "Nekonata"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "In cinemas",
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "No events found",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
@@ -879,7 +893,8 @@
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -893,12 +908,12 @@
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
"movies": "Filmoj",
|
||||
"movies": "Movies",
|
||||
"tags": "Tags",
|
||||
"oCount": "O Count"
|
||||
},
|
||||
"tandoor": {
|
||||
"users": "Uzantoj",
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
},
|
||||
@@ -907,7 +922,7 @@
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"users": "Uzantoj",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
},
|
||||
"crowdsec": {
|
||||
@@ -918,7 +933,7 @@
|
||||
"connected": "Connected",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Totalo"
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
"proxied": "Proxied",
|
||||
@@ -927,9 +942,9 @@
|
||||
"banned": "Banned"
|
||||
},
|
||||
"myspeed": {
|
||||
"ping": "Sondaĵo",
|
||||
"download": "Elŝuti",
|
||||
"upload": "Alŝuti"
|
||||
"ping": "Ping",
|
||||
"download": "Download",
|
||||
"upload": "Upload"
|
||||
},
|
||||
"stocks": {
|
||||
"stocks": "Stocks",
|
||||
@@ -950,7 +965,7 @@
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Not classified",
|
||||
"information": "Informo",
|
||||
"information": "Information",
|
||||
"warning": "Warning",
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
@@ -974,17 +989,20 @@
|
||||
"name": "Name",
|
||||
"address": "Address",
|
||||
"last_seen": "Last Seen",
|
||||
"status": "Stato",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Malkonekta"
|
||||
"offline": "Offline"
|
||||
},
|
||||
"beszel": {
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Up",
|
||||
"status": "Stato",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Updated",
|
||||
"cpu": "Ĉefprocesoro",
|
||||
"cpu": "CPU",
|
||||
"memory": "MEM",
|
||||
"disk": "Disk",
|
||||
"network": "NET"
|
||||
@@ -993,7 +1011,7 @@
|
||||
"apps": "Apps",
|
||||
"synced": "Synced",
|
||||
"outOfSync": "Out Of Sync",
|
||||
"healthy": "Sana",
|
||||
"healthy": "Healthy",
|
||||
"degraded": "Degraded",
|
||||
"progressing": "Progressing",
|
||||
"missing": "Missing",
|
||||
@@ -1007,5 +1025,63 @@
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge": "Battery Charge",
|
||||
"timeleft": "Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"mem": "MEM",
|
||||
"total": "Total",
|
||||
"free": "Libre",
|
||||
"used": "Usado",
|
||||
"used": "Utilizado",
|
||||
"load": "Carga",
|
||||
"temp": "TEMP",
|
||||
"max": "Máx.",
|
||||
@@ -63,7 +63,7 @@
|
||||
"wlan_users": "Usuarios WLAN",
|
||||
"up": "ACTIVO",
|
||||
"down": "CAÍDO",
|
||||
"wait": "Espera, por favor",
|
||||
"wait": "Espere, por favor",
|
||||
"empty_data": "Se desconoce el estado del subsistema"
|
||||
},
|
||||
"docker": {
|
||||
@@ -83,7 +83,7 @@
|
||||
"partial": "Parcial"
|
||||
},
|
||||
"ping": {
|
||||
"error": "Fallo",
|
||||
"error": "Error",
|
||||
"ping": "Ping",
|
||||
"down": "Inactivo",
|
||||
"up": "Activo",
|
||||
@@ -91,10 +91,10 @@
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "Estado HTTP",
|
||||
"error": "Fallo",
|
||||
"error": "Error",
|
||||
"response": "Respuesta",
|
||||
"down": "Inactivo",
|
||||
"up": "Activo",
|
||||
"up": "Activos",
|
||||
"not_available": "No disponible"
|
||||
},
|
||||
"emby": {
|
||||
@@ -108,8 +108,8 @@
|
||||
"songs": "Canciones"
|
||||
},
|
||||
"esphome": {
|
||||
"offline": "Desconectado",
|
||||
"offline_alt": "Desconectado",
|
||||
"offline": "Fuera de línea",
|
||||
"offline_alt": "Fuera de línea",
|
||||
"online": "En línea",
|
||||
"total": "Total",
|
||||
"unknown": "Desconocido"
|
||||
@@ -145,10 +145,12 @@
|
||||
"maxDown": "Descarga máxima",
|
||||
"maxUp": "Subida máxima",
|
||||
"down": "Inactivo",
|
||||
"up": "Activo",
|
||||
"up": "Activos",
|
||||
"received": "Recibido",
|
||||
"sent": "Enviado",
|
||||
"externalIPAddress": "IP ext."
|
||||
"externalIPAddress": "IP ext.",
|
||||
"externalIPv6Address": "IPv6 ext.",
|
||||
"externalIPv6Prefix": "Prefijo IPv6 ext."
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstream (desarrollo de software)",
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "AP conectados",
|
||||
"activeUser": "Dispositivos activos",
|
||||
"alerts": "Alertas",
|
||||
"connectedGateway": "Puertas de enlace conectadas",
|
||||
"connectedGateways": "Puertas de enlace conectadas",
|
||||
"connectedSwitches": "Conmutadores conectados"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -203,13 +205,13 @@
|
||||
"transmission": {
|
||||
"download": "Descarga",
|
||||
"upload": "Subida",
|
||||
"leech": "Descargas",
|
||||
"leech": "Descargando",
|
||||
"seed": "Semillas"
|
||||
},
|
||||
"qbittorrent": {
|
||||
"download": "Descarga",
|
||||
"upload": "Subida",
|
||||
"leech": "Descargas",
|
||||
"leech": "Descargando",
|
||||
"seed": "Semillas"
|
||||
},
|
||||
"qnap": {
|
||||
@@ -223,7 +225,7 @@
|
||||
"deluge": {
|
||||
"download": "Descarga",
|
||||
"upload": "Subida",
|
||||
"leech": "Descargas",
|
||||
"leech": "Descargando",
|
||||
"seed": "Semillas"
|
||||
},
|
||||
"develancacheui": {
|
||||
@@ -233,14 +235,14 @@
|
||||
"downloadstation": {
|
||||
"download": "Descarga",
|
||||
"upload": "Subida",
|
||||
"leech": "Descargas",
|
||||
"leech": "Descargando",
|
||||
"seed": "Semillas"
|
||||
},
|
||||
"sonarr": {
|
||||
"wanted": "Buscando",
|
||||
"queued": "En cola",
|
||||
"series": "Series",
|
||||
"queue": "En cola",
|
||||
"queue": "Cola",
|
||||
"unknown": "Desconocido"
|
||||
},
|
||||
"radarr": {
|
||||
@@ -248,7 +250,7 @@
|
||||
"missing": "Faltantes",
|
||||
"queued": "En cola",
|
||||
"movies": "Películas",
|
||||
"queue": "En cola",
|
||||
"queue": "Cola",
|
||||
"unknown": "Desconocido"
|
||||
},
|
||||
"lidarr": {
|
||||
@@ -305,19 +307,19 @@
|
||||
"ping": "Ping"
|
||||
},
|
||||
"portainer": {
|
||||
"running": "Ejecutando",
|
||||
"running": "En ejecución",
|
||||
"stopped": "Detenido",
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Descargado",
|
||||
"nondownload": "Non-Downloaded",
|
||||
"read": "Leer",
|
||||
"unread": "Sin leer",
|
||||
"downloadedread": "Downloaded & Read",
|
||||
"downloadedunread": "Downloaded & Unread",
|
||||
"nondownloadedread": "Non-Downloaded & Read",
|
||||
"nondownloadedunread": "Non-Downloaded & Unread"
|
||||
"nondownload": "No descargado",
|
||||
"read": "Leído",
|
||||
"unread": "No leídos",
|
||||
"downloadedread": "Descargado y leído",
|
||||
"downloadedunread": "Descargado y no leído",
|
||||
"nondownloadedread": "No descargado y leído",
|
||||
"nondownloadedunread": "No descargado y no leído"
|
||||
},
|
||||
"tailscale": {
|
||||
"address": "Dirección",
|
||||
@@ -347,7 +349,7 @@
|
||||
"totalClients": "Clientes"
|
||||
},
|
||||
"tdarr": {
|
||||
"queue": "En cola",
|
||||
"queue": "Cola",
|
||||
"processed": "Procesado",
|
||||
"errored": "Error",
|
||||
"saved": "Guardado"
|
||||
@@ -357,13 +359,19 @@
|
||||
"services": "Servicios",
|
||||
"middleware": "Software intermedio"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Versión",
|
||||
"notesCount": "Notas",
|
||||
"dbSize": "Tamaño de la base de datos",
|
||||
"unknown": "Desconocido"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Sin transmisiones activas",
|
||||
"please_wait": "Por favor, espera"
|
||||
},
|
||||
"npm": {
|
||||
"enabled": "Activado",
|
||||
"disabled": "Desactivado",
|
||||
"enabled": "Activos",
|
||||
"disabled": "Inactivos",
|
||||
"total": "Total"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
@@ -387,7 +395,7 @@
|
||||
},
|
||||
"jackett": {
|
||||
"configured": "Configurado",
|
||||
"errored": "Error"
|
||||
"errored": "Con fallo"
|
||||
},
|
||||
"strelaysrv": {
|
||||
"numActiveSessions": "Sesiones",
|
||||
@@ -410,7 +418,7 @@
|
||||
"version": "Versión",
|
||||
"status": "Estado",
|
||||
"up": "En línea",
|
||||
"down": "Desconectado"
|
||||
"down": "Fuera de línea"
|
||||
},
|
||||
"miniflux": {
|
||||
"read": "Leer",
|
||||
@@ -430,7 +438,7 @@
|
||||
"glances": {
|
||||
"cpu": "CPU",
|
||||
"load": "Carga",
|
||||
"wait": "Espera, por favor",
|
||||
"wait": "Por favor, espera",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temperatura",
|
||||
"warn": "Advertir",
|
||||
@@ -441,7 +449,7 @@
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Crít.",
|
||||
"read": "Leer",
|
||||
"read": "Leído",
|
||||
"write": "Escribir",
|
||||
"gpu": "GPU",
|
||||
"mem": "Memoria",
|
||||
@@ -453,7 +461,7 @@
|
||||
"search": "Buscar",
|
||||
"custom": "Personalizado",
|
||||
"visit": "Visitar",
|
||||
"url": "Enlace",
|
||||
"url": "URL",
|
||||
"searchsuggestion": "Sugerencia"
|
||||
},
|
||||
"wmo": {
|
||||
@@ -462,13 +470,13 @@
|
||||
"1-day": "Mayormente soleado",
|
||||
"1-night": "Mayormente despejado",
|
||||
"2-day": "Parcialmente nuboso",
|
||||
"2-night": "Parcialmente nuboso",
|
||||
"2-night": "Parcialmente nublado",
|
||||
"3-day": "Nublado",
|
||||
"3-night": "Nublado",
|
||||
"45-day": "Niebla",
|
||||
"45-night": "Niebla",
|
||||
"48-day": "Niebla",
|
||||
"48-night": "Niebla",
|
||||
"45-night": "Neblinoso",
|
||||
"48-day": "Neblinoso",
|
||||
"48-night": "Neblinoso",
|
||||
"51-day": "Llovizna ligera",
|
||||
"51-night": "Llovizna ligera",
|
||||
"53-day": "Llovizna",
|
||||
@@ -484,29 +492,29 @@
|
||||
"63-day": "Lluvia",
|
||||
"63-night": "Lluvia",
|
||||
"65-day": "Lluvia torrencial",
|
||||
"65-night": "Lluvia torrencial",
|
||||
"65-night": "Lluvia fuerte",
|
||||
"66-day": "Granizo",
|
||||
"66-night": "Granizo",
|
||||
"67-day": "Granizo",
|
||||
"67-night": "Granizo",
|
||||
"66-night": "Lluvia helada",
|
||||
"67-day": "Lluvia helada",
|
||||
"67-night": "Lluvia helada",
|
||||
"71-day": "Nevada leve",
|
||||
"71-night": "Nevada leve",
|
||||
"71-night": "Nieve ligera",
|
||||
"73-day": "Nevada",
|
||||
"73-night": "Nevada",
|
||||
"73-night": "Nieve",
|
||||
"75-day": "Nevada intensa",
|
||||
"75-night": "Nevada intensa",
|
||||
"75-night": "Nieve intensa",
|
||||
"77-day": "Granizada",
|
||||
"77-night": "Granizada",
|
||||
"80-day": "Llovizna",
|
||||
"80-night": "Llovizna",
|
||||
"80-night": "Chubascos ligeros",
|
||||
"81-day": "Lluvia",
|
||||
"81-night": "Lluvia",
|
||||
"81-night": "Chubascos",
|
||||
"82-day": "Lluvias torrenciales",
|
||||
"82-night": "Lluvias torrenciales",
|
||||
"82-night": "Chubascos fuertes",
|
||||
"85-day": "Lluvia de nieve",
|
||||
"85-night": "Lluvia de nieve",
|
||||
"86-day": "Lluvia de nieve",
|
||||
"86-night": "Lluvia de nieve",
|
||||
"85-night": "Chubascos de nieve",
|
||||
"86-day": "Chubascos de nieve",
|
||||
"86-night": "Chubascos de nieve",
|
||||
"95-day": "Tormenta",
|
||||
"95-night": "Tormenta",
|
||||
"96-day": "Tormenta con granizo",
|
||||
@@ -547,7 +555,7 @@
|
||||
"indexers": "Indexadores"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "En cola",
|
||||
"downloads": "Cola",
|
||||
"videos": "Videos",
|
||||
"channels": "Canales",
|
||||
"playlists": "Listas de reproducción"
|
||||
@@ -560,13 +568,14 @@
|
||||
"pyload": {
|
||||
"speed": "Velocidad",
|
||||
"active": "Activo",
|
||||
"queue": "En cola",
|
||||
"queue": "Cola",
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "IP pública",
|
||||
"region": "Región",
|
||||
"country": "País"
|
||||
"country": "País",
|
||||
"port_forwarded": "Puerto redireccionado"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Canales",
|
||||
@@ -646,7 +655,7 @@
|
||||
"wanStatus": "Estado de la WAN",
|
||||
"up": "Activo",
|
||||
"down": "Inactivo",
|
||||
"temp": "Temperatura",
|
||||
"temp": "Temp",
|
||||
"disk": "Uso del disco",
|
||||
"wanIP": "IP de la WAN"
|
||||
},
|
||||
@@ -697,11 +706,15 @@
|
||||
"people": "Personas"
|
||||
},
|
||||
"fileflows": {
|
||||
"queue": "En cola",
|
||||
"queue": "Cola",
|
||||
"processing": "Procesando",
|
||||
"processed": "Procesado",
|
||||
"time": "Tiempo"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Patrimonio neto",
|
||||
"budget": "Presupuesto"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Tableros",
|
||||
"datasources": "Fuentes de datos",
|
||||
@@ -787,21 +800,21 @@
|
||||
"failed": "Fallido",
|
||||
"canceled": "Cancelado",
|
||||
"inProgress": "En curso",
|
||||
"totalPrs": "RP totales",
|
||||
"myPrs": "Mis logros",
|
||||
"totalPrs": "PRs totales",
|
||||
"myPrs": "Mis PRs",
|
||||
"approved": "Aprobado"
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Estado",
|
||||
"online": "En línea",
|
||||
"offline": "Desconectado",
|
||||
"offline": "Fuera de línea",
|
||||
"name": "Nombre",
|
||||
"map": "Mapa",
|
||||
"currentPlayers": "Jugadores actuales",
|
||||
"players": "Jugadores",
|
||||
"maxPlayers": "Jugadores máximos",
|
||||
"bots": "Bots",
|
||||
"ping": "Ping"
|
||||
"ping": "Latencia"
|
||||
},
|
||||
"urbackup": {
|
||||
"ok": "OK",
|
||||
@@ -839,18 +852,19 @@
|
||||
"sitesUp": "Sitios activos",
|
||||
"sitesDown": "Sitios inactivos",
|
||||
"paused": "Pausado",
|
||||
"notyetchecked": "Aún no verificado",
|
||||
"notyetchecked": "Aún no comprobado",
|
||||
"up": "Activo",
|
||||
"seemsdown": "Parece caída",
|
||||
"seemsdown": "Parece caído",
|
||||
"down": "Inactivo",
|
||||
"unknown": "Desconocido"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "En cine",
|
||||
"inCinemas": "En cines",
|
||||
"physicalRelease": "Lanzamiento en físico",
|
||||
"digitalRelease": "Lanzamiento en digital",
|
||||
"noEventsToday": "¡Sin eventos para hoy!",
|
||||
"noEventsFound": "No se encontraron eventos"
|
||||
"noEventsFound": "No se encontraron eventos",
|
||||
"errorWhenLoadingData": "Error al cargar los datos del calendario"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Plataformas",
|
||||
@@ -878,8 +892,9 @@
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notificaciones",
|
||||
"issues": "Números",
|
||||
"pulls": "Solicitudes de cambios"
|
||||
"issues": "Incidencias",
|
||||
"pulls": "Solicitudes de cambios",
|
||||
"repositories": "Repositorios"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Escenas",
|
||||
@@ -915,9 +930,9 @@
|
||||
"bans": "Baneos"
|
||||
},
|
||||
"wgeasy": {
|
||||
"connected": "Conectado",
|
||||
"enabled": "Activado",
|
||||
"disabled": "Desactivado",
|
||||
"connected": "Conectados",
|
||||
"enabled": "Activo",
|
||||
"disabled": "Inactivos",
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
@@ -927,7 +942,7 @@
|
||||
"banned": "Baneado"
|
||||
},
|
||||
"myspeed": {
|
||||
"ping": "Ping",
|
||||
"ping": "Latencia",
|
||||
"download": "Descarga",
|
||||
"upload": "Subida"
|
||||
},
|
||||
@@ -976,36 +991,97 @@
|
||||
"last_seen": "Visto por última vez",
|
||||
"status": "Estado",
|
||||
"online": "En línea",
|
||||
"offline": "Desconectado"
|
||||
"offline": "Fuera de línea"
|
||||
},
|
||||
"beszel": {
|
||||
"name": "Nombre",
|
||||
"systems": "Systems",
|
||||
"systems": "Sistemas",
|
||||
"up": "Activo",
|
||||
"down": "Inactivo",
|
||||
"paused": "Pausado",
|
||||
"pending": "Pendiente",
|
||||
"status": "Estado",
|
||||
"updated": "Actualizado",
|
||||
"cpu": "CPU",
|
||||
"memory": "MEM",
|
||||
"disk": "Disk",
|
||||
"network": "NET"
|
||||
"disk": "Disco",
|
||||
"network": "RED"
|
||||
},
|
||||
"argocd": {
|
||||
"apps": "Apps",
|
||||
"synced": "Synced",
|
||||
"outOfSync": "Out Of Sync",
|
||||
"synced": "Sincronizado",
|
||||
"outOfSync": "Desincronizado",
|
||||
"healthy": "Saludable",
|
||||
"degraded": "Degraded",
|
||||
"progressing": "Progressing",
|
||||
"degraded": "Degradado",
|
||||
"progressing": "Progresando",
|
||||
"missing": "Faltantes",
|
||||
"suspended": "Suspended"
|
||||
"suspended": "Suspendido"
|
||||
},
|
||||
"spoolman": {
|
||||
"loading": "Cargando"
|
||||
},
|
||||
"gitlab": {
|
||||
"groups": "Groups",
|
||||
"issues": "Números",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
"groups": "Grupos",
|
||||
"issues": "Incidencias",
|
||||
"merges": "Solicitudes de fusión",
|
||||
"projects": "Proyectos"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Estado",
|
||||
"load": "Carga",
|
||||
"bcharge": "Carga de la batería",
|
||||
"timeleft": "Tiempo restante"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Marcadores",
|
||||
"favorites": "Favoritos",
|
||||
"archived": "Archivado",
|
||||
"highlights": "Destacados",
|
||||
"lists": "Listas",
|
||||
"tags": "Etiquetas"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Red",
|
||||
"connected": "Conectado",
|
||||
"disconnected": "Desconectado",
|
||||
"updateStatus": "Actualización",
|
||||
"update_yes": "Disponible",
|
||||
"update_no": "Actualizado",
|
||||
"downloads": "Descargas",
|
||||
"uploads": "Subidas",
|
||||
"sharedFiles": "Archivos"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Canciones",
|
||||
"movies": "Películas",
|
||||
"episodes": "Episodios",
|
||||
"other": "Otros"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Problemas de servicio",
|
||||
"hostErrors": "Problemas de host"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "En ejecución",
|
||||
"stopped": "Detenido",
|
||||
"down": "Inactivo",
|
||||
"unhealthy": "En mal estado",
|
||||
"unknown": "Desconocido",
|
||||
"servers": "Servidores",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Contenedores"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Disponible",
|
||||
"used": "Usado",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Suscripciones",
|
||||
"thisMonthlyCost": "Este mes",
|
||||
"nextMonthlyCost": "Próximo mes",
|
||||
"previousMonthlyCost": "Mes anterior",
|
||||
"nextRenewingSubscription": "Próximo pago"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
"wlan_users": "WLAN Erabiltzaileak",
|
||||
"up": "UP",
|
||||
"down": "DOWN",
|
||||
"wait": "Itxaron mesedez",
|
||||
"wait": "Please wait",
|
||||
"empty_data": "Subsystem status unknown"
|
||||
},
|
||||
"docker": {
|
||||
@@ -85,14 +85,14 @@
|
||||
"ping": {
|
||||
"error": "Error",
|
||||
"ping": "Ping",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"down": "Behera",
|
||||
"up": "Gora",
|
||||
"not_available": "Not Available"
|
||||
},
|
||||
"siteMonitor": {
|
||||
"http_status": "HTTP status",
|
||||
"error": "Error",
|
||||
"response": "Response",
|
||||
"response": "Erantzuna",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"not_available": "Not Available"
|
||||
@@ -102,8 +102,8 @@
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bit-tasa",
|
||||
"no_active": "No Active Streams",
|
||||
"movies": "Movies",
|
||||
"series": "Series",
|
||||
"movies": "Filmak",
|
||||
"series": "Serieak",
|
||||
"episodes": "Episodes",
|
||||
"songs": "Abestiak"
|
||||
},
|
||||
@@ -111,44 +111,46 @@
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Guztira",
|
||||
"unknown": "Ezezaguna"
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"evcc": {
|
||||
"pv_power": "Production",
|
||||
"battery_soc": "Battery",
|
||||
"grid_power": "Grid",
|
||||
"home_power": "Consumption",
|
||||
"charge_power": "Charger",
|
||||
"pv_power": "Produkzioak",
|
||||
"battery_soc": "Bateria",
|
||||
"grid_power": "Sarea",
|
||||
"home_power": "Kontsumoa",
|
||||
"charge_power": "Kargagailua",
|
||||
"kilowatt": "kW"
|
||||
},
|
||||
"flood": {
|
||||
"download": "Download",
|
||||
"upload": "Upload",
|
||||
"download": "Jeitsierak",
|
||||
"upload": "Kargatu",
|
||||
"leech": "Leech",
|
||||
"seed": "Seed"
|
||||
},
|
||||
"freshrss": {
|
||||
"subscriptions": "Subscriptions",
|
||||
"unread": "Unread"
|
||||
"subscriptions": "Harpidetzak",
|
||||
"unread": "Irakurri gabe"
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "Status",
|
||||
"connectionStatusUnconfigured": "Unconfigured",
|
||||
"connectionStatusConnecting": "Connecting",
|
||||
"connectionStatusConnecting": "Konektatzen",
|
||||
"connectionStatusAuthenticating": "Authenticating",
|
||||
"connectionStatusPendingDisconnect": "Pending Disconnect",
|
||||
"connectionStatusDisconnecting": "Disconnecting",
|
||||
"connectionStatusDisconnected": "Disconnected",
|
||||
"connectionStatusConnected": "Connected",
|
||||
"connectionStatusDisconnected": "Deskonektatuta",
|
||||
"connectionStatusConnected": "Konektatuta",
|
||||
"uptime": "Uptime",
|
||||
"maxDown": "Max. Down",
|
||||
"maxUp": "Max. Up",
|
||||
"down": "Down",
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"sent": "Bidalita",
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -168,7 +170,7 @@
|
||||
"tautulli": {
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bit-tasa",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "No Active Streams",
|
||||
"plex_connection_error": "Check Plex Connection"
|
||||
},
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Connected APs",
|
||||
"activeUser": "Active devices",
|
||||
"alerts": "Alerts",
|
||||
"connectedGateway": "Connected gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Connected switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -241,7 +243,7 @@
|
||||
"queued": "Queued",
|
||||
"series": "Series",
|
||||
"queue": "Queue",
|
||||
"unknown": "Ezezaguna"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Wanted",
|
||||
@@ -249,7 +251,7 @@
|
||||
"queued": "Queued",
|
||||
"movies": "Movies",
|
||||
"queue": "Queue",
|
||||
"unknown": "Ezezaguna"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Wanted",
|
||||
@@ -282,7 +284,7 @@
|
||||
"available": "Available"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Guztira",
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
@@ -307,7 +309,7 @@
|
||||
"portainer": {
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"total": "Guztira"
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Downloaded",
|
||||
@@ -357,6 +359,12 @@
|
||||
"services": "Services",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Please Wait"
|
||||
@@ -364,7 +372,7 @@
|
||||
"npm": {
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Guztira"
|
||||
"total": "Total"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Configure one or more crypto currencies to track",
|
||||
@@ -430,14 +438,14 @@
|
||||
"glances": {
|
||||
"cpu": "CPU",
|
||||
"load": "Load",
|
||||
"wait": "Itxaron mesedez",
|
||||
"wait": "Please wait",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temp",
|
||||
"warn": "Warn",
|
||||
"uptime": "UP",
|
||||
"total": "Guztira",
|
||||
"total": "Total",
|
||||
"free": "Free",
|
||||
"used": "Erabilita",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
@@ -561,12 +569,13 @@
|
||||
"speed": "Speed",
|
||||
"active": "Active",
|
||||
"queue": "Queue",
|
||||
"total": "Guztira"
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "Public IP",
|
||||
"region": "Region",
|
||||
"country": "Country"
|
||||
"country": "Country",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
@@ -577,17 +586,17 @@
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"networkRate": "Bit-tasa",
|
||||
"networkRate": "Bitrate",
|
||||
"clientIP": "Client"
|
||||
},
|
||||
"scrutiny": {
|
||||
"passed": "Passed",
|
||||
"failed": "Failed",
|
||||
"unknown": "Ezezaguna"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Inbox",
|
||||
"total": "Guztira"
|
||||
"total": "Total"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Battery Charge",
|
||||
@@ -658,7 +667,7 @@
|
||||
},
|
||||
"immich": {
|
||||
"users": "Users",
|
||||
"photos": "Photos",
|
||||
"photos": "Argazkiak",
|
||||
"videos": "Videos",
|
||||
"storage": "Storage"
|
||||
},
|
||||
@@ -681,13 +690,13 @@
|
||||
"books": "Books"
|
||||
},
|
||||
"diskstation": {
|
||||
"days": "Egun",
|
||||
"days": "Days",
|
||||
"uptime": "Uptime",
|
||||
"volumeAvailable": "Available"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "Series",
|
||||
"issues": "Issues",
|
||||
"issues": "Arazoak",
|
||||
"wanted": "Wanted"
|
||||
},
|
||||
"photoprism": {
|
||||
@@ -702,6 +711,10 @@
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
@@ -795,10 +808,10 @@
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Offline",
|
||||
"name": "Name",
|
||||
"map": "Map",
|
||||
"name": "Izena",
|
||||
"map": "Mapa",
|
||||
"currentPlayers": "Current players",
|
||||
"players": "Jokalariak",
|
||||
"players": "Players",
|
||||
"maxPlayers": "Max players",
|
||||
"bots": "Bots",
|
||||
"ping": "Ping"
|
||||
@@ -813,11 +826,11 @@
|
||||
"recipes": "Recipes",
|
||||
"users": "Users",
|
||||
"categories": "Categories",
|
||||
"tags": "Tags"
|
||||
"tags": "Etiketak"
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"total": "Guztira",
|
||||
"downloading": "Deskargatzen",
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"passed": "Passed",
|
||||
@@ -843,14 +856,15 @@
|
||||
"up": "Up",
|
||||
"seemsdown": "Seems Down",
|
||||
"down": "Down",
|
||||
"unknown": "Ezezaguna"
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"calendar": {
|
||||
"inCinemas": "In cinemas",
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "Ez da gertaerarik aurkitu.",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
@@ -862,7 +876,7 @@
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mailboxes": "Gutunontziak",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
},
|
||||
@@ -871,15 +885,16 @@
|
||||
"criticals": "Criticals"
|
||||
},
|
||||
"plantit": {
|
||||
"events": "Events",
|
||||
"plants": "Plants",
|
||||
"events": "Ekitaldiak",
|
||||
"plants": "Landareak",
|
||||
"photos": "Photos",
|
||||
"species": "Species"
|
||||
},
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"notifications": "Jakinarazpenak",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -888,8 +903,8 @@
|
||||
"playDuration": "Time Watched",
|
||||
"sceneSize": "Scenes Size",
|
||||
"sceneDuration": "Scenes Duration",
|
||||
"images": "Images",
|
||||
"imageSize": "Images Size",
|
||||
"images": "Irudia",
|
||||
"imageSize": "Irudiaren tamaina",
|
||||
"galleries": "Galleries",
|
||||
"performers": "Performers",
|
||||
"studios": "Studios",
|
||||
@@ -900,15 +915,15 @@
|
||||
"tandoor": {
|
||||
"users": "Users",
|
||||
"recipes": "Recipes",
|
||||
"keywords": "Keywords"
|
||||
"keywords": "Hitz gakoak"
|
||||
},
|
||||
"homebox": {
|
||||
"items": "Items",
|
||||
"items": "Elementuak",
|
||||
"totalWithWarranty": "With Warranty",
|
||||
"locations": "Locations",
|
||||
"labels": "Labels",
|
||||
"labels": "Etiketak",
|
||||
"users": "Users",
|
||||
"totalValue": "Total Value"
|
||||
"totalValue": "Guztira"
|
||||
},
|
||||
"crowdsec": {
|
||||
"alerts": "Alerts",
|
||||
@@ -918,7 +933,7 @@
|
||||
"connected": "Connected",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Guztira"
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
"proxied": "Proxied",
|
||||
@@ -945,23 +960,23 @@
|
||||
},
|
||||
"linkwarden": {
|
||||
"links": "Links",
|
||||
"collections": "Collections",
|
||||
"collections": "Bildumak",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"zabbix": {
|
||||
"unclassified": "Not classified",
|
||||
"information": "Informazioa",
|
||||
"warning": "Warning",
|
||||
"average": "Average",
|
||||
"high": "High",
|
||||
"information": "Information",
|
||||
"warning": "Abisua",
|
||||
"average": "Batez besteko",
|
||||
"high": "Altua",
|
||||
"disaster": "Disaster"
|
||||
},
|
||||
"lubelogger": {
|
||||
"vehicle": "Vehicle",
|
||||
"vehicles": "Vehicles",
|
||||
"vehicles": "Ibilgailuak",
|
||||
"serviceRecords": "Service Records",
|
||||
"reminders": "Reminders",
|
||||
"nextReminder": "Next Reminder",
|
||||
"reminders": "Oroigarriak",
|
||||
"nextReminder": "Hurrengo abisua",
|
||||
"none": "None"
|
||||
},
|
||||
"vikunja": {
|
||||
@@ -982,6 +997,9 @@
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Updated",
|
||||
"cpu": "CPU",
|
||||
@@ -990,22 +1008,80 @@
|
||||
"network": "NET"
|
||||
},
|
||||
"argocd": {
|
||||
"apps": "Apps",
|
||||
"synced": "Synced",
|
||||
"apps": "Aplikazioak",
|
||||
"synced": "Sinkronizatuta",
|
||||
"outOfSync": "Out Of Sync",
|
||||
"healthy": "Osasuntsu",
|
||||
"healthy": "Healthy",
|
||||
"degraded": "Degraded",
|
||||
"progressing": "Progressing",
|
||||
"missing": "Missing",
|
||||
"suspended": "Suspended"
|
||||
"suspended": "Etenda"
|
||||
},
|
||||
"spoolman": {
|
||||
"loading": "Loading"
|
||||
},
|
||||
"gitlab": {
|
||||
"groups": "Groups",
|
||||
"groups": "Taldeak",
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
"projects": "Proiektuak"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge": "Battery Charge",
|
||||
"timeleft": "Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
"wlan_users": "WLAN Users",
|
||||
"up": "UP",
|
||||
"down": "DOWN",
|
||||
"wait": "Odota, ole hyvä",
|
||||
"wait": "Please wait",
|
||||
"empty_data": "Subsystem status unknown"
|
||||
},
|
||||
"docker": {
|
||||
@@ -111,7 +111,7 @@
|
||||
"offline": "Offline",
|
||||
"offline_alt": "Offline",
|
||||
"online": "Online",
|
||||
"total": "Yhteensä",
|
||||
"total": "Total",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"evcc": {
|
||||
@@ -133,7 +133,7 @@
|
||||
"unread": "Unread"
|
||||
},
|
||||
"fritzbox": {
|
||||
"connectionStatus": "Tila",
|
||||
"connectionStatus": "Status",
|
||||
"connectionStatusUnconfigured": "Unconfigured",
|
||||
"connectionStatusConnecting": "Connecting",
|
||||
"connectionStatusAuthenticating": "Authenticating",
|
||||
@@ -148,7 +148,9 @@
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -166,17 +168,17 @@
|
||||
"passes": "Passes"
|
||||
},
|
||||
"tautulli": {
|
||||
"playing": "Toistaa",
|
||||
"transcoding": "Transkoodaa",
|
||||
"bitrate": "Bittinopeus",
|
||||
"no_active": "Ei aktiivisia striimejä",
|
||||
"playing": "Playing",
|
||||
"transcoding": "Transcoding",
|
||||
"bitrate": "Bitrate",
|
||||
"no_active": "No Active Streams",
|
||||
"plex_connection_error": "Check Plex Connection"
|
||||
},
|
||||
"omada": {
|
||||
"connectedAp": "Connected APs",
|
||||
"activeUser": "Active devices",
|
||||
"alerts": "Alerts",
|
||||
"connectedGateway": "Connected gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Connected switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -191,7 +193,7 @@
|
||||
"tv": "TV Shows"
|
||||
},
|
||||
"sabnzbd": {
|
||||
"rate": "Nopeus",
|
||||
"rate": "Rate",
|
||||
"queue": "Jono",
|
||||
"timeleft": "Aikaa jäljellä"
|
||||
},
|
||||
@@ -240,25 +242,25 @@
|
||||
"wanted": "Haluttu",
|
||||
"queued": "Jonossa",
|
||||
"series": "Series",
|
||||
"queue": "Jono",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"radarr": {
|
||||
"wanted": "Haluttu",
|
||||
"wanted": "Wanted",
|
||||
"missing": "Missing",
|
||||
"queued": "Jonossa",
|
||||
"queued": "Queued",
|
||||
"movies": "Movies",
|
||||
"queue": "Jono",
|
||||
"queue": "Queue",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"lidarr": {
|
||||
"wanted": "Haluttu",
|
||||
"queued": "Jonossa",
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"artists": "Artists"
|
||||
},
|
||||
"readarr": {
|
||||
"wanted": "Haluttu",
|
||||
"queued": "Jonossa",
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"books": "Kirjoja"
|
||||
},
|
||||
"bazarr": {
|
||||
@@ -271,18 +273,18 @@
|
||||
"available": "Saatavilla"
|
||||
},
|
||||
"jellyseerr": {
|
||||
"pending": "Vireillä",
|
||||
"approved": "Hyväksytty",
|
||||
"available": "Saatavilla"
|
||||
"pending": "Pending",
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"overseerr": {
|
||||
"pending": "Vireillä",
|
||||
"pending": "Pending",
|
||||
"processing": "Processing",
|
||||
"approved": "Hyväksytty",
|
||||
"available": "Saatavilla"
|
||||
"approved": "Approved",
|
||||
"available": "Available"
|
||||
},
|
||||
"netalertx": {
|
||||
"total": "Yhteensä",
|
||||
"total": "Total",
|
||||
"connected": "Connected",
|
||||
"new_devices": "New Devices",
|
||||
"down_alerts": "Down Alerts"
|
||||
@@ -294,8 +296,8 @@
|
||||
"gravity": "Vakavuus"
|
||||
},
|
||||
"adguard": {
|
||||
"queries": "Kyselyjä",
|
||||
"blocked": "Estetty",
|
||||
"queries": "Queries",
|
||||
"blocked": "Blocked",
|
||||
"filtered": "Suodatettu",
|
||||
"latency": "Viive"
|
||||
},
|
||||
@@ -307,10 +309,10 @@
|
||||
"portainer": {
|
||||
"running": "Running",
|
||||
"stopped": "Pysäytetty",
|
||||
"total": "Yhteensä"
|
||||
"total": "Total"
|
||||
},
|
||||
"suwayomi": {
|
||||
"download": "Ladattu",
|
||||
"download": "Downloaded",
|
||||
"nondownload": "Non-Downloaded",
|
||||
"read": "Read",
|
||||
"unread": "Unread",
|
||||
@@ -334,7 +336,7 @@
|
||||
"ago": "{{value}} Ago"
|
||||
},
|
||||
"technitium": {
|
||||
"totalQueries": "Kyselyjä",
|
||||
"totalQueries": "Queries",
|
||||
"totalNoError": "Success",
|
||||
"totalServerFailure": "Failures",
|
||||
"totalNxDomain": "NX Domains",
|
||||
@@ -342,12 +344,12 @@
|
||||
"totalAuthoritative": "Authoritative",
|
||||
"totalRecursive": "Recursive",
|
||||
"totalCached": "Cached",
|
||||
"totalBlocked": "Estetty",
|
||||
"totalBlocked": "Blocked",
|
||||
"totalDropped": "Dropped",
|
||||
"totalClients": "Asiakasohjelmia"
|
||||
},
|
||||
"tdarr": {
|
||||
"queue": "Jono",
|
||||
"queue": "Queue",
|
||||
"processed": "Processed",
|
||||
"errored": "Errored",
|
||||
"saved": "Saved"
|
||||
@@ -357,14 +359,20 @@
|
||||
"services": "Palveluja",
|
||||
"middleware": "Middlewareja"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "Ei aktiivisia striimejä",
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Odota, ole hyvä"
|
||||
},
|
||||
"npm": {
|
||||
"enabled": "Käytössä",
|
||||
"disabled": "Poissa käytöstä",
|
||||
"total": "Yhteensä"
|
||||
"total": "Total"
|
||||
},
|
||||
"coinmarketcap": {
|
||||
"configure": "Määritä yksi tai useampi kryptovaluutta seurattavaksi",
|
||||
@@ -375,13 +383,13 @@
|
||||
},
|
||||
"gotify": {
|
||||
"apps": "Sovelluksia",
|
||||
"clients": "Asiakasohjelmia",
|
||||
"clients": "Clients",
|
||||
"messages": "Viestejä"
|
||||
},
|
||||
"prowlarr": {
|
||||
"enableIndexers": "Indeksoijia",
|
||||
"numberOfGrabs": "Nappauksia",
|
||||
"numberOfQueries": "Kyselyjä",
|
||||
"numberOfQueries": "Queries",
|
||||
"numberOfFailGrabs": "Epäonnistuneita nappauksia",
|
||||
"numberOfFailQueries": "Epäonnistuneita kyselyjä"
|
||||
},
|
||||
@@ -393,7 +401,7 @@
|
||||
"numActiveSessions": "Istuntoja",
|
||||
"numConnections": "Yhteyksiä",
|
||||
"dataRelayed": "Välitetty",
|
||||
"transferRate": "Nopeus"
|
||||
"transferRate": "Rate"
|
||||
},
|
||||
"mastodon": {
|
||||
"user_count": "Users",
|
||||
@@ -401,14 +409,14 @@
|
||||
"domain_count": "Verkkotunnuksia"
|
||||
},
|
||||
"medusa": {
|
||||
"wanted": "Haluttu",
|
||||
"queued": "Jonossa",
|
||||
"wanted": "Wanted",
|
||||
"queued": "Queued",
|
||||
"series": "Series"
|
||||
},
|
||||
"minecraft": {
|
||||
"players": "Players",
|
||||
"version": "Version",
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"up": "Online",
|
||||
"down": "Offline"
|
||||
},
|
||||
@@ -429,15 +437,15 @@
|
||||
},
|
||||
"glances": {
|
||||
"cpu": "CPU",
|
||||
"load": "Kuorma",
|
||||
"wait": "Odota, ole hyvä",
|
||||
"load": "Load",
|
||||
"wait": "Please wait",
|
||||
"temp": "TEMP",
|
||||
"_temp": "Temp",
|
||||
"warn": "Warn",
|
||||
"uptime": "UP",
|
||||
"total": "Yhteensä",
|
||||
"free": "Vapaana",
|
||||
"used": "Käytetty",
|
||||
"total": "Total",
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
@@ -522,7 +530,7 @@
|
||||
"child_bridges": "Child Bridges",
|
||||
"child_bridges_status": "{{ok}}/{{total}}",
|
||||
"up": "Up",
|
||||
"pending": "Vireillä",
|
||||
"pending": "Pending",
|
||||
"down": "Down"
|
||||
},
|
||||
"healthchecks": {
|
||||
@@ -531,7 +539,7 @@
|
||||
"grace": "In Grace Period",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"last_ping": "Last Ping",
|
||||
"never": "No pings yet"
|
||||
},
|
||||
@@ -541,13 +549,13 @@
|
||||
"containers_failed": "Failed"
|
||||
},
|
||||
"autobrr": {
|
||||
"approvedPushes": "Hyväksytty",
|
||||
"approvedPushes": "Approved",
|
||||
"rejectedPushes": "Rejected",
|
||||
"filters": "Filters",
|
||||
"indexers": "Indeksoijia"
|
||||
"indexers": "Indexers"
|
||||
},
|
||||
"tubearchivist": {
|
||||
"downloads": "Jono",
|
||||
"downloads": "Queue",
|
||||
"videos": "Videos",
|
||||
"channels": "Channels",
|
||||
"playlists": "Playlists"
|
||||
@@ -559,14 +567,15 @@
|
||||
},
|
||||
"pyload": {
|
||||
"speed": "Speed",
|
||||
"active": "Aktiivinen",
|
||||
"queue": "Jono",
|
||||
"total": "Yhteensä"
|
||||
"active": "Active",
|
||||
"queue": "Queue",
|
||||
"total": "Total"
|
||||
},
|
||||
"gluetun": {
|
||||
"public_ip": "Public IP",
|
||||
"region": "Region",
|
||||
"country": "Country"
|
||||
"country": "Country",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
@@ -577,7 +586,7 @@
|
||||
"signalStrength": "Strength",
|
||||
"signalQuality": "Quality",
|
||||
"symbolQuality": "Quality",
|
||||
"networkRate": "Bittinopeus",
|
||||
"networkRate": "Bitrate",
|
||||
"clientIP": "Client"
|
||||
},
|
||||
"scrutiny": {
|
||||
@@ -587,7 +596,7 @@
|
||||
},
|
||||
"paperlessngx": {
|
||||
"inbox": "Inbox",
|
||||
"total": "Yhteensä"
|
||||
"total": "Total"
|
||||
},
|
||||
"peanut": {
|
||||
"battery_charge": "Battery Charge",
|
||||
@@ -598,7 +607,7 @@
|
||||
"low_battery": "Low Battery"
|
||||
},
|
||||
"nextdns": {
|
||||
"wait": "Odota, ole hyvä",
|
||||
"wait": "Please Wait",
|
||||
"no_devices": "No Device Data Received"
|
||||
},
|
||||
"mikrotik": {
|
||||
@@ -631,14 +640,14 @@
|
||||
"layers": "Layers"
|
||||
},
|
||||
"octoprint": {
|
||||
"printer_state": "Tila",
|
||||
"printer_state": "Status",
|
||||
"temp_tool": "Tool temp",
|
||||
"temp_bed": "Bed temp",
|
||||
"job_completion": "Completion"
|
||||
},
|
||||
"cloudflared": {
|
||||
"origin_ip": "Origin IP",
|
||||
"status": "Tila"
|
||||
"status": "Status"
|
||||
},
|
||||
"pfsense": {
|
||||
"load": "Load Avg",
|
||||
@@ -678,17 +687,17 @@
|
||||
"komga": {
|
||||
"libraries": "Libraries",
|
||||
"series": "Series",
|
||||
"books": "Kirjoja"
|
||||
"books": "Books"
|
||||
},
|
||||
"diskstation": {
|
||||
"days": "Days",
|
||||
"uptime": "Uptime",
|
||||
"volumeAvailable": "Saatavilla"
|
||||
"volumeAvailable": "Available"
|
||||
},
|
||||
"mylar": {
|
||||
"series": "Series",
|
||||
"issues": "Issues",
|
||||
"wanted": "Haluttu"
|
||||
"wanted": "Wanted"
|
||||
},
|
||||
"photoprism": {
|
||||
"albums": "Albums",
|
||||
@@ -697,11 +706,15 @@
|
||||
"people": "People"
|
||||
},
|
||||
"fileflows": {
|
||||
"queue": "Jono",
|
||||
"queue": "Queue",
|
||||
"processing": "Processing",
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
@@ -717,7 +730,7 @@
|
||||
"numshares": "Shared Items"
|
||||
},
|
||||
"kopia": {
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"size": "Size",
|
||||
"lastrun": "Last Run",
|
||||
"nextrun": "Next Run",
|
||||
@@ -749,7 +762,7 @@
|
||||
},
|
||||
"audiobookshelf": {
|
||||
"podcasts": "Podcasts",
|
||||
"books": "Kirjoja",
|
||||
"books": "Books",
|
||||
"podcastsDuration": "Duration",
|
||||
"booksDuration": "Duration"
|
||||
},
|
||||
@@ -763,14 +776,14 @@
|
||||
"updates": "Updates"
|
||||
},
|
||||
"calibreweb": {
|
||||
"books": "Kirjoja",
|
||||
"books": "Books",
|
||||
"authors": "Authors",
|
||||
"categories": "Categories",
|
||||
"series": "Series"
|
||||
},
|
||||
"jdownloader": {
|
||||
"downloadCount": "Jono",
|
||||
"downloadBytesRemaining": "Jäljellä",
|
||||
"downloadCount": "Queue",
|
||||
"downloadBytesRemaining": "Remaining",
|
||||
"downloadTotalBytes": "Size",
|
||||
"downloadSpeed": "Speed"
|
||||
},
|
||||
@@ -780,7 +793,7 @@
|
||||
},
|
||||
"azuredevops": {
|
||||
"result": "Result",
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"buildId": "Build ID",
|
||||
"succeeded": "Succeeded",
|
||||
"notStarted": "Not Started",
|
||||
@@ -789,10 +802,10 @@
|
||||
"inProgress": "In Progress",
|
||||
"totalPrs": "Total PRs",
|
||||
"myPrs": "My PRs",
|
||||
"approved": "Hyväksytty"
|
||||
"approved": "Approved"
|
||||
},
|
||||
"gamedig": {
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Offline",
|
||||
"name": "Name",
|
||||
@@ -817,9 +830,9 @@
|
||||
},
|
||||
"openmediavault": {
|
||||
"downloading": "Downloading",
|
||||
"total": "Yhteensä",
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Pysäytetty",
|
||||
"stopped": "Stopped",
|
||||
"passed": "Passed",
|
||||
"failed": "Failed"
|
||||
},
|
||||
@@ -832,7 +845,7 @@
|
||||
"bytesRx": "Received"
|
||||
},
|
||||
"uptimerobot": {
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"uptime": "Uptime",
|
||||
"lastDown": "Last Downtime",
|
||||
"downDuration": "Downtime Duration",
|
||||
@@ -850,7 +863,8 @@
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "No events found",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
@@ -861,7 +875,7 @@
|
||||
"totalfilesize": "Total Size"
|
||||
},
|
||||
"mailcow": {
|
||||
"domains": "Verkkotunnuksia",
|
||||
"domains": "Domains",
|
||||
"mailboxes": "Mailboxes",
|
||||
"mails": "Mails",
|
||||
"storage": "Storage"
|
||||
@@ -879,7 +893,8 @@
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -916,9 +931,9 @@
|
||||
},
|
||||
"wgeasy": {
|
||||
"connected": "Connected",
|
||||
"enabled": "Käytössä",
|
||||
"disabled": "Poissa käytöstä",
|
||||
"total": "Yhteensä"
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled",
|
||||
"total": "Total"
|
||||
},
|
||||
"swagdashboard": {
|
||||
"proxied": "Proxied",
|
||||
@@ -974,7 +989,7 @@
|
||||
"name": "Name",
|
||||
"address": "Address",
|
||||
"last_seen": "Last Seen",
|
||||
"status": "Tila",
|
||||
"status": "Status",
|
||||
"online": "Online",
|
||||
"offline": "Offline"
|
||||
},
|
||||
@@ -982,7 +997,10 @@
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Up",
|
||||
"status": "Tila",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Updated",
|
||||
"cpu": "CPU",
|
||||
"memory": "MEM",
|
||||
@@ -1007,5 +1025,63 @@
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge": "Battery Charge",
|
||||
"timeleft": "Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -148,7 +148,9 @@
|
||||
"up": "Up",
|
||||
"received": "Received",
|
||||
"sent": "Sent",
|
||||
"externalIPAddress": "Ext. IP"
|
||||
"externalIPAddress": "Ext. IP",
|
||||
"externalIPv6Address": "Ext. IPv6",
|
||||
"externalIPv6Prefix": "Ext. IPv6-Prefix"
|
||||
},
|
||||
"caddy": {
|
||||
"upstreams": "Upstreams",
|
||||
@@ -176,7 +178,7 @@
|
||||
"connectedAp": "Connected APs",
|
||||
"activeUser": "Active devices",
|
||||
"alerts": "Alerts",
|
||||
"connectedGateway": "Connected gateways",
|
||||
"connectedGateways": "Connected gateways",
|
||||
"connectedSwitches": "Connected switches"
|
||||
},
|
||||
"nzbget": {
|
||||
@@ -357,6 +359,12 @@
|
||||
"services": "Services",
|
||||
"middleware": "Middleware"
|
||||
},
|
||||
"trilium": {
|
||||
"version": "Version",
|
||||
"notesCount": "Notes",
|
||||
"dbSize": "Database Size",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"navidrome": {
|
||||
"nothing_streaming": "No Active Streams",
|
||||
"please_wait": "Please Wait"
|
||||
@@ -439,7 +447,7 @@
|
||||
"free": "Free",
|
||||
"used": "Used",
|
||||
"days": "d",
|
||||
"hours": "घं.",
|
||||
"hours": "h",
|
||||
"crit": "Crit",
|
||||
"read": "Read",
|
||||
"write": "Write",
|
||||
@@ -566,7 +574,8 @@
|
||||
"gluetun": {
|
||||
"public_ip": "Public IP",
|
||||
"region": "Region",
|
||||
"country": "Country"
|
||||
"country": "Country",
|
||||
"port_forwarded": "Port Forwarded"
|
||||
},
|
||||
"hdhomerun": {
|
||||
"channels": "Channels",
|
||||
@@ -702,6 +711,10 @@
|
||||
"processed": "Processed",
|
||||
"time": "Time"
|
||||
},
|
||||
"firefly": {
|
||||
"networth": "Net Worth",
|
||||
"budget": "Budget"
|
||||
},
|
||||
"grafana": {
|
||||
"dashboards": "Dashboards",
|
||||
"datasources": "Data Sources",
|
||||
@@ -850,7 +863,8 @@
|
||||
"physicalRelease": "Physical release",
|
||||
"digitalRelease": "Digital release",
|
||||
"noEventsToday": "No events for today!",
|
||||
"noEventsFound": "No events found"
|
||||
"noEventsFound": "No events found",
|
||||
"errorWhenLoadingData": "Error when loading calendar data"
|
||||
},
|
||||
"romm": {
|
||||
"platforms": "Platforms",
|
||||
@@ -879,7 +893,8 @@
|
||||
"gitea": {
|
||||
"notifications": "Notifications",
|
||||
"issues": "Issues",
|
||||
"pulls": "Pull Requests"
|
||||
"pulls": "Pull Requests",
|
||||
"repositories": "Repositories"
|
||||
},
|
||||
"stash": {
|
||||
"scenes": "Scenes",
|
||||
@@ -982,6 +997,9 @@
|
||||
"name": "Name",
|
||||
"systems": "Systems",
|
||||
"up": "Up",
|
||||
"down": "Down",
|
||||
"paused": "Paused",
|
||||
"pending": "Pending",
|
||||
"status": "Status",
|
||||
"updated": "Updated",
|
||||
"cpu": "CPU",
|
||||
@@ -1007,5 +1025,63 @@
|
||||
"issues": "Issues",
|
||||
"merges": "Merge Requests",
|
||||
"projects": "Projects"
|
||||
},
|
||||
"apcups": {
|
||||
"status": "Status",
|
||||
"load": "Load",
|
||||
"bcharge": "Battery Charge",
|
||||
"timeleft": "Time Left"
|
||||
},
|
||||
"karakeep": {
|
||||
"bookmarks": "Bookmarks",
|
||||
"favorites": "Favorites",
|
||||
"archived": "Archived",
|
||||
"highlights": "Highlights",
|
||||
"lists": "Lists",
|
||||
"tags": "Tags"
|
||||
},
|
||||
"slskd": {
|
||||
"slskStatus": "Network",
|
||||
"connected": "Connected",
|
||||
"disconnected": "Disconnected",
|
||||
"updateStatus": "Update",
|
||||
"update_yes": "Available",
|
||||
"update_no": "Up to Date",
|
||||
"downloads": "Downloads",
|
||||
"uploads": "Uploads",
|
||||
"sharedFiles": "Files"
|
||||
},
|
||||
"jellystat": {
|
||||
"songs": "Songs",
|
||||
"movies": "Movies",
|
||||
"episodes": "Episodes",
|
||||
"other": "Other"
|
||||
},
|
||||
"checkmk": {
|
||||
"serviceErrors": "Service issues",
|
||||
"hostErrors": "Host issues"
|
||||
},
|
||||
"komodo": {
|
||||
"total": "Total",
|
||||
"running": "Running",
|
||||
"stopped": "Stopped",
|
||||
"down": "Down",
|
||||
"unhealthy": "Unhealthy",
|
||||
"unknown": "Unknown",
|
||||
"servers": "Servers",
|
||||
"stacks": "Stacks",
|
||||
"containers": "Containers"
|
||||
},
|
||||
"filebrowser": {
|
||||
"available": "Available",
|
||||
"used": "Used",
|
||||
"total": "Total"
|
||||
},
|
||||
"wallos": {
|
||||
"activeSubscriptions": "Subscriptions",
|
||||
"thisMonthlyCost": "This Month",
|
||||
"nextMonthlyCost": "Next Month",
|
||||
"previousMonthlyCost": "Prev. Month",
|
||||
"nextRenewingSubscription": "Next Payment"
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user