{"id":49215829,"url":"https://github.com/nurefexc/github-ntfy-bridge","last_synced_at":"2026-04-24T00:01:33.368Z","repository":{"id":338324493,"uuid":"1157503104","full_name":"nurefexc/github-ntfy-bridge","owner":"nurefexc","description":"Lightweight Python bridge connecting GitHub webhooks to ntfy.sh push notifications. Receive instant alerts on your phone or desktop for commits, pull requests, issues, releases, and other GitHub events. Easy to self-host with Docker support.","archived":false,"fork":false,"pushed_at":"2026-04-18T11:23:10.000Z","size":17,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-18T13:22:02.605Z","etag":null,"topics":["alerts","automation","bridge","github","github-actions","github-webhook","notifications","ntfy","push-notifications","python","self-hosted","webhook"],"latest_commit_sha":null,"homepage":"https://hub.docker.com/r/nurefexc/github-ntfy-bridge","language":"Python","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/nurefexc.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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-02-13T22:29:01.000Z","updated_at":"2026-04-18T11:23:13.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/nurefexc/github-ntfy-bridge","commit_stats":null,"previous_names":["nurefexc/github-ntfy-bridge"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/nurefexc/github-ntfy-bridge","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nurefexc%2Fgithub-ntfy-bridge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nurefexc%2Fgithub-ntfy-bridge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nurefexc%2Fgithub-ntfy-bridge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nurefexc%2Fgithub-ntfy-bridge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nurefexc","download_url":"https://codeload.github.com/nurefexc/github-ntfy-bridge/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nurefexc%2Fgithub-ntfy-bridge/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32203362,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-23T20:19:26.138Z","status":"ssl_error","status_checked_at":"2026-04-23T20:19:23.520Z","response_time":53,"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":["alerts","automation","bridge","github","github-actions","github-webhook","notifications","ntfy","push-notifications","python","self-hosted","webhook"],"created_at":"2026-04-24T00:01:32.441Z","updated_at":"2026-04-24T00:01:33.353Z","avatar_url":"https://github.com/nurefexc.png","language":"Python","readme":"# github-ntfy-bridge\n\n[![Docker Hub](https://img.shields.io/docker/pulls/nurefexc/github-ntfy-bridge.svg)](https://hub.docker.com/r/nurefexc/github-ntfy-bridge)\n[![Docker Image Size](https://img.shields.io/docker/image-size/nurefexc/github-ntfy-bridge/latest)](https://hub.docker.com/r/nurefexc/github-ntfy-bridge)\n\nA lightweight Python script that polls GitHub for unread notifications and sends them to your [ntfy](https://ntfy.sh) topic in real-time. It uses a local SQLite database to track notifications and ensure you don't get duplicate alerts for the same event.\n\n## Features\n\n- **Duplicate Prevention:** Uses SQLite to track `thread_id` and `updated_at`.\n- **Rich Notifications:** Includes emojis, tags, and priorities based on notification types (Pull Request, Issue, Release, Security, etc.).\n- **Interactive Actions:** Direct \"Open on GitHub\" buttons in the notification (where supported by ntfy clients).\n- **Customizable:** Configure sync interval, ntfy topic, and more via environment variables.\n- **Docker Ready:** Easy deployment using Docker with official image.\n\n## Prerequisites\n\n1. **GitHub Token:** Create a Personal Access Token (PAT) with the `notifications` scope at [GitHub Settings](https://github.com/settings/tokens).\n2. **ntfy Topic:** Decide on a topic name (e.g., `my_private_github_alerts`).\n\n## Setup \u0026 Installation\n\n### Option 1: Using Docker (Recommended)\n\nThe easiest way to run the bridge is using the official Docker image:\n\n1. Pull the image from Docker Hub:\n   ```bash\n   docker pull nurefexc/github-ntfy-bridge:latest\n   ```\n2. Run the container:\n   ```bash\n   docker run -d \\\n     --name github-ntfy-bridge \\\n     --restart always \\\n     -v $(pwd)/data:/app/data \\\n     -e GH_TOKEN=your_github_pat \\\n     -e NTFY_URL=https://ntfy.sh/your_topic \\\n     nurefexc/github-ntfy-bridge:latest\n   ```\n\n### Option 2: Build Locally\nIf you want to build the image yourself:\n1. Clone this repository.\n2. Build the image:\n   ```bash\n   docker build -t nurefexc/github-ntfy-bridge:latest .\n   ```\n3. Run as shown above.\n\n## CI/CD (Automation)\n\nThis repository includes a GitHub Action that automatically builds and pushes the Docker image to **Docker Hub** whenever you push to the `master` branch.\n\nTo make this work, you need to add the following **Secrets** to your GitHub repository (`Settings \u003e Secrets and variables \u003e Actions`):\n- `DOCKERHUB_USERNAME`: Your Docker Hub username.\n- `DOCKERHUB_TOKEN`: Your Docker Hub Personal Access Token (PAT).\n\n### Option 3: Manual Installation (Native)\n\n1. Install dependencies:\n   ```bash\n   pip install -r requirements.txt\n   ```\n2. Set environment variables (see `.env.sample`).\n3. Run the script:\n   ```bash\n   python main.py\n   ```\n\n## Configuration\n\nThe following environment variables are supported:\n\n| Variable | Description | Default |\n|----------|-------------|---------|\n| `GH_TOKEN` | GitHub Personal Access Token (required) | - |\n| `NTFY_URL` | Full ntfy topic URL (required) | - |\n| `NTFY_TOKEN` | ntfy authentication token (optional) | - |\n| `SYNC_INTERVAL` | Polling interval in seconds | `300` |\n| `DB_PATH` | Path to the SQLite database file | `/app/data/notifications.db` |\n| `TZ` | Timezone for logs (e.g., `Europe/Budapest`) | `Europe/Budapest` |\n\n## Notification Types Supported\n\nThe bridge handles various GitHub notification types with custom icons and priorities:\n- 🔀 **Pull Requests** (Priority 4) - New or updated pull requests.\n- 📌 **Issues** (Priority 3) - New issues or comments.\n- 📦 **Releases** (Priority 5) - New releases or tags.\n- 🚨 **Security** (Priority 5) - Repository vulnerability alerts.\n- ❌ **Failures** (Priority 4) - Check suite or run failures.\n- 💬 **Discussions** (Priority 3) - New discussions or comments.\n- 💻 **Commits** (Priority 2) - New commits.\n\n**Special Handling:**\n- 📢 **Mentions** (Priority 5) - Automatically upgraded to Max priority.\n- 👀 **Review Requests** (Priority 4) - Tagged for immediate attention.\n\n## License\n\nThis project is available under the MIT license. See the [LICENSE](LICENSE) file for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnurefexc%2Fgithub-ntfy-bridge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnurefexc%2Fgithub-ntfy-bridge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnurefexc%2Fgithub-ntfy-bridge/lists"}