{"id":50876672,"url":"https://github.com/imlenti/minerwatch-app-store","last_synced_at":"2026-06-15T10:31:12.412Z","repository":{"id":360798176,"uuid":"1251547762","full_name":"imlenti/minerwatch-app-store","owner":"imlenti","description":"Umbrel Community App Store for MinerWatch: Local-first dashboard for home Bitcoin miners - Bitaxe, NerdQAxe, Avalon Nano, Braiins. Privacy-first, no cloud. AGPL-3.0.","archived":false,"fork":false,"pushed_at":"2026-06-13T05:14:52.000Z","size":2496,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-13T07:13:57.158Z","etag":null,"topics":["avalon","bitaxe","bitcoin","bitcoin-cash","bitcoinminer","bitcoinmining","braiins","canaan","dashboard","home-mining","homeminer","luxos","osmu","sha256","solo-miner-bitcoin","solo-miner-btc","solo-mining","solominer","umbrel"],"latest_commit_sha":null,"homepage":"https://github.com/imlenti/MinerWatch","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/imlenti.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-27T17:27:42.000Z","updated_at":"2026-06-13T05:14:56.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/imlenti/minerwatch-app-store","commit_stats":null,"previous_names":["imlenti/minerwatch-app-store"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/imlenti/minerwatch-app-store","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imlenti%2Fminerwatch-app-store","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imlenti%2Fminerwatch-app-store/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imlenti%2Fminerwatch-app-store/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imlenti%2Fminerwatch-app-store/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/imlenti","download_url":"https://codeload.github.com/imlenti/minerwatch-app-store/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/imlenti%2Fminerwatch-app-store/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34357285,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-15T02:00:07.085Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["avalon","bitaxe","bitcoin","bitcoin-cash","bitcoinminer","bitcoinmining","braiins","canaan","dashboard","home-mining","homeminer","luxos","osmu","sha256","solo-miner-bitcoin","solo-miner-btc","solo-mining","solominer","umbrel"],"created_at":"2026-06-15T10:31:08.826Z","updated_at":"2026-06-15T10:31:12.402Z","avatar_url":"https://github.com/imlenti.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# MinerWatch — Umbrel Community App Store\n\nThis folder is a **ready-to-publish Umbrel Community App Store**. Unlike the\nofficial App Store (`getumbrel/umbrel-apps`, which needs a PR + review), a\ncommunity store is just a GitHub repo that Umbrel users add by URL — no\napproval needed.\n\n## Layout\n\n```\numbrel-app-store.yml          # store id \"imlenti\" + name \"MinerWatch Store\"\nimlenti-minerwatch/\n  umbrel-app.yml              # app manifest (id MUST be imlenti-minerwatch)\n  docker-compose.yml          # pulls ghcr.io/imlenti/minerwatch:\u003cversion\u003e\n  icon.png                    # app icon (referenced by umbrel-app.yml)\n  1.png 2.png 3.png           # gallery screenshots\n```\n\nThe app `id` (`imlenti-minerwatch`) is prefixed with the store `id`\n(`imlenti`) — Umbrel requires this, and the folder name must match the app id.\n\n## Prerequisite: the Docker image must exist\n\nUmbrel **pulls** the image referenced in `docker-compose.yml`\n(`ghcr.io/imlenti/minerwatch:1.10.1`); it does not build from source. Publish it\nfirst via the `.github/workflows/docker-publish.yml` workflow in the main\nMinerWatch repo (push a `vX.Y.Z` tag, or run it manually with the version\ninput). For production, pin to an immutable digest:\n\n```\nimage: ghcr.io/imlenti/minerwatch:1.10.1@sha256:\u003cdigest\u003e\n```\n\nGet the digest with:\n\n```bash\ndocker buildx imagetools inspect ghcr.io/imlenti/minerwatch:1.10.1\n```\n\n## How it runs (networking model)\n\nThe `web` service runs with `network_mode: host` so it can scan the LAN to\nauto-discover miners and poll them by IP — exactly like a bare-metal install.\nHost networking can't share Umbrel's manifest port (8000) with the app_proxy,\nso the two are decoupled: the proxy stays on Umbrel's bridge network listening\non 8000, while `web` binds a separate host port (8765, via `MINERWATCH_PORT`)\nand is reached through `host.docker.internal`. Path:\nUmbrel → app_proxy (bridge, :8000) → host.docker.internal:8765 → web (host net).\n\nIf port 8000 or 8765 is already taken on the umbrelOS box, change the manifest\n`port` (`umbrel-app.yml`) and/or `MINERWATCH_PORT` + `APP_PORT`\n(`docker-compose.yml`) to match. The full rationale lives in the\n`docker-compose.yml` header comment.\n\n## Publishing the store\n\n1. Create a new public GitHub repo (e.g. `imlenti/minerwatch-app-store`), or\n   click **Use this template** on\n   \u003chttps://github.com/getumbrel/umbrel-community-app-store\u003e.\n2. Copy the **contents of this folder** to the repo root (so\n   `umbrel-app-store.yml` is at the top level, with `imlenti-minerwatch/`\n   beside it).\n3. Make sure the icon (`icon.png`) and gallery images `1.png`, `2.png`, `3.png`\n   (1280×800 recommended) are present inside `imlenti-minerwatch/`.\n4. Commit and push.\n\n## Installing on Umbrel\n\nOn the umbrelOS device: **App Store → ⋯ → Community App Stores →** paste the\nrepo URL → MinerWatch appears under the \"MinerWatch Store\" section → **Install**.\n\n## Updating\n\nBump `version` in `imlenti-minerwatch/umbrel-app.yml`, update the image tag (and\ndigest) in `imlenti-minerwatch/docker-compose.yml`, and push. Umbrel offers the\nupdate to every installed instance. The `${APP_DATA_DIR}/data` volume (DB, push\nkeys, settings) is preserved across updates.\n\n\u003e Note: in-app updates from MinerWatch's own \"Update\" page are intentionally\n\u003e disabled under Umbrel/Docker (the image is immutable). The page still shows\n\u003e when a newer release exists, but updating happens via the store, not the\n\u003e button.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimlenti%2Fminerwatch-app-store","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fimlenti%2Fminerwatch-app-store","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fimlenti%2Fminerwatch-app-store/lists"}