From 75bed9a8968846129ca0f3d6c2249c8980140d20 Mon Sep 17 00:00:00 2001 From: "Lockszmith (@kateryna)" Date: Thu, 16 Jan 2025 10:58:15 -0500 Subject: [PATCH 1/2] split runtipictl into direct/jail implementations --- _bin/rtpctl.d | 145 ++++++++++++++++++++++++++++++++++ _bin/{runtipictl => rtpctl.j} | 21 +++-- 2 files changed, 160 insertions(+), 6 deletions(-) create mode 100755 _bin/rtpctl.d rename _bin/{runtipictl => rtpctl.j} (86%) diff --git a/_bin/rtpctl.d b/_bin/rtpctl.d new file mode 100755 index 0000000..cec20cc --- /dev/null +++ b/_bin/rtpctl.d @@ -0,0 +1,145 @@ +#! /usr/bin/env bash + +RPH_UID=${RPH_UID:-${UID}} + +rph-docker-exec () { + docker exec $1 runtipi-host "${@:2}" +} + +rph-shell() { + if rph-docker-exec "" true; then + rph-docker-exec "-it --user ${RPH_UID}" bash + fi +} + +rph-exec () { + local set_x=" set -x; pwd; id; " + [ -z "$QUIET" ] || set_x="" + local cli="cd ${START_DIR:-/srv/runtipi};${set_x} ${1:?Must supply command} " + if [ -n "$ROOT_EXEC" ]; then + cli="$cli ${*:2}" + else + cli="$cli "${2:+"$( + printf '\"%s\" ' "${@:2}" + )"} + fi + + if rph exec runtipi true; then + if [ -n "$ROOT_EXEC" ]; then + rph exec runtipi /bin/bash <<<"$cli" + else + rph shell --uid "${RPH_UID}" runtipi /bin/bash -c "$cli" + fi + else + echo "ERROR: ${_ERROR_MGS:-"Please check if runtipi jail has started! Have you tried 'full-start'?"}" >&2 + exit -1 + fi +} + +runtipi-cli() { + rph-exec ./runtipi-cli "${@}" +} + +runtipi-app-docker-compose() { + local APP="${1:-Must supply app name}" + local LOCAL_YML="user-config/${APP}/docker-compose.yml" + + rph exec runtipi test -e "/srv/runtipi/${LOCAL_YML}" || LOCAL_YML="" + [ -z "$LOCAL_YML" ] || LOCAL_YML="--file ${LOCAL_YML}" + + rph-exec docker compose \ + --env-file user-config/.env.local \ + --env-file app-data/${APP}/app.env \ + --env-file user-config/${APP}/app.env \ + --project-name ${APP} \ + --file apps/${APP}/docker-compose.yml \ + --file repos/29ca930bfdaffa1dfabf5726336380ede7066bc53297e3c0c868b27c97282903/apps/docker-compose.common.yml \ + ${LOCAL_YML} ${@:2} +} + +dls() { + # Default docker ps format is: + # rph-exec docker ps --format "table {{ .ID }}\t{{ .Image }}\t{{ .Command }}\t{{ .Created }}\t{{ .Status }}\t{{ .Ports }}\t{{ .Names }}" + + local base='{{.Status}}\t{{.ID}}\t{{.Names}}\t{{.Image}}' #'\t{{.Networks}}\t{{.Ports}}\t{{.Mounts}}' + local compose='{{.Label "com.docker.compose.project"}}\t{{.Label "com.docker.compose.service"}}' + local format="table $compose\t$base" + ROOT_EXEC=1 QUIET=${QUIET:-0} rph-exec \ + docker "container ls --all --format '$format' | ( sed -u '1s/.*/\U&/; q'; sed -Ee 's|^|555|; s|^555runtipi|000runtipi|;' | sort | sed -Ee 's/^[[:digit:]]{3}//' )" +} + +case "${1}" in + cli) + runtipi-cli "${@:2}" + ;; + log) + rph-exec "POSTGRES_PASSWORD=_ TIPI_VERSION=_ LOCAL_DOMAIN=_ DOMAIN=_" docker compose --env-file user-config/.env.local logs --tail=${TAIL:-40} "${2:-runtipi}" ${3:+"${@:3}"} + ;; + start) + runtipi-cli start --env-file user-config/.env.local --no-permissions + ;; + update) + runtipi-cli update --env-file user-config/.env.local --no-permissions "${2:?Must supply version}" "${@:3}" + ;; + full-start) + if ! rph exec runtipi true; then + rph start runtipi + sleep 1s + fi + _ERROR_MSG="ERROR: failed to invoke a command inside the runtipi jail and can't start the jail." \ + runtipi-cli start --env-file user-config/.env.local --no-permissions + ;; + shell) + rph-shell + ;; + exec) + rph-exec "${@:2}" + ;; + docker) + rph-exec docker "${@:2}" + ;; + dls) + dls "${@:2}" + ;; + dcoapp) + runtipi-app-docker-compose "${@:2}" + ;; + dockge) + START_DIR=/srv/dockge/stacks/${2:?Must supply stack name} rph-exec docker compose "${@:3}" + ;; + setup) + ln -s $2 "$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" "$HOME/.local/bin/" + ;; + *) + printf '%s %-12s %s\n' \ + "" "" ""\ + "Usage:" "" ""\ + " $(basename "$0") [args...]" "" ""\ + "" "" "" \ + "Available commands:" "" ""\ + "" "" "" \ + "runtipi" "" ""\ + "" "cli" "runtipi-cli" \ + "" "full-start" "start runtipi jail, following with starting runtipi" \ + "" "log" "runtipi docker stack logs" \ + "" "start" "start runtipi" \ + "" "update" "update runtipi to a specific version" \ + "" "" "" \ + "docker/docker-compose" "" ""\ + "" "dcoapp" "docker compose for runtipi apps" \ + "" "dls" "stylized docker ls" \ + "" "docker" "docker" \ + "" "dockge" "docker compose for dockge stacks" \ + "" "" "" \ + "misc." "" ""\ + "" "exec" "execute within the shell, START_DIR env applies" \ + "" "shell" "enter an insteractive shell" \ + "" "" "" \ + "" "setup" "setup runtipictl in user's .local/bin dir" \ + "" "" "" \ + "Related env. vars:" "" "" \ + "" "VISUAL EDITOR RPH_UID QUIET START_DIR ROOT_EXEC" "" + + ;; +esac + diff --git a/_bin/runtipictl b/_bin/rtpctl.j similarity index 86% rename from _bin/runtipictl rename to _bin/rtpctl.j index f760ca2..0afccb4 100755 --- a/_bin/runtipictl +++ b/_bin/rtpctl.j @@ -4,11 +4,14 @@ jlmkr () { sudo VISUAL="${VISUAL:-}" EDITOR="${EDITOR:-}" $SCALE_POOL_ROOT/jailmaker/jlmkr.py "${@:---help}" } -JAIL_UID=${JAIL_UID:-${UID}} +RPH_UID=${RPH_UID:-${UID}} +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +BASE_NAME="$(basename "$0")" +BASE_BASE_NAME="${BASE_NAME%.*}" jlmkr-shell() { if jlmkr exec runtipi true; then - jlmkr shell --uid "${JAIL_UID}" runtipi + jlmkr shell --uid "${RPH_UID}" runtipi fi } @@ -28,7 +31,7 @@ jlmkr-exec () { if [ -n "$ROOT_EXEC" ]; then jlmkr exec runtipi /bin/bash <<<"$cli" else - jlmkr shell --uid "${JAIL_UID}" runtipi /bin/bash -c "$cli" + jlmkr shell --uid "${RPH_UID}" runtipi /bin/bash -c "$cli" fi else echo "ERROR: ${_ERROR_MGS:-"Please check if runtipi jail has started! Have you tried 'full-start'?"}" >&2 @@ -108,13 +111,16 @@ case "${1}" in START_DIR=/srv/dockge/stacks/${2:?Must supply stack name} jlmkr-exec docker compose "${@:3}" ;; setup) - ln -s $2 "$(cd "$(dirname "$0")" && pwd)/$(basename "$0")" "$HOME/.local/bin/" + ln -s $2 "$(cd "${SCRIPT_DIR}" && pwd)/${BASE_NAME}" "${3:-$HOME/.local/bin/}" + ;; + edit) + ${VISUAL:-${EDITOR:-vi}} $0 ;; *) printf '%s %-12s %s\n' \ "" "" ""\ "Usage:" "" ""\ - " $(basename "$0") [args...]" "" ""\ + " ${BASE_NAME} [args...]" "" ""\ "" "" "" \ "Available commands:" "" ""\ "" "" "" \ @@ -136,9 +142,12 @@ case "${1}" in "" "shell" "enter an insteractive shell" \ "" "" "" \ "" "setup" "setup runtipictl in user's .local/bin dir" \ + "" "" "${BASE_NAME} setup" \ + "" "" "${BASE_NAME} setup '' ~/.local/bin/${BASE_BASE_NAME}" \ + "" "" "${BASE_NAME} setup '' ~/.local/bin/runtipictl" \ "" "" "" \ "Related env. vars:" "" "" \ - "" "VISUAL EDITOR JAIL_UID QUIET START_DIR ROOT_EXEC" "" + "" "VISUAL EDITOR RPH_UID QUIET START_DIR ROOT_EXEC" "" ;; esac From 757fc144761cb0bd472d43f3dc41a347a392bf05 Mon Sep 17 00:00:00 2001 From: "Lockszmith (@kateryna)" Date: Thu, 16 Jan 2025 11:01:45 -0500 Subject: [PATCH 2/2] _traefik templates --- _template/docker-compose.yml | 4 +++- _traefik/static.yml | 12 ++++++++++++ authentik/docker-compose.yml | 2 ++ dockge/docker-compose.yml | 16 ++++++++++------ dozzle/docker-compose.yml | 34 ++++++++++++++++++++++++++++++++++ homepage/docker-compose.yml | 25 +++++++++++++++++++++++++ overseerr/docker-compose.yml | 19 +++++++++++++++++++ prowlarr/docker-compose.yml | 27 +++++++++++++++++++++++++++ radarr/docker-compose.yml | 29 +++++++++++++++++++++++++++++ sabnzbd/docker-compose.yml | 29 +++++++++++++++++++++++++++++ sonarr/docker-compose.yml | 29 +++++++++++++++++++++++++++++ syncthing/docker-compose.yml | 24 ++++++++++++++++++++++++ tautulli/docker-compose.yml | 20 ++++++++++++++++++++ vaultwarden/docker-compose.yml | 6 +----- 14 files changed, 264 insertions(+), 12 deletions(-) create mode 100644 dozzle/docker-compose.yml create mode 100644 homepage/docker-compose.yml create mode 100644 overseerr/docker-compose.yml create mode 100644 prowlarr/docker-compose.yml create mode 100644 radarr/docker-compose.yml create mode 100644 sabnzbd/docker-compose.yml create mode 100644 sonarr/docker-compose.yml create mode 100644 syncthing/docker-compose.yml create mode 100644 tautulli/docker-compose.yml diff --git a/_template/docker-compose.yml b/_template/docker-compose.yml index f23c037..cee7988 100644 --- a/_template/docker-compose.yml +++ b/_template/docker-compose.yml @@ -23,10 +23,12 @@ services: # - "container:vols-plex" labels: # Websecure - traefik.http.routers..middlewares: authentik_sysmgr@file + # traefik.http.routers..middlewares: authentik_sysmgr@file + traefik.http.routers..middlewares: lan-only@file # traefik.http.routers.-more.rule: Host(`.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} # traefik.http.routers.-more.entrypoints: websecure # traefik.http.routers.-more.service: # traefik.http.routers.-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.-more.middlewares: lan-only@file # traefik.http.routers.-more.tls: true # traefik.http.routers.-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/_traefik/static.yml b/_traefik/static.yml index f7ead6f..283ebb9 100644 --- a/_traefik/static.yml +++ b/_traefik/static.yml @@ -15,6 +15,18 @@ watch: true entryPoints: + plex: + address: ':32400' + forwardedHeaders: + trustedIPs: + - "127.0.0.1/32" + - "172.16.0.0/12" + http: + redirections: + entryPoint: + to: 'websecure' + scheme: 'https' + web: address: ':80' forwardedHeaders: diff --git a/authentik/docker-compose.yml b/authentik/docker-compose.yml index 20ca084..6f29918 100644 --- a/authentik/docker-compose.yml +++ b/authentik/docker-compose.yml @@ -4,3 +4,5 @@ services: - type: bind source: ${ROOT_FOLDER_HOST}/user-config/${APP_ID}/media target: /media + labels: + traefik.http.routers.authentik.rule: Host(`auth.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} diff --git a/dockge/docker-compose.yml b/dockge/docker-compose.yml index bf603df..f47787c 100644 --- a/dockge/docker-compose.yml +++ b/dockge/docker-compose.yml @@ -16,13 +16,17 @@ services: RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" RUNTIPI_DOMAIN: "${DOMAIN}" RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + SZ_USER_UID: "${SZ_USER_UID}" + SZ_USER_GID: "${SZ_USER_GID}" PUID: "${SZ_USER_UID}" PGID: "${SZ_USER_GID}" + TZ: "${TZ:?Did you forget to define TZ in the root RunTipi .env.local?}" labels: - traefik.enable: true - # traefik.http.services.dockge.loadbalancer.server.port: 5001 - traefik.http.routers.dockge.entrypoints: websecure - traefik.http.routers.dockge.rule: Host(`dockge.${ROOT_DOMAIN}`) - traefik.http.routers.dockge.service: dockge + traefik.http.routers.dockge.rule: Host(`dockge.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} traefik.http.routers.dockge.middlewares: authentik_sysmgr@file - traefik.http.routers.dockge.tls.certresolver: myresolver + + # traefik.enable: true + # # traefik.http.services.dockge.loadbalancer.server.port: 5001 + # traefik.http.routers.dockge.entrypoints: websecure + # traefik.http.routers.dockge.service: dockge + # traefik.http.routers.dockge.tls.certresolver: myresolver diff --git a/dozzle/docker-compose.yml b/dozzle/docker-compose.yml new file mode 100644 index 0000000..00b20f9 --- /dev/null +++ b/dozzle/docker-compose.yml @@ -0,0 +1,34 @@ +services: + dozzle: + hostname: dozzle.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + # volumes_from: + # - "container:vols-dl" + # - "container:vols-personal-media" + # - "container:vols-shared-media" + # - "container:vols-media" + # - "container:vols-arr" + # - "container:vols-plex" + labels: + # Websecure + traefik.http.routers.dozzle.middlewares: authentik_sysmgr@file + # traefik.http.routers.dozzle.middlewares: lan-only@file + # traefik.http.routers.dozzle-more.rule: Host(`dozzle.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # traefik.http.routers.dozzle-more.entrypoints: websecure + # traefik.http.routers.dozzle-more.service: dozzle + # traefik.http.routers.dozzle-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.dozzle-more.middlewares: lan-only@file + # traefik.http.routers.dozzle-more.tls: true + # traefik.http.routers.dozzle-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/homepage/docker-compose.yml b/homepage/docker-compose.yml new file mode 100644 index 0000000..d5f972f --- /dev/null +++ b/homepage/docker-compose.yml @@ -0,0 +1,25 @@ +services: + homepage: + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + + labels: + # Websecure + traefik.http.routers.homepage.middlewares: authentik_sysmgr@file + traefik.http.routers.homepage.rule: Host(`www.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # #traefik.http.routers.homepage-more.rule: Host(`www.${LEGACY_ROOT_DOMAIN}`) + # traefik.http.routers.homepage-more.entrypoints: websecure + # traefik.http.routers.homepage-more.service: homepage + # traefik.http.routers.homepage-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.homepage-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/overseerr/docker-compose.yml b/overseerr/docker-compose.yml new file mode 100644 index 0000000..3e41133 --- /dev/null +++ b/overseerr/docker-compose.yml @@ -0,0 +1,19 @@ +services: + overseerr: + hostname: overseerr.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + labels: + # Websecure + traefik.http.routers.overseerr.rule: Host(`req.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} \ No newline at end of file diff --git a/prowlarr/docker-compose.yml b/prowlarr/docker-compose.yml new file mode 100644 index 0000000..33751b9 --- /dev/null +++ b/prowlarr/docker-compose.yml @@ -0,0 +1,27 @@ +services: + prowlarr: + hostname: prowlarr.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + labels: + # Websecure + traefik.http.routers.prowlarr.middlewares: authentik_sysmgr@file + # traefik.http.routers.prowlarr.middlewares: lan-only@file + traefik.http.routers.prowlarr.rule: Host(`prowlarr.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # traefik.http.routers.prowlarr-more.entrypoints: websecure + # traefik.http.routers.prowlarr-more.service: prowlarr + # traefik.http.routers.prowlarr-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.prowlarr-more.middlewares: lan-only@file + # traefik.http.routers.prowlarr-more.tls: true + # traefik.http.routers.prowlarr-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/radarr/docker-compose.yml b/radarr/docker-compose.yml new file mode 100644 index 0000000..5d30fae --- /dev/null +++ b/radarr/docker-compose.yml @@ -0,0 +1,29 @@ +services: + radarr: + hostname: radarr.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + volumes_from: + - "container:vols-arr" + labels: + # Websecure + traefik.http.routers.radarr.middlewares: authentik_sysmgr@file + # traefik.http.routers.radarr.middlewares: lan-only@file + # traefik.http.routers.radarr-more.rule: Host(`radarr.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # traefik.http.routers.radarr-more.entrypoints: websecure + # traefik.http.routers.radarr-more.service: radarr + # traefik.http.routers.radarr-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.radarr-more.middlewares: lan-only@file + # traefik.http.routers.radarr-more.tls: true + # traefik.http.routers.radarr-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/sabnzbd/docker-compose.yml b/sabnzbd/docker-compose.yml new file mode 100644 index 0000000..69a368f --- /dev/null +++ b/sabnzbd/docker-compose.yml @@ -0,0 +1,29 @@ +services: + sabnzbd: + hostname: nzb.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + volumes_from: + - "container:vols-dl" + labels: + # Websecure + traefik.http.routers.sabnzbd.middlewares: authentik_sysmgr@file + # traefik.http.routers.sabnzbd.middlewares: lan-only@file + traefik.http.routers.sabnzbd.rule: Host(`nzb.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # traefik.http.routers.sabnzbd-more.entrypoints: websecure + # traefik.http.routers.sabnzbd-more.service: sabnzbd + # traefik.http.routers.sabnzbd-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.sabnzbd-more.middlewares: lan-only@file + # traefik.http.routers.sabnzbd-more.tls: true + # traefik.http.routers.sabnzbd-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/sonarr/docker-compose.yml b/sonarr/docker-compose.yml new file mode 100644 index 0000000..9008002 --- /dev/null +++ b/sonarr/docker-compose.yml @@ -0,0 +1,29 @@ +services: + sonarr: + hostname: sonarr.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + volumes_from: + - "container:vols-arr" + labels: + # Websecure + traefik.http.routers.sonarr.middlewares: authentik_sysmgr@file + # traefik.http.routers.sonarr.middlewares: lan-only@file + traefik.http.routers.sonarr-more.rule: Host(`sonarr.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} + # traefik.http.routers.sonarr-more.entrypoints: websecure + # traefik.http.routers.sonarr-more.service: sonarr + # traefik.http.routers.sonarr-more.middlewares: authentik_sysmgr@file + # traefik.http.routers.sonarr-more.middlewares: lan-only@file + # traefik.http.routers.sonarr-more.tls: true + # traefik.http.routers.sonarr-more.tls.certresolver: myresolver \ No newline at end of file diff --git a/syncthing/docker-compose.yml b/syncthing/docker-compose.yml new file mode 100644 index 0000000..edac563 --- /dev/null +++ b/syncthing/docker-compose.yml @@ -0,0 +1,24 @@ +services: + syncthing: + hostname: syncthing.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + volumes_from: + - "container:vols-all" + volumes: + - "/mnt/szmedia/sync.root:/mnt/szmedia/sync.root" + labels: + # Websecure + traefik.http.routers.syncthing.middlewares: authentik_sysmgr@file + traefik.http.routers.syncthing.rule: Host(`sync.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} \ No newline at end of file diff --git a/tautulli/docker-compose.yml b/tautulli/docker-compose.yml new file mode 100644 index 0000000..1ae9968 --- /dev/null +++ b/tautulli/docker-compose.yml @@ -0,0 +1,20 @@ +services: + tautulli: + hostname: tautulli.docker + environment: + PUID: "${SZ_USER_UID}" + PGID: "${SZ_USER_GID}" + # RUNTIPI Environment + RUNTIPI_APP_PORT: "${APP_PORT}" + RUNTIPI_APP_ID: "${APP_ID}" + RUNTIPI_APP_DATA_DIR: "${APP_DATA_DIR}" + RUNTIPI_APP_EXPOSED: "${APP_EXPOSED:-}" + RUNTIPI_APP_DOMAIN: "${APP_DOMAIN}" + RUNTIPI_APP_HOST: "${APP_HOST}" + RUNTIPI_LOCAL_DOMAIN: "${LOCAL_DOMAIN}" + RUNTIPI_DOMAIN: "${DOMAIN}" + RUNTIPI_ROOT_DOMAIN: "${ROOT_DOMAIN}" + labels: + # Websecure + traefik.http.routers.tautulli.middlewares: authentik_sysmgr@file + # traefik.http.routers.tautulli-more.rule: Host(`tautulli.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} diff --git a/vaultwarden/docker-compose.yml b/vaultwarden/docker-compose.yml index bc9f13c..73496ef 100644 --- a/vaultwarden/docker-compose.yml +++ b/vaultwarden/docker-compose.yml @@ -17,11 +17,7 @@ services: - /srv/vaultwarden/data:/data labels: # Websecure - traefik.http.routers.vaultwarden.rule: Host(`www.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} - # traefik.http.routers.vaultwarden-more.entrypoints: websecure - # traefik.http.routers.vaultwarden-more.service: vaultwarden - # traefik.http.routers.vaultwarden-more.tls: true - # traefik.http.routers.vaultwarden-more.tls.certresolver: myresolver + traefik.http.routers.vaultwarden.rule: Host(`vault.${ROOT_DOMAIN}`)${APP_ROUTE_OPTIONAL:-} networks: vaultwarden_pg_dockge: external: true