A highly customizable homepage (or startpage / application dashboard) with Docker and service API integrations.
Find a file
RoyK f656c2b46d
fix(service-helper): service detection with Docker Swarm
The current implementation of service detection focusses on containers.
However when using Docker Swarm this limits automatic service detection
to the containers running on the same node as homepage (or
docker-proxy). Detecting other services in the docker swarm is with the
current implementation not possible.

This commit fixes this by getting the appropriate labels from services
when Docker swarm is configured in the config file. This ensures that
the appropriate labels are gathered from the service definition instead
of the container definiation, thus allowing for automatic service
detection for the entire Docker swarm. Please note that in order for
this to function the homepage (or dockerproxy) should be running on a
manager node. Only the manager node is able to gather all the relevant
service labels.

Fixes: #752, #970, #955, #1255, #1045, #1496
2023-06-05 16:06:14 +02:00
.devcontainer Display Docker container's used memory instead of total memory 2023-03-28 19:40:09 +02:00
.github Update bug_report.yml 2023-05-28 19:49:02 -07:00
.vscode Decompose i18n labels for Unifi widget 2022-10-09 20:05:28 -07:00
images new logo and styling tweaks 2022-10-08 16:04:24 +03:00
k3d Issue with dotnext PVC preventing normal deployments 2023-01-18 10:05:12 -06:00
public Translated using Weblate (Turkish) 2023-06-01 13:50:54 +02:00
src fix(service-helper): service detection with Docker Swarm 2023-06-05 16:06:14 +02:00
.all-contributorsrc Update .all-contributorsrc 2022-11-06 21:58:47 +02:00
.babelrc forcefully disable next-swc 2022-09-07 12:14:06 +03:00
.dockerignore added k3d test scripts 2023-01-11 09:47:34 -06:00
.editorconfig first public source commit 2022-08-24 10:44:35 +03:00
.eslintrc.json starting of widget refactoring 2022-09-25 19:43:47 +03:00
.gitignore Display Docker container's used memory instead of total memory 2023-03-28 19:40:09 +02:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2022-09-13 20:56:08 +03:00
CONTRIBUTING.md Update CONTRIBUTING.md 2023-04-27 14:29:11 -07:00
docker-entrypoint.sh Use HOMEPAGE_BUILDTIME to revalidate container restart/recreate 2023-04-04 22:55:26 -07:00
Dockerfile Use HOMEPAGE_BUILDTIME to revalidate container restart/recreate 2023-04-04 22:55:26 -07:00
Dockerfile-tilt added k3d test scripts 2023-01-11 09:47:34 -06:00
jsconfig.json first public source commit 2022-08-24 10:44:35 +03:00
kubernetes.md added k3d test scripts 2023-01-11 09:47:34 -06:00
LICENSE Initial commit 2022-08-24 10:29:42 +03:00
next-i18next.config.js Fix rate unit displays 2022-12-08 15:54:01 -08:00
next.config.js refactor i18n to be server side 2022-09-25 19:43:00 +03:00
package-lock.json make osx-temperature-sensor optional 2023-04-04 14:27:44 -07:00
package.json make osx-temperature-sensor optional 2023-04-04 14:27:44 -07:00
pnpm-lock.yaml make osx-temperature-sensor optional 2023-04-04 14:27:44 -07:00
postcss.config.js first public source commit 2022-08-24 10:44:35 +03:00
README.md Update README.md 2023-03-21 14:19:18 -07:00
tailwind.config.js Include backdrop classes in css build 2023-05-19 12:32:18 -07:00

A modern (fully static, fast), secure (fully proxied), highly customizable application dashboard with integrations for more than 25 services and translations for over 15 languages. Easily configured via YAML files (or discovery via docker labels).

Linkedin - phelpsben

Docker Weblate

Features

  • Fast! The entire site is statically generated at build time, so you can expect instant load times
  • Secure! Every API request to backend services goes through a proxy server, so your API keys are never exposed to the frontend client.
  • Images built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6
    • Supports all Raspberry Pi's, most SBCs & Apple Silicon
  • Full i18n support with translations for Catalan, Chinese, Dutch, Finnish, French, German, Hebrew, Hungarian, Malay, Norwegian Bokmål, Polish, Portuguese, Portuguese (Brazil), Romanian, Russian, Spanish, Swedish and Yue
  • Service & Web Bookmarks
  • Docker Integration
    • Container status (Running / Stopped) & statistics (CPU, Memory, Network)
    • Automatic service discovery (via labels)
  • Service Integration
    • Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli, Plex and more
    • Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent and more
    • Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentik, Proxmox and more
  • Information Providers
    • Coin Market Cap, Mastodon and more
  • Information & Utility Widgets
    • System Stats (Disk, CPU, Memory)
    • Weather via OpenWeatherMap or Open-Meteo
    • Web Search Bar
    • UniFi Console, Glances and more
  • Instant "Quick-launch" search
  • Customizable
    • 21 theme colors with light and dark mode support
    • Background image support
    • Column and Row layout options

Support & Suggestions

If you have any questions, suggestions, or general issues, please start a discussion on the Discussions page.

For bug reports, please open an issue on the Issues page.

Getting Started

For configuration options, examples and more, please check out the homepage site.

With Docker

Using docker compose:

version: "3.3"
services:
  homepage:
    image: ghcr.io/benphelps/homepage:latest
    container_name: homepage
    ports:
      - 3000:3000
    volumes:
      - /path/to/config:/app/config # Make sure your local config directory exists
      - /var/run/docker.sock:/var/run/docker.sock:ro # (optional) For docker integrations

or docker run:

docker run -p 3000:3000 -v /path/to/config:/app/config -v /var/run/docker.sock:/var/run/docker.sock ghcr.io/benphelps/homepage:latest

With Node

First, clone the repository:

git clone https://github.com/benphelps/homepage.git

Then install dependencies and build the production bundle (I'm using pnpm here, you can use npm or yarn if you like):

pnpm install
pnpm build

If this is your first time starting, copy the src/skeleton directory to config/ to populate initial example config files.

Finally, run the server:

pnpm start

Configuration

Configuration files will be generated and placed on the first request.

Configuration is done in the /config directory using .yaml files. Refer to each config for the specific configuration options.

You may also check the homepage site for detailed configuration instructions, examples and more.

Development

Install NPM packages, this project uses pnpm (and so should you!):

pnpm install

Start the development server:

pnpm dev

Open http://localhost:3000 to start.

This is a Next.js application, see their doucmentation for more information:

Contributors

All Contributors