diff --git a/.github/workflows/charts-release.yaml b/.github/workflows/charts-release.yaml index bbc1cd75..175616a9 100644 --- a/.github/workflows/charts-release.yaml +++ b/.github/workflows/charts-release.yaml @@ -9,6 +9,7 @@ on: - master paths: - 'charts/**' + - '!charts/README.md' - '!charts/**/README.md' - '!charts/**/README.md.gotmpl' - '!charts/**/README_CHANGELOG.md.gotmpl' @@ -42,3 +43,39 @@ jobs: env: CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" CR_SKIP_EXISTING: "true" + + generate-summary: + if: "!contains(github.event.head_commit.message, '[ci-skip]')" + name: Auto-generate charts summary + runs-on: ubuntu-20.04 + steps: + - name: Get k8s-at-home token + id: get-app-token + uses: getsentry/action-github-app-token@v1 + with: + app_id: ${{ secrets.K8S_AT_HOME_APP_ID }} + private_key: ${{ secrets.K8S_AT_HOME_APP_PRIVATE_KEY }} + + - name: Checkout + uses: actions/checkout@v2 + with: + token: ${{ steps.get-app-token.outputs.token }} + ref: ${{ github.ref }} + + - name: Install yq + uses: chrisdickinson/setup-yq@latest + with: + yq-version: v4.9.3 + + - name: Run script + run: | + ./hack/gen-chart-summary.sh + + - name: Update Pull Request + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: Auto-generate chart summary [ci skip] + commit_user_name: k8s-at-home[bot] + commit_user_email: + commit_author: k8s-at-home[bot] + file_pattern: charts/README.md diff --git a/charts/README.md b/charts/README.md new file mode 100644 index 00000000..2cd7c6a6 --- /dev/null +++ b/charts/README.md @@ -0,0 +1,137 @@ +# Helm charts overview +### Stable charts: +| Chart | Description | +| ----- | ----------- | +| [adguard-home](stable/adguard-home) | DNS proxy as ad-blocker for local network | +| [airsonic](stable/airsonic) | Airsonic is a Free and Open Source community driven media server | +| [alertmanager-bot](stable/alertmanager-bot) | Bot for Prometheus Alertmanager | +| [appdaemon](stable/appdaemon) | AppDaemon is a loosely coupled, multi-threaded, sandboxed python execution environment for writing automation apps for various types of Home Automation Software including Home Assistant and MQTT. | +| [baikal](stable/baikal) | Baïkal is a lightweight CalDAV+CardDAV server. It offers a web interface with management of users, address books and calendars. | +| [bazarr](stable/bazarr) | Bazarr is a companion application to Sonarr and Radarr. It manages and downloads subtitles based on your requirements | +| [blocky](stable/blocky) | DNS proxy as ad-blocker for local network | +| [booksonic-air](stable/booksonic-air) | Booksonic is a platform for accessing the audibooks you own wherever you are | +| [bookstack](stable/bookstack) | A simple, self-hosted, easy-to-use platform for organising and storing information. | +| [calibre-web](stable/calibre-web) | Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. | +| [calibre](stable/calibre) | Calibre is a powerful and easy to use e-book manager. | +| [comcast](stable/comcast) | periodic comcast data usage checks and save the results to InfluxDB | +| [deconz](stable/deconz) | deCONZ is an easy to use control software, with which you can set up and control Zigbee networks of any size without further programming effort. | +| [deluge](stable/deluge) | Deluge is a torrent download client | +| [dizquetv](stable/dizquetv) | Create live TV channel streams from media on your Plex servers. | +| [dnsmadeeasy-webhook](stable/dnsmadeeasy-webhook) | Cert-Manager Webhook for DNSMadeEasy | +| [dsmr-reader](stable/dsmr-reader) | DSMR-protocol reader, telegram data storage and energy consumption visualizer. | +| [duplicati](stable/duplicati) | Store securely encrypted backups on cloud storage services! | +| [emby](stable/emby) | Emby Server is a home media server | +| [esphome](stable/esphome) | ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems. | +| [flaresolverr](stable/flaresolverr) | FlareSolverr is a proxy server to bypass Cloudflare protection | +| [flood](stable/flood) | Flood is a monitoring service for various torrent clients | +| [focalboard](stable/focalboard) | Focalboard is an open source, self-hosted alternative to Trello, Notion, and Asana. | +| [foundryvtt](stable/foundryvtt) | An easy-to-deploy Dockerized Foundry Virtual Tabletop server | +| [freshrss](stable/freshrss) | FreshRSS is a self-hosted RSS feed aggregator | +| [gaps](stable/gaps) | Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. | +| [gollum](stable/gollum) | Gollum is a simple wiki system built on top of Git | +| [gonic](stable/gonic) | Music streaming server / subsonic server API implementation | +| [grocy](stable/grocy) | ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home | +| [haste-server](stable/haste-server) | Simple text sharing | +| [healthchecks](stable/healthchecks) | Healthchecks is a cron job monitoring service. It listens for HTTP requests and email messages ("pings") from your cron jobs and scheduled tasks ("checks"). When a ping does not arrive on time, Healthchecks sends out alerts. | +| [heimdall](stable/heimdall) | An Application dashboard and launcher | +| [home-assistant](stable/home-assistant) | Home Assistant | +| [homebridge](stable/homebridge) | A lightweight NodeJS server that emulates the iOS HomeKit API | +| [homer](stable/homer) | A dead simple static HOMepage for your servER to keep your services on hand, from a simple yaml configuration file. | +| [hyperion-ng](stable/hyperion-ng) | Hyperion is an opensource Bias or Ambient Lighting implementation | +| [icantbelieveitsnotvaletudo](stable/icantbelieveitsnotvaletudo) | Create live map data from Valetudo powered robots | +| [intel-gpu-plugin](stable/intel-gpu-plugin) | The Intel GPU plugin facilitates offloading the processing of computation intensive workloads to GPU hardware | +| [jackett](stable/jackett) | API Support for your favorite torrent trackers | +| [jellyfin](stable/jellyfin) | Jellyfin is a Free Software Media System | +| [jetbrains-projector](stable/jetbrains-projector) | Projector is a technology to run and access JetBrains IDEs remotely | +| [joplin-server](stable/joplin-server) | This server allows you to sync any Joplin client | +| [kanboard](stable/kanboard) | Kanboard is a free and open source Kanban project management software. | +| [lazylibrarian](stable/lazylibrarian) | A Helm chart for deploying LazyLibrarian | +| [leaf2mqtt](stable/leaf2mqtt) | Nissan Leaf connected services to MQTT adapter | +| [librespeed](stable/librespeed) | Librespeed is a HTML5 webpage to test upload and download speeds | +| [lidarr](stable/lidarr) | Looks and smells like Sonarr but made for music | +| [lychee](stable/lychee) | Lychee is a free photo-management tool, which runs on your server or web-space | +| [magic-mirror](stable/magic-mirror) | magic-mirror helm package | +| [mealie](stable/mealie) | Mealie is a self hosted recipe manager and meal planner with a RestAPI backend and a reactive frontend application built in Vue for a pleasant user experience for the whole family. | +| [miniflux](stable/miniflux) | Miniflux is a minimalist and opinionated feed reader. | +| [modem-stats](stable/modem-stats) | periodic cable modem data collection and save the results to InfluxDB | +| [monica](stable/monica) | A Personal Relationship Management tool to help you organize your social life | +| [mosquitto](stable/mosquitto) | Eclipse Mosquitto - An open source MQTT broker | +| [multus](stable/multus) | multus CNI allows multiple NICs per pod | +| [mylar](stable/mylar) | Mylar is the automated Comic Book downloader (cbr/cbz) for use with various download clients. | +| [navidrome](stable/navidrome) | Navidrome is an open source web-based music collection server and streamer | +| [neolink](stable/neolink) | Neolink - RTSP bridge to Reolink IP cameras | +| [network-ups-tools](stable/network-ups-tools) | Network UPS Tools is a collection of programs which provide a common interface for monitoring and administering UPS, PDU and SCD hardware. | +| [node-red](stable/node-red) | Node-RED is low-code programming for event-driven applications | +| [nzbget](stable/nzbget) | NZBGet is a Usenet downloader client | +| [nzbhydra2](stable/nzbhydra2) | Usenet meta search | +| [oauth2-proxy](stable/oauth2-proxy) | A reverse proxy that provides authentication with Google, Github or other providers | +| [octoprint](stable/octoprint) | OctoPrint is the snappy web interface for your 3D printer | +| [omada-controller](stable/omada-controller) | Omada enables the network administrators to monitor and manage all the Omada products in the network with a centralized management platform. | +| [ombi](stable/ombi) | Want a Movie or TV Show on Plex or Emby? Use Ombi! | +| [openemr](stable/openemr) | OpenEMR is the most popular open source electronic health records and medical practice management solution. | +| [organizr](stable/organizr) | HTPC/Homelab Services Organizer | +| [overseerr](stable/overseerr) | Overseerr is a free and open source software application for managing requests for your media library. It integrates with your existing services such as Sonarr, Radarr and Plex! | +| [owncast](stable/owncast) | Take control over your live stream video by running it yourself. Streaming + chat out of the box. | +| [paperless](stable/paperless) | Paperless - Index and archive all of your scanned paper documents | +| [photoprism](stable/photoprism) | PhotoPrism® is a server-based application for browsing, organizing and sharing your personal photo collection | +| [piaware](stable/piaware) | Program for forwarding ADS-B data to FlightAware | +| [plex](stable/plex) | Plex Media Server | +| [pod-gateway](stable/pod-gateway) | Admision controller to change the default gateway and DNS server of PODs | +| [powerdns](stable/powerdns) | PowerDNS is a DNS server, written in C++ and licensed under the GPL. It runs on most Unix derivatives. PowerDNS features a large number of different backends ranging from simple BIND style zonefiles to relational databases and load balancing/failover algorithms. A DNS recursor is provided as a separate program. | +| [pretend-youre-xyzzy](stable/pretend-youre-xyzzy) | pretend-youre-xyzzy, a cards against humanity clone | +| [promcord](stable/promcord) | Discord bot that provides metrics from a Discord server | +| [prometheus-nut-exporter](stable/prometheus-nut-exporter) | Prometheus NUT Exporter a service monitor to send NUT server metrics to a Prometheus instance. | +| [protonmail-bridge](stable/protonmail-bridge) | Container for protonmail bridge to work on the network. | +| [prowlarr](stable/prowlarr) | Indexer manager/proxy built on the popular arr net base stack to integrate with your various PVR apps. | +| [pyload](stable/pyload) | pyLoad is a Free and Open Source download manager written in Python and designed to be extremely lightweight, easily extensible and fully manageable via web. | +| [qbittorrent](stable/qbittorrent) | qBittorrent is a cross-platform free and open-source BitTorrent client | +| [radarr](stable/radarr) | A fork of Sonarr to work with movies à la Couchpotato | +| [readarr](stable/readarr) | A fork of Radarr to work with Books & AudioBooks | +| [recipes](stable/recipes) | Recipes is a Django application to manage, tag and search recipes using either built in models or external storage providers hosting PDF's, Images or other files. | +| [reg](stable/reg) | Docker registry v2 command line client and repo listing generator with security checks. | +| [resilio-sync](stable/resilio-sync) | Resilio Sync is a fast, reliable, and simple file sync and share solution, powered by P2P technology | +| [rtorrent-flood](stable/rtorrent-flood) | rTorrent is a stable, high-performance and low resource consumption BitTorrent client. | +| [sabnzbd](stable/sabnzbd) | Free and easy binary newsreader | +| [samba](stable/samba) | A simple in-cluster Samba server | +| [searx](stable/searx) | Searx is a privacy-respecting, hackable metasearch engine | +| [ser2sock](stable/ser2sock) | Serial to Socket Redirector | +| [sharry](stable/sharry) | Sharry allows to share files with others in a simple way. It is a self-hosted web application. The basic concept is to upload files and get a url back that can then be shared. | +| [shlink](stable/shlink) | A self-hosted and PHP-based URL shortener application with CLI and REST interfaces | +| [smarter-device-manager](stable/smarter-device-manager) | Manage hardware resource allocation without a need for privileged containers | +| [sonarr](stable/sonarr) | Smart PVR for newsgroup and bittorrent users | +| [speedtest-exporter](stable/speedtest-exporter) | Speedtest Exporter made in python using the official speedtest bin | +| [stash](stable/stash) | An organizer for your porn, written in Go | +| [statping](stable/statping) | Status page for monitoring your websites and applications | +| [syncthing](stable/syncthing) | Open Source Continuous File Synchronization | +| [tautulli](stable/tautulli) | A Python based monitoring and tracking tool for Plex Media Server | +| [tdarr](stable/tdarr) | Tdarr is a self hosted web-app for automating media library transcode/remux management and making sure your files are exactly how you need them to be in terms of codecs/streams/containers etc. | +| [teedy](stable/teedy) | Teedy is an open source, lightweight document management system for individuals and businesses. | +| [teslamate](stable/teslamate) | A self-hosted data logger for your Tesla 🚘 | +| [thelounge](stable/thelounge) | The Lounge, modern web IRC client designed for self-hosting | +| [traccar](stable/traccar) | Traccar is an open source GPS tracking system. | +| [traefik-forward-auth](stable/traefik-forward-auth) | A minimal forward authentication service that provides OAuth/SSO login and authentication for the traefik reverse proxy/load balancer | +| [transmission](stable/transmission) | Transmission is a cross-platform BitTorrent client | +| [truecommand](stable/truecommand) | Central Management of TrueNAS storage systems | +| [tt-rss](stable/tt-rss) | Tiny Tiny RSS is a free and open source web-based news feed (RSS/Atom) reader and aggregator | +| [tvheadend](stable/tvheadend) | TVheadend - a TV streaming server and digital video recorder | +| [unifi-poller](stable/unifi-poller) | Collect ALL UniFi Controller, Site, Device & Client Data - Export to InfluxDB or Prometheus | +| [unifi](stable/unifi) | Ubiquiti Network's Unifi Controller | +| [unpackerr](stable/unpackerr) | This application runs as a daemon on your download host. It checks for completed downloads and extracts them so Radarr, Lidarr, Sonarr, and Readarr may import them. | +| [uptimerobot-prometheus](stable/uptimerobot-prometheus) | Prometheus Exporter for the official uptimerobot CLI | +| [uptimerobot](stable/uptimerobot) | A tool to get statistics from Uptime Robot and log it into InfluxDB | +| [valheim](stable/valheim) | Valheim dedicated gameserver with automatic update and world backup support | +| [vaultwarden](stable/vaultwarden) | Vaultwarden is a Bitwarden compatable server in Rust | +| [vikunja](stable/vikunja) | The to-do app to organize your life | +| [wallabag](stable/wallabag) | A self hostable application for saving web pages, freely. | +| [whoogle](stable/whoogle) | A self-hosted, ad-free, privacy-respecting metasearch engine | +| [wikijs](stable/wikijs) | Make documentation a joy to write using Wiki.js's beautiful and intuitive interface! | +| [xbackbone](stable/xbackbone) | XBackBone is a simple, self-hosted, lightweight PHP file manager that support the instant sharing tool ShareX and *NIX systems. It supports uploading and displaying images, GIF, video, code, formatted text, and file downloading and uploading. Also have a web UI with multi user management, past uploads history and search support. | +| [xteve](stable/xteve) | M3U Proxy for Plex DVR and Emby Live TV. | +| [youtubedl-material](stable/youtubedl-material) | Self-hosted YouTube downloader built on Material Design | +| [zalando-postgres-cluster](stable/zalando-postgres-cluster) | Creates a postgres cluster using the Zalando Postgres operator and local storage | +| [zigbee2mqtt](stable/zigbee2mqtt) | Bridges events and allows you to control your Zigbee devices via MQTT | +| [zwave2mqtt](stable/zwave2mqtt) | Fully configurable Zwave to MQTT gateway and Control Panel using NodeJS and Vue | +| [zwavejs2mqtt](stable/zwavejs2mqtt) | Fully configurable Zwave to MQTT Gateway and Control Panel | +### Incubator charts: +| Chart | Description | +| ----- | ----------- | diff --git a/hack/gen-chart-summary.sh b/hack/gen-chart-summary.sh new file mode 100755 index 00000000..91d5d5f6 --- /dev/null +++ b/hack/gen-chart-summary.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +set -e + +# require yq +command -v yq >/dev/null 2>&1 || { + echo >&2 "yq (https://github.com/mikefarah/yq) is not installed. Aborting." + exit 1 +} + +# Absolute path of repository +repository=$(git rev-parse --show-toplevel) +charts_folder="${repository}/charts" +charts_summary_file="${charts_folder}"/README.md + +# Gather all charts using the common library, excluding common-test +incubator_charts=$(find "${charts_folder}/incubator" -name "Chart.yaml" | sort) +stable_charts=$(find "${charts_folder}/stable" -name "Chart.yaml" | sort) + +echo "# Helm charts overview" > "${charts_summary_file}" + +echo "### Stable charts:" >> "${charts_summary_file}" +echo "| Chart | Description |" >> "${charts_summary_file}" +echo "| ----- | ----------- |" >> "${charts_summary_file}" +for i in ${stable_charts[@]} +do + chart_data=($(yq eval '.name, .description' "$i")) + chart_name="${chart_data[0]}" + chart_description="${chart_data[@]:1}" + echo "| [${chart_name}](stable/${chart_name}) | ${chart_description} |" >> "${charts_summary_file}" +done + +echo "### Incubator charts:" >> "${charts_summary_file}" +echo "| Chart | Description |" >> "${charts_summary_file}" +echo "| ----- | ----------- |" >> "${charts_summary_file}" +for i in ${incubator_charts[@]} +do + chart_data=($(yq eval '.name, .description' "$i")) + chart_name="${chart_data[0]}" + chart_description="${chart_data[@]:1}" + echo "| [${chart_name}](incubator/${chart_name}) | ${chart_description} |" >> "${charts_summary_file}" +done