{"id":17888274,"url":"https://github.com/squat/fluxcdbot","last_synced_at":"2025-10-19T16:28:31.778Z","repository":{"id":47209574,"uuid":"337155744","full_name":"squat/fluxcdbot","owner":"squat","description":"A Telegram bot for Flux CD","archived":false,"fork":false,"pushed_at":"2021-09-17T12:57:56.000Z","size":3268,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-03T00:08:52.801Z","etag":null,"topics":["bot","cd","flux","gitops","kubernetes","telegram"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/squat.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}},"created_at":"2021-02-08T17:32:12.000Z","updated_at":"2022-06-11T18:25:29.000Z","dependencies_parsed_at":"2022-09-16T14:32:24.606Z","dependency_job_id":null,"html_url":"https://github.com/squat/fluxcdbot","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/squat/fluxcdbot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Ffluxcdbot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Ffluxcdbot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Ffluxcdbot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Ffluxcdbot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/squat","download_url":"https://codeload.github.com/squat/fluxcdbot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/squat%2Ffluxcdbot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269409018,"owners_count":24412135,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"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":["bot","cd","flux","gitops","kubernetes","telegram"],"created_at":"2024-10-28T13:36:59.612Z","updated_at":"2025-10-19T16:28:26.742Z","avatar_url":"https://github.com/squat.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# FluxCD Bot\n\n`fluxcdbot` is a Telergram bot for [Flux](https://github.com/fluxcd/flux2).\n`fluxcdbot` accepts webhooks from the [Flux notification-controller](https://github.com/fluxcd/notification-controller) and forwards the messages to corresponding Telegram chat.\n\n[![Build Status](https://github.com/squat/fluxcdbot/workflows/CI/badge.svg)](https://github.com/squat/fluxcdbot/actions?query=workflow%3ACI)\n[![Go Report Card](https://goreportcard.com/badge/github.com/squat/fluxcdbot)](https://goreportcard.com/report/github.com/squat/fluxcdbot)\n\n## Overview\n\nIn order to subscribe to Telegram messages from the bot, send `/start` to the bot via chat.\nThe bot will in turn respond with a unique webhook URL specific to this chat.\nThe given webhook URL can then be configured with the notification-controller using the `Provider` and `Alert` custom resources.\nFor example, the following snippet could be used to forward all updates to the chat:\n\n```shell\ncat \u003c\u003c'EOF' | kubectl apply -f -\napiVersion: notification.toolkit.fluxcd.io/v1beta1\nkind: Provider\nmetadata:\n  name: fluxcdbot\nspec:\n  type: generic\n  secretRef:\n    name: fluxcdbot\n---\napiVersion: v1\nkind: Secret\nmetadata:\n  name: fluxcdbot\nstringData:\n  address: \u003cwebhook-URL\u003e\n---\napiVersion: notification.toolkit.fluxcd.io/v1beta1\nkind: Alert\nmetadata:\n  name: fluxcdbot\nspec:\n  providerRef:\n    name: fluxcdbot\n  eventSeverity: info\n  eventSources:\n  - kind: Kustomization\n    name: flux-system\n    namespace: flux-system\nEOF\n```\n\nNote, webhook URLs should be treated as secrets as anyone with access to the URL can make requests to the bot, which will then send messages to the URL's corresponding chat.\nWebhook URLs can be rotated by sending `/rotate` to the bot.\n\n## Installation\n\nIn order to deploy `fluxcdbot` to a Kubernetes cluster, first generate a Telegram bot API token using the [BotFather](https://t.me/botfather).\nNext, create a Kubernetes Secret for the bot containing this token, e.g.:\n\n```shell\nkubectl create secret generic fluxcdbot --from-literal=token=\u003ctelegram-token\u003e\n```\n\nFinally, deploy the example manifest included in this repository, modifying the base URL as needed:\n\n```shell\nkubectl apply -f https://raw.githubusercontent.com/squat/fluxcdbot/main/manifests/fluxcdbot.yaml\n```\n\n## Usage\n\n[embedmd]:# (tmp/help.txt)\n```txt\nUsage of bin/linux/amd64/fluxcdbot:\n  -database string\n    \tThe path to the directory to use for the database. (default \"/var/fluxcdbot\")\n  -listen string\n    \tThe address at which to listen. (default \":8080\")\n  -listen-internal string\n    \tThe address at which to listen for health and metrics. (default \":9090\")\n  -log-level string\n    \tLog level to use. Possible values: all, debug, info, warn, error, none (default \"info\")\n  -tmp string\n    \tThe path to a directory to use for temporary storage. (default \"/tmp/fluxcdbot\")\n  -token string\n    \tThe Telegram API token.\n  -url string\n    \tThe URL clients should use to commincate with this server. (default \"http://127.0.0.1:8080\")\n  -version\n    \tPrint version and exit\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquat%2Ffluxcdbot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsquat%2Ffluxcdbot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsquat%2Ffluxcdbot/lists"}