diff --git a/docs/widgets.md b/docs/widgets.md index d5f7d92a..1bbd9e65 100644 --- a/docs/widgets.md +++ b/docs/widgets.md @@ -48,6 +48,12 @@ Dashy has support for displaying dynamic content in the form of widgets. There a - [AdGuard Home Filters](#adguard-home-filters) - [AdGuard Home DNS Info](#adguard-home-dns-info) - [AdGuard Home Top Domains](#adguard-home-top-domains) + - [Nextcloud User](#nextcloud-user) + - [Nextcloud User Statuses](#nextcloud-user-statuses) + - [Nextcloud Notifications](#nextcloud-notifications) + - [Nextcloud System](#nextcloud-system) + - [Nextcloud Stats](#nextcloud-stats) + - [Nextcloud PHP Opcache](#nextcloud-php-opcache-stats) - **[System Resource Monitoring](#system-resource-monitoring)** - [CPU Usage Current](#current-cpu-usage) - [CPU Usage Per Core](#cpu-usage-per-core) @@ -1564,6 +1570,224 @@ Fetches data from your [AdGuard Home](https://adguard.com/en/adguard-home/overvi --- +### Nextcloud User + +Nextcloud is a [self hosted](https://nextcloud.com/install/#instructions-server) productivity platform, it can also be used free of charge with [hundreds of existing hosting providers](https://nextcloud.com/sign-up/) that offer a free Nextcloud account. + +Displays branding information of a Nextcloud server (logo, url, slogan) and some user details (name, login name, last login, disk space or quota). Use with regular or admin user. + +Shows quota usage when quota is enabled for the user or disk usage when not enabled. + +Known issues: the User API incorrectly reports available disk space as total for admin users when quota is not enabled (which usually is the case for admins). + +
+ +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Nextcloud username +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) + + +##### Example + +```yaml +- type: nextcloud-user + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + +### Nextcloud User Statuses + +Show user statuses for selected users. + + + +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Nextcloud username +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) +**`users`** | `array` | Required | Nextcloud User IDs to show statuses for, list size between `1` and `100` +**`showEmpty`** | `boolean` | _Optional_ | Show statuses without a message, defaults to `true` + + +##### Example + +```yaml +- type: nextcloud-userstatus + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx + users: ['bob', 'alice'] +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + +### Nextcloud Notifications + +Displays your notifications and allows deleting them. + + + +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Nextcloud username +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) +**`limit`** | `number\|string` | _Optional_ | Limit displayed notifications either by count, e.g. `5` to show the 5 most recent, or by age, e.g. `1d` to only show notifications not older than a day. Accepted suffixes for age limit are `m`, `h` and `d`. + + +##### Example + +```yaml +- type: nextcloud-userstatus + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx + limit: 6h +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + +### Nextcloud System + +Visualises overall memory utilisation and CPU load averages, shows server versions. + + + +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Must be a Nextcloud admin user +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) + +##### Example + +```yaml +- type: nextcloud-system + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + +### Nextcloud Stats + +Shows key usage statistics about your Nextcloud server. + + + +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Must be a Nextcloud admin user +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) + +##### Example + +```yaml +- type: nextcloud-stats + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + +### Nextcloud PHP Opcache Stats + +Shows statistics about PHP Opcache perforamnce on your Nextcloud server. + + + +##### Options + +**Field** | **Type** | **Required** | **Description** +--- | --- | --- | --- +**`hostname`** | `string` | Required | The URL of the Nextcloud server +**`username`** | `string` | Required | Must be a Nextcloud admin user +**`password`** | `string` | Required | Nextcloud app-password (create one in Settings -> Security) + +##### Example + +```yaml +- type: nextcloud-stats + useProxy: true + options: + hostname: https://nextcloud.example.com + username: alice + password: xxxxx-xxxxx-xxxxx-xxxxx +``` + +##### Info +- **CORS**: 🟠Proxied +- **Auth**: 🟢 Required +- **Price**: 🟢 Free +- **Host**: Self-Hosted (see [Nextcloud](https://nextcloud.com)) +- **Privacy**: _See [Nextcloud Privacy Policy](https://nextcloud.com/privacy)_ + +--- + ## System Resource Monitoring The easiest method for displaying system info and resource usage in Dashy is with [Glances](https://nicolargo.github.io/glances/). diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index a064eb67..efdaf631 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -303,6 +303,77 @@ "remaining": "Remaining", "up": "Up", "down": "Down" + }, + "nextcloud": { + "active": "active", + "and": "and", + "applications": "applications", + "available": "available", + "away": "Away", + "cache-full": "CACHE FULL", + "chat-room": "chat room", + "delete-all": "Deleta all", + "delete-notification": "Delete notification", + "disabled": "disabled", + "disk-quota": "Disk Quota", + "disk-space": "Disk Space", + "dnd": "Do Not Distrub", + "email": "email", + "enabled": "enabled", + "federated-shares-ucfirst": "Federated shares", + "federated-shares": "federated shares", + "files": "file{plural}", + "free": "free", + "groups": "groups", + "hit-rate": "hit rate", + "hits": "hits", + "home": "home", + "in": "in", + "keys": "keys", + "last-24-hours": "last 24 hours", + "last-5-minutes": "in the last 5 minutes", + "last-hour": "in the last hour", + "last-login": "Last login", + "last-restart": "Last restart", + "load-averages": "Load Averages over all CPU cores", + "local-shares": "Local shares", + "local": "local", + "max-keys": "max keys", + "memory-used": "memory used", + "memory-utilisation": "memory utilisation", + "memory": "memory", + "misses": "misses", + "no-notifications": "No notifications", + "no-pending-updates": "no pending updates", + "nothing-to-show": "Nothing to show here at this time", + "of-which": "of which", + "of": "of", + "offline": "Offline", + "online": "Online", + "other": "other", + "overall": "Ovarall", + "private-link": "private link", + "public-link": "public link", + "quota-enabled": "Disk Quota is {not}enabled for this user", + "received": "received", + "scripts": "scripts", + "sent": "sent", + "started": "Started", + "storages-by-type": "Storages by type", + "storages": "storage{plural}", + "strings-use": "strings use", + "tasks": "Tasks", + "total-files": "total files", + "total-users": "total users", + "total": "total", + "until": "Until", + "updates-available-for": "Updates are available for", + "updates-available": "update{plural} available", + "used": "used", + "user": "user", + "using": "using", + "version": "version", + "wasted": "wasted" } } } diff --git a/src/components/Widgets/NextcloudNotifications.vue b/src/components/Widgets/NextcloudNotifications.vue new file mode 100644 index 00000000..dd1d4f34 --- /dev/null +++ b/src/components/Widgets/NextcloudNotifications.vue @@ -0,0 +1,208 @@ + + + + + + diff --git a/src/components/Widgets/NextcloudPhpOpcache.vue b/src/components/Widgets/NextcloudPhpOpcache.vue new file mode 100644 index 00000000..645cac07 --- /dev/null +++ b/src/components/Widgets/NextcloudPhpOpcache.vue @@ -0,0 +1,203 @@ + + + + + + + diff --git a/src/components/Widgets/NextcloudStats.vue b/src/components/Widgets/NextcloudStats.vue new file mode 100644 index 00000000..5d43bc60 --- /dev/null +++ b/src/components/Widgets/NextcloudStats.vue @@ -0,0 +1,198 @@ + + + + + + + diff --git a/src/components/Widgets/NextcloudSystem.vue b/src/components/Widgets/NextcloudSystem.vue new file mode 100644 index 00000000..c07ded6e --- /dev/null +++ b/src/components/Widgets/NextcloudSystem.vue @@ -0,0 +1,230 @@ + + + + + + + diff --git a/src/components/Widgets/NextcloudUser.vue b/src/components/Widgets/NextcloudUser.vue new file mode 100644 index 00000000..1d84f825 --- /dev/null +++ b/src/components/Widgets/NextcloudUser.vue @@ -0,0 +1,206 @@ + + + + + + + diff --git a/src/components/Widgets/NextcloudUserStatus.vue b/src/components/Widgets/NextcloudUserStatus.vue new file mode 100644 index 00000000..37f8ae7c --- /dev/null +++ b/src/components/Widgets/NextcloudUserStatus.vue @@ -0,0 +1,202 @@ + + + + + + + diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue index d34d135d..7abb9790 100644 --- a/src/components/Widgets/WidgetBase.vue +++ b/src/components/Widgets/WidgetBase.vue @@ -321,6 +321,48 @@ @error="handleError" :ref="widgetRef" /> +