# [[Homepage Infra Dashboard|Homepage]] _Jun 5, 2025_ >[!info] Quick Links > - **Documentation**: https://gethomepage.dev/ > - **Github**: https://github.com/gethomepage/homepage Homepage is a simple app which provides a useful _homepage_ to reach all the services you manage, and even provides small informational widgets for some services. It has[ an extensive third-party library of widgets](https://gethomepage.dev/widgets/) that can provide pretty upto information about your services. ## Quick Overview I would highly recommend Christian Lempa's video on Homepage to quickly get upto speed with Homepage, see what is possible and how to configure it. ![](https://youtu.be/j9kbQucNwlc) ## Important Notes ### Secrets ([This information](https://gethomepage.dev/installation/docker/#using-environment-secrets) is oddly tucked away inside the docker documentation.) Secrets in configuration files are referenced using template tags. e.g. The Cloudflare widget has this configuration. ```yaml - Cloudflare: href: https://dash.cloudflare.com/ description: Cloudflare Dashboard icon: cloudflare widget: type: cloudflared accountid: xxxxxxxxxxxxxxxx tunnelid: yyyyyyyyyyyyyyy key: "{{HOMEPAGE_VAR_CLOUDFLARE_API_KEY}}" ``` >[!warning] No spaces within braces >This has made me lose hours the first time. There should be no spaces inside the braces. i.e. if you try to use `{{ HOMEPAGE_VAR_CLOUDFLARE_API_KEY }}` (spaces after and before the ending brace pairs) it will *not* work! An environment variable of the same name is expected with the actual value. Since I use docker compose, I need to add it in two steps: 1. in the compose file: ```yaml ... environment: HOMEPAGE_VAR_CLOUDFLARE_API_KEY: $HOMEPAGE_VAR_CLOUDFLARE_API_KEY ``` 2. And then the `.env` file will have the secret ```yaml ... HOMEPAGE_VAR_CLOUDFLARE_API_KEY=abcdef ``` ## My customizations ### Adding Kagi as a search engine Using the reference for the [search information widget](https://gethomepage.dev/widgets/info/search/), I configured Kagi as my search provider. ```yaml - search: provider: custom url: https://kagi.com/search?q= target: _blank suggestionUrl: https://kagi.com/api/autosuggest?q= showSearchSuggestions: true focus: true ``` ### Widget : Cloudflare tunnels [Reference](https://gethomepage.dev/widgets/services/cloudflared/) - Create an API token with the _Tunnel Read_ perms. It should look like this ![[cloudflare token perm homepage widget.png]] - Test the token by running: ```shell curl -s https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/cfd_tunnel \ -H "Authorization: Bearer $TOKEN" \ | jq -cr '.result[] | select(.status == "healthy") | {name,id}' ``` This will also give you the tunnel ids to use in the widget configuration. ## Others Other widgets I have used are: - [NextDNS](https://gethomepage.dev/widgets/services/nextdns/): Gives stats on requests blocked and allowed. - [Healthchecks.io](https://gethomepage.dev/widgets/services/healthchecks/): Gives a count of targets which are up. - [Grafana](https://gethomepage.dev/widgets/services/grafana/): Needs an account with server admin privs. Yikes. It should dashboard counts (useless), data source counts (useless), alerts count and alerts triggered. Somewhat useful if I used Grafana for alerting. - [Home Assistant](https://gethomepage.dev/widgets/services/homeassistant/): This might be useful. In the process of setting it up. - [Synology DSM](https://gethomepage.dev/widgets/services/diskstation/): Couldn't really set it up because it doesn't work with 2FA. Who is running their NAS without 2FA? --- tags: #homelab