Gradually, as you start using more services, you may find it difficult to remember the port and domain name where a particular service is located. In such a situation, a homepage can be helpful.
A homepage is a small website where you can gather all your services, add widgets, and bookmarks to websites.
Main advantages of homepage
- The entire site is statically generated at build time, so you can expect instant load times.
- Every API request to backend services goes through a proxy server, so your API keys will never be exposed to the frontend client
- Koneiner image built for AMD64 (x86_64), ARM64, ARMv7 and ARMv6 Supports all Raspberry Pi, most SBC and Apple Silicon
- Full i18n support with automatic language detection
- Instant “Quick Start” search
- Support for widgets
- Integration with Sonarr, Radarr, Readarr, Prowlarr, Bazarr, Lidarr, Emby, Jellyfin, Tautulli, Plex, Ombi, Overseerr, Jellyseerr, Jackett, NZBGet, SABnzbd, ruTorrent, Transmission, qBittorrent , Portainer, Traefik, Speedtest Tracker, PiHole, AdGuard Home, Nginx Proxy Manager, Gotify, Syncthing Relay Server, Authentik, Proxmox and many others.
- Customizable appearance
Installing the homepage
To install the homepage, you must have Docker and dockert-compose installed on the server.
Create the homepage directory and in it the docker-compose.yml file and the config directory
sudo mkdir homepage
cd homepage
In the docker-compose.yml file, enter the following text
version: "3.3"
services:
homepage:
image: ghcr.io/benphelps/homepage:latest
container_name: homepage
ports:
- 3030:3000
volumes:
- ./config:/app/config
- /var/run/docker.sock:/var/run/docker.sock:ro
dockerproxy:
image: ghcr.io/tecnativa/docker-socket-proxy:latest
container_name: dockerproxy
environment:
- CONTAINERS=1 # Allow access to viewing containers
- POST=0 # Disallow any POST operations (effectively read-only)
ports:
- 2375:2375
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro # Mounted as read-only
restart: unless-stopped
In addition to the container for homepae will be deployed additional container that allows you to integrate into the panel widgets display the current containers, a little later we will add such a widget to the configuration.
In order to deploy containers, run the command
docker-compose up -d
After successful installation, go to http://server-ip:3030 and visit the homepage.
In order to customize the appearance of the panel we will need to make changes to the configuration files, which are located in the directory config.
You can find more information about setting up the panel in the official homepage documentation.
Setting up the homepage
As an example, we will derive such information:
- Let’s add a logo and a weather widget
- Let’s add services that are installed in dockers and statistics on their use of resources
- Links to services
- Bookmarks for useful resources
To add the logo and weather widget, we need to edit the widgets.yaml file
- logo:
icon: https://server-ip/logo.png
- resources:
cpu: true
memory: true
disk: /
- search:
provider: duckduckgo
target: _blank
- openmeteo:
label: 🇺🇦Kyiv # optional
latitude: 50.449684
longitude: 30.525026
timezone: Europe/Kiev # optional
units: metric # or imperial
cache: 5 # Time in minutes to cache API responses, to stay within limits
A list of all available widgets can be found in the official documentation under Information Widgets
Let’s add information about Gitea and Portainer and add other services that are used. To do this, edit the services.yaml file. Below I will show you my version of the services.yaml file. For each service you can choose any icon, the homepage includes a set of Dashboard icons, in the field with the definition of the icon just specify the name of the icon file. You can read more about how to properly fill out the services.yaml file on the official website.
- Docker:
- Gitea:
icon: gitea.png
href: http://unixclient.host:3000/
description: Git service
server: my-docker
container: gitea
- Portainer:
icon: portainer.png
href: https://unixclient.host:9443/
server: my-docker
container: portainer
widget:
type: portainer
url: https://unixclient.host:9443
env: 2
key: ptr_asdDds6nsdwqwqmW1EqwdqwdIA0232dss=
- Dozzle:
icon: dozzle.png
href: http://unixclient.host:8080/
server: my-docker
container: dozzle
- Jellyfin:
icon: jellyfin.png
href: http://unixclient.host:9090/
- Grafana:
icon: grafana.png
href: http://unixclient.host:4000/
- Services:
- Wireguard:
icon: wireguard.png
href": http://wireguard.com
- AdGuard:
icon: adguard-home.png
href: http://adguard.com
- Zabbix:
icon: zabbix.png
href: https://unixclient.host:7000/
- Google:
icon: google.png
href: http://google.com/
ping: http://google.com/
Let’s move on to adding bookmarks to useful resources. All bookmarks are stored in the bookmarks.yaml file. An example of my bookmarks.yaml file is shown below
- Developer:
- Github:
- icon: github.png
href: https://github.com/
- Stack Overflow:
- abbr: SO
href: https://stackoverflow.com/
- UnixHost:
- UnixHost:
- icon: tux.png
href: https://unixhost.pro/
- Blog:
- icon: safari-ios.png
href: https://blog.unixhost.pro
- Telegram:
- icon: telegram.png
href: https://t.me/unixhost
- Self-hosted Guide by UnixHost:
- icon: youtube-light.png
href: https://www.youtube.com/@selfhostedguide
- Entertainment:
- YouTube:
- icon: youtube-play.png
href: https://youtube.com/
- Netflix:
- icon: netflix.png
href: https://netflix.com
- HBO:
- abr: HBO
href: https://www.hbomax.com/
This completes the homepage setup and gives you a convenient dashboard with quick access to all the resources you need.