Skip to content

Commit

Permalink
Merge branch dev into main
Browse files Browse the repository at this point in the history
  • Loading branch information
shamoon committed Jan 1, 2025
2 parents d0937fe + ee5442c commit 0717607
Show file tree
Hide file tree
Showing 159 changed files with 1,425 additions and 738 deletions.
8 changes: 8 additions & 0 deletions .github/DISCUSSION_TEMPLATE/support.yml
Original file line number Diff line number Diff line change
Expand Up @@ -54,3 +54,11 @@ body:
description: Please include output from your [troubleshooting tests](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, if relevant. The troubleshooting steps often help to solve the problem.
*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.*
11 changes: 11 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,14 @@
<!--
==== STOP ====================
======== STOP ================
============ STOP ============
================ STOP ========
==================== 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.
-->

## Proposed change

<!--
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docker-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ jobs:
uses: docker/build-push-action@v6
with:
context: .
push: ${{ github.event_name != 'pull_request' && !(github.event_name == 'push' && startsWith(github.ref, 'refs/heads/feature')) }}
push: ${{ github.event_name != 'pull_request' }}
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
build-args: |
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/repo-maintenance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -212,9 +212,9 @@ jobs:
}
const CUTOFF_1_DAYS = 180;
const CUTOFF_1_COUNT = 5;
const CUTOFF_1_COUNT = 10;
const CUTOFF_2_DAYS = 365;
const CUTOFF_2_COUNT = 10;
const CUTOFF_2_COUNT = 20;
const cutoff1Date = new Date();
cutoff1Date.setDate(cutoff1Date.getDate() - CUTOFF_1_DAYS);
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ Homepage has built-in support for Docker, and can automatically discover and add

## Service Widgets

Homepage also has support for over 100 3rd party services, including all popular starr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd party APIs. See the [Service](https://gethomepage.dev/widgets/) page for more information.
Homepage also has support for hundreds of 3rd-party services, including all popular \*arr apps, and most popular self-hosted apps. Some examples include: Radarr, Sonarr, Lidarr, Bazarr, Ombi, Tautulli, Plex, Jellyfin, Emby, Transmission, qBittorrent, Deluge, Jackett, NZBGet, SABnzbd, etc. As well as service integrations, Homepage also has a number of information providers, sourcing information from a variety of external 3rd-party APIs. See the [Service](https://gethomepage.dev/widgets/) page for more information.

## Information Widgets

Expand Down
12 changes: 12 additions & 0 deletions docs/configs/docker.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,18 @@ labels:
- homepage.widget.fields=["field1","field2"] # optional
```

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
```

You can add specify fields for e.g. the [CustomAPI](../widgets/services/customapi.md) widget by using array-style dot notation:

```yaml
Expand Down
24 changes: 24 additions & 0 deletions docs/configs/info-widgets.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
---
title: Information Widgets
description: Homepage info widgets.
---

Information widgets are widgets that provide information about your system or environment and are displayed at the top of the homepage. You can find a list of all available info widgets under the [Info Widgets](../widgets/info/index.md) section.

Info widgets are defined in the widgets.yaml

Each widget has its own configuration options, which are detailed in the widget's documentation.

## Layout

Info widgets are displayed in the order they are defined in the `widgets.yaml` file. You can change the order by moving the widgets around in the file. However, some widgets (weather, search and datetime) are aligned to the right side of the screen which can affect the layout of the widgets.

## Adding A Link

You can add a link to an info widget such as the logo or text widgets by adding an `href` option, for example:

```yaml
logo:
href: https://example.com
target: _blank # Optional, can be set in settings
```
40 changes: 0 additions & 40 deletions docs/configs/service-widgets.md

This file was deleted.

71 changes: 71 additions & 0 deletions docs/configs/services.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,23 @@ Groups are defined as top-level array entries.
<img width="1038" alt="Service Groups" src="https://user-images.githubusercontent.com/82196/187040754-28065242-4534-4409-881c-93d1921c6141.png">
### Nested Groups
Groups can be nested by using the same format as the top-level groups.
```yaml
- Group A:
- Service A:
href: http://localhost/

- Group B:
- Service B:
href: http://localhost/

- Service C:
href: http://localhost/
```
## Services
Services are defined as array entries on groups,
Expand All @@ -43,6 +60,60 @@ Services are defined as array entries on groups,
<img width="1038" alt="Service Services" src="https://user-images.githubusercontent.com/82196/187040763-038023a2-8bee-4d87-b5cc-13447e7365a4.png">
### Service Widgets
Each service can have widgets attached to it (often matching the service type, but that's not forced).
In addition to the href of the service, you can also specify the target location in which to open that link. See [Link Target](settings.md#link-target) for more details.
Using Emby as an example, this is how you would attach the Emby service widget.
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widget:
type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
#### Multiple Widgets
Each service can have multiple widgets attached to it, for example:
```yaml
- Emby:
icon: emby.png
href: http://emby.host.or.ip/
description: Movies & TV Shows
widgets:
- type: emby
url: http://emby.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
- type: uptimekuma
url: http://uptimekuma.host.or.ip:port
slug: statuspageslug
```
#### 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.

**In all cases a widget will work and display all fields without specifying the `fields` property.**

```yaml
- Sonarr:
icon: sonarr.png
href: http://sonarr.host.or.ip
widget:
type: sonarr
fields: ["wanted", "queued"]
url: http://sonarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```

## Descriptions

Services may have descriptions,
Expand Down
53 changes: 49 additions & 4 deletions docs/configs/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 "/".
Expand Down Expand Up @@ -118,6 +126,22 @@ As an example, this would produce the following layout:

<img width="1260" alt="Screenshot 2022-09-15 at 8 03 57 PM" src="https://user-images.githubusercontent.com/82196/190466646-8ca94505-0fcf-4964-9687-3a6c7cd3144f.png">

### Icons-Only Layout

You can also specify the an icon-only layout for bookmarks, either like so:

```yaml
layout:
Media:
iconsOnly: true
```

or globally:

```yaml
bookmarksStyle: icons
```

### Sorting

Service groups and bookmark groups can be mixed in order, **but should use different group names**. If you do not specify any bookmark groups they will all show at the bottom of the page.
Expand All @@ -137,6 +161,27 @@ layout:
columns: 3
```

### Nested Groups

If your services config has nested groups, you can apply settings to these groups by nesting them in the layout block
and using the same settings. For example

```yaml
layout:
Group A:
style: row
columns: 4
Group C:
style: row
columns: 2
Nested Group A:
style: row
columns: 2
Nested Group B:
style: row
columns: 2
```

### Headers

You can hide headers for each section in the layout as well by passing `header` as false, like so:
Expand Down Expand Up @@ -348,12 +393,12 @@ This can also be set for individual services. Note setting this at the service l

## Providers

The `providers` section allows you to define shared API provider options and secrets. Currently this allows you to define your weather API keys in secret and is also the location of the Longhorn URL and credentials.
The `providers` section allows you to define shared API provider options and secrets.

```yaml
providers:
openweathermap: openweathermapapikey
weatherapi: weatherapiapikey
finnhub: yourfinnhubapikeyhere
longhorn:
url: https://longhorn.example.com
username: admin
Expand All @@ -363,10 +408,10 @@ providers:
You can then pass `provider` instead of `apiKey` in your widget configuration.

```yaml
- weatherapi:
- openweathermap:
latitude: 50.449684
longitude: 30.525026
provider: weatherapi
provider: openweathermap
```

## Quick Launch
Expand Down
5 changes: 3 additions & 2 deletions docs/installation/k8s.md
Original file line number Diff line number Diff line change
Expand Up @@ -175,6 +175,7 @@ data:
expanded: true
cpu: true
memory: true
network: default
- search:
provider: duckduckgo
target: _blank
Expand Down Expand Up @@ -209,7 +210,7 @@ rules:
- get
- list
- apiGroups:
- traefik.containo.us
- traefik.io
resources:
- ingressroutes
verbs:
Expand Down Expand Up @@ -370,7 +371,7 @@ prevent unnecessary re-renders on page loads and window / tab focusing. The
procedure for enabling sticky sessions depends on your Ingress controller. Below
is an example using Traefik as the Ingress controller.

```
```yaml
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
Expand Down
2 changes: 1 addition & 1 deletion docs/troubleshooting/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ hide:

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:

1. Ensure that you follow the rule mentioned on https://gethomepage.dev/configs/service-widgets/. **Unless otherwise noted, URLs should not end with a / or other API path. Each widget will handle the path on its own.**. This is very important as 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.**. Including a trailing slash can result in an error.

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.:

Expand Down
2 changes: 1 addition & 1 deletion docs/widgets/authoring/getting-started.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ self-hosted / open-source alternative, we ask that any widgets, etc. are develop

## New Feature Guidelines

- New features should usually 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 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.
- If you have ideas for a larger feature you may want to open a discussion first.

## Service Widget Guidelines
Expand Down
2 changes: 1 addition & 1 deletion docs/widgets/authoring/proxies.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ You can also pass API keys from the widget configuration to the proxy handler, f

### `credentialedProxyHandler`

A proxy handler that makes authenticated by setting request headers. Credentials are pulled from the widgets configuration.
A proxy handler that makes authenticated requests by setting request headers. Credentials are pulled from the widgets configuration.

By default the key is passed as an `X-API-Key` header. If you need to pass the key as something else, either add a case to the credentialedProxyHandler or create a new proxy handler.

Expand Down
Loading

0 comments on commit 0717607

Please sign in to comment.