{"id":37144815,"url":"https://github.com/calvinbui/homer-service-discovery","last_synced_at":"2026-01-14T16:59:46.806Z","repository":{"id":38014126,"uuid":"381048582","full_name":"calvinbui/homer-service-discovery","owner":"calvinbui","description":"🔍 Automatically discover new self-hosted Docker services for your Homer dashboard","archived":true,"fork":false,"pushed_at":"2023-05-16T01:17:18.000Z","size":7546,"stargazers_count":18,"open_issues_count":1,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2024-06-19T03:10:14.835Z","etag":null,"topics":["docker","golang","hacktoberfest","homer","service-discovery"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/calvinbui.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-28T13:51:42.000Z","updated_at":"2023-10-30T23:01:13.000Z","dependencies_parsed_at":"2024-06-19T02:58:13.326Z","dependency_job_id":"5f77bff0-5e38-49e9-8f74-ee3404c94656","html_url":"https://github.com/calvinbui/homer-service-discovery","commit_stats":{"total_commits":51,"total_committers":5,"mean_commits":10.2,"dds":0.07843137254901966,"last_synced_commit":"1800dba8aca23c9e571ab500c30020e115c710b4"},"previous_names":[],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/calvinbui/homer-service-discovery","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvinbui%2Fhomer-service-discovery","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvinbui%2Fhomer-service-discovery/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvinbui%2Fhomer-service-discovery/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvinbui%2Fhomer-service-discovery/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calvinbui","download_url":"https://codeload.github.com/calvinbui/homer-service-discovery/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calvinbui%2Fhomer-service-discovery/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28427179,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-14T16:38:47.836Z","status":"ssl_error","status_checked_at":"2026-01-14T16:34:59.695Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","golang","hacktoberfest","homer","service-discovery"],"created_at":"2026-01-14T16:59:46.130Z","updated_at":"2026-01-14T16:59:46.799Z","avatar_url":"https://github.com/calvinbui.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Homer Service Discovery\n\nThis tool generates configuration files for [Homer](https://github.com/bastienwirtz/homer) using Docker container labels.\n\nUsing Docker container or Consul catalog labels for service discovery is inspired by the same approach used by [Traefik](https://doc.traefik.io/traefik/providers/docker/) and [Watchtower](https://github.com/containrrr/watchtower).\n## Features\n\n- Generates Homer config using container labels\n- Watches for container changes or Consul changes\n- Supports standalone Docker and Docker Swarm\n- Sort items by priority\n- Multi-arch\n\n## Usage\n\nCreate a base configuration for this tool to build upon. This will contain your `services` sections, `title`, `logo`, etc. A value unique to this tool is `priority`. The higher the `priority` of an item, the higher on the list it will appear.\n\n```yaml\ntitle: My Self Hosted Kingdom\nsubtitle: Enter!\n\nservices:\n  - name: Numbers\n    icon: fas fa-list-ol\n    items:\n      - name: 4\n        icon: fas fa-dice-four\n        url: https://fontawesome.com/v5.15/icons/dice-four?style=solid\n        priority: 4\n      - name: 3\n        icon: fab fa-html5\n        url: https://fontawesome.com/v5.15/icons/html5?style=brands\n        priority: 3\n      - name: 1\n        icon: far fa-money-bill-alt\n        url: https://fontawesome.com/v5.15/icons/money-bill-alt?style=regular\n        priority: 1\n\n  # Empty section\n  - name: Letters\n    icon: fas fa-sun\n    items: []\n```\n\nStart Homer following [its instructions](https://github.com/bastienwirtz/homer/blob/main/README.md) to mount the `/www/assets` directory. This is where the `config.yaml` file resides.\n\n```bash\ndocker run -d \\\n  -p 8080:8080 \\\n  -v /folder1/homer/:/www/assets \\\n  b4bz/homer:latest\n```\n\nStart this tool while:\n- mounting the base config\n- mounting homer's config\n- mounting the Docker socket\n- using environment variables to provide their mountpoints.\n\n```bash\ndocker run -d \\\n  -v /folder1/homer/config.yml:/config.yml \\\n  -v /sd/base.yml:/base.yml \\\n  -v /var/run/docker.sock:/var/run/docker.sock:ro \\\n  ghcr.io/calvinbui/homer-service-discovery\n```\n\nYou can visit your Homer Dashboard to see the initial generated config (remember to hard refresh).\n\n![](docs/base.png)\n\nStart adding labels to your containers to have this tool pick them up. For example, the following command will regenerate the config and add the `http-echo` service to the `Numbers` service.\n\n```bash\ndocker run -d \\\n  -p 5678:5678 \\\n  -l homer.enable=true \\\n  -l homer.service=Numbers \\\n  -l homer.name='This is number 2!' \\\n  -l homer.subtitle='http-echo server'\n  -l homer.icon='far fa-hand-peace' \\\n  -l homer.priority=2 \\\n  -l homer.url='http://localhost:5678' \\\n  hashicorp/http-echo \\\n  --text=\"Be yourself; everyone else is already taken\"\n```\n\n![](docs/base-added.png)\n\nThe full list of labels are:\n\n| Label              | Description                                                                                    |\n|--------------------|------------------------------------------------------------------------------------------------|\n| `homer.enable`     | Set to `true` include in Homer's config                                                        |\n| `homer.service`    | The name of Homer Service to add this item to. It must exist in the base config                |\n| `homer.priority`   | The priority level of the service. The higher the number, the higher it appears in the Service |\n| `homer.name`       | The item's name (See Homer's documentation)                                                    |\n| `homer.logo`       | The item's logo (See Homer's documentation)                                                    |\n| `homer.icon`       | The item's icon (See Homer's documentation)                                                    |\n| `homer.subtitle`   | The item's subtitle (See Homer's documentation)                                                |\n| `homer.tag`        | The item's tag (See Homer's documentation)                                                     |\n| `homer.url`        | The item's url (See Homer's documentation)                                                     |\n| `homer.target`     | The item's target (See Homer's documentation)                                                  |\n| `homer.tagstyle`   | The item's tagstyle (See Homer's documentation)                                                |\n| `homer.type`       | The item's type (See Homer's documentation)                                                    |\n| `homer.class`      | The item's class (See Homer's documentation)                                                   |\n| `homer.background` | The item's background (See Homer's documentation)                                              |\n\n## Environment Variables\n\n| Key                 | Description                                   | Default                      |\n|---------------------|-----------------------------------------------|------------------------------|\n| `LOG_LEVEL`         | The level of log verbosity                    | `Info`                       |\n| `HOMER_BASE_CONFIG` | Where the base config is located              | `/base.yml`                  |\n| `HOMER_CONFIG`      | Where the Homer config is located             | `/config.yml`                |\n| `SERVICE_DISCOVERY` | Either `Docker` or `Consul`                   | `Docker`                     |\n| `HOMER_DOCKER_SWARM`| Docker Swarm supprt. Either `true` or `false` | `false`                      |\n| `CONSUL_HOST`       | Host for Consul connnection                   | `127.0.0.1:8500`             |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalvinbui%2Fhomer-service-discovery","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalvinbui%2Fhomer-service-discovery","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalvinbui%2Fhomer-service-discovery/lists"}