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:
co-authored by
Troy Prelog
parent
c9a3f01580
commit
56211222bf
@@ -1 +1 @@
|
||||
0.9.2
|
||||
0.9.3
|
||||
|
||||
@@ -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>'
|
||||
@@ -0,0 +1 @@
|
||||
focal-20210217
|
||||
@@ -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"
|
||||
@@ -0,0 +1 @@
|
||||
linux/amd64
|
||||
@@ -0,0 +1 @@
|
||||
4.5.4.0
|
||||
Executable
+19
@@ -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
|
||||
@@ -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>'
|
||||
Executable
+6
@@ -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 @@
|
||||
0.17.728
|
||||
0.17.790
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
---
|
||||
process:
|
||||
jackett:
|
||||
running: true
|
||||
|
||||
@@ -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 @@
|
||||
0.8.0.2086
|
||||
0.8.0.2096
|
||||
|
||||
@@ -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,3 +1,4 @@
|
||||
---
|
||||
process:
|
||||
Lidarr:
|
||||
running: true
|
||||
|
||||
@@ -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 @@
|
||||
3.13.1
|
||||
3.13.2
|
||||
|
||||
@@ -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 @@
|
||||
4.0.1222
|
||||
4.0.1275
|
||||
|
||||
@@ -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 @@
|
||||
1.22.0.4163-d8c4875dd
|
||||
1.22.1.4228-724c56e62
|
||||
|
||||
@@ -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 @@
|
||||
4.3.3
|
||||
4.3.4.1
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 \
|
||||
|
||||
@@ -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,3 +1,4 @@
|
||||
---
|
||||
process:
|
||||
Radarr:
|
||||
running: true
|
||||
|
||||
@@ -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 @@
|
||||
0.1.0.536
|
||||
0.1.0.545
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
---
|
||||
process:
|
||||
Readarr:
|
||||
running: true
|
||||
|
||||
port:
|
||||
tcp6:8787:
|
||||
listening: true
|
||||
|
||||
http:
|
||||
http://localhost:8787:
|
||||
status: 200
|
||||
body:
|
||||
- '<title>Readarr</title>'
|
||||
@@ -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}
|
||||
|
||||
@@ -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>'
|
||||
@@ -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
|
||||
@@ -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 @@
|
||||
3.0.5.1143
|
||||
3.0.5.1144
|
||||
|
||||
@@ -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,3 +1,4 @@
|
||||
---
|
||||
process:
|
||||
mono:
|
||||
running: true
|
||||
|
||||
@@ -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 @@
|
||||
2.6.8
|
||||
2.6.10
|
||||
|
||||
@@ -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>'
|
||||
@@ -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 @@
|
||||
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}"
|
||||
@@ -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 @@
|
||||
focal-20210217
|
||||
focal-20210325
|
||||
|
||||
@@ -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
@@ -1,7 +1,7 @@
|
||||
# About TrueCharts<br>
|
||||
**Community App Catalog for TrueNAS SCALE**
|
||||
|
||||
[](https://github.com/truecharts/truecharts/commits) [](https://github.com/truecharts/charts/actions/workflows/charts-release.yaml) [](https://github.com/pre-commit/pre-commit) [](https://app.fossa.com/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts?ref=badge_shield) [](https://github.com/truecharts/truecharts/blob/master/docs/LICENSE.BSD3)
|
||||
[](https://github.com/truecharts/apps/commits) [](https://github.com/truecharts/apps/actions/workflows/charts-release.yaml) [](https://github.com/pre-commit/pre-commit) [](https://app.fossa.com/projects/git%2Bgithub.com%2Ftruecharts%2Ftruecharts?ref=badge_shield) [](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
|
||||
|
||||
@@ -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()
|
||||
@@ -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,3 +1,4 @@
|
||||
remote: origin
|
||||
target-branch: master
|
||||
helm-extra-args: --timeout 600s
|
||||
chart-yaml-schema: .github/chart_schema.yaml
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,5 +1,6 @@
|
||||
name: "Docs: Deploy"
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
|
||||
@@ -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
@@ -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
@@ -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
@@ -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}"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
@@ -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.
Binary file not shown.
@@ -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:
|
||||
@@ -1,55 +0,0 @@
|
||||
# Introduction
|
||||
|
||||
  
|
||||
|
||||
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)
|
||||
@@ -1,2 +0,0 @@
|
||||
Deluge is a torrent download client
|
||||
|
||||
Binary file not shown.
@@ -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
|
||||
##
|
||||
@@ -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"
|
||||
@@ -1,3 +0,0 @@
|
||||
categories:
|
||||
- media
|
||||
icon_url: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200
|
||||
@@ -1,2 +0,0 @@
|
||||
Emby Server is a home media server
|
||||
|
||||
Binary file not shown.
@@ -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.
@@ -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.
@@ -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: ""
|
||||
@@ -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
|
||||
@@ -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.
@@ -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: ""
|
||||
@@ -1,2 +0,0 @@
|
||||
API Support for your favorite torrent trackers.
|
||||
|
||||
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
categories:
|
||||
- media
|
||||
icon_url: https://raw.githubusercontent.com/truecharts/truecharts/master/charts/jackett/icon.png?raw=true
|
||||
@@ -1,2 +0,0 @@
|
||||
Jellyfin is a Free Software Media System
|
||||
|
||||
Binary file not shown.
@@ -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
Reference in New Issue
Block a user