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:
jackett:
running: true
+1 -1
View File
@@ -11,8 +11,8 @@ RUN \
apt-get -qq update \
&& \
apt-get -qq install -y \
libchromaprint-tools \
libicu66 \
mediainfo \
&& \
case "${TARGETPLATFORM}" in \
'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/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:
Lidarr:
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
ENV NVIDIA_DRIVER_CAPABILITIES="compute,video,utility" \
INTEL_NEO_VERSION=20.48.18558 \
INTEL_IGC_VERSION=1.0.5699 \
INTEL_NEO_VERSION=21.11.19310 \
INTEL_IGC_VERSION=1.0.6646 \
INTEL_GMMLIB_VERSION=20.3.2 \
PLEX_DOWNLOAD="https://downloads.plex.tv/plex-media-server-new" \
PLEX_MEDIA_SERVER_APPLICATION_SUPPORT_DIR="/config/Library/Application Support" \
@@ -25,6 +25,14 @@ RUN \
export ARCH='amd64'; \
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 \
&& \
apt-get -qq update \
@@ -38,11 +46,12 @@ RUN \
&& \
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 \
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 \
&& 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 \
&& 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 \
;; \
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]
Connection\UPnP=false
Connection\PortRangeMin=6881
Downloads\SavePath=/tmp/downloads
Downloads\SavePath=/downloads/downloads
Downloads\ScanDirsV2=@Variant(\0\0\0\x1c\0\0\0\0)
Downloads\TempPath=/tmp/incomplete
Downloads\TempPath=/downloads/incomplete
WebUI\Address=*
WebUI\ServerDomains=*
WebUI\HostHeaderValidation=false
+3 -3
View File
@@ -12,20 +12,20 @@ RUN \
&& \
apt-get -qq install -y \
libicu66 \
mediainfo \
libmediainfo0v5 \
&& \
case "${TARGETPLATFORM}" in \
'linux/amd64') export ARCH='x64' ;; \
esac \
&& \
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 \
&& \
rm -rf \
/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 clean \
+1 -1
View File
@@ -4,4 +4,4 @@
source "/shim/umask.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:
Radarr:
running: true
+1 -1
View File
@@ -1,6 +1,6 @@
#!/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#*release-}"
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/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}
+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 install -y \
libicu66 \
mediainfo \
mono-devel \
ca-certificates-mono \
mono-complete=${MONO_VERSION}\* \
libmediainfo0v5 \
&& \
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 \
&& \
rm -rf \
/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 \
&& 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/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:
mono:
running: true
+1 -1
View File
@@ -1,6 +1,6 @@
#!/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#*release-}"
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
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 \
DEBCONF_NONINTERACTIVE_SEEN=true \
DEBIAN_FRONTEND=noninteractive \
DEBIAN_FRONTEND="noninteractive" \
APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn \
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 \
adduser apps \
@@ -26,12 +35,7 @@ WORKDIR /app
# hadolint ignore=DL3008,DL3015
RUN \
set -eux \
&& \
case "${TARGETPLATFORM}" in \
'linux/amd64') export ARCH='amd64' ;; \
esac \
&& \
echo 'APT::Install-Recommends "false";' >/etc/apt/apt.conf.d/00recommends \
&& echo 'APT::Install-Recommends "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-Suggests "false";' >>/etc/apt/apt.conf.d/00recommends \
@@ -39,22 +43,30 @@ RUN \
apt-get -qq update \
&& \
apt-get install -y \
bash \
ca-certificates \
curl \
gnupg2 \
jq \
locales \
tini \
tzdata \
vim \
&& locale-gen en_US.UTF-8 \
&& curl -fsSL -o /sbin/tini "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-${ARCH}" \
&& curl -fsSL -o /tini.asc "https://github.com/krallin/tini/releases/download/v${TINI_VERSION}/tini-${ARCH}.asc" \
&& gpg --batch --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7 \
&& gpg --batch --verify /tini.asc /sbin/tini \
&& chmod +x /sbin/tini \
&& gpgconf --kill all \
&& update-locale \
&& dpkg-reconfigure -f noninteractive locales \
&& MICRO_VERSION=$(curl -s "https://api.github.com/repos/zyedidia/micro/releases" | jq --raw-output '.[0].tag_name') \
&& MICRO_VERSION="${MICRO_VERSION#?}" \
&& 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 \
&& 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 \
gnupg2 \
printf "/bin/bash /shim/greeting.sh" >> /etc/bash.bashrc \
&& \
apt-get remove -y jq \
&& apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false \
&& apt-get autoremove -y \
&& apt-get clean \
@@ -71,7 +83,7 @@ USER apps
VOLUME [ "/config" ]
COPY ./.containers/base/ubuntu/shim /shim
ENTRYPOINT [ "/sbin/tini", "--" ]
ENTRYPOINT [ "/usr/bin/tini", "--" ]
LABEL "maintainer"="TrueCharts <info@truecharts.org>"
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>
**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.
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:
- Go to you shell of choice (either SSH or the TrueNAS webui shell)
- 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:
https://truecharts.org
## 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!
## 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
target-branch: master
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:
version: v3.5.2
- name: update folder names and dependencies
- name: update folder names and dependencies for stable
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
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
maxchartversion=$(cat ${chart}/${maxfolderversion}/Chart.yaml | grep "^version: " | awk -F" " '{ print $2 }')
@@ -43,6 +58,7 @@ jobs:
fi
done
- name: Commit and push updated charts
run: |
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"
on:
workflow_dispatch:
push:
branches:
- main
- staging
paths:
- '.containers/apps/**'
- '.containers/base/**'
@@ -50,7 +50,7 @@ jobs:
- name: Checkout
uses: actions/checkout@v2
- name: hadolint
uses: reviewdog/action-hadolint@v1
uses: reviewdog/action-hadolint@v1.17.1
with:
github_token: ${{ secrets.BOT_TOKEN }}
reporter: github-pr-review
@@ -102,7 +102,6 @@ jobs:
platforms: all
- name: Login to GHCR
if: github.event_name != 'pull_request'
uses: docker/login-action@v1
with:
registry: ghcr.io
@@ -118,15 +117,6 @@ jobs:
version: latest
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
- name: Set up goss/dgoss
uses: e1himself/goss-installation-action@v1.0.3
@@ -145,17 +135,8 @@ jobs:
load: true
tags: |
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:test
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
# 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
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache
cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache,mode=max
# Run GOSS tests if included with the container
- name: Run GOSS tests
@@ -177,13 +158,13 @@ jobs:
tags: |
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:latest
ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:v${{ steps.prep.outputs.version }}
cache-from: type=local,src=/tmp/.buildx-cache
cache-to: type=local,dest=/tmp/.buildx-cache-new
cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.container }}:buildcache
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
run: |
rm -rf /tmp/.buildx-cache
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
container-build-complete:
needs: [build]
name: Container Build Completed
runs-on: ubuntu-latest
steps:
- name: complete message
run: echo "Container Build and Tests Completed Successfully"
+1 -2
View File
@@ -5,7 +5,6 @@ on:
push:
branches:
- main
- staging
paths:
- ".github/workflows/containers.update.yaml"
schedule:
@@ -55,6 +54,6 @@ jobs:
git config user.name "TrueCharts Bot"
git config user.email "bot@truecharts.org"
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
fi
+35 -21
View File
@@ -1,6 +1,7 @@
name: "Docs: Copy"
on:
workflow_dispatch:
push:
branches:
- master
@@ -9,26 +10,24 @@ on:
- '**'
paths:
- 'library/**/Chart.yaml'
- 'library/**/README.md'
- 'library/**/LICENSE'
- 'library/**/**/CONFIG.md'
- 'library/**/app-readme.md'
- 'charts/**/Chart.yaml'
- 'charts/**/**/README.md'
- 'charts/**/**/CONFIG.md'
- 'charts/**/**/LICENSE'
- 'charts/**/**/app-readme.md'
- '.tools/gen-helm-docs.sh'
- '**.gotmpl'
- '**/LICENSE'
- '**LICENSE'
- '**.md'
- '.github/README.md'
- '.github/CODE_OF_CONDUCT.md'
- '.github/CODE_OF_CONDUCT'
- '.github/CONTRIBUTING'
- './LICENSE'
- './NOTICE'
- '.github/workflows/docs.copy.yaml'
jobs:
publish-app-docs:
copy:
runs-on: ubuntu-latest
name: "Copy"
steps:
- name: Checkout-Master
- name: Checkout
uses: actions/checkout@v2
with:
token: ${{ secrets.BOT_TOKEN }}
@@ -43,25 +42,40 @@ jobs:
- name: Copy general readme to website
run: |
cp .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..."
cp .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 .github/README.md docs/about/index.md || echo "readme copy failed, continuing..."
yes | cp -rf .github/CODE_OF_CONDUCT docs/about/code_of_conduct.md || echo "CODE_OF_CONDUCT copy failed, continuing..."
yes | cp -rf .github/CONTRIBUTING docs/development/contributing.md || echo "CONTRIBUTING 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
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
ls docs/
- name: Copy Apps readme to website
- name: Copy stable Apps readme to website
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)
chartname=$(basename ${chart})
echo "Processing: ${chart} - folder: ${maxfolderversion}"
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..."
cp ${chart}/${maxfolderversion}/LICENSE docs/apps/${chartname}/LICENSE.md || echo "license copy failed, 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..."
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..."
fi
done
+1
View File
@@ -1,5 +1,6 @@
name: "Docs: Deploy"
on:
workflow_dispatch:
push:
branches:
- master
+5
View File
@@ -9,3 +9,8 @@ repos:
- id: mixed-line-ending
- id: check-merge-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
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
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
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
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"
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}"
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 }')
@@ -31,17 +29,73 @@ for chart in charts/*; do
# 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="${repository}/.helmdocsignore" \
--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="${repository}/.helmdocsignore" \
--ignore-file=".helmdocsignore" \
--output-file="CONFIG.md" \
--template-files="${chart}/${maxfolderversion}/CONFIG.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
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" \
--template-files="${repository}/.tools/templates/chart/app-readme.md.gotmpl" \
--chart-search-root="${chart}/${maxfolderversion}"
+3 -6
View File
@@ -7,20 +7,17 @@ appVersion: 1.0.0
description: ${CHARTNAME} App for TrueNAS SCALE
type: application
deprecated: false
home: https://github.com/truecharts/charts/tree/master/charts/${CHARTNAME}
icon: https://raw.githubusercontent.com/truecharts/charts/master/charts/${CHARTNAME}/icon.png?raw=true
home: https://github.com/truecharts/apps/tree/master/charts/${CHARTNAME}
icon: https://raw.githubusercontent.com/truecharts/apps/master/charts/${CHARTNAME}/icon.png?raw=true
keywords:
- ${CHARTNAME}
sources:
- https://github.com/truecharts/charts/tree/master/charts/${CHARTNAME}
- https://github.com/truecharts/apps/tree/master/charts/${CHARTNAME}
dependencies:
- name: common
repository: https://charts.truecharts.com/
version: 1.3.0
# condition:
# tags:
# import-values:
# alias:
maintainers:
- name: TrueCharts
email: info@truecharts.org
+1 -1
View File
@@ -19,7 +19,7 @@ Kubernetes: `>=1.16.0-0`
| Repository | Name | Version |
|------------|------|---------|
| https://k8s-at-home.com/charts/ | common | 3.0.1 |
| https://truecharts.org/ | common | 3.0.1 |
## TL;DR
+9 -4
View File
@@ -7,7 +7,7 @@ TrueCharts
{{- end -}}
{{- define "custom.repository.url" -}}
https://github.com/truecharts/charts
https://github.com/truecharts/apps
{{- end -}}
{{- define "custom.helm.url" -}}
@@ -20,7 +20,7 @@ https://charts.truecharts.org
{{- 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.
**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 -}}
{{- define "custom.requirements" -}}
@@ -68,8 +68,12 @@ The command removes all the Kubernetes components associated with the chart **in
## 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)
- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
- Ask a [question](https://github.com/truecharts/apps/discussions)
{{- end -}}
{{- define "custom.copyright" -}}
All Rights Reserved - The TrueCharts Project
{{- end -}}
{{ template "custom.introheader" . }}
@@ -93,3 +97,4 @@ The command removes all the Kubernetes components associated with the chart **in
{{ template "custom.support" . }}
{{ template "helm-docs.versionFooter" . }}
{{ template "custom.copyright" . }}
@@ -1,4 +1,5 @@
{{- define "custom.notes" -}}
This App is supplied by TrueCharts, for more information please visit https://truecharts.org
{{- end -}}
{{ template "chart.description" . }}
{{ 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
maxfolderversion=$(ls -l ${chart} | grep ^d | awk '{print $9}' | tail -n 1)
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