From ff643aa99403327d46ace028aea94be16d486823 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Wed, 7 Jun 2023 22:42:42 +0000 Subject: [PATCH] Update catalog information --- catalog.json | 2244 +++++++++-------- community/mineos/1.0.0/Chart.lock | 6 + community/mineos/1.0.0/Chart.yaml | 24 + community/mineos/1.0.0/README.md | 3 + community/mineos/1.0.0/app-readme.md | 3 + .../mineos/1.0.0/charts/common-1.0.8.tgz | Bin 0 -> 55441 bytes community/mineos/1.0.0/ci/basic-values.yaml | 12 + community/mineos/1.0.0/ci/https-values.yaml | 100 + .../mineos/1.0.0/disable_upgrade_strategy | 31 + community/mineos/1.0.0/ix_values.yaml | 28 + community/mineos/1.0.0/metadata.yaml | 18 + community/mineos/1.0.0/questions.yaml | 231 ++ community/mineos/1.0.0/templates/NOTES.txt | 1 + community/mineos/1.0.0/templates/_mineos.tpl | 134 + community/mineos/1.0.0/templates/_portal.tpl | 12 + .../mineos/1.0.0/templates/_validation.tpl | 17 + community/mineos/1.0.0/templates/common.yaml | 10 + community/mineos/item.yaml | 7 + 18 files changed, 1777 insertions(+), 1104 deletions(-) create mode 100644 community/mineos/1.0.0/Chart.lock create mode 100644 community/mineos/1.0.0/Chart.yaml create mode 100644 community/mineos/1.0.0/README.md create mode 100644 community/mineos/1.0.0/app-readme.md create mode 100644 community/mineos/1.0.0/charts/common-1.0.8.tgz create mode 100644 community/mineos/1.0.0/ci/basic-values.yaml create mode 100644 community/mineos/1.0.0/ci/https-values.yaml create mode 100755 community/mineos/1.0.0/disable_upgrade_strategy create mode 100644 community/mineos/1.0.0/ix_values.yaml create mode 100644 community/mineos/1.0.0/metadata.yaml create mode 100644 community/mineos/1.0.0/questions.yaml create mode 100644 community/mineos/1.0.0/templates/NOTES.txt create mode 100644 community/mineos/1.0.0/templates/_mineos.tpl create mode 100644 community/mineos/1.0.0/templates/_portal.tpl create mode 100644 community/mineos/1.0.0/templates/_validation.tpl create mode 100644 community/mineos/1.0.0/templates/common.yaml create mode 100644 community/mineos/item.yaml diff --git a/catalog.json b/catalog.json index eaae240edb..42fdcaa978 100644 --- a/catalog.json +++ b/catalog.json @@ -1,60 +1,22 @@ { "charts": { - "prometheus": { - "app_readme": "

Prometheus

\n

Prometheus - Monitoring system and time series database.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the prometheus directories.\nAfterward, the prometheus container will run as a non-root user (Default: 568).\nAlso an empty configuration file will be created.

\n
\n

The configuration file is located at /config/prometheus.yml inside the container.\nData is stored at /data inside the container.

", + "syncthing": { + "app_readme": "

Syncthing

\n

syncthing is a continuous file synchronization program. It synchronizes files between two or\nmore computers in real time, safely protected from prying eyes.

\n
\n

WARNING Do check out https://docs.syncthing.net/users/faq.html#what-things-are-synced to see what is synced.

\n
", "categories": [ - "monitoring" - ], - "description": "The Prometheus monitoring system and time series database.", - "healthy": true, - "healthy_error": null, - "home": "https://prometheus.io", - "location": "/__w/charts/charts/charts/prometheus", - "latest_version": "1.0.8", - "latest_app_version": "v2.44.0", - "latest_human_version": "v2.44.0_1.0.8", - "last_update": "2023-05-30 13:24:14", - "name": "prometheus", - "recommended": false, - "title": "Prometheus", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "metrics", "storage" ], - "screenshots": [ - "https://prometheus.io/assets/blog/2019-10-08/10kseries8hours-2.12-cpu.png" - ], - "sources": [ - "https://github.com/prometheus/prometheus", - "https://github.com/truenas/charts/tree/master/charts/prometheus", - "https://prometheus.io" - ], - "icon_url": "https://avatars.githubusercontent.com/u/3380462" - }, - "collabora": { - "app_readme": "

Collabora Online Development Edition

\n

An awesome, Online Office suite image suitable for home use.\nWith the Collabora Online Development Edition (CODE) Docker Image you can host\nyour own online Office Suite at home! This Docker image is aimed at home users\nand contains the latest and greatest developments. Simply integrate it in your\npreferred File Sync and Share (FSS), to easily get your own online Office \nSuite up and running!

", - "categories": [ - "productivity" - ], - "description": "Collabora Online Development Edition \\u2013 an awesome, Online Office\nsuite image suitable for home use.\n", + "description": "Syncthing is a continuous file synchronization program.", "healthy": true, "healthy_error": null, - "home": "https://github.com/CollaboraOnline/online", - "location": "/__w/charts/charts/charts/collabora", - "latest_version": "1.2.13", - "latest_app_version": "21.11.4.1.1", - "latest_human_version": "21.11.4.1.1_1.2.13", - "last_update": "2023-05-23 17:11:03", - "name": "collabora", + "home": "https://syncthing.net/", + "location": "/__w/charts/charts/charts/syncthing", + "latest_version": "1.0.29", + "latest_app_version": "1.23.5", + "latest_human_version": "1.23.5_1.0.29", + "last_update": "2023-06-07 11:30:49", + "name": "syncthing", "recommended": false, - "title": "Collabora", + "title": "Syncthing", "maintainers": [ { "name": "truenas", @@ -63,36 +25,38 @@ } ], "tags": [ - "office", - "documents", - "collaboration" + "backup", + "sync", + "file-sharing" ], "screenshots": [ - "https://www.collaboraoffice.com/wp-content/uploads/2016/04/LibreOffice_Online_Admin_console_1.png" + "https://docs.syncthing.net/_images/gui1.png", + "https://docs.syncthing.net/_images/gs1.png", + "https://docs.syncthing.net/_images/gs3.png" ], "sources": [ - "https://github.com/CollaboraOnline/online.git", - "https://hub.docker.com/r/collabora/code" + "https://syncthing.net", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/syncthing" ], - "icon_url": "https://avatars.githubusercontent.com/u/22418908?s=200&v=4" + "icon_url": "https://play-lh.googleusercontent.com/KIy_dqUdZqcsTq4GDstHrHwLRvu60gT3v0p41gw792BC6OxamNhUw2eIy0-LI05qNEA=w240-h480" }, - "pihole": { - "app_readme": "

Pihole

\n

DNS and Ad-filtering for your network.

", + "wg-easy": { + "app_readme": "

WG-Easy

\n

WG-Easy (WireGuard Easy) is the easiest way to install & manage WireGuard!

", "categories": [ "networking" ], - "description": "DNS and Ad-filtering for your network.", + "description": "WG-Easy is the easiest way to install & manage WireGuard!", "healthy": true, "healthy_error": null, - "home": "https://pi-hole.net/", - "location": "/__w/charts/charts/charts/pihole", - "latest_version": "1.0.20", - "latest_app_version": "2023.02.2", - "latest_human_version": "2023.02.2_1.0.20", + "home": "https://github.com/WeeJeWel/wg-easy", + "location": "/__w/charts/charts/charts/wg-easy", + "latest_version": "1.0.8", + "latest_app_version": "7", + "latest_human_version": "7_1.0.8", "last_update": "2023-05-23 17:11:03", - "name": "pihole", + "name": "wg-easy", "recommended": false, - "title": "Pi-hole", + "title": "WG Easy", "maintainers": [ { "name": "truenas", @@ -101,189 +65,17 @@ } ], "tags": [ - "dns", - "adblock" + "vpn", + "wireguard" ], "screenshots": [ - "https://wp-cdn.pi-hole.net/wp-content/uploads/2020/04/Dashboard.png" + "https://github.com/wg-easy/wg-easy/raw/master/assets/screenshot.png" ], "sources": [ - "https://pi-hole.net/", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/pihole" + "https://github.com/WeeJeWel/wg-easy", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/wg-easy" ], - "icon_url": "https://github.com/pi-hole/graphics/raw/master/Vortex/Vortex_Vertical_wordmark_lightmode.png?raw=true)" - }, - "minio": { - "app_readme": "

MinIO is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads.

\n

NOTE\n- On installation, minIO data directory's ownership will be updated to minio:minio.\n- For existing installations that are exhibiting the upgrade to >=1.5.0, the minIO data directory's ownership will be migrated to minio:minio.

", - "categories": [ - "storage", - "S3" - ], - "description": "High Performance, Kubernetes Native Object Storage", - "healthy": true, - "healthy_error": null, - "home": "https://min.io", - "location": "/__w/charts/charts/charts/minio", - "latest_version": "1.7.15", - "latest_app_version": "2023-03-13", - "latest_human_version": "2023-03-13_1.7.15", - "last_update": "2023-03-14 13:28:13", - "name": "minio", - "recommended": false, - "title": "Minio", - "maintainers": [], - "tags": [], - "screenshots": [], - "sources": [ - "https://github.com/minio/minio", - "https://github.com/minio/charts" - ], - "icon_url": "https://min.io/resources/img/logo/MINIO_wordmark.png" - }, - "ix-chart": { - "app_readme": "

iX-Chart

\n

iX-chart is a chart designed to let user deploy a docker image in a TrueNAS SCALE kubernetes cluster.\nIt provides a mechanism to specify workload type, add external host interfaces in the pods, configure volumes and allocate host resources to the workload.

", - "categories": [ - "generic" - ], - "description": "A Helm chart for deploying simple workloads Kubernetes", - "healthy": true, - "healthy_error": null, - "home": "https://www.truenas.com/", - "location": "/__w/charts/charts/charts/ix-chart", - "latest_version": "2304.0.7", - "latest_app_version": "v1", - "latest_human_version": "v1_2304.0.7", - "last_update": "2023-05-11 16:20:35", - "name": "ix-chart", - "recommended": false, - "title": "ix-chart", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [], - "screenshots": [], - "sources": [], - "icon_url": null - }, - "home-assistant": { - "app_readme": "

home-assistant App for TrueNAS SCALE

", - "categories": [ - "productivity" - ], - "description": "Home Assistant App for TrueNAS SCALE", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/home-assistant/home-assistant", - "location": "/__w/charts/charts/charts/home-assistant", - "latest_version": "1.0.93", - "latest_app_version": "2023.5.4", - "latest_human_version": "2023.5.4_1.0.93", - "last_update": "2023-05-24 08:17:15", - "name": "home-assistant", - "recommended": false, - "title": "Home Assistant", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "home-automation", - "assistant" - ], - "screenshots": [ - "https://scotthelme.co.uk/content/images/2021/08/image-12.png" - ], - "sources": [ - "https://github.com/home-assistant/home-assistant", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/home-assistant" - ], - "icon_url": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4" - }, - "nextcloud": { - "app_readme": "

nextcloud

\n

nextcloud is a file sharing server that puts the control and security of your own data back into your hands.

", - "categories": [ - "productivity" - ], - "description": "A file sharing server that puts the control and security of your own data back into your hands.", - "healthy": true, - "healthy_error": null, - "home": "https://nextcloud.com/", - "location": "/__w/charts/charts/charts/nextcloud", - "latest_version": "1.6.29", - "latest_app_version": "26.0.2", - "latest_human_version": "26.0.2_1.6.29", - "last_update": "2023-06-01 20:57:41", - "name": "nextcloud", - "recommended": false, - "title": "Nextcloud", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "nextcloud", - "storage", - "sync" - ], - "screenshots": [ - "https://nextcloud.com/media/nextcloud20.png", - "https://nextcloud.com/media/search-moodle-course-module.png", - "https://nextcloud.com/media/multiple_share_links.png" - ], - "sources": [ - "https://github.com/nextcloud/docker", - "https://github.com/nextcloud/helm", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/nextcloud" - ], - "icon_url": "https://cdn.rawgit.com/docker-library/docs/defa5ffc7123177acd60ddef6e16bddf694cc35f/nextcloud/logo.svg" - }, - "netdata": { - "app_readme": "

Netdata is a fast, easy monitoring and troubleshooting system.

", - "categories": [ - "monitoring" - ], - "description": "Real-time performance monitoring, done right!", - "healthy": true, - "healthy_error": null, - "home": "https://www.netdata.cloud/", - "location": "/__w/charts/charts/charts/netdata", - "latest_version": "1.0.24", - "latest_app_version": "v1.39.1", - "latest_human_version": "v1.39.1_1.0.24", - "last_update": "2023-05-23 17:11:03", - "name": "netdata", - "recommended": false, - "title": "Netdata", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "netdata" - ], - "screenshots": [ - "https://user-images.githubusercontent.com/1153921/101509403-f7e59400-3935-11eb-9abd-cbecfa3ee49a.png", - "https://user-images.githubusercontent.com/1153921/101508423-e354cc00-3934-11eb-9b33-3ad57a5988b4.png", - "https://user-images.githubusercontent.com/24860547/224729853-da525e02-bea5-4665-b1f6-ce389976a27b.png" - ], - "sources": [ - "https://github.com/netdata/helmchart", - "https://github.com/netdata/netdata" - ], - "icon_url": "https://netdata.github.io/helmchart/logo.png" + "icon_url": "https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/src/www/img/logo.png" }, "plex": { "app_readme": "

Plex

\n

Plex chart is a chart designed to deploy plex in a TrueNAS SCALE kubernetes cluster.

", @@ -326,43 +118,6 @@ ], "icon_url": "https://www.plex.tv/wp-content/uploads/2018/01/pmp-icon-1.png" }, - "wg-easy": { - "app_readme": "

WG-Easy

\n

WG-Easy (WireGuard Easy) is the easiest way to install & manage WireGuard!

", - "categories": [ - "networking" - ], - "description": "WG-Easy is the easiest way to install & manage WireGuard!", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/WeeJeWel/wg-easy", - "location": "/__w/charts/charts/charts/wg-easy", - "latest_version": "1.0.8", - "latest_app_version": "7", - "latest_human_version": "7_1.0.8", - "last_update": "2023-05-23 17:11:03", - "name": "wg-easy", - "recommended": false, - "title": "WG Easy", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "vpn", - "wireguard" - ], - "screenshots": [ - "https://github.com/wg-easy/wg-easy/raw/master/assets/screenshot.png" - ], - "sources": [ - "https://github.com/WeeJeWel/wg-easy", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/wg-easy" - ], - "icon_url": "https://raw.githubusercontent.com/WeeJeWel/wg-easy/master/src/www/img/logo.png" - }, "photoprism": { "app_readme": "

Photo Prism

\n

PhotoPrism is a server-based application for browsing, organizing and sharing your personal photo collection.

", "categories": [ @@ -401,63 +156,23 @@ ], "icon_url": "https://photoprism.app/static/icons/logo.svg" }, - "syncthing": { - "app_readme": "

Syncthing

\n

syncthing is a continuous file synchronization program. It synchronizes files between two or\nmore computers in real time, safely protected from prying eyes.

\n
\n

WARNING Do check out https://docs.syncthing.net/users/faq.html#what-things-are-synced to see what is synced.

\n
", + "collabora": { + "app_readme": "

Collabora Online Development Edition

\n

An awesome, Online Office suite image suitable for home use.\nWith the Collabora Online Development Edition (CODE) Docker Image you can host\nyour own online Office Suite at home! This Docker image is aimed at home users\nand contains the latest and greatest developments. Simply integrate it in your\npreferred File Sync and Share (FSS), to easily get your own online Office \nSuite up and running!

", "categories": [ - "storage" + "productivity" ], - "description": "Syncthing is a continuous file synchronization program.", + "description": "Collabora Online Development Edition \\u2013 an awesome, Online Office\nsuite image suitable for home use.\n", "healthy": true, "healthy_error": null, - "home": "https://syncthing.net/", - "location": "/__w/charts/charts/charts/syncthing", - "latest_version": "1.0.29", - "latest_app_version": "1.23.5", - "latest_human_version": "1.23.5_1.0.29", - "last_update": "2023-06-07 11:30:49", - "name": "syncthing", - "recommended": false, - "title": "Syncthing", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "backup", - "sync", - "file-sharing" - ], - "screenshots": [ - "https://docs.syncthing.net/_images/gui1.png", - "https://docs.syncthing.net/_images/gs1.png", - "https://docs.syncthing.net/_images/gs3.png" - ], - "sources": [ - "https://syncthing.net", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/syncthing" - ], - "icon_url": "https://play-lh.googleusercontent.com/KIy_dqUdZqcsTq4GDstHrHwLRvu60gT3v0p41gw792BC6OxamNhUw2eIy0-LI05qNEA=w240-h480" - }, - "diskoverdata": { - "app_readme": "

DiskOver App for TrueNAS SCALE

", - "categories": [ - "monitoring" - ], - "description": "Diskover is used to monitor size/volumes of distributed dataset.", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/diskoverdata/diskover-community", - "location": "/__w/charts/charts/charts/diskoverdata", - "latest_version": "1.0.11", - "latest_app_version": "2.0.1", - "latest_human_version": "2.0.1_1.0.11", + "home": "https://github.com/CollaboraOnline/online", + "location": "/__w/charts/charts/charts/collabora", + "latest_version": "1.2.13", + "latest_app_version": "21.11.4.1.1", + "latest_human_version": "21.11.4.1.1_1.2.13", "last_update": "2023-05-23 17:11:03", - "name": "diskoverdata", + "name": "collabora", "recommended": false, - "title": "Diskover Data", + "title": "Collabora", "maintainers": [ { "name": "truenas", @@ -466,94 +181,18 @@ } ], "tags": [ - "storage", - "discovery" + "office", + "documents", + "collaboration" ], "screenshots": [ - "https://www.linuxserver.io/user/pages/content/images/2018/11/image-1.png", - "https://camo.githubusercontent.com/62dfd0970129262c413cd9b811a07062526d2f45516ec4f862276c0610fe8f6d/687474703a2f2f7777772e6469736b6f766572646174612e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032312f31302f6469736b6f7665725f76325f63655f73637265656e73686f74312e706e67", - "https://camo.githubusercontent.com/6cddd7fa89691d4cf0ba763f10ee100373c3d84338862d0c25cb8f8b4df9728d/687474703a2f2f7777772e6469736b6f766572646174612e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032312f31302f6469736b6f7665725f76325f63655f73637265656e73686f74322e706e67" + "https://www.collaboraoffice.com/wp-content/uploads/2016/04/LibreOffice_Online_Admin_console_1.png" ], "sources": [ - "https://github.com/diskoverdata/diskover-community", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/diskoverdata" + "https://github.com/CollaboraOnline/online.git", + "https://hub.docker.com/r/collabora/code" ], - "icon_url": "http://www.diskoverdata.com/wp-content/uploads/2019/09/diskover.png" - }, - "storj": { - "app_readme": "

storj

\n

storj share your extra storage and earn money

", - "categories": [ - "storage" - ], - "description": "Share your storage on the internet and earn.", - "healthy": true, - "healthy_error": null, - "home": "https://www.storj.io", - "location": "/__w/charts/charts/charts/storj", - "latest_version": "1.0.13", - "latest_app_version": "v1.68.2", - "latest_human_version": "v1.68.2_1.0.13", - "last_update": "2023-05-23 17:11:03", - "name": "storj", - "recommended": false, - "title": "Storj", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "networking", - "financial", - "file-sharing" - ], - "screenshots": [ - "https://storj-s3.bcdn.literatehosting.net/original/2X/c/cce8d25551dedd511a0eb7a52a2220b60e9e1cfb.jpeg" - ], - "sources": [ - "https://www.storj.io", - "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/storj" - ], - "icon_url": "https://assets-global.website-files.com/602eda09fc78afc76e9706b6/60917835a05862243e7de9af_logo.svg" - }, - "elastic-search": { - "app_readme": "

Elastic Search

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the Elastic Search data directory. Afterward, the Elastic Search container\nwill run as a non-root user (default 568).

\n
\n

If you want to apply additional configuration you can by using additional environment variables.

\n

See the Elastic Search documentation\nfor more information.

", - "categories": [ - "monitoring" - ], - "description": "Elasticsearch is the distributed, RESTful search and analytics engine at the heart of the Elastic Stack.", - "healthy": true, - "healthy_error": null, - "home": "https://www.elastic.co", - "location": "/__w/charts/charts/charts/elastic-search", - "latest_version": "1.0.8", - "latest_app_version": "8.8.0", - "latest_human_version": "8.8.0_1.0.8", - "last_update": "2023-05-30 13:24:14", - "name": "elastic-search", - "recommended": false, - "title": "Elastic Search", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "elastic", - "search", - "storage" - ], - "screenshots": [], - "sources": [ - "https://www.elastic.co/", - "https://github.com/truenas/charts/tree/master/charts/elastic-search", - "https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods" - ], - "icon_url": "https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt280217a63b82a734/6202d3378b1f312528798412/elastic-logo.svg" + "icon_url": "https://avatars.githubusercontent.com/u/22418908?s=200&v=4" }, "emby": { "app_readme": "

Emby Server

\n

Emby Server is a personal media server with apps on just about every device

", @@ -594,27 +233,53 @@ "https://hub.docker.com/r/emby/embyserver" ], "icon_url": "https://images-na.ssl-images-amazon.com/images/I/41NwssJC1iL.png" - } - }, - "test": {}, - "community": { - "adguard-home": { - "app_readme": "

AdGuard Home

\n

During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available.\n(Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port)\nBecause of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI).

\n

If you select a different port in the wizard, the Dashboard will not work initially but\nafter a couple of minutes container will automatically restart and the Dashboard will\nbe available on the port you selected on the TrueNAS SCALE UI.

\n
\n\n
", + }, + "ix-chart": { + "app_readme": "

iX-Chart

\n

iX-chart is a chart designed to let user deploy a docker image in a TrueNAS SCALE kubernetes cluster.\nIt provides a mechanism to specify workload type, add external host interfaces in the pods, configure volumes and allocate host resources to the workload.

", + "categories": [ + "generic" + ], + "description": "A Helm chart for deploying simple workloads Kubernetes", + "healthy": true, + "healthy_error": null, + "home": "https://www.truenas.com/", + "location": "/__w/charts/charts/charts/ix-chart", + "latest_version": "2304.0.7", + "latest_app_version": "v1", + "latest_human_version": "v1_2304.0.7", + "last_update": "2023-05-11 16:20:35", + "name": "ix-chart", + "recommended": false, + "title": "ix-chart", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [], + "screenshots": [], + "sources": [], + "icon_url": null + }, + "pihole": { + "app_readme": "

Pihole

\n

DNS and Ad-filtering for your network.

", "categories": [ "networking" ], - "description": "Free and open source, powerful network-wide ads & trackers blocking DNS server.", + "description": "DNS and Ad-filtering for your network.", "healthy": true, "healthy_error": null, - "home": "https://github.com/AdguardTeam/AdGuardHome", - "location": "/__w/charts/charts/community/adguard-home", - "latest_version": "1.0.6", - "latest_app_version": "v0.107.29", - "latest_human_version": "v0.107.29_1.0.6", - "last_update": "2023-06-01 21:00:57", - "name": "adguard-home", + "home": "https://pi-hole.net/", + "location": "/__w/charts/charts/charts/pihole", + "latest_version": "1.0.20", + "latest_app_version": "2023.02.2", + "latest_human_version": "2023.02.2_1.0.20", + "last_update": "2023-05-23 17:11:03", + "name": "pihole", "recommended": false, - "title": "AdGuard Home", + "title": "Pi-hole", "maintainers": [ { "name": "truenas", @@ -627,15 +292,651 @@ "adblock" ], "screenshots": [ - "https://assets.ubuntu.com/v1/1febeddd-adguard-main-image.png", - "https://assets.ubuntu.com/v1/9eb41b64-adguard-advert-1.png" + "https://wp-cdn.pi-hole.net/wp-content/uploads/2020/04/Dashboard.png" ], "sources": [ - "https://github.com/AdguardTeam/AdGuardHome", - "https://github.com/truenas/charts/tree/master/library/ix-dev/community/adguard-home", - "https://hub.docker.com/r/adguard/adguardhome" + "https://pi-hole.net/", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/pihole" ], - "icon_url": "https://github.com/AdguardTeam/AdGuardHome/raw/master/doc/adguard_home_darkmode.svg" + "icon_url": "https://github.com/pi-hole/graphics/raw/master/Vortex/Vortex_Vertical_wordmark_lightmode.png?raw=true)" + }, + "home-assistant": { + "app_readme": "

home-assistant App for TrueNAS SCALE

", + "categories": [ + "productivity" + ], + "description": "Home Assistant App for TrueNAS SCALE", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/home-assistant/home-assistant", + "location": "/__w/charts/charts/charts/home-assistant", + "latest_version": "1.0.93", + "latest_app_version": "2023.5.4", + "latest_human_version": "2023.5.4_1.0.93", + "last_update": "2023-05-24 08:17:15", + "name": "home-assistant", + "recommended": false, + "title": "Home Assistant", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "home-automation", + "assistant" + ], + "screenshots": [ + "https://scotthelme.co.uk/content/images/2021/08/image-12.png" + ], + "sources": [ + "https://github.com/home-assistant/home-assistant", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/home-assistant" + ], + "icon_url": "https://avatars.githubusercontent.com/u/13844975?s=200&v=4" + }, + "netdata": { + "app_readme": "

Netdata is a fast, easy monitoring and troubleshooting system.

", + "categories": [ + "monitoring" + ], + "description": "Real-time performance monitoring, done right!", + "healthy": true, + "healthy_error": null, + "home": "https://www.netdata.cloud/", + "location": "/__w/charts/charts/charts/netdata", + "latest_version": "1.0.24", + "latest_app_version": "v1.39.1", + "latest_human_version": "v1.39.1_1.0.24", + "last_update": "2023-05-23 17:11:03", + "name": "netdata", + "recommended": false, + "title": "Netdata", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "netdata" + ], + "screenshots": [ + "https://user-images.githubusercontent.com/1153921/101509403-f7e59400-3935-11eb-9abd-cbecfa3ee49a.png", + "https://user-images.githubusercontent.com/1153921/101508423-e354cc00-3934-11eb-9b33-3ad57a5988b4.png", + "https://user-images.githubusercontent.com/24860547/224729853-da525e02-bea5-4665-b1f6-ce389976a27b.png" + ], + "sources": [ + "https://github.com/netdata/helmchart", + "https://github.com/netdata/netdata" + ], + "icon_url": "https://netdata.github.io/helmchart/logo.png" + }, + "diskoverdata": { + "app_readme": "

DiskOver App for TrueNAS SCALE

", + "categories": [ + "monitoring" + ], + "description": "Diskover is used to monitor size/volumes of distributed dataset.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/diskoverdata/diskover-community", + "location": "/__w/charts/charts/charts/diskoverdata", + "latest_version": "1.0.11", + "latest_app_version": "2.0.1", + "latest_human_version": "2.0.1_1.0.11", + "last_update": "2023-05-23 17:11:03", + "name": "diskoverdata", + "recommended": false, + "title": "Diskover Data", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "storage", + "discovery" + ], + "screenshots": [ + "https://www.linuxserver.io/user/pages/content/images/2018/11/image-1.png", + "https://camo.githubusercontent.com/62dfd0970129262c413cd9b811a07062526d2f45516ec4f862276c0610fe8f6d/687474703a2f2f7777772e6469736b6f766572646174612e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032312f31302f6469736b6f7665725f76325f63655f73637265656e73686f74312e706e67", + "https://camo.githubusercontent.com/6cddd7fa89691d4cf0ba763f10ee100373c3d84338862d0c25cb8f8b4df9728d/687474703a2f2f7777772e6469736b6f766572646174612e636f6d2f77702d636f6e74656e742f75706c6f6164732f323032312f31302f6469736b6f7665725f76325f63655f73637265656e73686f74322e706e67" + ], + "sources": [ + "https://github.com/diskoverdata/diskover-community", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/diskoverdata" + ], + "icon_url": "http://www.diskoverdata.com/wp-content/uploads/2019/09/diskover.png" + }, + "minio": { + "app_readme": "

MinIO is a High Performance Object Storage released under Apache License v2.0. It is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure for machine learning, analytics and application data workloads.

\n

NOTE\n- On installation, minIO data directory's ownership will be updated to minio:minio.\n- For existing installations that are exhibiting the upgrade to >=1.5.0, the minIO data directory's ownership will be migrated to minio:minio.

", + "categories": [ + "storage", + "S3" + ], + "description": "High Performance, Kubernetes Native Object Storage", + "healthy": true, + "healthy_error": null, + "home": "https://min.io", + "location": "/__w/charts/charts/charts/minio", + "latest_version": "1.7.15", + "latest_app_version": "2023-03-13", + "latest_human_version": "2023-03-13_1.7.15", + "last_update": "2023-03-14 13:28:13", + "name": "minio", + "recommended": false, + "title": "Minio", + "maintainers": [], + "tags": [], + "screenshots": [], + "sources": [ + "https://github.com/minio/minio", + "https://github.com/minio/charts" + ], + "icon_url": "https://min.io/resources/img/logo/MINIO_wordmark.png" + }, + "nextcloud": { + "app_readme": "

nextcloud

\n

nextcloud is a file sharing server that puts the control and security of your own data back into your hands.

", + "categories": [ + "productivity" + ], + "description": "A file sharing server that puts the control and security of your own data back into your hands.", + "healthy": true, + "healthy_error": null, + "home": "https://nextcloud.com/", + "location": "/__w/charts/charts/charts/nextcloud", + "latest_version": "1.6.29", + "latest_app_version": "26.0.2", + "latest_human_version": "26.0.2_1.6.29", + "last_update": "2023-06-01 20:57:41", + "name": "nextcloud", + "recommended": false, + "title": "Nextcloud", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "nextcloud", + "storage", + "sync" + ], + "screenshots": [ + "https://nextcloud.com/media/nextcloud20.png", + "https://nextcloud.com/media/search-moodle-course-module.png", + "https://nextcloud.com/media/multiple_share_links.png" + ], + "sources": [ + "https://github.com/nextcloud/docker", + "https://github.com/nextcloud/helm", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/nextcloud" + ], + "icon_url": "https://cdn.rawgit.com/docker-library/docs/defa5ffc7123177acd60ddef6e16bddf694cc35f/nextcloud/logo.svg" + }, + "elastic-search": { + "app_readme": "

Elastic Search

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the Elastic Search data directory. Afterward, the Elastic Search container\nwill run as a non-root user (default 568).

\n
\n

If you want to apply additional configuration you can by using additional environment variables.

\n

See the Elastic Search documentation\nfor more information.

", + "categories": [ + "monitoring" + ], + "description": "Elasticsearch is the distributed, RESTful search and analytics engine at the heart of the Elastic Stack.", + "healthy": true, + "healthy_error": null, + "home": "https://www.elastic.co", + "location": "/__w/charts/charts/charts/elastic-search", + "latest_version": "1.0.8", + "latest_app_version": "8.8.0", + "latest_human_version": "8.8.0_1.0.8", + "last_update": "2023-05-30 13:24:14", + "name": "elastic-search", + "recommended": false, + "title": "Elastic Search", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "elastic", + "search", + "storage" + ], + "screenshots": [], + "sources": [ + "https://www.elastic.co/", + "https://github.com/truenas/charts/tree/master/charts/elastic-search", + "https://www.elastic.co/guide/en/elasticsearch/reference/master/docker.html#docker-configuration-methods" + ], + "icon_url": "https://images.contentstack.io/v3/assets/bltefdd0b53724fa2ce/blt280217a63b82a734/6202d3378b1f312528798412/elastic-logo.svg" + }, + "prometheus": { + "app_readme": "

Prometheus

\n

Prometheus - Monitoring system and time series database.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the prometheus directories.\nAfterward, the prometheus container will run as a non-root user (Default: 568).\nAlso an empty configuration file will be created.

\n
\n

The configuration file is located at /config/prometheus.yml inside the container.\nData is stored at /data inside the container.

", + "categories": [ + "monitoring" + ], + "description": "The Prometheus monitoring system and time series database.", + "healthy": true, + "healthy_error": null, + "home": "https://prometheus.io", + "location": "/__w/charts/charts/charts/prometheus", + "latest_version": "1.0.8", + "latest_app_version": "v2.44.0", + "latest_human_version": "v2.44.0_1.0.8", + "last_update": "2023-05-30 13:24:14", + "name": "prometheus", + "recommended": false, + "title": "Prometheus", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "metrics", + "storage" + ], + "screenshots": [ + "https://prometheus.io/assets/blog/2019-10-08/10kseries8hours-2.12-cpu.png" + ], + "sources": [ + "https://github.com/prometheus/prometheus", + "https://github.com/truenas/charts/tree/master/charts/prometheus", + "https://prometheus.io" + ], + "icon_url": "https://avatars.githubusercontent.com/u/3380462" + }, + "storj": { + "app_readme": "

storj

\n

storj share your extra storage and earn money

", + "categories": [ + "storage" + ], + "description": "Share your storage on the internet and earn.", + "healthy": true, + "healthy_error": null, + "home": "https://www.storj.io", + "location": "/__w/charts/charts/charts/storj", + "latest_version": "1.0.13", + "latest_app_version": "v1.68.2", + "latest_human_version": "v1.68.2_1.0.13", + "last_update": "2023-05-23 17:11:03", + "name": "storj", + "recommended": false, + "title": "Storj", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "networking", + "financial", + "file-sharing" + ], + "screenshots": [ + "https://storj-s3.bcdn.literatehosting.net/original/2X/c/cce8d25551dedd511a0eb7a52a2220b60e9e1cfb.jpeg" + ], + "sources": [ + "https://www.storj.io", + "https://github.com/truenas/charts/tree/master/library/ix-dev/charts/storj" + ], + "icon_url": "https://assets-global.website-files.com/602eda09fc78afc76e9706b6/60917835a05862243e7de9af_logo.svg" + } + }, + "test": {}, + "enterprise": { + "syncthing": { + "app_readme": "

Syncthing

\n

Syncthing is a file synchronization program.

\n

At each startup of the application, the following settings are applied:

\n\n

Additionally, the following defaults are set for new synthing \"folders\":

\n", + "categories": [ + "storage" + ], + "description": "Syncthing is a continuous file synchronization program.", + "healthy": true, + "healthy_error": null, + "home": "https://syncthing.net/", + "location": "/__w/charts/charts/enterprise/syncthing", + "latest_version": "1.0.0", + "latest_app_version": "1.23.3", + "latest_human_version": "1.23.3_1.0.0", + "last_update": "2023-06-05 13:13:21", + "name": "syncthing", + "recommended": false, + "title": "Syncthing", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "sync", + "file-sharing" + ], + "screenshots": [ + "https://syncthing.net/img/screenshot.png" + ], + "sources": [ + "https://syncthing.net/", + "https://github.com/syncthing/syncthing", + "https://hub.docker.com/r/syncthing/syncthing" + ], + "icon_url": "https://syncthing.net/img/logo-horizontal.svg" + }, + "minio": { + "app_readme": "

MinIO

\n

MinIO is a High Performance Object Storage released under Apache License v2.0.\nIt is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure\nfor machine learning, analytics and application data workloads.

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the MinIO data directory. Afterward, the MinIO container\nwill run as a non-root user (568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the MinIO and postgres data directories.

\n
\n

When Multi Mode is enabled and entries contain :// (url) will enable Host Networking. Regardless of the selection in the Networking section.

", + "categories": [ + "storage" + ], + "description": "High Performance, Kubernetes Native Object Storage", + "healthy": true, + "healthy_error": null, + "home": "https://min.io", + "location": "/__w/charts/charts/enterprise/minio", + "latest_version": "1.0.11", + "latest_app_version": "2023-03-24", + "latest_human_version": "2023-03-24_1.0.11", + "last_update": "2023-06-06 10:25:13", + "name": "minio", + "recommended": false, + "title": "MinIO", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "object-storage", + "S3", + "file-sharing" + ], + "screenshots": [ + "https://github.com/minio/console/blob/master/images/pic3.png?raw=true", + "https://github.com/minio/console/blob/master/images/pic1.png?raw=true", + "https://github.com/minio/console/blob/master/images/pic2.png?raw=true" + ], + "sources": [ + "https://github.com/minio/minio", + "https://github.com/truenas/charts/tree/master/enterprise/minio" + ], + "icon_url": "https://min.io/resources/img/logo/MINIO_wordmark.png" + } + }, + "community": { + "sonarr": { + "app_readme": "

Sonarr

\n

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Sonarr directories.\nAfterward, the Sonarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media" + ], + "description": "Sonarr is a PVR for Usenet and BitTorrent users.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/Sonarr/Sonarr", + "location": "/__w/charts/charts/community/sonarr", + "latest_version": "1.0.8", + "latest_app_version": "3.0.10.1567", + "latest_human_version": "3.0.10.1567_1.0.8", + "last_update": "2023-05-30 13:24:14", + "name": "sonarr", + "recommended": false, + "title": "Sonarr", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "series" + ], + "screenshots": [ + "https://sonarr.tv/img/features/calendar.png", + "https://sonarr.tv/img/features/manualsearch.png", + "https://sonarr.tv/img/features/blocklist.png" + ], + "sources": [ + "https://github.com/onedr0p/containers/tree/main/apps/sonarr", + "https://github.com/truenas/charts/tree/master/community/sonarr", + "https://github.com/Sonarr/Sonarr" + ], + "icon_url": "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" + }, + "tftpd-hpa": { + "app_readme": "

TFTP

\n

TFTP is a server for the Trivial File Transfer Protocol.

\n

The app runs as root user and drops privileges to tftp (9069) user for the TFTP service.

\n
\n

On every application start, a container will be launched with root privileges.\nThis will check the parent directory permissions and ownership.\nIf there is a mismatch it will apply the correct permissions to the TFTP directories.\nWhen \"Allow Create\" is checked, the above container will also check and chmod if needed\nto 757 the TFTP directories and to 555 when not checked.\nAfterward, the TFTP container will run as a root user, dropping privileges\nto tftp (9069) user for the TFTP service.\nNote: You need to have configured DHCP server for network boot to work.

\n
", + "categories": [ + "networking" + ], + "description": "A lightweight tftp-server", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/truenas/containers/tree/main/apps/tftpd-hpa", + "location": "/__w/charts/charts/community/tftpd-hpa", + "latest_version": "1.0.0", + "latest_app_version": "1.0.0", + "latest_human_version": "1.0.0_1.0.0", + "last_update": "2023-05-30 13:27:35", + "name": "tftpd-hpa", + "recommended": false, + "title": "TFTP Server", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "tftp" + ], + "screenshots": [], + "sources": [ + "https://github.com/truenas/containers/tree/main/apps/tftpd-hpa", + "https://github.com/truenas/charts/tree/master/community/tftpd-hpa", + "https://hub.docker.com/r/ixsystems/tftpd-hpa" + ], + "icon_url": "https://avatars.githubusercontent.com/u/53482242" + }, + "terraria": { + "app_readme": "

Terraria

\n

Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.

\n

This applies only for the TShock image.\nOn the first run, you have to check the logs to get the server token. You will find something like this:

\n

text\nLogin before join enabled. Users may be prompted for an account specific password instead of a server password on connect.\nLogin using UUID enabled. Users automatically login via UUID.\nA malicious server can easily steal a user's UUID. You may consider turning this option off if you run a public server.\nTShock Notice: setup-code.txt is still present, and the code located in that file will be used.\nTo setup the server, join the game and type /setup 424041\nThis token will display until disabled by verification. (/setup)

\n

Join the server and run /setup <token>

", + "categories": [ + "games" + ], + "description": "Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.", + "healthy": true, + "healthy_error": null, + "home": "https://terraria.org/", + "location": "/__w/charts/charts/community/terraria", + "latest_version": "1.0.2", + "latest_app_version": "1.4.4.9", + "latest_human_version": "1.4.4.9_1.0.2", + "last_update": "2023-05-30 13:24:14", + "name": "terraria", + "recommended": false, + "title": "Terraria", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "world", + "building", + "adventure" + ], + "screenshots": [], + "sources": [ + "https://terraria.org/", + "https://github.com/truenas/charts/tree/master/community/terraria", + "https://github.com/ryansheehan/terraria" + ], + "icon_url": "https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest" + }, + "lidarr": { + "app_readme": "

Lidarr

\n

Lidarr is a music collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Lidarr directories.\nAfterward, the Lidarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media" + ], + "description": "Lidarr is a music collection manager for Usenet and BitTorrent users.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/Lidarr/Lidarr", + "location": "/__w/charts/charts/community/lidarr", + "latest_version": "1.0.8", + "latest_app_version": "1.1.3.2982", + "latest_human_version": "1.1.3.2982_1.0.8", + "last_update": "2023-05-30 13:24:14", + "name": "lidarr", + "recommended": false, + "title": "Lidarr", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "music" + ], + "screenshots": [ + "https://lidarr.audio/img/features/manualsearch.png", + "https://lidarr.audio/img/features/metadata.png", + "https://lidarr.audio/img/features/import_lists.png" + ], + "sources": [ + "https://github.com/onedr0p/containers/tree/main/apps/lidarr", + "https://github.com/truenas/charts/tree/master/charts/lidarr", + "https://github.com/Lidarr/Lidarr" + ], + "icon_url": "https://raw.githubusercontent.com/Lidarr/Lidarr/develop/Logo/256.png" + }, + "webdav": { + "app_readme": "

WebDAV

\n

WebDAV is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.

\n
\n

When application is installed and Fix Permissions is selected on at least 1 share\na container will be launched with root privileges. This is required in order to apply\nthe correct permissions to the WebDAV shares/directories.\nAfterward, the WebDAV container will run as a non-root user (Default: 568).\nChown will only apply if the parent directory does not match the configured user and group.

\n
", + "categories": [ + "file-sharing" + ], + "description": "WebDAV is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.", + "healthy": true, + "healthy_error": null, + "home": "http://www.webdav.org/", + "location": "/__w/charts/charts/community/webdav", + "latest_version": "1.0.0", + "latest_app_version": "1.1.3.2982", + "latest_human_version": "1.1.3.2982_1.0.0", + "last_update": "2023-05-15 11:13:16", + "name": "webdav", + "recommended": false, + "title": "WebDAv", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "webdav", + "file-sharing" + ], + "screenshots": [], + "sources": [ + "http://www.webdav.org/", + "https://github.com/truenas/charts/tree/master/community/webdav" + ], + "icon_url": "http://www.webdav.org/images/webdav-logo.jpg" + }, + "overseerr": { + "app_readme": "

Overseerr

\n

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!

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Overseerr directories.\nAfterward, the Overseerr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "media" + ], + "description": "Overseerr is a free and open source software application for managing requests for your media library.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/sct/overseerr", + "location": "/__w/charts/charts/community/overseerr", + "latest_version": "1.0.3", + "latest_app_version": "1.32.5", + "latest_human_version": "1.32.5_1.0.3", + "last_update": "2023-05-30 13:24:14", + "name": "overseerr", + "recommended": false, + "title": "Overseerr", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "tv", + "movies", + "requests", + "series" + ], + "screenshots": [ + "https://overseerr.dev/_next/image?url=%2Fscreenshots%2Fscreen_main.jpg&w=3840&q=75" + ], + "sources": [ + "https://hub.docker.com/r/sctx/overseerr", + "https://github.com/truenas/charts/tree/master/community/overseer", + "https://github.com/sct/overseerr" + ], + "icon_url": "https://raw.githubusercontent.com/sct/overseerr/develop/public/os_icon.svg" + }, + "zerotier": { + "app_readme": "

Zerotier

\n

Zerotier Securely connect any device, anywhere.

", + "categories": [ + "networking" + ], + "description": "Securely connect any device, anywhere.", + "healthy": true, + "healthy_error": null, + "home": "https://www.zerotier.com", + "location": "/__w/charts/charts/community/zerotier", + "latest_version": "1.0.1", + "latest_app_version": "1.10.6", + "latest_human_version": "1.10.6_1.0.1", + "last_update": "2023-05-11 16:20:35", + "name": "zerotier", + "recommended": false, + "title": "Zerotier", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "vpn" + ], + "screenshots": [], + "sources": [ + "https://www.zerotier.com", + "https://github.com/truenas/charts/tree/master/community/zerotier", + "https://hub.docker.com/r/zerotier/zerotier" + ], + "icon_url": "https://avatars.githubusercontent.com/u/4173285" }, "rsyncd": { "app_readme": "

Rsyncd

\n

Rsyncd is an open source utility that provides fast incremental file transfer.

", @@ -673,6 +974,186 @@ ], "icon_url": "https://rsync.samba.org/newrsynclogo.jpg" }, + "mineos": { + "app_readme": "

MineOS

\n

MineOS is a server front-end to ease managing Minecraft administrative tasks.

", + "categories": [ + "games" + ], + "description": "MineOS is a server front-end to ease managing Minecraft administrative tasks.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/hexparrot/mineos-node", + "location": "/__w/charts/charts/community/mineos", + "latest_version": "1.0.0", + "latest_app_version": "latest", + "latest_human_version": "latest_1.0.0", + "last_update": null, + "name": "mineos", + "recommended": false, + "title": "MineOS", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "minecraft" + ], + "screenshots": [ + "https://i.ytimg.com/vi/06XGie8SBnE/maxresdefault.jpg" + ], + "sources": [ + "https://hub.docker.com/r/hexparrot/mineos/", + "https://github.com/hexparrot/mineos-node" + ], + "icon_url": "https://camo.githubusercontent.com/bfcc53b6de495c0f2d9d5699afea18b7319529933c5cd38f1e0cf55377df725f/68747470733a2f2f7669676e65747465322e77696b69612e6e6f636f6f6b69652e6e65742f6c6f74722d6d696e6563726166742d6d6f642d6578696c65732f696d616765732f662f66322f4d696e6563726166745f7365727665725f73657475702e706e672f7265766973696f6e2f6c61746573743f63623d3230313630393131313732353537" + }, + "chia": { + "app_readme": "

Chia

\n

This container runs as root user.

\n

When a port is set to < 9000. Host Networking is enabled automatically.

\n
\n

Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice.

\n
\n

Key file is stored in /plots/keyfile and is generated automatically, only if the file does not exist.\nIf you want to use your own keyfile, you can create a file called keyfile in the /plots directory and it will be used instead.

\n
\n

When set on harvester mode keys variable is set to none and no generation is performed.

\n
", + "categories": [ + "financial" + ], + "description": "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.", + "healthy": true, + "healthy_error": null, + "home": "https://www.chia.net/", + "location": "/__w/charts/charts/community/chia", + "latest_version": "1.0.10", + "latest_app_version": "1.8.1", + "latest_human_version": "1.8.1_1.0.10", + "last_update": "2023-05-30 13:24:14", + "name": "chia", + "recommended": false, + "title": "Chia", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "blockchain", + "hard-drive" + ], + "screenshots": [], + "sources": [ + "https://github.com/Chia-Network/chia-docker", + "https://github.com/truenas/charts/tree/master/library/ix-dev/community/chia", + "https://www.chia.net/" + ], + "icon_url": "https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg" + }, + "tailscale": { + "app_readme": "

Tailscale

\n

Tailscale Secure remote access to shared resources

\n", + "categories": [ + "networking" + ], + "description": "Secure remote access to shared resources", + "healthy": true, + "healthy_error": null, + "home": "https://tailscale.com/", + "location": "/__w/charts/charts/community/tailscale", + "latest_version": "1.0.4", + "latest_app_version": "v1.42.0", + "latest_human_version": "v1.42.0_1.0.4", + "last_update": "2023-05-29 11:45:19", + "name": "tailscale", + "recommended": false, + "title": "Tailscale", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "vpn" + ], + "screenshots": [], + "sources": [ + "https://tailscale.com/", + "https://github.com/truenas/charts/tree/master/community/tailscale", + "https://hub.docker.com/r/tailscale/tailscale" + ], + "icon_url": "https://avatars.githubusercontent.com/u/48932923" + }, + "qbittorrent": { + "app_readme": "

qBittorrent

\n

The qBittorrent project aims to provide an open-source software alternative to \u00b5Torrent.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the qBittorrent directories.\nAfterward, the qBittorrent container will run as a non-root user (Default: 568).

\n
", + "categories": [ + "media" + ], + "description": "The qBittorrent project aims to provide an open-source software alternative to \u00b5Torrent.", + "healthy": true, + "healthy_error": null, + "home": "https://www.qbittorrent.org/", + "location": "/__w/charts/charts/community/qbittorrent", + "latest_version": "1.0.12", + "latest_app_version": "4.5.3", + "latest_human_version": "4.5.3_1.0.12", + "last_update": "2023-05-31 07:49:46", + "name": "qbittorrent", + "recommended": false, + "title": "qBittorrent", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "torrent", + "download" + ], + "screenshots": [ + "https://www.addictivetips.com/app/uploads/2019/03/qb-web-ui-e1553049171184.png" + ], + "sources": [ + "https://github.com/onedr0p/containers/tree/main/apps/qbittorrent", + "https://github.com/truenas/charts/tree/master/community/qbittorrent", + "https://www.qbittorrent.org/" + ], + "icon_url": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Qbittorrent_logo.png" + }, + "mumble": { + "app_readme": "

Mumble

\n

Mumble is an Open Source, Low Latency, High Quality Voice Chat Home Downloads Documentation Blog Contribute About

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Mumble directories.\nAfterward, the Mumble container will run as a non-root user (1000, Cannot change).

\n
\n

You can change the server configuration by adding additional environment variables.\nPrefix the configuration variable with MUMBLE_CONFIG_ and it will be added to the configuration file.\nView the Mumble Configuration File for more information.

\n

For example you can set autobanAttempts like this:

\n", + "categories": [ + "productivity" + ], + "description": "Mumble is a free, open source, low latency, high quality voice chat application.", + "healthy": true, + "healthy_error": null, + "home": "https://www.mumble.info/", + "location": "/__w/charts/charts/community/mumble", + "latest_version": "1.0.3", + "latest_app_version": "v1.4.230", + "latest_human_version": "v1.4.230_1.0.3", + "last_update": "2023-06-06 10:25:13", + "name": "mumble", + "recommended": false, + "title": "Mumble", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "voice" + ], + "screenshots": [], + "sources": [ + "https://github.com/mumble-voip/mumble-docker", + "https://github.com/truenas/charts/tree/master/community/mumble", + "https://www.mumble.info/" + ], + "icon_url": "https://github.com/mumble-voip/mumble/blob/master/icons/mumble.svg?raw=true" + }, "jellyfin": { "app_readme": "

Jellyfin

\n

Jellyfin is a Free Software Media System that puts you in control of managing and streaming your media.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Jellyfin directories.\nAfterward, the Jellyfin container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", "categories": [ @@ -715,304 +1196,6 @@ ], "icon_url": "https://jellyfin.org/images/logo.svg" }, - "lidarr": { - "app_readme": "

Lidarr

\n

Lidarr is a music collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Lidarr directories.\nAfterward, the Lidarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "media" - ], - "description": "Lidarr is a music collection manager for Usenet and BitTorrent users.", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/Lidarr/Lidarr", - "location": "/__w/charts/charts/community/lidarr", - "latest_version": "1.0.8", - "latest_app_version": "1.1.3.2982", - "latest_human_version": "1.1.3.2982_1.0.8", - "last_update": "2023-05-30 13:24:14", - "name": "lidarr", - "recommended": false, - "title": "Lidarr", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "music" - ], - "screenshots": [ - "https://lidarr.audio/img/features/manualsearch.png", - "https://lidarr.audio/img/features/metadata.png", - "https://lidarr.audio/img/features/import_lists.png" - ], - "sources": [ - "https://github.com/onedr0p/containers/tree/main/apps/lidarr", - "https://github.com/truenas/charts/tree/master/charts/lidarr", - "https://github.com/Lidarr/Lidarr" - ], - "icon_url": "https://raw.githubusercontent.com/Lidarr/Lidarr/develop/Logo/256.png" - }, - "tftpd-hpa": { - "app_readme": "

TFTP

\n

TFTP is a server for the Trivial File Transfer Protocol.

\n

The app runs as root user and drops privileges to tftp (9069) user for the TFTP service.

\n
\n

On every application start, a container will be launched with root privileges.\nThis will check the parent directory permissions and ownership.\nIf there is a mismatch it will apply the correct permissions to the TFTP directories.\nWhen \"Allow Create\" is checked, the above container will also check and chmod if needed\nto 757 the TFTP directories and to 555 when not checked.\nAfterward, the TFTP container will run as a root user, dropping privileges\nto tftp (9069) user for the TFTP service.\nNote: You need to have configured DHCP server for network boot to work.

\n
", - "categories": [ - "networking" - ], - "description": "A lightweight tftp-server", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/truenas/containers/tree/main/apps/tftpd-hpa", - "location": "/__w/charts/charts/community/tftpd-hpa", - "latest_version": "1.0.0", - "latest_app_version": "1.0.0", - "latest_human_version": "1.0.0_1.0.0", - "last_update": "2023-05-30 13:27:35", - "name": "tftpd-hpa", - "recommended": false, - "title": "TFTP Server", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "tftp" - ], - "screenshots": [], - "sources": [ - "https://github.com/truenas/containers/tree/main/apps/tftpd-hpa", - "https://github.com/truenas/charts/tree/master/community/tftpd-hpa", - "https://hub.docker.com/r/ixsystems/tftpd-hpa" - ], - "icon_url": "https://avatars.githubusercontent.com/u/53482242" - }, - "mumble": { - "app_readme": "

Mumble

\n

Mumble is an Open Source, Low Latency, High Quality Voice Chat Home Downloads Documentation Blog Contribute About

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Mumble directories.\nAfterward, the Mumble container will run as a non-root user (1000, Cannot change).

\n
\n

You can change the server configuration by adding additional environment variables.\nPrefix the configuration variable with MUMBLE_CONFIG_ and it will be added to the configuration file.\nView the Mumble Configuration File for more information.

\n

For example you can set autobanAttempts like this:

\n", - "categories": [ - "productivity" - ], - "description": "Mumble is a free, open source, low latency, high quality voice chat application.", - "healthy": true, - "healthy_error": null, - "home": "https://www.mumble.info/", - "location": "/__w/charts/charts/community/mumble", - "latest_version": "1.0.3", - "latest_app_version": "v1.4.230", - "latest_human_version": "v1.4.230_1.0.3", - "last_update": "2023-06-06 10:25:13", - "name": "mumble", - "recommended": false, - "title": "Mumble", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "voice" - ], - "screenshots": [], - "sources": [ - "https://github.com/mumble-voip/mumble-docker", - "https://github.com/truenas/charts/tree/master/community/mumble", - "https://www.mumble.info/" - ], - "icon_url": "https://github.com/mumble-voip/mumble/blob/master/icons/mumble.svg?raw=true" - }, - "zerotier": { - "app_readme": "

Zerotier

\n

Zerotier Securely connect any device, anywhere.

", - "categories": [ - "networking" - ], - "description": "Securely connect any device, anywhere.", - "healthy": true, - "healthy_error": null, - "home": "https://www.zerotier.com", - "location": "/__w/charts/charts/community/zerotier", - "latest_version": "1.0.1", - "latest_app_version": "1.10.6", - "latest_human_version": "1.10.6_1.0.1", - "last_update": "2023-05-11 16:20:35", - "name": "zerotier", - "recommended": false, - "title": "Zerotier", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "vpn" - ], - "screenshots": [], - "sources": [ - "https://www.zerotier.com", - "https://github.com/truenas/charts/tree/master/community/zerotier", - "https://hub.docker.com/r/zerotier/zerotier" - ], - "icon_url": "https://avatars.githubusercontent.com/u/4173285" - }, - "terraria": { - "app_readme": "

Terraria

\n

Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.

\n

This applies only for the TShock image.\nOn the first run, you have to check the logs to get the server token. You will find something like this:

\n

text\nLogin before join enabled. Users may be prompted for an account specific password instead of a server password on connect.\nLogin using UUID enabled. Users automatically login via UUID.\nA malicious server can easily steal a user's UUID. You may consider turning this option off if you run a public server.\nTShock Notice: setup-code.txt is still present, and the code located in that file will be used.\nTo setup the server, join the game and type /setup 424041\nThis token will display until disabled by verification. (/setup)

\n

Join the server and run /setup <token>

", - "categories": [ - "games" - ], - "description": "Terraria is a land of adventure! A land of mystery! A land that's yours to shape, defend, and enjoy.", - "healthy": true, - "healthy_error": null, - "home": "https://terraria.org/", - "location": "/__w/charts/charts/community/terraria", - "latest_version": "1.0.2", - "latest_app_version": "1.4.4.9", - "latest_human_version": "1.4.4.9_1.0.2", - "last_update": "2023-05-30 13:24:14", - "name": "terraria", - "recommended": false, - "title": "Terraria", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "world", - "building", - "adventure" - ], - "screenshots": [], - "sources": [ - "https://terraria.org/", - "https://github.com/truenas/charts/tree/master/community/terraria", - "https://github.com/ryansheehan/terraria" - ], - "icon_url": "https://static.wikia.nocookie.net/terraria_gamepedia/images/a/a4/NewPromoLogo.png/revision/latest" - }, - "overseerr": { - "app_readme": "

Overseerr

\n

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!

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Overseerr directories.\nAfterward, the Overseerr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "media" - ], - "description": "Overseerr is a free and open source software application for managing requests for your media library.", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/sct/overseerr", - "location": "/__w/charts/charts/community/overseerr", - "latest_version": "1.0.3", - "latest_app_version": "1.32.5", - "latest_human_version": "1.32.5_1.0.3", - "last_update": "2023-05-30 13:24:14", - "name": "overseerr", - "recommended": false, - "title": "Overseerr", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "tv", - "movies", - "requests", - "series" - ], - "screenshots": [ - "https://overseerr.dev/_next/image?url=%2Fscreenshots%2Fscreen_main.jpg&w=3840&q=75" - ], - "sources": [ - "https://hub.docker.com/r/sctx/overseerr", - "https://github.com/truenas/charts/tree/master/community/overseer", - "https://github.com/sct/overseerr" - ], - "icon_url": "https://raw.githubusercontent.com/sct/overseerr/develop/public/os_icon.svg" - }, - "gitea": { - "app_readme": "

Gitea

\n

Gitea - Git with a cup of tea

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the gitea directories.\nAfterward, the gitea container will run as a non-root user (Default: 568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the gitea and postgres data directories.

\n
\n

On initial startup a setup wizard will be launched with settings for database, ports, path, and domain prefilled.\nKeep them as they are, fill anything you want in the optional settings section and click on Install Gitea.

", - "categories": [ - "productivity" - ], - "description": "Gitea - Git with a cup of tea", - "healthy": true, - "healthy_error": null, - "home": "https://gitea.io/en-us", - "location": "/__w/charts/charts/community/gitea", - "latest_version": "1.0.6", - "latest_app_version": "1.19.0", - "latest_human_version": "1.19.0_1.0.6", - "last_update": "2023-05-30 13:24:14", - "name": "gitea", - "recommended": false, - "title": "Gitea", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "git" - ], - "screenshots": [ - "https://gitea.io/images/screenshot.png" - ], - "sources": [ - "https://gitea.io/en-us", - "https://github.com/truenas/charts/tree/master/community/gitea", - "https://docs.gitea.io/en-us/install-with-docker-rootless" - ], - "icon_url": "https://gitea.com/assets/img/logo.svg" - }, - "tdarr": { - "app_readme": "

Tdarr

\n

Tdarr is a Distributed Transcoding System

\n", - "categories": [ - "media" - ], - "description": "Tdarr is a Distributed Transcoding System", - "healthy": true, - "healthy_error": null, - "home": "https://home.tdarr.io/", - "location": "/__w/charts/charts/community/tdarr", - "latest_version": "1.0.6", - "latest_app_version": "2.00.20.1", - "latest_human_version": "2.00.20.1_1.0.6", - "last_update": "2023-05-30 13:24:14", - "name": "tdarr", - "recommended": false, - "title": "Tdarr", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "encode", - "transcode" - ], - "screenshots": [ - "https://home.tdarr.io/static/media/Stats2-min.a583d8ec.png", - "https://home.tdarr.io/static/media/Nodes-min.d8bf11b5.png", - "https://home.tdarr.io/static/media/VerdictHistory-min.444965ac.png" - ], - "sources": [ - "https://home.tdarr.io/", - "https://github.com/truenas/charts/tree/master/community/tdarr", - "https://docs.tdarr.io/docs" - ], - "icon_url": "https://home.tdarr.io/static/media/logo3-min.246d6df4.png" - }, "vaultwarden": { "app_readme": "

Vaultwarden

\n

Vaultwarden Alternative implementation of the Bitwarden server API written in Rust and compatible with upstream Bitwarden clients

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the Vaultwarden data directory. Afterward, the Vaultwarden container\nwill run as a non-root user (default 568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the Vaultwarden and postgres data directories.

\n
\n

While the option to use Rocket for TLS is there, it is not\nrecommended.\nInstead, use a reverse proxy to handle TLS termination.

\n

Using HTTPS is required for the most of the features to work (correctly).

", "categories": [ @@ -1051,23 +1234,23 @@ "icon_url": null, "icon": "https://raw.githubusercontent.com/dani-garcia/vaultwarden/main/src/static/images/vaultwarden-icon.png" }, - "chia": { - "app_readme": "

Chia

\n

This container runs as root user.

\n

When a port is set to < 9000. Host Networking is enabled automatically.

\n
\n

Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice.

\n
\n

Key file is stored in /plots/keyfile and is generated automatically, only if the file does not exist.\nIf you want to use your own keyfile, you can create a file called keyfile in the /plots directory and it will be used instead.

\n
\n

When set on harvester mode keys variable is set to none and no generation is performed.

\n
", + "gitea": { + "app_readme": "

Gitea

\n

Gitea - Git with a cup of tea

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the gitea directories.\nAfterward, the gitea container will run as a non-root user (Default: 568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the gitea and postgres data directories.

\n
\n

On initial startup a setup wizard will be launched with settings for database, ports, path, and domain prefilled.\nKeep them as they are, fill anything you want in the optional settings section and click on Install Gitea.

", "categories": [ - "financial" + "productivity" ], - "description": "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.", + "description": "Gitea - Git with a cup of tea", "healthy": true, "healthy_error": null, - "home": "https://www.chia.net/", - "location": "/__w/charts/charts/community/chia", - "latest_version": "1.0.10", - "latest_app_version": "1.8.1", - "latest_human_version": "1.8.1_1.0.10", + "home": "https://gitea.io/en-us", + "location": "/__w/charts/charts/community/gitea", + "latest_version": "1.0.6", + "latest_app_version": "1.19.0", + "latest_human_version": "1.19.0_1.0.6", "last_update": "2023-05-30 13:24:14", - "name": "chia", + "name": "gitea", "recommended": false, - "title": "Chia", + "title": "Gitea", "maintainers": [ { "name": "truenas", @@ -1076,74 +1259,35 @@ } ], "tags": [ - "blockchain", - "hard-drive" - ], - "screenshots": [], - "sources": [ - "https://github.com/Chia-Network/chia-docker", - "https://github.com/truenas/charts/tree/master/library/ix-dev/community/chia", - "https://www.chia.net/" - ], - "icon_url": "https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg" - }, - "nginx-proxy-manager": { - "app_readme": "

Nginx Proxy Manager

\n

Nginx Proxy Manager Expose your services easily and securely

\n
\n

Application requires to run as root. This is a limitation of the application.

\n
", - "categories": [ - "networking" - ], - "description": "Expose your services easily and securely", - "healthy": true, - "healthy_error": null, - "home": "https://nginxproxymanager.com/", - "location": "/__w/charts/charts/community/nginx-proxy-manager", - "latest_version": "1.0.7", - "latest_app_version": "2.10.3", - "latest_human_version": "2.10.3_1.0.7", - "last_update": "2023-05-30 13:24:14", - "name": "nginx-proxy-manager", - "recommended": false, - "title": "Nginx Proxy Manager", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "reverse", - "proxy" + "git" ], "screenshots": [ - "https://nginxproxymanager.com/screenshots/login.png", - "https://nginxproxymanager.com/screenshots/dashboard.png", - "https://nginxproxymanager.com/screenshots/proxy-hosts.png" + "https://gitea.io/images/screenshot.png" ], "sources": [ - "https://nginxproxymanager.com/", - "https://github.com/truenas/charts/tree/master/community/nginx-proxy-manager", - "https://hub.docker.com/r/jc21/nginx-proxy-manager" + "https://gitea.io/en-us", + "https://github.com/truenas/charts/tree/master/community/gitea", + "https://docs.gitea.io/en-us/install-with-docker-rootless" ], - "icon_url": "https://nginxproxymanager.com/logo.png" + "icon_url": "https://gitea.com/assets/img/logo.svg" }, - "minecraft": { - "app_readme": "

Minecraft

\n

Minecraft is a sandbox game

\n
\n

Application requires to run as root.

\n
\n

Depending on the Type of server selected, you might need to add additional\ncustom environment variables to the application.

\n

More info can be found here\nSelect the type on the sidebar.

\n

Note that some values are only applicable during the world generation.\nMore info can be found here

", + "ipfs": { + "app_readme": "

IPFS

\n

Interplanetary Filesystem - the Web3 standard for content-addressing, interoperable with HTTP

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the ipfs directories.\nAfterward, the ipfs container will run as a non-root user (Default: 568).

\n
", "categories": [ - "games" + "storage" ], - "description": "Minecraft is a sandbox game", + "description": "Interplanetary Filesystem - the Web3 standard for content-addressing, interoperable with HTTP", "healthy": true, "healthy_error": null, - "home": "https://www.minecraft.net/en-us", - "location": "/__w/charts/charts/community/minecraft", - "latest_version": "1.0.2", - "latest_app_version": "2023.3.0", - "latest_human_version": "2023.3.0_1.0.2", + "home": "https://ipfs.tech/", + "location": "/__w/charts/charts/community/ipfs", + "latest_version": "1.0.11", + "latest_app_version": "v0.20.0", + "latest_human_version": "v0.20.0_1.0.11", "last_update": "2023-05-30 13:24:14", - "name": "minecraft", + "name": "ipfs", "recommended": false, - "title": "Minecraft", + "title": "IPFS", "maintainers": [ { "name": "truenas", @@ -1152,197 +1296,19 @@ } ], "tags": [ - "world", - "building" - ], - "screenshots": [], - "sources": [ - "https://www.minecraft.net/en-us", - "https://github.com/truenas/charts/tree/master/community/minecraft", - "https://github.com/itzg/docker-minecraft-server" - ], - "icon_url": "https://www.minecraft.net/content/dam/games/minecraft/logos/logo-minecraft.svg" - }, - "ddns-updater": { - "app_readme": "

DDNS Updater

\n

DDNS Updater is a lightweight universal DDNS Updater with web UI

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the DDNS Updater directories.\nAfterward, the DDNS Updater container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "networking" - ], - "description": "Lightweight universal DDNS Updater with web UI", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/qdm12/ddns-updater", - "location": "/__w/charts/charts/community/ddns-updater", - "latest_version": "1.0.5", - "latest_app_version": "v2.5.0", - "latest_human_version": "v2.5.0_1.0.5", - "last_update": "2023-06-05 19:20:09", - "name": "ddns-updater", - "recommended": false, - "title": "DDNS Updater", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "ddns" + "file-sharing", + "kubo" ], "screenshots": [ - "https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/webui.png" + "https://raw.githubusercontent.com/ipfs-shipyard/ipfs-webui/5764ea167a89e8c6bcb6abf83d7e258388e1623d/docs/screenshots/ipfs-webui-files.png", + "https://raw.githubusercontent.com/ipfs-shipyard/ipfs-webui/5764ea167a89e8c6bcb6abf83d7e258388e1623d/docs/screenshots/ipfs-webui-settings.png" ], "sources": [ - "https://github.com/qdm12/ddns-updater", - "https://github.com/truenas/charts/tree/master/community/ddns-updater", - "https://hub.docker.com/r/qmcgaw/ddns-updater" + "https://github.com/ipfs/kubo", + "https://github.com/truenas/charts/tree/master/community/ipfs", + "https://ipfs.tech/" ], - "icon_url": "https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/ddnsgopher.svg" - }, - "clamav": { - "app_readme": "

ClamAV

\n

ClamAV - ClamAV\u00ae is an open-source antivirus engine for detecting trojans, viruses, malware & other malicious threats.

\n", - "categories": [ - "security" - ], - "description": "ClamAV is an open source (GPLv2) anti-virus toolkit.", - "healthy": true, - "healthy_error": null, - "home": "https://www.clamav.net/", - "location": "/__w/charts/charts/community/clamav", - "latest_version": "1.0.2", - "latest_app_version": "1.0.1", - "latest_human_version": "1.0.1_1.0.2", - "last_update": "2023-05-30 13:24:14", - "name": "clamav", - "recommended": false, - "title": "Clam AV", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "anti-virus" - ], - "screenshots": [], - "sources": [ - "https://docs.clamav.net/", - "https://github.com/truenas/charts/tree/master/community/clamav", - "https://www.clamav.net/" - ], - "icon_url": "https://raw.githubusercontent.com/micahsnyder/clamav-documentation/main/src/images/logo.png" - }, - "sonarr": { - "app_readme": "

Sonarr

\n

Sonarr is a PVR for Usenet and BitTorrent users. It can monitor multiple RSS feeds for new episodes of your favorite shows and will grab, sort and rename them.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Sonarr directories.\nAfterward, the Sonarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", - "categories": [ - "media" - ], - "description": "Sonarr is a PVR for Usenet and BitTorrent users.", - "healthy": true, - "healthy_error": null, - "home": "https://github.com/Sonarr/Sonarr", - "location": "/__w/charts/charts/community/sonarr", - "latest_version": "1.0.8", - "latest_app_version": "3.0.10.1567", - "latest_human_version": "3.0.10.1567_1.0.8", - "last_update": "2023-05-30 13:24:14", - "name": "sonarr", - "recommended": false, - "title": "Sonarr", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "series" - ], - "screenshots": [ - "https://sonarr.tv/img/features/calendar.png", - "https://sonarr.tv/img/features/manualsearch.png", - "https://sonarr.tv/img/features/blocklist.png" - ], - "sources": [ - "https://github.com/onedr0p/containers/tree/main/apps/sonarr", - "https://github.com/truenas/charts/tree/master/community/sonarr", - "https://github.com/Sonarr/Sonarr" - ], - "icon_url": "https://raw.githubusercontent.com/Sonarr/Sonarr/develop/Logo/256.png" - }, - "tailscale": { - "app_readme": "

Tailscale

\n

Tailscale Secure remote access to shared resources

\n", - "categories": [ - "networking" - ], - "description": "Secure remote access to shared resources", - "healthy": true, - "healthy_error": null, - "home": "https://tailscale.com/", - "location": "/__w/charts/charts/community/tailscale", - "latest_version": "1.0.4", - "latest_app_version": "v1.42.0", - "latest_human_version": "v1.42.0_1.0.4", - "last_update": "2023-05-29 11:45:19", - "name": "tailscale", - "recommended": false, - "title": "Tailscale", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "vpn" - ], - "screenshots": [], - "sources": [ - "https://tailscale.com/", - "https://github.com/truenas/charts/tree/master/community/tailscale", - "https://hub.docker.com/r/tailscale/tailscale" - ], - "icon_url": "https://avatars.githubusercontent.com/u/48932923" - }, - "webdav": { - "app_readme": "

WebDAV

\n

WebDAV is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.

\n
\n

When application is installed and Fix Permissions is selected on at least 1 share\na container will be launched with root privileges. This is required in order to apply\nthe correct permissions to the WebDAV shares/directories.\nAfterward, the WebDAV container will run as a non-root user (Default: 568).\nChown will only apply if the parent directory does not match the configured user and group.

\n
", - "categories": [ - "file-sharing" - ], - "description": "WebDAV is a set of extensions to the HTTP protocol which allows users to collaboratively edit and manage files on remote web servers.", - "healthy": true, - "healthy_error": null, - "home": "http://www.webdav.org/", - "location": "/__w/charts/charts/community/webdav", - "latest_version": "1.0.0", - "latest_app_version": "1.1.3.2982", - "latest_human_version": "1.1.3.2982_1.0.0", - "last_update": "2023-05-15 11:13:16", - "name": "webdav", - "recommended": false, - "title": "WebDAv", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "webdav", - "file-sharing" - ], - "screenshots": [], - "sources": [ - "http://www.webdav.org/", - "https://github.com/truenas/charts/tree/master/community/webdav" - ], - "icon_url": "http://www.webdav.org/images/webdav-logo.jpg" + "icon_url": "https://avatars.githubusercontent.com/u/10536621" }, "radarr": { "app_readme": "

Radarr

\n

Radarr is a movie collection manager for Usenet and BitTorrent users.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the Radarr directories.\nAfterward, the Radarr container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", @@ -1384,61 +1350,23 @@ ], "icon_url": "https://raw.githubusercontent.com/Radarr/Radarr/develop/Logo/256.png" }, - "qbittorrent": { - "app_readme": "

qBittorrent

\n

The qBittorrent project aims to provide an open-source software alternative to \u00b5Torrent.

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the qBittorrent directories.\nAfterward, the qBittorrent container will run as a non-root user (Default: 568).

\n
", + "tdarr": { + "app_readme": "

Tdarr

\n

Tdarr is a Distributed Transcoding System

\n", "categories": [ "media" ], - "description": "The qBittorrent project aims to provide an open-source software alternative to \u00b5Torrent.", + "description": "Tdarr is a Distributed Transcoding System", "healthy": true, "healthy_error": null, - "home": "https://www.qbittorrent.org/", - "location": "/__w/charts/charts/community/qbittorrent", - "latest_version": "1.0.12", - "latest_app_version": "4.5.3", - "latest_human_version": "4.5.3_1.0.12", - "last_update": "2023-05-31 07:49:46", - "name": "qbittorrent", - "recommended": false, - "title": "qBittorrent", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "torrent", - "download" - ], - "screenshots": [ - "https://www.addictivetips.com/app/uploads/2019/03/qb-web-ui-e1553049171184.png" - ], - "sources": [ - "https://github.com/onedr0p/containers/tree/main/apps/qbittorrent", - "https://github.com/truenas/charts/tree/master/community/qbittorrent", - "https://www.qbittorrent.org/" - ], - "icon_url": "https://upload.wikimedia.org/wikipedia/commons/9/9e/Qbittorrent_logo.png" - }, - "ipfs": { - "app_readme": "

IPFS

\n

Interplanetary Filesystem - the Web3 standard for content-addressing, interoperable with HTTP

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the ipfs directories.\nAfterward, the ipfs container will run as a non-root user (Default: 568).

\n
", - "categories": [ - "storage" - ], - "description": "Interplanetary Filesystem - the Web3 standard for content-addressing, interoperable with HTTP", - "healthy": true, - "healthy_error": null, - "home": "https://ipfs.tech/", - "location": "/__w/charts/charts/community/ipfs", - "latest_version": "1.0.11", - "latest_app_version": "v0.20.0", - "latest_human_version": "v0.20.0_1.0.11", + "home": "https://home.tdarr.io/", + "location": "/__w/charts/charts/community/tdarr", + "latest_version": "1.0.6", + "latest_app_version": "2.00.20.1", + "latest_human_version": "2.00.20.1_1.0.6", "last_update": "2023-05-30 13:24:14", - "name": "ipfs", + "name": "tdarr", "recommended": false, - "title": "IPFS", + "title": "Tdarr", "maintainers": [ { "name": "truenas", @@ -1447,79 +1375,38 @@ } ], "tags": [ - "file-sharing", - "kubo" + "encode", + "transcode" ], "screenshots": [ - "https://raw.githubusercontent.com/ipfs-shipyard/ipfs-webui/5764ea167a89e8c6bcb6abf83d7e258388e1623d/docs/screenshots/ipfs-webui-files.png", - "https://raw.githubusercontent.com/ipfs-shipyard/ipfs-webui/5764ea167a89e8c6bcb6abf83d7e258388e1623d/docs/screenshots/ipfs-webui-settings.png" + "https://home.tdarr.io/static/media/Stats2-min.a583d8ec.png", + "https://home.tdarr.io/static/media/Nodes-min.d8bf11b5.png", + "https://home.tdarr.io/static/media/VerdictHistory-min.444965ac.png" ], "sources": [ - "https://github.com/ipfs/kubo", - "https://github.com/truenas/charts/tree/master/community/ipfs", - "https://ipfs.tech/" + "https://home.tdarr.io/", + "https://github.com/truenas/charts/tree/master/community/tdarr", + "https://docs.tdarr.io/docs" ], - "icon_url": "https://avatars.githubusercontent.com/u/10536621" - } - }, - "enterprise": { - "minio": { - "app_readme": "

MinIO

\n

MinIO is a High Performance Object Storage released under Apache License v2.0.\nIt is API compatible with Amazon S3 cloud storage service. Use MinIO to build high performance infrastructure\nfor machine learning, analytics and application data workloads.

\n
\n

During the installation process, a container will be launched with root privileges. This is required\nin order to apply the correct permissions to the MinIO data directory. Afterward, the MinIO container\nwill run as a non-root user (568).\nSame applies to the postgres container. This will run afterwards as a non-root user (999).\nOn each upgrade, a container will be launched with root privileges in order to apply the correct\npermissions to the postgres backups directory. Container that performs the backup will run as a non-root user (999) afterwards.\nKeep in mind the permissions on the backup directory will be changed to 999:999 on every update.\nBut will only be changed once for the MinIO and postgres data directories.

\n
\n

When Multi Mode is enabled and entries contain :// (url) will enable Host Networking. Regardless of the selection in the Networking section.

", - "categories": [ - "storage" - ], - "description": "High Performance, Kubernetes Native Object Storage", - "healthy": true, - "healthy_error": null, - "home": "https://min.io", - "location": "/__w/charts/charts/enterprise/minio", - "latest_version": "1.0.11", - "latest_app_version": "2023-03-24", - "latest_human_version": "2023-03-24_1.0.11", - "last_update": "2023-06-06 10:25:13", - "name": "minio", - "recommended": false, - "title": "MinIO", - "maintainers": [ - { - "name": "truenas", - "url": "https://www.truenas.com/", - "email": "dev@ixsystems.com" - } - ], - "tags": [ - "object-storage", - "S3", - "file-sharing" - ], - "screenshots": [ - "https://github.com/minio/console/blob/master/images/pic3.png?raw=true", - "https://github.com/minio/console/blob/master/images/pic1.png?raw=true", - "https://github.com/minio/console/blob/master/images/pic2.png?raw=true" - ], - "sources": [ - "https://github.com/minio/minio", - "https://github.com/truenas/charts/tree/master/enterprise/minio" - ], - "icon_url": "https://min.io/resources/img/logo/MINIO_wordmark.png" + "icon_url": "https://home.tdarr.io/static/media/logo3-min.246d6df4.png" }, - "syncthing": { - "app_readme": "

Syncthing

\n

Syncthing is a file synchronization program.

\n

At each startup of the application, the following settings are applied:

\n\n

Additionally, the following defaults are set for new synthing \"folders\":

\n", + "clamav": { + "app_readme": "

ClamAV

\n

ClamAV - ClamAV\u00ae is an open-source antivirus engine for detecting trojans, viruses, malware & other malicious threats.

\n", "categories": [ - "storage" + "security" ], - "description": "Syncthing is a continuous file synchronization program.", + "description": "ClamAV is an open source (GPLv2) anti-virus toolkit.", "healthy": true, "healthy_error": null, - "home": "https://syncthing.net/", - "location": "/__w/charts/charts/enterprise/syncthing", - "latest_version": "1.0.0", - "latest_app_version": "1.23.3", - "latest_human_version": "1.23.3_1.0.0", - "last_update": "2023-06-05 13:13:21", - "name": "syncthing", + "home": "https://www.clamav.net/", + "location": "/__w/charts/charts/community/clamav", + "latest_version": "1.0.2", + "latest_app_version": "1.0.1", + "latest_human_version": "1.0.1_1.0.2", + "last_update": "2023-05-30 13:24:14", + "name": "clamav", "recommended": false, - "title": "Syncthing", + "title": "Clam AV", "maintainers": [ { "name": "truenas", @@ -1528,18 +1415,167 @@ } ], "tags": [ - "sync", - "file-sharing" + "anti-virus" + ], + "screenshots": [], + "sources": [ + "https://docs.clamav.net/", + "https://github.com/truenas/charts/tree/master/community/clamav", + "https://www.clamav.net/" + ], + "icon_url": "https://raw.githubusercontent.com/micahsnyder/clamav-documentation/main/src/images/logo.png" + }, + "minecraft": { + "app_readme": "

Minecraft

\n

Minecraft is a sandbox game

\n
\n

Application requires to run as root.

\n
\n

Depending on the Type of server selected, you might need to add additional\ncustom environment variables to the application.

\n

More info can be found here\nSelect the type on the sidebar.

\n

Note that some values are only applicable during the world generation.\nMore info can be found here

", + "categories": [ + "games" + ], + "description": "Minecraft is a sandbox game", + "healthy": true, + "healthy_error": null, + "home": "https://www.minecraft.net/en-us", + "location": "/__w/charts/charts/community/minecraft", + "latest_version": "1.0.2", + "latest_app_version": "2023.3.0", + "latest_human_version": "2023.3.0_1.0.2", + "last_update": "2023-05-30 13:24:14", + "name": "minecraft", + "recommended": false, + "title": "Minecraft", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "world", + "building" + ], + "screenshots": [], + "sources": [ + "https://www.minecraft.net/en-us", + "https://github.com/truenas/charts/tree/master/community/minecraft", + "https://github.com/itzg/docker-minecraft-server" + ], + "icon_url": "https://www.minecraft.net/content/dam/games/minecraft/logos/logo-minecraft.svg" + }, + "nginx-proxy-manager": { + "app_readme": "

Nginx Proxy Manager

\n

Nginx Proxy Manager Expose your services easily and securely

\n
\n

Application requires to run as root. This is a limitation of the application.

\n
", + "categories": [ + "networking" + ], + "description": "Expose your services easily and securely", + "healthy": true, + "healthy_error": null, + "home": "https://nginxproxymanager.com/", + "location": "/__w/charts/charts/community/nginx-proxy-manager", + "latest_version": "1.0.7", + "latest_app_version": "2.10.3", + "latest_human_version": "2.10.3_1.0.7", + "last_update": "2023-05-30 13:24:14", + "name": "nginx-proxy-manager", + "recommended": false, + "title": "Nginx Proxy Manager", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "reverse", + "proxy" ], "screenshots": [ - "https://syncthing.net/img/screenshot.png" + "https://nginxproxymanager.com/screenshots/login.png", + "https://nginxproxymanager.com/screenshots/dashboard.png", + "https://nginxproxymanager.com/screenshots/proxy-hosts.png" ], "sources": [ - "https://syncthing.net/", - "https://github.com/syncthing/syncthing", - "https://hub.docker.com/r/syncthing/syncthing" + "https://nginxproxymanager.com/", + "https://github.com/truenas/charts/tree/master/community/nginx-proxy-manager", + "https://hub.docker.com/r/jc21/nginx-proxy-manager" ], - "icon_url": "https://syncthing.net/img/logo-horizontal.svg" + "icon_url": "https://nginxproxymanager.com/logo.png" + }, + "ddns-updater": { + "app_readme": "

DDNS Updater

\n

DDNS Updater is a lightweight universal DDNS Updater with web UI

\n
\n

When application is installed, a container will be launched with root privileges.\nThis is required in order to apply the correct permissions to the DDNS Updater directories.\nAfterward, the DDNS Updater container will run as a non-root user (Default: 568).\nAll mounted storage(s) will be chowned only if the parent directory does not match the configured user.

\n
", + "categories": [ + "networking" + ], + "description": "Lightweight universal DDNS Updater with web UI", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/qdm12/ddns-updater", + "location": "/__w/charts/charts/community/ddns-updater", + "latest_version": "1.0.5", + "latest_app_version": "v2.5.0", + "latest_human_version": "v2.5.0_1.0.5", + "last_update": "2023-06-07 22:30:46", + "name": "ddns-updater", + "recommended": false, + "title": "DDNS Updater", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "ddns" + ], + "screenshots": [ + "https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/webui.png" + ], + "sources": [ + "https://github.com/qdm12/ddns-updater", + "https://github.com/truenas/charts/tree/master/community/ddns-updater", + "https://hub.docker.com/r/qmcgaw/ddns-updater" + ], + "icon_url": "https://raw.githubusercontent.com/qdm12/ddns-updater/master/readme/ddnsgopher.svg" + }, + "adguard-home": { + "app_readme": "

AdGuard Home

\n

During the setup wizard, AdGuard Home presents an option to select on which port the web interface will be available.\n(Defaults to 80. Which is a privileged port and also usually the TrueNAS SCALE UI uses that port)\nBecause of that, App will force the webUI to listen to port 30000 (or the port selected by user in the TrueNAS SCALE UI).

\n

If you select a different port in the wizard, the Dashboard will not work initially but\nafter a couple of minutes container will automatically restart and the Dashboard will\nbe available on the port you selected on the TrueNAS SCALE UI.

\n
\n\n
", + "categories": [ + "networking" + ], + "description": "Free and open source, powerful network-wide ads & trackers blocking DNS server.", + "healthy": true, + "healthy_error": null, + "home": "https://github.com/AdguardTeam/AdGuardHome", + "location": "/__w/charts/charts/community/adguard-home", + "latest_version": "1.0.6", + "latest_app_version": "v0.107.29", + "latest_human_version": "v0.107.29_1.0.6", + "last_update": "2023-06-01 21:00:57", + "name": "adguard-home", + "recommended": false, + "title": "AdGuard Home", + "maintainers": [ + { + "name": "truenas", + "url": "https://www.truenas.com/", + "email": "dev@ixsystems.com" + } + ], + "tags": [ + "dns", + "adblock" + ], + "screenshots": [ + "https://assets.ubuntu.com/v1/1febeddd-adguard-main-image.png", + "https://assets.ubuntu.com/v1/9eb41b64-adguard-advert-1.png" + ], + "sources": [ + "https://github.com/AdguardTeam/AdGuardHome", + "https://github.com/truenas/charts/tree/master/library/ix-dev/community/adguard-home", + "https://hub.docker.com/r/adguard/adguardhome" + ], + "icon_url": "https://github.com/AdguardTeam/AdGuardHome/raw/master/doc/adguard_home_darkmode.svg" } } } \ No newline at end of file diff --git a/community/mineos/1.0.0/Chart.lock b/community/mineos/1.0.0/Chart.lock new file mode 100644 index 0000000000..0134b1624b --- /dev/null +++ b/community/mineos/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.8 +digest: sha256:254efaa1285f634b7a80b7baadeadbd20a680f7fee49d1d9d3c4618aa0d657ad +generated: "2023-06-02T19:17:47.930613813+03:00" diff --git a/community/mineos/1.0.0/Chart.yaml b/community/mineos/1.0.0/Chart.yaml new file mode 100644 index 0000000000..06689908b1 --- /dev/null +++ b/community/mineos/1.0.0/Chart.yaml @@ -0,0 +1,24 @@ +name: mineos +description: MineOS is a server front-end to ease managing Minecraft administrative tasks. +annotations: + title: MineOS +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: 'latest' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ + email: dev@ixsystems.com +dependencies: + - name: common + repository: file://../../../common + version: 1.0.8 +home: https://github.com/hexparrot/mineos-node +icon: https://camo.githubusercontent.com/bfcc53b6de495c0f2d9d5699afea18b7319529933c5cd38f1e0cf55377df725f/68747470733a2f2f7669676e65747465322e77696b69612e6e6f636f6f6b69652e6e65742f6c6f74722d6d696e6563726166742d6d6f642d6578696c65732f696d616765732f662f66322f4d696e6563726166745f7365727665725f73657475702e706e672f7265766973696f6e2f6c61746573743f63623d3230313630393131313732353537 +sources: + - https://hub.docker.com/r/hexparrot/mineos/ + - https://github.com/hexparrot/mineos-node +keywords: + - minecraft diff --git a/community/mineos/1.0.0/README.md b/community/mineos/1.0.0/README.md new file mode 100644 index 0000000000..b1eb4a2a9a --- /dev/null +++ b/community/mineos/1.0.0/README.md @@ -0,0 +1,3 @@ +# MineOS + +[MineOS](https://github.com/hexparrot/mineos-node) is a server front-end to ease managing Minecraft administrative tasks. diff --git a/community/mineos/1.0.0/app-readme.md b/community/mineos/1.0.0/app-readme.md new file mode 100644 index 0000000000..b1eb4a2a9a --- /dev/null +++ b/community/mineos/1.0.0/app-readme.md @@ -0,0 +1,3 @@ +# MineOS + +[MineOS](https://github.com/hexparrot/mineos-node) is a server front-end to ease managing Minecraft administrative tasks. diff --git a/community/mineos/1.0.0/charts/common-1.0.8.tgz b/community/mineos/1.0.0/charts/common-1.0.8.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2403a23d05ad17d49bc28f3e0e46047d0fbdf471 GIT binary patch literal 55441 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 Re*pjh|NkFqKU@GF2LS(IB literal 0 HcmV?d00001 diff --git a/community/mineos/1.0.0/ci/basic-values.yaml b/community/mineos/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..d002e31d08 --- /dev/null +++ b/community/mineos/1.0.0/ci/basic-values.yaml @@ -0,0 +1,12 @@ +mineosConfig: + username: myuser + password: mypass + +mineosStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +mineosNetwork: + mineosPortRangeStart: 30021 + mineosPortRangeEnd: 30025 diff --git a/community/mineos/1.0.0/ci/https-values.yaml b/community/mineos/1.0.0/ci/https-values.yaml new file mode 100644 index 0000000000..24888dc7ac --- /dev/null +++ b/community/mineos/1.0.0/ci/https-values.yaml @@ -0,0 +1,100 @@ +mineosConfig: + username: myuserhttps + password: mypasshttps + +mineosStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + +mineosNetwork: + useHTTPS: true + mineosPortRangeStart: 30021 + mineosPortRangeEnd: 30021 + certificateID: 1 + +ixCertificates: + "1": + certificate: | + -----BEGIN CERTIFICATE----- + MIIEdjCCA16gAwIBAgIDYFMYMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMzU0WhcNMjMxMjAzMjMyMzU0WjBuMQswCQYDVQQDDAJhZDEL + MAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxDTALBgNVBAcMBGFzZGYxDTALBgNV + BAoMBGFkc2YxDTALBgNVBAsMBGFzZGYxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQC7+1xOHRQyOnQTHFcrdasX + Zl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/AbkH7oVFWC1 + P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI4vQCdYgW + 2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2dNgsxKU0H + PGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB+Zie331t + AzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7A/FuDVg3 + AgMBAAGjggEdMIIBGTAnBgNVHREEIDAehwTAqAADhwTAqAAFhwTAqAC2hwTAqACB + hwTAqACSMB0GA1UdDgQWBBQ4G2ff4tgZl4vmo4xCfqmJhdqShzAMBgNVHRMBAf8E + AjAAMIGYBgNVHSMEgZAwgY2AFLlYf9L99nxJDcpCM/LT3V5hQ/a3oXCkbjBsMQww + CgYDVQQDDANhc2QxCzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQH + DAJhZjENMAsGA1UECgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkB + FgdhQGEuY29tggNgUxcwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwEwDgYDVR0PAQH/ + BAQDAgWgMA0GCSqGSIb3DQEBCwUAA4IBAQA6FpOInEHB5iVk3FP67GybJ29vHZTD + KQHbQgmg8s4L7qIsA1HQ+DMCbdylpA11x+t/eL/n48BvGw2FNXpN6uykhLHJjbKR + h8yITa2KeD3LjLYhScwIigXmTVYSP3km6s8jRL6UKT9zttnIHyXVpBDya6Q4WTMx + fmfC6O7t1PjQ5ZyVtzizIUP8ah9n4TKdXU4A3QIM6WsJXpHb+vqp1WDWJ7mKFtgj + x5TKv3wcPnktx0zMPfLb5BTSE9rc9djcBG0eIAsPT4FgiatCUChe7VhuMnqskxEz + MymJLoq8+mzucRwFkOkR2EIt1x+Irl2mJVMeBow63rVZfUQBD8h++LqB + -----END CERTIFICATE----- + -----BEGIN CERTIFICATE----- + MIIEhDCCA2ygAwIBAgIDYFMXMA0GCSqGSIb3DQEBCwUAMGwxDDAKBgNVBAMMA2Fz + ZDELMAkGA1UEBhMCVVMxDTALBgNVBAgMBGFzZGYxCzAJBgNVBAcMAmFmMQ0wCwYD + VQQKDARhc2RmMQwwCgYDVQQLDANhc2QxFjAUBgkqhkiG9w0BCQEWB2FAYS5jb20w + HhcNMjEwODMwMjMyMDQ1WhcNMzEwODI4MjMyMDQ1WjBsMQwwCgYDVQQDDANhc2Qx + CzAJBgNVBAYTAlVTMQ0wCwYDVQQIDARhc2RmMQswCQYDVQQHDAJhZjENMAsGA1UE + CgwEYXNkZjEMMAoGA1UECwwDYXNkMRYwFAYJKoZIhvcNAQkBFgdhQGEuY29tMIIB + IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAq//c0hEEr83CS1pMgsHX50jt + 2MqIbcf63UUNJTiYpUUvUQSFJFc7m/dr+RTZvu97eDCnD5K2qkHHvTPaPZwY+Djf + iy7N641Sz6u/y3Yo3xxs1Aermsfedh48vusJpjbkT2XS44VjbkrpKcWDNVpp3Evd + M7oJotXeUsZ+imiyVCfr4YhoY5gbGh/r+KN9Wf9YKoUyfLLZGwdZkhtX2zIbidsL + Thqi9YTaUHttGinjiBBum234u/CfvKXsfG3yP2gvBGnlvZnM9ktv+lVffYNqlf7H + VmB1bKKk84HtzuW5X76SGAgOG8eHX4x5ZLI1WQUuoQOVRl1I0UCjBtbz8XhwvQID + AQABo4IBLTCCASkwLQYDVR0RBCYwJIcEwKgABYcEwKgAA4cEwKgAkocEwKgAtYcE + wKgAgYcEwKgAtjAdBgNVHQ4EFgQUuVh/0v32fEkNykIz8tPdXmFD9rcwDwYDVR0T + AQH/BAUwAwEB/zCBmAYDVR0jBIGQMIGNgBS5WH/S/fZ8SQ3KQjPy091eYUP2t6Fw + pG4wbDEMMAoGA1UEAwwDYXNkMQswCQYDVQQGEwJVUzENMAsGA1UECAwEYXNkZjEL + MAkGA1UEBwwCYWYxDTALBgNVBAoMBGFzZGYxDDAKBgNVBAsMA2FzZDEWMBQGCSqG + SIb3DQEJARYHYUBhLmNvbYIDYFMXMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF + BQcDAjAOBgNVHQ8BAf8EBAMCAQYwDQYJKoZIhvcNAQELBQADggEBAKEocOmVuWlr + zegtKYMe8NhHIkFY9oVn5ym6RHNOJpPH4QF8XYC3Z5+iC5yGh4P/jVe/4I4SF6Ql + PtofU0jNq5vzapt/y+m008eXqPQFmoUOvu+JavoRVcRx2LIP5AgBA1mF56CSREsX + TkuJAA9IUQ8EjnmAoAeKINuPaKxGDuU8BGCMqr/qd564MKNf9XYL+Fb2rlkA0O2d + 2No34DQLgqSmST/LAvPM7Cbp6knYgnKmGr1nETCXasg1cueHLnWWTvps2HiPp2D/ + +Fq0uqcZLu4Mdo0CPs4e5sHRyldEnRSKh0DVLprq9zr/GMipmPLJUsT5Jed3sj0w + M7Y3vwxshpo= + -----END CERTIFICATE----- + privatekey: | + -----BEGIN PRIVATE KEY----- + MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC7+1xOHRQyOnQT + HFcrdasXZl0gzutVlA890a1wiQpdD5dOtCLo7+eqVYjqVKo9W8RUIArXWmBu/Abk + H7oVFWC1P973W1+ArF5sA70f7BZgqRKJTIisuIFIlRETgfnP2pfQmHRZtGaIJRZI + 4vQCdYgW2g0KOvvNcZJCVq1OrhKiNiY1bWCp66DGg0ic6OEkZFHTm745zUNQaf2d + NgsxKU0HPGjVLJI//yrRFAOSBUqgD4c50krnMF7fU/Fqh+UyOu8t6Y/HsySh3urB + +Zie331tAzV6QV39KKxRflNx/yuWrtIEslGTm+xHKoCYJEk/nZ3mX8Y5hG6wWAb7 + A/FuDVg3AgMBAAECggEAapt30rj9DitGTtxAt13pJMEhyYxvvD3WkvmJwguF/Bbu + eW0Ba1c668fMeRCA54FWi1sMqusPS4HUqqUvk+tmyAOsAF4qgD/A4MMSC7uJSVI5 + N/JWhJWyhCY94/FPakiO1nbPbVw41bcqtzU2qvparpME2CtxSCbDiqm7aaag3Kqe + EF0fGSUdZ+TYl9JM05+eIyiX+UY19Fg0OjTHMn8nGpxcNTfDBdQ68TKvdo/dtIKL + PLKzJUNNdM8odC4CvQtfGMqaslwZwXkiOl5VJcW21ncj/Y0ngEMKeD/i65ZoqGdR + 0FKCQYEAGtM2FvJcZQ92Wsw7yj2bK2MSegVUyLK32QKBgQDe8syVCepPzRsfjfxA + 6TZlWcGuTZLhwIx97Ktw3VcQ1f4rLoEYlv0xC2VWBORpzIsJo4I/OLmgp8a+Ga8z + FkVRnq90dV3t4NP9uJlHgcODHnOardC2UUka4olBSCG6zmK4Jxi34lOxhGRkshOo + L4IBeOIB5g+ZrEEXkzfYJHESRQKBgQDX2YhFhGIrT8BAnC5BbXbhm8h6Bhjz8DYL + d+qhVJjef7L/aJxViU0hX9Ba2O8CLK3FZeREFE3hJPiJ4TZSlN4evxs5p+bbNDcA + 0mhRI/o3X4ac6IxdRebyYnCOB/Cu94/MzppcZcotlCekKNike7eorCcX4Qavm7Pu + MUuQ+ifmSwKBgEnchoqZzlbBzMqXb4rRuIO7SL9GU/MWp3TQg7vQmJerTZlgvsQ2 + wYsOC3SECmhCq4117iCj2luvOdihCboTFsQDnn0mpQe6BIF6Ns3J38wAuqv0CcFd + DKsrge1uyD3rQilgSoAhKzkUc24o0PpXQurZ8YZPgbuXpbj5vPaOnCdBAoGACYc7 + wb3XS4wos3FxhUfcwJbM4b4VKeeHqzfu7pI6cU/3ydiHVitKcVe2bdw3qMPqI9Wc + nvi6e17Tbdq4OCsEJx1OiVwFD9YdO3cOTc6lw/3+hjypvZBRYo+/4jUthbu96E+S + dtOzehGZMmDvN0uSzupSi3ZOgkAAUFpyuIKickMCgYAId0PCRjonO2thn/R0rZ7P + //L852uyzYhXKw5/fjFGhQ6LbaLgIRFaCZ0L2809u0HFnNvJjHv4AKP6j+vFQYYY + qQ+66XnfsA9G/bu4MDS9AX83iahD9IdLXQAy8I19prAbpVumKegPbMnNYNB/TYEc + 3G15AKCXo7jjOUtHY01DCQ== + -----END PRIVATE KEY----- diff --git a/community/mineos/1.0.0/disable_upgrade_strategy b/community/mineos/1.0.0/disable_upgrade_strategy new file mode 100755 index 0000000000..fe8f0f89bb --- /dev/null +++ b/community/mineos/1.0.0/disable_upgrade_strategy @@ -0,0 +1,31 @@ +#!/usr/bin/python3 +import json +import re +import sys + +from catalog_update.upgrade_strategy import semantic_versioning + + +RE_STABLE_VERSION = re.compile(r'latest') + + +def newer_mapping(image_tags): + key = list(image_tags.keys())[0] + tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + if not version: + return {} + + return { + 'tags': {key: tags[version]}, + 'app_version': version, + } + + +if __name__ == '__main__': + try: + versions_json = json.loads(sys.stdin.read()) + except ValueError: + raise ValueError('Invalid json specified') + + print(json.dumps(newer_mapping(versions_json))) diff --git a/community/mineos/1.0.0/ix_values.yaml b/community/mineos/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..3c265ea968 --- /dev/null +++ b/community/mineos/1.0.0/ix_values.yaml @@ -0,0 +1,28 @@ +image: + repository: hexparrot/mineos + pullPolicy: IfNotPresent + tag: latest + +resources: + limits: + cpu: 4000m + memory: 8Gi + +mineosConfig: + username: '' + password: '' + terminationGracePeriodSeconds: 240 + additionalEnvs: [] +mineosID: + user: 568 + group: 568 +mineosNetwork: + webPort: 30000 + mineosPortRangeStart: 30021 + mineosPortRangeEnd: 30022 + useHTTPS: false + certificateID: 0 +mineosStorage: + data: + type: ixVolume + datasetName: data diff --git a/community/mineos/1.0.0/metadata.yaml b/community/mineos/1.0.0/metadata.yaml new file mode 100644 index 0000000000..67a4ac10f6 --- /dev/null +++ b/community/mineos/1.0.0/metadata.yaml @@ -0,0 +1,18 @@ +runAsContext: + - userName: root + groupName: root + gid: 0 + uid: 0 + description: MineOS runs as root user +capabilities: + - name: CHOWN + description: MineOS requires this ability to change ownership of files. + - name: DAC_OVERRIDE + description: MineOS requires this ability to bypass file permissions. + - name: FOWNER + description: MineOS requires this ability to bypass file permissions for it's sub-processes. + - name: SETGID + description: MineOS requires this ability to switch group for sub-processes. + - name: SETUID + description: MineOS requires this ability to switch user for sub-processes. +hostMounts: [] diff --git a/community/mineos/1.0.0/questions.yaml b/community/mineos/1.0.0/questions.yaml new file mode 100644 index 0000000000..e8a705aa1c --- /dev/null +++ b/community/mineos/1.0.0/questions.yaml @@ -0,0 +1,231 @@ +groups: + - name: MineOS Configuration + description: Configure MineOS + - name: User and Group Configuration + description: Configure User and Group for MineOS + - name: Network Configuration + description: Configure Network for MineOS + - name: Storage Configuration + description: Configure Storage for MineOS + - name: Resources Configuration + description: Configure Resources for MineOS + +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" + path: "$kubernetes-resource_configmap_portal_path" + +questions: + - variable: mineosConfig + label: "" + group: MineOS Configuration + schema: + type: dict + attrs: + - variable: username + label: Username + description: The username for MineOS WebUI. + schema: + type: string + empty: false + required: true + valid_chars: '^[a-zA-Z0-9]+$' + valid_chars_error: | + Username can only contain alphanumeric characters [0-9, a-z, A-Z]. + - variable: password + label: Password + description: The password for MineOS WebUI. + schema: + type: string + empty: false + required: true + private: true + - variable: terminationGracePeriodSeconds + label: Stop Grace Period + description: | + The time in seconds given to MineOS to stop before it is killed. + Killing a MineOS server without a grace period can cause data corruption. + schema: + type: int + empty: false + min: 30 + required: true + default: 600 + - variable: additionalEnvs + label: Additional Environment Variables + description: Configure additional environment variables for MineOS. + schema: + type: list + default: [] + items: + - variable: env + label: Environment Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + + - variable: mineosID + label: "" + group: User and Group Configuration + schema: + type: dict + attrs: + - variable: user + label: User ID + description: The user id that MineOS files will be owned by. + schema: + type: int + min: 568 + default: 568 + required: true + - variable: group + label: Group ID + description: The group id that MineOS files will be owned by. + schema: + type: int + min: 568 + default: 568 + required: true + + - variable: mineosNetwork + label: "" + group: Network Configuration + schema: + type: dict + attrs: + - variable: webPort + label: WebUI Port + description: The port for MineOS WebUI + schema: + type: int + default: 30000 + min: 9000 + max: 65535 + required: true + - variable: mineosPortRangeStart + label: Port Range Start + description: | + The start of the port range for MineOS servers.
+ It will open both TCP and UDP ports. + schema: + type: int + default: 30001 + min: 9000 + max: 65535 + required: true + - variable: mineosPortRangeEnd + label: Port Range End + description: | + The end of the port range for MineOS servers.
+ It will open both TCP and UDP ports.
+ Keep in mind that the port range can be at max 10 ports. + schema: + type: int + default: 30002 + min: 9000 + max: 65535 + required: true + - variable: useHTTPS + label: Use HTTPS + description: | + Enable HTTPS for MineOS WebUI.
+ If enabled, and you don't specify a certificate,
+ a self-signed certificate will be generated. + schema: + type: boolean + default: false + - variable: certificateID + label: Certificate + description: The certificate to use for MineOS WebUI + schema: + show_if: [["useHTTPS", "=", true]] + type: int + "null": true + $ref: + - "definitions/certificate" + + - variable: mineosStorage + label: "" + group: Storage Configuration + schema: + type: dict + attrs: + - variable: data + label: MineOS Data Storage + description: The path to store MineOS Data. + schema: + type: dict + attrs: + - variable: type + label: Type + description: | + ixVolume: Is dataset created automatically by the system.
+ Host Path: Is a path that already exists on the system. + schema: + type: string + required: true + default: ixVolume + enum: + - value: hostPath + description: Host Path (Path that already exists on the system) + - value: ixVolume + description: ixVolume (Dataset created automatically by the system) + - variable: datasetName + label: Dataset Name + schema: + type: string + show_if: [["type", "=", "ixVolume"]] + required: true + hidden: true + immutable: true + default: data + $ref: + - "normalize/ixVolume" + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + immutable: true + required: true + + - variable: resources + label: Resources Configuration + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for MineOS. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for MineOS. + schema: + type: string + default: 8Gi + required: true diff --git a/community/mineos/1.0.0/templates/NOTES.txt b/community/mineos/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/mineos/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/mineos/1.0.0/templates/_mineos.tpl b/community/mineos/1.0.0/templates/_mineos.tpl new file mode 100644 index 0000000000..531e97ce4f --- /dev/null +++ b/community/mineos/1.0.0/templates/_mineos.tpl @@ -0,0 +1,134 @@ +{{- define "mineos.workload" -}} +workload: + mineos: + enabled: true + primary: true + type: Deployment + podSpec: + hostNetwork: false + # Upstream recommends a large termination grace period + terminationGracePeriodSeconds: {{ .Values.mineosConfig.terminationGracePeriodSeconds }} + securityContext: + fsGroup: {{ .Values.mineosID.group }} + containers: + mineos: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + capabilities: + add: + - CHOWN + - DAC_OVERRIDE + - FOWNER + - SETGID + - SETUID + env: + SERVER_PORT: {{ .Values.mineosNetwork.webPort }} + USER_UID: {{ .Values.mineosID.user }} + GROUP_GID: {{ .Values.mineosID.group }} + USER_NAME: {{ .Values.mineosConfig.username }} + USER_PASSWORD: {{ .Values.mineosConfig.password }} + # Creates a group with the same name as the user + GROUP_NAME: {{ .Values.mineosConfig.username }} + USE_HTTPS: {{ .Values.mineosNetwork.useHTTPS }} + fixedEnv: + PUID: {{ .Values.mineosID.user }} + {{ with .Values.mineosConfig.additionalEnvs }} + envList: + {{ range $env := . }} + - name: {{ $env.name }} + value: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: tcp + port: {{ .Values.mineosNetwork.webPort }} + readiness: + enabled: true + type: tcp + port: {{ .Values.mineosNetwork.webPort }} + startup: + enabled: true + type: tcp + port: {{ .Values.mineosNetwork.webPort }} + +{{/* Service */}} +service: + mineos: + enabled: true + primary: true + type: NodePort + targetSelector: mineos + ports: + webui: + enabled: true + primary: true + port: {{ .Values.mineosNetwork.webPort }} + nodePort: {{ .Values.mineosNetwork.webPort }} + targetSelector: mineos + game: + enabled: true + type: NodePort + targetSelector: mineos + ports: + {{- $start := (.Values.mineosNetwork.mineosPortRangeStart | int) -}} + {{- $end := (.Values.mineosNetwork.mineosPortRangeEnd | int) -}} + {{- $ports := (untilStep $start ($end | add1 | int) 1) -}} + {{- range $idx := $ports }} + port-{{ $idx }}-tcp: + enabled: true + primary: {{ eq $idx $start }} + port: {{ $idx }} + nodePort: {{ $idx }} + targetSelector: mineos + port-{{ $idx }}-udp: + enabled: true + primary: false + port: {{ $idx }} + nodePort: {{ $idx }} + protocol: udp + targetSelector: mineos + {{- end }} + +{{/* Persistence */}} +persistence: + data: + enabled: true + type: {{ .Values.mineosStorage.data.type }} + datasetName: {{ .Values.mineosStorage.data.datasetName | default "" }} + hostPath: {{ .Values.mineosStorage.data.hostPath | default "" }} + targetSelector: + mineos: + mineos: + mountPath: /var/games/minecraft + + {{- if and .Values.mineosNetwork.useHTTPS .Values.mineosNetwork.certificateID }} + cert: + enabled: true + type: secret + objectName: mineos-cert + defaultMode: "0600" + items: + - key: tls.key + path: mineos.key + - key: tls.crt + path: mineos.crt + targetSelector: + mineos: + mineos: + mountPath: /etc/ssl/certs + readOnly: true + +scaleCertificate: + mineos-cert: + enabled: true + id: {{ .Values.mineosNetwork.certificateID }} + {{- end -}} +{{- end -}} diff --git a/community/mineos/1.0.0/templates/_portal.tpl b/community/mineos/1.0.0/templates/_portal.tpl new file mode 100644 index 0000000000..6c5c76e67f --- /dev/null +++ b/community/mineos/1.0.0/templates/_portal.tpl @@ -0,0 +1,12 @@ +{{- define "mineos.portal" -}} +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal +data: + path: "/" + port: {{ .Values.mineosNetwork.webPort | quote }} + protocol: {{ ternary "https" "http" .Values.mineosNetwork.useHTTPS }} + host: $node_ip +{{- end -}} diff --git a/community/mineos/1.0.0/templates/_validation.tpl b/community/mineos/1.0.0/templates/_validation.tpl new file mode 100644 index 0000000000..76f26a4183 --- /dev/null +++ b/community/mineos/1.0.0/templates/_validation.tpl @@ -0,0 +1,17 @@ +{{- define "mineos.validation" -}} + {{- $start := (.Values.mineosNetwork.mineosPortRangeStart | int) -}} + {{- $end := (.Values.mineosNetwork.mineosPortRangeEnd | int) -}} + + {{- if gt $start $end -}} + {{- fail "MineOS - Port range start cannot be greater than port range end." -}} + {{- end -}} + + {{- if gt (sub $end $start) 10 -}} + {{- fail "MineOS - Port range is too large. Max 10 ports are allowed." -}} + {{- end -}} + + {{- if not (mustRegexMatch "^[a-zA-Z0-9]+$" .Values.mineosConfig.username) -}} + {{- fail "MineOS - Username can only contain alphanumeric characters [0-9, a-z, A-Z]." -}} + {{- end -}} + +{{- end -}} diff --git a/community/mineos/1.0.0/templates/common.yaml b/community/mineos/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..1539a83117 --- /dev/null +++ b/community/mineos/1.0.0/templates/common.yaml @@ -0,0 +1,10 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{/* Merge the templates with Values */}} +{{- include "mineos.validation" $ -}} +{{- $_ := mustMergeOverwrite .Values (include "mineos.workload" $ | fromYaml) -}} + +{{/* Create the configmap for portal manually*/}} +{{- include "mineos.portal" $ -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/mineos/item.yaml b/community/mineos/item.yaml new file mode 100644 index 0000000000..9ae274a041 --- /dev/null +++ b/community/mineos/item.yaml @@ -0,0 +1,7 @@ +icon_url: https://camo.githubusercontent.com/bfcc53b6de495c0f2d9d5699afea18b7319529933c5cd38f1e0cf55377df725f/68747470733a2f2f7669676e65747465322e77696b69612e6e6f636f6f6b69652e6e65742f6c6f74722d6d696e6563726166742d6d6f642d6578696c65732f696d616765732f662f66322f4d696e6563726166745f7365727665725f73657475702e706e672f7265766973696f6e2f6c61746573743f63623d3230313630393131313732353537 +screenshots: + - https://i.ytimg.com/vi/06XGie8SBnE/maxresdefault.jpg +categories: + - games +tags: + - minecraft