### Start Homepage Server
Source: https://github.com/gethomepage/homepage/blob/dev/README.md
Run the Homepage server in production mode after installation. Ensure HOMEPAGE_ALLOWED_HOSTS is set.
```bash
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
```
--------------------------------
### Install dependencies and build
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/source.md
Install project dependencies and compile the production bundle.
```bash
pnpm install
pnpm build
```
--------------------------------
### Install Dependencies and Build
Source: https://github.com/gethomepage/homepage/blob/dev/README.md
Install project dependencies and build the production bundle using pnpm.
```bash
pnpm install
pnpm build
```
--------------------------------
### Configure Start URL
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/settings.md
Defines the start URL for installable PWA applications.
```yaml
startUrl: https://custom.url
```
--------------------------------
### Install Documentation Dependencies
Source: https://github.com/gethomepage/homepage/blob/dev/README.md
Installs the necessary dependencies to run the Zensical documentation locally. This command synchronizes the required packages.
```bash
uv sync
```
--------------------------------
### Install Homepage Helm Chart
Source: https://github.com/gethomepage/homepage/blob/dev/kubernetes.md
Install the Homepage application using the provided Helm chart. Ensure you have Helm installed and the repository added.
```sh
helm repo add jameswynn https://jameswynn.github.io/helm-charts
helm install my-release jameswynn/homepage
```
--------------------------------
### Start the server
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/source.md
Launch the homepage server with the required environment variable.
```bash
HOMEPAGE_ALLOWED_HOSTS=gethomepage.dev:1234 pnpm start
```
--------------------------------
### Example Docker Compose Environment
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/mcp.md
This example shows how to configure MCP and authentication in a Docker Compose environment block. Remember to change the default token.
```yaml
environment:
HOMEPAGE_MCP_ENABLED: "true"
HOMEPAGE_AUTH_ENABLED: "true"
HOMEPAGE_MCP_TOKEN: "change-me"
```
--------------------------------
### Start Homepage Development Server
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/getting-started.md
Starts the local development server for the Homepage project. This allows for real-time development and testing of features. The application will be accessible at http://localhost:3000.
```bash
pnpm dev
```
--------------------------------
### HDHomerun Widget Configuration Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/hdhomerun.md
Example YAML configuration for the HDHomerun widget. Specify the widget type, HDHomerun URL, optional tuner, and desired fields.
```yaml
widget:
type: hdhomerun
url: http://hdhomerun.host.or.ip
tuner: 0 # optional - defaults to 0, used for tuner-specific fields
fields: ["channels", "hd"] # optional - default fields shown
```
--------------------------------
### Configure Widget Metadata: Advanced Example (JavaScript)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/metadata.md
An advanced example of widget metadata configuration, utilizing a credentialed proxy handler and more complex mappings with data transformation and filtering.
```javascript
import credentialedProxyHandler from "utils/proxy/handlers/credentialed";
import { asJson, jsonArrayFilter } from "utils/proxy/api-helpers";
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: credentialedProxyHandler,
mappings: {
stats: {
endpoint: "stats",
validate: ["total", "average"],
params: ["start", "end"],
},
notices: {
endpoint: "notices",
map: (data) => {
total: asJson(data).length;
},
},
warnings: {
endpoint: "notices",
map: (data) => {
total: jsonArrayFilter(data, (alert) => alert.type === "warning").length;
},
},
},
};
```
--------------------------------
### Install Dependencies with pnpm
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/getting-started.md
Installs all necessary project dependencies using the pnpm package manager. This is a prerequisite for running the development server and other project commands.
```bash
pnpm install
```
--------------------------------
### Serve or Build Documentation
Source: https://github.com/gethomepage/homepage/blob/dev/README.md
Starts the Zensical documentation development server or builds the static documentation site. Use 'serve' for local development and 'build' for creating the static files.
```bash
uv run zensical serve
```
```bash
uv run zensical build
```
--------------------------------
### Configure Widget Metadata: Basic Example (JavaScript)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/metadata.md
A basic example of a widget's metadata object, defining the API endpoint and a generic proxy handler. It includes a simple mapping for stats.
```javascript
import genericProxyHandler from "utils/proxy/handlers/generic";
const widgetExample = {
api: "{url}/api/{endpoint}",
proxyHandler: genericProxyHandler,
mappings: {
stats: { endpoint: "stats" }
},
};
```
--------------------------------
### Install pnpm
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/source.md
Install the pnpm package manager globally if it is not already present.
```bash
npm install -g pnpm
```
--------------------------------
### Arcane Widget Configuration Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/arcane.md
Example configuration for the Arcane widget. Set the widget type, URL, environment, API key, and optionally specify fields to display.
```yaml
widget:
type: arcane
url: http://localhost:3552
env: 0 # required, 0 is Arcane default local environment
key: your-api-key
fields: ["running", "stopped", "total", "image_updates"] # optional
```
--------------------------------
### Configure Info Widgets in widgets.yaml
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/index.md
Demonstrates the configuration of Info widgets within the `widgets.yaml` file. This example shows how to set up an 'openmeteo' widget, including its label, latitude, longitude, and cache duration for displaying weather information.
```yaml
- openmeteo:
label: Current
latitude: 36.66
longitude: -117.51
cache: 5
```
--------------------------------
### Configure Docker Service Integration
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/unraid.md
Example YAML configuration for adding a service to Homepage using the container parameter for Docker integration.
```yaml
- Plex:
icon: /icons/plex.png
href: https://app.plex.com
container: plex
```
--------------------------------
### Clone Homepage Repository
Source: https://github.com/gethomepage/homepage/blob/dev/README.md
Clone the official Homepage repository from GitHub to begin installation from source.
```bash
git clone https://github.com/gethomepage/homepage.git
```
--------------------------------
### Gitea Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/gitea.md
This snippet shows a basic YAML configuration for the Gitea widget. It specifies the widget type, the Gitea instance URL, and the API key. Ensure the API key has the required permissions.
```yaml
widget:
type: gitea
url: http://gitea.host.or.ip:port
key: giteaapitoken
```
--------------------------------
### Configure Widget API Endpoint (JavaScript)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/metadata.md
Example demonstrating the `api` property in widget metadata, which specifies the URL for fetching data and supports runtime placeholders.
```javascript
const widgetExample = {
api: "{url}/api/{endpoint}",
};
```
--------------------------------
### Unraid Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/unraid.md
This YAML configuration defines the settings for the Unraid widget, specifying the server URL, API key, and optional pool names for detailed monitoring. It allows selection from a predefined list of metrics.
```yaml
widget:
type: unraid
url: https://unraid.host.or.ip
key: api-key
pool1: pool1name # required only if using pool1 fields
pool2: pool2name # required only if using pool2 fields
pool3: pool3name # required only if using pool3 fields
pool4: pool4name # required only if using pool4 fields
```
--------------------------------
### Implement Widget Container and Block Components
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/component.md
Examples of using the Container wrapper for layout and the Block component for displaying key-value pairs. These components ensure a consistent look and feel across all widgets.
```jsx
```
--------------------------------
### pfSense Widget Configuration (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/pfsense.md
Example YAML configuration for the pfSense widget, showing settings for API URL, authentication, monitored interface, and desired fields. Supports different API versions.
```yaml
widget:
type: pfsense
url: http://pfsense.host.or.ip:port
username: user # optional, or API key
password: pass # optional, or API key
headers: # optional, or username/password
X-API-Key: key
wan: igb0
version: 2 # optional, defaults to 1 for api v1
fields: ["load", "memory", "temp", "wanStatus"] # optional
```
```yaml
headers: # optional, or username/password
Authorization: client_id client_token # obtained from pfSense API
version: 1
```
--------------------------------
### Deploy Homepage with Docker Run
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/docker.md
A single-line command to start the Homepage container using the docker run utility. It maps ports, mounts volumes, and sets the required environment variables.
```bash
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
```
--------------------------------
### Configure Multiple Service Widgets in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/services.md
This YAML example demonstrates configuring multiple widgets for a single service. It shows how to define an array of widgets, each with its own type, URL, and specific parameters like API keys or slugs.
```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
```
--------------------------------
### Configure Proxmox Services
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/proxmox.md
Examples for defining services that track Proxmox resources. Supports both QEMU VMs and LXC containers by specifying the node name, VM ID, and optional container type.
```yaml
- HomeAssistant:
icon: home-assistant.png
href: http://homeassistant.local/
description: Home automation
proxmoxNode: pve
proxmoxVMID: 101
- Nginx:
icon: nginx.png
href: http://nginx.local/
description: Web server
proxmoxNode: pve
proxmoxVMID: 200
proxmoxType: lxc
```
--------------------------------
### Synology Disk Station Widget Configuration Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/diskstation.md
This YAML snippet shows the basic configuration for the Synology Disk Station widget. It includes the widget type, the DiskStation's URL, username, password, and an optional volume parameter to specify which volume's free space to display.
```yaml
widget:
type: diskstation
url: http://diskstation.host.or.ip:port
username: username
password: password
volume: volume_N # optional
```
--------------------------------
### Configure Sonarr Widget (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/sonarr.md
Example YAML configuration for the Sonarr widget. This includes the Sonarr instance URL, API key, and an optional flag to enable detailed queue listing. Ensure the URL and API key are correctly set for proper functionality.
```yaml
widget:
type: sonarr
url: http://sonarr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
enableQueue: true # optional, defaults to false
```
--------------------------------
### Configure Widget Mappings with Data Processing (JavaScript)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/metadata.md
Example of the `mappings` property in widget metadata, showing how to define API endpoints, validation rules, and data mapping functions.
```javascript
import { asJson } from "utils/proxy/api-helpers";
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats?start=...&end=...`
stats: {
endpoint: "stats",
validate: ["total", "average"],
params: ["start", "end"],
},
// `/api/notices`
notices: {
endpoint: "notices",
map: (data) => {
total: asJson(data).length;
},
},
},
};
```
--------------------------------
### Example MCP List Config Files Request
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/mcp.md
This cURL command demonstrates how to request a list of configuration files using the MCP endpoint. It includes the necessary headers and a JSON-RPC payload.
```bash
curl -s http://localhost:3000/api/mcp \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer your-token' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```
--------------------------------
### Navidrome Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/navidrome.md
This snippet shows the basic configuration structure for the Navidrome widget. It includes the widget type, server URL, username, and authentication token details. The token is generated using MD5 hashing of the password and a salt.
```yaml
widget:
type: navidrome
url: http://navidrome.host.or.ip:port
user: username
token: token #md5(password + salt)
salt: randomsalt
```
--------------------------------
### Configure Manual Service Widget
Source: https://github.com/gethomepage/homepage/blob/dev/kubernetes.md
Manually configure a Service Widget by specifying the application name and namespace. This example configures a Home Assistant widget.
```yaml
- Home Automation
- Home-Assistant:
icon: home-assistant.png
href: https://home.example.com
description: Home Automation
app: home-assistant
namespace: home
```
--------------------------------
### Unmanic Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/unmanic.md
This YAML snippet demonstrates the basic configuration for the Unmanic widget. It requires the widget type to be set to 'unmanic' and specifies the URL for the Unmanic instance. Ensure the URL includes the correct host or IP address and port.
```yaml
widget:
type: unmanic
url: http://unmanic.host.or.ip:port
```
--------------------------------
### Wallos Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/wallos.md
This snippet shows a basic YAML configuration for the Wallos widget. It specifies the widget type, the URL for the Wallos service, and an API key for authentication. This configuration is essential for integrating Wallos into your project.
```yaml
widget:
type: wallos
url: http://wallos.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
--------------------------------
### Configure Mailcow Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/mailcow.md
Example configuration for the Mailcow widget. Ensure you replace 'mailcow.host.or.ip' with your Mailcow server's actual address and 'mailcowapikey' with your generated API key.
```yaml
widget:
type: mailcow
url: https://mailcow.host.or.ip
key: mailcowapikey
```
--------------------------------
### EVCC Widget Configuration Example (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/evcc.md
This snippet shows a basic YAML configuration for the EVCC widget. It specifies the widget type and the URL to connect to the EVCC instance. Ensure the URL points to your running EVCC service.
```yaml
widget:
type: evcc
url: http://evcc.host.or.ip:port
```
--------------------------------
### Assign Docker Instance to a Service
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Example configuration for assigning a previously configured Docker instance to a service within the homepage application for stats and status reporting.
```yaml
- Emby:
icon: emby.png
href: "http://emby.home/"
description: Media server
server: my-docker
container: emby
```
--------------------------------
### Complete Widget Component File (React/JSX)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/tutorial.md
Presents the entire 'component.jsx' file, combining all previously shown code snippets. This provides a full example of the widget component's implementation.
```jsx
import { useTranslation } from "next-i18next";
import Container from "components/services/widget/container";
import Block from "components/services/widget/block";
import useWidgetAPI from "utils/proxy/use-widget-api";
export default function Component({ service }) {
const { t } = useTranslation();
const { widget } = service;
```
--------------------------------
### Pulse Widget Configuration Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/pulse.md
This YAML snippet shows the basic configuration for the Pulse widget. Ensure the 'key' field has an API token with the 'monitoring:read' scope. The 'fields' array is optional and specifies which data points to display.
```yaml
widget:
type: pulse
url: http://pulse.host.or.ip:7655
key: your-api-token # `monitoring:read` scope is required
fields: ["nodes", "vms", "lxcs"] # optional
```
--------------------------------
### Mikrotik Widget Configuration (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/mikrotik.md
Example configuration for the Mikrotik widget in YAML format. This includes the widget type, the Mikrotik host or IP address, and authentication credentials. HTTPS is recommended for secure communication.
```yaml
widget:
type: mikrotik
url: https://mikrotik.host.or.ip
username: username
password: password
```
--------------------------------
### PhotoPrism Widget Configuration (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/photoprism.md
Example YAML configuration for the PhotoPrism widget. It specifies the widget type, PhotoPrism instance URL, and authentication credentials. Authentication can be done using either a username/password pair or an app-specific password.
```yaml
widget:
type: photoprism
url: http://photoprism.host.or.ip:port
username: admin # required only if using username/password
password: password # required only if using username/password
key: # required only if using app passwords
```
--------------------------------
### Configure Quick Launch
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/settings.md
Set global options for the Quick Launch feature, including search providers and behavior.
```yaml
quicklaunch:
searchDescriptions: true
hideInternetSearch: true
showSearchSuggestions: true
hideVisitURL: true
provider: google # google, duckduckgo, bing, baidu, brave or custom
```
```yaml
quicklaunch:
provider: custom
url: https://www.ecosia.org/search?q=
target: _blank
suggestionUrl: https://ac.ecosia.org/autocomplete?type=list&q=
```
--------------------------------
### Configure Home Assistant Widget via YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/homeassistant.md
This YAML configuration demonstrates how to connect to a Home Assistant instance using a URL and access token. It also shows how to define custom states and templates to monitor specific entities like power sensors, energy usage, and switch counts.
```yaml
widget:
type: homeassistant
url: http://homeassistant.host.or.ip:port
key: access_token
custom:
- state: sensor.total_power
- state: sensor.total_energy_today
label: energy today
- template: "{{ states.switch|selectattr('state','equalto','on')|list|length }}"
label: switches on
- state: weather.forecast_home
label: wind speed
value: "{attributes.wind_speed} {attributes.wind_speed_unit}"
```
--------------------------------
### Configure Widget Field Visibility in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/services.md
This YAML example demonstrates how to specify which fields should be visible for a service widget. By using the `fields` property, you can control the displayed information, as shown with the Sonarr service example which limits fields to 'wanted' and 'queued'.
```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
```
--------------------------------
### Configure Multiple Homepage Instances
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Demonstrates how to scope specific labels to a particular Homepage instance using the instance name in the label key.
```yaml
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.instance.internal.href=http://emby.lan/
- homepage.instance.public.href=https://emby.mydomain.com/
- homepage.description=Media server
```
--------------------------------
### GET /gethomepage/homepage
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/iframe.md
Configuration schema for the iFrame widget used to embed external content.
```APIDOC
## GET /gethomepage/homepage
### Description
Defines the configuration for an iFrame widget to display external content. Note that requests are made directly from the browser and are not proxied.
### Method
GET
### Endpoint
/gethomepage/homepage
### Request Body
- **widget** (object) - Required - The widget configuration object.
- **type** (string) - Required - Must be "iframe".
- **name** (string) - Required - Unique identifier for the widget.
- **src** (string) - Required - The URL to be displayed in the iFrame.
- **classes** (string) - Optional - Tailwind CSS height classes.
- **referrerPolicy** (string) - Optional - Referrer policy for the iFrame.
- **allowPolicy** (string) - Optional - Permissions policy string.
- **allowFullscreen** (boolean) - Optional - Whether to allow fullscreen mode (default: true).
- **loadingStrategy** (string) - Optional - Loading strategy (default: "eager").
- **allowScrolling** (string) - Optional - Whether to allow scrolling (default: "yes").
- **refreshInterval** (integer) - Optional - Refresh interval in milliseconds.
### Request Example
```yaml
widget:
type: iframe
name: myIframe
src: http://example.com
classes: h-60
allowFullscreen: false
```
### Response
#### Success Response (200)
- **status** (string) - Success message indicating the widget configuration was retrieved.
```
--------------------------------
### GET /gethomepage/homepage
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/homeassistant.md
Retrieves the current state and custom template data from a configured Home Assistant instance.
```APIDOC
## GET /gethomepage/homepage
### Description
Retrieves status information from Home Assistant based on provided configuration fields or custom state/template queries.
### Method
GET
### Endpoint
/gethomepage/homepage
### Parameters
#### Query Parameters
- **url** (string) - Required - The base URL of the Home Assistant instance (e.g., http://host:port)
- **key** (string) - Required - The long-lived access token for authentication
- **fields** (array) - Optional - Allowed fields: ["people_home", "lights_on", "switches_on"]
- **custom** (array) - Optional - List of custom state or template objects to query
### Request Example
{
"url": "http://homeassistant.local:8123",
"key": "ABC123TOKEN",
"custom": [
{ "state": "sensor.total_power" },
{ "template": "{{ states.switch|list|length }}", "label": "switches on" }
]
}
### Response
#### Success Response (200)
- **data** (object) - The requested state values and template results
#### Response Example
{
"sensor.total_power": "150 W",
"switches on": "5"
}
```
--------------------------------
### Configure PWA Icons
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/settings.md
Define custom icons for installable apps using full URLs or local paths relative to /app/public.
```yaml
pwa:
icons:
- src: https://developer.mozilla.org/favicon-192x192.png
type: image/png
sizes: 192x192
- src: https://developer.mozilla.org/favicon-512x512.png
type: image/png
sizes: 512x512
```
--------------------------------
### Clone the repository
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/source.md
Initial step to download the source code from GitHub.
```bash
git clone https://github.com/gethomepage/homepage.git
```
--------------------------------
### Lint Code with pnpm
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/getting-started.md
Lints the project's codebase to ensure code quality and consistency. This command should be run after installing dependencies.
```bash
pnpm lint
```
--------------------------------
### Add Service Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/mcp.md
This JSON payload can be sent to the MCP endpoint to add a new service entry to services.yaml. Ensure HOMEPAGE_MCP_ALLOW_WRITE is enabled.
```json
{
"group": "Media",
"name": "Plex",
"service": {
"href": "https://plex.example.com",
"icon": "plex.png",
"description": "Movies and TV",
"widget": {
"type": "plex",
"url": "https://plex.example.com",
"key": "your-api-key"
}
}
}
```
--------------------------------
### Add Info Widget Example
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/mcp.md
This JSON payload can be used with the MCP endpoint to add a new information widget to widgets.yaml. Ensure HOMEPAGE_MCP_ALLOW_WRITE is enabled.
```json
{
"type": "openmeteo",
"options": {
"label": "Current",
"latitude": 36.66,
"longitude": -117.51,
"cache": 5
}
}
```
--------------------------------
### Enable Full Width Layout
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/settings.md
Set the homepage to occupy the entire window width.
```yaml
fullWidth: true
```
--------------------------------
### Kubernetes Ingress for Service Discovery
Source: https://github.com/gethomepage/homepage/blob/dev/kubernetes.md
Define a Kubernetes Ingress resource to enable service discovery for Homepage. This example sets up an Ingress for the Homepage service.
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: homepage
annotations:
gethomepage.dev/enabled: "true"
gethomepage.dev/description: Dynamically Detected Homepage
gethomepage.dev/group: Operations
gethomepage.dev/icon: homepage.png
gethomepage.dev/name: Homepage
spec:
rules:
- host: homepage.example.com
http:
paths:
- backend:
service:
name: homepage
port:
number: 3000
path: /
pathType: Prefix
```
--------------------------------
### Configure Service via Docker Labels
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Demonstrates how to define a service in a Docker Compose file using homepage-specific labels for automatic discovery.
```yaml
services:
emby:
image: lscr.io/linuxserver/emby:latest
container_name: emby
ports:
- 8096:8096
restart: unless-stopped
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.href=http://emby.home/
- homepage.description=Media server
```
--------------------------------
### Map API JSON Data
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/customapi.md
Example of mapping specific JSON fields from an API response to widget labels using dot notation or array indexing.
```yaml
mappings:
- field: name
label: Name
- field: status
label: Status
- field: origin.name
label: Origin
- field: locations.1.name
label: Location
```
--------------------------------
### GET /gethomepage/homepage (Azure DevOps Widget)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/azuredevops.md
Configures and retrieves data for the Azure DevOps widget, supporting both pipeline status tracking and pull request metrics.
```APIDOC
## GET /gethomepage/homepage
### Description
Retrieves status updates for Azure DevOps pipelines or metrics for pull requests based on the provided configuration parameters.
### Method
GET
### Endpoint
/gethomepage/homepage
### Parameters
#### Request Body (Configuration Object)
- **type** (string) - Required - Must be "azuredevops"
- **organization** (string) - Required - The Azure DevOps organization name
- **project** (string) - Required - The project name
- **definitionId** (string) - Optional - Required for pipeline queries
- **branchName** (string) - Optional - Specific branch for pipeline tracking
- **userEmail** (string) - Optional - Required for pull request queries
- **repositoryId** (string) - Optional - Required for pull request queries
- **key** (string) - Required - Personal Access Token (PAT)
### Request Example
{
"widget": {
"type": "azuredevops",
"organization": "myOrganization",
"project": "myProject",
"definitionId": "pipelineDefinitionId",
"userEmail": "email",
"repositoryId": "prRepositoryId",
"key": "personalaccesstoken"
}
}
### Response
#### Success Response (200)
- **result** (string) - Pipeline status result
- **status** (string) - Pipeline execution status
- **totalPrs** (integer) - Count of open PRs
- **myPrs** (integer) - Count of PRs opened by the user
- **approved** (integer) - Count of user PRs with at least one approval
#### Response Example
{
"result": "succeeded",
"status": "completed",
"totalPrs": 5,
"myPrs": 2,
"approved": 1
}
```
--------------------------------
### JDownloader Widget Configuration (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/jdownloader.md
This YAML configuration sets up the JDownloader widget. It requires user credentials and the client name for the JDownloader instance. The widget can display various download queue metrics.
```yaml
widget:
type: jdownloader
username: JDownloader Username
password: JDownloader Password
client: Name of JDownloader Instance
```
--------------------------------
### Configure Traefik Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/traefik.md
Example YAML configuration for the Traefik widget. This specifies the widget type, the Traefik instance URL, and optional username and password for authentication if required.
```yaml
widget:
type: traefik
url: http://traefik.host.or.ip
username: username # optional
password: password # optional
```
--------------------------------
### Docker Compose for Docker Socket Proxy
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Example docker-compose configuration to set up a docker-socket-proxy container. This proxy exposes the Docker socket with restricted access, enhancing security.
```yaml
dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy
environment:
- CONTAINERS=1
- SERVICES=1
- TASKS=1
- POST=0
ports:
- 127.0.0.1:2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
restart: unless-stopped
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
volumes:
- /path/to/config:/app/config
ports:
- 3000:3000
restart: unless-stopped
```
--------------------------------
### Define Multiple Glances Metrics
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/glances.md
Examples of defining multiple monitoring widgets for different system metrics such as CPU and network usage. Each entry acts as a standalone service block.
```yaml
- CPU Usage:
widget:
type: glances
url: http://glances.host.or.ip:port
metric: cpu
- Network Usage:
widget:
type: glances
url: http://glances.host.or.ip:port
metric: network:enp0s25
```
--------------------------------
### Configure Uptime Kuma Widget (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/uptime-kuma.md
This YAML configuration snippet shows how to set up the Uptime Kuma widget. It requires the widget type, the URL of the Uptime Kuma instance, and the slug of the status page to be monitored. Ensure the URL includes the correct port if it's not the default.
```yaml
widget:
type: uptimekuma
url: http://uptimekuma.host.or.ip:port
slug: statuspageslug
```
--------------------------------
### Docker Compose for Direct Socket Access
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Example docker-compose configuration for the homepage container to directly access the host's Docker socket. Ensure the socket is mounted as a volume.
```yaml
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
volumes:
- /path/to/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock
ports:
- 3000:3000
restart: unless-stopped
```
--------------------------------
### Configure Moonraker Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/moonraker.md
Basic configuration for the Moonraker widget using the printer's host URL. This setup allows the widget to retrieve printer status and progress information.
```yaml
widget:
type: moonraker
url: http://moonraker.host.or.ip:port
```
--------------------------------
### qBittorrent Widget Configuration
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/qbittorrent.md
Configure the qBittorrent widget with your WebUI URL, authentication credentials (username/password or API key), and optional fields like leech progress and size.
```yaml
widget:
type: qbittorrent
url: http://qbittorrent.host.or.ip
username: username
password: password
key: qbt_apikey # required if using API key instead of username/password
enableLeechProgress: true # optional, defaults to false
enableLeechSize: true # optional, defaults to false
```
--------------------------------
### Configure Service Icons
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/services.md
Demonstrates how to assign icons to services using local files, remote URLs, or integrated icon libraries like Material Design Icons and Simple Icons.
```yaml
- Group A:
- Sonarr:
icon: sonarr.png
href: http://sonarr.host/
description: Series management
- Group B:
- Radarr:
icon: radarr.png
href: http://radarr.host/
description: Movie management
- Group C:
- Service:
icon: mdi-flask-outline
href: http://service.host/
description: My cool service
```
--------------------------------
### Configure Gotify Widget (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/gotify.md
This snippet shows the basic YAML configuration for the Gotify widget. It requires the Gotify server URL and a client access key. Ensure you replace the placeholder values with your actual Gotify server details and client token obtained from the Gotify admin page.
```yaml
widget:
type: gotify
url: http://gotify.host.or.ip
key: clientoken
```
--------------------------------
### SWAG Dashboard Widget YAML Configuration
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/swagdashboard.md
Example YAML configuration for setting up the SWAG Dashboard widget. It specifies the widget type and the URL for the SWAG Dashboard service, including the default port.
```yaml
widget:
type: swagdashboard
url: http://swagdashboard.host.or.ip:adminport # default port is 81
```
--------------------------------
### Configure Your Spotify Widget in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/yourspotify.md
This YAML configuration block defines the widget type, server URL, API key, and data interval. Ensure the URL includes the /api/ path if using the LinuxServer.io Docker image.
```yaml
widget:
type: yourspotify
url: http://your-spotify-server.host.or.ip/api/
key: apikeyapikeyapikeyapikeyapikey
interval: month
```
--------------------------------
### Define Nested Service Groups in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/services.md
This YAML example illustrates how to create nested service groups. A group can contain other groups, allowing for hierarchical organization of services. Each service requires an `href`.
```yaml
- Group A:
- Service A:
href: http://localhost/
- Group B:
- Service B:
href: http://localhost/
- Service C:
href: http://localhost/
```
--------------------------------
### Configure Homebox Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/homebox.md
This YAML configuration sets up the Homebox widget. It requires the widget type, the Homebox instance URL, and authentication credentials (username and password). Optionally, you can specify which fields to display, with a limit of the first four if more are provided. The `totalValue` field formatting depends on your Homebox currency configuration.
```yaml
widget:
type: homebox
url: http://homebox.host.or.ip:port
username: username
password: password
fields: ["items", "locations", "totalValue"] # optional - default fields shown
```
--------------------------------
### Configure Homepage to Use Docker Socket Directly
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Configure the homepage application to connect directly to the Docker socket. This requires passing the local Docker socket into the homepage container and may require running homepage as root.
```yaml
my-docker:
socket: /var/run/docker.sock
```
--------------------------------
### Configure Service Widget with Pod Selector
Source: https://github.com/gethomepage/homepage/blob/dev/kubernetes.md
Configure a Service Widget using a 'pod-selector' to target specific pods, useful for complex deployments. This example targets multiple Matrix Synapse related deployments.
```yaml
- Comms
- Element Chat:
icon: matrix-light.png
href: https://chat.example.com
description: Matrix Synapse Powered Chat
app: matrix-element
namespace: comms
pod-selector: >-
app.kubernetes.io/instance in (
matrix-element,
matrix-media-repo,
matrix-media-repo-postgresql,
matrix-synapse
)
```
--------------------------------
### Configure Headscale Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/headscale.md
Use this YAML configuration to set up the Headscale widget. Ensure you replace placeholders with your actual Headscale URL, node ID, and API access token. API tokens can be generated via the `headscale apikeys create` command.
```yaml
widget:
type: headscale
url: http://headscale.host.or.ip:port
nodeId: nodeid
key: headscaleapiaccesstoken
```
--------------------------------
### Define API Parameters for Stats Endpoint
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/authoring/metadata.md
This snippet demonstrates how to define parameters for an API endpoint. The `params` array specifies keys that will be replaced with actual values at runtime. This example uses JavaScript for a widget configuration.
```javascript
const widgetExample = {
api: "{url}/api/{endpoint}",
mappings: {
// `/api/stats?start=...&end=`
stats: {
endpoint: "stats",
params: ["start", "end"],
},
},
};
const { data: statsData, error: statsError } = useWidgetAPI(widget, "stats", {
start: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000),
end: new Date(),
});
```
--------------------------------
### Configure NetAlertX Widget in Homepage
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/netalertx.md
This YAML snippet demonstrates how to define the NetAlertX widget in the Homepage configuration file. It requires the base URL, an API token for authentication, and the appropriate version number to match your NetAlertX installation.
```yaml
widget:
type: netalertx
url: http://ip:port
key: yournetalertxapitoken
version: 2
```
--------------------------------
### Configure Seerr Widget in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/seerr.md
This snippet demonstrates the required YAML structure to initialize the Seerr widget. It requires the base URL of your Seerr instance and a valid API key obtained from the application settings.
```yaml
widget:
type: seerr
url: http://seerr.host.or.ip
key: apikeyapikeyapikeyapikeyapikey
```
--------------------------------
### Deploy Homepage with Docker Compose
Source: https://github.com/gethomepage/homepage/blob/dev/docs/installation/docker.md
Standard configuration for running Homepage using a docker-compose.yml file. It maps ports, mounts configuration volumes, and sets required environment variables.
```yaml
services:
homepage:
image: ghcr.io/gethomepage/homepage:latest
container_name: homepage
ports:
- 3000:3000
volumes:
- /path/to/config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
HOMEPAGE_ALLOWED_HOSTS: gethomepage.dev
```
--------------------------------
### QNAP Widget Basic Configuration (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/qnap.md
This YAML snippet shows the basic configuration for the QNAP widget. It includes the widget type, the device's URL, and authentication credentials. This configuration is essential for the widget to connect to and retrieve data from the QNAP device.
```yaml
widget:
type: qnap
url: http://qnap.host.or.ip:port
username: user
password: pass
```
--------------------------------
### Configure Audiobookshelf Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/audiobookshelf.md
Use this YAML configuration to set up the Audiobookshelf widget. Ensure you replace the placeholder URL and API key with your actual Audiobookshelf instance details.
```yaml
widget:
type: audiobookshelf
url: http://audiobookshelf.host.or.ip:port
key: audiobookshelflapikey
```
--------------------------------
### Apply Data Transformations
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/customapi.md
Demonstrates how to use transformation tools like remap, scale, prefix, and suffix to modify API data before display.
```yaml
- field: key4
label: Field 4
format: text
remap:
- value: 0
to: None
- value: 1
to: Connected
- any: true
to: Unknown
- field: key5
label: Power
format: float
scale: 0.001
suffix: "kW"
- field: key6
label: Price
format: float
prefix: "$"
```
--------------------------------
### Configure Widgets via Docker Labels
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/docker.md
Shows how to attach widget metadata to a service using dot notation in Docker labels, including support for fields and multiple widgets.
```yaml
labels:
- homepage.group=Media
- homepage.name=Emby
- homepage.icon=emby.png
- homepage.href=http://emby.home/
- homepage.description=Media server
- homepage.widget.type=emby
- homepage.widget.url=http://emby.home
- homepage.widget.key=yourembyapikeyhere
- homepage.widget.fields=["field1","field2"]
```
--------------------------------
### Configure Date & Time Widget Display (YAML)
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/info/datetime.md
This YAML configuration snippet demonstrates how to set up the datetime widget. It specifies the text size and formatting options for displaying the time, such as 'short' time style.
```yaml
- datetime:
text_size: xl
format:
timeStyle: short
```
```yaml
# 13:37
format:
timeStyle: short
hourCycle: h23
```
```yaml
# 1:37 PM
format:
timeStyle: short
hour12: true
```
```yaml
# 1/23/22, 1:37 PM
format:
dateStyle: short
timeStyle: short
hour12: true
```
```yaml
# 4 januari 2023 om 13:51:25 PST
locale: nl
format:
dateStyle: long
timeStyle: long
```
--------------------------------
### Configure Widget with Custom HTTP Headers in YAML
Source: https://github.com/gethomepage/homepage/blob/dev/docs/configs/services.md
This YAML snippet shows how to add custom HTTP headers to a service widget configuration. This is useful for passing authentication tokens or other required headers to a reverse proxy. The example uses UptimeRobot.
```yaml
- UptimeRobot:
icon: uptimekuma.png
href: https://uptimerobot.com/
widget:
type: uptimerobot
url: https://api.uptimerobot.com
key: ${UPTIMEROBOT_API_KEY}
headers:
User-Agent: homepage
X-Auth-Key: your-secret-here
```
--------------------------------
### Configure Trilium Widget
Source: https://github.com/gethomepage/homepage/blob/dev/docs/widgets/services/trilium.md
Use this YAML configuration to set up the Trilium widget. Ensure you replace 'https://trilium.host.or.ip' with your Trilium instance's URL and 'etapi_token' with your actual ETAPI key.
```yaml
widget:
type: trilium
url: https://trilium.host.or.ip
key: etapi_token
```