diff --git a/.github/ct-install.yaml b/.github/ct-install.yaml index 188edee3832..8263ea3c259 100644 --- a/.github/ct-install.yaml +++ b/.github/ct-install.yaml @@ -13,6 +13,7 @@ excluded-charts: - charts/dependency/subchart - charts/incubator/orbital-sync - charts/incubator/plex-meta-manager + - charts/incubator/tauticord - charts/library/common - charts/stable/alertmanager-bot - charts/stable/alertmanager-bot diff --git a/charts/incubator/tauticord/.helmignore b/charts/incubator/tauticord/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/tauticord/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/tauticord/CHANGELOG.md b/charts/incubator/tauticord/CHANGELOG.md new file mode 100644 index 00000000000..825c32f0d03 --- /dev/null +++ b/charts/incubator/tauticord/CHANGELOG.md @@ -0,0 +1 @@ +# Changelog diff --git a/charts/incubator/tauticord/Chart.yaml b/charts/incubator/tauticord/Chart.yaml new file mode 100644 index 00000000000..923a8f6b07b --- /dev/null +++ b/charts/incubator/tauticord/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "3.8.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 12.14.6 +deprecated: false +description: A Discord bot that displays live data from Tautulli. +home: https://truecharts.org/charts/incubator/tauticord +icon: https://truecharts.org/img/hotlink-ok/chart-icons/tauticord.png +keywords: + - tauticord + - tautulli + - discord +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: tauticord +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/tauticord + - https://github.com/nwithan8/tauticord +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - discord + truecharts.org/SCALE-support: "true" diff --git a/charts/incubator/tauticord/README.md b/charts/incubator/tauticord/README.md new file mode 100644 index 00000000000..7e59600739c --- /dev/null +++ b/charts/incubator/tauticord/README.md @@ -0,0 +1 @@ +# README diff --git a/charts/incubator/tauticord/docs/installation_notes.md b/charts/incubator/tauticord/docs/installation_notes.md new file mode 100644 index 00000000000..b6e6d9f971d --- /dev/null +++ b/charts/incubator/tauticord/docs/installation_notes.md @@ -0,0 +1,29 @@ +# Installation Notes + +basic Notes for tauticord. + +:::note requirements + +- A Plex Media Server +- Tautulli (formerly known as PlexPy) +- A Discord server +- A Discord bot token, a simple guide [here](https://www.digitaltrends.com/gaming/how-to-make-a-discord-bot/). + - Permissions required: + - Manage Channels + - View Channels + - Send Messages + - Manage Messages + - Read Message History + - Add Reactions + - Manage Emojis + - Example bot invite link: `https://discord.com/oauth2/authorize?client_id=YOUR_APPLICATION_ID&scope=bot&permissions=1073818704` + +::: + +:::note Common Issues + +- On startup, Tauticord attempts to upload a set of custom emojis that it will use when displaying stream information ( if they do not already exist). Your bot will need to have the Manage Emojis permission in order to do this. +- Discord has a limit of 50 custom emojis per server. If you have reached this limit, you will need to remove some of your existing emojis before Tauticord can upload its own. +- If you do not want to remove any of your existing emojis, Tauticord will simply skip uploading its own emojis and use the default emojis that Discord provides instead. + +::: diff --git a/charts/incubator/tauticord/icon.png b/charts/incubator/tauticord/icon.png new file mode 100644 index 00000000000..c7a35d24b19 Binary files /dev/null and b/charts/incubator/tauticord/icon.png differ diff --git a/charts/incubator/tauticord/questions.yaml b/charts/incubator/tauticord/questions.yaml new file mode 100644 index 00000000000..70079e31c49 --- /dev/null +++ b/charts/incubator/tauticord/questions.yaml @@ -0,0 +1,356 @@ +# Include{groups} +portals: {} +questions: +# Include{global} +# Include{workload} +# Include{workloadDeployment} + +# Include{replicas1} +# Include{podSpec} +# Include{containerMain} + + - variable: env + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: TC_DISCORD_BOT_TOKEN + label: "Discord Bot Token" + description: "Discord Bot Token." + schema: + type: string + required: true + private: true + default: "" + - variable: TC_DISCORD_SERVER_ID + label: "Discord Server ID" + description: "Discord Server ID." + schema: + type: string + required: true + default: "" + - variable: TC_TAUTULLI_URL + label: "Tautulli URL" + description: "IP/cluster URL of your Tautulli server." + schema: + type: string + required: true + default: "" + - variable: TC_TAUTULLI_KEY + label: "Tautulli Key" + description: "API key for Tautulli server." + schema: + type: string + required: true + private: true + default: "" + - variable: TC_PLEX_PASS + label: "Plex Pass" + description: "Enable PlexPass Features." + schema: + type: string + default: "False" + enum: + - value: "False" + description: "False" + - value: "True" + description: "True" + - variable: TC_REFRESH_SECONDS + label: "Refresh Seconds" + description: "Seconds between updates." + schema: + type: int + default: 15 + min: 5 + max: 60 + - variable: TC_TERMINATE_MESSAGE + label: "Terminate Message" + description: "Message sent to users when a stream is killed." + schema: + type: string + default: "Your stream has ended." + - variable: TC_SERVER_NAME + label: "Server Name" + description: "Name of the Plex server." + schema: + type: string + default: "Plex" + - variable: TC_USE_24_HOUR_TIME + label: "Use 24 Hour Time" + description: "Whether to display times in 24-hour time." + schema: + type: boolean + default: false + - variable: hide_info + label: Show Hidden Info Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: TC_HIDE_USERNAMES + label: "Hide Usernames" + description: "Whether to hide usernames in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_PLATFORMS + label: "Hide Platforms" + description: "Whether to hide platforms in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_PLAYER_NAMES + label: "Hide Player Names" + description: "Whether to hide player names in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_QUALITY + label: "Hide Quality" + description: "Whether to hide quality profiles in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_BANDWIDTH + label: "Hide Bandwidth" + description: "Whether to hide bandwidth in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_TRANSCODE + label: "Hide Transcode" + description: "Whether to hide transcoding statuses in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_PROGRESS + label: "Hide Progress" + description: "Whether to hide stream progress in the streams view." + schema: + type: boolean + default: false + - variable: TC_HIDE_ETA + label: "Hide ETA" + description: "Whether to hide stream ETAs in the streams view." + schema: + type: boolean + default: false + - variable: tc_vc_stats + label: Show VC Stats Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: TC_VC_STATS_CATEGORY_NAME + label: "VC Stats Category Name" + description: "Name of the stats voice channel category." + schema: + type: string + default: "Tautulli Stats" + - variable: TC_VC_STREAM_COUNT + label: "VC Stream Count" + description: "Whether to display current stream count in a voice channel." + schema: + type: boolean + default: false + - variable: TC_VC_TRANSCODE_COUNT + label: "VC Transcode Count" + description: "Whether to display current transcode count in a voice channel." + schema: + type: boolean + default: false + - variable: TC_VC_BANDWIDTH + label: "VC Bandwidth" + description: "Whether to display current bandwidth in a voice channel." + schema: + type: boolean + default: false + - variable: TC_VC_LOCAL_BANDWIDTH + label: "VC Local Bandwidth" + description: "Whether to display current local bandwidth in a voice channel." + schema: + type: boolean + default: false + - variable: TC_VC_REMOTE_BANDWIDTH + label: "VC Remote Bandwidth" + description: "Whether to display current remote bandwidth in a voice channel." + schema: + type: boolean + default: false + - variable: TC_VC_PLEX_STATUS + label: "VC Plex Status" + description: "Whether to display Plex online status in a voice channel." + schema: + type: boolean + default: false + - variable: tc_vc_libraries + label: Show VC Libraries Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: TC_VC_LIBRARIES_CATEGORY_NAME + label: "VC Libraries Category Name" + description: "Name of the libraries voice channel category." + schema: + type: string + default: "Tautulli Libraries" + - variable: TC_VC_LIBRARY_STATS + label: "VC Library Stats" + description: "Whether to display library statistics in voice channels." + schema: + type: boolean + default: false + - variable: TC_VC_LIBRARY_NAMES + label: "VC Library Names" + description: "Comma-separated list of libraries to display statistics of." + schema: + type: string + default: "Movies,TV Shows,Music" + - variable: TC_VC_LIBRARY_REFRESH_SECONDS + label: "VC Library Names" + description: "Seconds between updates." + schema: + type: int + default: 3600 + min: 300 + - variable: TC_VC_LIBRARY_USE_EMOJIS + label: "VC Library Use Emojis" + description: "Whether to use emojis to symbolize library types." + schema: + type: boolean + default: true + - variable: TC_VC_TV_SERIES_COUNT + label: "VC TV Series Count" + description: "Display series counts for all selected series libraries." + schema: + type: boolean + default: true + - variable: TC_VC_TV_EPISODE_COUNT + label: "VC TV Episode Count" + description: "Display episode counts for all selected series libraries." + schema: + type: boolean + default: true + - variable: TC_VC_MUSIC_ARTIST_COUNT + label: "VC Music Artist Count" + description: "Display artist counts for all selected music libraries." + schema: + type: boolean + default: true + - variable: TC_VC_MUSIC_TRACK_COUNT + label: "VC Music Track Count" + description: "Display track counts for all selected music libraries." + schema: + type: boolean + default: true + - variable: tc_vc_performance + label: Show VC Performance Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: TC_VC_PERFORMANCE_CATEGORY_NAME + label: "VC Performance Category Name" + description: "Name of the performance voice channel category." + schema: + type: string + default: "Performance" + - variable: TC_MONITOR_CPU + label: "Monitor CPU" + description: "Whether to monitor CPU performance." + schema: + type: boolean + default: false + - variable: TC_MONITOR_MEMORY + label: "Monitor Memory" + description: "Whether to monitor RAM performance." + schema: + type: boolean + default: false + - variable: TC_DISCORD_ADMIN_IDS + label: "Discord Admin IDS" + description: "Comma separated of Discord IDs with admin privileges." + schema: + type: string + default: "" + - variable: TC_DISCORD_POST_SUMMARY_MESSAGE + label: "Discord Admin IDS" + description: "Whether to post a stat summary text message." + schema: + type: boolean + default: true + - variable: TC_DISCORD_CHANNEL_NAME + label: "Discord Channel Name" + description: "Channel name for stats summary text message." + schema: + type: string + default: "Tautulli Status" + - variable: TC_DISCORD_NITRO + label: "Discord Nitro" + description: "Whether the Discord server has a Nitro subscription. (bot will upload custom emojis)" + schema: + type: boolean + default: false + - variable: TC_ALLOW_ANALYTICS + label: "TC Allow Analytics" + description: "Allow Anonymous Crash Analytics" + schema: + type: boolean + default: false + +# Include{containerBasic} +# Include{containerAdvanced} + +# Include{containerConfig} +# Include{podOptions} +# Include{serviceExpertRoot} +# Include{serviceExpert} +# Include{serviceList} +# Include{persistenceRoot} + - variable: logs + label: "App Logs Storage" + description: "Stores the Application Logs." + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} +# Include{persistenceList} +# Include{securityContextRoot} + + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID this App of the user running the application" + schema: + type: int + default: 0 +# Include{securityContextContainer} +# Include{securityContextAdvanced} +# Include{securityContextPod} + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + +# Include{resources} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{netshoot} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/tauticord/templates/NOTES.txt b/charts/incubator/tauticord/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/charts/incubator/tauticord/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/charts/incubator/tauticord/templates/common.yaml b/charts/incubator/tauticord/templates/common.yaml new file mode 100644 index 00000000000..b51394e00a4 --- /dev/null +++ b/charts/incubator/tauticord/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.v1.common.loader.all" . }} diff --git a/charts/incubator/tauticord/values.yaml b/charts/incubator/tauticord/values.yaml new file mode 100644 index 00000000000..f97cc508946 --- /dev/null +++ b/charts/incubator/tauticord/values.yaml @@ -0,0 +1,87 @@ +image: + repository: tccr.io/truecharts/tauticord + pullPolicy: IfNotPresent + tag: v3.8.0@sha256:3f834aac482c202963b6882ff78be23d94cc34e29f16a7642010a9db9ee9cdc1 + +securityContext: + container: + runAsNonRoot: false + readOnlyRootFilesystem: false + runAsUser: 0 + runAsGroup: 0 + +service: + main: + enabled: false + ports: + main: + enabled: false + +workload: + main: + podSpec: + containers: + main: + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + env: + TC_DISCORD_BOT_TOKEN: "" + TC_DISCORD_SERVER_ID: "" + TC_TAUTULLI_KEY: "" + TC_TAUTULLI_URL: "" + TC_PLEX_PASS: false + TC_REFRESH_SECONDS: 15 + TC_TERMINATE_MESSAGE: "Your stream has ended." + TC_SERVER_NAME: "Plex" + TC_USE_24_HOUR_TIME: false + # Hide Info + TC_HIDE_USERNAMES: false + TC_HIDE_PLATFORMS: false + TC_HIDE_PLAYER_NAMES: false + TC_HIDE_QUALITY: false + TC_HIDE_BANDWIDTH: false + TC_HIDE_TRANSCODE: false + TC_HIDE_PROGRESS: false + TC_HIDE_ETA: false + # Stats Cat + TC_VC_STATS_CATEGORY_NAME: "Plex Stream Stats" + TC_VC_STREAM_COUNT: false + TC_VC_TRANSCODE_COUNT: false + TC_VC_BANDWIDTH: false + TC_VC_LOCAL_BANDWIDTH: false + TC_VC_REMOTE_BANDWIDTH: false + TC_VC_PLEX_STATUS: false + # Libraries Cat + TC_VC_LIBRARIES_CATEGORY_NAME: "Plex Library Stats" + TC_VC_LIBRARY_STATS: false + TC_VC_LIBRARY_NAMES: Movies,TV Shows,Music + TC_VC_LIBRARY_REFRESH_SECONDS: 3600 + TC_VC_LIBRARY_USE_EMOJIS: true + TC_VC_TV_SERIES_COUNT: true + TC_VC_TV_EPISODE_COUNT: true + TC_VC_MUSIC_ARTIST_COUNT: true + TC_VC_MUSIC_TRACK_COUNT: true + # Performance Cat + TC_VC_PERFORMANCE_CATEGORY_NAME: "Performance" + TC_MONITOR_CPU: false + TC_MONITOR_MEMORY: false + # Other + TC_DISCORD_ADMIN_IDS: "" + TC_DISCORD_POST_SUMMARY_MESSAGE: true + TC_DISCORD_CHANNEL_NAME: "Tautulli Status" + TC_DISCORD_NITRO: false + TC_ALLOWS_ANALYTICS: false + +persistence: + logs: + enabled: true + mountPath: "/logs" + +portal: + open: + enabled: false