Testing, BugFixes and Review Improvements

- Fix SabNZBD hostname whitelist issues
- Add transmission settings to GUI
- Fix some qbittorrent connection issues
- Remove Torrent Ingress
- Fix some device mounting gui issues
- Change repo url references
- Cleaning up the homepage
- Drop Deluge (App is not safe due to being mostly abandoned)
- Move Emby to own Non-Root container
- Create new trains and move charts->stable
- Add Plex app
- update emby and plex intel hardware support
- Implement new parallel CI for Apps
- Move PGID, PUID, TZ and UMASK settings to "Container Image" configuration
- Stop running some workflows on staging
- Add branch security trigger to matrix workflows

Co-authored-by: Troy Prelog <35702532+tprelog@users.noreply.github.com>
This commit is contained in:
Kjeld Schouten-Lebbing
2021-03-17 17:20:26 +01:00
committed by kjeld Schouten-Lebbing
co-authored by Troy Prelog
parent c9a3f01580
commit 56211222bf
724 changed files with 5235 additions and 4067 deletions
+1 -1
View File
@@ -1 +1 @@
0.9.2 0.9.3
+15
View File
@@ -0,0 +1,15 @@
---
process:
python3:
running: true
port:
tcp:6767:
listening: true
# # TODO fix this test
# http:
# http://localhost:6767:
# status: 200
# body:
# - '<title>Bazarr</title>'
+1
View File
@@ -0,0 +1 @@
focal-20210217
+104
View File
@@ -0,0 +1,104 @@
# hadolint ignore=DL3007
FROM ghcr.io/truecharts/ubuntu:latest as builder
ARG TARGETPLATFORM
ARG VERSION
# hadolint ignore=DL3002
USER root
WORKDIR /tmp
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# Install system dependencies
WORKDIR /tmp
# hadolint ignore=DL3003,DL3008,DL3013,DL3015,SC2086
RUN \
echo "**** install packages ****" && \
apt-get update && \
apt-get install -y \
aria2 \
unrar \
uuid-runtime \
cpio \
jq \
rpm2cpio \
beignet-opencl-icd \
ocl-icd-libopencl1 \
&& echo "**** install emby ****" && \
mkdir -p \
/app && \
curl -o \
/tmp/emby.rpm -L \
"https://github.com/MediaBrowser/Emby.Releases/releases/download/${VERSION}/emby-server-rpm_${VERSION}_x86_64.rpm" && \
cd /tmp && \
rpm2cpio emby.rpm \
| cpio -i --make-directories \
&& \
printf "UpdateMethod=docker\nPackageVersion=%s\nPackageAuthor=[TrueCharts Project](https://truecharts.org)" "${VERSION}" > /app/package_info \
&& \
mv -t \
/app \
/tmp/opt/emby-server/system/* \
/tmp/opt/emby-server/lib/* \
/tmp/opt/emby-server/bin/ff* \
/tmp/opt/emby-server/etc
# hadolint ignore=DL3007
FROM ghcr.io/truecharts/ubuntu:latest
ARG TARGETPLATFORM
ARG VERSION
USER root
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \
INTEL_NEO_VERSION=21.11.19310 \
INTEL_IGC_VERSION=1.0.6646 \
INTEL_GMMLIB_VERSION=20.3.2 \
APP_DIR="/app"
# hadolint ignore=DL3008,DL3013,DL3015,SC2086,SC2039
RUN \
apt-get update && \
apt-get install -y --no-install-recommends \
mesa-va-drivers \
uuid-runtime && \
case "${ARCH}" in \
'amd64') \
curl -J -L -o /tmp/gmmlib.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-gmmlib_${INTEL_GMMLIB_VERSION}_amd64.deb \
&& apt-get install -y /tmp/gmmlib.deb \
&& curl -J -L -o /tmp/#1.deb https://github.com/intel/intel-graphics-compiler/releases/download/igc-${INTEL_IGC_VERSION}/{intel-igc-core,intel-igc-opencl}_${INTEL_IGC_VERSION}_amd64.deb \
&& apt-get install -y /tmp/intel-igc-core.deb /tmp/intel-igc-opencl.deb \
&& curl -J -L -o /tmp/intel-opencl.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-opencl_${INTEL_NEO_VERSION}_amd64.deb \
&& apt-get install -y /tmp/intel-opencl.deb \
;; \
esac \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& apt-get autoremove -y \
&& apt-get clean \
&& \
rm -rf \
/tmp/* \
/var/lib/apt/lists/* \
/var/tmp/ \
&& chmod -R u=rwX,go=rX /app \
&& printf "umask %d" "${UMASK}" >> /etc/bash.bashrc \
&& update-ca-certificates
COPY --from=builder /app /app
USER apps
EXPOSE 8096 8920
COPY ./.containers/apps/emby/entrypoint.sh /entrypoint.sh
CMD ["/entrypoint.sh"]
LABEL "maintainer"="TrueCharts <info@truecharts.org>"
LABEL "org.opencontainers.image.source"="https://github.com/truecharts/apps"
+1
View File
@@ -0,0 +1 @@
linux/amd64
+1
View File
@@ -0,0 +1 @@
4.5.4.0
+19
View File
@@ -0,0 +1,19 @@
#!/usr/bin/env bash
#shellcheck disable=SC1091
source "/shim/umask.sh"
source "/shim/vpn.sh"
export LD_LIBRARY_PATH="${APP_DIR}"
export FONTCONFIG_PATH="${APP_DIR}"/etc/fonts
if [ -d "/lib/x86_64-linux-gnu" ]; then
export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri:"${APP_DIR}"/dri
fi
export SSL_CERT_FILE="${APP_DIR}"/etc/ssl/certs/ca-certificates.crt
exec /app/EmbyServer \
-programdata /config \
-ffdetect /app/ffdetect \
-ffmpeg /app/ffmpeg \
-ffprobe /app/ffprobe \
-restartexitcode 3
+15
View File
@@ -0,0 +1,15 @@
---
process:
EmbyServer:
running: true
# # TODO fix this test
# port:
# tcp:8096:
# listening: true
http:
http://localhost:8096/web:
status: 200
body:
- '<title>Emby</title>'
+6
View File
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
version=$(curl -sX GET https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | jq --raw-output '. | .tag_name')
version="${version#*v}"
version="${version#*release-}"
printf "%s" "${version}"
+1 -1
View File
@@ -1 +1 @@
0.17.728 0.17.790
+1
View File
@@ -1,3 +1,4 @@
---
process: process:
jackett: jackett:
running: true running: true
+1 -1
View File
@@ -11,8 +11,8 @@ RUN \
apt-get -qq update \ apt-get -qq update \
&& \ && \
apt-get -qq install -y \ apt-get -qq install -y \
libchromaprint-tools \
libicu66 \ libicu66 \
mediainfo \
&& \ && \
case "${TARGETPLATFORM}" in \ case "${TARGETPLATFORM}" in \
'linux/amd64') export ARCH='x64' ;; \ 'linux/amd64') export ARCH='x64' ;; \
+1 -1
View File
@@ -1 +1 @@
0.8.0.2086 0.8.0.2096
+1 -1
View File
@@ -4,4 +4,4 @@
source "/shim/umask.sh" source "/shim/umask.sh"
source "/shim/vpn.sh" source "/shim/vpn.sh"
exec /app/Lidarr -nobrowser -data=/config ${EXTRA_ARGS} exec /app/Lidarr --nobrowser --data=/config ${EXTRA_ARGS}
+1
View File
@@ -1,3 +1,4 @@
---
process: process:
Lidarr: Lidarr:
running: true running: true
+14
View File
@@ -0,0 +1,14 @@
---
process:
nzbget:
running: true
port:
tcp:6789:
listening: true
http:
http://localhost:6789:
status: 200
body:
- '<title>NZBGet</title>'
+1 -1
View File
@@ -1 +1 @@
3.13.1 3.13.2
+15
View File
@@ -0,0 +1,15 @@
---
process:
python3:
running: true
port:
tcp:5076:
listening: true
# # TODO fix this test
# http:
# http://localhost:5076:
# status: 200
# body:
# - '<title>NZBHydra2</title>'
+1 -1
View File
@@ -1 +1 @@
4.0.1222 4.0.1275
+14 -5
View File
@@ -7,8 +7,8 @@ ARG VERSION
USER root USER root
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \ ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \
INTEL_NEO_VERSION=20.48.18558 \ INTEL_NEO_VERSION=21.11.19310 \
INTEL_IGC_VERSION=1.0.5699 \ INTEL_IGC_VERSION=1.0.6646 \
INTEL_GMMLIB_VERSION=20.3.2 \ INTEL_GMMLIB_VERSION=20.3.2 \
PLEX_DOWNLOAD="https://downloads.plex.tv/plex-media-server-new" \ PLEX_DOWNLOAD="https://downloads.plex.tv/plex-media-server-new" \
PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR="/config/Library/Application Support" \ PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR="/config/Library/Application Support" \
@@ -25,6 +25,14 @@ RUN \
export ARCH='amd64'; \ export ARCH='amd64'; \
export EXTRA_INSTALL_ARG='beignet-opencl-icd ocl-icd-libopencl1'; \ export EXTRA_INSTALL_ARG='beignet-opencl-icd ocl-icd-libopencl1'; \
;; \ ;; \
'linux/arm64') \
export ARCH='arm64'; \
export EXTRA_INSTALL_ARG=''; \
unset NVIDIA_DRIVER_CAPABILITIES; \
unset INTEL_NEO_VERSION; \
unset INTEL_IGC_VERSION; \
unset INTEL_GMMLIB_VERSION; \
;; \
esac \ esac \
&& \ && \
apt-get -qq update \ apt-get -qq update \
@@ -38,11 +46,12 @@ RUN \
&& \ && \
case "${ARCH}" in \ case "${ARCH}" in \
'amd64') \ 'amd64') \
curl -J -L -o /tmp/gmmlib.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-gmmlib_${INTEL_GMMLIB_VERSION}_amd64.deb \ aria2c -d /tmp -o gmmlib.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-gmmlib_${INTEL_GMMLIB_VERSION}_amd64.deb \
&& apt-get install -y /tmp/gmmlib.deb \ && apt-get install -y /tmp/gmmlib.deb \
&& curl -J -L -o /tmp/#1.deb https://github.com/intel/intel-graphics-compiler/releases/download/igc-${INTEL_IGC_VERSION}/{intel-igc-core,intel-igc-opencl}_${INTEL_IGC_VERSION}_amd64.deb \ && aria2c -d /tmp -o intel-igc-core.deb https://github.com/intel/intel-graphics-compiler/releases/download/igc-${INTEL_IGC_VERSION}/intel-igc-core_${INTEL_IGC_VERSION}_amd64.deb \
&& aria2c -d /tmp -o intel-igc-opencl.deb https://github.com/intel/intel-graphics-compiler/releases/download/igc-${INTEL_IGC_VERSION}/intel-igc-opencl_${INTEL_IGC_VERSION}_amd64.deb \
&& apt-get install -y /tmp/intel-igc-core.deb /tmp/intel-igc-opencl.deb \ && apt-get install -y /tmp/intel-igc-core.deb /tmp/intel-igc-opencl.deb \
&& curl -J -L -o /tmp/intel-opencl.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-opencl_${INTEL_NEO_VERSION}_amd64.deb \ && aria2c -d /tmp -o intel-opencl.deb https://github.com/intel/compute-runtime/releases/download/${INTEL_NEO_VERSION}/intel-opencl_${INTEL_NEO_VERSION}_amd64.deb \
&& apt-get install -y /tmp/intel-opencl.deb \ && apt-get install -y /tmp/intel-opencl.deb \
;; \ ;; \
esac \ esac \
+1 -1
View File
@@ -1 +1 @@
1.22.0.4163-d8c4875dd 1.22.1.4228-724c56e62
+15
View File
@@ -0,0 +1,15 @@
---
process:
Plex Media Serv:
running: true
port:
tcp6:32400:
listening: true
# # TODO fix this test
# http:
# http://localhost:32400:
# status: 200
# body:
# - '<title>Plex</title>'
+1 -1
View File
@@ -1 +1 @@
4.3.3 4.3.4.1
+14
View File
@@ -0,0 +1,14 @@
---
process:
qbittorrent-nox:
running: true
port:
tcp6:8080:
listening: true
http:
http://localhost:8080:
status: 200
body:
- '<title>qBittorrent Web UI</title>'
@@ -8,8 +8,9 @@ Accepted=true
[Preferences] [Preferences]
Connection\UPnP=false Connection\UPnP=false
Connection\PortRangeMin=6881 Connection\PortRangeMin=6881
Downloads\SavePath=/tmp/downloads Downloads\SavePath=/downloads/downloads
Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0) Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0)
Downloads\TempPath=/tmp/incomplete Downloads\TempPath=/downloads/incomplete
WebUI\Address=* WebUI\Address=*
WebUI\ServerDomains=* WebUI\ServerDomains=*
WebUI\HostHeaderValidation=false
+3 -3
View File
@@ -12,20 +12,20 @@ RUN \
&& \ && \
apt-get -qq install -y \ apt-get -qq install -y \
libicu66 \ libicu66 \
mediainfo \ libmediainfo0v5 \
&& \ && \
case "${TARGETPLATFORM}" in \ case "${TARGETPLATFORM}" in \
'linux/amd64') export ARCH='x64' ;; \ 'linux/amd64') export ARCH='x64' ;; \
esac \ esac \
&& \ && \
curl -fsSL -o /tmp/radarr.tar.gz \ curl -fsSL -o /tmp/radarr.tar.gz \
"https://radarr.servarr.com/v1/update/develop/updatefile?version=${VERSION}&os=linux&runtime=netcore&arch=${ARCH}" \ "https://radarr.servarr.com/v1/update/master/updatefile?version=${VERSION}&os=linux&runtime=netcore&arch=${ARCH}" \
&& tar ixzf /tmp/radarr.tar.gz -C /app --strip-components 1 \ && tar ixzf /tmp/radarr.tar.gz -C /app --strip-components 1 \
&& \ && \
rm -rf \ rm -rf \
/app/Radarr.Update* \ /app/Radarr.Update* \
&& \ && \
printf "UpdateMethod=docker\nBranch=develop\nPackageVersion=%s\nPackageAuthor=[TrueCharts Project](https://truecharts.org)" "${VERSION}" > /app/package_info \ printf "UpdateMethod=docker\nBranch=master\nPackageVersion=%s\nPackageAuthor=[TrueCharts Project](https://truecharts.org)" "${VERSION}" > /app/package_info \
&& \ && \
apt-get autoremove -y \ apt-get autoremove -y \
&& apt-get clean \ && apt-get clean \
+1 -1
View File
@@ -4,4 +4,4 @@
source "/shim/umask.sh" source "/shim/umask.sh"
source "/shim/vpn.sh" source "/shim/vpn.sh"
exec /app/Radarr -nobrowser -data=/config ${EXTRA_ARGS} exec /app/Radarr --nobrowser --data=/config ${EXTRA_ARGS}
+1
View File
@@ -1,3 +1,4 @@
---
process: process:
Radarr: Radarr:
running: true running: true
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
version=$(curl -sX GET "https://radarr.servarr.com/v1/update/develop/changes?os=linux" | jq --raw-output '.[0].version') version=$(curl -sX GET "https://radarr.servarr.com/v1/update/master/changes?os=linux" | jq --raw-output '.[0].version')
version="${version#*v}" version="${version#*v}"
version="${version#*release-}" version="${version#*release-}"
printf "%s" "${version}" printf "%s" "${version}"
+1 -1
View File
@@ -1 +1 @@
0.1.0.536 0.1.0.545
+14
View File
@@ -0,0 +1,14 @@
---
process:
Readarr:
running: true
port:
tcp6:8787:
listening: true
http:
http://localhost:8787:
status: 200
body:
- '<title>Readarr</title>'
+17
View File
@@ -4,4 +4,21 @@
source "/shim/umask.sh" source "/shim/umask.sh"
source "/shim/vpn.sh" source "/shim/vpn.sh"
if [[ ! -f "/config/sabnzbd.ini" ]]; then
printf "Copying over default configuration ... "
mkdir -p /config/sabnzbd
cp /app/sabnzbd.ini /config/sabnzbd.ini
printf "Creating api keys ... "
api_key=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 32 | head -n 1)
nzb_key=$(cat /dev/urandom | tr -dc 'a-z0-9' | fold -w 32 | head -n 1)
sed -i -e "s/^api_key *=.*$/api_key = ${api_key}/g" /config/sabnzbd.ini
sed -i -e "s/^nzb_key *=.*$/nzb_key = ${nzb_key}/g" /config/sabnzbd.ini
fi
if [[ -n ${HOST_WHITELIST_ENTRIES} ]]; then
printf "Updating host_whitelist setting ... "
sed -i -e "s/^host_whitelist *=.*$/host_whitelist = ${HOSTNAME}, ${HOST_WHITELIST_ENTRIES}/g" /config/sabnzbd.ini
fi
exec /usr/bin/python3 /app/SABnzbd.py --browser 0 --server 0.0.0.0:8080 --config-file /config/sabnzbd.ini ${EXTRA_ARGS} exec /usr/bin/python3 /app/SABnzbd.py --browser 0 --server 0.0.0.0:8080 --config-file /config/sabnzbd.ini ${EXTRA_ARGS}
+14
View File
@@ -0,0 +1,14 @@
---
process:
python3:
running: true
port:
tcp:8080:
listening: true
http:
http://localhost:8080/sabnzbd:
status: 200
body:
- '<title>SABnzbd Quick-Start Wizard</title>'
+304
View File
@@ -0,0 +1,304 @@
__version__ = 19
__encoding__ = utf-8
[misc]
pre_script = None
queue_complete = ""
queue_complete_pers = 0
bandwidth_perc = 100
refresh_rate = 0
interface_settings = ""
queue_limit = 20
config_lock = 0
sched_converted = 0
notified_new_skin = 0
direct_unpack_tested = 0
check_new_rel = 1
auto_browser = 0
language = en
enable_https_verification = 1
host = 0.0.0.0
port = 8080
https_port = ""
username = ""
password = ""
bandwidth_max = ""
cache_limit = ""
web_dir = Glitter
web_color = ""
https_cert = server.cert
https_key = server.key
https_chain = ""
enable_https = 0
inet_exposure = 0
local_ranges = ,
api_key = ""
nzb_key = ""
permissions = ""
download_dir = Downloads/incomplete
download_free = ""
complete_dir = Downloads/complete
complete_free = ""
fulldisk_autoresume = 0
script_dir = ""
nzb_backup_dir = ""
admin_dir = admin
dirscan_dir = ""
dirscan_speed = 5
password_file = ""
log_dir = logs
max_art_tries = 3
load_balancing = 2
top_only = 0
sfv_check = 1
quick_check_ext_ignore = nfo, sfv, srr
script_can_fail = 0
enable_recursive = 1
flat_unpack = 0
par_option = ""
pre_check = 0
nice = ""
win_process_prio = 3
ionice = ""
fail_hopeless_jobs = 1
fast_fail = 1
auto_disconnect = 1
no_dupes = 0
no_series_dupes = 0
series_propercheck = 1
pause_on_pwrar = 1
ignore_samples = 0
deobfuscate_final_filenames = 0
auto_sort = ""
direct_unpack = 0
direct_unpack_threads = 3
propagation_delay = 0
folder_rename = 1
replace_spaces = 0
replace_dots = 0
safe_postproc = 1
pause_on_post_processing = 0
sanitize_safe = 0
cleanup_list = ,
unwanted_extensions = ,
action_on_unwanted_extensions = 0
new_nzb_on_failure = 0
history_retention = 0
enable_meta = 1
quota_size = ""
quota_day = ""
quota_resume = 0
quota_period = m
rating_enable = 0
rating_host = ""
rating_api_key = ""
rating_filter_enable = 0
rating_filter_abort_audio = 0
rating_filter_abort_video = 0
rating_filter_abort_encrypted = 0
rating_filter_abort_encrypted_confirm = 0
rating_filter_abort_spam = 0
rating_filter_abort_spam_confirm = 0
rating_filter_abort_downvoted = 0
rating_filter_abort_keywords = ""
rating_filter_pause_audio = 0
rating_filter_pause_video = 0
rating_filter_pause_encrypted = 0
rating_filter_pause_encrypted_confirm = 0
rating_filter_pause_spam = 0
rating_filter_pause_spam_confirm = 0
rating_filter_pause_downvoted = 0
rating_filter_pause_keywords = ""
enable_tv_sorting = 0
tv_sort_string = ""
tv_sort_countries = 1
tv_categories = ""
enable_movie_sorting = 0
movie_sort_string = ""
movie_sort_extra = -cd%1
movie_extra_folder = 0
movie_categories = movies,
enable_date_sorting = 0
date_sort_string = ""
date_categories = tv,
schedlines = ,
rss_rate = 60
ampm = 0
replace_illegal = 1
start_paused = 0
enable_all_par = 0
enable_par_cleanup = 1
enable_unrar = 1
enable_unzip = 1
enable_7zip = 1
enable_filejoin = 1
enable_tsjoin = 1
overwrite_files = 0
ignore_unrar_dates = 0
backup_for_duplicates = 1
empty_postproc = 0
wait_for_dfolder = 0
rss_filenames = 0
api_logging = 1
html_login = 1
osx_menu = 1
osx_speed = 1
warn_dupl_jobs = 1
helpfull_warnings = 1
keep_awake = 1
win_menu = 1
allow_incomplete_nzb = 0
enable_broadcast = 1
max_art_opt = 0
ipv6_hosting = 0
fixed_ports = 1
api_warnings = 1
disable_api_key = 0
no_penalties = 0
x_frame_options = 1
require_modern_tls = 0
num_decoders = 3
rss_odd_titles = nzbindex.nl/, nzbindex.com/, nzbclub.com/
req_completion_rate = 100.2
selftest_host = self-test.sabnzbd.org
movie_rename_limit = 100M
size_limit = 0
show_sysload = 2
history_limit = 10
wait_ext_drive = 5
max_foldername_length = 246
nomedia_marker = ""
ipv6_servers = 1
url_base = /sabnzbd
host_whitelist = 2b4152ea8457,
max_url_retries = 10
downloader_sleep_time = 10
ssdp_broadcast_interval = 15
email_server = ""
email_to = ,
email_from = ""
email_account = ""
email_pwd = ""
email_endjob = 0
email_full = 0
email_dir = ""
email_rss = 0
email_cats = *,
[logging]
log_level = 1
max_log_size = 5242880
log_backups = 5
[ncenter]
ncenter_enable = 0
ncenter_cats = *,
ncenter_prio_startup = 1
ncenter_prio_download = 0
ncenter_prio_pause_resume = 0
ncenter_prio_pp = 0
ncenter_prio_complete = 1
ncenter_prio_failed = 1
ncenter_prio_disk_full = 1
ncenter_prio_new_login = 0
ncenter_prio_warning = 0
ncenter_prio_error = 0
ncenter_prio_queue_done = 1
ncenter_prio_other = 1
[acenter]
acenter_enable = 0
acenter_cats = *,
acenter_prio_startup = 0
acenter_prio_download = 0
acenter_prio_pause_resume = 0
acenter_prio_pp = 0
acenter_prio_complete = 1
acenter_prio_failed = 1
acenter_prio_disk_full = 1
acenter_prio_new_login = 0
acenter_prio_warning = 0
acenter_prio_error = 0
acenter_prio_queue_done = 1
acenter_prio_other = 1
[ntfosd]
ntfosd_enable = 1
ntfosd_cats = *,
ntfosd_prio_startup = 1
ntfosd_prio_download = 0
ntfosd_prio_pause_resume = 0
ntfosd_prio_pp = 0
ntfosd_prio_complete = 1
ntfosd_prio_failed = 1
ntfosd_prio_disk_full = 1
ntfosd_prio_new_login = 0
ntfosd_prio_warning = 0
ntfosd_prio_error = 0
ntfosd_prio_queue_done = 1
ntfosd_prio_other = 1
[prowl]
prowl_enable = 0
prowl_cats = *,
prowl_apikey = ""
prowl_prio_startup = -3
prowl_prio_download = -3
prowl_prio_pause_resume = -3
prowl_prio_pp = -3
prowl_prio_complete = 0
prowl_prio_failed = 1
prowl_prio_disk_full = 1
prowl_prio_new_login = -3
prowl_prio_warning = -3
prowl_prio_error = -3
prowl_prio_queue_done = 0
prowl_prio_other = 0
[pushover]
pushover_token = ""
pushover_userkey = ""
pushover_device = ""
pushover_emergency_expire = 3600
pushover_emergency_retry = 60
pushover_enable = 0
pushover_cats = *,
pushover_prio_startup = -3
pushover_prio_download = -2
pushover_prio_pause_resume = -2
pushover_prio_pp = -3
pushover_prio_complete = -1
pushover_prio_failed = -1
pushover_prio_disk_full = 1
pushover_prio_new_login = -3
pushover_prio_warning = 1
pushover_prio_error = 1
pushover_prio_queue_done = -1
pushover_prio_other = -1
[pushbullet]
pushbullet_enable = 0
pushbullet_cats = *,
pushbullet_apikey = ""
pushbullet_device = ""
pushbullet_prio_startup = 0
pushbullet_prio_download = 0
pushbullet_prio_pause_resume = 0
pushbullet_prio_pp = 0
pushbullet_prio_complete = 1
pushbullet_prio_failed = 1
pushbullet_prio_disk_full = 1
pushbullet_prio_new_login = 0
pushbullet_prio_warning = 0
pushbullet_prio_error = 0
pushbullet_prio_queue_done = 0
pushbullet_prio_other = 1
[nscript]
nscript_enable = 0
nscript_cats = *,
nscript_script = ""
nscript_parameters = ""
nscript_prio_startup = 1
nscript_prio_download = 0
nscript_prio_pause_resume = 0
nscript_prio_pp = 0
nscript_prio_complete = 1
nscript_prio_failed = 1
nscript_prio_disk_full = 1
nscript_prio_new_login = 0
nscript_prio_warning = 0
nscript_prio_error = 0
nscript_prio_queue_done = 1
nscript_prio_other = 1
+4 -6
View File
@@ -20,19 +20,17 @@ RUN \
&& apt-get -qq update \ && apt-get -qq update \
&& \ && \
apt-get -qq install -y \ apt-get -qq install -y \
libicu66 \ mono-complete=${MONO_VERSION}\* \
mediainfo \ libmediainfo0v5 \
mono-devel \
ca-certificates-mono \
&& \ && \
curl -fsSL -o /tmp/sonarr.tar.gz \ curl -fsSL -o /tmp/sonarr.tar.gz \
"https://download.sonarr.tv/v3/phantom-develop/${VERSION}/Sonarr.phantom-develop.${VERSION}.linux.tar.gz" \ "https://download.sonarr.tv/v3/main/${VERSION}/Sonarr.main.${VERSION}.linux.tar.gz" \
&& tar ixzf /tmp/sonarr.tar.gz -C /app --strip-components 1 \ && tar ixzf /tmp/sonarr.tar.gz -C /app --strip-components 1 \
&& \ && \
rm -rf \ rm -rf \
/app/Sonarr.Update* \ /app/Sonarr.Update* \
&& \ && \
printf "UpdateMethod=docker\nBranch=phantom-develop\nPackageVersion=%s\nPackageAuthor=[TrueCharts Project](https://truecharts.org)" "${VERSION}" > /app/package_info \ printf "UpdateMethod=docker\nBranch=main\nPackageVersion=%s\nPackageAuthor=[TrueCharts Project](https://truecharts.org)" "${VERSION}" > /app/package_info \
&& \ && \
gpgconf --kill all \ gpgconf --kill all \
&& apt-get remove -y gnupg2 \ && apt-get remove -y gnupg2 \
+1 -1
View File
@@ -1 +1 @@
3.0.5.1143 3.0.5.1144
+1 -1
View File
@@ -4,4 +4,4 @@
source "/shim/umask.sh" source "/shim/umask.sh"
source "/shim/vpn.sh" source "/shim/vpn.sh"
exec /usr/bin/mono --debug /app/Sonarr.exe -nobrowser -data=/config ${EXTRA_ARGS} exec /usr/bin/mono --debug /app/Sonarr.exe --nobrowser --data=/config ${EXTRA_ARGS}
+1
View File
@@ -1,3 +1,4 @@
---
process: process:
mono: mono:
running: true running: true
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env bash #!/usr/bin/env bash
version=$(curl -sX GET "https://services.sonarr.tv/v1/download/phantom-develop?version=3" | jq --raw-output '.version') version=$(curl -sX GET "https://services.sonarr.tv/v1/download/main?version=3" | jq --raw-output '.version')
version="${version#*v}" version="${version#*v}"
version="${version#*release-}" version="${version#*release-}"
printf "%s" "${version}" printf "%s" "${version}"
+1 -1
View File
@@ -1 +1 @@
2.6.8 2.6.10
+15
View File
@@ -0,0 +1,15 @@
---
process:
python3:
running: true
port:
tcp:8181:
listening: true
# # TODO fix this test
# http:
# http://localhost:8181:
# status: 200
# body:
# - '<title>Tautulli</title>'
+14
View File
@@ -0,0 +1,14 @@
---
process:
transmission-da:
running: true
port:
tcp:9091:
listening: true
http:
http://localhost:9091:
status: 200
body:
- '<title>Transmission Web Interface</title>'
+1 -1
View File
@@ -1 +1 @@
3.12 3.13.3
@@ -0,0 +1,6 @@
#!/usr/bin/env bash
version=$(curl -s "https://registry.hub.docker.com/v1/repositories/library/alpine/tags" | jq --raw-output '.[] | select(.name | contains(".")) | .name' | sort -t "." -k1,1n -k2,2n -k3,3n | tail -n1)
version="${version#*v}"
version="${version#*release-}"
printf "%s" "${version}"
+31 -19
View File
@@ -4,11 +4,20 @@ FROM ubuntu:${VERSION}
ARG TARGETPLATFORM ARG TARGETPLATFORM
SHELL ["/bin/bash", "-o", "pipefail", "-c"]
# DEBIAN_FRONTEND: https://askubuntu.com/questions/972516/debian-frontend-environment-variable
# APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE: http://stackoverflow.com/questions/48162574/ddg#49462622
ENV \ ENV \
DEBCONF_NONINTERACTIVE_SEEN=true \ DEBCONF_NONINTERACTIVE_SEEN=true \
DEBIAN_FRONTEND=noninteractive \ DEBIAN_FRONTEND="noninteractive" \
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn \
TINI_VERSION=0.19.0 \ TINI_VERSION=0.19.0 \
UMASK=0002 UMASK=0002 \
LANG=en_US.UTF-8 \
LANGUAGE=en_US:en \
LC_ALL=en_US.UTF-8 \
MICRO_CONFIG_HOME=/tmp
RUN \ RUN \
adduser apps \ adduser apps \
@@ -26,12 +35,7 @@ WORKDIR /app
# hadolint ignore=DL3008,DL3015 # hadolint ignore=DL3008,DL3015
RUN \ RUN \
set -eux \ set -eux \
&& \ && echo 'APT::Install-Recommends "false";' >/etc/apt/apt.conf.d/00recommends \
case "${TARGETPLATFORM}" in \
'linux/amd64') export ARCH='amd64' ;; \
esac \
&& \
echo 'APT::Install-Recommends "false";' >/etc/apt/apt.conf.d/00recommends \
&& echo 'APT::Install-Suggests "false";' >>/etc/apt/apt.conf.d/00recommends \ && echo 'APT::Install-Suggests "false";' >>/etc/apt/apt.conf.d/00recommends \
&& echo 'APT::Get::Install-Recommends "false";' >>/etc/apt/apt.conf.d/00recommends \ && echo 'APT::Get::Install-Recommends "false";' >>/etc/apt/apt.conf.d/00recommends \
&& echo 'APT::Get::Install-Suggests "false";' >>/etc/apt/apt.conf.d/00recommends \ && echo 'APT::Get::Install-Suggests "false";' >>/etc/apt/apt.conf.d/00recommends \
@@ -39,22 +43,30 @@ RUN \
apt-get -qq update \ apt-get -qq update \
&& \ && \
apt-get install -y \ apt-get install -y \
bash \
ca-certificates \ ca-certificates \
curl \ curl \
gnupg2 \ jq \
locales \ locales \
tini \
tzdata \ tzdata \
vim \
&& locale-gen en_US.UTF-8 \ && locale-gen en_US.UTF-8 \
&& curl -fsSL -o /sbin/tini "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-${ARCH}" \ && update-locale \
&& curl -fsSL -o /tini.asc "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-${ARCH}.asc" \ && dpkg-reconfigure -f noninteractive locales \
&& gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 \ && MICRO_VERSION=$(curl -s "https://api.github.com/repos/zyedidia/micro/releases" | jq --raw-output '.[0].tag_name') \
&& gpg --batch --verify /tini.asc /sbin/tini \ && MICRO_VERSION="${MICRO_VERSION#?}" \
&& chmod +x /sbin/tini \ && curl -fsSL "https://github.com/zyedidia/micro/releases/download/v${MICRO_VERSION}/micro-${MICRO_VERSION}-linux64.tar.gz" | tar xzf - -C /tmp --strip-components=1 \
&& gpgconf --kill all \ && mv /tmp/micro /usr/local/bin/micro \
&& ln -s /usr/local/bin/micro /usr/local/bin/vi \
&& ln -s /usr/local/bin/micro /usr/local/bin/vim \
&& ln -s /usr/local/bin/micro /usr/local/bin/nano \
&& ln -s /usr/local/bin/micro /usr/local/bin/emacs \
&& unset MICRO_ARCH \
&& unset MICRO_VERSION \
&& \ && \
apt-get remove -y \ printf "/bin/bash /shim/greeting.sh" >> /etc/bash.bashrc \
gnupg2 \ && \
apt-get remove -y jq \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \ && apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& apt-get autoremove -y \ && apt-get autoremove -y \
&& apt-get clean \ && apt-get clean \
@@ -71,7 +83,7 @@ USER apps
VOLUME [ "/config" ] VOLUME [ "/config" ]
COPY ./.containers/base/ubuntu/shim /shim COPY ./.containers/base/ubuntu/shim /shim
ENTRYPOINT [ "/sbin/tini", "--" ] ENTRYPOINT [ "/usr/bin/tini", "--" ]
LABEL "maintainer"="TrueCharts <info@truecharts.org>" LABEL "maintainer"="TrueCharts <info@truecharts.org>"
LABEL "org.opencontainers.image.source"="https://github.com/truecharts/apps" LABEL "org.opencontainers.image.source"="https://github.com/truecharts/apps"
+1 -1
View File
@@ -1 +1 @@
focal-20210217 focal-20210325
+11
View File
@@ -0,0 +1,11 @@
#!/usr/bin/env bash
echo "
Welcome to a TrueCharts App Container,
* Repository: https://github.com/truecharts/apps
* Docs: https://truecharts.org
* This container uses the micro CLI text editor
* Bugs or feature requests should be opened in an GH issue
* Questions should be discussed on GH discussions
"
+3 -3
View File
@@ -1,7 +1,7 @@
# About TrueCharts<br> # About TrueCharts<br>
**Community App Catalog for TrueNAS SCALE** **Community App Catalog for TrueNAS SCALE**
[![GitHub last commit](https://img.shields.io/github/last-commit/truecharts/truecharts/master.svg)](https://github.com/truecharts/truecharts/commits) [![Charts: Release](https://github.com/truecharts/charts/actions/workflows/charts-release.yaml/badge.svg)](https://github.com/truecharts/charts/actions/workflows/charts-release.yaml) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts?ref=badge_shield) [![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/truecharts/truecharts/blob/master/docs/LICENSE.BSD3) [![GitHub last commit](https://img.shields.io/github/last-commit/truecharts/truecharts/master.svg)](https://github.com/truecharts/apps/commits) [![Charts: Release](https://github.com/truecharts/apps/actions/workflows/charts-release.yaml/badge.svg)](https://github.com/truecharts/apps/actions/workflows/charts-release.yaml) [![pre-commit](https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit&logoColor=white)](https://github.com/pre-commit/pre-commit) [![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts.svg?type=shield)](https://app.fossa.com/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts?ref=badge_shield) [![License](https://img.shields.io/badge/License-BSD%203--Clause-orange.svg)](https://github.com/truecharts/apps/blob/master/docs/LICENSE.BSD3)
--- ---
Truecharts is an innitiative to provide high quality Apps to use with the TrueNAS SCALE App Ecosystem. Truecharts is an innitiative to provide high quality Apps to use with the TrueNAS SCALE App Ecosystem.
Our primary goals are: Our primary goals are:
@@ -16,14 +16,14 @@ All our apps are supposed to work together, be easy to setup using the TrueNAS U
Installing TrueCharts within TrueNAS SCALE, still requires the CLI. However it's not hard: Installing TrueCharts within TrueNAS SCALE, still requires the CLI. However it's not hard:
- Go to you shell of choice (either SSH or the TrueNAS webui shell) - Go to you shell of choice (either SSH or the TrueNAS webui shell)
- enter `cli` - enter `cli`
- enter `app catalog create repository="https://github.com/truecharts/truecharts" label="TrueCharts"` - enter `app catalog create repository="https://github.com/truecharts/apps" label="TrueCharts"`
For more information, please visit our website: For more information, please visit our website:
https://truecharts.org https://truecharts.org
## FAQ ## FAQ
Please refer to our [FAQ](https://truecharts.org/about/FAQ/) and [Issue tracker](https://github.com/truecharts/charts/issues) before creating an issue. Please refer to our [FAQ](https://truecharts.org/about/FAQ/) and [Issue tracker](https://github.com/truecharts/apps/issues) before creating an issue.
There is a significant chance your issue has been reported before! There is a significant chance your issue has been reported before!
## Getting into creating Apps ## Getting into creating Apps
+38
View File
@@ -0,0 +1,38 @@
apiVersion: str()
kubeVersion: str()
name: str()
version: str(required=True)
upstream_version: any(str(), num(), required=False)
appVersion: any(str(), num())
description: str()
type: str(required=True)
deprecated: bool(required=False)
home: str()
icon: str()
engine: str(required=False)
condition: str(required=False)
keywords: list(str(), required=False)
tags: str(required=False)
sources: list(str(), required=False)
dependencies: list(include('dependency'), required=False)
maintainers: list(include('maintainer'))
annotations: map(str(), str(), required=False)
---
maintainer:
name: str()
email: str(required=False)
url: str(required=True)
---
dependency:
name: str()
repository: str()
version: str()
condition: str(required=False)
tags: list(str(), required=False)
import-values: any(list(str()), list(include('import-value')), required=False)
enabled: bool(required=False)
alias: str(required=False)
---
import-value:
child: str()
parent: str()
+7
View File
@@ -0,0 +1,7 @@
remote: origin
target-branch: master
helm-extra-args: --timeout 600s
excluded-charts: common
chart-yaml-schema: .github/chart_schema.yaml
chart-repos:
- truecharts=https://truecharts.org
+1
View File
@@ -1,3 +1,4 @@
remote: origin remote: origin
target-branch: master target-branch: master
helm-extra-args: --timeout 600s helm-extra-args: --timeout 600s
chart-yaml-schema: .github/chart_schema.yaml
+301
View File
@@ -0,0 +1,301 @@
name: "Apps: test"
on:
pull_request:
branches:
- '**'
tags-ignore:
- '**'
paths:
- 'stable/**'
- '!stable/**/*.md'
- '!stable/**/README.md'
- '!stable/**/README.md.gotmpl'
- '!stable/**/app-readme.md'
- '!stable/**/app-readme.md.gotmpl'
- '!stable/**/docs/*'
- 'beta/**'
- '!beta/**/*.md'
- '!beta/**/README.md'
- '!beta/**/README.md.gotmpl'
- '!beta/**/app-readme.md'
- '!beta/**/app-readme.md.gotmpl'
- '!beta/**/docs/*'
- '.github/workflows/apps.test.yaml'
jobs:
catalog-test:
runs-on: ubuntu-latest
container:
image: ixsystems/catalog_validation:latest
steps:
- uses: actions/checkout@v2
name: Checkout
- name: Validate catalog format
run: |
/bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD"
common-lint:
runs-on: ubuntu-latest
outputs:
changed: ${{ steps.list-changed.outputs.changed }}
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.3
- uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1
- name: Run chart-testing (list-changed)
id: list-changed
run: |
changed=$(ct list-changed --config .github/ct-lint.yaml --chart-dirs 'library')
if [[ -n "$changed" ]]; then
echo "::set-output name=changed::true"
fi
- name: Run chart-testing (lint)
id: lint
if: steps.list-changed.outputs.changed == 'true'
run: ct lint --config .github/ct-lint.yaml --chart-dirs 'library'
common-test:
runs-on: ubuntu-latest
needs: common-lint
steps:
- name: Checkout
uses: actions/checkout@v2
if: needs.common-lint.outputs.changed == 'true'
with:
fetch-depth: 0
- name: prep
if: needs.common-lint.outputs.changed == 'true'
run: |
rm -Rf library/common-test/values.yaml
touch library/common-test/values.yaml
- name: Install Helm
uses: azure/setup-helm@v1
if: needs.common-lint.outputs.changed == 'true'
with:
version: v3.5.3
- uses: actions/setup-python@v2
if: needs.common-lint.outputs.changed == 'true'
with:
python-version: 3.7
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1
if: needs.common-lint.outputs.changed == 'true'
- name: Create k3d cluster
uses: nolar/setup-k3d-k3s@v1
if: needs.common-lint.outputs.changed == 'true'
with:
version: v1.19
- name: Run chart-testing (install)
if: needs.common-lint.outputs.changed == 'true'
run: ct install --config .github/ct-install.yaml --charts 'library/common-test'
common-unittest:
runs-on: ubuntu-latest
needs: common-lint
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install Dev tools
run: sudo apt-get update && sudo apt-get install -y jq libjq-dev
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.3
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
- name: Install dependencies
run: |
export RUBYJQ_USE_SYSTEM_LIBRARIES=1
bundle install
- name: Run tests
run: |
bundle exec m -r .tools/tests/charts
pre-release:
if: needs.common-lint.outputs.changed == 'true'
needs: [common-test, common-unittest, catalog-test]
runs-on: ubuntu-latest
outputs:
release: ${{ steps.prep.outputs.release }}
timeout-minutes: 5
steps:
- name: Prepare
id: prep
run: |
if [ "${{github.event_name}}" == "pull_request" ]; then
echo ::set-output name=release::false
else
echo ::set-output name=release::true
fi
- name: Block concurrent jobs
uses: softprops/turnstyle@v1
if: steps.prep.outputs.release == 'true'
with:
continue-after-seconds: 180
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
common-release:
needs: pre-release
runs-on: ubuntu-latest
if: needs.pre-release.outputs.release == 'true'
steps:
- name: Block concurrent jobs
uses: softprops/turnstyle@v1
with:
continue-after-seconds: 180
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
token: ${{ secrets.BOT_TOKEN }}
- name: Configure Git
run: |
git config user.name "TrueCharts-Bot"
git config user.email "bot@truecharts.org"
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.3
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.2.0
with:
charts_dir: library
charts_repo_url: ""
config: .github/cr.yaml
env:
CR_TOKEN: "${{ secrets.BOT_TOKEN }}"
- name: Commit and Push new index
run: |
git config user.name "TrueCharts-Bot"
git config user.email "bot@truecharts.org"
git add --all
git commit -sm "Commit chart-index updates" || exit 0
git push
changes:
name: Get changed Apps
runs-on: ubuntu-20.04
outputs:
matrix: "{\"app\": ${{ steps.reduce.outputs.apps }} }"
steps:
- name: Checkout
uses: actions/checkout@v2
- uses: dorny/paths-filter@v2
id: filter
with:
list-files: json
filters: |
changed:
- 'stable/**'
- 'beta/**'
- run: echo '${{ toJson(steps.filter.outputs) }}' > changes.json
- id: reduce
run: |
APPS=$(jq --raw-output '.changed_files | fromjson | .[] |= sub("(?<filepath>(?<first_directory>(?<root1>[\/]?)[^\/]+\/)(?<second_directory>(?<root2>[\/]?)[^\/]+)(?<extra_paths>.+))"; "\(.second_directory)") | unique' changes.json)
echo ::set-output name=apps::${APPS}
app-tests:
needs: [catalog-test, changes]
name: App Tests
runs-on: ubuntu-latest
strategy:
matrix: ${{ fromJson(needs.changes.outputs.matrix) }}
fail-fast: false
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Prepare-Lint
id: prep-lint
run: |
if test -f "./stable/${{ matrix.app }}/item.yaml"; then
train="stable"
else
train="beta"
fi
echo ::set-output name=train::${train}
maxfolderversion=$(ls -l ${train}/${{ matrix.app }} | grep ^d | awk '{print $9}' | tail -n 1)
echo "Detected folder version: ${maxfolderversion}"
mkdir ${train}/${{ matrix.app }}/${maxfolderversion}/ci || exit 0
cp ${train}/${{ matrix.app }}/${maxfolderversion}/test_values.yaml ${train}/${{ matrix.app }}/${maxfolderversion}/ci/test-values.yaml
echo ::set-output name=maxfolderversion::${maxfolderversion}
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.3
- uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1
- name: Run chart-testing (lint)
id: lint
run: ct lint --config .github/ct-lint.yaml --charts '${{ steps.prep-lint.outputs.train }}/${{ matrix.app }}/${{ steps.prep-lint.outputs.maxfolderversion }}'
- name: Prepare-Test
run: |
mv -f ${{ steps.prep-lint.outputs.train }}/${{ matrix.app }}/${{ steps.prep-lint.outputs.maxfolderversion }}/* ${{ steps.prep-lint.outputs.train }}/${{ matrix.app }}/
rm -Rf ${{ steps.prep-lint.outputs.train }}/${{ matrix.app }}/${{ steps.prep-lint.outputs.maxfolderversion }}
- name: Create k3d cluster
uses: nolar/setup-k3d-k3s@v1
with:
version: v1.19
- name: Run chart-testing (install)
run: ct install --config .github/ct-install.yaml --charts '${{ steps.prep-lint.outputs.train }}/${{ matrix.app }}'
app-tests-complete:
needs: [app-tests, common-unittest, common-test]
name: Apps Test Complete
runs-on: ubuntu-latest
steps:
- name: complete message
run: echo "App Tests Completed Successfully"
-111
View File
@@ -1,111 +0,0 @@
name: "Charts: Release"
on:
push:
branches:
- master
- staging
tags-ignore:
- '**'
paths:
- 'library/**'
- '!library/**/*.md'
- '!library/**/README.md'
- '!library/**/README.md.gotmpl'
- '!library/**/app-readme.md'
- '!library/**/app-readme.md.gotmpl'
- '!library/**/docs/*'
- '.github/workflows/charts.release.yaml'
- '.github/cr.yaml'
jobs:
pre-release:
runs-on: ubuntu-latest
timeout-minutes: 5
steps:
- name: Block concurrent jobs
uses: softprops/turnstyle@v1
with:
continue-after-seconds: 180
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
release:
needs: pre-release
runs-on: ubuntu-latest
steps:
- name: Block concurrent jobs
uses: softprops/turnstyle@v1
with:
continue-after-seconds: 180
env:
GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
token: ${{ secrets.BOT_TOKEN }}
- name: Configure Git
run: |
git config user.name "TrueCharts-Bot"
git config user.email "bot@truecharts.org"
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.5.2
- name: Run chart-releaser
uses: helm/chart-releaser-action@v1.2.0
with:
charts_dir: library
charts_repo_url: ""
config: .github/cr.yaml
env:
CR_TOKEN: "${{ secrets.BOT_TOKEN }}"
- name: Commit and Push new index
run: |
git config user.name "TrueCharts-Bot"
git config user.email "bot@truecharts.org"
git add --all
git commit -sm "Commit chart-index updates" || exit 0
git push
# Update the generated timestamp in the index.yaml
# needed until https://github.com/helm/chart-releaser/issues/90
# or helm/chart-releaser-action supports this
# post-release:
# needs: release
# runs-on: ubuntu-latest
# steps:
# - name: Block concurrent jobs
# uses: softprops/turnstyle@v1
# with:
# continue-after-seconds: 180
# env:
# GITHUB_TOKEN: ${{ secrets.BOT_TOKEN }}
#
# - name: Checkout
# uses: actions/checkout@v2
# with:
# ref: "gh-pages"
# fetch-depth: 0
#
# - name: Configure Git
# run: |
# git config user.name "TrueCharts-Bot"
# git config user.email "bot@truecharts.org"
#
# - name: Commit and push timestamp updates
# run: |
# if [[ -f index.yaml ]]; then
# git pull
# export generated_date=$(date --utc +%FT%T.%9NZ)
# sed -i -e "s/^generated:.*/generated: \"$generated_date\"/" index.yaml
# git add index.yaml
# git commit -sm "Update generated timestamp [ci-skip]" || exit 0
# git push
# fi
+18 -2
View File
@@ -27,9 +27,24 @@ jobs:
with: with:
version: v3.5.2 version: v3.5.2
- name: update folder names and dependencies - name: update folder names and dependencies for stable
run: | run: |
for chart in charts/*; do for chart in stable/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
helm dependency update ${chart}/${maxfolderversion}
if [ "${maxfolderversion}" != "${maxchartversion}" ]; then
mv -f ${chart}/${maxfolderversion} ${chart}/${maxchartversion}
echo "renamed ${chart}/${maxfolderversion} to ${chart}/${maxchartversion}"
fi
fi
done
- name: update folder names and dependencies for beta
run: |
for chart in beta/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }') maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
@@ -43,6 +58,7 @@ jobs:
fi fi
done done
- name: Commit and push updated charts - name: Commit and push updated charts
run: | run: |
git add --all git add --all
-119
View File
@@ -1,119 +0,0 @@
name: "Charts: Test"
on:
pull_request:
branches:
- '**'
tags-ignore:
- '**'
paths:
- 'library/**'
- '!library/**/*.md'
- '!library/**/README.md'
- '!library/**/README.md.gotmpl'
- '!library/**/app-readme.md'
- '!library/**/app-readme.md.gotmpl'
- '!library/**/docs/*'
- 'charts/**'
- '!charts/**/*.md'
- '!charts/**/README.md'
- '!charts/**/README.md.gotmpl'
- '!charts/**/app-readme.md'
- '!charts/**/app-readme.md.gotmpl'
- '!charts/**/docs/*'
- '.github/workflows/charts.test.yaml'
jobs:
catalog-tests:
runs-on: ubuntu-latest
container:
image: ixsystems/catalog_validation:latest
steps:
- uses: actions/checkout@v2
name: Checkout
- name: Validate catalog format
run: |
/bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD"
common-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.4.0
- uses: actions/setup-python@v2
with:
python-version: 3.7
- name: Set up chart-testing
uses: helm/chart-testing-action@v2.0.1
- name: Run chart-testing (lint)
id: lint
run: ct lint --config .github/ct.yaml --charts 'library/common'
- name: Create kind cluster
uses: helm/kind-action@v1.1.0
common-unittest:
runs-on: ubuntu-latest
needs: common-lint
steps:
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Install Dev tools
run: sudo apt-get update && sudo apt-get install -y jq libjq-dev
- name: Install Helm
uses: azure/setup-helm@v1
with:
version: v3.4.0
- name: Install Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7
- name: Install dependencies
run: |
export RUBYJQ_USE_SYSTEM_LIBRARIES=1
bundle install
- name: Run tests
run: |
bundle exec m -r .tools/tests/charts
chart-tests:
needs: [common-lint, common-unittest, catalog-tests]
runs-on: ubuntu-20.04
steps:
- name: Install Helm
run: /bin/bash -c "curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash"
- name: Checkout
uses: actions/checkout@v2
with:
fetch-depth: 0
- name: Fetch base branch history
run: git fetch origin master:master
- name: Setup catalog validation
run: |
sudo apt update > /dev/null 2>&1
sudo apt install -y python3-all-dev python3-pip python3-setuptools > /dev/null 2>&1
git clone https://github.com/truenas/catalog_validation
sudo pip3 install --disable-pip-version-check --exists-action w -r catalog_validation/requirements.txt > /dev/null 2>&1
sudo pip3 install -U catalog_validation/.
- name: Validate changed charts
run: /bin/bash -c "PWD=${pwd}; sudo /usr/local/bin/charts_validate deploy --path $PWD"
+13 -32
View File
@@ -1,10 +1,10 @@
name: "Containers: Test-and-Build" name: "Containers: Test-and-Build"
on: on:
workflow_dispatch:
push: push:
branches: branches:
- main - main
- staging
paths: paths:
- '.containers/apps/**' - '.containers/apps/**'
- '.containers/base/**' - '.containers/base/**'
@@ -50,7 +50,7 @@ jobs:
- name: Checkout - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
- name: hadolint - name: hadolint
uses: reviewdog/action-hadolint@v1 uses: reviewdog/action-hadolint@v1.17.1
with: with:
github_token: ${{ secrets.BOT_TOKEN }} github_token: ${{ secrets.BOT_TOKEN }}
reporter: github-pr-review reporter: github-pr-review
@@ -102,7 +102,6 @@ jobs:
platforms: all platforms: all
- name: Login to GHCR - name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v1 uses: docker/login-action@v1
with: with:
registry: ghcr.io registry: ghcr.io
@@ -118,15 +117,6 @@ jobs:
version: latest version: latest
driver-opts: image=moby/buildkit:master driver-opts: image=moby/buildkit:master
# Make sure we can store buildx cache in-between builds
- name: Cache Docker layers
uses: actions/cache@v2
with:
path: /tmp/.buildx-cache
key: ${{ runner.os }}-buildx-${{ github.sha }}
restore-keys: |
${{ runner.os }}-buildx-
# Install the GOSS testing framework # Install the GOSS testing framework
- name: Set up goss/dgoss - name: Set up goss/dgoss
uses: e1himself/goss-installation-action@v1.0.3 uses: e1himself/goss-installation-action@v1.0.3
@@ -145,17 +135,8 @@ jobs:
load: true load: true
tags: | tags: |
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:test ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:test
cache-from: type=local,src=/tmp/.buildx-cache cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache
cache-to: type=local,dest=/tmp/.buildx-cache-new cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache,mode=max
# Temporary fix
# https://github.com/docker/build-push-action/issues/252
# https://github.com/moby/buildkit/issues/1896
- name: Move cache
if: ${{ steps.prep.outputs.goss == 'true' }}
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache | exit 0
# Run GOSS tests if included with the container # Run GOSS tests if included with the container
- name: Run GOSS tests - name: Run GOSS tests
@@ -177,13 +158,13 @@ jobs:
tags: | tags: |
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:latest ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:latest
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:v${{ steps.prep.outputs.version }} ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:v${{ steps.prep.outputs.version }}
cache-from: type=local,src=/tmp/.buildx-cache cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache
cache-to: type=local,dest=/tmp/.buildx-cache-new cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache,mode=max
# Temporary fix container-build-complete:
# https://github.com/docker/build-push-action/issues/252 needs: [build]
# https://github.com/moby/buildkit/issues/1896 name: Container Build Completed
- name: Move cache runs-on: ubuntu-latest
run: | steps:
rm -rf /tmp/.buildx-cache - name: complete message
mv /tmp/.buildx-cache-new /tmp/.buildx-cache run: echo "Container Build and Tests Completed Successfully"
+1 -2
View File
@@ -5,7 +5,6 @@ on:
push: push:
branches: branches:
- main - main
- staging
paths: paths:
- ".github/workflows/containers.update.yaml" - ".github/workflows/containers.update.yaml"
schedule: schedule:
@@ -55,6 +54,6 @@ jobs:
git config user.name "TrueCharts Bot" git config user.name "TrueCharts Bot"
git config user.email "bot@truecharts.org" git config user.email "bot@truecharts.org"
git add -A git add -A
git commit -sam "Adding new release versions" || exit 0 git commit -sam "chore: added new container release versions" || exit 0
git push git push
fi fi
+35 -21
View File
@@ -1,6 +1,7 @@
name: "Docs: Copy" name: "Docs: Copy"
on: on:
workflow_dispatch:
push: push:
branches: branches:
- master - master
@@ -9,26 +10,24 @@ on:
- '**' - '**'
paths: paths:
- 'library/**/Chart.yaml' - 'library/**/Chart.yaml'
- 'library/**/README.md' - '.tools/gen-helm-docs.sh'
- 'library/**/LICENSE' - '**.gotmpl'
- 'library/**/**/CONFIG.md' - '**/LICENSE'
- 'library/**/app-readme.md' - '**LICENSE'
- 'charts/**/Chart.yaml' - '**.md'
- 'charts/**/**/README.md'
- 'charts/**/**/CONFIG.md'
- 'charts/**/**/LICENSE'
- 'charts/**/**/app-readme.md'
- '.github/README.md' - '.github/README.md'
- '.github/CODE_OF_CONDUCT.md' - '.github/CODE_OF_CONDUCT'
- '.github/CONTRIBUTING'
- './LICENSE' - './LICENSE'
- './NOTICE' - './NOTICE'
- '.github/workflows/docs.copy.yaml' - '.github/workflows/docs.copy.yaml'
jobs: jobs:
publish-app-docs: copy:
runs-on: ubuntu-latest runs-on: ubuntu-latest
name: "Copy"
steps: steps:
- name: Checkout-Master - name: Checkout
uses: actions/checkout@v2 uses: actions/checkout@v2
with: with:
token: ${{ secrets.BOT_TOKEN }} token: ${{ secrets.BOT_TOKEN }}
@@ -43,25 +42,40 @@ jobs:
- name: Copy general readme to website - name: Copy general readme to website
run: | run: |
cp .github/README.md docs/about/index.md || echo "readme copy failed, continuing..." yes | cp -rf .github/README.md docs/about/index.md || echo "readme copy failed, continuing..."
cp .github/CODE_OF_CONDUCT docs/about/code_of_conduct.md || echo "CODE_OF_CONDUCT copy failed, continuing..." yes | cp -rf .github/CODE_OF_CONDUCT docs/about/code_of_conduct.md || echo "CODE_OF_CONDUCT copy failed, continuing..."
cp .github/CONTRIBUTING docs/development/contributing.md || echo "CONTRIBUTING copy failed, continuing..." yes | cp -rf .github/CONTRIBUTING docs/development/contributing.md || echo "CONTRIBUTING copy failed, continuing..."
cp LICENSE docs/about/LICENSE.md || echo "license copy failed, continuing..." yes | cp -rf LICENSE docs/about/LICENSE.md || echo "license copy failed, continuing..."
sed -i '1s/^/# License<br>\n\n/' docs/about/LICENSE.md sed -i '1s/^/# License<br>\n\n/' docs/about/LICENSE.md
cp NOTICE docs/about/NOTICE.md || echo "license copy failed, continuing..." yes | cp -rf NOTICE docs/about/NOTICE.md || echo "license copy failed, continuing..."
sed -i '1s/^/# NOTICE<br>\n\n/' docs/about/NOTICE.md sed -i '1s/^/# NOTICE<br>\n\n/' docs/about/NOTICE.md
ls docs/ ls docs/
- name: Copy Apps readme to website - name: Copy stable Apps readme to website
run: | run: |
for chart in charts/*; do for chart in stable/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart}) chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion}" echo "Processing: ${chart} - folder: ${maxfolderversion}"
mkdir -p docs/apps/${chartname} || echo "app path already exists, continuing..." mkdir -p docs/apps/${chartname} || echo "app path already exists, continuing..."
cp ${chart}/${maxfolderversion}/README.md docs/apps/${chartname}/index.md || echo "readme copy failed, continuing..." yes | cp -rf ${chart}/${maxfolderversion}/README.md docs/apps/${chartname}/index.md || echo "readme copy failed, continuing..."
cp ${chart}/${maxfolderversion}/LICENSE docs/apps/${chartname}/LICENSE.md || echo "license copy failed, continuing..." yes | cp -rf ${chart}/${maxfolderversion}/LICENSE docs/apps/${chartname}/LICENSE.md || echo "license copy failed, continuing..."
sed -i '1s/^/# License<br>\n\n/' docs/apps/${chartname}/LICENSE.md || echo "license edit failed, continuing..."
fi
done
ls docs/apps/
- name: Copy beta Apps readme to website
run: |
for chart in beta/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion}"
mkdir -p docs/apps/${chartname} || echo "app path already exists, continuing..."
yes | cp -rf ${chart}/${maxfolderversion}/README.md docs/apps/${chartname}/index.md || echo "readme copy failed, continuing..."
yes | cp -rf ${chart}/${maxfolderversion}/LICENSE docs/apps/${chartname}/LICENSE.md || echo "license copy failed, continuing..."
sed -i '1s/^/# License<br>\n\n/' docs/apps/${chartname}/LICENSE.md || echo "license edit failed, continuing..." sed -i '1s/^/# License<br>\n\n/' docs/apps/${chartname}/LICENSE.md || echo "license edit failed, continuing..."
fi fi
done done
+1
View File
@@ -1,5 +1,6 @@
name: "Docs: Deploy" name: "Docs: Deploy"
on: on:
workflow_dispatch:
push: push:
branches: branches:
- master - master
+5
View File
@@ -9,3 +9,8 @@ repos:
- id: mixed-line-ending - id: mixed-line-ending
- id: check-merge-conflict - id: check-merge-conflict
- id: check-case-conflict - id: check-case-conflict
- id: check-executables-have-shebangs
- id: check-docstring-first
- id: check-symlinks
- id: destroyed-symlinks
- id: fix-byte-order-marker
+27 -1
View File
@@ -1,4 +1,30 @@
for chart in charts/*; do #!/bin/sh
for chart in stable/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
rm -Rf ${chart}/${maxfolderversion}/charts/*.tgz
cp -f library/common-test/charts/* ${chart}/${maxfolderversion}/charts/
fi
done
for chart in beta/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
rm -Rf ${chart}/${maxfolderversion}/charts/*.tgz
cp -f library/common-test/charts/* ${chart}/${maxfolderversion}/charts/
fi
done
for chart in staging/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart}) chartname=$(basename ${chart})
+32 -1
View File
@@ -1,4 +1,35 @@
for chart in charts/*; do #!/bin/sh
for chart in staging/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
helm dependency update --skip-refresh ${chart}/${maxfolderversion}
if [ "${maxfolderversion}" != "${maxchartversion}" ]; then
mv -f ${chart}/${maxfolderversion} ${chart}/${maxchartversion}
echo "renamed ${chart}/${maxfolderversion} to ${chart}/${maxchartversion}"
fi
fi
done
for chart in stable/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
helm dependency update --skip-refresh ${chart}/${maxfolderversion}
if [ "${maxfolderversion}" != "${maxchartversion}" ]; then
mv -f ${chart}/${maxfolderversion} ${chart}/${maxchartversion}
echo "renamed ${chart}/${maxfolderversion} to ${chart}/${maxchartversion}"
fi
fi
done
for chart in beta/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }') maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
+60 -6
View File
@@ -18,11 +18,9 @@ readme_template="${repository}/.tools/templates/chart/README.md.gotmpl"
config_template="${repository}/.tools/templates/chart/CONFIG.md.gotmpl" config_template="${repository}/.tools/templates/chart/CONFIG.md.gotmpl"
app_readme_template="${repository}/.tools/templates/chart/app-readme.md.gotmpl" app_readme_template="${repository}/.tools/templates/chart/app-readme.md.gotmpl"
# Gather all charts using the common library, excluding common-test
charts=$(find "${repository}" -name "Chart.yaml" -exec grep --exclude="*common-test*" -l "\- name\: common" {} \;)
root="${repository}" root="${repository}"
for chart in charts/*; do for chart in stable/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }') maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
@@ -31,17 +29,73 @@ for chart in charts/*; do
# Copy CONFIG template to each Chart directory, do not overwrite if exists # Copy CONFIG template to each Chart directory, do not overwrite if exists
cp -n "${config_template}" "${chart}/${maxfolderversion}/CONFIG.md.gotmpl" || true cp -n "${config_template}" "${chart}/${maxfolderversion}/CONFIG.md.gotmpl" || true
helm-docs \ helm-docs \
--ignore-file="${repository}/.helmdocsignore" \ --ignore-file=".helmdocsignore" \
--output-file="README.md" \ --output-file="README.md" \
--template-files="${repository}/.tools/templates/chart/README.md.gotmpl" \ --template-files="${repository}/.tools/templates/chart/README.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}" --chart-search-root="${chart}/${maxfolderversion}"
helm-docs \ helm-docs \
--ignore-file="${repository}/.helmdocsignore" \ --ignore-file=".helmdocsignore" \
--output-file="CONFIG.md" \ --output-file="CONFIG.md" \
--template-files="${chart}/${maxfolderversion}/CONFIG.md.gotmpl" \ --template-files="${chart}/${maxfolderversion}/CONFIG.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}" --chart-search-root="${chart}/${maxfolderversion}"
helm-docs \ helm-docs \
--ignore-file="${repository}/.helmdocsignore" \ --ignore-file=".helmdocsignore" \
--output-file="app-readme.md" \
--template-files="${repository}/.tools/templates/chart/app-readme.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
fi
done
for chart in stable/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
chartname=$(basename ${chart})
echo "-] Copying templates to ${repository}/${chart}/${maxfolderversion}"
# Copy CONFIG template to each Chart directory, do not overwrite if exists
cp -n "${config_template}" "${chart}/${maxfolderversion}/CONFIG.md.gotmpl" || true
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="README.md" \
--template-files="${repository}/.tools/templates/chart/README.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="CONFIG.md" \
--template-files="${chart}/${maxfolderversion}/CONFIG.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="app-readme.md" \
--template-files="${repository}/.tools/templates/chart/app-readme.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
fi
done
for chart in beta/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
chartname=$(basename ${chart})
echo "-] Copying templates to ${repository}/${chart}/${maxfolderversion}"
# Copy CONFIG template to each Chart directory, do not overwrite if exists
cp -n "${config_template}" "${chart}/${maxfolderversion}/CONFIG.md.gotmpl" || true
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="README.md" \
--template-files="${repository}/.tools/templates/chart/README.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="CONFIG.md" \
--template-files="${chart}/${maxfolderversion}/CONFIG.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
helm-docs \
--ignore-file=".helmdocsignore" \
--output-file="app-readme.md" \ --output-file="app-readme.md" \
--template-files="${repository}/.tools/templates/chart/app-readme.md.gotmpl" \ --template-files="${repository}/.tools/templates/chart/app-readme.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}" --chart-search-root="${chart}/${maxfolderversion}"
+3 -6
View File
@@ -7,20 +7,17 @@ appVersion: 1.0.0
description: ${CHARTNAME} App for TrueNAS SCALE description: ${CHARTNAME} App for TrueNAS SCALE
type: application type: application
deprecated: false deprecated: false
home: https://github.com/truecharts/charts/tree/master/charts/${CHARTNAME} home: https://github.com/truecharts/apps/tree/master/charts/${CHARTNAME}
icon: https://raw.githubusercontent.com/truecharts/charts/master/charts/${CHARTNAME}/icon.png?raw=true icon: https://raw.githubusercontent.com/truecharts/apps/master/charts/${CHARTNAME}/icon.png?raw=true
keywords: keywords:
- ${CHARTNAME} - ${CHARTNAME}
sources: sources:
- https://github.com/truecharts/charts/tree/master/charts/${CHARTNAME} - https://github.com/truecharts/apps/tree/master/charts/${CHARTNAME}
dependencies: dependencies:
- name: common - name: common
repository: https://charts.truecharts.com/ repository: https://charts.truecharts.com/
version: 1.3.0 version: 1.3.0
# condition: # condition:
# tags:
# import-values:
# alias:
maintainers: maintainers:
- name: TrueCharts - name: TrueCharts
email: info@truecharts.org email: info@truecharts.org
+1 -1
View File
@@ -19,7 +19,7 @@ Kubernetes: `>=1.16.0-0`
| Repository | Name | Version | | Repository | Name | Version |
|------------|------|---------| |------------|------|---------|
| https://k8s-at-home.com/charts/ | common | 3.0.1 | | https://truecharts.org/ | common | 3.0.1 |
## TL;DR ## TL;DR
+9 -4
View File
@@ -7,7 +7,7 @@ TrueCharts
{{- end -}} {{- end -}}
{{- define "custom.repository.url" -}} {{- define "custom.repository.url" -}}
https://github.com/truecharts/charts https://github.com/truecharts/apps
{{- end -}} {{- end -}}
{{- define "custom.helm.url" -}} {{- define "custom.helm.url" -}}
@@ -20,7 +20,7 @@ https://charts.truecharts.org
{{- define "custom.notes" -}} {{- define "custom.notes" -}}
TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** **This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)**
{{- end -}} {{- end -}}
{{- define "custom.requirements" -}} {{- define "custom.requirements" -}}
@@ -68,8 +68,12 @@ The command removes all the Kubernetes components associated with the chart **in
## Support ## Support
- See the [Wiki](https://wiki.truecharts.org) - See the [Wiki](https://wiki.truecharts.org)
- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) - Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
- Ask a [question](https://github.com/truecharts/charts/discussions) - Ask a [question](https://github.com/truecharts/apps/discussions)
{{- end -}}
{{- define "custom.copyright" -}}
All Rights Reserved - The TrueCharts Project
{{- end -}} {{- end -}}
{{ template "custom.introheader" . }} {{ template "custom.introheader" . }}
@@ -93,3 +97,4 @@ The command removes all the Kubernetes components associated with the chart **in
{{ template "custom.support" . }} {{ template "custom.support" . }}
{{ template "helm-docs.versionFooter" . }} {{ template "helm-docs.versionFooter" . }}
{{ template "custom.copyright" . }}
@@ -1,4 +1,5 @@
{{- define "custom.notes" -}} {{- define "custom.notes" -}}
This App is supplied by TrueCharts, for more information please visit https://truecharts.org
{{- end -}} {{- end -}}
{{ template "chart.description" . }} {{ template "chart.description" . }}
{{ template "custom.notes" . }} {{ template "custom.notes" . }}
+24 -1
View File
@@ -1,4 +1,27 @@
for chart in charts/*; do #!/bin/sh
for chart in stable/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
mv -f ${chart}/${maxfolderversion}/values.yaml ${chart}/${maxfolderversion}/ix_values.yaml
fi
done
for chart in staging/*; do
if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion} - version: ${maxchartversion}"
mv -f ${chart}/${maxfolderversion}/values.yaml ${chart}/${maxfolderversion}/ix_values.yaml
fi
done
for chart in beta/*; do
if [ -d "${chart}" ]; then if [ -d "${chart}" ]; then
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1) maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
chartname=$(basename ${chart}) chartname=$(basename ${chart})
Binary file not shown.
Binary file not shown.
-31
View File
@@ -1,31 +0,0 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: deluge
version: 2.0.0
upstream_version: 1.1.1
appVersion: "latest"
description: Deluge is a torrent download client
type: application
deprecated: false
home: https://github.com/truecharts/charts/tree/master/charts/deluge
icon: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200
keywords:
- deluge
sources:
- https://github.com/truecharts/charts/tree/master/charts/deluge
- https://github.com/k8s-at-home/charts/tree/master/charts/deluge
- https://hub.docker.com/r/linuxserver/deluge/
- https://deluge-torrent.org/
dependencies:
- name: common
repository: https://charts.truecharts.org/
version: 2.0.0
# condition:
# tags:
# import-values:
# alias:
maintainers:
- name: TrueCharts
email: info@truecharts.org
url: truecharts.org
# annotations:
-55
View File
@@ -1,55 +0,0 @@
# Introduction
![Version: 2.0.0](https://img.shields.io/badge/Version-2.0.0-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square)
Deluge is a torrent download client
TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation.
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
## Source Code
* <https://github.com/truecharts/charts/tree/master/charts/deluge>
* <https://github.com/k8s-at-home/charts/tree/master/charts/deluge>
* <https://hub.docker.com/r/linuxserver/deluge/>
* <https://deluge-torrent.org/>
## Requirements
Kubernetes: `>=1.16.0-0`
## Dependencies
| Repository | Name | Version |
|------------|------|---------|
| https://charts.truecharts.org/ | common | 2.0.0 |
## Installing the Chart
To install the chart with the release name `deluge`
- Open TrueNAS SCALE
- Go to Apps
- Click "Install" for this specific Apps
- Fill out the configuration form
## Uninstalling the Chart
To uninstall the `deluge` deployment
- Open TrueNAS SCALE
- Go to Apps
- Go to "Installed Apps"
- Expand the menu in the top-right corner of this App
- Click "Remove" for this specific Apps
The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
## Support
- See the [Wiki](https://wiki.truecharts.org)
- Open a [issue](https://github.com/truecharts/charts/issues/new/choose)
- Ask a [question](https://github.com/truecharts/charts/discussions)
----------------------------------------------
Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
-2
View File
@@ -1,2 +0,0 @@
Deluge is a torrent download client
Binary file not shown.
-17
View File
@@ -1,17 +0,0 @@
##
# This file contains Values.yaml content that gets added to the output of questions.yaml
# It's ONLY meant for content that the user is NOT expected to change.
# Example: Everything under "image" is not included in questions.yaml but is included here.
##
image:
repository: linuxserver/deluge
pullPolicy: IfNotPresent
tag: latest
startAsRoot: true
##
# Most other defaults are set in questions.yaml
# For other options please refer to the wiki, default_values.yaml or the common library chart
##
-681
View File
@@ -1,681 +0,0 @@
groups:
- name: "Container Image"
description: "Image to be used for container"
- name: "Workload Configuration"
description: "Configure workload deployment"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
- name: "Reverse Proxy Configuration"
description: "Reverse Proxy configuration"
- name: "Advanced"
description: "Advanced Configuration"
- name: "WARNING"
description: "WARNING"
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
questions:
- variable: portal
group: "Container Image"
label: "Configure Portal Button"
schema:
type: dict
hidden: true
attrs:
- variable: enabled
label: "Enable"
description: "enable the portal button"
schema:
hidden: true
editable: false
type: boolean
default: true
# Update Policy
- variable: strategyType
group: "Container Image"
label: "Update Strategy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Configuration"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Configuration"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Configuration"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
# Enable Host Networking
- variable: hostNetwork
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
- variable: services
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: main
label: "Main service"
description: "The Primary service on which the healthcheck runs, often the webUI"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "HTTP"
hidden: false
enum:
- value: HTTP
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- variable: port
label: "container port"
schema:
type: int
default: 8112
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 8112
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
- variable: tcp
label: "TCP Torrent connections"
description: "This service is used to process incomming torrent connections over TCP"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "TCP"
hidden: true
enum:
- value: TCP
description: "TCP"
- value: "UDP"
description: "UDP"
- variable: port
label: "container port"
schema:
type: int
default: 51413
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 51413
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
- variable: udp
label: "UDP Torrent connections"
description: "This service is used to process incomming torrent connections over UDP"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "UDP"
hidden: true
enum:
- value: TCP
description: "TCP"
- value: "UDP"
description: "UDP"
- variable: port
label: "container port"
schema:
type: int
default: 51413
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 51413
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
schema:
type: list
default: []
items:
- variable: volumeMount
label: "Custom Storage"
schema:
type: dict
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: ""
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: ingress
label: ""
group: "Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: main
label: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Reverse Proxy Type"
schema:
type: string
default: "HTTP"
hidden: true
editable: false
required: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: path
label: "path"
schema:
type: string
required: true
hidden: true
default: "/"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""
- variable: tcp
label: "TCP Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable TCP Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Select Reverse Proxy Type"
schema:
type: string
default: "TCP"
required: true
editable: false
hidden: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
# - variable: servicePort
# label: "Service Port to proxy to"
# schema:
# hidden: true
# editable: false
# default: 80
# type: int
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "torrent-tcp"
required: true
enum:
- value: "torrent-tcp"
description: "Torrent-TCP: port 51413"
- variable: udp
label: "UDP Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable UDP Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Select Reverse Proxy Type"
schema:
type: string
default: "UDP"
required: true
editable: false
hidden: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
# - variable: servicePort
# label: "Service Port to proxy to"
# schema:
# hidden: true
# editable: false
# default: 80
# type: int
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "torrent-udp"
required: true
enum:
- value: "torrent-udp"
description: "Torrent-UDP: port 51413"
-3
View File
@@ -1,3 +0,0 @@
categories:
- media
icon_url: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200
-2
View File
@@ -1,2 +0,0 @@
Emby Server is a home media server
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/djs52/charts/master/charts/emby/icon.png?raw=true
Binary file not shown.
-2
View File
@@ -1,2 +0,0 @@
FreshRSS is a self-hosted RSS feed aggregator
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
-803
View File
@@ -1,803 +0,0 @@
# Groups
groups:
- name: "Container Image"
description: "Image to be used for container"
- name: "Workload Configuration"
description: "Configure workload deployment"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
- name: "Reverse Proxy Configuration"
description: "Reverse Proxy configuration"
- name: "Advanced"
description: "Advanced Configuration"
- name: "WARNING"
description: "WARNING"
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
# UI
questions:
# Portal
- variable: portal
group: "Container Image"
label: "Configure Portal Button"
schema:
type: dict
hidden: true
attrs:
- variable: enabled
label: "Enable"
description: "enable the portal button"
schema:
hidden: true
editable: false
type: boolean
default: true
- variable: nodePortProtocol
label: "Protocol when using NodePort"
description: "Enter the protocol to use when using nodeport"
schema:
hidden: true
editable: false
type: string
default: "http"
# Update Policy
- variable: strategyType
group: "Container Image"
label: "Update Strategy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Configuration"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Configuration"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Configuration"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# Configure Enviroment Variables
- variable: environmentVariables
label: "Image environment"
group: "Configuration"
schema:
type: list
default: []
items:
- variable: environmentVariable
label: "Environment Variable"
schema:
type: dict
attrs:
- variable: name
label: "Name"
schema:
type: string
- variable: value
label: "Value"
schema:
type: string
# Docker specific env
- variable: env
group: "Configuration"
label: "Image Environment"
schema:
type: dict
attrs:
- variable: gui
label: "GUI Settings"
description: "Always read description before changing a value here. Also refer to README"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: DISPLAY_WIDTH
label: "DISPLAY_WIDTH"
description: "Width (in pixels) of the application's window."
schema:
type: string
default: "1280"
required: true
- variable: DISPLAY_HEIGHT
label: "DISPLAY_HEIGHT"
description: "Height (in pixels) of the application's window."
schema:
type: string
default: "768"
required: true
- variable: SECURE_CONNECTION
label: "SECURE_CONNECTION"
description: "When set to 1, an encrypted connection is used to access the application's GUI (either via a web browser or VNC client). See the Security section for more details."
schema:
type: string
default: "0"
required: true
- variable: VNC_PASSWORD
label: "VNC_PASSWORD"
description: "Password needed to connect to the application's GUI. See the VNC Password section for more details."
schema:
private: true
type: string
default: ""
- variable: autoconv
label: "Automated Conversion Settings"
description: "Always read description before changing a value here. Also refer to README"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: AUTOMATED_CONVERSION_PRESET
label: "AUTOMATED_CONVERSION_PRESET"
description: "HandBrake preset used by the automatic video converter. Identification of a preset must follow the format <CATEGORY>/<PRESET NAME>"
schema:
type: string
default: 'General/Very Fast 1080p30'
required: true
- variable: AUTOMATED_CONVERSION_FORMAT
label: "AUTOMATED_CONVERSION_FORMAT"
description: "Video container format used by the automatic video converter for output files. This is typically the video filename extension."
schema:
type: string
default: 'mp4'
required: true
- variable: AUTOMATED_CONVERSION_KEEP_SOURCE
label: "AUTOMATED_CONVERSION_KEEP_SOURCE"
description: "When set to 0, a video that has been successfully converted is removed from the watch folder."
schema:
type: string
default: "1"
required: true
- variable: AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION
label: "AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION"
description: "When set to ignore, a non-video file found in the watch folder is ignored. If set to copy, a non-video file is copied as-is to the output folder."
schema:
type: string
default: 'ignore'
required: true
# Networking
# Enable Host Networking
- variable: hostNetwork
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
- variable: services
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: main
label: "Main service"
description: "The Primary service on which the healthcheck runs, often the webUI"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "HTTP"
hidden: false
enum:
- value: HTTP
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- variable: port
label: "container port"
schema:
type: int
default: 5800
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 5800
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
- variable: vnc
label: "VNC service"
description: "Service to connect to VNC if enabled"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "TCP"
hidden: true
enum:
- value: TCP
description: "TCP"
- value: "UDP"
description: "UDP"
- variable: port
label: "container port"
schema:
type: int
default: 5900
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 5900
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
# TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
# storage ------------------------
- variable: storage
label: "storage dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "storage"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/storage"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
# watch ------------------------
- variable: watch
label: "watch dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "watch"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/watch"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
# output ------------------------
- variable: output
label: "output dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "output"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/output"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
# Optical Drive
- variable: opticaldrive
label: "Optical Drive Device"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Optical Drive Device"
schema:
type: boolean
default: false
required: false
editable: true
show_subquestions_if: true
subquestions:
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: false
hidden: true
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: "opticaldrive"
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Path to Optical Drive device inside the pod"
description: "Preferably the same as the path to the Optical Drive on the host"
schema:
type: path
required: true
default: ""
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Path to Optical Drive device on host"
description: 'Best to use path "by-id"'
schema:
type: path
required: true
# Privileged
- variable: securityContext
group: "Storage and Devices"
label: "Security Context"
schema:
type: dict
attrs:
- variable: privileged
label: "Enable privileged to pass thru an Optical Drive device"
schema:
type: boolean
default: true
required: false
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
schema:
type: list
default: []
items:
- variable: volumeMount
label: "Custom Storage"
schema:
type: dict
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: ""
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
# Reverse Proxy
- variable: ingress
label: ""
group: "Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: main
label: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Reverse Proxy Type"
schema:
type: string
default: "HTTP"
hidden: true
editable: false
required: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: path
label: "path"
schema:
type: string
required: true
hidden: true
default: "/"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""
-130
View File
@@ -1,130 +0,0 @@
image:
repository: jlesage/handbrake
tag: v1.23.1
pullPolicy: IfNotPresent
strategy:
type: Recreate
startAsRoot: true
# 24=cdrom 44=video 107=render
supplementalGroups: 24,44,107
services:
main:
port:
port: 5800 #Required for web GUI
vnc:
enabled: true
type: ClusterIP
port:
port: 5900
protocol: "TCP"
targetPort: 5900
#All values here are set as the docker defaults.
envTpl:
# Permissions Settings
USER_ID: "{{ .Values.PUID }}"
GROUP_ID: "{{ .Values.PGID }}"
env:
# General Settings
KEEP_APP_RUNNING: "0"
CLEAN_TMP_DIR: "1"
# GUI Settings
DISPLAY_WIDTH: "1280"
DISPLAY_HEIGHT: "768"
SECURE_CONNECTION: "0"
VNC_PASSWORD:
# Automated Conversion Preset
AUTOMATED_CONVERSION_PRESET: 'General/Very Fast 1080p30'
AUTOMATED_CONVERSION_FORMAT: 'mp4'
AUTOMATED_CONVERSION_KEEP_SOURCE: "1"
AUTOMATED_CONVERSION_NON_VIDEO_FILE_ACTION: 'ignore'
persistence:
config:
enabled: false
emptyDir: false
mountPath: /config
storage:
enabled: false
emptyDir: false
mountPath: /storage # This can be read only
watch:
enabled: false
emptyDir: false
mountPath: /watch
output:
enabled: false
emptyDir: false
mountPath: /output
## Somehow must enable user to add as many watch folders
## All folders must start with "watch" and an index after
## eg. /watch1, /watch2
## This is importand because settings can overrode to each watch folder exclusivly, with env vars with _# as a suffix
## eg. AUTOMATED_CONVERSION_PRESET_1
# Path to your optical drive device in the container
additionalVolumeMounts: []
# - name: opticaldrive
# mountPath: /dev/serial/by-id/sr0-
# Path to your zwave device on the host
additionalVolumes: []
# - name: opticaldrive
# hostPath:
# path: /dev/serial/by-id/sr0-
# affinity:
# nodeAffinity:
# requiredDuringSchedulingIgnoredDuringExecution:
# nodeSelectorTerms:
# - matchExpressions:
# - key: app
# operator: In
# values:
# - opticaldrive-controller
appVolumeMounts:
config:
enabled: true
emptyDir: true
datasetName: "config"
mountPath: "/config"
hostPathEnabled: true
setPermissions: true
storage:
enabled: true
emptyDir: true
datasetName: "storage"
mountPath: "/storage"
hostPathEnabled: true
setPermissions: true
watch:
enabled: true
emptyDir: true
datasetName: "watch"
mountPath: "/watch"
hostPathEnabled: true
setPermissions: true
output:
enabled: true
emptyDir: true
datasetName: "output"
mountPath: "/output"
hostPathEnabled: true
setPermissions: true
# opticaldrive:
# enabled: true
# emptyDir: true
# mountPath: "/dev/sr0"
# hostPath: "/dev/sr0"
# hostPathEnabled: true
# setPermissions: true
-2
View File
@@ -1,2 +0,0 @@
An Application dashboard and launcher
Binary file not shown.
@@ -1,2 +0,0 @@
home-assistant App for TrueNAS SCALE
Binary file not shown.
-532
View File
@@ -1,532 +0,0 @@
groups:
- name: "Container Image"
description: "Image to be used for container"
- name: "Workload Configuration"
description: "Configure workload deployment"
- name: "Configuration"
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
- name: "Reverse Proxy Configuration"
description: "Reverse Proxy configuration"
- name: "Advanced"
description: "Advanced Configuration"
- name: "WARNING"
description: "WARNING"
portals:
web_portal:
protocols:
- "$kubernetes-resource_configmap_portal_protocol"
host:
- "$kubernetes-resource_configmap_portal_host"
ports:
- "$kubernetes-resource_configmap_portal_port"
questions:
- variable: portal
group: "Container Image"
label: "Configure Portal Button"
schema:
type: dict
hidden: true
attrs:
- variable: enabled
label: "Enable"
description: "enable the portal button"
schema:
hidden: true
editable: false
type: boolean
default: true
# Update Policy
- variable: strategyType
group: "Container Image"
label: "Update Strategy"
schema:
type: string
default: "Recreate"
enum:
- value: "RollingUpdate"
description: "Create new pods and then kill old ones"
- value: "Recreate"
description: "Kill existing pods before creating new ones"
# Configure Time Zone
- variable: timezone
group: "Configuration"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Configuration"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Configuration"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Configuration"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# Configure Time Zone
- variable: git
group: "Configuration"
label: "Git"
description: "Attatch git repository to Home-Assistant"
schema:
type: dict
attrs:
- variable: deployKey
label: "deployKey"
description: "Raw SSH private key"
schema:
type: string
default: ""
- variable: deployKeyBase64
label: "deployKey"
description: "Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence"
schema:
type: string
default: ""
# Configure app volumes
- variable: appVolumeMounts
group: "Storage and Devices"
label: ""
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "Config Volume"
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount path inside the container"
schema:
type: path
default: "/config"
editable: false
- variable: hostPathEnabled
label: "Config - Enable Host Path"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Config Host Path"
schema:
type: hostpath
required: true
# Z-Wave device -----------------
- variable: zwave
label: "USB Z-Wave Device"
schema:
type: dict
attrs:
- variable: enabled
label: "USB Z-Wave Device"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: false
hidden: true
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: "ZWave"
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Path to mount device inside the container"
description: "Preferably the same as the path to the device path on the host"
schema:
type: path
required: true
default: "/dev/ttyUSB0"
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Path to Z-Wave device on host"
schema:
type: path
required: true
default: "/dev/ttyUSB0"
# Zigbee device -----------------
- variable: zigbee
label: "USB Zigbee Device"
schema:
type: dict
attrs:
- variable: enabled
label: "USB Zigbee Device"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: false
hidden: true
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: "ZWave"
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Path to mount device inside the container"
description: "Preferably the same as the path to the device path on the host"
schema:
type: path
required: true
default: "/dev/ttyUSB0"
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Path to Zigbee device on host"
schema:
type: path
required: true
default: "/dev/ttyUSB0"
# Enable privileged
- variable: securityContext
group: "Storage and Devices"
label: "Security Context"
schema:
type: dict
attrs:
- variable: privileged
label: "Enable privileged to pass thru a USB device from the host"
schema:
type: boolean
default: false
# Service Configuration
# Enable Host Networking
- variable: hostNetwork
group: "Networking"
label: "Enable Host Networking"
schema:
type: boolean
default: false
- variable: services
group: "Networking"
label: "Configure Service"
schema:
type: dict
attrs:
- variable: main
label: "Main service"
description: "The Primary service on which the healthcheck runs, often the webUI"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable the service"
schema:
type: boolean
default: true
hidden: true
- variable: type
label: "Service type"
description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System"
schema:
type: string
default: "ClusterIP"
enum:
- value: "NodePort"
description: "NodePort"
- value: "ClusterIP"
description: "ClusterIP"
- variable: port
label: "Port configuration"
schema:
type: dict
attrs:
- variable: protocol
label: "Port Type"
schema:
type: string
default: "HTTP"
hidden: false
enum:
- value: HTTP
description: "HTTP"
- value: "HTTPS"
description: "HTTPS"
- variable: port
label: "container port"
schema:
type: int
default: 8123
editable: false
hidden: true
- variable: targetport
label: "Internal Service port"
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 8123
editable: false
hidden: true
- variable: nodePort
label: "(optional) host nodePort to expose to"
description: "only get used when nodePort is selected"
schema:
type: int
min: 9000
max: 65535
default: 36052
required: true
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
schema:
type: list
default: []
items:
- variable: volumeMount
label: "Custom Storage"
schema:
type: dict
attrs:
- variable: enabled
label: "Enabled"
schema:
type: boolean
default: true
required: true
hidden: true
editable: false
- variable: setPermissions
label: "Automatic Permissions"
description: "Automatically set permissions on install"
schema:
type: boolean
default: true
hidden: false
- variable: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- variable: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: ""
editable: true
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: true
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: ingress
label: ""
group: "Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: main
label: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: type
label: "Reverse Proxy Type"
schema:
type: string
default: "HTTP"
hidden: true
editable: false
required: true
- variable: serviceName
label: "Service name to proxy to"
schema:
hidden: true
editable: false
type: string
default: ""
- variable: entrypoint
label: "Select Entrypoint"
schema:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
type: list
default: []
items:
- variable: host
label: "Host"
schema:
type: dict
attrs:
- variable: host
label: "Domain Name"
required: true
schema:
type: string
- variable: path
label: "path"
schema:
type: string
required: true
hidden: true
default: "/"
- variable: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""
-2
View File
@@ -1,2 +0,0 @@
API Support for your favorite torrent trackers.
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/truecharts/truecharts/master/charts/jackett/icon.png?raw=true
-2
View File
@@ -1,2 +0,0 @@
Jellyfin is a Free Software Media System
Binary file not shown.
-3
View File
@@ -1,3 +0,0 @@
categories:
- media
icon_url: https://raw.githubusercontent.com/truecharts/truecharts/master/charts/jellyfin/icon.png?raw=true

Some files were not shown because too many files have changed in this diff Show More