From e2aa5fe6278342263089f6b96c33f720e7c6a92e Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:10:40 +0100 Subject: [PATCH 001/286] Bookstack: Fix Update function composer (#700) * Changed Update function to fix a fail * Changed back --- ct/bookstack.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ct/bookstack.sh b/ct/bookstack.sh index 0d52f3900d8..09e623a77e2 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -70,9 +70,10 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v unzip -q v${RELEASE}.zip mv BookStack-${RELEASE} /opt/bookstack mv /opt/.env /opt/bookstack/.env + cd /opt/bookstack COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null - php artisan key:generate &>/dev/null - php artisan migrate &>/dev/null + php artisan key:generate --force &>/dev/null + php artisan migrate --force &>/dev/null echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP}" From c46f15cdc102de4cf06e35f3116b05fc2364a6a6 Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:12:35 -0500 Subject: [PATCH 002/286] fix: note component in json-editor getting out of focus when typing and revert theme switch animation (#706) * fix: note component in json-editor getting out of focus when typing. fixes JSON-Generator Notes Field #687 * revert: theme transition --- .../src/app/json-editor/_components/Note.tsx | 95 +++++++++++-------- frontend/src/styles/globals.css | 54 ----------- 2 files changed, 54 insertions(+), 95 deletions(-) diff --git a/frontend/src/app/json-editor/_components/Note.tsx b/frontend/src/app/json-editor/_components/Note.tsx index 08d9b80bc85..3242b5141c5 100644 --- a/frontend/src/app/json-editor/_components/Note.tsx +++ b/frontend/src/app/json-editor/_components/Note.tsx @@ -12,7 +12,7 @@ import { cn } from "@/lib/utils"; import { PlusCircle, Trash2 } from "lucide-react"; import { z } from "zod"; import { ScriptSchema, type Script } from "../_schemas/schemas"; -import { memo, useCallback } from "react"; +import { memo, useCallback, useRef } from "react"; type NoteProps = { script: Script; @@ -27,6 +27,8 @@ function Note({ setIsValid, setZodErrors, }: NoteProps) { + const inputRefs = useRef<(HTMLInputElement | null)[]>([]); + const addNote = useCallback(() => { setScript({ ...script, @@ -49,6 +51,12 @@ function Note({ setIsValid(result.success); setZodErrors(result.success ? null : result.error); setScript(updated); + // Restore focus after state update + if (key === "text") { + setTimeout(() => { + inputRefs.current[index]?.focus(); + }, 0); + } }, [script, setScript, setIsValid, setZodErrors]); const removeNote = useCallback((index: number) => { @@ -58,46 +66,51 @@ function Note({ }); }, [script, setScript]); - const NoteItem = memo(({ note, index }: { note: Script["notes"][number], index: number }) => ( -
- updateNote(index, "text", e.target.value)} - /> - - -
- )); + const NoteItem = memo( + ({ note, index }: { note: Script["notes"][number]; index: number }) => ( +
+ updateNote(index, "text", e.target.value)} + ref={(el) => { + inputRefs.current[index] = el; + }} + /> + + +
+ ), + ); NoteItem.displayName = 'NoteItem'; diff --git a/frontend/src/styles/globals.css b/frontend/src/styles/globals.css index cf20db2e585..d9b89193271 100644 --- a/frontend/src/styles/globals.css +++ b/frontend/src/styles/globals.css @@ -30,24 +30,6 @@ --chart-3: 197 37% 24%; --chart-4: 43 74% 66%; --chart-5: 27 87% 67%; - --expo-out: linear( - 0 0%, - 0.1684 2.66%, - 0.3165 5.49%, - 0.446 8.52%, - 0.5581 11.78%, - 0.6535 15.29%, - 0.7341 19.11%, - 0.8011 23.3%, - 0.8557 27.93%, - 0.8962 32.68%, - 0.9283 38.01%, - 0.9529 44.08%, - 0.9711 51.14%, - 0.9833 59.06%, - 0.9915 68.74%, - 1 100% - ); } ::selection { @@ -81,42 +63,6 @@ --chart-4: 280 65% 60%; --chart-5: 340 75% 55%; } - - ::view-transition-group(root) { - animation-duration: 0.7bun s; - animation-timing-function: var(--expo-out); - } - - ::view-transition-new(root) { - animation-name: reveal-light; - } - - ::view-transition-old(root), - .dark::view-transition-old(root) { - animation: none; - z-index: -1; - } - .dark::view-transition-new(root) { - animation-name: reveal-dark; - } - - @keyframes reveal-dark { - from { - clip-path: polygon(50% -71%, -50% 71%, -50% 71%, 50% -71%); - } - to { - clip-path: polygon(50% -71%, -50% 71%, 50% 171%, 171% 50%); - } - } - - @keyframes reveal-light { - from { - clip-path: polygon(171% 50%, 50% 171%, 50% 171%, 171% 50%); - } - to { - clip-path: polygon(171% 50%, 50% 171%, -50% 71%, 50% -71%); - } - } } @layer base { From 3d38ad0288c61a328bf4730706f2d3ea19ab2fb6 Mon Sep 17 00:00:00 2001 From: Dysfunctional Programming <157329672+DysfunctionalProgramming@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:19:36 -0500 Subject: [PATCH 003/286] Fix bugs in Komga update (#717) * Fix update script * Update some bad update urls --- ct/komga.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/komga.sh b/ct/komga.sh index 225316ed37d..d47320a8bb2 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -56,7 +56,7 @@ function update_script() { header_info check_container_storage check_container_resources -if [[ ! -f /opt/komga/komga*.jar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi +if [[ ! -f /opt/komga/komga.jar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi msg_info "Updating ${APP}" RELEASE=$(curl -s https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then @@ -65,8 +65,8 @@ if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_v msg_ok "Stopped ${APP}" msg_info "Updating ${APP} to ${RELEASE}" - rm -rf /opt/komga/komga*.jar - wget -q "https://github.com/gotson/komga/releases/download/v${RELEASE}/komga-${RELEASE}.jar" + wget -q "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" + rm -rf /opt/komga/komga.jar mv -f komga-${RELEASE}.jar /opt/komga/komga.jar echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated ${APP} to ${RELEASE}" From 944328625a3b5c00b6f97c0c19e56ed172bee8ef Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 21:23:10 +0100 Subject: [PATCH 004/286] Update CHANGELOG.md (#718) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9621dc8fe01..107fdc36f6e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-06 + +### Changed + +### 🚀 Updated Scripts + +- Fix bugs in Komga update [@DysfunctionalProgramming](https://github.com/DysfunctionalProgramming) ([#717](https://github.com/community-scripts/ProxmoxVE/pull/717)) +- Bookstack: Fix Update function composer [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#700](https://github.com/community-scripts/ProxmoxVE/pull/700)) + +### 🌐 Website + +- fix: note component in json-editor getting out of focus when typing and revert theme switch animation [@BramSuurdje](https://github.com/BramSuurdje) ([#706](https://github.com/community-scripts/ProxmoxVE/pull/706)) + ## 2024-12-05 ### Changed From 259203ee51b33866d54ca823ba6faef4e87ea514 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:05:19 +0100 Subject: [PATCH 005/286] Update frontend CI/CD workflow (#703) --- .github/workflows/deploy-pages.yml | 79 ----------------------------- .github/workflows/frontend-cicd.yml | 78 ++++++++++++++++++++++++++++ json/onedev.json | 2 +- 3 files changed, 79 insertions(+), 80 deletions(-) delete mode 100644 .github/workflows/deploy-pages.yml create mode 100644 .github/workflows/frontend-cicd.yml diff --git a/.github/workflows/deploy-pages.yml b/.github/workflows/deploy-pages.yml deleted file mode 100644 index 435c5c8016c..00000000000 --- a/.github/workflows/deploy-pages.yml +++ /dev/null @@ -1,79 +0,0 @@ -# Sample workflow for building and deploying a Next.js site to GitHub Pages -# -# To get started with Next.js see: https://nextjs.org/docs/getting-started -# -name: Deploy Next.js site to Pages - -on: - push: - branches: ["main"] - paths: - - frontend/** - - json/** - - workflow_dispatch: - -permissions: - contents: read - pages: write - id-token: write - -concurrency: - group: "pages" - cancel-in-progress: false - -jobs: - build: - runs-on: ubuntu-latest - defaults: - run: - working-directory: frontend # Set default working directory for all run steps - steps: - - name: Checkout - uses: actions/checkout@v4 - - name: Detect package manager - id: detect-package-manager - run: | - if [ -f "${{ github.workspace }}/frontend/yarn.lock" ]; then - echo "manager=yarn" >> $GITHUB_OUTPUT - echo "command=install" >> $GITHUB_OUTPUT - echo "runner=yarn" >> $GITHUB_OUTPUT - exit 0 - elif [ -f "${{ github.workspace }}/frontend/package.json" ]; then - echo "manager=npm" >> $GITHUB_OUTPUT - echo "command=ci" >> $GITHUB_OUTPUT - echo "runner=npx --no-install" >> $GITHUB_OUTPUT - exit 0 - else - echo "Unable to determine package manager" - exit 1 - fi - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: "20" - cache: ${{ steps.detect-package-manager.outputs.manager }} - cache-dependency-path: frontend/package-lock.json # Specify the path to package-lock.json - - name: Setup Pages - uses: actions/configure-pages@v5 - with: - static_site_generator: next - - name: Install dependencies - run: ${{ steps.detect-package-manager.outputs.manager }} ${{ steps.detect-package-manager.outputs.command }} --legacy-peer-deps - - name: Build with Next.js - run: ${{ steps.detect-package-manager.outputs.runner }} next build - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: frontend/out - - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 diff --git a/.github/workflows/frontend-cicd.yml b/.github/workflows/frontend-cicd.yml new file mode 100644 index 00000000000..dd242f6efe7 --- /dev/null +++ b/.github/workflows/frontend-cicd.yml @@ -0,0 +1,78 @@ +# Based on https://github.com/actions/starter-workflows/blob/main/pages/nextjs.yml + +name: Frontend CI/CD + +on: + push: + branches: ["main"] + paths: + - frontend/** + - json/** + + pull_request: + branches: ["main"] + types: [opened, synchronize, reopened, edited] + paths: + - frontend/** + - json/** + + workflow_dispatch: + +permissions: + contents: read + +concurrency: + group: pages-${{ github.ref }} + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + defaults: + run: + working-directory: frontend # Set default working directory for all run steps + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: "20" + cache: npm + cache-dependency-path: frontend/package-lock.json + + - name: Install dependencies + run: npm ci --prefer-offline --legacy-peer-deps + + - name: Run tests + run: npm run test + + - name: Configure Next.js for pages + uses: actions/configure-pages@v5 + with: + static_site_generator: next + + - name: Build with Next.js + run: npm run build + + - name: Upload artifact + if: github.ref == 'refs/heads/main' + uses: actions/upload-pages-artifact@v3 + with: + path: frontend/out + + deploy: + runs-on: ubuntu-latest + needs: build + if: github.ref == 'refs/heads/main' + permissions: + pages: write + id-token: write + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/json/onedev.json b/json/onedev.json index f122680b7b0..3fafa03c3e4 100644 --- a/json/onedev.json +++ b/json/onedev.json @@ -16,7 +16,7 @@ "install_methods": [ { "type": "default", - "script": "/ct/onedev.sh", + "script": "ct/onedev.sh", "resources": { "cpu": 2, "ram": 2048, From a4803d178d83f96566ae3e498ea031b49e7df4aa Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:08:48 +0100 Subject: [PATCH 006/286] Update CHANGELOG.md (#720) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 107fdc36f6e..5be8d7c5ea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Update frontend CI/CD workflow [@havardthom](https://github.com/havardthom) ([#703](https://github.com/community-scripts/ProxmoxVE/pull/703)) - fix: note component in json-editor getting out of focus when typing and revert theme switch animation [@BramSuurdje](https://github.com/BramSuurdje) ([#706](https://github.com/community-scripts/ProxmoxVE/pull/706)) ## 2024-12-05 From 59deaa0a194dae99b433bbdbdc21bbee6365c4d0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 6 Dec 2024 23:11:53 +0100 Subject: [PATCH 007/286] Update CHANGELOG.md (#721) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5be8d7c5ea5..00764f603cf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,9 +27,12 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website -- Update frontend CI/CD workflow [@havardthom](https://github.com/havardthom) ([#703](https://github.com/community-scripts/ProxmoxVE/pull/703)) - fix: note component in json-editor getting out of focus when typing and revert theme switch animation [@BramSuurdje](https://github.com/BramSuurdje) ([#706](https://github.com/community-scripts/ProxmoxVE/pull/706)) +### 🧰 Maintenance + +- Update frontend CI/CD workflow [@havardthom](https://github.com/havardthom) ([#703](https://github.com/community-scripts/ProxmoxVE/pull/703)) + ## 2024-12-05 ### Changed From be4e6503d7758d518fb1f99f2cf0f72de6405d7e Mon Sep 17 00:00:00 2001 From: Chris <67816022+vhsdream@users.noreply.github.com> Date: Sat, 7 Dec 2024 05:22:04 -0500 Subject: [PATCH 008/286] Fix Hoarder build failure by installing Chromium stable (#723) --- install/hoarder-install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/hoarder-install.sh b/install/hoarder-install.sh index 92eed2de695..0c37b69c2b6 100644 --- a/install/hoarder-install.sh +++ b/install/hoarder-install.sh @@ -22,7 +22,8 @@ $STD apt-get install -y \ sudo \ gnupg \ ca-certificates \ - chromium \ + chromium/stable \ + chromium-common/stable \ mc msg_ok "Installed Dependencies" From e45aba86bd0be6fa5963072aac083f54c2c4962c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 7 Dec 2024 11:26:17 +0100 Subject: [PATCH 009/286] Update CHANGELOG.md (#726) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00764f603cf..49b263bb909 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-07 + +### Changed + +### 🚀 Updated Scripts + +- Fix Hoarder build failure by installing Chromium stable [@vhsdream](https://github.com/vhsdream) ([#723](https://github.com/community-scripts/ProxmoxVE/pull/723)) + ## 2024-12-06 ### Changed From 52898b4edf2bfbc91248884256d10a47de93c627 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:17:58 +0100 Subject: [PATCH 010/286] Zigbee2MQTT: Remove dev branch choice until v2.0.0 release (#702) --- install/zigbee2mqtt-install.sh | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index f6b8e97c553..54cf0d18c1f 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -40,20 +40,8 @@ msg_info "Setting up Zigbee2MQTT Repository" $STD git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt msg_ok "Set up Zigbee2MQTT Repository" -read -r -p "Switch to Edge/dev branch? (y/N) " prompt -if [[ $prompt == "y" ]]; then - DEV="y" -else - DEV="n" -fi - msg_info "Installing Zigbee2MQTT" cd /opt/zigbee2mqtt -if [[ $DEV == "y" ]]; then -$STD git fetch origin dev:dev -$STD git checkout dev -$STD git pull -fi $STD npm ci msg_ok "Installed Zigbee2MQTT" From 9eb5cc022a57d2b5ef8b6066977ba2ac1540024d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 7 Dec 2024 14:19:57 +0100 Subject: [PATCH 011/286] Update CHANGELOG.md (#730) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 49b263bb909..67e68698a31 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Zigbee2MQTT: Remove dev branch choice until v2.0.0 release [@havardthom](https://github.com/havardthom) ([#702](https://github.com/community-scripts/ProxmoxVE/pull/702)) - Fix Hoarder build failure by installing Chromium stable [@vhsdream](https://github.com/vhsdream) ([#723](https://github.com/community-scripts/ProxmoxVE/pull/723)) ## 2024-12-06 From cadae9796e1524e12152cd62f6417939af818817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Sat, 7 Dec 2024 19:23:58 +0100 Subject: [PATCH 012/286] Bugfix: Include script name in website search (#731) --- frontend/src/components/CommandMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/CommandMenu.tsx b/frontend/src/components/CommandMenu.tsx index b1c8e1267ee..31d9dc12a52 100644 --- a/frontend/src/components/CommandMenu.tsx +++ b/frontend/src/components/CommandMenu.tsx @@ -95,7 +95,7 @@ export default function CommandMenu() { {category.scripts.map((script) => ( { setOpen(false); router.push(`/scripts?id=${script.slug}`); From 5b2cbd3e993ab13e4121e866d833031f1c2649e7 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 7 Dec 2024 20:38:08 +0100 Subject: [PATCH 013/286] Update CHANGELOG.md (#734) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 67e68698a31..41f64b92c77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - Zigbee2MQTT: Remove dev branch choice until v2.0.0 release [@havardthom](https://github.com/havardthom) ([#702](https://github.com/community-scripts/ProxmoxVE/pull/702)) - Fix Hoarder build failure by installing Chromium stable [@vhsdream](https://github.com/vhsdream) ([#723](https://github.com/community-scripts/ProxmoxVE/pull/723)) +### 🌐 Website + +- Bugfix: Include script name in website search [@havardthom](https://github.com/havardthom) ([#731](https://github.com/community-scripts/ProxmoxVE/pull/731)) + ## 2024-12-06 ### Changed From c056dd97eaa24601201915dd9188436042d64e20 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 7 Dec 2024 22:08:56 +0100 Subject: [PATCH 014/286] Fix RAM Check for other languages --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index aee3366a8b8..3bd4aa02d78 100644 --- a/misc/build.func +++ b/misc/build.func @@ -504,7 +504,7 @@ install_script() { check_container_resources() { # Check actual RAM & Cores - current_ram=$(free -m | awk '/^Mem:/{print $2}') + current_ram=$free -m | awk 'NR==2{print $2}') current_cpu=$(nproc) # Check whether the current RAM is less than the required RAM or the CPU cores are less than required From ae120c1e233093739eeef6952178e786211c1c76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Sat, 7 Dec 2024 22:42:40 +0100 Subject: [PATCH 015/286] Fix broken build.func (#736) --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 3bd4aa02d78..17a87765e24 100644 --- a/misc/build.func +++ b/misc/build.func @@ -504,7 +504,7 @@ install_script() { check_container_resources() { # Check actual RAM & Cores - current_ram=$free -m | awk 'NR==2{print $2}') + current_ram=$(free -m | awk 'NR==2{print $2}') current_cpu=$(nproc) # Check whether the current RAM is less than the required RAM or the CPU cores are less than required From 102669cd11fee9d5563bcc476cc6bc6a23c2625f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 7 Dec 2024 23:12:37 +0100 Subject: [PATCH 016/286] Update CHANGELOG.md (#737) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 41f64b92c77..e7df713364a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -29,6 +29,10 @@ Do not break established syntax in this file, as it is automatically updated by - Bugfix: Include script name in website search [@havardthom](https://github.com/havardthom) ([#731](https://github.com/community-scripts/ProxmoxVE/pull/731)) +### ❔ Unlabelled + +- Fix broken build.func [@havardthom](https://github.com/havardthom) ([#736](https://github.com/community-scripts/ProxmoxVE/pull/736)) + ## 2024-12-06 ### Changed From 82ee63a6db291017f13ac3c291a9a7a52966bba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Sun, 8 Dec 2024 03:50:24 +0100 Subject: [PATCH 017/286] Use MongoDB 4.4 in Unifi for non-AVX users (#691) --- install/unifi-install.sh | 9 ++++----- json/unifi.json | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/install/unifi-install.sh b/install/unifi-install.sh index 5bf36a760ca..d1d2e872b52 100644 --- a/install/unifi-install.sh +++ b/install/unifi-install.sh @@ -30,16 +30,15 @@ msg_ok "Installed Eclipse Temurin JRE" if ! grep -q -m1 'avx[^ ]*' /proc/cpuinfo; then msg_ok "No AVX Support Detected" - msg_info "Installing MongoDB 4.2" + msg_info "Installing MongoDB 4.4" if ! dpkg -l | grep -q "libssl1.1"; then wget -q http://security.debian.org/debian-security/pool/updates/main/o/openssl/libssl1.1_1.1.1n-0+deb10u6_amd64.deb $STD dpkg -i libssl1.1_1.1.1n-0+deb10u6_amd64.deb - $STD apt-get install -f -y # Fix any broken dependencies fi - wget -qO- https://www.mongodb.org/static/pgp/server-4.2.asc | gpg --dearmor > /usr/share/keyrings/mongodb-server-4.2.gpg - echo "deb [signed-by=/usr/share/keyrings/mongodb-server-4.2.gpg] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" >/etc/apt/sources.list.d/mongodb-org-4.2.list + wget -qO- https://www.mongodb.org/static/pgp/server-4.4.asc | gpg --dearmor > /usr/share/keyrings/mongodb-server-4.4.gpg + echo "deb [signed-by=/usr/share/keyrings/mongodb-server-4.4.gpg] https://repo.mongodb.org/apt/debian buster/mongodb-org/4.4 main" >/etc/apt/sources.list.d/mongodb-org-4.4.list $STD apt-get update - $STD apt-get install -y mongodb-org=4.2.17 + $STD apt-get install -y mongodb-org else msg_info "Installing MongoDB 7.0" wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg diff --git a/json/unifi.json b/json/unifi.json index 080312cbb51..0cc45088126 100644 --- a/json/unifi.json +++ b/json/unifi.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "For non-AVX CPUs, MongoDB 4.2 is installed. Please note this is a legacy solution that may present security risks and could become unsupported in future updates.", + "text": "For non-AVX CPUs, MongoDB 4.4 is installed. Please note this is a legacy solution that may present security risks and could become unsupported in future updates.", "type": "warning" } ] From 96d691c862278eb9f4531f817eb71a94148981b6 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 09:48:28 +0100 Subject: [PATCH 018/286] Update CHANGELOG.md (#738) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e7df713364a..c3ce79ed737 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-08 + +### Changed + +### 🚀 Updated Scripts + +- Use MongoDB 4.4 in Unifi for non-AVX users [@havardthom](https://github.com/havardthom) ([#691](https://github.com/community-scripts/ProxmoxVE/pull/691)) + ## 2024-12-07 ### Changed From 8a6ea7cbacdc006f402a64740257f83d6268472d Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Sun, 8 Dec 2024 15:19:07 +0100 Subject: [PATCH 019/286] Update homarr.json (#740) --- json/homarr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/homarr.json b/json/homarr.json index fc4e35874b1..ed15e88f82b 100644 --- a/json/homarr.json +++ b/json/homarr.json @@ -2,7 +2,7 @@ "name": "Homarr", "slug": "homarr", "categories": [ - 18 + 15 ], "date_created": "2024-05-02", "type": "ct", From e4354c1d53ca37eab38d898a33644241d072d8a8 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 8 Dec 2024 15:19:52 +0100 Subject: [PATCH 020/286] Update CHANGELOG.md (#742) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c3ce79ed737..eca9d980868 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,10 @@ Do not break established syntax in this file, as it is automatically updated by - Use MongoDB 4.4 in Unifi for non-AVX users [@havardthom](https://github.com/havardthom) ([#691](https://github.com/community-scripts/ProxmoxVE/pull/691)) +### 🌐 Website + +- Move homarr to Dashboards section [@CrazyWolf13](https://github.com/CrazyWolf13) ([#740](https://github.com/community-scripts/ProxmoxVE/pull/740)) + ## 2024-12-07 ### Changed From 4f66476de580f5747393c3068e7a3aa30042a68a Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 9 Dec 2024 21:22:37 +0100 Subject: [PATCH 021/286] Update Password Creation to only create Chars (#750) --- install/umami-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/umami-install.sh b/install/umami-install.sh index f913128fb79..28dc0687f92 100644 --- a/install/umami-install.sh +++ b/install/umami-install.sh @@ -37,7 +37,7 @@ msg_ok "Installed Node.js" msg_info "Setting up postgresql" DB_NAME=umamidb DB_USER=umami -DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) SECRET_KEY="$(head /dev/urandom | tr -dc A-Za-z0-9 | head -c 32)" $STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;" From d6ead654adfbd0f1abbf1ba3a39faf726505fddc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 21:33:02 +0100 Subject: [PATCH 022/286] Update CHANGELOG.md (#758) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index eca9d980868..48335dd5c4f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-09 + +### Changed + +### 🚀 Updated Scripts + +- Fix PostgreSQL password bug in Umami install [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#750](https://github.com/community-scripts/ProxmoxVE/pull/750)) + ## 2024-12-08 ### Changed From ec27945abd569c260c439c8f22b7be976d7c5987 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:10:55 +0100 Subject: [PATCH 023/286] Add post-install note to mqtt.json (#783) --- json/mqtt.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/json/mqtt.json b/json/mqtt.json index b3168c48b7a..6337e168ac6 100644 --- a/json/mqtt.json +++ b/json/mqtt.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "You can find post-install info here: `https://github.com/community-scripts/ProxmoxVE/discussions/782`", + "type": "info" + } + ] } \ No newline at end of file From 4a60a29f1dabd6e58ee2023c4305d6bcbbc90564 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Thu, 12 Dec 2024 10:11:26 +0100 Subject: [PATCH 024/286] Fix Z-Wave JS UI Breaking Change in CHANGELOG.md (#781) --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 48335dd5c4f..03cca27b110 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -158,13 +158,17 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- Fix Z-Wave JS UI script [@MickLesk](https://github.com/MickLesk) ([#546](https://github.com/community-scripts/ProxmoxVE/pull/546)) + - [Migration guide](https://github.com/community-scripts/ProxmoxVE/discussions/635) + ### 🚀 Updated Scripts - Add vitest, add json validation tests, fix broken json files [@havardthom](https://github.com/havardthom) ([#566](https://github.com/community-scripts/ProxmoxVE/pull/566)) - Add update script to Pocketbase [@dsiebel](https://github.com/dsiebel) ([#535](https://github.com/community-scripts/ProxmoxVE/pull/535)) - Fix MongoDB install in Unifi script [@havardthom](https://github.com/havardthom) ([#564](https://github.com/community-scripts/ProxmoxVE/pull/564)) - Remove changing DISK_REF for zfspool mikrotik-routeros.sh [@tjcomserv](https://github.com/tjcomserv) ([#529](https://github.com/community-scripts/ProxmoxVE/pull/529)) -- Fix Z-Wave JS UI script [@MickLesk](https://github.com/MickLesk) ([#546](https://github.com/community-scripts/ProxmoxVE/pull/546)) ### 🌐 Website From cfb755a8627a7cd693d0220626ca9e6201877f2d Mon Sep 17 00:00:00 2001 From: Emik Date: Thu, 12 Dec 2024 17:18:11 +0800 Subject: [PATCH 025/286] Fix port and website in nextcloudpi.json (#790) --- json/nextcloudpi.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/json/nextcloudpi.json b/json/nextcloudpi.json index bd0098e76b7..ab6d3f8c83e 100644 --- a/json/nextcloudpi.json +++ b/json/nextcloudpi.json @@ -8,9 +8,9 @@ "type": "ct", "updateable": false, "privileged": false, - "interface_port": 433, + "interface_port": 4443, "documentation": null, - "website": "https://www.turnkeylinux.org/nextcloud", + "website": "https://github.com/nextcloud/nextcloudpi", "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/nextcloud.svg", "description": "NextCloudPi is a popular self-hosted solution for file collaboration and data storage. It is built on the NextCloud software, which is an open-source platform for data management.", "install_methods": [ @@ -42,4 +42,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From 0d63e66379576810187a56c31cc129438999abbf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:19:35 +0100 Subject: [PATCH 026/286] Filter pull requests on main branch in changelog-pr.yml (#793) --- .github/workflows/changelog-pr.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/changelog-pr.yml b/.github/workflows/changelog-pr.yml index efb09a0c295..78d74f85614 100644 --- a/.github/workflows/changelog-pr.yml +++ b/.github/workflows/changelog-pr.yml @@ -63,6 +63,7 @@ jobs: const { data: pulls } = await github.rest.pulls.list({ owner: context.repo.owner, repo: context.repo.repo, + base: "main", state: "closed", sort: "updated", direction: "desc", From 6fb6c58454e148e87e651289f7eaa4ddd778bacd Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 16:25:49 +0100 Subject: [PATCH 027/286] Update CHANGELOG.md (#791) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 03cca27b110..1ea17d1fbe2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,20 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-12 + +### Changed + +### 🌐 Website + +- Fix port and website in nextcloudpi.json [@PhoenixEmik](https://github.com/PhoenixEmik) ([#790](https://github.com/community-scripts/ProxmoxVE/pull/790)) +- Add post-install note to mqtt.json [@havardthom](https://github.com/havardthom) ([#783](https://github.com/community-scripts/ProxmoxVE/pull/783)) + +### 🧰 Maintenance + +- Filter pull requests on main branch in changelog-pr.yml [@havardthom](https://github.com/havardthom) ([#793](https://github.com/community-scripts/ProxmoxVE/pull/793)) +- Fix Z-Wave JS UI Breaking Change in CHANGELOG.md [@havardthom](https://github.com/havardthom) ([#781](https://github.com/community-scripts/ProxmoxVE/pull/781)) + ## 2024-12-09 ### Changed From e7ac005592d89f80d38432517bd5a9a949a3b0ce Mon Sep 17 00:00:00 2001 From: Adam Marciniak Date: Thu, 12 Dec 2024 22:59:16 +0100 Subject: [PATCH 028/286] Update jellyfin.sh / Fix infinite loop (#792) Running the script created an infinite loop waiting for user input to confirm the installation of new packages. The -y option fixes this and allows the script to run without interaction and therefore as expected. --- ct/jellyfin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index e15623523cf..813200d3af4 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -61,7 +61,7 @@ if [[ ! -d /usr/lib/jellyfin ]]; then msg_error "No ${APP} Installation Found!"; msg_info "Updating ${APP} LXC" apt-get update &>/dev/null apt-get -y upgrade &>/dev/null -apt-get --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null +apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null msg_ok "Updated ${APP} LXC" exit } From aab63c8db2227402195ff9e5f94d3d96c794710f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 12 Dec 2024 23:01:41 +0100 Subject: [PATCH 029/286] Update CHANGELOG.md (#797) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ea17d1fbe2..2bd6a541efa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Update jellyfin.sh / Fix infinite loop [@gerpo](https://github.com/gerpo) ([#792](https://github.com/community-scripts/ProxmoxVE/pull/792)) + ### 🌐 Website - Fix port and website in nextcloudpi.json [@PhoenixEmik](https://github.com/PhoenixEmik) ([#790](https://github.com/community-scripts/ProxmoxVE/pull/790)) From ae0684b6968b4b61919f797a3c690e95bf2723b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:33:34 +0100 Subject: [PATCH 030/286] Fix config bug in Alpine Vaultwarden (#775) --- install/alpine-vaultwarden-install.sh | 4 +++- json/vaultwarden.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/install/alpine-vaultwarden-install.sh b/install/alpine-vaultwarden-install.sh index 1babe4277db..dffd20b0d9d 100644 --- a/install/alpine-vaultwarden-install.sh +++ b/install/alpine-vaultwarden-install.sh @@ -25,7 +25,9 @@ msg_ok "Installed Dependencies" msg_info "Installing Alpine-Vaultwarden" $STD apk add vaultwarden -sed -i -e 's/# export ADMIN_TOKEN=.*/export ADMIN_TOKEN='\'''\''/' -e '/^# export ROCKET_ADDRESS=0\.0\.0\.0/s/^# //' -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden +sed -i -e 's|export WEB_VAULT_ENABLED=.*|export WEB_VAULT_ENABLED=true|' /etc/conf.d/vaultwarden +echo -e "export ADMIN_TOKEN=''" >>/etc/conf.d/vaultwarden +echo -e "export ROCKET_ADDRESS=0.0.0.0" >>/etc/conf.d/vaultwarden msg_ok "Installed Alpine-Vaultwarden" msg_info "Installing Web-Vault" diff --git a/json/vaultwarden.json b/json/vaultwarden.json index 96bf55b5398..d36cffbf3d8 100644 --- a/json/vaultwarden.json +++ b/json/vaultwarden.json @@ -47,7 +47,7 @@ "type": "warning" }, { - "text": "Build Settings for normal LXC: 6GB RAM - 6GB Storage - 4vCPU", + "text": "To set the Admin Token, run the command below (or type update) in the LXC Console.", "type": "info" } ] From 8c1b48453ca91b9c9ca43b52db8d2e62eba02b47 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 13:53:18 +0100 Subject: [PATCH 031/286] Update CHANGELOG.md (#806) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bd6a541efa..0ae8764da47 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-13 + +### Changed + +### 🚀 Updated Scripts + +- Fix config bug in Alpine Vaultwarden [@havardthom](https://github.com/havardthom) ([#775](https://github.com/community-scripts/ProxmoxVE/pull/775)) + ## 2024-12-12 ### Changed From 82ba8367433d6db6da9b689b616f57700fe9158e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:24:02 +0100 Subject: [PATCH 032/286] Update Notes & Documentation for Proxmox Backup Server (#804) --- json/pbs.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/json/pbs.json b/json/pbs.json index afcf597c6ca..848ff913118 100644 --- a/json/pbs.json +++ b/json/pbs.json @@ -9,7 +9,7 @@ "updateable": false, "privileged": false, "interface_port": 8007, - "documentation": null, + "documentation": "https://pbs.proxmox.com/docs/", "website": "https://www.proxmox.com/en/proxmox-backup-server/overview", "logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/proxmoxve/icon.png", "description": "Proxmox Backup Server is an enterprise backup solution, for backing up and restoring VMs, containers, and physical hosts. By supporting incremental, fully deduplicated backups, Proxmox Backup Server significantly reduces network load and saves valuable storage space.", @@ -32,8 +32,8 @@ }, "notes": [ { - "text": "Set a root password if using autologin. This will be the PBS password.", + "text": "Set a root password if using autologin. This will be the PBS password. `sudo passwd root`", "type": "warning" } ] -} \ No newline at end of file +} From 77d2df5a0f27385100556f286d807834361281b5 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:24:14 +0100 Subject: [PATCH 033/286] Update some JSON Files for Website (#812) * Update JSON Files for Website * fix microcode json --- json/actualbudget.json | 2 +- json/add-tailscale-lxc.json | 4 ++-- json/adguard.json | 2 +- json/adventurelog.json | 7 ++++++- json/all-templates.json | 2 +- json/alpine.json | 7 ++++++- json/apache-cassandra.json | 2 +- json/apache-couchdb.json | 2 +- json/aria2.json | 2 +- json/audiobookshelf.json | 2 +- json/autobrr.json | 2 +- json/blocky.json | 2 +- json/calibre-web.json | 2 +- json/casaos.json | 7 ++++++- json/clean-lxcs.json | 2 +- json/cockpit.json | 2 +- json/cron-update-lxcs.json | 4 ++-- json/cronicle.json | 8 ++------ json/daemonsync.json | 2 +- json/dockge.json | 2 +- json/emby.json | 2 +- json/emqx.json | 7 ++++++- json/evcc.json | 2 +- json/fhem.json | 7 ++++++- json/frigate.json | 4 ++-- json/fstrim.json | 8 ++++++-- json/gotify.json | 11 +---------- json/haos-vm.json | 4 ++++ json/headscale.json | 2 +- json/hivemq.json | 7 ++++++- json/homeassistant-core.json | 8 ++++++-- json/homeassistant.json | 4 ++++ json/homebox.json | 2 +- json/homepage.json | 2 +- json/homer.json | 2 +- json/host-backup.json | 6 +++++- json/jellyfin.json | 4 ++-- json/kernel-clean.json | 2 +- json/kernel-pin.json | 2 +- json/linkwarden.json | 2 +- json/mafl.json | 4 ++-- json/magicmirror.json | 2 +- json/microcode.json | 6 +++++- json/monitor-all.json | 22 +++++++++++++--------- json/mysql.json | 2 +- json/navidrome.json | 2 +- json/netdata.json | 2 +- json/node-red.json | 2 +- json/notifiarr.json | 2 +- json/olivetin.json | 2 +- json/openobserve.json | 2 +- json/paperless-ngx.json | 2 +- json/pihole.json | 2 +- json/pimox-haos-vm.json | 7 ++++++- json/plex.json | 2 +- json/podman-homeassistant.json | 4 ++++ json/post-pbs-install.json | 8 ++++++-- json/post-pve-install.json | 6 +++++- json/redis.json | 2 +- json/scaling-governor.json | 2 +- json/snipeit.json | 10 +++++++--- json/tdarr.json | 2 +- json/the-lounge.json | 2 +- json/turnkey.json | 4 ++-- json/umami.json | 2 +- json/update-lxcs.json | 2 +- json/update-repo.json | 2 +- json/webmin.json | 2 +- 68 files changed, 164 insertions(+), 98 deletions(-) diff --git a/json/actualbudget.json b/json/actualbudget.json index b54516a13f8..d5138d5eec5 100644 --- a/json/actualbudget.json +++ b/json/actualbudget.json @@ -9,7 +9,7 @@ "updateable": true, "privileged": false, "interface_port": 5006, - "documentation": null, + "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/807", "website": "https://actualbudget.org/", "logo": "https://raw.githubusercontent.com/actualbudget/actual/master/packages/desktop-client/public/maskable-512x512.png", "description": "Actual Budget is a super fast and privacy-focused app for managing your finances. At its heart is the well proven and much loved Envelope Budgeting methodology.", diff --git a/json/add-tailscale-lxc.json b/json/add-tailscale-lxc.json index d241737bd71..1b2717e2c91 100644 --- a/json/add-tailscale-lxc.json +++ b/json/add-tailscale-lxc.json @@ -33,11 +33,11 @@ "notes": [ { "text": "After the script finishes, reboot the LXC then run `tailscale up` in the LXC console", - "type": "warning" + "type": "info" }, { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/adguard.json b/json/adguard.json index fbab46c4721..89d7287ab61 100644 --- a/json/adguard.json +++ b/json/adguard.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Adguard Home can be updated via the user interface.", - "type": "warning" + "type": "info" } ] } diff --git a/json/adventurelog.json b/json/adventurelog.json index 62839ec143a..f9aca9a8c18 100644 --- a/json/adventurelog.json +++ b/json/adventurelog.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "AdventureLog uses an initial local IP, if you change your LXC-IP, you need to change the IP here: `/opt/adventurelog/backend/server/.env` and here: `/opt/adventurelog/frontend/.env`", + "type": "warning" + } + ] } \ No newline at end of file diff --git a/json/all-templates.json b/json/all-templates.json index e5ea84cee8a..47157131086 100644 --- a/json/all-templates.json +++ b/json/all-templates.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Resource and network settings are adjustable post LXC creation.", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/alpine.json b/json/alpine.json index 77ff8ee867c..ad46560e084 100644 --- a/json/alpine.json +++ b/json/alpine.json @@ -30,5 +30,10 @@ "username": null, "password": "alpine" }, - "notes": [] + "notes": [ + { + "text": "To Update Alpine: `apk update && apk upgrade`", + "type": "info" + } + ] } \ No newline at end of file diff --git a/json/apache-cassandra.json b/json/apache-cassandra.json index 947d8e5cfe2..63484fa4845 100644 --- a/json/apache-cassandra.json +++ b/json/apache-cassandra.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Apache-Cassandra Configuration: `nano /etc/cassandra/cassandra.yaml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/apache-couchdb.json b/json/apache-couchdb.json index 2c0ae1f1f8a..623ede38f9d 100644 --- a/json/apache-couchdb.json +++ b/json/apache-couchdb.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Show Login Credentials: `cat CouchDB.creds`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/aria2.json b/json/aria2.json index bf04bd81493..9282221a845 100644 --- a/json/aria2.json +++ b/json/aria2.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Within the LXC console, run `cat rpc.secret` to display the rpc-secret. Copy this token and paste it into the Aria2 RPC Secret Token box within the AriaNG Settings. Then, click the reload AriaNG button.", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/audiobookshelf.json b/json/audiobookshelf.json index c312d1536df..062d71ec75f 100644 --- a/json/audiobookshelf.json +++ b/json/audiobookshelf.json @@ -9,7 +9,7 @@ "updateable": false, "privileged": false, "interface_port": 13378, - "documentation": null, + "documentation": "https://www.audiobookshelf.org/guides/", "website": "https://www.audiobookshelf.org/", "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/audiobookshelf.svg", "description": "Audiobookshelf is a Self-hosted audiobook and podcast server.", diff --git a/json/autobrr.json b/json/autobrr.json index 143fb172a7b..6453578273f 100644 --- a/json/autobrr.json +++ b/json/autobrr.json @@ -9,7 +9,7 @@ "updateable": true, "privileged": false, "interface_port": 7474, - "documentation": null, + "documentation": "https://autobrr.com/configuration/autobrr", "website": "https://autobrr.com/", "logo": "https://raw.githubusercontent.com/autobrr/autobrr/master/.github/images/logo.png", "description": "Autobrr is a torrent downloading tool that automates the process of downloading torrents. It is designed to be modern and user-friendly, providing users with a convenient and efficient way to download torrent files. With Autobrr, you can schedule and manage your torrent downloads, and have the ability to automatically download torrents based on certain conditions, such as time of day or availability of seeds. This can save you time and effort, allowing you to focus on other tasks while your torrents are being downloaded in the background.", diff --git a/json/blocky.json b/json/blocky.json index 5f08d3ec116..8668bfd18dc 100644 --- a/json/blocky.json +++ b/json/blocky.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Blocky Configuration Path: `/opt/blocky/config.yml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/calibre-web.json b/json/calibre-web.json index 03c7e83a82f..170b62852a4 100644 --- a/json/calibre-web.json +++ b/json/calibre-web.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Add Calibre-Web Extras via `update`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/casaos.json b/json/casaos.json index abaf1c06795..0ec77da581a 100644 --- a/json/casaos.json +++ b/json/casaos.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", + "type": "warning" + } + ] } \ No newline at end of file diff --git a/json/clean-lxcs.json b/json/clean-lxcs.json index 22f94a5aafb..c6730bdbd8b 100644 --- a/json/clean-lxcs.json +++ b/json/clean-lxcs.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/cockpit.json b/json/cockpit.json index fb343f7115d..51b8d49b1d6 100644 --- a/json/cockpit.json +++ b/json/cockpit.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Set a root password if using autologin. This will be the Cockpit password.`sudo passwd root`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/cron-update-lxcs.json b/json/cron-update-lxcs.json index 08e5e959cc2..eeb6311f25c 100644 --- a/json/cron-update-lxcs.json +++ b/json/cron-update-lxcs.json @@ -33,11 +33,11 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" }, { "text": "To exclude LXCs from updating, edit the crontab using `crontab -e` and add CTID as shown in the example below:\n\n\n\n`0 0 * * 0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/bash -c '$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/misc/update-lxcs-cron.sh)' -s 103 111 >>/var/log/update-lxcs-cron.log 2>/dev/null`", - "type": "warning" + "type": "info" } ] diff --git a/json/cronicle.json b/json/cronicle.json index 67c2b9bdd60..3c733ee2025 100644 --- a/json/cronicle.json +++ b/json/cronicle.json @@ -32,12 +32,8 @@ }, "notes": [ { - "text": "Primary and Worker Private Keys Must Match.", - "type": "warning" - }, - { - "text": "Configuration Path: `/opt/cronicle/conf/config.json`", - "type": "warning" + "text": "Configuration Path: `/opt/cronicle/conf/config.json` (Primary and Worker Private Keys Must Match)", + "type": "info" } ] } \ No newline at end of file diff --git a/json/daemonsync.json b/json/daemonsync.json index 592516d3afb..5a031b9a748 100644 --- a/json/daemonsync.json +++ b/json/daemonsync.json @@ -10,7 +10,7 @@ "privileged": false, "interface_port": 8084, "documentation": null, - "website": null, + "website": "https://daemonsync.me/", "logo": "https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fimg.informer.com%2Ficons_mac%2Fpng%2F128%2F350%2F350335.png&f=1&nofb=1", "description": "Sync files from app to server, share photos & videos, back up your data and stay secure inside local network.", "install_methods": [ diff --git a/json/dockge.json b/json/dockge.json index 012dd3448ff..977d4062523 100644 --- a/json/dockge.json +++ b/json/dockge.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Options to add Immich and/or Home Assistant", - "type": "warning" + "type": "info" }, { "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", diff --git a/json/emby.json b/json/emby.json index 1b37bfa50f5..3516b84cad6 100644 --- a/json/emby.json +++ b/json/emby.json @@ -33,7 +33,7 @@ "notes": [ { "text": "With Privileged/Unprivileged Hardware Acceleration Support", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/emqx.json b/json/emqx.json index c7f68180b8e..69622f3ed1f 100644 --- a/json/emqx.json +++ b/json/emqx.json @@ -30,5 +30,10 @@ "username": "admin", "password": "public" }, - "notes": [] + "notes": [ + { + "text": "Setup-Steps: Access Control ➡ Authentication ➡ Create ➡ Next ➡ Next ➡ Create ➡ Users ➡ Add ➡ Username / Password (to authenicate with MQTT) ➡ Save. You're now ready to enjoy a high-performance MQTT Broker.", + "type": "info" + } + ] } \ No newline at end of file diff --git a/json/evcc.json b/json/evcc.json index 27ba3d2ef89..1a4c24296c4 100644 --- a/json/evcc.json +++ b/json/evcc.json @@ -33,7 +33,7 @@ "notes": [ { "text": "entering `evcc configure` in the LXC terminal will guide you through the creation of a configuration file for evcc.", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/fhem.json b/json/fhem.json index 6c2a7b4a538..0d559461864 100644 --- a/json/fhem.json +++ b/json/fhem.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", + "type": "warning" + } + ] } \ No newline at end of file diff --git a/json/frigate.json b/json/frigate.json index 53496cca3a0..275afce3a26 100644 --- a/json/frigate.json +++ b/json/frigate.json @@ -33,11 +33,11 @@ "notes": [ { "text": "Discussions (explore more advanced methods): `https://github.com/tteck/Proxmox/discussions/2711`", - "type": "warning" + "type": "info" }, { "text": "go2rtc Interface port:`1984`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/fstrim.json b/json/fstrim.json index fb19b156a29..a6c124d1736 100644 --- a/json/fstrim.json +++ b/json/fstrim.json @@ -9,10 +9,10 @@ "updateable": false, "privileged": false, "interface_port": null, - "documentation": "https://github.com/tteck/Proxmox/discussions/2505#discussion-6226037", + "documentation": "https://github.com/community-scripts/ProxmoxVE/discussions/805", "website": null, "logo": "https://raw.githubusercontent.com/loganmarchione/homelab-svg-assets/main/assets/lxc.svg", - "description": "This maintains SSD performance by managing unused blocks. Thin-provisioned storage systems also require management to prevent unnecessary storage use. VMs automate fstrim, while LXC containers need manual or automated fstrim processes for optimal performance.\r\nThis is designed to work with SSDs on ext4 filesystems only.", + "description": "This maintains SSD performance by managing unused blocks. Thin-provisioned storage systems also require management to prevent unnecessary storage use. VMs automate fstrim, while LXC containers need manual or automated fstrim processes for optimal performance.", "install_methods": [ { "type": "default", @@ -33,6 +33,10 @@ "notes": [ { "text": "Execute within the Proxmox shell", + "type": "info" + }, + { + "text": "This is designed to work with SSDs on ext4 filesystems only.", "type": "warning" } ] diff --git a/json/gotify.json b/json/gotify.json index 1728b3a50e0..5e786718717 100644 --- a/json/gotify.json +++ b/json/gotify.json @@ -30,14 +30,5 @@ "username": "admin", "password": "admin" }, - "notes": [ - { - "text": "password: `admin`", - "type": "warning" - }, - { - "text": "username: `admin`", - "type": "warning" - } - ] + "notes": [] } \ No newline at end of file diff --git a/json/haos-vm.json b/json/haos-vm.json index 33f482bcb84..6ce917b3b78 100644 --- a/json/haos-vm.json +++ b/json/haos-vm.json @@ -34,6 +34,10 @@ { "text": "The disk must have a minimum size of 32GB and its size cannot be changed during the creation of the VM.", "type": "warning" + }, + { + "text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.", + "type": "info" } ] } \ No newline at end of file diff --git a/json/headscale.json b/json/headscale.json index cc4c3ee1c44..9260aa7c731 100644 --- a/json/headscale.json +++ b/json/headscale.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Configuration settings: `/etc/headscale/config.yaml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/hivemq.json b/json/hivemq.json index 6aa5d959ca7..c63e39c8b63 100644 --- a/json/hivemq.json +++ b/json/hivemq.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "To check if HiveMQ is listening to the default port for MQTT `lsof -i :1883`", + "type": "info" + } + ] } \ No newline at end of file diff --git a/json/homeassistant-core.json b/json/homeassistant-core.json index 4294c70ff90..ff4feb6d14d 100644 --- a/json/homeassistant-core.json +++ b/json/homeassistant-core.json @@ -32,16 +32,20 @@ }, "notes": [ { - "text": "config path: `/root/.homeassistant`", + "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", "type": "warning" }, { - "text": "Requires `6.8.4-3-pve` or newer kernel", + "text": "Requires PVE 8.2.2 with kernel 6.8.4-3-pve or newer", "type": "warning" }, { "text": "Use Ubuntu 24.04 ONLY", "type": "warning" + }, + { + "text": "config path: `/root/.homeassistant`", + "type": "info" } ] } \ No newline at end of file diff --git a/json/homeassistant.json b/json/homeassistant.json index e5c153a1831..564933d7b02 100644 --- a/json/homeassistant.json +++ b/json/homeassistant.json @@ -38,6 +38,10 @@ { "text": "config path: `/var/lib/docker/volumes/hass_config/_data`", "type": "warning" + }, + { + "text": "Portainer Interface: LXC-IP: 9443", + "type": "info" } ] } \ No newline at end of file diff --git a/json/homebox.json b/json/homebox.json index bad357f697d..04d2cb1895e 100644 --- a/json/homebox.json +++ b/json/homebox.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "env file location: `/opt/.env`", + "text": ".env file location: `/opt/.env`", "type": "info" } ] diff --git a/json/homepage.json b/json/homepage.json index 7046b26ecab..d69c0f95e9a 100644 --- a/json/homepage.json +++ b/json/homepage.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Configuration (bookmarks.yaml, services.yaml, widgets.yaml) path: `/opt/homepage/config/`", - "type": "warning" + "type": "info" } ] } diff --git a/json/homer.json b/json/homer.json index a04de3c1dd4..b86359ddd85 100644 --- a/json/homer.json +++ b/json/homer.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Configuration Path: `/opt/homer/assets/config.yml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/host-backup.json b/json/host-backup.json index 5afde65850c..2804255932f 100644 --- a/json/host-backup.json +++ b/json/host-backup.json @@ -33,7 +33,11 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" + }, + { + "text": "A backup is rendered ineffective when it remains stored on the host", + "type": "info" } ] } \ No newline at end of file diff --git a/json/jellyfin.json b/json/jellyfin.json index 662d3b1adb9..bcd43ce7d7c 100644 --- a/json/jellyfin.json +++ b/json/jellyfin.json @@ -33,11 +33,11 @@ "notes": [ { "text": "With Privileged/Unprivileged Hardware Acceleration Support", - "type": "warning" + "type": "info" }, { "text": "FFmpeg path: /usr/lib/jellyfin-ffmpeg/ffmpeg", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/kernel-clean.json b/json/kernel-clean.json index 4062c4e69a3..3e23ea3782f 100644 --- a/json/kernel-clean.json +++ b/json/kernel-clean.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/kernel-pin.json b/json/kernel-pin.json index 40a990c362a..99f6fbcd10b 100644 --- a/json/kernel-pin.json +++ b/json/kernel-pin.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/linkwarden.json b/json/linkwarden.json index 4b19ef54d1b..5bf40d340e6 100644 --- a/json/linkwarden.json +++ b/json/linkwarden.json @@ -36,4 +36,4 @@ "type": "info" } ] -} +} \ No newline at end of file diff --git a/json/mafl.json b/json/mafl.json index c6a9f7646f8..2843009c25b 100644 --- a/json/mafl.json +++ b/json/mafl.json @@ -32,8 +32,8 @@ }, "notes": [ { - "text": "Configuration Path: `/opt/mafl/data/config.yml`\r\n", - "type": "warning" + "text": "Configuration Path: `/opt/mafl/data/config.yml`", + "type": "info" } ] } \ No newline at end of file diff --git a/json/magicmirror.json b/json/magicmirror.json index 6df13ac6b5d..b1cdbc194a4 100644 --- a/json/magicmirror.json +++ b/json/magicmirror.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Configuration Path: `/opt/magicmirror/config/config.js`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/microcode.json b/json/microcode.json index fe94d5d260c..8bb521e38af 100644 --- a/json/microcode.json +++ b/json/microcode.json @@ -33,7 +33,11 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" + }, + { + "text": "After a reboot, you can check whether any microcode updates are currently in effect by running the following command. `journalctl -k | grep -E \"microcode\" | head -n 1`", + "type": "info" } ] } \ No newline at end of file diff --git a/json/monitor-all.json b/json/monitor-all.json index 754de0b767c..52a14fd10ae 100644 --- a/json/monitor-all.json +++ b/json/monitor-all.json @@ -33,31 +33,35 @@ "notes": [ { "text": "Execute within the Proxmox shell", + "type": "info" + }, + { + "text": "Virtual machines without the QEMU guest agent installed must be excluded.", + "type": "warning" + }, + { + "text": "Prior to generating any new CT/VM not found in this repository, it's necessary to halt Proxmox VE Monitor-All by running `systemctl stop ping-instances`.", "type": "warning" }, { "text": "To make setup changes, first stop the service: `systemctl stop ping-instances`", - "type": "Info" + "type": "info" }, { "text": "To edit pause time: `nano /usr/local/bin/ping-instances.sh`", - "type": "Info" + "type": "info" }, { "text": "To add excluded instances: `nano /etc/systemd/system/ping-instances.service`", - "type": "Info" - }, - { - "text": "To edit pause time: `nano /usr/local/bin/ping-instances.sh`", - "type": "Info" + "type": "info" }, { "text": "After changes have been saved, `systemctl daemon-reload` and start the service: `systemctl start ping-instances`", - "type": "Info" + "type": "info" }, { "text": "Monitor-All logs: `cat /var/log/ping-instances.log`", - "type": "Info" + "type": "info" } ] } diff --git a/json/mysql.json b/json/mysql.json index 6870aed7db5..e9af860dbc0 100644 --- a/json/mysql.json +++ b/json/mysql.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Database credentials: `cat mysql.creds`", - "type": "warning" + "type": "info" }, { "text": "With an option to install the MySQL 8.4 LTS release instead of MySQL 8.0", diff --git a/json/navidrome.json b/json/navidrome.json index f44412d06dd..697451a4691 100644 --- a/json/navidrome.json +++ b/json/navidrome.json @@ -33,7 +33,7 @@ "notes": [ { "text": "To change Navidrome music folder path, `nano /var/lib/navidrome/navidrome.toml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/netdata.json b/json/netdata.json index 73a379edc95..d1abf45a7a4 100644 --- a/json/netdata.json +++ b/json/netdata.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/node-red.json b/json/node-red.json index 42f2eaed256..748863c20f8 100644 --- a/json/node-red.json +++ b/json/node-red.json @@ -33,7 +33,7 @@ "notes": [ { "text": "To install themes, type `update` in the LXC console.", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/notifiarr.json b/json/notifiarr.json index 3b7f01dd849..67caa5ee4bc 100644 --- a/json/notifiarr.json +++ b/json/notifiarr.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Manually edit `/etc/notifiarr/notifiarr.conf`to enter the API key from Notifiarr.com, and create a password for the UI.", - "type": "warning" + "type": "info" } ] } diff --git a/json/olivetin.json b/json/olivetin.json index 3902d7cd1cc..346192ca597 100644 --- a/json/olivetin.json +++ b/json/olivetin.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Configuration Path: `/etc/OliveTin/config.yaml`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/openobserve.json b/json/openobserve.json index 3e6aec8127b..6b8672d2d7c 100644 --- a/json/openobserve.json +++ b/json/openobserve.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Show Login Credentials: `cat /opt/openobserve/data/.env`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/paperless-ngx.json b/json/paperless-ngx.json index 2051d9ffbcd..d88a655ac52 100644 --- a/json/paperless-ngx.json +++ b/json/paperless-ngx.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Show Login Credentials, type `update` in the LXC console", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/pihole.json b/json/pihole.json index 8de0f05b108..c85899c926d 100644 --- a/json/pihole.json +++ b/json/pihole.json @@ -33,7 +33,7 @@ "notes": [ { "text": "To set your password, log in to the container, and type the following: `pihole -a -p`", - "type": "warning" + "type": "info" }, { "text": "With an option to add Unbound", diff --git a/json/pimox-haos-vm.json b/json/pimox-haos-vm.json index 93aa36a4f94..73f30fe78c5 100644 --- a/json/pimox-haos-vm.json +++ b/json/pimox-haos-vm.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "After the script completes, click on the VM, then on the Summary or Console tab to find the VM IP.", + "type": "info" + } + ] } \ No newline at end of file diff --git a/json/plex.json b/json/plex.json index 019eb52c39d..d50db7cd205 100644 --- a/json/plex.json +++ b/json/plex.json @@ -33,7 +33,7 @@ "notes": [ { "text": "With Privileged/Unprivileged Hardware Acceleration Support", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/podman-homeassistant.json b/json/podman-homeassistant.json index 247a33a9da4..124da0b9704 100644 --- a/json/podman-homeassistant.json +++ b/json/podman-homeassistant.json @@ -38,6 +38,10 @@ { "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", "type": "warning" + }, + { + "text": "config path: `/var/lib/containers/storage/volumes/hass_config/_data`", + "type": "info" } ] } \ No newline at end of file diff --git a/json/post-pbs-install.json b/json/post-pbs-install.json index 6fc29b86cde..3d8f6cd93d3 100644 --- a/json/post-pbs-install.json +++ b/json/post-pbs-install.json @@ -33,11 +33,15 @@ "notes": [ { "text": "Proxmox Backup Server ONLY", - "type": "warning" + "type": "info" }, { "text": "Execute within the Proxmox Backup Server Shell", - "type": "warning" + "type": "info" + }, + { + "text": "It is recommended to answer “yes” (y) to all options presented during the process.", + "type": "info" } ] } \ No newline at end of file diff --git a/json/post-pve-install.json b/json/post-pve-install.json index 68fa0a4eb61..36eae927f8c 100644 --- a/json/post-pve-install.json +++ b/json/post-pve-install.json @@ -33,7 +33,11 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" + }, + { + "text": "It is recommended to answer “yes” (y) to all options presented during the process.", + "type": "info" } ] } \ No newline at end of file diff --git a/json/redis.json b/json/redis.json index 11c82b51389..4092d82e83a 100644 --- a/json/redis.json +++ b/json/redis.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Redis Configuration: `nano /etc/redis/redis.conf`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/scaling-governor.json b/json/scaling-governor.json index 7e51d74148f..0a18987f05f 100644 --- a/json/scaling-governor.json +++ b/json/scaling-governor.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/snipeit.json b/json/snipeit.json index 4be971b9de7..61c09edb992 100644 --- a/json/snipeit.json +++ b/json/snipeit.json @@ -30,6 +30,10 @@ "username": null, "password": null }, - "notes": [] - } - + "notes": [ + { + "text": "Post Install: `https://github.com/community-scripts/ProxmoxVE/discussions/671`", + "type": "info" + } + ] +} diff --git a/json/tdarr.json b/json/tdarr.json index 7667d196873..1e93f2a98bc 100644 --- a/json/tdarr.json +++ b/json/tdarr.json @@ -33,7 +33,7 @@ "notes": [ { "text": "With Privileged/Unprivileged Hardware Acceleration Support", - "type": "warning" + "type": "info" } ] } diff --git a/json/the-lounge.json b/json/the-lounge.json index 94979d3fde6..1733da7d5f9 100644 --- a/json/the-lounge.json +++ b/json/the-lounge.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "The Lounge is running in private mode. Use \"sudo -u thelounge thelounge add name\" to create users.", + "text": "The Lounge is running in private mode. Use `sudo -u thelounge thelounge add name` to create users.", "type": "info" } ] diff --git a/json/turnkey.json b/json/turnkey.json index f9dd1ef54aa..12173eabc8c 100644 --- a/json/turnkey.json +++ b/json/turnkey.json @@ -33,11 +33,11 @@ "notes": [ { "text": "The script creates a `*.creds` file in the Proxmox root directory with the password of the newly created TurnKey LXC Appliance.", - "type": "warning" + "type": "info" }, { "text": "Retrieve Password: `cat turnkey-name.creds`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/umami.json b/json/umami.json index e440ca52064..8c788ba8f6f 100644 --- a/json/umami.json +++ b/json/umami.json @@ -33,7 +33,7 @@ "notes": [ { "text": "To view the database credentials : `cat umami.creds`", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/update-lxcs.json b/json/update-lxcs.json index f5fa9f40853..3be9d3811e5 100644 --- a/json/update-lxcs.json +++ b/json/update-lxcs.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/update-repo.json b/json/update-repo.json index db7b683b77b..9cfc55018ad 100644 --- a/json/update-repo.json +++ b/json/update-repo.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "warning" + "type": "info" } ] } \ No newline at end of file diff --git a/json/webmin.json b/json/webmin.json index b17c4bb5e9a..9f05d09365d 100644 --- a/json/webmin.json +++ b/json/webmin.json @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within an existing LXC Console", - "type": "warning" + "type": "info" } ] } \ No newline at end of file From c0cf76f0d53d2f87900995f9ed318519d5dba0f1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:24:28 +0100 Subject: [PATCH 034/286] Github: Optimize Issue Template & PR Template (#802) * Update bug_report.yml * Update bug_report.yml * Update bug_report.yml * Update bug_report.yml * Update pull_request_template.md --- .github/ISSUE_TEMPLATE/bug_report.yml | 69 +++++++++++++++++++-------- .github/pull_request_template.md | 48 +++++++++++-------- 2 files changed, 77 insertions(+), 40 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 54a11f33a39..f450b99b1ce 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -5,44 +5,64 @@ body: - type: markdown attributes: value: | - **IMPORTANT:** Failure to comply with the following guidelines may result in immediate closure. - - Prior to submitting, kindly search the closed issues to check if the problem you are reporting has already been addressed and resolved. If you come across a closed issue that pertains to your problem, please leave a comment on that issue instead of creating a new one. - - If the default Linux distribution is not adhered to, script support will be discontinued. - - When encountering the error message `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, make sure to run the script in verbose mode to accurately determine the underlying issue. - - For suggestions, questions, or feature/script requests, please use the [Discussions section.](https://github.com/community-scripts/ProxmoxVE/discussions) + # 🐞 **Script Issue Report** + Thank you for taking the time to report an issue! Please provide as much detail as possible to help us address the problem efficiently. + + ## ⚠️ **IMPORTANT** + - 🔍 **Search first:** Before submitting, check if the issue has already been reported or resolved in [closed issues](https://github.com/community-scripts/ProxmoxVE/issues?q=is%3Aissue+is%3Aclosed). If found, comment on that issue instead of creating a new one. + Alternatively, check the **[Discussions](https://github.com/community-scripts/ProxmoxVE/discussions)** under the *"Announcement"* or *"Guide"* categories for relevant information. + - 🛠️ **Supported environments only:** Ensure you are using a default Linux distribution. Custom setups may not be supported. + - 🔎 If you encounter `[ERROR] in line 23: exit code *: while executing command "$@" > /dev/null 2>&1`, rerun the script with verbose mode before submitting the issue. + - 💡 For general questions, feature requests, or suggestions, use the [Discussions section](https://github.com/community-scripts/ProxmoxVE/discussions). - type: input id: guidelines attributes: - label: Please verify that you have read and understood the guidelines. + label: ✅ Have you read and understood the above guidelines? placeholder: "yes" validations: required: true + - type: input + id: script_name + attributes: + label: 📜 What is the name of the script you are using? + placeholder: "e.g., NextcloudPi, Zigbee2MQTT" + validations: + required: true + + - type: input + id: script_command + attributes: + label: 📂 What was the exact command used to execute the script? + placeholder: "e.g., bash -c \"$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/zigbee2mqtt.sh)\" or \"update\"" + validations: + required: true + - type: textarea - id: bug + id: issue_description attributes: - label: A clear and concise description of the issue. + label: 📝 Provide a clear and concise description of the issue. validations: required: true - + - type: checkboxes validations: required: true attributes: - label: What settings are you currently utilizing? + label: ⚙️ What settings are you using? options: - label: Default Settings - label: Advanced Settings - type: markdown attributes: - value: "If using Advanced Settings, please try Default Settings before creating an issue." + value: "💡 **Tip:** If you are using Advanced Settings, please test with Default Settings before submitting an issue." - type: dropdown - id: distribution + id: linux_distribution attributes: - label: Which Linux distribution are you employing? + label: 🖥️ Which Linux distribution are you using? options: - - Alpine @@ -51,21 +71,30 @@ body: - Ubuntu 20.04 - Ubuntu 22.04 - Ubuntu 24.04 + - Ubuntu 24.10 validations: required: true - type: textarea - id: screenshot + id: steps_to_reproduce attributes: - label: If relevant, including screenshots or a code block can be helpful in clarifying the issue. - placeholder: "Code blocks begin and conclude by enclosing the code with three backticks (```) above and below it." + label: 🔄 Steps to reproduce the issue. + placeholder: "e.g., Step 1: ..., Step 2: ..." validations: - required: false + required: true + + - type: textarea + id: error_output + attributes: + label: ❌ Paste the full error output (if available). + placeholder: "Include any relevant logs or error messages." + validations: + required: true - type: textarea - id: reproduce + id: additional_context attributes: - label: Please provide detailed steps to reproduce the issue. - placeholder: "First do this, then this ..." + label: 🖼️ Additional context (optional). + placeholder: "Include screenshots, code blocks (use triple backticks ```), or any other relevant information." validations: required: false diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index f188df3a94d..e6dbcfddb19 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,31 +1,39 @@ -> [!NOTE] -> We are meticulous when it comes to merging code into the main branch, so please understand that we may reject pull requests that do not meet the project's standards. It's never personal. Also, game-related scripts have a lower chance of being merged. +> **🛠️ Note:** +> We are meticulous about merging code into the main branch, so please understand that pull requests not meeting the project's standards may be rejected. It's never personal! +> 🎮 **Note for game-related scripts:** These have a lower likelihood of being merged. -## Description +--- +## ✍️ Description Provide a summary of the changes made and/or reference the issue being addressed. -Fixes # (issue) +- -## Type of change -Please check the relevant option(s): +- - - -- [ ] Bug fix (non-breaking change that resolves an issue) -- [ ] New feature (non-breaking change that adds functionality) -- [ ] Breaking change (a fix or feature that would cause existing functionality to change unexpectedly) -- [ ] New script (a fully functional and thoroughly tested script or set of scripts.) +- Related Issue: # (issue number, if applicable) +- Related PR: # (if applicable) +- Related Discussion: [Link](https://github.com/community-scripts/ProxmoxVE/discussions) -## Prerequisites -The following efforts must be made for the PR to be considered. Please check when completed: -- [ ] Self-review performed (I have reviewed my code, ensuring it follows established patterns and conventions) -- [ ] Testing performed (I have tested my changes, ensuring everything works as expected) -- [ ] Documentation updated (I have updated any relevant documentation) +--- + +## 🛠️ Type of Change +Please check the relevant options: +- [ ] Bug fix (non-breaking change that resolves an issue) +- [ ] New feature (non-breaking change that adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change unexpectedly) +- [ ] New script (a fully functional and thoroughly tested script or set of scripts) -## Additional Information (optional) -Provide any additional context or screenshots about the feature or fix here. +--- + +## ✅ Prerequisites +The following steps must be completed for the pull request to be considered: +- [ ] Self-review performed (I have reviewed my code to ensure it follows established patterns and conventions.) +- [ ] Testing performed (I have thoroughly tested my changes and verified expected functionality.) +- [ ] Documentation updated (I have updated any relevant documentation) +--- -## Related Pull Requests / Discussions +## 📋 Additional Information (optional) +Provide any extra context or screenshots about the feature or fix here. -If there are other pull requests or discussions related to this change, please link them here: -- Related PR # From 0573adc83cfda0ce21de538b132b89dbcd1389ed Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:27:53 +0100 Subject: [PATCH 035/286] Update CHANGELOG.md (#814) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ae8764da47..ca8c46f43be 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,15 @@ Do not break established syntax in this file, as it is automatically updated by - Fix config bug in Alpine Vaultwarden [@havardthom](https://github.com/havardthom) ([#775](https://github.com/community-scripts/ProxmoxVE/pull/775)) +### 🌐 Website + +- Update some JSON Files for Website [@MickLesk](https://github.com/MickLesk) ([#812](https://github.com/community-scripts/ProxmoxVE/pull/812)) +- Update Notes & Documentation for Proxmox Backup Server [@MickLesk](https://github.com/MickLesk) ([#804](https://github.com/community-scripts/ProxmoxVE/pull/804)) + +### 🧰 Maintenance + +- Github: Optimize Issue Template & PR Template [@MickLesk](https://github.com/MickLesk) ([#802](https://github.com/community-scripts/ProxmoxVE/pull/802)) + ## 2024-12-12 ### Changed From 2d9fcbb635381bb6d1bffa73cb4c39feecadf7ba Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 13 Dec 2024 17:55:04 +0100 Subject: [PATCH 036/286] Update keycloak.sh (#762) --- ct/keycloak.sh | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 5dad21ca447..4b6a9b2399b 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -65,18 +65,14 @@ apt-get update &>/dev/null apt-get -y upgrade &>/dev/null RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -msg_info "Downloading Keycloak v$RELEASE" +msg_info "Updating Keycloak to v$RELEASE" cd /opt wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz -$STD tar -xvf keycloak-$RELEASE.tar.gz - -msg_info "Merging configuration files" -cp -r keycloak/conf keycloak-$RELEASE -cp -r keycloak/providers keycloak-$RELEASE -cp -r keycloak/themes keycloak-$RELEASE - -msg_info "Updating Keycloak" mv keycloak keycloak.old +tar -xzf keycloak-$RELEASE.tar.gz +cp -r keycloak.old/conf keycloak-$RELEASE +cp -r keycloak.old/providers keycloak-$RELEASE +cp -r keycloak.old/themes keycloak-$RELEASE mv keycloak-$RELEASE keycloak msg_info "Delete temporary installation files" From 69fe6884186f4c55d421cf62f67b08aaa1c84f1c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 19:43:14 +0100 Subject: [PATCH 037/286] Update CHANGELOG.md (#817) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca8c46f43be..b13b8dd5aef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Keycloak Update Function [@MickLesk](https://github.com/MickLesk) ([#762](https://github.com/community-scripts/ProxmoxVE/pull/762)) - Fix config bug in Alpine Vaultwarden [@havardthom](https://github.com/havardthom) ([#775](https://github.com/community-scripts/ProxmoxVE/pull/775)) ### 🌐 Website From ca902c50fb07bd06864fdc68aaa715381a53928f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 13 Dec 2024 22:52:37 +0100 Subject: [PATCH 038/286] Change MISC from red to green (#815) --- frontend/src/components/CommandMenu.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/components/CommandMenu.tsx b/frontend/src/components/CommandMenu.tsx index 31d9dc12a52..1f03d6ba398 100644 --- a/frontend/src/components/CommandMenu.tsx +++ b/frontend/src/components/CommandMenu.tsx @@ -26,7 +26,7 @@ export const formattedBadge = (type: string) => { LXC ); case "misc": - return MISC; + return MISC; } return null; }; From bcc6342f83dd2af3fe9c01db7777e3112709e9b7 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 13 Dec 2024 22:55:08 +0100 Subject: [PATCH 039/286] Update CHANGELOG.md (#820) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b13b8dd5aef..096c6f41178 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Change MISC from red to green [@MickLesk](https://github.com/MickLesk) ([#815](https://github.com/community-scripts/ProxmoxVE/pull/815)) - Update some JSON Files for Website [@MickLesk](https://github.com/MickLesk) ([#812](https://github.com/community-scripts/ProxmoxVE/pull/812)) - Update Notes & Documentation for Proxmox Backup Server [@MickLesk](https://github.com/MickLesk) ([#804](https://github.com/community-scripts/ProxmoxVE/pull/804)) From 315949b4460e1d071c685fb58f4f0856b5b6bebe Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:41:51 +0100 Subject: [PATCH 040/286] Massive Update: build.func | install.func | create_lxc.sh (Part 1) (#643) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Big Update: Build.func Install.Func Create_LXC * Change Author Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Fix indentation / naming / echos * Fix some Parts * Add alpine-install.func * update alpine to 3.20 * fix spaces * Update build.func * Merge Create_LXC from DEV * Merge from DEV * Merge from DEV --------- Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> --- ct/alpine.sh | 2 +- ct/create_lxc.sh | 49 ++++-- misc/alpine-install.func | 88 ++++++++-- misc/build.func | 359 +++++++++++++++++++++++++++------------ misc/install.func | 110 ++++++++---- 5 files changed, 435 insertions(+), 173 deletions(-) diff --git a/ct/alpine.sh b/ct/alpine.sh index d6944dc0f9d..5d8fab53054 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -24,7 +24,7 @@ var_disk="0.1" var_cpu="1" var_ram="512" var_os="alpine" -var_version="3.19" +var_version="3.20" variables color catch_errors diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh index aae2fcba0cd..46f5290211c 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -2,6 +2,7 @@ # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) +# Co-Author: MickLesk # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -9,15 +10,25 @@ # if [ "$VERBOSE" == "yes" ]; then set -x; fi # This function sets color variables for formatting output in the terminal +# Colors YW=$(echo "\033[33m") +YWB=$(echo "\033[93m") BL=$(echo "\033[36m") RD=$(echo "\033[01;31m") GN=$(echo "\033[1;92m") + +# Formatting CL=$(echo "\033[m") -CM="${GN}✓${CL}" -CROSS="${RD}✗${CL}" +UL=$(echo "\033[4m") +BOLD=$(echo "\033[1m") BFR="\\r\\033[K" HOLD=" " +TAB=" " + +# Icons +CM="${TAB}✔️${TAB}${CL}" +CROSS="${TAB}✖️${TAB}${CL}" +INFO="${TAB}💡${TAB}${CL}" # This sets error handling options and defines the error_handler function to handle errors set -Eeuo pipefail @@ -36,19 +47,24 @@ function error_handler() { # This function displays a spinner. function spinner() { - local chars="/-\|" - local spin_i=0 - printf "\e[?25l" - while true; do - printf "\r \e[36m%s\e[0m" "${chars:spin_i++%${#chars}:1}" - sleep 0.1 - done + local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') + local spin_i=0 + local interval=0.1 + printf "\e[?25l" + + local color="${YWB}" + + while true; do + printf "\r ${color}%s${CL}" "${frames[spin_i]}" + spin_i=$(( (spin_i + 1) % ${#frames[@]} )) + sleep "$interval" + done } # This function displays an informational message with a yellow color. function msg_info() { local msg="$1" - echo -ne " ${HOLD} ${YW}${msg} " + echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" spinner & SPINNER_PID=$! } @@ -58,7 +74,7 @@ function msg_ok() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" + echo -e "${BFR}${CM}${GN}${msg}${CL}" } # This function displays a error message with a red color. @@ -66,7 +82,7 @@ function msg_error() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } # This checks for the presence of valid Container Storage and Template Storage locations @@ -105,7 +121,7 @@ function select_storage() { local TAG=$(echo $line | awk '{print $1}') local TYPE=$(echo $line | awk '{printf "%-10s", $2}') local FREE=$(echo $line | numfmt --field 4-6 --from-unit=K --to=iec --format %.2f | awk '{printf( "%9sB", $6)}') - local ITEM=" Type: $TYPE Free: $FREE " + local ITEM="Type: $TYPE Free: $FREE " local OFFSET=2 if [[ $((${#ITEM} + $OFFSET)) -gt ${MSG_MAX_LENGTH:-} ]]; then local MSG_MAX_LENGTH=$((${#ITEM} + $OFFSET)) @@ -123,11 +139,14 @@ function select_storage() { "Which storage pool you would like to use for the ${CONTENT_LABEL,,}?\nTo make a selection, use the Spacebar.\n" \ 16 $(($MSG_MAX_LENGTH + 23)) 6 \ "${MENU[@]}" 3>&1 1>&2 2>&3) || exit "Menu aborted." + if [ $? -ne 0 ]; then + echo -e "${CROSS}${RD} Menu aborted by user.${CL}" + exit 0 + fi done - printf $STORAGE + printf "%s" "$STORAGE" fi } - # Test if required variables are set [[ "${CTID:-}" ]] || exit "You need to set 'CTID' variable." [[ "${PCT_OSTYPE:-}" ]] || exit "You need to set 'PCT_OSTYPE' variable." diff --git a/misc/alpine-install.func b/misc/alpine-install.func index 175b8ca767a..e8244baa2e0 100644 --- a/misc/alpine-install.func +++ b/misc/alpine-install.func @@ -1,20 +1,42 @@ +# Copyright (c) 2021-2024 tteck +# Author: tteck (tteckster) +# Co-Author: MickLesk +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +# This function sets color variables for formatting output in the terminal color() { + # Colors YW=$(echo "\033[33m") + YWB=$(echo "\033[93m") BL=$(echo "\033[36m") RD=$(echo "\033[01;31m") - BGN=$(echo "\033[4;92m") GN=$(echo "\033[1;92m") - DGN=$(echo "\033[32m") + + # Formatting CL=$(echo "\033[m") + BFR="\\r\\033[K" + BOLD=$(echo "\033[1m") + TAB=" " + + # System RETRY_NUM=10 RETRY_EVERY=3 i=$RETRY_NUM - CM="${GN}✓${CL}" - CROSS="${RD}✗${CL}" - BFR="\\r\\033[K" - HOLD="-" + + # Icons + CM="${TAB}✔️${TAB}${CL}" + CROSS="${TAB}✖️${TAB}${CL}" + INFO="${TAB}💡${TAB}${CL}" + NETWORK="${TAB}📡${TAB}${CL}" + OS="${TAB}🖥️${TAB}${CL}" + OSVERSION="${TAB}🌟${TAB}${CL}" + HOSTNAME="${TAB}🏠${TAB}${CL}" + GATEWAY="${TAB}🌐${TAB}${CL}" + DEFAULT="${TAB}⚙️${TAB}${CL}" } +# This function enables IPv6 if it's not disabled and sets verbose mode if the global variable is set to "yes" verb_ip6() { if [ "$VERBOSE" = "yes" ]; then STD="" @@ -27,11 +49,13 @@ verb_ip6() { fi } +# This function catches errors and handles them with the error handler function catch_errors() { set -Eeuo pipefail trap 'error_handler $LINENO "$BASH_COMMAND"' ERR } +# This function handles errors error_handler() { local exit_code="$?" local line_number="$1" @@ -40,21 +64,25 @@ error_handler() { echo -e "\n$error_message\n" } +# This function displays an informational message with a yellow color. msg_info() { local msg="$1" - echo -ne " ${HOLD} ${YW}${msg}..." + echo -ne " ${TAB}${YW}${msg}" } +# This function displays a success message with a green color. msg_ok() { local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" + echo -e "${BFR}${CM}${GN}${msg}${CL}" } +# This function displays a error message with a red color. msg_error() { local msg="$1" - echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } +# This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection setting_up_container() { msg_info "Setting up Container OS" while [ $i -gt 0 ]; do @@ -68,23 +96,26 @@ setting_up_container() { if [ "$(ip addr show | grep 'inet ' | grep -v '127.0.0.1' | awk '{print $2}' | cut -d'/' -f1)" = "" ]; then echo 1>&2 -e "\n${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}" - echo -e " 🖧 Check Network Settings" + echo -e "${NETWORK}Check Network Settings" exit 1 fi msg_ok "Set up Container OS" msg_ok "Network Connected: ${BL}$(ip addr show | grep 'inet ' | awk '{print $2}' | cut -d'/' -f1 | tail -n1)${CL}" } +# This function checks the network connection by pinging a known IP address and prompts the user to continue if the internet is not connected network_check() { set +e trap - ERR - if ping -c 1 -W 1 1.1.1.1 &>/dev/null; then msg_ok "Internet Connected"; else + if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then + msg_ok "Internet Connected"; + else msg_error "Internet NOT Connected" read -r -p "Would you like to continue anyway? " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then - echo -e " ⚠️ ${RD}Expect Issues Without Internet${CL}" + echo -e "${INFO}${RD}Expect Issues Without Internet${CL}" else - echo -e " 🖧 Check Network Settings" + echo -e "${NETWORK}Check Network Settings" exit 1 fi fi @@ -94,6 +125,7 @@ network_check() { trap 'error_handler $LINENO "$BASH_COMMAND"' ERR } +# This function updates the Container OS by running apt-get update and upgrade update_os() { msg_info "Updating Container OS" $STD apk update @@ -101,20 +133,46 @@ update_os() { msg_ok "Updated Container OS" } +# This function modifies the message of the day (motd) and SSH settings motd_ssh() { + # Set terminal to 256-color mode echo "export TERM='xterm-256color'" >>/root/.bashrc - echo -e "$APPLICATION LXC provided by https://Helper-Scripts.com/\n" >/etc/motd + IP=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1) + # Get OS information + if [ -f "/etc/os-release" ]; then + OS_NAME=$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '"') + OS_VERSION=$(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '"') + else + OS_NAME="Alpine Linux" + OS_VERSION="Unknown" + fi + # Set MOTD with application info and system details + MOTD_FILE="/etc/motd" + if [ -f "$MOTD_FILE" ]; then + echo -e "\n${BOLD}${APPLICATION} LXC Container${CL}" > "$MOTD_FILE" + echo -e "${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| Project: ${GN}ProxmoxVE ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\n" >> "$MOTD_FILE" + echo -e "${TAB}${OS}${YW} OS: ${GN}${OS_NAME} ${OS_VERSION}${CL}" >> "$MOTD_FILE" + echo -e "${TAB}${HOSTNAME}${YW} Hostname: ${GN}$(hostname)${CL}" >> "$MOTD_FILE" + echo -e "${TAB}${INFO}${YW} IP Address: ${GN}${IP}${CL}" >> "$MOTD_FILE" + else + echo -e "${RD}[WARNING] MOTD file does not exist!${CL}" >&2 + fi + # Configure SSH if enabled if [[ "${SSH_ROOT}" == "yes" ]]; then + # Enable sshd service $STD rc-update add sshd + # Allow root login via SSH sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config + # Start the sshd service $STD /etc/init.d/sshd start fi } +# This function customizes the container and enables passwordless login for the root user customize() { if [[ "$PASSWORD" == "" ]]; then msg_info "Customizing Container" bash -c "passwd -d root" >/dev/null 2>&1 msg_ok "Customized Container" fi -} +} \ No newline at end of file diff --git a/misc/build.func b/misc/build.func index 17a87765e24..82dcacf9bd8 100644 --- a/misc/build.func +++ b/misc/build.func @@ -1,3 +1,9 @@ +# Copyright (c) 2021-2024 tteck +# Author: tteck (tteckster) +# Co-Author: MickLesk +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + variables() { NSAPP=$(echo ${APP,,} | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces. var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP. @@ -6,6 +12,7 @@ variables() { # This function sets various color variables using ANSI escape codes for formatting text in the terminal. color() { + # Colors YW=$(echo "\033[33m") YWB=$(echo "\033[93m") BL=$(echo "\033[36m") @@ -13,11 +20,39 @@ color() { BGN=$(echo "\033[4;92m") GN=$(echo "\033[1;92m") DGN=$(echo "\033[32m") + + # Formatting CL=$(echo "\033[m") - CM="${GN}✓${CL}" - CROSS="${RD}✗${CL}" + UL=$(echo "\033[4m") + BOLD=$(echo "\033[1m") BFR="\\r\\033[K" HOLD=" " + TAB=" " + + # Icons + CM="${TAB}✔️${TAB}${CL}" + CROSS="${TAB}✖️${TAB}${CL}" + INFO="${TAB}💡${TAB}${CL}" + OS="${TAB}🖥️${TAB}${CL}" + OSVERSION="${TAB}🌟${TAB}${CL}" + CONTAINERTYPE="${TAB}📦${TAB}${CL}" + DISKSIZE="${TAB}💾${TAB}${CL}" + CPUCORE="${TAB}🧠${TAB}${CL}" + RAMSIZE="${TAB}🛠️${TAB}${CL}" + SEARCH="${TAB}🔍${TAB}${CL}" + VERIFYPW="${TAB}🔐${TAB}${CL}" + CONTAINERID="${TAB}🆔${TAB}${CL}" + HOSTNAME="${TAB}🏠${TAB}${CL}" + BRIDGE="${TAB}🌉${TAB}${CL}" + NETWORK="${TAB}📡${TAB}${CL}" + GATEWAY="${TAB}🌐${TAB}${CL}" + DISABLEIPV6="${TAB}🚫${TAB}${CL}" + DEFAULT="${TAB}⚙️${TAB}${CL}" + MACADDRESS="${TAB}🔗${TAB}${CL}" + VLANTAG="${TAB}🏷️${TAB}${CL}" + ROOTSSH="${TAB}🔑${TAB}${CL}" + CREATING="${TAB}🚀${TAB}${CL}" + ADVANCED="${TAB}🧩${TAB}${CL}" } # This function enables error handling in the script by setting options and defining a trap for the ERR signal. @@ -39,19 +74,24 @@ error_handler() { # This function displays a spinner. spinner() { - local chars="/-\|" - local spin_i=0 - printf "\e[?25l" - while true; do - printf "\r \e[36m%s\e[0m" "${chars:spin_i++%${#chars}:1}" - sleep 0.1 - done + local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') + local spin_i=0 + local interval=0.1 + printf "\e[?25l" + + local color="${YWB}" + + while true; do + printf "\r ${color}%s${CL}" "${frames[spin_i]}" + spin_i=$(( (spin_i + 1) % ${#frames[@]} )) + sleep "$interval" + done } # This function displays an informational message with a yellow color. msg_info() { local msg="$1" - echo -ne " ${HOLD} ${YW}${msg} " + echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" spinner & SPINNER_PID=$! } @@ -61,7 +101,7 @@ msg_ok() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" + echo -e "${BFR}${CM}${GN}${msg}${CL}" } # This function displays a error message with a red color. @@ -69,7 +109,7 @@ msg_error() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } # Check if the shell is using bash @@ -97,7 +137,7 @@ root_check() { # This function checks the version of Proxmox Virtual Environment (PVE) and exits if the version is not supported. pve_check() { if ! pveversion | grep -Eq "pve-manager/8.[1-3]"; then - msg_error "This version of Proxmox Virtual Environment is not supported" + msg_error "${CROSS}${RD}This version of Proxmox Virtual Environment is not supported" echo -e "Requires Proxmox Virtual Environment Version 8.1 or later." echo -e "Exiting..." sleep 2 @@ -108,17 +148,27 @@ fi # This function checks the system architecture and exits if it's not "amd64". arch_check() { if [ "$(dpkg --print-architecture)" != "amd64" ]; then - echo -e "\n ${CROSS} This script will not work with PiMox! \n" - echo -e "\n Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n" + echo -e "\n ${INFO}${YWB}This script will not work with PiMox! \n" + echo -e "\n ${YWB}Visit https://github.com/asylumexp/Proxmox for ARM64 support. \n" echo -e "Exiting..." sleep 2 exit fi } +# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. +header_info() { + apt-get install -y figlet &> /dev/null + ascii_art=$(figlet -f slant "$APP") + clear + cat </dev/null 2>&1 && [ -n "${SSH_CLIENT:+x}" ]; then + if [ -n "${SSH_CLIENT:+x}" ]; then if whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "SSH DETECTED" --yesno "It's advisable to utilize the Proxmox shell rather than SSH, as there may be potential complications with variable retrieval. Proceed using SSH?" 10 72; then whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox --title "Proceed using SSH" "You've chosen to proceed using SSH. If any issues arise, please run the script in the Proxmox shell before creating a repository issue." 10 72 else @@ -129,36 +179,74 @@ ssh_check() { fi } +base_settings() { + # Default Settings + CT_TYPE="1" + DISK_SIZE="4" + CORE_COUNT="1" + RAM_SIZE="1024" + VERBOSE="${1:-no}" + PW="" + CT_ID=$NEXTID + HN=$NSAPP + BRG="vmbr0" + NET="dhcp" + GATE="" + APT_CACHER="" + APT_CACHER_IP="" + DISABLEIP6="no" + MTU="" + SD="" + NS="" + MAC="" + VLAN="" + SSH="no" + TAGS="community-script;" + + # Override default settings with variables from ct script + CT_TYPE=${var_privileged:-$CT_TYPE} + DISK_SIZE=${var_disk:-$DISK_SIZE} + CORE_COUNT=${var_cpu:-$CORE_COUNT} + RAM_SIZE=${var_ram:-$RAM_SIZE} + VERB=${var_verbose:-$VERBOSE} + TAGS="${TAGS}${var_tags:-}" + + # Since these 2 are only defined outside of default_settings function, we add a temporary fallback. TODO: To align everything, we should add these as constant variables (e.g. OSTYPE and OSVERSION), but that would currently require updating the default_settings function for all existing scripts + if [ -z "$var_os" ]; then + var_os="debian" + fi + if [ -z "$var_version" ]; then + var_version="12" + fi +} + # This function displays the default values for various settings. echo_default() { - echo -e "${DGN}Using Distribution: ${BGN}$var_os${CL}" - echo -e "${DGN}Using $var_os Version: ${BGN}$var_version${CL}" - echo -e "${DGN}Using Container Type: ${BGN}$CT_TYPE${CL}" - echo -e "${DGN}Using Root Password: ${BGN}Automatic Login${CL}" - echo -e "${DGN}Using Container ID: ${BGN}$NEXTID${CL}" - echo -e "${DGN}Using Hostname: ${BGN}$NSAPP${CL}" - echo -e "${DGN}Using Disk Size: ${BGN}$var_disk${CL}${DGN}GB${CL}" - echo -e "${DGN}Allocated Cores ${BGN}$var_cpu${CL}" - echo -e "${DGN}Allocated Ram ${BGN}$var_ram${CL}" - echo -e "${DGN}Using Bridge: ${BGN}vmbr0${CL}" - echo -e "${DGN}Using Static IP Address: ${BGN}dhcp${CL}" - echo -e "${DGN}Using Gateway IP Address: ${BGN}Default${CL}" - echo -e "${DGN}Using Apt-Cacher IP Address: ${BGN}Default${CL}" - echo -e "${DGN}Disable IPv6: ${BGN}No${CL}" - echo -e "${DGN}Using Interface MTU Size: ${BGN}Default${CL}" - echo -e "${DGN}Using DNS Search Domain: ${BGN}Host${CL}" - echo -e "${DGN}Using DNS Server Address: ${BGN}Host${CL}" - echo -e "${DGN}Using MAC Address: ${BGN}Default${CL}" - echo -e "${DGN}Using VLAN Tag: ${BGN}Default${CL}" - echo -e "${DGN}Enable Root SSH Access: ${BGN}No${CL}" - echo -e "${DGN}Enable Verbose Mode: ${BGN}No${CL}" - echo -e "${BL}Creating a ${APP} LXC using the above default settings${CL}" + # Convert CT_TYPE to description + CT_TYPE_DESC="Unprivileged" + if [ "$CT_TYPE" -eq 0 ]; then + CT_TYPE_DESC="Privileged" + fi + + # Output the selected values with icons + echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MB${CL}" + echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}" + if [ "$VERB" == "yes" ]; then + echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}" + fi + echo -e "${CREATING}${BOLD}${BL}Creating a ${APP} LXC using the above default settings${CL}" + echo -e " " } # This function is called when the user decides to exit the script. It clears the screen and displays an exit message. -exit-script() { +exit_script() { clear - echo -e "⚠ User exited script \n" + echo -e "\n${CROSS}${RD}User exited script${CL}\n" exit } @@ -174,10 +262,10 @@ advanced_settings() { "ubuntu" "" OFF \ 3>&1 1>&2 2>&3); then if [ -n "$var_os" ]; then - echo -e "${DGN}Using Distribution: ${BGN}$var_os${CL}" + echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}" fi else - exit-script + exit_script fi done fi @@ -190,10 +278,10 @@ advanced_settings() { "12" "Bookworm" OFF \ 3>&1 1>&2 2>&3); then if [ -n "$var_version" ]; then - echo -e "${DGN}Using $var_os Version: ${BGN}$var_version${CL}" + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" fi else - exit-script + exit_script fi done fi @@ -201,20 +289,24 @@ advanced_settings() { if [ "$var_os" == "ubuntu" ]; then var_version="" while [ -z "$var_version" ]; do - if var_version=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 3 \ + if var_version=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "UBUNTU VERSION" --radiolist "Choose Version" 10 58 4 \ "20.04" "Focal" OFF \ "22.04" "Jammy" OFF \ "24.04" "Noble" OFF \ - 3>&1 1>&2 2>&3); then + "24.10" "Oracular" OFF \ + 3>&1 1>&2 2>&3); then if [ -n "$var_version" ]; then - echo -e "${DGN}Using $var_os Version: ${BGN}$var_version${CL}" + echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${CL}" fi else - exit-script + exit_script fi done fi + # Setting Default Tag for Advanced Settings + TAGS="community-script;" + CT_TYPE="" while [ -z "$CT_TYPE" ]; do if CT_TYPE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CONTAINER TYPE" --radiolist "Choose Type" 10 58 2 \ @@ -222,10 +314,14 @@ advanced_settings() { "0" "Privileged" OFF \ 3>&1 1>&2 2>&3); then if [ -n "$CT_TYPE" ]; then - echo -e "${DGN}Using Container Type: ${BGN}$CT_TYPE${CL}" + CT_TYPE_DESC="Unprivileged" + if [ "$CT_TYPE" -eq 0 ]; then + CT_TYPE_DESC="Privileged" + fi + echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" fi else - exit-script + exit_script fi done @@ -240,23 +336,23 @@ advanced_settings() { if PW2=$(whiptail --backtitle "Proxmox VE Helper Scripts" --passwordbox "\nVerify Root Password" 9 58 --title "PASSWORD VERIFICATION" 3>&1 1>&2 2>&3); then if [[ "$PW1" == "$PW2" ]]; then PW="-password $PW1" - echo -e "${DGN}Using Root Password: ${BGN}********${CL}" + echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}********${CL}" break else whiptail --msgbox "Passwords do not match. Please try again." 8 58 fi else - exit-script + exit_script fi fi else PW1="Automatic Login" PW="" - echo -e "${DGN}Using Root Password: ${BGN}$PW1${CL}" + echo -e "${VERIFYPW}${BOLD}${DGN}Root Password: ${BGN}$PW1${CL}" break fi else - exit-script + exit_script fi done @@ -264,9 +360,9 @@ advanced_settings() { if CT_ID=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Container ID" 8 58 $NEXTID --title "CONTAINER ID" 3>&1 1>&2 2>&3); then if [ -z "$CT_ID" ]; then CT_ID="$NEXTID" - echo -e "${DGN}Using Container ID: ${BGN}$CT_ID${CL}" + echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" else - echo -e "${DGN}Container ID: ${BGN}$CT_ID${CL}" + echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}$CT_ID${CL}" fi else exit @@ -278,57 +374,57 @@ advanced_settings() { else HN=$(echo ${CT_NAME,,} | tr -d ' ') fi - echo -e "${DGN}Using Hostname: ${BGN}$HN${CL}" + echo -e "${HOSTNAME}${BOLD}${DGN}Hostname: ${BGN}$HN${CL}" else - exit-script + exit_script fi if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then if [ -z "$DISK_SIZE" ]; then DISK_SIZE="$var_disk" - echo -e "${DGN}Using Disk Size: ${BGN}$DISK_SIZE${CL}" + echo -e "${DISKSIZE}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" else if ! [[ $DISK_SIZE =~ $INTEGER ]]; then - echo -e "${RD}⚠ DISK SIZE MUST BE AN INTEGER NUMBER!${CL}" + echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}" advanced_settings fi - echo -e "${DGN}Using Disk Size: ${BGN}$DISK_SIZE${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" fi else - exit-script + exit_script fi if CORE_COUNT=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate CPU Cores" 8 58 $var_cpu --title "CORE COUNT" 3>&1 1>&2 2>&3); then if [ -z "$CORE_COUNT" ]; then CORE_COUNT="$var_cpu" - echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" else - echo -e "${DGN}Allocated Cores: ${BGN}$CORE_COUNT${CL}" + echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}$CORE_COUNT${CL}" fi else - exit-script + exit_script fi if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then if [ -z "$RAM_SIZE" ]; then RAM_SIZE="$var_ram" - echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" else - echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" fi else - exit-script + exit_script fi if BRG=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Bridge" 8 58 vmbr0 --title "BRIDGE" 3>&1 1>&2 2>&3); then if [ -z "$BRG" ]; then BRG="vmbr0" - echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}" + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" else - echo -e "${DGN}Using Bridge: ${BGN}$BRG${CL}" + echo -e "${BRIDGE}${BOLD}${DGN}Bridge: ${BGN}$BRG${CL}" fi else - exit-script + exit_script fi while true; do @@ -336,18 +432,18 @@ advanced_settings() { exit_status=$? if [ $exit_status -eq 0 ]; then if [ "$NET" = "dhcp" ]; then - echo -e "${DGN}Using IP Address: ${BGN}$NET${CL}" + echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" break else if [[ "$NET" =~ ^([0-9]{1,3}\.){3}[0-9]{1,3}/([0-9]|[1-2][0-9]|3[0-2])$ ]]; then - echo -e "${DGN}Using IP Address: ${BGN}$NET${CL}" + echo -e "${NETWORK}${BOLD}${DGN}IP Address: ${BGN}$NET${CL}" break else whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "$NET is an invalid IPv4 CIDR address. Please enter a valid IPv4 CIDR address or 'dhcp'" 8 58 fi fi else - exit-script + exit_script fi done @@ -360,13 +456,13 @@ advanced_settings() { whiptail --backtitle "Proxmox VE Helper Scripts" --msgbox "Invalid IP address format" 8 58 else GATE=",gw=$GATE1" - echo -e "${DGN}Using Gateway IP Address: ${BGN}$GATE1${CL}" + echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}$GATE1${CL}" break fi done else GATE="" - echo -e "${DGN}Using Gateway IP Address: ${BGN}Default${CL}" + echo -e "${GATEWAY}${BOLD}${DGN}Gateway IP Address: ${BGN}Default${CL}" fi if [ "$var_os" == "alpine" ]; then @@ -375,9 +471,9 @@ advanced_settings() { else if APT_CACHER_IP=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set APT-Cacher IP (leave blank for default)" 8 58 --title "APT-Cacher IP" 3>&1 1>&2 2>&3); then APT_CACHER="${APT_CACHER_IP:+yes}" - echo -e "${DGN}Using APT-Cacher IP Address: ${BGN}${APT_CACHER_IP:-Default}${CL}" + echo -e "${NETWORK}${BOLD}${DGN}APT-Cacher IP Address: ${BGN}${APT_CACHER_IP:-Default}${CL}" else - exit-script + exit_script fi fi @@ -386,7 +482,7 @@ advanced_settings() { else DISABLEIP6="no" fi - echo -e "${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}" + echo -e "${DISABLEIPV6}${BOLD}${DGN}Disable IPv6: ${BGN}$DISABLEIP6${CL}" if MTU1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Interface MTU Size (leave blank for default)" 8 58 --title "MTU SIZE" 3>&1 1>&2 2>&3); then if [ -z $MTU1 ]; then @@ -395,9 +491,9 @@ advanced_settings() { else MTU=",mtu=$MTU1" fi - echo -e "${DGN}Using Interface MTU Size: ${BGN}$MTU1${CL}" + echo -e "${DEFAULT}${BOLD}${DGN}Interface MTU Size: ${BGN}$MTU1${CL}" else - exit-script + exit_script fi if SD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Search Domain (leave blank for HOST)" 8 58 --title "DNS Search Domain" 3>&1 1>&2 2>&3); then @@ -408,9 +504,9 @@ advanced_settings() { SX=$SD SD="-searchdomain=$SD" fi - echo -e "${DGN}Using DNS Search Domain: ${BGN}$SX${CL}" + echo -e "${SEARCH}${BOLD}${DGN}DNS Search Domain: ${BGN}$SX${CL}" else - exit-script + exit_script fi if NX=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a DNS Server IP (leave blank for HOST)" 8 58 --title "DNS SERVER IP" 3>&1 1>&2 2>&3); then @@ -420,9 +516,9 @@ advanced_settings() { else NS="-nameserver=$NX" fi - echo -e "${DGN}Using DNS Server IP Address: ${BGN}$NX${CL}" + echo -e "${NETWORK}${BOLD}${DGN}DNS Server IP Address: ${BGN}$NX${CL}" else - exit-script + exit_script fi if MAC1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a MAC Address(leave blank for default)" 8 58 --title "MAC ADDRESS" 3>&1 1>&2 2>&3); then @@ -431,10 +527,10 @@ advanced_settings() { MAC="" else MAC=",hwaddr=$MAC1" - echo -e "${DGN}Using MAC Address: ${BGN}$MAC1${CL}" + echo -e "${MACADDRESS}${BOLD}${DGN}MAC Address: ${BGN}$MAC1${CL}" fi else - exit-script + exit_script fi if VLAN1=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set a Vlan(leave blank for default)" 8 58 --title "VLAN" 3>&1 1>&2 2>&3); then @@ -444,9 +540,9 @@ advanced_settings() { else VLAN=",tag=$VLAN1" fi - echo -e "${DGN}Using Vlan: ${BGN}$VLAN1${CL}" + echo -e "${VLANTAG}${BOLD}${DGN}Vlan: ${BGN}$VLAN1${CL}" else - exit-script + exit_script fi if [[ "$PW" == -password* ]]; then @@ -455,10 +551,10 @@ advanced_settings() { else SSH="no" fi - echo -e "${DGN}Enable Root SSH Access: ${BGN}$SSH${CL}" + echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" else SSH="no" - echo -e "${DGN}Enable Root SSH Access: ${BGN}$SSH${CL}" + echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}" fi if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then @@ -466,14 +562,14 @@ advanced_settings() { else VERB="no" fi - echo -e "${DGN}Enable Verbose Mode: ${BGN}$VERB${CL}" + echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}$VERB${CL}" if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "ADVANCED SETTINGS COMPLETE" --yesno "Ready to create ${APP} LXC?" 10 58); then - echo -e "${RD}Creating a ${APP} LXC using the above advanced settings${CL}" + echo -e "${CREATING}${BOLD}${RD}Creating a ${APP} LXC using the above advanced settings${CL}" else clear header_info - echo -e "${RD}Using Advanced Settings${CL}" + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" advanced_settings fi } @@ -491,15 +587,51 @@ install_script() { NEXTID=$(pvesh get /cluster/nextid) timezone=$(cat /etc/timezone) header_info - if (whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --yesno "Use Default Settings?" --no-button Advanced 10 58); then - header_info - echo -e "${BL}Using Default Settings${CL}" - default_settings - else - header_info - echo -e "${RD}Using Advanced Settings${CL}" - advanced_settings - fi + while true; do + CHOICE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SETTINGS" --menu "Choose an option:" \ + 12 50 4 \ + "1" "Default Settings" \ + "2" "Default Settings (with verbose)" \ + "3" "Advanced Settings" \ + "4" "Exit" --nocancel --default-item "1" 3>&1 1>&2 2>&3) + + if [ $? -ne 0 ]; then + echo -e "${CROSS}${RD} Menu canceled. Exiting.${CL}" + exit 0 + fi + + case $CHOICE in + 1) + header_info + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings${CL}" + VERB="no" + base_settings "$VERB" + echo_default + break + ;; + 2) + header_info + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings (${SEARCH} Verbose)${CL}" + VERB="yes" + base_settings "$VERB" + echo_default + break + ;; + 3) + header_info + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" + advanced_settings + break + ;; + 4) + echo -e "${CROSS}${RD}Exiting.${CL}" + exit 0 + ;; + *) + echo -e "${CROSS}${RD}Invalid option, please try again.${CL}" + ;; + esac + done } check_container_resources() { @@ -509,9 +641,14 @@ check_container_resources() { # Check whether the current RAM is less than the required RAM or the CPU cores are less than required if [[ "$current_ram" -lt "$var_ram" ]] || [[ "$current_cpu" -lt "$var_cpu" ]]; then - echo -e "\n⚠️${HOLD} ${GN}Required: ${var_cpu} CPU, ${var_ram}MB RAM ${CL}| ${RD}Current: ${current_cpu} CPU, ${current_ram}MB RAM${CL}" + echo -e "\n${INFO}${HOLD} ${GN}Required: ${var_cpu} CPU, ${var_ram}MB RAM ${CL}| ${RD}Current: ${current_cpu} CPU, ${current_ram}MB RAM${CL}" echo -e "${YWB}Please ensure that the ${APP} LXC is configured with at least ${var_cpu} vCPU and ${var_ram} MB RAM for the build process.${CL}\n" - exit 1 + read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC? " prompt + # Check if the input is 'yes', otherwise exit with status 1 + if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then + echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}" + exit 1 + fi else echo -e "" fi @@ -524,11 +661,11 @@ check_container_storage() { usage=$(( 100 * used_size / total_size )) if (( usage > 80 )); then # Prompt the user for confirmation to continue - echo -e "⚠️${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}" + echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}" read -r -p "Continue anyway? " prompt # Check if the input is 'y' or 'yes', otherwise exit with status 1 if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then - echo -e "❌${HOLD} ${YWB}Exiting based on user input.${CL}" + echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}" exit 1 fi fi @@ -538,7 +675,7 @@ start() { if command -v pveversion >/dev/null 2>&1; then if ! (whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC" --yesno "This will create a New ${APP} LXC. Proceed?" 10 58); then clear - echo -e "⚠ User exited script \n" + exit_script exit fi SPINNER_PID="" @@ -548,7 +685,7 @@ start() { if ! command -v pveversion >/dev/null 2>&1; then if ! (whiptail --backtitle "Proxmox VE Helper Scripts" --title "${APP} LXC UPDATE" --yesno "Support/Update functions for ${APP} LXC. Proceed?" 10 58); then clear - echo -e "⚠ User exited script \n" + exit_script exit fi SPINNER_PID="" @@ -591,7 +728,7 @@ build_container() { export PCT_OPTIONS=" -features $FEATURES -hostname $HN - -tags proxmox-helper-scripts + -tags $TAGS $SD $NS -net0 name=eth0,bridge=$BRG$MAC,ip=$NET$GATE$VLAN$MTU @@ -661,8 +798,6 @@ EOF pct exec "$CTID" -- /bin/sh -c 'cat </etc/apk/repositories http://dl-cdn.alpinelinux.org/alpine/latest-stable/main http://dl-cdn.alpinelinux.org/alpine/latest-stable/community -#http://dl-cdn.alpinelinux.org/alpine/v3.19/main -#http://dl-cdn.alpinelinux.org/alpine/v3.19/community EOF' pct exec "$CTID" -- ash -c "apk add bash >/dev/null" fi diff --git a/misc/install.func b/misc/install.func index 2a22e2ff9f7..d701fdfb341 100644 --- a/misc/install.func +++ b/misc/install.func @@ -1,18 +1,39 @@ +# Copyright (c) 2021-2024 tteck +# Author: tteck (tteckster) +# Co-Author: MickLesk +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + # This function sets color variables for formatting output in the terminal color() { + # Colors YW=$(echo "\033[33m") + YWB=$(echo "\033[93m") BL=$(echo "\033[36m") RD=$(echo "\033[01;31m") - BGN=$(echo "\033[4;92m") GN=$(echo "\033[1;92m") - DGN=$(echo "\033[32m") + + # Formatting CL=$(echo "\033[m") - RETRY_NUM=10 - RETRY_EVERY=3 - CM="${GN}✓${CL}" - CROSS="${RD}✗${CL}" BFR="\\r\\033[K" + BOLD=$(echo "\033[1m") HOLD=" " + TAB=" " + + # System + RETRY_NUM=10 + RETRY_EVERY=3 + + # Icons + CM="${TAB}✔️${TAB}${CL}" + CROSS="${TAB}✖️${TAB}${CL}" + INFO="${TAB}💡${TAB}${CL}" + NETWORK="${TAB}📡${TAB}${CL}" + OS="${TAB}🖥️${TAB}${CL}" + OSVERSION="${TAB}🌟${TAB}${CL}" + HOSTNAME="${TAB}🏠${TAB}${CL}" + GATEWAY="${TAB}🌐${TAB}${CL}" + DEFAULT="${TAB}⚙️${TAB}${CL}" } # This function enables IPv6 if it's not disabled and sets verbose mode if the global variable is set to "yes" @@ -49,30 +70,34 @@ error_handler() { # This function displays a spinner. spinner() { - local chars="/-\|" - local spin_i=0 - printf "\e[?25l" - while true; do - printf "\r \e[36m%s\e[0m" "${chars:spin_i++%${#chars}:1}" - sleep 0.1 - done + local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') + local spin_i=0 + local interval=0.1 + printf "\e[?25l" + + local color="${YWB}" + + while true; do + printf "\r ${color}%s${CL}" "${frames[spin_i]}" + spin_i=$(( (spin_i + 1) % ${#frames[@]} )) + sleep "$interval" + done } # This function displays an informational message with a yellow color. msg_info() { local msg="$1" - echo -ne " ${HOLD} ${YW}${msg} " + echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" spinner & SPINNER_PID=$! } - # This function displays a success message with a green color. msg_ok() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" + echo -e "${BFR}${CM}${GN}${msg}${CL}" } # This function displays a error message with a red color. @@ -80,7 +105,7 @@ msg_error() { if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR} ${CROSS} ${RD}${msg}${CL}" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } # This function sets up the Container OS by generating the locale, setting the timezone, and checking the network connection @@ -102,7 +127,7 @@ setting_up_container() { done if [ "$(hostname -I)" = "" ]; then echo 1>&2 -e "\n${CROSS}${RD} No Network After $RETRY_NUM Tries${CL}" - echo -e " 🖧 Check Network Settings" + echo -e "${NETWORK}Check Network Settings" exit 1 fi rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED @@ -118,16 +143,16 @@ network_check() { ipv4_connected=false ipv6_connected=false sleep 1 -# Check IPv4 connectivity - if ping -c 1 -W 1 1.1.1.1 &>/dev/null; then +# Check IPv4 connectivity to Google, Cloudflare & Quad9 DNS servers. + if ping -c 1 -W 1 1.1.1.1 &>/dev/null || ping -c 1 -W 1 8.8.8.8 &>/dev/null || ping -c 1 -W 1 9.9.9.9 &>/dev/null; then msg_ok "IPv4 Internet Connected"; ipv4_connected=true else msg_error "IPv4 Internet Not Connected"; fi -# Check IPv6 connectivity - if ping6 -c 1 -W 1 2606:4700:4700::1111 &>/dev/null; then +# Check IPv6 connectivity to Google, Cloudflare & Quad9 DNS servers. + if ping6 -c 1 -W 1 2606:4700:4700::1111 &>/dev/null || ping6 -c 1 -W 1 2001:4860:4860::8888 &>/dev/null || ping6 -c 1 -W 1 2620:fe::fe &>/dev/null; then msg_ok "IPv6 Internet Connected"; ipv6_connected=true else @@ -138,9 +163,9 @@ network_check() { if [[ $ipv4_connected == false && $ipv6_connected == false ]]; then read -r -p "No Internet detected,would you like to continue anyway? " prompt if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then - echo -e " ⚠️ ${RD}Expect Issues Without Internet${CL}" + echo -e "${INFO}${RD}Expect Issues Without Internet${CL}" else - echo -e " 🖧 Check Network Settings" + echo -e "${NETWORK}Check Network Settings" exit 1 fi fi @@ -174,13 +199,38 @@ EOF # This function modifies the message of the day (motd) and SSH settings motd_ssh() { - echo "export TERM='xterm-256color'" >>/root/.bashrc - echo -e "$APPLICATION LXC provided by https://helper-scripts.com/\n" >/etc/motd - chmod -x /etc/update-motd.d/* - if [[ "${SSH_ROOT}" == "yes" ]]; then - sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config - systemctl restart sshd + # Set terminal to 256-color mode + grep -qxF "export TERM='xterm-256color'" /root/.bashrc || echo "export TERM='xterm-256color'" >> /root/.bashrc + + # Get the current private IP address + IP=$(hostname -I | awk '{print $1}') # Private IP + + # Get OS information (Debian / Ubuntu) + if [ -f "/etc/os-release" ]; then + OS_NAME=$(grep ^NAME /etc/os-release | cut -d= -f2 | tr -d '"') + OS_VERSION=$(grep ^VERSION_ID /etc/os-release | cut -d= -f2 | tr -d '"') + elif [ -f "/etc/debian_version" ]; then + OS_NAME="Debian" + OS_VERSION=$(cat /etc/debian_version) + fi + + # Set MOTD with application info, system details + MOTD_FILE="/etc/motd" + if [ -f "$MOTD_FILE" ]; then + # Start MOTD with application info and link + echo -e "\n${BOLD}${APPLICATION} LXC Container${CL}" > "$MOTD_FILE" + echo -e "${TAB}${GATEWAY}${YW} Provided by: ${GN}community-scripts ORG ${YW}| GitHub: ${GN}https://github.com/community-scripts/ProxmoxVE${CL}\n" >> "$MOTD_FILE" + + # Add system information with icons + echo -e "${TAB}${OS}${YW} OS: ${GN}${OS_NAME} - Version: ${OS_VERSION}${CL}" >> "$MOTD_FILE" + echo -e "${TAB}${HOSTNAME}${YW} Hostname: ${GN}$(hostname)${CL}" >> "$MOTD_FILE" + echo -e "${TAB}${INFO}${YW} IP Address: ${GN}${IP}${CL}" >> "$MOTD_FILE" + else + echo "MotD file does not exist!" >&2 fi + + # Disable default MOTD scripts + chmod -x /etc/update-motd.d/* } # This function customizes the container by modifying the getty service and enabling auto-login for the root user From f2a1cc7eef5693e4aa905a6d4652b118aa033700 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:42:51 +0100 Subject: [PATCH 041/286] Update ALL CT's to new default (Part 2) (#710) * Update ALL CT's to new default * Minor Changes * Merge Bookstack from main * Indention Bookstack * Merge Vikunja from Main * Merge Komga from Main * Merge Unifi from Main --- ct/actualbudget.sh | 84 ++++++----------- ct/adguard.sh | 76 +++++---------- ct/adventurelog.sh | 142 ++++++++++++---------------- ct/agentdvr.sh | 72 +++++--------- ct/alpine-docker.sh | 54 +++-------- ct/alpine-grafana.sh | 54 +++-------- ct/alpine-nextcloud.sh | 53 +++-------- ct/alpine-vaultwarden.sh | 56 +++-------- ct/alpine-zigbee2mqtt.sh | 52 +++------- ct/alpine.sh | 68 ++++---------- ct/apache-cassandra.sh | 71 +++++--------- ct/apache-couchdb.sh | 74 +++++---------- ct/apt-cacher-ng.sh | 79 ++++++---------- ct/archivebox.sh | 100 ++++++++------------ ct/aria2.sh | 77 ++++++--------- ct/audiobookshelf.sh | 72 +++++--------- ct/autobrr.sh | 96 +++++++------------ ct/bazarr.sh | 73 +++++--------- ct/blocky.sh | 73 +++++--------- ct/bookstack.sh | 123 ++++++++++-------------- ct/bunkerweb.sh | 70 +++++--------- ct/caddy.sh | 76 ++++++--------- ct/calibre-web.sh | 141 ++++++++++++---------------- ct/casaos.sh | 78 ++++++--------- ct/changedetection.sh | 110 +++++++++------------- ct/channels.sh | 72 +++++--------- ct/cloudflared.sh | 74 +++++---------- ct/cockpit.sh | 179 +++++++++++++++-------------------- ct/commafeed.sh | 108 +++++++++------------ ct/cronicle.sh | 180 +++++++++++++++-------------------- ct/daemonsync.sh | 78 ++++++--------- ct/dashy.sh | 142 ++++++++++++---------------- ct/debian.sh | 74 +++++---------- ct/deconz.sh | 78 ++++++--------- ct/deluge.sh | 79 ++++++---------- ct/docker.sh | 74 +++++---------- ct/dockge.sh | 80 ++++++---------- ct/emby.sh | 96 +++++++------------ ct/emqx.sh | 78 ++++++--------- ct/ersatztv.sh | 109 ++++++++------------- ct/esphome.sh | 96 +++++++------------ ct/evcc.sh | 77 ++++++--------- ct/fenrus.sh | 123 ++++++++++-------------- ct/fhem.sh | 80 ++++++---------- ct/flaresolverr.sh | 65 ++++--------- ct/flowiseai.sh | 78 ++++++--------- ct/forgejo.sh | 107 ++++++++------------- ct/frigate.sh | 67 ++++--------- ct/gitea.sh | 91 +++++++----------- ct/glance.sh | 67 ++++--------- ct/go2rtc.sh | 87 ++++++----------- ct/gokapi.sh | 72 +++++--------- ct/gotify.sh | 110 +++++++++------------- ct/grafana.sh | 78 ++++++--------- ct/grocy.sh | 98 ++++++++----------- ct/headscale.sh | 104 ++++++++------------ ct/heimdall-dashboard.sh | 153 ++++++++++++------------------ ct/hivemq.sh | 68 +++++--------- ct/hoarder.sh | 144 ++++++++++++---------------- ct/homarr.sh | 147 ++++++++++++----------------- ct/homeassistant-core.sh | 59 ++++-------- ct/homeassistant.sh | 60 ++++-------- ct/homebox.sh | 113 +++++++++------------- ct/homebridge.sh | 78 ++++++--------- ct/homepage.sh | 122 ++++++++++-------------- ct/homer.sh | 120 ++++++++++------------- ct/hyperhdr.sh | 79 ++++++---------- ct/hyperion.sh | 79 ++++++---------- ct/influxdb.sh | 76 ++++++--------- ct/inspircd.sh | 64 ++++--------- ct/iobroker.sh | 78 ++++++--------- ct/iventoy.sh | 70 +++++--------- ct/jackett.sh | 98 ++++++++----------- ct/jellyfin.sh | 81 ++++++---------- ct/jellyseerr.sh | 126 +++++++++++-------------- ct/kavita.sh | 88 +++++++---------- ct/keycloak.sh | 111 +++++++++------------- ct/kimai.sh | 134 +++++++++++--------------- ct/komga.sh | 108 +++++++++------------ ct/kubo.sh | 100 ++++++++------------ ct/lazylibrarian.sh | 99 ++++++++----------- ct/lidarr.sh | 78 ++++++--------- ct/linkwarden.sh | 133 +++++++++++--------------- ct/listmonk.sh | 124 ++++++++++-------------- ct/lldap.sh | 82 ++++++---------- ct/lubelogger.sh | 66 ++++--------- ct/mafl.sh | 62 ++++-------- ct/magicmirror.sh | 81 ++++++---------- ct/mariadb.sh | 76 ++++++--------- ct/matterbridge.sh | 72 +++++--------- ct/mediamtx.sh | 68 +++++--------- ct/medusa.sh | 101 ++++++++------------ ct/memos.sh | 109 ++++++++------------- ct/meshcentral.sh | 78 ++++++--------- ct/metube.sh | 122 ++++++++++-------------- ct/mongodb.sh | 74 +++++---------- ct/motioneye.sh | 76 +++++---------- ct/mqtt.sh | 76 ++++++--------- ct/mylar3.sh | 87 ++++++----------- ct/myspeed.sh | 124 ++++++++++-------------- ct/mysql.sh | 79 ++++++---------- ct/n8n.sh | 79 ++++++---------- ct/navidrome.sh | 96 +++++++------------ ct/neo4j.sh | 81 ++++++---------- ct/netbox.sh | 146 ++++++++++++---------------- ct/nextcloudpi.sh | 78 ++++++--------- ct/nextpvr.sh | 104 ++++++++------------ ct/nginxproxymanager.sh | 58 +++--------- ct/nocodb.sh | 86 ++++++----------- ct/node-red.sh | 188 ++++++++++++++++--------------------- ct/notifiarr.sh | 78 ++++++--------- ct/ntfy.sh | 79 ++++++---------- ct/nzbget.sh | 81 ++++++---------- ct/octoprint.sh | 96 +++++++------------ ct/ollama.sh | 80 ++++++---------- ct/omada.sh | 90 +++++++----------- ct/ombi.sh | 106 ++++++++------------- ct/omv.sh | 80 ++++++---------- ct/onedev.sh | 63 ++++--------- ct/openhab.sh | 79 ++++++---------- ct/openobserve.sh | 84 ++++++----------- ct/openwebui.sh | 103 ++++++++------------ ct/overseerr.sh | 95 +++++++------------ ct/owncast.sh | 79 ++++++---------- ct/pairdrop.sh | 84 ++++++----------- ct/paperless-ngx.sh | 60 ++++-------- ct/pbs.sh | 61 +++++------- ct/peanut.sh | 65 ++++--------- ct/petio.sh | 81 ++++++---------- ct/photoprism.sh | 60 ++++-------- ct/pialert.sh | 74 +++++---------- ct/pihole.sh | 78 ++++++--------- ct/pingvin.sh | 106 ++++++++------------- ct/plex.sh | 100 ++++++++------------ ct/pocketbase.sh | 62 ++++-------- ct/podman-homeassistant.sh | 60 +++--------- ct/podman.sh | 74 +++++---------- ct/postgresql.sh | 76 ++++++--------- ct/prometheus.sh | 114 +++++++++------------- ct/prowlarr.sh | 72 +++++--------- ct/qbittorrent.sh | 79 ++++++---------- ct/rabbitmq.sh | 98 +++++++------------ ct/radarr.sh | 72 +++++--------- ct/rdtclient.sh | 112 +++++++++------------- ct/readarr.sh | 78 ++++++--------- ct/readeck.sh | 88 +++++++---------- ct/recyclarr.sh | 80 ++++++---------- ct/redis.sh | 71 +++++--------- ct/rockylinux.sh | 70 -------------- ct/rtsptoweb.sh | 78 ++++++--------- ct/runtipi.sh | 72 +++++--------- ct/sabnzbd.sh | 100 ++++++++------------ ct/sftpgo.sh | 78 ++++++--------- ct/shinobi.sh | 84 ++++++----------- ct/smokeping.sh | 79 ++++++---------- ct/snipeit.sh | 133 +++++++++++--------------- ct/sonarr.sh | 88 +++++++---------- ct/spoolman.sh | 125 ++++++++++-------------- ct/stirling-pdf.sh | 108 +++++++++------------ ct/syncthing.sh | 79 ++++++---------- ct/tandoor.sh | 65 ++++--------- ct/tasmoadmin.sh | 78 ++++++--------- ct/tautulli.sh | 78 ++++++--------- ct/tdarr.sh | 78 ++++++--------- ct/technitiumdns.sh | 80 ++++++---------- ct/the-lounge.sh | 112 +++++++++------------- ct/threadfin.sh | 82 ++++++---------- ct/tianji.sh | 149 ++++++++++++----------------- ct/traccar.sh | 74 +++++---------- ct/traefik.sh | 96 +++++++------------ ct/transmission.sh | 78 ++++++--------- ct/trilium.sh | 108 +++++++++------------ ct/ubuntu.sh | 74 +++++---------- ct/umami.sh | 104 ++++++++------------ ct/umbrel.sh | 73 +++++--------- ct/unbound.sh | 78 ++++++--------- ct/unifi.sh | 78 ++++++--------- ct/unmanic.sh | 78 ++++++--------- ct/uptimekuma.sh | 105 ++++++++------------- ct/vaultwarden.sh | 61 ++++-------- ct/vikunja.sh | 114 +++++++++------------- ct/wallos.sh | 133 +++++++++++--------------- ct/wastebin.sh | 117 +++++++++-------------- ct/watchyourlan.sh | 92 +++++++----------- ct/wavelog.sh | 148 ++++++++++++----------------- ct/whisparr.sh | 79 ++++++---------- ct/whoogle.sh | 78 ++++++--------- ct/wikijs.sh | 115 +++++++++-------------- ct/wireguard.sh | 80 ++++++---------- ct/yunohost.sh | 78 ++++++--------- ct/zabbix.sh | 116 +++++++++-------------- ct/zigbee2mqtt.sh | 58 ++++-------- ct/zipline.sh | 127 ++++++++++--------------- ct/zoraxy.sh | 98 ++++++++----------- ct/zwave-js-ui.sh | 66 ++++--------- 195 files changed, 6308 insertions(+), 11176 deletions(-) delete mode 100644 ct/rockylinux.sh diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 009fb9527f9..1980fe1bed7 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -2,69 +2,44 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://actualbudget.org/ -function header_info { -clear -cat <<"EOF" - ___ __ __ ____ __ __ - / | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_ - / /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/ - / ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_ -/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Actual Budget" -var_disk="4" +TAGS="finance" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/actualbudget ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -systemctl stop actualbudget.service -cd /opt/actualbudget -git pull &>/dev/null -yarn install &>/dev/null -systemctl start actualbudget.service -msg_ok "Successfully Updated ${APP}" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/actualbudget ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + systemctl stop actualbudget.service + cd /opt/actualbudget + git pull &>/dev/null + yarn install &>/dev/null + systemctl start actualbudget.service + msg_ok "Successfully Updated ${APP}" + exit } start @@ -72,5 +47,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5006${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5006${CL}" \ No newline at end of file diff --git a/ct/adguard.sh b/ct/adguard.sh index 165e6661015..1679d1e64d6 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://adguard.com/ -function header_info { -clear -cat <<"EOF" - ___ __ __ - / | ____/ /___ ___ ______ __________/ / - / /| |/ __ / __ / / / / __ / ___/ __ / - / ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ / -/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/ - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Adguard" -var_disk="2" -var_cpu="1" -var_ram="512" +TAGS="adblock" +var_cpu="2" +var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/AdGuardHome ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "Adguard Home should be updated via the user interface." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/AdGuardHome ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "Adguard Home should be updated via the user interface." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index f7806968da9..fe7ccaad557 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -1,102 +1,77 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://adventurelog.app/ -function header_info { -clear -cat <<"EOF" - ___ __ __ __ - / | ____/ / _____ ____ / /___ __________ / / ____ ____ _ - / /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/ - / ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ / -/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="AdventureLog" +TAGS="traveling" var_disk="7" var_cpu="2" var_ram="2048" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/adventurelog ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Services" - systemctl stop adventurelog-backend - systemctl stop adventurelog-frontend - msg_ok "Services Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/adventurelog ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/seanmorley15/AdventureLog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Services" + systemctl stop adventurelog-backend + systemctl stop adventurelog-frontend + msg_ok "Services Stopped" + + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/adventurelog/backend/server/.env /opt/server.env + cp /opt/adventurelog/frontend/.env /opt/frontend.env + wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv AdventureLog-${RELEASE} /opt/adventurelog + mv /opt/server.env /opt/adventurelog/backend/server/.env + cd /opt/adventurelog/backend/server + pip install --upgrade pip &>/dev/null + pip install -r requirements.txt &>/dev/null + python3 manage.py collectstatic --noinput &>/dev/null + python3 manage.py migrate &>/dev/null - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/adventurelog/backend/server/.env /opt/server.env - cp /opt/adventurelog/frontend/.env /opt/frontend.env - wget -q "https://github.com/seanmorley15/AdventureLog/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv AdventureLog-${RELEASE} /opt/adventurelog - mv /opt/server.env /opt/adventurelog/backend/server/.env - cd /opt/adventurelog/backend/server - pip install --upgrade pip &>/dev/null - pip install -r requirements.txt &>/dev/null - python3 manage.py collectstatic --noinput &>/dev/null - python3 manage.py migrate &>/dev/null - - mv /opt/frontend.env /opt/adventurelog/frontend/.env - cd /opt/adventurelog/frontend - pnpm install &>/dev/null - pnpm run build &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + mv /opt/frontend.env /opt/adventurelog/frontend/.env + cd /opt/adventurelog/frontend + pnpm install &>/dev/null + pnpm run build &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Starting Services" - systemctl start adventurelog-backend - systemctl start adventurelog-frontend - msg_ok "Started Services" + msg_info "Starting Services" + systemctl start adventurelog-backend + systemctl start adventurelog-frontend + msg_ok "Started Services" - msg_info "Cleaning Up" - rm -rf v${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf v${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -104,5 +79,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index 82cab2430a9..f28dbcba7d5 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.ispyconnect.com/ -function header_info { -clear -cat <<"EOF" - ___ __ ____ _ ______ - / | ____ ____ ____ / /_/ __ \ | / / __ \ - / /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ / - / ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/ -/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_| - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="AgentDVR" -var_disk="8" +TAGS="dvr" var_cpu="2" var_ram="2048" +var_disk="8" var_os="ubuntu" var_version="22.04" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/agentdvr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/agentdvr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP}${CL} should be reachable by going to the following URL. - ${BL}http://${IP}:8090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" \ No newline at end of file diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index 69d28456baf..a629f0d856d 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -2,57 +2,27 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { - clear - cat <<"EOF" - ____ __ - / __ \____ _____/ /_ __ _____ - / / / / __ \/ ___/ //_/ _ \/ ___/ - / /_/ / /_/ / /__/ ,< / __/ / -/_____/\____/\___/_/|_|\___/_/ - Alpine - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Alpine-Docker" -var_disk="2" +TAGS="docker;alpine" var_cpu="1" var_ram="1024" +var_disk="2" var_os="alpine" -var_version="3.19" +var_version="3.20" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { if ! apk -e info newt >/dev/null 2>&1; then apk add -q newt diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index 177e6b64822..2ba68ca7d01 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -2,57 +2,27 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { - clear - cat <<"EOF" - ______ ____ - / ____/________ _/ __/___ _____ ____ _ - / / __/ ___/ __ / /_/ __ / __ \/ __ / -/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / -\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ - Alpine - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Alpine-Grafana" -var_disk="1" +TAGS="alpine;monitoring" var_cpu="1" var_ram="256" +var_disk="1" var_os="alpine" -var_version="3.19" +var_version="3.20" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { if ! apk -e info newt >/dev/null 2>&1; then apk add -q newt diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index f27cde24158..20dfbe159e5 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -2,56 +2,27 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { - clear - cat <<"EOF" - _ __ __ __ __ __ __ __ - / | / /__ _ __/ /______/ /___ __ ______/ / / / / /_ __/ /_ - / |/ / _ \| |/_/ __/ ___/ / __ \/ / / / __ / / /_/ / / / / __ \ - / /| / __/> /dev/null 2>&1; then apk add -q newt @@ -85,7 +55,7 @@ function update_script() { sed -i "s|\"admin_token\": .*|\"admin_token\": \"${TOKEN}\",|" /var/lib/vaultwarden/config.json fi rc-service vaultwarden restart -q - fi + fi clear exit ;; diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index 39d2137584b..d52b7c96a10 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -2,57 +2,27 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { - clear - cat <<"EOF" - _____ _ __ ___ __ _______ ____________ -/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ - / / / / __ / __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / - / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / -/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ - /____/ Alpine - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Alpine-Zigbee2MQTT" +TAGS="alpine;zigbee;mqtt;smarthome" var_disk="0.3" var_cpu="1" var_ram="256" var_os="alpine" -var_version="3.19" +var_version="3.20" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { if ! apk -e info newt >/dev/null 2>&1; then apk add -q newt diff --git a/ct/alpine.sh b/ct/alpine.sh index 5d8fab53054..5ce8f9999df 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -2,67 +2,37 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { -clear -cat <<"EOF" - ___ __ _ - / | / /___ (_)___ ___ - / /| | / / __ \/ / __ \/ _ \ - / ___ |/ / /_/ / / / / / __/ -/_/ |_/_/ .___/_/_/ /_/\___/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Alpine" -var_disk="0.1" +TAGS="os;alpine" var_cpu="1" var_ram="512" +var_disk="0.1" var_os="alpine" var_version="3.20" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="-password alpine" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \ - "1" "Check for Alpine Updates" ON \ - 3>&1 1>&2 2>&3) + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 1 \ + "1" "Check for Alpine Updates" ON \ + 3>&1 1>&2 2>&3) -header_info -if [ "$UPD" == "1" ]; then -apk update && apk upgrade -exit; -fi + header_info + if [ "$UPD" == "1" ]; then + apk update && apk upgrade + exit + fi } start diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh index 81486eff718..dcb09a05415 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -2,65 +2,39 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://cassandra.apache.org/_/index.html -function header_info { -clear -cat <<"EOF" - ___ __ ______ __ - / | ____ ____ ______/ /_ ___ / ____/___ _______________ _____ ____/ /________ _ - / /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ `/ ___/ ___/ __ `/ __ \/ __ / ___/ __ `/ - / ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ (__ |__ ) /_/ / / / / /_/ / / / /_/ / -/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/____/____/\__,_/_/ /_/\__,_/_/ \__,_/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Apache-Cassandra" -var_disk="4" +TAGS="database;NoSQL" var_cpu="1" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" -VERBOSE="yes" +var_unprivileged="1" + + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/cassandra.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/cassandra.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -68,3 +42,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/apache-couchdb.sh b/ct/apache-couchdb.sh index 4aab856a627..4dcc38b10d0 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -2,65 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://couchdb.apache.org/ -function header_info { -clear -cat <<"EOF" - ___ __ ______ __ ____ ____ - / | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ ) - / /| | / __ \/ __ `/ ___/ __ \/ _ \ / / / __ \/ / / / ___/ __ \/ / / / __ | - / ___ |/ /_/ / /_/ / /__/ / / / __/ / /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ / -/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Apache-CouchDB" -var_disk="10" +TAGS="database" var_cpu="2" var_ram="4096" +var_disk="10" var_os="debian" var_version="12" -VERBOSE="yes" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/couchdb.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/couchdb.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -68,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5984/_utils/${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5984/_utils/${CL}" diff --git a/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index f363b0e3772..18ee4f26dc4 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://wiki.debian.org/AptCacherNg -function header_info { -clear -cat <<"EOF" - ___ __ ______ __ _ ________ - / | ____ / /_ / ____/___ ______/ /_ ___ _____ / | / / ____/ - / /| | / __ \/ __/__/ / / __ `/ ___/ __ \/ _ \/ ___/__/ |/ / / __ - / ___ |/ /_/ / /_/__/ /___/ /_/ / /__/ / / / __/ / /__/ /| / /_/ / -/_/ |_/ .___/\__/ \____/\__,_/\___/_/ /_/\___/_/ /_/ |_/\____/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Apt-Cacher-NG" -var_disk="2" +TAGS="caching" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} maintenance page should be reachable by going to the following URL. - ${BL}http://${IP}:3142/acng-report.html${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3142/acng-report.html{CL}" diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 7569b9dcc55..81063ba8991 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://archivebox.io/ -function header_info { -clear -cat <<"EOF" - ___ __ _ ____ - / | __________/ /_ (_) _____ / __ )____ _ __ - / /| | / ___/ ___/ __ \/ / | / / _ \/ __ / __ \| |/_/ - / ___ |/ / / /__/ / / / /| |/ / __/ /_/ / /_/ /> < -/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="ArchiveBox" -var_disk="8" +TAGS="archive;bookmark" var_cpu="2" var_ram="1024" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/archivebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop archivebox -msg_ok "Stopped ${APP}" - -msg_info "Updating ${APP}" -cd /opt/archivebox/data -pip install --upgrade --ignore-installed archivebox -sudo -u archivebox archivebox init -msg_ok "Updated ${APP}" - -msg_info "Starting ${APP}" -systemctl start archivebox -msg_ok "Started ${APP}" - -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/archivebox ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop archivebox + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP}" + cd /opt/archivebox/data + pip install --upgrade --ignore-installed archivebox + sudo -u archivebox archivebox init + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start archivebox + msg_ok "Started ${APP}" + + msg_ok "Updated Successfully" + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8000/admin/login${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin/login${CL}" \ No newline at end of file diff --git a/ct/aria2.sh b/ct/aria2.sh index 8393b4ea385..1bb5b5d9281 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -2,65 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://aria2.github.io/ -function header_info { -clear -cat <<"EOF" - ___ _ ___ - / | _____(_)___ |__ \ - / /| | / ___/ / __ `/_/ / - / ___ |/ / / / /_/ / __/ -/_/ |_/_/ /_/\__,_/____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Aria2" -var_disk="8" +TAGS="download-utility" var_cpu="2" var_ram="1024" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -68,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6880${CL}" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6880${CL}" diff --git a/ct/audiobookshelf.sh b/ct/audiobookshelf.sh index 8edc13bf72d..9c63c1f7c3b 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.audiobookshelf.org/ -function header_info { -clear -cat <<"EOF" - ___ __ __ __ ______ - ____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/ - / __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_ -/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/ -\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="audiobookshelf" -var_disk="4" +TAGS="podcast;audiobook" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -echo "This application receives updates through the APT package manager." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/trusted.gpg.d/audiobookshelf-ppa.asc ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + echo "This application receives updates through the APT package manager." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:13378${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:13378${CL}" diff --git a/ct/autobrr.sh b/ct/autobrr.sh index d4d98a11764..b3bef31b278 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://autobrr.com/ -function header_info { -clear -cat <<"EOF" - ___ __ __ - / | __ __/ /_____ / /_ __________ - / /| |/ / / / __/ __ \/ __ \/ ___/ ___/ - / ___ / /_/ / /_/ /_/ / /_/ / / / / -/_/ |_\__,_/\__/\____/_.___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Autobrr" -var_disk="8" +TAGS="*arr;" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /root/.config/autobrr/config.toml ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP} LXC" -systemctl stop autobrr.service -msg_ok "Stopped ${APP} LXC" + header_info + check_container_storage + check_container_resources + if [[ ! -f /root/.config/autobrr/config.toml ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP} LXC" + systemctl stop autobrr.service + msg_ok "Stopped ${APP} LXC" -msg_info "Updating ${APP} LXC" -rm -rf /usr/local/bin/* -wget -q $(curl -s https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4) -tar -C /usr/local/bin -xzf autobrr*.tar.gz -rm -rf autobrr*.tar.gz -msg_ok "Updated ${APP} LXC" + msg_info "Updating ${APP} LXC" + rm -rf /usr/local/bin/* + wget -q $(curl -s https://api.github.com/repos/autobrr/autobrr/releases/latest | grep download | grep linux_x86_64 | cut -d\" -f4) + tar -C /usr/local/bin -xzf autobrr*.tar.gz + rm -rf autobrr*.tar.gz + msg_ok "Updated ${APP} LXC" -msg_info "Starting ${APP} LXC" -systemctl start autobrr.service -msg_ok "Started ${APP} LXC" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP} LXC" + systemctl start autobrr.service + msg_ok "Started ${APP} LXC" + msg_ok "Updated Successfully" + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:7474${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7474${CL}" \ No newline at end of file diff --git a/ct/bazarr.sh b/ct/bazarr.sh index f6118d9920b..bbbb4ed95ca 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -2,65 +2,37 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.bazarr.media/ -function header_info { -clear -cat <<"EOF" - ____ - / __ )____ _____ ____ ___________ - / __ / __ `/_ / / __ `/ ___/ ___/ - / /_/ / /_/ / / /_/ /_/ / / / / -/_____/\__,_/ /___/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Bazarr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/bazarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/bazarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" exit } @@ -69,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6767${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6767${CL}" \ No newline at end of file diff --git a/ct/blocky.sh b/ct/blocky.sh index 3bd6ed7b01a..27548c893bd 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -2,66 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://0xerr0r.github.io/blocky/latest/ -function header_info { -clear -cat <<"EOF" - ____ __ __ - / __ )/ /___ _____/ /____ __ - / __ / / __ \/ ___/ //_/ / / / - / /_/ / / /_/ / /__/ ,< / /_/ / -/_____/_/\____/\___/_/|_|\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Blocky" -var_disk="2" +TAGS="adblock" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,3 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}" \ No newline at end of file diff --git a/ct/bookstack.sh b/ct/bookstack.sh index 09e623a77e2..bc76c6d4555 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -2,98 +2,73 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/BookStackApp/BookStack -function header_info { -clear -cat <<"EOF" - ____ __ __ __ - / __ )____ ____ / /_______/ /_____ ______/ /__ - / __ / __ \/ __ \/ //_/ ___/ __/ __ `/ ___/ //_/ - / /_/ / /_/ / /_/ / ,< (__ ) /_/ /_/ / /__/ ,< -/_____/\____/\____/_/|_/____/\__/\__,_/\___/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Bookstack" -var_disk="4" +TAGS="organizer" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/bookstack ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Apache2" - systemctl stop apache2 - msg_ok "Services Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/bookstack ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/BookStackApp/BookStack/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Apache2" + systemctl stop apache2 + msg_ok "Services Stopped" - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/bookstack/.env /opt/.env - wget -q "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv BookStack-${RELEASE} /opt/bookstack - mv /opt/.env /opt/bookstack/.env - cd /opt/bookstack - COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null - php artisan key:generate --force &>/dev/null - php artisan migrate --force &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/bookstack/.env /opt/.env + wget -q "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv BookStack-${RELEASE} /opt/bookstack + mv /opt/.env /opt/bookstack/.env + cd /opt/bookstack + COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null + php artisan key:generate --force &>/dev/null + php artisan migrate --force &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Starting Apache2" - systemctl start apache2 - msg_ok "Started Apache2" + msg_info "Starting Apache2" + systemctl start apache2 + msg_ok "Started Apache2" - msg_info "Cleaning Up" - rm -rf v${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf v${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index 2a9c2b2869c..6ed24e22b8d 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -2,64 +2,35 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.bunkerweb.io/ -function header_info { -clear -cat <<"EOF" - ____ __ _ __ __ - / __ )__ ______ / /_____ ____| | / /__ / /_ - / __ / / / / __ \/ //_/ _ \/ ___/ | /| / / _ \/ __ \ - / /_/ / /_/ / / / / ,< / __/ / | |/ |/ / __/ /_/ / -/_____/\__,_/_/ /_/_/|_|\___/_/ |__/|__/\___/_.___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="BunkerWeb" -var_disk="4" +TAGS="webserver" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi - -RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/bunkerweb ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + RELEASE=$(curl -s https://api.github.com/repos/bunkerity/bunkerweb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then msg_info "Updating ${APP} to ${RELEASE}" cat </etc/apt/preferences.d/bunkerweb @@ -84,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} setup should be reachable by going to the following URL. - ${BL}http://${IP}/setup${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/setup${CL}" \ No newline at end of file diff --git a/ct/caddy.sh b/ct/caddy.sh index 0945c298cc6..72869d45289 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://caddyserver.com/ -function header_info { -clear -cat <<"EOF" - ______ __ __ - / ____/___ _____/ /___/ /_ __ - / / / __ `/ __ / __ / / / / -/ /___/ /_/ / /_/ / /_/ / /_/ / -\____/\__,_/\__,_/\__,_/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Caddy" -var_disk="2" +TAGS="webserver" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/caddy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/caddy ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}" \ No newline at end of file diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 4907781530b..2a033ff7e92 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -1,58 +1,29 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: remz1337 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: remz1337 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/janeczku/calibre-web -function header_info { -clear -cat <<"EOF" - ______ ___ __ _ __ __ - / ____/___ _/ (_) /_ ________ | | / /__ / /_ - / / / __ `/ / / __ \/ ___/ _ \___| | /| / / _ \/ __ \ -/ /___/ /_/ / / / /_/ / / / __/___/ |/ |/ / __/ /_/ / -\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Calibre-Web" -var_disk="4" +TAGS="eBook" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -70,40 +41,40 @@ function update_script() { rm -rf kepubify-linux-64bit curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit chmod +x kepubify-linux-64bit - menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \ - "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \ - "3" "Enables displaying of additional author infos on the authors page" OFF \ - "4" "Enables login via LDAP server" OFF \ - "5" "Enables login via google or github oauth" OFF \ - "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF \ - "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF \ - "8" "Enables syncing with your kobo reader" OFF ) + menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF + "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF + "3" "Enables displaying of additional author infos on the authors page" OFF + "4" "Enables login via LDAP server" OFF + "5" "Enables login via google or github oauth" OFF + "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF + "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF + "8" "Enables syncing with your kobo reader" OFF) if [ -f "/opt/calibre-web/options.txt" ]; then cps_options="$(cat /opt/calibre-web/options.txt)" - IFS=',' read -ra ADDR <<< "$cps_options" + IFS=',' read -ra ADDR <<<"$cps_options" for i in "${ADDR[@]}"; do - if [ $i == "gdrive" ]; then - line=0 - elif [ $i == "gmail" ]; then - line=1 - elif [ $i == "goodreads" ]; then - line=2 - elif [ $i == "ldap" ]; then - line=3 - elif [ $i == "oauth" ]; then - line=4 - elif [ $i == "metadata" ]; then - line=5 - elif [ $i == "comics" ]; then - line=6 - elif [ $i == "kobo" ]; then - line=7 - fi - array_index=$(( 3*line + 2 )) + if [ $i == "gdrive" ]; then + line=0 + elif [ $i == "gmail" ]; then + line=1 + elif [ $i == "goodreads" ]; then + line=2 + elif [ $i == "ldap" ]; then + line=3 + elif [ $i == "oauth" ]; then + line=4 + elif [ $i == "metadata" ]; then + line=5 + elif [ $i == "comics" ]; then + line=6 + elif [ $i == "kobo" ]; then + line=7 + fi + array_index=$((3 * line + 2)) menu_array[$array_index]=ON done fi - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi CHOICES=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "CALIBRE-WEB OPTIONS" --separate-output --checklist "Choose Additional Options" 15 125 8 "${menu_array[@]}" 3>&1 1>&2 2>&3) spinner & SPINNER_PID=$! @@ -112,29 +83,29 @@ function update_script() { for CHOICE in $CHOICES; do case "$CHOICE" in "1") - options+=( gdrive ) + options+=(gdrive) ;; "2") - options+=( gmail ) + options+=(gmail) ;; "3") - options+=( goodreads ) + options+=(goodreads) ;; "4") - options+=( ldap ) + options+=(ldap) apt-get install -qqy libldap2-dev libsasl2-dev ;; "5") - options+=( oauth ) + options+=(oauth) ;; "6") - options+=( metadata ) + options+=(metadata) ;; "7") - options+=( comics ) + options+=(comics) ;; "8") - options+=( kobo ) + options+=(kobo) ;; *) echo "Unsupported item $CHOICE!" >&2 @@ -144,14 +115,17 @@ function update_script() { done fi if [ ${#options[@]} -gt 0 ]; then - cps_options=$(IFS=, ; echo "${options[*]}") - echo $cps_options > /opt/calibre-web/options.txt + cps_options=$( + IFS=, + echo "${options[*]}" + ) + echo $cps_options >/opt/calibre-web/options.txt pip install --upgrade calibreweb[$cps_options] &>/dev/null else rm -rf /opt/calibre-web/options.txt pip install --upgrade calibreweb &>/dev/null fi - + msg_info "Starting ${APP}" systemctl start cps msg_ok "Started ${APP}" @@ -164,5 +138,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8083${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}" \ No newline at end of file diff --git a/ct/casaos.sh b/ct/casaos.sh index ebd0050c39f..118de1e56ed 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://casaos.io/ -function header_info { -clear -cat <<"EOF" - ______ ____ _____ - / ____/___ __________ _/ __ \/ ___/ - / / / __ `/ ___/ __ `/ / / /\__ \ -/ /___/ /_/ (__ ) /_/ / /_/ /___/ / -\____/\__,_/____/\__,_/\____//____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="CasaOS" -var_disk="8" +TAGS="cloud" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP} ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/changedetection.sh b/ct/changedetection.sh index 817862c1997..62c060f74f5 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -2,82 +2,57 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://changedetection.io/ -function header_info { -clear -cat <<"EOF" - ________ ____ __ __ _ - / ____/ /_ ____ _____ ____ ____ / __ \___ / /____ _____/ /_(_)___ ____ - / / / __ \/ __ `/ __ \/ __ `/ _ \ / / / / _ \/ __/ _ \/ ___/ __/ / __ \/ __ \ -/ /___/ / / / /_/ / / / / /_/ / __/ / /_/ / __/ /_/ __/ /__/ /_/ / /_/ / / / / -\____/_/ /_/\__,_/_/ /_/\__, /\___/ /_____/\___/\__/\___/\___/\__/_/\____/_/ /_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Change Detection" -var_disk="8" +TAGS="monitoring;crawler" var_cpu="2" var_ram="1024" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/changedetection.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then - apt-get update - apt-get install -y libjpeg-dev -fi -pip3 install changedetection.io --upgrade &>/dev/null -pip3 install playwright --upgrade &>/dev/null -if [[ -f /etc/systemd/system/browserless.service ]]; then - git -C /opt/browserless/ fetch --all &>/dev/null - git -C /opt/browserless/ reset --hard origin/main &>/dev/null - npm update --prefix /opt/browserless &>/dev/null - npm run build --prefix /opt/browserless &>/dev/null - npm run build:function --prefix /opt/browserless &>/dev/null - npm prune production --prefix /opt/browserless &>/dev/null - systemctl restart browserless -else - msg_error "No Browserless Installation Found!" -fi -systemctl restart changedetection -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/changedetection.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then + apt-get update + apt-get install -y libjpeg-dev + fi + pip3 install changedetection.io --upgrade &>/dev/null + pip3 install playwright --upgrade &>/dev/null + if [[ -f /etc/systemd/system/browserless.service ]]; then + git -C /opt/browserless/ fetch --all &>/dev/null + git -C /opt/browserless/ reset --hard origin/main &>/dev/null + npm update --prefix /opt/browserless &>/dev/null + npm run build --prefix /opt/browserless &>/dev/null + npm run build:function --prefix /opt/browserless &>/dev/null + npm prune production --prefix /opt/browserless &>/dev/null + systemctl restart browserless + else + msg_error "No Browserless Installation Found!" + fi + systemctl restart changedetection + msg_ok "Updated Successfully" + exit } start @@ -85,5 +60,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/channels.sh b/ct/channels.sh index dad211a5658..223a626f753 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://getchannels.com/dvr-server/ -function header_info { -clear -cat <<"EOF" - ________ __ ____ _ ______ _____ - / ____/ /_ ____ _____ ____ ___ / /____ / __ \ | / / __ \ / ___/___ ______ _____ _____ - / / / __ \/ __ `/ __ \/ __ \/ _ \/ / ___/ / / / / | / / /_/ / \__ \/ _ \/ ___/ | / / _ \/ ___/ -/ /___/ / / / /_/ / / / / / / / __/ (__ ) / /_/ /| |/ / _, _/ ___/ / __/ / | |/ / __/ / -\____/_/ /_/\__,_/_/ /_/_/ /_/\___/_/____/ /_____/ |___/_/ |_| /____/\___/_/ |___/\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Channels" -var_disk="8" +TAGS="dvr" var_cpu="2" var_ram="1024" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/channels-dvr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/channels-dvr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8089 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8089${CL}" \ No newline at end of file diff --git a/ct/cloudflared.sh b/ct/cloudflared.sh index cc6d1e8214f..e4b8a3a4b12 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.cloudflare.com/ -function header_info { -clear -cat <<"EOF" - ________ ________ __ - / ____/ /___ __ ______/ / __/ /___ _________ ____/ / - / / / / __ \/ / / / __ / /_/ / __ `/ ___/ _ \/ __ / -/ /___/ / /_/ / /_/ / /_/ / __/ / /_/ / / / __/ /_/ / -\____/_/\____/\__,_/\__,_/_/ /_/\__,_/_/ \___/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Cloudflared" -var_disk="2" +TAGS="network;cloudflare" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/cockpit.sh b/ct/cockpit.sh index 213817e7a87..4126c39c27b 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -1,118 +1,92 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: havardthom -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://cockpit-project.org/ -function header_info { -clear -cat <<"EOF" - ______ __ _ __ - / ____/___ _____/ /______ (_) /_ - / / / __ \/ ___/ //_/ __ \/ / __/ -/ /___/ /_/ / /__/ ,< / /_/ / / /_ -\____/\____/\___/_/|_/ .___/_/\__/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Cockpit" -var_disk="4" +TAGS="monitoring;network" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/cockpit ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \ - "1" "Update LXC" ON \ - "2" "Install cockpit-file-sharing" OFF \ - "3" "Install cockpit-identities" OFF \ - "4" "Install cockpit-navigator" OFF \ - 3>&1 1>&2 2>&3) + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/cockpit ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 4 \ + "1" "Update LXC" ON \ + "2" "Install cockpit-file-sharing" OFF \ + "3" "Install cockpit-identities" OFF \ + "4" "Install cockpit-navigator" OFF \ + 3>&1 1>&2 2>&3) -if [ "$UPD" == "1" ]; then - msg_info "Updating ${APP} LXC" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - msg_ok "Updated ${APP} LXC" - exit -fi -if [ "$UPD" == "2" ]; then - msg_info "Installing dependencies (patience)" - apt-get install -y attr &>/dev/null - apt-get install -y nfs-kernel-server &>/dev/null - apt-get install -y samba &>/dev/null - apt-get install -y samba-common-bin &>/dev/null - apt-get install -y winbind &>/dev/null - apt-get install -y gawk &>/dev/null - msg_ok "Installed dependencies" - msg_info "Installing Cockpit file sharing" - wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) - dpkg -i cockpit-file-sharing_*focal_all.deb &>/dev/null - rm cockpit-file-sharing_*focal_all.deb - msg_ok "Installed Cockpit file sharing" - exit -fi -if [ "$UPD" == "3" ]; then - msg_info "Installing dependencies (patience)" - apt-get install -y psmisc &>/dev/null - apt-get install -y samba &>/dev/null - apt-get install -y samba-common-bin &>/dev/null - msg_ok "Installed dependencies" - msg_info "Installing Cockpit identities" - wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) - dpkg -i cockpit-identities_*focal_all.deb &>/dev/null - rm cockpit-identities_*focal_all.deb - msg_ok "Installed Cockpit identities" - exit -fi -if [ "$UPD" == "4" ]; then - msg_info "Installing dependencies" - apt-get install -y rsync &>/dev/null - apt-get install -y zip &>/dev/null - msg_ok "Installed dependencies" - msg_info "Installing Cockpit navigator" - wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) - dpkg -i cockpit-navigator_*focal_all.deb &>/dev/null - rm cockpit-navigator_*focal_all.deb - msg_ok "Installed Cockpit navigator" - exit -fi + if [ "$UPD" == "1" ]; then + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit + fi + if [ "$UPD" == "2" ]; then + msg_info "Installing dependencies (patience)" + apt-get install -y attr &>/dev/null + apt-get install -y nfs-kernel-server &>/dev/null + apt-get install -y samba &>/dev/null + apt-get install -y samba-common-bin &>/dev/null + apt-get install -y winbind &>/dev/null + apt-get install -y gawk &>/dev/null + msg_ok "Installed dependencies" + msg_info "Installing Cockpit file sharing" + wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-file-sharing/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) + dpkg -i cockpit-file-sharing_*focal_all.deb &>/dev/null + rm cockpit-file-sharing_*focal_all.deb + msg_ok "Installed Cockpit file sharing" + exit + fi + if [ "$UPD" == "3" ]; then + msg_info "Installing dependencies (patience)" + apt-get install -y psmisc &>/dev/null + apt-get install -y samba &>/dev/null + apt-get install -y samba-common-bin &>/dev/null + msg_ok "Installed dependencies" + msg_info "Installing Cockpit identities" + wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-identities/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) + dpkg -i cockpit-identities_*focal_all.deb &>/dev/null + rm cockpit-identities_*focal_all.deb + msg_ok "Installed Cockpit identities" + exit + fi + if [ "$UPD" == "4" ]; then + msg_info "Installing dependencies" + apt-get install -y rsync &>/dev/null + apt-get install -y zip &>/dev/null + msg_ok "Installed dependencies" + msg_info "Installing Cockpit navigator" + wget -q $(curl -s https://api.github.com/repos/45Drives/cockpit-navigator/releases/latest | grep download | grep focal_all.deb | cut -d\" -f4) + dpkg -i cockpit-navigator_*focal_all.deb &>/dev/null + rm cockpit-navigator_*focal_all.deb + msg_ok "Installed Cockpit navigator" + exit + fi } start @@ -120,5 +94,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9090${CL}" \ No newline at end of file diff --git a/ct/commafeed.sh b/ct/commafeed.sh index 0f47d12c67a..b3f72d87741 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -2,83 +2,58 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.commafeed.com/#/welcome -function header_info { -clear -cat <<"EOF" - ______ ______ __ - / ____/___ ____ ___ ____ ___ ____ _/ ____/__ ___ ____/ / - / / / __ \/ __ `__ \/ __ `__ \/ __ `/ /_ / _ \/ _ \/ __ / -/ /___/ /_/ / / / / / / / / / / / /_/ / __/ / __/ __/ /_/ / -\____/\____/_/ /_/ /_/_/ /_/ /_/\__,_/_/ \___/\___/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="CommaFeed" -var_disk="4" +TAGS="rss-reader" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/commafeed ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -sL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop commafeed - msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/commafeed ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -sL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop commafeed + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" - wget -q https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip - unzip -q commafeed-${RELEASE}-h2-jvm.zip - rsync -a --exclude 'data/' commafeed-${RELEASE}-h2/ /opt/commafeed/ - rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + wget -q https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip + unzip -q commafeed-${RELEASE}-h2-jvm.zip + rsync -a --exclude 'data/' commafeed-${RELEASE}-h2/ /opt/commafeed/ + rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start commafeed - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting ${APP}" + systemctl start commafeed + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -86,5 +61,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8082${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8082${CL}" diff --git a/ct/cronicle.sh b/ct/cronicle.sh index 0915c4f9859..99abc78b035 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -2,125 +2,100 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://cronicle.net/ -function header_info { -clear -cat <<"EOF" - ______ _ __ - / ____/________ ____ (_)____/ /__ - / / / ___/ __ \/ __ \/ / ___/ / _ \ -/ /___/ / / /_/ / / / / / /__/ / __/ -\____/_/ \____/_/ /_/_/\___/_/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Cronicle" -var_disk="2" +TAGS="task-scheduler" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \ - "1" "Update ${APP}" ON \ - "2" "Install ${APP} Worker" OFF \ - 3>&1 1>&2 2>&3) + header_info + check_container_storage + check_container_resources + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \ + "1" "Update ${APP}" ON \ + "2" "Install ${APP} Worker" OFF \ + 3>&1 1>&2 2>&3) -if [ "$UPD" == "1" ]; then -if [[ ! -d /opt/cronicle ]]; then msg_error "No ${APP} Installation Found!"; exit; fi - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - echo "Installed NPM..." + if [ "$UPD" == "1" ]; then + if [[ ! -d /opt/cronicle ]]; then + msg_error "No ${APP} Installation Found!" + exit fi - fi -msg_info "Updating ${APP}" -/opt/cronicle/bin/control.sh upgrade &>/dev/null -msg_ok "Updated ${APP}" -exit -fi -if [ "$UPD" == "2" ]; then - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - echo "Installed NPM..." + if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then + if ! command -v npm >/dev/null 2>&1; then + echo "Installing NPM..." + apt-get install -y npm >/dev/null 2>&1 + echo "Installed NPM..." + fi fi + msg_info "Updating ${APP}" + /opt/cronicle/bin/control.sh upgrade &>/dev/null + msg_ok "Updated ${APP}" + exit fi -LATEST=$(curl -sL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -IP=$(hostname -I | awk '{print $1}') -msg_info "Installing Dependencies" + if [ "$UPD" == "2" ]; then + if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then + if ! command -v npm >/dev/null 2>&1; then + echo "Installing NPM..." + apt-get install -y npm >/dev/null 2>&1 + echo "Installed NPM..." + fi + fi + LATEST=$(curl -sL https://api.github.com/repos/jhuckaby/Cronicle/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + IP=$(hostname -I | awk '{print $1}') + msg_info "Installing Dependencies" -apt-get install -y git &>/dev/null -apt-get install -y make &>/dev/null -apt-get install -y g++ &>/dev/null -apt-get install -y gcc &>/dev/null -apt-get install -y ca-certificates &>/dev/null -apt-get install -y gnupg &>/dev/null -msg_ok "Installed Dependencies" + apt-get install -y git &>/dev/null + apt-get install -y make &>/dev/null + apt-get install -y g++ &>/dev/null + apt-get install -y gcc &>/dev/null + apt-get install -y ca-certificates &>/dev/null + apt-get install -y gnupg &>/dev/null + msg_ok "Installed Dependencies" -msg_info "Setting up Node.js Repository" -mkdir -p /etc/apt/keyrings -curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list -msg_ok "Set up Node.js Repository" + msg_info "Setting up Node.js Repository" + mkdir -p /etc/apt/keyrings + curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg + echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list + msg_ok "Set up Node.js Repository" -msg_info "Installing Node.js" -apt-get update &>/dev/null -apt-get install -y nodejs &>/dev/null -msg_ok "Installed Node.js" + msg_info "Installing Node.js" + apt-get update &>/dev/null + apt-get install -y nodejs &>/dev/null + msg_ok "Installed Node.js" -msg_info "Installing Cronicle Worker" -mkdir -p /opt/cronicle -cd /opt/cronicle -tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1 &>/dev/null -npm install &>/dev/null -node bin/build.js dist &>/dev/null -sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json -/opt/cronicle/bin/control.sh start &>/dev/null -cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled &>/dev/null -chmod 775 /etc/init.d/cronicled -update-rc.d cronicled defaults &>/dev/null -msg_ok "Installed Cronicle Worker" -echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n" -exit -fi + msg_info "Installing Cronicle Worker" + mkdir -p /opt/cronicle + cd /opt/cronicle + tar zxvf <(curl -fsSL https://github.com/jhuckaby/Cronicle/archive/${LATEST}.tar.gz) --strip-components 1 &>/dev/null + npm install &>/dev/null + node bin/build.js dist &>/dev/null + sed -i "s/localhost:3012/${IP}:3012/g" /opt/cronicle/conf/config.json + /opt/cronicle/bin/control.sh start &>/dev/null + cp /opt/cronicle/bin/cronicled.init /etc/init.d/cronicled &>/dev/null + chmod 775 /etc/init.d/cronicled + update-rc.d cronicled defaults &>/dev/null + msg_ok "Installed Cronicle Worker" + echo -e "\n Add Masters secret key to /opt/cronicle/conf/config.json \n" + exit + fi } start @@ -128,5 +103,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Primary should be reachable by going to the following URL. - ${BL}http://${IP}:3012${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3012${CL}" \ No newline at end of file diff --git a/ct/daemonsync.sh b/ct/daemonsync.sh index 07183226001..a58a187b7df 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://daemonsync.me/ -function header_info { -clear -cat <<"EOF" - ____ _____ - / __ \____ ____ ____ ___ ____ ____ / ___/__ ______ _____ - / / / / __ / _ \/ __ __ \/ __ \/ __ \ \__ \/ / / / __ \/ ___/ - / /_/ / /_/ / __/ / / / / / /_/ / / / / ___/ / /_/ / / / / /__ -/_____/\__,_/\___/_/ /_/ /_/\____/_/ /_/ /____/\__, /_/ /_/\___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Daemon Sync" -var_disk="8" +TAGS="sync" var_cpu="1" var_ram="512" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8084${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8084${CL}" \ No newline at end of file diff --git a/ct/dashy.sh b/ct/dashy.sh index 6bcacc35ff6..18404b6990b 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -2,104 +2,79 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://dashy.to/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ ______/ /_ __ __ - / / / / __ / ___/ __ \/ / / / - / /_/ / /_/ (__ ) / / / /_/ / -/_____/\__,_/____/_/ /_/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Dashy" -var_disk="6" +TAGS="dashboard" var_cpu="2" var_ram="2048" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/dashy/public/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/dashy/public/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -RELEASE=$(curl -sL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping ${APP}" - systemctl stop dashy - msg_ok "Stopped ${APP}" + RELEASE=$(curl -sL https://api.github.com/repos/Lissy93/dashy/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop dashy + msg_ok "Stopped ${APP}" - msg_info "Backing up conf.yml" - cd ~ - if [[ -f /opt/dashy/public/conf.yml ]]; then - cp -R /opt/dashy/public/conf.yml conf.yml - else - cp -R /opt/dashy/user-data/conf.yml conf.yml - fi - msg_ok "Backed up conf.yml" + msg_info "Backing up conf.yml" + cd ~ + if [[ -f /opt/dashy/public/conf.yml ]]; then + cp -R /opt/dashy/public/conf.yml conf.yml + else + cp -R /opt/dashy/user-data/conf.yml conf.yml + fi + msg_ok "Backed up conf.yml" - msg_info "Updating ${APP} to ${RELEASE}" - rm -rf /opt/dashy - mkdir -p /opt/dashy - wget -qO- https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz | tar -xz -C /opt/dashy --strip-components=1 - cd /opt/dashy - npm install - npm run build - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + rm -rf /opt/dashy + mkdir -p /opt/dashy + wget -qO- https://github.com/Lissy93/dashy/archive/refs/tags/${RELEASE}.tar.gz | tar -xz -C /opt/dashy --strip-components=1 + cd /opt/dashy + npm install + npm run build + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Restoring conf.yml" - cd ~ - cp -R conf.yml /opt/dashy/user-data - msg_ok "Restored conf.yml" + msg_info "Restoring conf.yml" + cd ~ + cp -R conf.yml /opt/dashy/user-data + msg_ok "Restored conf.yml" - msg_info "Cleaning" - rm -rf conf.yml /opt/dashy/public/conf.yml - msg_ok "Cleaned" + msg_info "Cleaning" + rm -rf conf.yml /opt/dashy/public/conf.yml + msg_ok "Cleaned" - msg_info "Starting Dashy" - systemctl start dashy - msg_ok "Started Dashy" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting Dashy" + systemctl start dashy + msg_ok "Started Dashy" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -107,5 +82,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:4000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4000${CL}" \ No newline at end of file diff --git a/ct/debian.sh b/ct/debian.sh index 6120d5ab5f0..a914f673011 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.debian.org/ -function header_info { -clear -cat <<"EOF" - ____ __ _ - / __ \___ / /_ (_)___ ____ - / / / / _ \/ __ \/ / __ `/ __ \ - / /_/ / __/ /_/ / / /_/ / / / / -/_____/\___/_.___/_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Debian" -var_disk="2" +TAGS="os" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/deconz.sh b/ct/deconz.sh index c994a8abf34..27c6bccbb4c 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.phoscon.de/en/conbee2/software#deconz -function header_info { -clear -cat <<"EOF" - __ __________ _ _______ - ____/ /__ / ____/ __ \/ | / /__ / - / __ / _ \/ / / / / / |/ / / / -/ /_/ / __/ /___/ /_/ / /| / / /__ -\__,_/\___/\____/\____/_/ |_/ /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="deCONZ" -var_disk="4" +TAGS="zigbee" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/deconz.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/deconz.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/deluge.sh b/ct/deluge.sh index 88a0ccd55fe..e8971ed382f 100644 --- a/ct/deluge.sh +++ b/ct/deluge.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.deluge-torrent.org/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \___ / /_ ______ ____ - / / / / _ \/ / / / / __ `/ _ \ - / /_/ / __/ / /_/ / /_/ / __/ -/_____/\___/_/\__,_/\__, /\___/ - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Deluge" -var_disk="4" +TAGS="torrent" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/deluged.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -pip3 install deluge[all] --upgrade -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/deluged.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + pip3 install deluge[all] --upgrade + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8112${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8112${CL}" \ No newline at end of file diff --git a/ct/docker.sh b/ct/docker.sh index b45ba06213e..7b15a87bcff 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.docker.com/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ _____/ /_ __ _____ - / / / / __ \/ ___/ //_/ _ \/ ___/ - / /_/ / /_/ / /__/ ,< / __/ / -/_____/\____/\___/_/|_|\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Docker" -var_disk="4" +TAGS="docker" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/dockge.sh b/ct/dockge.sh index d05023c0eb1..b1d6823cd7e 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -2,67 +2,42 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://dockge.kuma.pet/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ _____/ /______ ____ - / / / / __ \/ ___/ //_/ __ `/ _ \ - / /_/ / /_/ / /__/ ,< / /_/ / __/ -/_____/\____/\___/_/|_|\__, /\___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Dockge" -var_disk="18" +TAGS="docker" var_cpu="2" var_ram="2048" +var_disk="18" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/dockge ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -cd /opt/dockge -docker compose pull -docker compose up -d -msg_ok "Updated ${APP}" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/dockge ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + cd /opt/dockge + docker compose pull + docker compose up -d + msg_ok "Updated ${APP}" + exit } start @@ -70,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5001${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5001${CL}" \ No newline at end of file diff --git a/ct/emby.sh b/ct/emby.sh index a6c913b40e9..ce938f9220c 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://emby.media/ -function header_info { -clear -cat <<"EOF" - ______ __ - / ____/___ ___ / /_ __ __ - / __/ / __ __ \/ __ \/ / / / - / /___/ / / / / / /_/ / /_/ / -/_____/_/ /_/ /_/_.___/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Emby" -var_disk="8" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="8" var_os="ubuntu" var_version="22.04" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/emby-server ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -LATEST=$(curl -sL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -msg_info "Stopping ${APP}" -systemctl stop emby-server -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/emby-server ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + LATEST=$(curl -sL https://api.github.com/repos/MediaBrowser/Emby.Releases/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + msg_info "Stopping ${APP}" + systemctl stop emby-server + msg_ok "Stopped ${APP}" -msg_info "Updating ${APP}" -wget https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb &>/dev/null -dpkg -i emby-server-deb_${LATEST}_amd64.deb &>/dev/null -rm emby-server-deb_${LATEST}_amd64.deb -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + wget https://github.com/MediaBrowser/Emby.Releases/releases/download/${LATEST}/emby-server-deb_${LATEST}_amd64.deb &>/dev/null + dpkg -i emby-server-deb_${LATEST}_amd64.deb &>/dev/null + rm emby-server-deb_${LATEST}_amd64.deb + msg_ok "Updated ${APP}" -msg_info "Starting ${APP}" -systemctl start emby-server -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start emby-server + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8096${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8086${CL}" \ No newline at end of file diff --git a/ct/emqx.sh b/ct/emqx.sh index 070e38ff9c4..fe1d274f9bc 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.emqx.com/en -function header_info { -clear -cat <<"EOF" - ________ _______ _ __ - / ____/ |/ / __ \ | |/ / - / __/ / /|_/ / / / / | / - / /___/ / / / /_/ / / | -/_____/_/ /_/\___\_\/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="EMQX" -var_disk="4" +TAGS="mqtt" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:18083${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:18083${CL}" diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index 75ff27579a2..a15129a5c10 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -1,85 +1,57 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -# Source: https://github.com/ErsatzTV/ErsatzTV/ +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ersatztv.org/ - -function header_info { -clear -cat <<"EOF" - ______ __ _______ __ - / ____/_____________ _/ /_____/_ __/ | / / - / __/ / ___/ ___/ __ `/ __/_ / / / | | / / - / /___/ / (__ ) /_/ / /_ / /_/ / | |/ / -/_____/_/ /____/\__,_/\__/ /___/_/ |___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="ErsatzTV" -var_disk="5" +TAGS="iptv" var_cpu="1" var_ram="1024" +var_disk="5" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/ErsatzTV ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/ErsatzTV ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -msg_info "Stopping ErsatzTV" -systemctl stop ersatzTV -msg_ok "Stopped ErsatzTV" + msg_info "Stopping ErsatzTV" + systemctl stop ersatzTV + msg_ok "Stopped ErsatzTV" -msg_info "Updating ErsatzTV" -RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) -cp -R /opt/ErsatzTV/ ErsatzTV-backup -rm ErsatzTV-backup/ErsatzTV -rm -rf /opt/ErsatzTV -wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" | tar -xz -C /opt -mv "/opt/ErsatzTV-${RELEASE}-linux-x64" /opt/ErsatzTV -cp -R ErsatzTV-backup/* /opt/ErsatzTV/ -rm -rf ErsatzTV-backup -msg_ok "Updated ErsatzTV" + msg_info "Updating ErsatzTV" + RELEASE=$(curl -s https://api.github.com/repos/ErsatzTV/ErsatzTV/releases | grep -oP '"tag_name": "\K[^"]+' | head -n 1) + cp -R /opt/ErsatzTV/ ErsatzTV-backup + rm ErsatzTV-backup/ErsatzTV + rm -rf /opt/ErsatzTV + wget -qO- "https://github.com/ErsatzTV/ErsatzTV/releases/download/${RELEASE}/ErsatzTV-${RELEASE}-linux-x64.tar.gz" | tar -xz -C /opt + mv "/opt/ErsatzTV-${RELEASE}-linux-x64" /opt/ErsatzTV + cp -R ErsatzTV-backup/* /opt/ErsatzTV/ + rm -rf ErsatzTV-backup + msg_ok "Updated ErsatzTV" -msg_info "Starting ErsatzTV" -systemctl start ersatzTV -msg_ok "Started ErsatzTV" -msg_ok "Updated Successfully" -exit + msg_info "Starting ErsatzTV" + systemctl start ersatzTV + msg_ok "Started ErsatzTV" + msg_ok "Updated Successfully" + exit } start @@ -87,5 +59,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8409${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8409${CL}" \ No newline at end of file diff --git a/ct/esphome.sh b/ct/esphome.sh index ee091265225..d1a18faedb7 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://esphome.io/ -function header_info { -clear -cat <<"EOF" - ___________ ____ __ __ - / ____/ ___// __ \/ / / /___ ____ ___ ___ - / __/ \__ \/ /_/ / /_/ / __ \/ __ `__ \/ _ \ - / /___ ___/ / ____/ __ / /_/ / / / / / / __/ -/_____//____/_/ /_/ /_/\____/_/ /_/ /_/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="ESPHome" -var_disk="4" +TAGS="automation" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ESPHome" -systemctl stop esphomeDashboard -msg_ok "Stopped ESPHome" + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/esphomeDashboard.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ESPHome" + systemctl stop esphomeDashboard + msg_ok "Stopped ESPHome" -msg_info "Updating ESPHome" -if [[ -d /srv/esphome ]]; then - source /srv/esphome/bin/activate &>/dev/null -fi -pip3 install -U esphome &>/dev/null -msg_ok "Updated ESPHome" + msg_info "Updating ESPHome" + if [[ -d /srv/esphome ]]; then + source /srv/esphome/bin/activate &>/dev/null + fi + pip3 install -U esphome &>/dev/null + msg_ok "Updated ESPHome" -msg_info "Starting ESPHome" -systemctl start esphomeDashboard -msg_ok "Started ESPHome" -msg_ok "Updated Successfully" -exit + msg_info "Starting ESPHome" + systemctl start esphomeDashboard + msg_ok "Started ESPHome" + msg_ok "Updated Successfully" + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6052${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6052${CL}" \ No newline at end of file diff --git a/ct/evcc.sh b/ct/evcc.sh index 003409e1f4a..7df1109afdb 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -2,65 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://evcc.io/en/ -function header_info { -clear -cat <<"EOF" - ___ _ ____________ - / _ \ | / / ___/ ___/ -/ __/ |/ / /__/ /__ -\___/|___/\___/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="evcc" -var_disk="4" +TAGS="solar;ev;automation" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/evcc-stable.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating evcc LXC" -apt update &>/dev/null -apt --only-upgrade install -y evcc &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/evcc-stable.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating evcc LXC" + apt update &>/dev/null + apt --only-upgrade install -y evcc &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -68,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:7070${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7070${CL}" \ No newline at end of file diff --git a/ct/fenrus.sh b/ct/fenrus.sh index 0138a9ce724..c5e5f03a032 100644 --- a/ct/fenrus.sh +++ b/ct/fenrus.sh @@ -1,89 +1,67 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: Scorpoon -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: Scorpoon +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/revenz/Fenrus -function header_info { -clear -cat <<"EOF" - ______ - / ____/__ ____ _______ _______ - / /_ / _ \/ __ \/ ___/ / / / ___/ - / __/ / __/ / / / / / /_/ (__ ) -/_/ \___/_/ /_/_/ \__,_/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Fenrus" -var_disk="4" +TAGS="dashboard" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/${APP} ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit -msg_info "Updating ${APP}" -systemctl stop ${APP} -git clone https://github.com/revenz/Fenrus.git -cd Fenrus || exit -gitVersionNumber=$(git rev-parse HEAD) + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/${APP} ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit + msg_info "Updating ${APP}" + systemctl stop ${APP} + git clone https://github.com/revenz/Fenrus.git + cd Fenrus || exit + gitVersionNumber=$(git rev-parse HEAD) -if [[ "${gitVersionNumber}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - mkdir /opt/fenrus-data-backup - cp -r "/opt/${APP}/data/" /opt/fenrus-data-backup/data - if [[ ! -d /opt/fenrus-data-backup/data ]]; then msg_error "Backup of data folder failed! exiting..."; rm -r /opt/fenrus-data-backup/; exit; fi - export DOTNET_CLI_TELEMETRY_OPTOUT=1 - dotnet publish -c Release -o "/opt/${APP}/" Fenrus.csproj - cp -r /opt/fenrus-data-backup/data/ "/opt/${APP}/" - echo "${gitVersionNumber}" >"/opt/${APP}_version.txt" - rm -r /opt/fenrus-data-backup/ - msg_ok "Updated $APP" -else - msg_ok "No update required. ${APP} is already up to date" -fi -cd .. -rm -r Fenrus/ + if [[ "${gitVersionNumber}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + mkdir /opt/fenrus-data-backup + cp -r "/opt/${APP}/data/" /opt/fenrus-data-backup/data + if [[ ! -d /opt/fenrus-data-backup/data ]]; then + msg_error "Backup of data folder failed! exiting..." + rm -r /opt/fenrus-data-backup/ + exit + fi + export DOTNET_CLI_TELEMETRY_OPTOUT=1 + dotnet publish -c Release -o "/opt/${APP}/" Fenrus.csproj + cp -r /opt/fenrus-data-backup/data/ "/opt/${APP}/" + echo "${gitVersionNumber}" >"/opt/${APP}_version.txt" + rm -r /opt/fenrus-data-backup/ + msg_ok "Updated $APP" + else + msg_ok "No update required. ${APP} is already up to date" + fi + cd .. + rm -r Fenrus/ -systemctl start ${APP} -exit + systemctl start ${APP} + exit } start @@ -91,5 +69,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" diff --git a/ct/fhem.sh b/ct/fhem.sh index 6ffd51ad72a..520f4b925ed 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://fhem.de/ -function header_info { -clear -cat <<"EOF" - ________ - / ____/ /_ ___ ____ ___ - / /_ / __ \/ _ \/ __ `__ \ - / __/ / / / / __/ / / / / / -/_/ /_/ /_/\___/_/ /_/ /_/ - -EOF -} -header_info -echo -e "Loading..." -APP="Fhem" -var_disk="8" +# App Default Values +APP="FHEM" +TAGS="automation" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/fhem.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/fhem.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8083${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}" \ No newline at end of file diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index 1946c93297d..43f48d044d2 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -1,63 +1,37 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: remz1337 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: remz1337 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/FlareSolverr/FlareSolverr -function header_info { -clear -cat <<"EOF" - ________ _____ __ - / ____/ /___ _________ / ___/____ / / _____ __________ - / /_ / / __ `/ ___/ _ \\__ \/ __ \/ / | / / _ \/ ___/ ___/ - / __/ / / /_/ / / / __/__/ / /_/ / /| |/ / __/ / / / -/_/ /_/\__,_/_/ \___/____/\____/_/ |___/\___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="FlareSolverr" -var_disk="4" +TAGS="proxy" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -f /etc/systemd/system/flaresolverr.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi RELEASE=$(wget -q https://github.com/FlareSolverr/FlareSolverr/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then msg_info "Updating $APP LXC" @@ -79,5 +53,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8191${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8191${CL}" \ No newline at end of file diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index 2b58a7399d5..979f5e5077f 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -2,67 +2,42 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://flowiseai.com/ -function header_info { -clear -cat <<"EOF" - ________ _ ___ ____ - / ____/ /___ _ __(_)_______ / | / _/ - / /_ / / __ \ | /| / / / ___/ _ \/ /| | / / - / __/ / / /_/ / |/ |/ / (__ ) __/ ___ |_/ / -/_/ /_/\____/|__/|__/_/____/\___/_/ |_/___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="FlowiseAI" +TAGS="low-code" var_disk="10" var_cpu="4" var_ram="4096" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/flowise.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -systemctl stop flowise -npm install -g flowise --upgrade -systemctl start flowise -msg_ok "Updated ${APP}" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/flowise.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + systemctl stop flowise + npm install -g flowise --upgrade + systemctl start flowise + msg_ok "Updated ${APP}" + exit } start @@ -70,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 8199ec57844..0d43ff19747 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -2,84 +2,58 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://forgejo.org/ -function header_info { - clear - cat <<"EOF" - ______ _ - / ____/___ _________ ___ (_)___ - / /_ / __ \/ ___/ __ `/ _ \ / / __ \ - / __/ / /_/ / / / /_/ / __/ / / /_/ / -/_/ \____/_/ \__, /\___/_/ /\____/ - /____/ /___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Forgejo" -var_disk="10" +TAGS="git" var_cpu="2" var_ram="2048" +var_disk="10" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/forgejo ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop forgejo -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/forgejo ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop forgejo + msg_ok "Stopped ${APP}" -msg_info "Updating ${APP}" -RELEASE=$(curl -s https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//') -wget -qO forgejo-$RELEASE-linux-amd64 "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" -rm -rf /opt/forgejo/* -cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64 -chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64 -ln -sf /opt/forgejo/forgejo-$RELEASE-linux-amd64 /usr/local/bin/forgejo -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + RELEASE=$(curl -s https://codeberg.org/api/v1/repos/forgejo/forgejo/releases/latest | grep -oP '"tag_name":\s*"\K[^"]+' | sed 's/^v//') + wget -qO forgejo-$RELEASE-linux-amd64 "https://codeberg.org/forgejo/forgejo/releases/download/v${RELEASE}/forgejo-${RELEASE}-linux-amd64" + rm -rf /opt/forgejo/* + cp -r forgejo-$RELEASE-linux-amd64 /opt/forgejo/forgejo-$RELEASE-linux-amd64 + chmod +x /opt/forgejo/forgejo-$RELEASE-linux-amd64 + ln -sf /opt/forgejo/forgejo-$RELEASE-linux-amd64 /usr/local/bin/forgejo + msg_ok "Updated ${APP}" -msg_info "Cleaning" -rm -rf forgejo-$RELEASE-linux-amd64 -msg_ok "Cleaned" + msg_info "Cleaning" + rm -rf forgejo-$RELEASE-linux-amd64 + msg_ok "Cleaned" -msg_info "Starting ${APP}" -systemctl start forgejo -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start forgejo + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -87,5 +61,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/frigate.sh b/ct/frigate.sh index ca0104f8235..a68b4e9a07e 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -2,64 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Authors: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://frigate.video/ -function header_info { - clear - cat <<"EOF" - ______ _ __ - / ____/____(_)___ _____ _/ /____ - / /_ / ___/ / __ `/ __ `/ __/ _ \ - / __/ / / / / /_/ / /_/ / /_/ __/ -/_/ /_/ /_/\__, /\__,_/\__/\___/ - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Frigate" -var_disk="20" +TAGS="nvr" var_cpu="4" var_ram="4096" +var_disk="20" var_os="debian" var_version="11" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/systemd/system/frigate.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -f /etc/systemd/system/frigate.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi msg_error "To update Frigate, create a new container and transfer your configuration." - exit + exit } start @@ -67,7 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" -echo -e "go2rtc should be reachable by going to the following URL. - ${BL}http://${IP}:1984${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/gitea.sh b/ct/gitea.sh index 0779cc8d37e..2afcf220e28 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -1,73 +1,47 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-author: Rogue-King -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: Rogue-King +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://about.gitea.com/ -function header_info { -clear -cat <<"EOF" - ______ _ __ - / ____/(_)/ /____ ____ _ - / / __// // __/ _ \/ __ / -/ /_/ // // /_/ __/ /_/ / -\____//_/ \__/\___/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Gitea" -var_disk="8" +TAGS="git" var_cpu="1" var_ram="1024" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /usr/local/bin/gitea ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//') -msg_info "Updating $APP to ${RELEASE}" -wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64 -systemctl stop gitea -rm -rf /usr/local/bin/gitea -mv gitea* /usr/local/bin/gitea -chmod +x /usr/local/bin/gitea -systemctl start gitea -msg_ok "Updated $APP Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/bin/gitea ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(wget -q https://github.com/go-gitea/gitea/releases/latest -O - | grep "title>Release" | cut -d " " -f 4 | sed 's/^v//') + msg_info "Updating $APP to ${RELEASE}" + wget -q https://github.com/go-gitea/gitea/releases/download/v$RELEASE/gitea-$RELEASE-linux-amd64 + systemctl stop gitea + rm -rf /usr/local/bin/gitea + mv gitea* /usr/local/bin/gitea + chmod +x /usr/local/bin/gitea + systemctl start gitea + msg_ok "Updated $APP Successfully" + exit } start @@ -75,5 +49,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/glance.sh b/ct/glance.sh index eb08f85fe50..22e59ef1eca 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -2,67 +2,39 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/glanceapp/glance -function header_info { -clear -cat <<"EOF" - ________ - / ____/ /___ _____ ________ - / / __/ / __ `/ __ \/ ___/ _ \ -/ /_/ / / /_/ / / / / /__/ __/ -\____/_/\__,_/_/ /_/\___/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Glance" -var_disk="2" +TAGS="dashboard" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources + header_info + check_container_storage + check_container_resources if [[ ! -f /etc/systemd/system/glance.service ]]; then msg_error "No ${APP} Installation Found!" exit fi - RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + RELEASE=$(curl -s https://api.github.com/repos/glanceapp/glance/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then msg_info "Stopping Service" systemctl stop glance @@ -70,7 +42,7 @@ check_container_resources msg_info "Updating ${APP} to v${RELEASE}" cd /opt - wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz + wget -q https://github.com/glanceapp/glance/releases/download/v${RELEASE}/glance-linux-amd64.tar.gz rm -rf /opt/glance/glance tar -xzf glance-linux-amd64.tar.gz -C /opt/glance echo "${RELEASE}" >"/opt/${APP}_version.txt" @@ -95,5 +67,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/go2rtc.sh b/ct/go2rtc.sh index 741ee0d221b..a4508796167 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -2,71 +2,45 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/AlexxIT/go2rtc -function header_info { -clear -cat <<"EOF" - ___ __ - ____ _____ |__ \ _____/ /______ - / __ `/ __ \__/ // ___/ __/ ___/ - / /_/ / /_/ / __// / / /_/ /__ - \__, /\____/____/_/ \__/\___/ -/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="go2rtc" -var_disk="4" +TAGS="recorder;video" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/go2rtc ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop go2rtc -cd /opt/go2rtc -rm go2rtc_linux_amd64 -wget -q https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64 -chmod +x go2rtc_linux_amd64 -systemctl start go2rtc -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/go2rtc ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop go2rtc + cd /opt/go2rtc + rm go2rtc_linux_amd64 + wget -q https://github.com/AlexxIT/go2rtc/releases/latest/download/go2rtc_linux_amd64 + chmod +x go2rtc_linux_amd64 + systemctl start go2rtc + msg_ok "Updated $APP" + exit } start @@ -74,5 +48,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:1984${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:1984${CL}" \ No newline at end of file diff --git a/ct/gokapi.sh b/ct/gokapi.sh index 79814f5fa6c..f0df0568d6b 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Forceu/Gokapi -function header_info { -clear -cat <<"EOF" - ______ __ _ - / ____/___ / /______ _____ (_) - / / __/ __ \/ //_/ __ `/ __ \/ / -/ /_/ / /_/ / ,< / /_/ / /_/ / / -\____/\____/_/|_|\__,_/ .___/_/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Gokapi" -var_disk="4" +TAGS="file;sharing" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/gokapi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/gokapi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:53842/setup${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:53842/setup${CL}" \ No newline at end of file diff --git a/ct/gotify.sh b/ct/gotify.sh index c80fb9efba9..059f89494c1 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -2,85 +2,60 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gotify.net/ -function header_info { -clear -cat <<"EOF" - ______ __ _ ____ - / ____/___ / /_(_) __/_ __ - / / __/ __ \/ __/ / /_/ / / / -/ /_/ / /_/ / /_/ / __/ /_/ / -\____/\____/\__/_/_/ \__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Gotify" -var_disk="2" +TAGS="notification" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/gotify ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/gotify ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -RELEASE=$(curl -s https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop gotify - msg_ok "Stopped ${APP}" + RELEASE=$(curl -s https://api.github.com/repos/gotify/server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop gotify + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt/gotify - wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip - unzip -oq gotify-linux-amd64.zip - rm -rf gotify-linux-amd64.zip - chmod +x gotify-linux-amd64 - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt/gotify + wget -q https://github.com/gotify/server/releases/download/v${RELEASE}/gotify-linux-amd64.zip + unzip -oq gotify-linux-amd64.zip + rm -rf gotify-linux-amd64.zip + chmod +x gotify-linux-amd64 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start gotify - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting ${APP}" + systemctl start gotify + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -88,5 +63,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP} ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/ct/grafana.sh b/ct/grafana.sh index 7042a2fe5b4..1f052654336 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://grafana.com/ -function header_info { -clear -cat <<"EOF" - ______ ____ - / ____/________ _/ __/___ _____ ____ _ - / / __/ ___/ __ / /_/ __ / __ \/ __ / -/ /_/ / / / /_/ / __/ /_/ / / / / /_/ / -\____/_/ \__,_/_/ \__,_/_/ /_/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Grafana" -var_disk="2" +TAGS="monitoring;visualization" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/grafana.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/grocy.sh b/ct/grocy.sh index 945c7aea01a..257b0e76bc2 100644 --- a/ct/grocy.sh +++ b/ct/grocy.sh @@ -2,76 +2,51 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://grocy.info/ -function header_info { -clear -cat <<"EOF" - ____ __________ _______ __ - / __ / ___/ __ \/ ___/ / / / - / /_/ / / / /_/ / /__/ /_/ / - \__, /_/ \____/\___/\__, / -/____/ /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="grocy" -var_disk="2" +TAGS="grocery;household" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apache2/sites-available/grocy.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -php_version=$(php -v | head -n 1 | awk '{print $2}') -if [[ ! $php_version == "8.3"* ]]; then - msg_info "Updating PHP" - curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg - echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list - apt-get update - apt-get install -y php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl,sqlite3,fpm,gd,zip,xml} - systemctl reload apache2 - apt autoremove - msg_ok "Updated PHP" -fi -msg_info "Updating ${APP}" -bash /var/www/html/update.sh -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apache2/sites-available/grocy.conf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + php_version=$(php -v | head -n 1 | awk '{print $2}') + if [[ ! $php_version == "8.3"* ]]; then + msg_info "Updating PHP" + curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg + echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list + apt-get update + apt-get install -y php8.3 php8.3-cli php8.3-{bz2,curl,mbstring,intl,sqlite3,fpm,gd,zip,xml} + systemctl reload apache2 + apt autoremove + msg_ok "Updated PHP" + fi + msg_info "Updating ${APP}" + bash /var/www/html/update.sh + msg_ok "Updated Successfully" + exit } start @@ -79,5 +54,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/headscale.sh b/ct/headscale.sh index 5138b81121b..53e37c38c7e 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -2,82 +2,57 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/juanfont/headscale -function header_info { -clear -cat <<"EOF" - __ __ __ __ - / / / /__ ____ _____/ /_____________ _/ /__ - / /_/ / _ \/ __ `/ __ / ___/ ___/ __ `/ / _ \ - / __ / __/ /_/ / /_/ (__ ) /__/ /_/ / / __/ -/_/ /_/\___/\__,_/\__,_/____/\___/\__,_/_/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Headscale" -var_disk="2" +TAGS="tailscale" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/headscale ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping ${APP}" - systemctl stop headscale - msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/headscale ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/juanfont/headscale/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop headscale + msg_ok "Stopped ${APP}" + + msg_info "Updating $APP to v${RELEASE}" + wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb + dpkg -i headscale_${RELEASE}_linux_amd64.deb + rm headscale_${RELEASE}_linux_amd64.deb + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to ${RELEASE}" - msg_info "Updating $APP to v${RELEASE}" - wget -q https://github.com/juanfont/headscale/releases/download/v${RELEASE}/headscale_${RELEASE}_linux_amd64.deb - dpkg -i headscale_${RELEASE}_linux_amd64.deb - rm headscale_${RELEASE}_linux_amd64.deb - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to ${RELEASE}" - - msg_info "Starting ${APP}" - systemctl start headscale - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting ${APP}" + systemctl start headscale + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -85,3 +60,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/heimdall-dashboard.sh b/ct/heimdall-dashboard.sh index 265acb0b595..6bf533417cd 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -2,106 +2,76 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://heimdall.site/ -function header_info { -clear -cat <<"EOF" - _ _ _ _ ___ _ _ _ - /\ /\___(_)_ __ ___ __| | __ _| | | / \__ _ ___| |__ | |__ ___ __ _ _ __ __| | - / /_/ / _ \ | '_ ` _ \ / _` |/ _` | | | / /\ / _` / __| '_ \| '_ \ / _ \ / _` | '__/ _` | -/ __ / __/ | | | | | | (_| | (_| | | | / /_// (_| \__ \ | | | |_) | (_) | (_| | | | (_| | -\/ /_/ \___|_|_| |_| |_|\__,_|\__,_|_|_| /___,' \__,_|___/_| |_|_.__/ \___/ \__,_|_| \__,_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Heimdall-Dashboard" -var_disk="2" +TAGS="dashboard" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Heimdall ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]') -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping ${APP}" - systemctl stop heimdall - sleep 1 - msg_ok "Stopped ${APP}" - - msg_info "Backing up Data" - cp -R /opt/Heimdall/database database-backup - cp -R /opt/Heimdall/public public-backup - sleep 1 - msg_ok "Backed up Data" - - msg_info "Updating Heimdall Dashboard to ${RELEASE}" - wget -q https://github.com/linuxserver/Heimdall/archive/${RELEASE}.tar.gz - tar xzf ${RELEASE}.tar.gz - VER=$(curl -s https://api.github.com/repos/linuxserver/Heimdall/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - cp -R Heimdall-${VER}/* /opt/Heimdall - cd /opt/Heimdall - apt-get install -y composer &>/dev/null - COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated Heimdall Dashboard to ${RELEASE}" - - msg_info "Restoring Data" - cd ~ - cp -R database-backup/* /opt/Heimdall/database - cp -R public-backup/* /opt/Heimdall/public - sleep 1 - msg_ok "Restored Data" - - msg_info "Cleanup" - rm -rf {${RELEASE}.tar.gz,Heimdall-${VER},public-backup,database-backup,Heimdall} - sleep 1 - msg_ok "Cleaned" - - msg_info "Starting ${APP}" - systemctl start heimdall.service - sleep 2 - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}." -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Heimdall ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -sX GET "https://api.github.com/repos/linuxserver/Heimdall/releases/latest" | awk '/tag_name/{print $4;exit}' FS='[""]') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop heimdall + sleep 1 + msg_ok "Stopped ${APP}" + msg_info "Backing up Data" + cp -R /opt/Heimdall/database database-backup + cp -R /opt/Heimdall/public public-backup + sleep 1 + msg_ok "Backed up Data" + msg_info "Updating Heimdall Dashboard to ${RELEASE}" + wget -q https://github.com/linuxserver/Heimdall/archive/${RELEASE}.tar.gz + tar xzf ${RELEASE}.tar.gz + VER=$(curl -s https://api.github.com/repos/linuxserver/Heimdall/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + cp -R Heimdall-${VER}/* /opt/Heimdall + cd /opt/Heimdall + apt-get install -y composer &>/dev/null + COMPOSER_ALLOW_SUPERUSER=1 composer dump-autoload &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated Heimdall Dashboard to ${RELEASE}" + msg_info "Restoring Data" + cd ~ + cp -R database-backup/* /opt/Heimdall/database + cp -R public-backup/* /opt/Heimdall/public + sleep 1 + msg_ok "Restored Data" + msg_info "Cleanup" + rm -rf {${RELEASE}.tar.gz,Heimdall-${VER},public-backup,database-backup,Heimdall} + sleep 1 + msg_ok "Cleaned" + msg_info "Starting ${APP}" + systemctl start heimdall.service + sleep 2 + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + fi + exit } start @@ -109,5 +79,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:7990${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7990${CL}" \ No newline at end of file diff --git a/ct/hivemq.sh b/ct/hivemq.sh index 9356ad90471..d423db62dbd 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.hivemq.com/ -function header_info { -clear -cat <<"EOF" - __ ___ __ _______ ____________ - / / / (_) _____ / |/ / __ \ / ____/ ____/ - / /_/ / / | / / _ \/ /|_/ / / / / / / / __/ - / __ / /| |/ / __/ / / / /_/ / / /___/ /___ -/_/ /_/_/ |___/\___/_/ /_/\___\_\ \____/_____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="HiveMQ" -var_disk="4" +TAGS="mqtt" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,3 +41,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/hoarder.sh b/ct/hoarder.sh index b28a52a831b..22238e0efe2 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -2,99 +2,74 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: MickLesk (Canbiz) & vhsdream -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://hoarder.app/ -function header_info { -clear -cat <<"EOF" - __ __ __ - / / / /___ ____ __________/ /__ _____ - / /_/ / __ \/ __ `/ ___/ __ / _ \/ ___/ - / __ / /_/ / /_/ / / / /_/ / __/ / -/_/ /_/\____/\__,_/_/ \__,_/\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Hoarder" -var_disk="8" +TAGS="bookmark" var_cpu="2" var_ram="4096" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/hoarder ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -PREV_RELEASE=$(cat /opt/${APP}_version.txt) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then - msg_info "Stopping Services" - systemctl stop hoarder-web hoarder-workers hoarder-browser - msg_ok "Stopped Services" - msg_info "Updating ${APP} to v${RELEASE}" - cd /opt - mv /opt/hoarder/.env /opt/.env - rm -rf /opt/hoarder - wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv hoarder-${RELEASE} /opt/hoarder - cd /opt/hoarder/apps/web - pnpm install --frozen-lockfile &>/dev/null - pnpm exec next build --experimental-build-mode compile &>/dev/null - cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web - cd /opt/hoarder/apps/workers - pnpm install --frozen-lockfile &>/dev/null - export DATA_DIR=/opt/hoarder_data - cd /opt/hoarder/packages/db - pnpm migrate &>/dev/null - mv /opt/.env /opt/hoarder/.env - sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env - msg_ok "Updated ${APP} to v${RELEASE}" - - msg_info "Starting Services" - systemctl start hoarder-browser hoarder-workers hoarder-web - msg_ok "Started Services" - msg_info "Cleaning up" - rm -R /opt/v${RELEASE}.zip - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}." -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/hoarder ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/hoarder-app/hoarder/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + PREV_RELEASE=$(cat /opt/${APP}_version.txt) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "${PREV_RELEASE}" ]]; then + msg_info "Stopping Services" + systemctl stop hoarder-web hoarder-workers hoarder-browser + msg_ok "Stopped Services" + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + mv /opt/hoarder/.env /opt/.env + rm -rf /opt/hoarder + wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv hoarder-${RELEASE} /opt/hoarder + cd /opt/hoarder/apps/web + pnpm install --frozen-lockfile &>/dev/null + pnpm exec next build --experimental-build-mode compile &>/dev/null + cp -r /opt/hoarder/apps/web/.next/standalone/apps/web/server.js /opt/hoarder/apps/web + cd /opt/hoarder/apps/workers + pnpm install --frozen-lockfile &>/dev/null + export DATA_DIR=/opt/hoarder_data + cd /opt/hoarder/packages/db + pnpm migrate &>/dev/null + mv /opt/.env /opt/hoarder/.env + sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting Services" + systemctl start hoarder-browser hoarder-workers hoarder-web + msg_ok "Started Services" + msg_info "Cleaning up" + rm -R /opt/v${RELEASE}.zip + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + fi + exit } start @@ -102,5 +77,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/homarr.sh b/ct/homarr.sh index 1e7210b3c66..5423976f892 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -1,105 +1,79 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://homarr.dev/ -function header_info { -clear -cat <<"EOF" - __ __ - / / / /___ ____ ___ ____ ___________ - / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/ - / __ / /_/ / / / / / / /_/ / / / / -/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Homarr" -var_disk="8" +TAGS="*arr;dashboard" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/homarr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/ajnart/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Services" - systemctl stop homarr - msg_ok "Services Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/homarr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/ajnart/homarr/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Services" + systemctl stop homarr + msg_ok "Services Stopped" - msg_info "Backing up Data" - mkdir -p /opt/homarr-data-backup - cp /opt/homarr/.env /opt/homarr-data-backup/.env - cp /opt/homarr/database/db.sqlite /opt/homarr-data-backup/db.sqlite - cp -r /opt/homarr/data/configs /opt/homarr-data-backup/configs - msg_ok "Backed up Data" + msg_info "Backing up Data" + mkdir -p /opt/homarr-data-backup + cp /opt/homarr/.env /opt/homarr-data-backup/.env + cp /opt/homarr/database/db.sqlite /opt/homarr-data-backup/db.sqlite + cp -r /opt/homarr/data/configs /opt/homarr-data-backup/configs + msg_ok "Backed up Data" - msg_info "Updating ${APP} to ${RELEASE}" - wget -q "https://github.com/ajnart/homarr/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - rm -rf v${RELEASE}.zip - rm -rf /opt/homarr - mv homarr-${RELEASE} /opt/homarr - mv /opt/homarr-data-backup/.env /opt/homarr/.env - cd /opt/homarr - yarn install &>/dev/null - yarn build &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + msg_info "Updating ${APP} to ${RELEASE}" + wget -q "https://github.com/ajnart/homarr/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + rm -rf v${RELEASE}.zip + rm -rf /opt/homarr + mv homarr-${RELEASE} /opt/homarr + mv /opt/homarr-data-backup/.env /opt/homarr/.env + cd /opt/homarr + yarn install &>/dev/null + yarn build &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Restoring Data" - rm -rf /opt/homarr/data/configs - mv /opt/homarr-data-backup/configs /opt/homarr/data/configs - mv /opt/homarr-data-backup/db.sqlite /opt/homarr/database/db.sqlite - yarn db:migrate &>/dev/null - rm -rf /opt/homarr-data-backup - msg_ok "Restored Data" + msg_info "Restoring Data" + rm -rf /opt/homarr/data/configs + mv /opt/homarr-data-backup/configs /opt/homarr/data/configs + mv /opt/homarr-data-backup/db.sqlite /opt/homarr/database/db.sqlite + yarn db:migrate &>/dev/null + rm -rf /opt/homarr-data-backup + msg_ok "Restored Data" - msg_info "Starting Services" - systemctl start homarr - msg_ok "Started Services" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting Services" + systemctl start homarr + msg_ok "Started Services" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -107,5 +81,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 001f98f18d8..5b905badd1d 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -2,56 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.home-assistant.io/ -function header_info { - clear - cat <<"EOF" - _ _ _ _ ___ - /\ /\___ _ __ ___ ___ /_\ ___ ___(_)___| |_ __ _ _ __ | |_ / __\___ _ __ ___ - / /_/ / _ \| '_ ` _ \ / _ \ //_\\/ __/ __| / __| __/ _` | '_ \| __| / / / _ \| '__/ _ \ -/ __ / (_) | | | | | | __/ / _ \__ \__ \ \__ \ || (_| | | | | |_ / /__| (_) | | | __/ -\/ /_/ \___/|_| |_| |_|\___| \_/ \_/___/___/_|___/\__\__,_|_| |_|\__| \____/\___/|_| \___| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Home Assistant-Core" -var_disk="8" +TAGS="automation;smarthome" var_cpu="2" var_ram="1024" +var_disk="8" var_os="ubuntu" var_version="24.04" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -119,7 +91,7 @@ function update_script() { filebrowser config init -a '0.0.0.0' &>/dev/null filebrowser config set -a '0.0.0.0' &>/dev/null filebrowser config set --auth.method=noauth &>/dev/null - filebrowser users add ID 1 --perm.admin &>/dev/null + filebrowser users add ID 1 --perm.admin &>/dev/null else filebrowser config init -a '0.0.0.0' &>/dev/null filebrowser config set -a '0.0.0.0' &>/dev/null @@ -154,5 +126,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8123${CL}" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8132${CL}" \ No newline at end of file diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index bb0a325a04b..2ac678b8f7d 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -2,56 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.home-assistant.io/ -function header_info { - clear - cat <<"EOF" - __ __ ___ _ __ __ - / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ - / /_/ / __ \/ __ __ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ / __ \/ __/ - / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ -/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Home Assistant" -var_disk="16" +TAGS="automation;smarthome" var_cpu="2" var_ram="2048" +var_disk="16" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -138,7 +110,7 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8123${CL} -Portainer should be reachable by going to the following URL. - ${BL}https://${IP}:9443${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}HA: http://${IP}:8123${CL}" +echo -e "${TAB}${GATEWAY}${BGN}Portainer: http://${IP}:9443${CL}" \ No newline at end of file diff --git a/ct/homebox.sh b/ct/homebox.sh index 2441bc0b766..121952f485c 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -1,86 +1,60 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://homebox.software/en/ -function header_info { -clear -cat <<"EOF" - __ __ ____ - / / / /___ ____ ___ ___ / __ )____ _ __ - / /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/ - / __ / /_/ / / / / / / __/ /_/ / /_/ /> < -/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="HomeBox" -var_disk="4" +TAGS="inventory;household" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /opt/homebox ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop homebox - msg_ok "${APP} Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -f /opt/homebox ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/sysadminsmedia/homebox/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop homebox + msg_ok "${APP} Stopped" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - rm -rf homebox_bak - mv homebox homebox_bak - wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz | tar -xzf - -C /opt - chmod +x /opt/homebox - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated Homebox" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + rm -rf homebox_bak + mv homebox homebox_bak + wget -qO- https://github.com/sysadminsmedia/homebox/releases/download/${RELEASE}/homebox_Linux_x86_64.tar.gz | tar -xzf - -C /opt + chmod +x /opt/homebox + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated Homebox" - msg_info "Starting ${APP}" - systemctl start homebox - msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start homebox + msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -88,5 +62,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:7745${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7745${CL}" \ No newline at end of file diff --git a/ct/homebridge.sh b/ct/homebridge.sh index b371d9c0ce4..a17c9f3cbd5 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://homebridge.io/ -function header_info { -clear -cat <<"EOF" - __ ______ __ _____________ ____ ________ ____________ - / / / / __ \/ |/ / ____/ __ )/ __ \/ _/ __ \/ ____/ ____/ - / /_/ / / / / /|_/ / __/ / __ / /_/ // // / / / / __/ __/ - / __ / /_/ / / / / /___/ /_/ / _, _// // /_/ / /_/ / /___ -/_/ /_/\____/_/ /_/_____/_____/_/ |_/___/_____/\____/_____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Homebridge" -var_disk="4" +TAGS="smarthome;homekit" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/homebridge.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get install -y homebridge &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/homebridge.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get install -y homebridge &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8581${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8581${CL}" \ No newline at end of file diff --git a/ct/homepage.sh b/ct/homepage.sh index ddce1e8a33b..ce4106614ce 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -2,89 +2,64 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gethomepage.dev/ -function header_info { -clear -cat <<"EOF" - __ __ - / / / /___ ____ ___ ___ ____ ____ _____ ____ - / /_/ / __ \/ __ `__ \/ _ \/ __ \/ __ `/ __ `/ _ \ - / __ / /_/ / / / / / / __/ /_/ / /_/ / /_/ / __/ -/_/ /_/\____/_/ /_/ /_/\___/ .___/\__,_/\__, /\___/ - /_/ /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Homepage" -var_disk="3" +TAGS="dashboard" var_cpu="2" var_ram="1024" +var_disk="3" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/homepage ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - npm install -g pnpm >/dev/null 2>&1 - echo "Installed NPM..." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/homepage ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then + if ! command -v npm >/dev/null 2>&1; then + echo "Installing NPM..." + apt-get install -y npm >/dev/null 2>&1 + npm install -g pnpm >/dev/null 2>&1 + echo "Installed NPM..." + fi + fi + RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Updating Homepage to v${RELEASE} (Patience)" + systemctl stop homepage + wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz + tar -xzf v${RELEASE}.tar.gz + rm -rf v${RELEASE}.tar.gz + cp -r homepage-${RELEASE}/* /opt/homepage/ + rm -rf homepage-${RELEASE} + cd /opt/homepage + npx update-browserslist-db@latest + pnpm install + pnpm build + systemctl start homepage + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated Homepage to v${RELEASE}" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" fi -fi -RELEASE=$(curl -s https://api.github.com/repos/gethomepage/homepage/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Updating Homepage to v${RELEASE} (Patience)" - systemctl stop homepage - wget -q https://github.com/gethomepage/homepage/archive/refs/tags/v${RELEASE}.tar.gz - tar -xzf v${RELEASE}.tar.gz - rm -rf v${RELEASE}.tar.gz - cp -r homepage-${RELEASE}/* /opt/homepage/ - rm -rf homepage-${RELEASE} - cd /opt/homepage - npx update-browserslist-db@latest - pnpm install - pnpm build - systemctl start homepage - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated Homepage to v${RELEASE}" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + exit } start @@ -92,5 +67,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/homer.sh b/ct/homer.sh index bb2695d7628..1d222e180dc 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -2,92 +2,67 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/bastienwirtz/homer -function header_info { -clear -cat <<"EOF" - __ __ - / / / /___ ____ ___ ___ _____ - / /_/ / __ \/ __ `__ \/ _ \/ ___/ - / __ / /_/ / / / / / / __/ / -/_/ /_/\____/_/ /_/ /_/\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Homer" -var_disk="2" +TAGS="dashboard" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/homer ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop homer -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/homer ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop homer + msg_ok "Stopped ${APP}" -msg_info "Backing up assets directory" -cd ~ -mkdir -p assets-backup -cp -R /opt/homer/assets/. assets-backup -msg_ok "Backed up assets directory" + msg_info "Backing up assets directory" + cd ~ + mkdir -p assets-backup + cp -R /opt/homer/assets/. assets-backup + msg_ok "Backed up assets directory" -msg_info "Updating ${APP}" -rm -rf /opt/homer/* -cd /opt/homer -wget -q https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip -unzip homer.zip &>/dev/null -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + rm -rf /opt/homer/* + cd /opt/homer + wget -q https://github.com/bastienwirtz/homer/releases/latest/download/homer.zip + unzip homer.zip &>/dev/null + msg_ok "Updated ${APP}" -msg_info "Restoring assets directory" -cd ~ -cp -Rf assets-backup/. /opt/homer/assets/ -msg_ok "Restored assets directory" + msg_info "Restoring assets directory" + cd ~ + cp -Rf assets-backup/. /opt/homer/assets/ + msg_ok "Restored assets directory" -msg_info "Cleaning" -rm -rf assets-backup /opt/homer/homer.zip -msg_ok "Cleaned" + msg_info "Cleaning" + rm -rf assets-backup /opt/homer/homer.zip + msg_ok "Cleaned" -msg_info "Starting ${APP}" -systemctl start homer -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start homer + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -95,5 +70,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8010${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8010${CL}" \ No newline at end of file diff --git a/ct/hyperhdr.sh b/ct/hyperhdr.sh index 023a326fdf8..bdb79134bde 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.hyperhdr.eu/ -function header_info { -clear -cat <<"EOF" - __ __ __ ______ ____ - / / / /_ ______ ___ _____/ / / / __ \/ __ \ - / /_/ / / / / __ \/ _ \/ ___/ /_/ / / / / /_/ / - / __ / /_/ / /_/ / __/ / / __ / /_/ / _, _/ -/_/ /_/\__, / .___/\___/_/ /_/ /_/_____/_/ |_| - /____/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="HyperHDR" -var_disk="4" +TAGS="ambient lightning" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" \ No newline at end of file diff --git a/ct/hyperion.sh b/ct/hyperion.sh index f9134e69e81..8034cf1e1db 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://hyperion-project.org/forum/ -function header_info { -clear -cat <<"EOF" - __ __ _ - / / / /_ ______ ___ _____(_)___ ____ - / /_/ / / / / __ \/ _ \/ ___/ / __ \/ __ \ - / __ / /_/ / /_/ / __/ / / / /_/ / / / / -/_/ /_/\__, / .___/\___/_/ /_/\____/_/ /_/ - /____/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Hyperion" -var_disk="2" +TAGS="ambient lightning" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/hyperion.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get install -y hyperion &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/hyperion.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get install -y hyperion &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" \ No newline at end of file diff --git a/ct/influxdb.sh b/ct/influxdb.sh index 6e4f683cff6..11f5002fada 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.influxdata.com/ -function header_info { -clear -cat <<"EOF" - ____ ______ ____ ____ - / _/___ / __/ /_ ___ __/ __ \/ __ ) - / // __ \/ /_/ / / / / |/_/ / / / __ | - _/ // / / / __/ / /_/ /> /dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/influxdata.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8086${CL}" \ No newline at end of file diff --git a/ct/inspircd.sh b/ct/inspircd.sh index 6194c31c437..4f9c3d310cb 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -2,60 +2,31 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.inspircd.org/ -function header_info { -clear -cat <<"EOF" - ____ ________ ______ __ - / _/___ _________ / _/ __ \/ ____/___/ / - / // __ \/ ___/ __ \ / // /_/ / / / __ / - _/ // / / (__ ) /_/ // // _, _/ /___/ /_/ / -/___/_/ /_/____/ .___/___/_/ |_|\____/\__,_/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="InspIRCd" -var_disk="2" +TAGS="IRC" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources + header_info + check_container_storage + check_container_resources if [[ ! -f /lib/systemd/system/inspircd.service ]]; then msg_error "No ${APP} Installation Found!" @@ -93,5 +64,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} server should be reachable by connecting to the following server. - ${BL}Server Name:${IP} Port:6667${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Server-Acces it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:6667${CL}" \ No newline at end of file diff --git a/ct/iobroker.sh b/ct/iobroker.sh index eb5a1f80498..9b602e9d25d 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.iobroker.net/#en/intro -function header_info { -clear -cat <<"EOF" - _ ____ __ - (_)___ / __ )_________ / /_____ _____ - / / __ \/ __ / ___/ __ \/ //_/ _ \/ ___/ - / / /_/ / /_/ / / / /_/ / ,< / __/ / -/_/\____/_____/_/ \____/_/|_|\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="ioBroker" -var_disk="8" +TAGS="automtation" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/iobroker ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/iobroker ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8081${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}" \ No newline at end of file diff --git a/ct/iventoy.sh b/ct/iventoy.sh index 5e38f05f598..69ce6797ce1 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.iventoy.com/en/index.html -function header_info { -clear -cat <<"EOF" - _ _ __ __ - (_) | / /__ ____ / /_____ __ __ - / /| | / / _ \/ __ \/ __/ __ \/ / / / - / / | |/ / __/ / / / /_/ /_/ / /_/ / -/_/ |___/\___/_/ /_/\__/\____/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="iVentoy" +TAGS="pxe-tool" var_disk="2" var_cpu="1" var_ram="512" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/iventoy ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/iventoy ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:26000/ ${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:26000${CL}" \ No newline at end of file diff --git a/ct/jackett.sh b/ct/jackett.sh index 7f336510f7c..d35a7042225 100644 --- a/ct/jackett.sh +++ b/ct/jackett.sh @@ -2,76 +2,51 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Jackett/Jackett -function header_info { -clear -cat <<"EOF" - __ __ __ __ - / /___ ______/ /_____ / /_/ /_ - __ / / __ `/ ___/ //_/ _ \/ __/ __/ -/ /_/ / /_/ / /__/ ,< / __/ /_/ /_ -\____/\__,_/\___/_/|_|\___/\__/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Jackett" -var_disk="2" +TAGS="torrent" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/jackett.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(wget -q https://github.com/Jackett/Jackett/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating ${APP}" - wget -q https://github.com/Jackett/Jackett/releases/download/$RELEASE/Jackett.Binaries.LinuxAMDx64.tar.gz - systemctl stop jackett - rm -rf /opt/Jackett - tar -xzf Jackett.Binaries.LinuxAMDx64.tar.gz -C /opt - rm -rf Jackett.Binaries.LinuxAMDx64.tar.gz - systemctl start jackett - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/jackett.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(wget -q https://github.com/Jackett/Jackett/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP}" + wget -q https://github.com/Jackett/Jackett/releases/download/$RELEASE/Jackett.Binaries.LinuxAMDx64.tar.gz + systemctl stop jackett + rm -rf /opt/Jackett + tar -xzf Jackett.Binaries.LinuxAMDx64.tar.gz -C /opt + rm -rf Jackett.Binaries.LinuxAMDx64.tar.gz + systemctl start jackett + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -79,5 +54,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9117${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9117${CL}" diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index 813200d3af4..e39fe8f05cf 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -2,68 +2,42 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://jellyfin.org/ -function header_info { -clear -cat <<"EOF" - __ ____ _____ - / /__ / / /_ __/ __(_)___ - __ / / _ \/ / / / / / /_/ / __ \ -/ /_/ / __/ / / /_/ / __/ / / / / -\____/\___/_/_/\__, /_/ /_/_/ /_/ - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Jellyfin" -var_disk="8" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="8" var_os="ubuntu" var_version="22.04" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /usr/lib/jellyfin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -apt-get -y --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /usr/lib/jellyfin ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + apt-get --with-new-pkgs upgrade jellyfin jellyfin-server &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -71,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8096${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8086${CL}" \ No newline at end of file diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 602ebad03de..94d2fddefbb 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -2,84 +2,62 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.jellyseerr.dev/ -function header_info { -clear -cat <<"EOF" - __ ____ - / /__ / / /_ __________ ___ __________ - __ / / _ \/ / / / / / ___/ _ \/ _ \/ ___/ ___/ -/ /_/ / __/ / / /_/ (__ ) __/ __/ / / / -\____/\___/_/_/\__, /____/\___/\___/_/ /_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Jellyseerr" -var_disk="8" +TAGS="media" var_cpu="4" var_ram="4096" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/jellyseerr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -if ! command -v pnpm &> /dev/null; then - msg_error "pnpm not found. Installing..." - npm install -g pnpm &>/dev/null -else - msg_ok "pnpm is already installed." -fi -msg_info "Updating $APP" -cd /opt/jellyseerr -output=$(git pull --no-rebase) -if echo "$output" | grep -q "Already up to date." -then - msg_ok "$APP is already up to date." - exit -fi -systemctl stop jellyseerr -rm -rf dist -rm -rf .next -rm -rf node_modules -export CYPRESS_INSTALL_BINARY=0 -pnpm install --frozen-lockfile &>/dev/null -export NODE_OPTIONS="--max-old-space-size=3072" -pnpm build &>/dev/null -cat </etc/systemd/system/jellyseerr.service + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/jellyseerr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + if ! command -v pnpm &> /dev/null; then + msg_error "pnpm not found. Installing..." + npm install -g pnpm &>/dev/null + else + msg_ok "pnpm is already installed." + fi + + msg_info "Updating $APP" + cd /opt/jellyseerr + output=$(git pull --no-rebase) + + if echo "$output" | grep -q "Already up to date."; then + msg_ok "$APP is already up to date." + exit + fi + + systemctl stop jellyseerr + rm -rf dist .next node_modules + export CYPRESS_INSTALL_BINARY=0 + pnpm install --frozen-lockfile &>/dev/null + export NODE_OPTIONS="--max-old-space-size=3072" + pnpm build &>/dev/null + + cat </etc/systemd/system/jellyseerr.service [Unit] Description=jellyseerr Service After=network.target @@ -94,10 +72,11 @@ ExecStart=/usr/bin/node dist/index.js [Install] WantedBy=multi-user.target EOF -systemctl daemon-reload -systemctl start jellyseerr -msg_ok "Updated $APP" -exit + + systemctl daemon-reload + systemctl start jellyseerr + msg_ok "Updated $APP" + exit } start @@ -105,5 +84,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5055${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}" \ No newline at end of file diff --git a/ct/kavita.sh b/ct/kavita.sh index e80d64631de..33c65071676 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -2,71 +2,46 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.kavitareader.com/ -function header_info { -clear -cat <<"EOF" - __ __ _ __ - / //_/___ __ __(_) /_____ _ - / ,< / __ `/ | / / / __/ __ `/ - / /| / /_/ /| |/ / / /_/ /_/ / -/_/ |_\__,_/ |___/_/\__/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Kavita" -var_disk="8" +TAGS="reader" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Kavita ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -systemctl stop kavita -RELEASE=$(curl -s https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner &>/dev/null -rm -rf Kavita/config -cp -r Kavita/* /opt/Kavita -rm -rf Kavita -systemctl start kavita -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Kavita ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + systemctl stop kavita + RELEASE=$(curl -s https://api.github.com/repos/Kareadita/Kavita/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + tar -xvzf <(curl -fsSL https://github.com/Kareadita/Kavita/releases/download/$RELEASE/kavita-linux-x64.tar.gz) --no-same-owner &>/dev/null + rm -rf Kavita/config + cp -r Kavita/* /opt/Kavita + rm -rf Kavita + systemctl start kavita + msg_ok "Updated $APP LXC" + exit } start @@ -74,5 +49,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 4b6a9b2399b..9d4b742b799 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -2,87 +2,61 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.keycloak.org/ -function header_info { -clear -cat <<"EOF" - __ __ __ __ - / //_/__ __ _______/ /___ ____ _/ /__ - / ,< / _ \/ / / / ___/ / __ \/ __ / //_/ - / /| / __/ /_/ / /__/ / /_/ / /_/ / ,< -/_/ |_\___/\__, /\___/_/\____/\__,_/_/|_| - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Keycloak" -var_disk="4" +TAGS="access management" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/keycloak.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/keycloak.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" -msg_info "Updating packages" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null + msg_info "Updating packages" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null -RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -msg_info "Updating Keycloak to v$RELEASE" -cd /opt -wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz -mv keycloak keycloak.old -tar -xzf keycloak-$RELEASE.tar.gz -cp -r keycloak.old/conf keycloak-$RELEASE -cp -r keycloak.old/providers keycloak-$RELEASE -cp -r keycloak.old/themes keycloak-$RELEASE -mv keycloak-$RELEASE keycloak + RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + msg_info "Updating Keycloak to v$RELEASE" + cd /opt + wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz + mv keycloak keycloak.old + tar -xzf keycloak-$RELEASE.tar.gz + cp -r keycloak.old/conf keycloak-$RELEASE + cp -r keycloak.old/providers keycloak-$RELEASE + cp -r keycloak.old/themes keycloak-$RELEASE + mv keycloak-$RELEASE keycloak -msg_info "Delete temporary installation files" -rm keycloak-$RELEASE.tar.gz -rm -rf keycloak.old + msg_info "Delete temporary installation files" + rm keycloak-$RELEASE.tar.gz + rm -rf keycloak.old -msg_info "Restating Keycloak" -systemctl restart keycloak -msg_ok "Updated Successfully" -exit + msg_info "Restating Keycloak" + systemctl restart keycloak + msg_ok "Updated Successfully" + exit } start @@ -90,5 +64,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080/admin${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}" diff --git a/ct/kimai.sh b/ct/kimai.sh index 70d9b189859..517be7520dc 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -2,97 +2,72 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.kimai.org/ -function header_info { -clear -cat <<"EOF" - __ __ _ _ - / //_/(_)___ ___ ____ _(_) - / ,< / / __ `__ \/ __ `/ / - / /| |/ / / / / / / /_/ / / -/_/ |_/_/_/ /_/ /_/\__,_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Kimai" -var_disk="7" +TAGS="time tracking" var_cpu="2" var_ram="2048" +var_disk="7" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/kimai ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Apache2" - systemctl stop apache2 - msg_ok "Stopped Apache2" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/kimai ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/kimai/kimai/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Apache2" + systemctl stop apache2 + msg_ok "Stopped Apache2" - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/kimai/.env /opt/.env - rm -rf /opt/kimai - wget -q "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" - unzip -q ${RELEASE}.zip - mv kimai-${RELEASE} /opt/kimai - mv /opt/.env /opt/kimai/.env - cd /opt/kimai - composer install --no-dev --optimize-autoloader &>/dev/null - bin/console kimai:update &>/dev/null - chown -R :www-data . - chmod -R g+r . - chmod -R g+rw var/ - sudo chown -R www-data:www-data /opt/kimai - sudo chmod -R 755 /opt/kimai - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/kimai/.env /opt/.env + rm -rf /opt/kimai + wget -q "https://github.com/kimai/kimai/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + mv kimai-${RELEASE} /opt/kimai + mv /opt/.env /opt/kimai/.env + cd /opt/kimai + composer install --no-dev --optimize-autoloader &>/dev/null + bin/console kimai:update &>/dev/null + chown -R :www-data . + chmod -R g+r . + chmod -R g+rw var/ + sudo chown -R www-data:www-data /opt/kimai + sudo chmod -R 755 /opt/kimai + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting Apache2" - systemctl start apache2 - msg_ok "Started Apache2" + msg_info "Starting Apache2" + systemctl start apache2 + msg_ok "Started Apache2" - msg_info "Cleaning Up" - rm -rf ${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf ${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -100,5 +75,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/komga.sh b/ct/komga.sh index d47320a8bb2..2f2691c1997 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -2,83 +2,58 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: madelyn (DysfunctionalProgramming) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://komga.org/ -function header_info { -clear -cat <<"EOF" - __ __ - / //_/___ ____ ___ ____ _____ _ - / ,< / __ \/ __ `__ \/ __ `/ __ `/ - / /| / /_/ / / / / / / /_/ / /_/ / -/_/ |_\____/_/ /_/ /_/\__, /\__,_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Komga" -var_disk="4" +TAGS="media;eBook;comic" var_cpu="1" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /opt/komga/komga.jar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -RELEASE=$(curl -s https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop komga - msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -f /opt/komga/komga.jar ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + RELEASE=$(curl -s https://api.github.com/repos/gotson/komga/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop komga + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" - wget -q "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" - rm -rf /opt/komga/komga.jar - mv -f komga-${RELEASE}.jar /opt/komga/komga.jar - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + wget -q "https://github.com/gotson/komga/releases/download/${RELEASE}/komga-${RELEASE}.jar" + rm -rf /opt/komga/komga.jar + mv -f komga-${RELEASE}.jar /opt/komga/komga.jar + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start komga - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}." -fi -exit + msg_info "Starting ${APP}" + systemctl start komga + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + fi + exit } start @@ -86,5 +61,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:25600 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:25600${CL}" diff --git a/ct/kubo.sh b/ct/kubo.sh index 335690f2054..a02dd98193d 100644 --- a/ct/kubo.sh +++ b/ct/kubo.sh @@ -1,77 +1,52 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: ulmentflam -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: ulmentflam +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/ipfs/kubo -function header_info { -clear -cat <<"EOF" - __ __ __ - / //_/_ __/ /_ ____ - / ,< / / / / __ \/ __ \ - / /| / /_/ / /_/ / /_/ / -/_/ |_\__,_/_.___/\____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Kubo" -var_disk="4" +TAGS="sharing" var_cpu="2" var_ram="4096" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /usr/local/kubo ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(wget -q https://github.com/ipfs/kubo/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Updating $APP LXC" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - wget -q "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" - tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local - systemctl restart ipfs.service - echo "${RELEASE}" >/opt/${APP}_version.txt - rm "kubo_${RELEASE}_linux-amd64.tar.gz" - msg_ok "Updated $APP LXC" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/kubo ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(wget -q https://github.com/ipfs/kubo/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + wget -q "https://github.com/ipfs/kubo/releases/download/${RELEASE}/kubo_${RELEASE}_linux-amd64.tar.gz" + tar -xzf "kubo_${RELEASE}_linux-amd64.tar.gz" -C /usr/local + systemctl restart ipfs.service + echo "${RELEASE}" >/opt/${APP}_version.txt + rm "kubo_${RELEASE}_linux-amd64.tar.gz" + msg_ok "Updated $APP LXC" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -79,5 +54,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5001/webui ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5001/webui${CL}" \ No newline at end of file diff --git a/ct/lazylibrarian.sh b/ct/lazylibrarian.sh index f6e1d1a6076..21c4a88b02b 100644 --- a/ct/lazylibrarian.sh +++ b/ct/lazylibrarian.sh @@ -1,77 +1,51 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MountyMapleSyrup (MountyMapleSyrup) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: MountyMapleSyrup (MountyMapleSyrup) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://gitlab.com/LazyLibrarian/LazyLibrarian -function header_info { -clear -cat <<"EOF" - __ __ _ __ _ - / / ____ _____ __ __/ / (_) /_ _________ ______(_)___ _____ - / / / __ `/_ / / / / / / / / __ \/ ___/ __ `/ ___/ / __ `/ __ \ - / /___/ /_/ / / /_/ /_/ / /___/ / /_/ / / / /_/ / / / / /_/ / / / / -/_____/\__,_/ /___/\__, /_____/_/_.___/_/ \__,_/_/ /_/\__,_/_/ /_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="LazyLibrarian" -var_disk="4" +TAGS="eBook" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/LazyLibrarian/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping LazyLibrarian" -systemctl stop lazylibrarian -msg_ok "LazyLibrarian Stopped" - -msg_info "Updating $APP LXC" -git -C /opt/LazyLibrarian pull origin master &>/dev/null -msg_ok "Updated $APP LXC" - -msg_info "Starting LazyLibrarian" -systemctl start lazylibrarian -msg_ok "Started LazyLibrarian" - -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/LazyLibrarian/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping LazyLibrarian" + systemctl stop lazylibrarian + msg_ok "LazyLibrarian Stopped" + + msg_info "Updating $APP LXC" + git -C /opt/LazyLibrarian pull origin master &>/dev/null + msg_ok "Updated $APP LXC" + + msg_info "Starting LazyLibrarian" + systemctl start lazylibrarian + msg_ok "Started LazyLibrarian" + + msg_ok "Updated Successfully" + exit } start @@ -79,5 +53,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5299${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5299${CL}" \ No newline at end of file diff --git a/ct/lidarr.sh b/ct/lidarr.sh index 11e3359b4a6..a9f290b6552 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://lidarr.audio/ -function header_info { -clear -cat <<"EOF" - __ _ __ - / / (_)___/ /___ __________ - / / / / __ / __ `/ ___/ ___/ - / /___/ / /_/ / /_/ / / / / -/_____/_/\__,_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Lidarr" -var_disk="4" +TAGS="*arr;torrent;usenet" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/lidarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/lidarr/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8686${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8686${CL}" \ No newline at end of file diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 1ba50c52aa7..169e157c2d2 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -2,96 +2,70 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://linkwarden.app/ -function header_info { -clear -cat <<"EOF" - __ _ __ __ - / / (_)___ / /___ ______ __________/ /__ ____ - / / / / __ \/ //_/ | /| / / __ `/ ___/ __ / _ \/ __ \ - / /___/ / / / / ,< | |/ |/ / /_/ / / / /_/ / __/ / / / -/_____/_/_/ /_/_/|_| |__/|__/\__,_/_/ \__,_/\___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Linkwarden" -var_disk="12" +TAGS="bookmark" var_cpu="2" var_ram="2048" +var_disk="12" var_os="ubuntu" var_version="22.04" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/linkwarden ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping ${APP}" - systemctl stop linkwarden - msg_ok "Stopped ${APP}" - - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - mv /opt/linkwarden/.env /opt/.env + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/linkwarden ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi RELEASE=$(curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - wget -q "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" - unzip -q ${RELEASE}.zip - mv linkwarden-${RELEASE:1} /opt/linkwarden - cd /opt/linkwarden - yarn &>/dev/null - npx playwright install-deps &>/dev/null - yarn playwright install &>/dev/null - cp /opt/.env /opt/linkwarden/.env - yarn build &>/dev/null - yarn prisma migrate deploy &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop linkwarden + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + mv /opt/linkwarden/.env /opt/.env + RELEASE=$(curl -s https://api.github.com/repos/linkwarden/linkwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + wget -q "https://github.com/linkwarden/linkwarden/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + mv linkwarden-${RELEASE:1} /opt/linkwarden + cd /opt/linkwarden + yarn &>/dev/null + npx playwright install-deps &>/dev/null + yarn playwright install &>/dev/null + cp /opt/.env /opt/linkwarden/.env + yarn build &>/dev/null + yarn prisma migrate deploy &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start linkwarden - msg_ok "Started ${APP}" - msg_info "Cleaning up" - rm -rf /opt/${RELEASE}.zip - rm -rf /opt/linkwarden_bak - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}." -fi -exit + msg_info "Starting ${APP}" + systemctl start linkwarden + msg_ok "Started ${APP}" + msg_info "Cleaning up" + rm -rf /opt/${RELEASE}.zip + rm -rf /opt/linkwarden_bak + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + fi + exit } start @@ -99,5 +73,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP}${CL} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 24ebbbf936f..0ccc39803ca 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -2,94 +2,69 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: bvdberg01 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://listmonk.app/ -function header_info { -clear -cat <<"EOF" - ___ __ __ - / (_)____/ /_____ ___ ____ ____ / /__ - / / / ___/ __/ __ `__ \/ __ \/ __ \/ //_/ - / / (__ ) /_/ / / / / / /_/ / / / / ,< -/_/_/____/\__/_/ /_/ /_/\____/_/ /_/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="listmonk" -var_disk="4" +TAGS="newsletter" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/listmonk.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/listmonk.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -RELEASE=$(curl -s https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop listmonk - msg_ok "Stopped ${APP}" + RELEASE=$(curl -s https://api.github.com/repos/knadh/listmonk/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop listmonk + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to v${RELEASE}" - cd /opt - mv /opt/listmonk/ /opt/listmonk-backup - mkdir /opt/listmonk/ - wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" - tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk - mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml - mv /opt/listmonk-backup/uploads /opt/listmonk/uploads - /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + mv /opt/listmonk/ /opt/listmonk-backup + mkdir /opt/listmonk/ + wget -q "https://github.com/knadh/listmonk/releases/download/v${RELEASE}/listmonk_${RELEASE}_linux_amd64.tar.gz" + tar -xzf "listmonk_${RELEASE}_linux_amd64.tar.gz" -C /opt/listmonk + mv /opt/listmonk-backup/config.toml /opt/listmonk/config.toml + mv /opt/listmonk-backup/uploads /opt/listmonk/uploads + /opt/listmonk/listmonk --upgrade --yes --config /opt/listmonk/config.toml &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" - msg_info "Starting ${APP}" - systemctl start listmonk - msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start listmonk + msg_ok "Started ${APP}" - msg_info "Cleaning up" - rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz" - rm -rf /opt/listmonk-backup/ - msg_ok "Cleaned" + msg_info "Cleaning up" + rm -rf "/opt/listmonk_${RELEASE}_linux_amd64.tar.gz" + rm -rf /opt/listmonk-backup/ + msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at v${RELEASE}" -fi -exit + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit } start @@ -97,5 +72,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}" \ No newline at end of file diff --git a/ct/lldap.sh b/ct/lldap.sh index a31ef14f57d..bf7de386434 100644 --- a/ct/lldap.sh +++ b/ct/lldap.sh @@ -1,69 +1,42 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: remz1337 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: remz1337 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/lldap/lldap -function header_info { -clear -cat <<"EOF" - ____ __ - / / /___/ /___ _____ - / / / __ / __ `/ __ \ - / / / /_/ / /_/ / /_/ / -/_/_/\__,_/\__,_/ .___/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="lldap" -var_disk="4" +TAGS="ldap" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/lldap.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -apt update -apt upgrade -y lldap -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/lldap.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + apt update + apt upgrade -y lldap + msg_ok "Updated $APP" + exit } start @@ -71,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:17170${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:17170${CL}" \ No newline at end of file diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 4bb2a27d343..33a22913b2e 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -2,67 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://lubelogger.com/ -function header_info { -clear -cat <<"EOF" - __ __ __ - / / __ __/ /_ ___ / / ____ ____ _____ ____ _____ - / / / / / / __ \/ _ \/ / / __ \/ __ `/ __ `/ _ \/ ___/ - / /___/ /_/ / /_/ / __/ /___/ /_/ / /_/ / /_/ / __/ / -/_____/\__,_/_.___/\___/_____/\____/\__, /\__, /\___/_/ - /____//____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="LubeLogger" -var_disk="2" +TAGS="verhicle;car" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources - + header_info + check_container_storage + check_container_resources if [[ ! -f /etc/systemd/system/lubelogger.service ]]; then msg_error "No ${APP} Installation Found!" exit fi - RELEASE=$(curl -s https://api.github.com/repos/hargata/lubelog/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') RELEASE_TRIMMED=$(echo "${RELEASE}" | tr -d ".") if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then @@ -100,5 +69,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/mafl.sh b/ct/mafl.sh index 730671d55c0..bfe79d3b620 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -2,61 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://mafl.hywax.space/ -function header_info { - clear - cat <<"EOF" - __ ___ ______ - / |/ /___ _/ __/ / - / /|_/ / __ `/ /_/ / - / / / / /_/ / __/ / -/_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Mafl" -var_disk="6" +TAGS="dashboard" var_cpu="2" var_ram="2048" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /opt/mafl ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -d /opt/mafl ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi RELEASE=$(curl -s https://api.github.com/repos/hywax/mafl/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Updating Mafl to v${RELEASE} (Patience)" systemctl stop mafl @@ -77,5 +52,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index 6a92747f638..a31dd39a61c 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -2,62 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://magicmirror.builders/ -function header_info { -clear -cat <<"EOF" - __ ___ _ __ ____ - / |/ /___ _____ _(_)____/ |/ (_)_____________ _____ - / /|_/ / __ / __ / / ___/ /|_/ / / ___/ ___/ __ \/ ___/ - / / / / /_/ / /_/ / / /__/ / / / / / / / / /_/ / / -/_/ /_/\__,_/\__, /_/\___/_/ /_/_/_/ /_/ \____/_/ - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MagicMirror" -var_disk="3" +TAGS="smarthome" var_cpu="1" var_ram="512" +var_disk="3" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/magicmirror ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/magicmirror ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then if ! command -v npm >/dev/null 2>&1; then echo "Installing NPM..." @@ -65,12 +39,12 @@ if [[ ! -d /opt/magicmirror ]]; then msg_error "No ${APP} Installation Found!"; echo "Installed NPM..." fi fi -msg_info "Updating ${APP} LXC" -cd /opt/magicmirror -git pull &>/dev/null -npm install --only=prod --omit=dev &>/dev/null -msg_ok "Updated Successfully" -exit + msg_info "Updating ${APP} LXC" + cd /opt/magicmirror + git pull &>/dev/null + npm install --only=prod --omit=dev &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -78,5 +52,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 526231095d3..956e105bc55 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://mariadb.org/ -function header_info { -clear -cat <<"EOF" - __ ___ _ ____ ____ - / |/ /___ ______(_)___ _/ __ \/ __ ) - / /|_/ / __ / ___/ / __ / / / / __ | - / / / / /_/ / / / / /_/ / /_/ / /_/ / -/_/ /_/\__,_/_/ /_/\__,_/_____/_____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MariaDB" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/mariadb.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/mariadb.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}" \ No newline at end of file diff --git a/ct/matterbridge.sh b/ct/matterbridge.sh index 8cac08a8e41..3b68c7e19b5 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Luligu/matterbridge -function header_info { -clear -cat <<"EOF" - __ ___ __ __ __ _ __ - / |/ /___ _/ /_/ /____ _____/ /_ _____(_)___/ /___ ____ - / /|_/ / __ `/ __/ __/ _ \/ ___/ __ \/ ___/ / __ / __ `/ _ \ - / / / / /_/ / /_/ /_/ __/ / / /_/ / / / / /_/ / /_/ / __/ -/_/ /_/\__,_/\__/\__/\___/_/ /_.___/_/ /_/\__,_/\__, /\___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Matterbridge" -var_disk="4" +TAGS="matter;smarthome" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /root/Matterbridge ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "Update via the Matterbridge UI" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /root/Matterbridge ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "Update via the Matterbridge UI" + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8283${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8283${CL}" \ No newline at end of file diff --git a/ct/mediamtx.sh b/ct/mediamtx.sh index f6acb4d6fbf..b062ef4dd36 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -3,63 +3,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/bluenviron/mediamtx -function header_info { -clear -cat <<"EOF" - __ ___ ___ __ __________ __ - / |/ /__ ____/ (_)___ _/ |/ /_ __/ |/ / - / /|_/ / _ \/ __ / / __ `/ /|_/ / / / | / - / / / / __/ /_/ / / /_/ / / / / / / / | -/_/ /_/\___/\__,_/_/\__,_/_/ /_/ /_/ /_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MediaMTX" -var_disk="4" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/mediamtx/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/mediamtx/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -67,3 +42,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/medusa.sh b/ct/medusa.sh index e9e494135ee..a77958a2633 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -2,79 +2,53 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/pymedusa/Medusa.git -function header_info { -clear -cat <<"EOF" - __ ___ __ - / |/ /__ ____/ /_ ___________ _ - / /|_/ / _ \/ __ / / / / ___/ __ `/ - / / / / __/ /_/ / /_/ (__ ) /_/ / -/_/ /_/\___/\__,_/\__,_/____/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Medusa" -var_disk="6" +TAGS="media" var_cpu="2" var_ram="1024" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/medusa ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop medusa -msg_ok "Stopped ${APP}" - -msg_info "Updating ${APP}" -cd /opt/medusa -output=$(git pull --no-rebase) -if echo "$output" | grep -q "Already up to date." -then - msg_ok "$APP is already up to date." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/medusa ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop medusa + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP}" + cd /opt/medusa + output=$(git pull --no-rebase) + if echo "$output" | grep -q "Already up to date."; then + msg_ok "$APP is already up to date." + exit + fi + msg_ok "Updated Successfully" + + msg_info "Starting ${APP}" + systemctl start medusa + msg_ok "Started ${APP}" exit -fi -msg_ok "Updated Successfully" - -msg_info "Starting ${APP}" -systemctl start medusa -msg_ok "Started ${APP}" -exit } start @@ -82,5 +56,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8081${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}" \ No newline at end of file diff --git a/ct/memos.sh b/ct/memos.sh index ab7017dd06c..2df208be0cf 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -1,90 +1,63 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.usememos.com/ -function header_info { -clear -cat <<"EOF" - __ ___ - / |/ /__ ____ ___ ____ _____ - / /|_/ / _ \/ __ `__ \/ __ \/ ___/ - / / / / __/ / / / / / /_/ (__ ) -/_/ /_/\___/_/ /_/ /_/\____/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Memos" -var_disk="7" +TAGS="notes" var_cpu="2" var_ram="2048" +var_disk="7" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/memos ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP (Patience)" -cd /opt/memos -output=$(git pull --no-rebase) -if echo "$output" | grep -q "Already up to date." -then - msg_ok "$APP is already up to date." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/memos ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP (Patience)" + cd /opt/memos + output=$(git pull --no-rebase) + if echo "$output" | grep -q "Already up to date."; then + msg_ok "$APP is already up to date." + exit + fi + systemctl stop memos + cd /opt/memos/web + pnpm i --frozen-lockfile &>/dev/null + pnpm build &>/dev/null + cd /opt/memos + mkdir -p /opt/memos/server/dist + cp -r web/dist/* /opt/memos/server/dist/ + cp -r web/dist/* /opt/memos/server/router/frontend/dist/ + go build -o /opt/memos/memos -tags=embed bin/memos/main.go &>/dev/null + systemctl start memos + msg_ok "Updated $APP" exit -fi -systemctl stop memos -cd /opt/memos/web -pnpm i --frozen-lockfile &>/dev/null -pnpm build &>/dev/null -cd /opt/memos -mkdir -p /opt/memos/server/dist -cp -r web/dist/* /opt/memos/server/dist/ -cp -r web/dist/* /opt/memos/server/router/frontend/dist/ -go build -o /opt/memos/memos -tags=embed bin/memos/main.go &>/dev/null -systemctl start memos -msg_ok "Updated $APP" -exit } - start build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9030${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}" \ No newline at end of file diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 6f2ebe7c5ef..07a3953a52b 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://meshcentral.com/ -function header_info { -clear -cat <<"EOF" - __ ___ __ ______ __ __ - / |/ /__ _____/ /_ / ____/__ ____ / /__________ _/ / - / /|_/ / _ \/ ___/ __ \/ / / _ \/ __ \/ __/ ___/ __ / / - / / / / __(__ ) / / / /___/ __/ / / / /_/ / / /_/ / / -/_/ /_/\___/____/_/ /_/\____/\___/_/ /_/\__/_/ \__,_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MeshCentral" -var_disk="2" +TAGS="remote management" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/meshcentral ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/meshcentral ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/metube.sh b/ct/metube.sh index ff09ace487a..9a2ea57755b 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -2,91 +2,66 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/alexta69/metube -function header_info { -clear -cat <<"EOF" - __ ___ ______ __ - / |/ /__/_ __/_ __/ /_ ___ - / /|_/ / _ \/ / / / / / __ \/ _ \ - / / / / __/ / / /_/ / /_/ / __/ -/_/ /_/\___/_/ \__,_/_.___/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MeTube" -var_disk="10" +TAGS="media;youtube" var_cpu="1" var_ram="1024" +var_disk="10" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/metube ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP} Service" -systemctl stop metube -msg_ok "Stopped ${APP} Service" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/metube ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP} Service" + systemctl stop metube + msg_ok "Stopped ${APP} Service" -msg_info "Updating ${APP} to latest Git" -cd /opt -if [ -d metube_bak ]; then - rm -rf metube_bak -fi -mv metube metube_bak -git clone https://github.com/alexta69/metube /opt/metube >/dev/null 2>&1 -cd /opt/metube/ui -npm install >/dev/null 2>&1 -node_modules/.bin/ng build >/dev/null 2>&1 -cd /opt/metube -cp /opt/metube_bak/.env /opt/metube/ -pip3 install pipenv >/dev/null 2>&1 -pipenv install >/dev/null 2>&1 + msg_info "Updating ${APP} to latest Git" + cd /opt + if [ -d metube_bak ]; then + rm -rf metube_bak + fi + mv metube metube_bak + git clone https://github.com/alexta69/metube /opt/metube >/dev/null 2>&1 + cd /opt/metube/ui + npm install >/dev/null 2>&1 + node_modules/.bin/ng build >/dev/null 2>&1 + cd /opt/metube + cp /opt/metube_bak/.env /opt/metube/ + pip3 install pipenv >/dev/null 2>&1 + pipenv install >/dev/null 2>&1 -if [ -d "/opt/metube_bak" ]; then -rm -rf /opt/metube_bak -fi -msg_ok "Updated ${APP} to latest Git" + if [ -d "/opt/metube_bak" ]; then + rm -rf /opt/metube_bak + fi + msg_ok "Updated ${APP} to latest Git" -msg_info "Starting ${APP} Service" -systemctl start metube -sleep 1 -msg_ok "Started ${APP} Service" -msg_ok "Updated Successfully!\n" -exit + msg_info "Starting ${APP} Service" + systemctl start metube + sleep 1 + msg_ok "Started ${APP} Service" + msg_ok "Updated Successfully!\n" + exit } start @@ -94,5 +69,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8081${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8081${CL}" \ No newline at end of file diff --git a/ct/mongodb.sh b/ct/mongodb.sh index 44bbf386e32..b2f4b12ceb0 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.mongodb.com/de-de -function header_info { -clear -cat <<"EOF" - __ ___ ____ ____ - / |/ /___ ____ ____ _____ / __ \/ __ ) - / /|_/ / __ \/ __ \/ __ `/ __ \/ / / / __ | - / / / / /_/ / / / / /_/ / /_/ / /_/ / /_/ / -/_/ /_/\____/_/ /_/\__, /\____/_____/_____/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MongoDB" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/motioneye.sh b/ct/motioneye.sh index 76e2cb65243..3105a4d7567 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -2,65 +2,40 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/motioneye-project/motioneye -function header_info { -clear -cat <<"EOF" - __ ___ __ _ - / |/ /___ / /_(_)___ ____ ___ __ _____ - / /|_/ / __ \/ __/ / __ \/ __ \/ _ \/ / / / _ \ - / / / / /_/ / /_/ / /_/ / / / / __/ /_/ / __/ -/_/ /_/\____/\__/_/\____/_/ /_/\___/\__, /\___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Motioneye" -var_disk="8" +TAGS="nvr" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/motioneye.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -pip install motioneye --upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/motioneye.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + pip install motioneye --upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -68,5 +43,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8765${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8765${CL}" \ No newline at end of file diff --git a/ct/mqtt.sh b/ct/mqtt.sh index 0015fbb8651..dcec33f5ec1 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://mosquitto.org/ -function header_info { -clear -cat <<"EOF" - __ ___ ____ _ ____________ - / |/ /___ _____/ __ \__ __(_)_ __/_ __/___ - / /|_/ / __ \/ ___/ / / / / / / / / / / / / __ \ - / / / / /_/ (__ ) /_/ / /_/ / / / / / / / /_/ / -/_/ /_/\____/____/\___\_\__,_/_/ /_/ /_/ \____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MQTT" -var_disk="2" +TAGS="mqtt" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/mosquitto/conf.d/default.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/mosquitto/conf.d/default.conf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:1883${CL}" \ No newline at end of file diff --git a/ct/mylar3.sh b/ct/mylar3.sh index 82b66663399..44556f41421 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.sh @@ -2,72 +2,46 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: davalanche -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/mylar3/mylar3 -function header_info { -clear -cat <<"EOF" - __ ___ __ _____ - / |/ /_ __/ /___ _____|__ / - / /|_/ / / / / / __ `/ ___//_ < - / / / / /_/ / / /_/ / / ___/ / -/_/ /_/\__, /_/\__,_/_/ /____/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Mylar3" -var_disk="4" +TAGS="torrent;downloader;comic" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -if [[ ! -d /opt/mylar3 ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating ${APP} to ${RELEASE}" - rm -rf /opt/mylar3/* /opt/mylar3/.* - wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3 - systemctl restart mylar3 - echo "${RELEASE}" > /opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + header_info + if [[ ! -d /opt/mylar3 ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/mylar3/mylar3/releases/latest | jq -r '.tag_name') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to ${RELEASE}" + rm -rf /opt/mylar3/* /opt/mylar3/.* + wget -qO- https://github.com/mylar3/mylar3/archive/refs/tags/${RELEASE}.tar.gz | tar -xz --strip-components=1 -C /opt/mylar3 + systemctl restart mylar3 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -75,5 +49,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" \ No newline at end of file diff --git a/ct/myspeed.sh b/ct/myspeed.sh index 4d9601f2d2a..567f8388292 100644 --- a/ct/myspeed.sh +++ b/ct/myspeed.sh @@ -1,95 +1,68 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://myspeed.dev/ -function header_info { -clear -cat <<"EOF" - __ ___ _____ __ - / |/ /_ __/ ___/____ ___ ___ ____/ / - / /|_/ / / / /\__ \/ __ \/ _ \/ _ \/ __ / - / / / / /_/ /___/ / /_/ / __/ __/ /_/ / -/_/ /_/\__, //____/ .___/\___/\___/\__,_/ - /____/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MySpeed" -var_disk="4" +TAGS="tracking" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/myspeed ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(wget -q https://github.com/gnmyt/myspeed/releases/latest -O - | grep "title>Release" | cut -d " " -f 5) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/myspeed ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(wget -q https://github.com/gnmyt/myspeed/releases/latest -O - | grep "title>Release" | cut -d " " -f 5) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP} Service" - systemctl stop myspeed - msg_ok "Stopped ${APP} Service" + msg_info "Stopping ${APP} Service" + systemctl stop myspeed + msg_ok "Stopped ${APP} Service" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - rm -rf myspeed_bak - mv myspeed myspeed_bak - wget -q https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip - unzip -q MySpeed-$RELEASE.zip -d myspeed - cd myspeed - npm install >/dev/null 2>&1 - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + rm -rf myspeed_bak + mv myspeed myspeed_bak + wget -q https://github.com/gnmyt/myspeed/releases/download/v$RELEASE/MySpeed-$RELEASE.zip + unzip -q MySpeed-$RELEASE.zip -d myspeed + cd myspeed + npm install >/dev/null 2>&1 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP} Service" - systemctl start myspeed - msg_ok "Started ${APP} Service" + msg_info "Starting ${APP} Service" + systemctl start myspeed + msg_ok "Started ${APP} Service" - msg_info "Cleaning up" - rm -rf MySpeed-$RELEASE.zip - msg_ok "Cleaned" + msg_info "Cleaning up" + rm -rf MySpeed-$RELEASE.zip + msg_ok "Cleaned" - msg_ok "Updated Successfully!\n" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_ok "Updated Successfully!\n" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -97,5 +70,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:5216${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5216${CL}" \ No newline at end of file diff --git a/ct/mysql.sh b/ct/mysql.sh index 06352bcd53e..9218a60d8f6 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -1,68 +1,42 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.mysql.com/ -function header_info { -clear -cat <<"EOF" - __ ___ _____ ____ __ - / |/ /_ __/ ___// __ \ / / - / /|_/ / / / /\__ \/ / / / / / - / / / / /_/ /___/ / /_/ / / /___ -/_/ /_/\__, //____/\___\_\/_____/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MySQL" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/share/keyrings/mysql.gpg ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}{IP}:3306${CL}" \ No newline at end of file diff --git a/ct/n8n.sh b/ct/n8n.sh index ead77f73207..aaff50f8f7b 100644 --- a/ct/n8n.sh +++ b/ct/n8n.sh @@ -2,62 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://n8n.io/ -function header_info { -clear -cat <<"EOF" - ___ - / _ \ - _ __ | (_) |____ - | _ \ > _ <| _ \ - | | | | (_) | | | | - |_| |_|\___/|_| |_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="n8n" -var_disk="6" +TAGS="automation" var_cpu="2" var_ram="2048" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/n8n.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/n8n.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then if ! command -v npm >/dev/null 2>&1; then echo "Installing NPM..." @@ -65,11 +39,11 @@ if [[ ! -f /etc/systemd/system/n8n.service ]]; then msg_error "No ${APP} Install echo "Installed NPM..." fi fi -msg_info "Updating ${APP} LXC" -npm update -g n8n &>/dev/null -systemctl restart n8n -msg_ok "Updated Successfully" -exit + msg_info "Updating ${APP} LXC" + npm update -g n8n &>/dev/null + systemctl restart n8n + msg_ok "Updated Successfully" + exit } start @@ -77,5 +51,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5678${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5678${CL}" \ No newline at end of file diff --git a/ct/navidrome.sh b/ct/navidrome.sh index 6a33bd238b3..1d3e40f6df8 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.navidrome.org/ -function header_info { -clear -cat <<"EOF" - _ __ _ __ - / | / /___ __ __(_)___/ /________ ____ ___ ___ - / |/ / __ / | / / / __ / ___/ __ \/ __ __ \/ _ \ - / /| / /_/ /| |/ / / /_/ / / / /_/ / / / / / / __/ -/_/ |_/\__,_/ |___/_/\__,_/_/ \____/_/ /_/ /_/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Navidrome" -var_disk="4" +TAGS="music" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/navidrome ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -msg_info "Stopping ${APP}" -systemctl stop navidrome.service -msg_ok "Stopped Navidrome" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/navidrome ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + msg_info "Stopping ${APP}" + systemctl stop navidrome.service + msg_ok "Stopped Navidrome" -msg_info "Updating to v${RELEASE}" -wget https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz &>/dev/null -tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ &>/dev/null -msg_ok "Updated ${APP}" -rm Navidrome.tar.gz + msg_info "Updating to v${RELEASE}" + wget https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz &>/dev/null + tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ &>/dev/null + msg_ok "Updated ${APP}" + rm Navidrome.tar.gz -msg_info "${GN} Starting ${APP}" -systemctl start navidrome.service -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "${GN} Starting ${APP}" + systemctl start navidrome.service + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:4533${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}" \ No newline at end of file diff --git a/ct/neo4j.sh b/ct/neo4j.sh index 95757687908..5e5894f1513 100644 --- a/ct/neo4j.sh +++ b/ct/neo4j.sh @@ -1,68 +1,42 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: havardthom -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://neo4j.com/product/neo4j-graph-database/ -function header_info { -clear -cat <<"EOF" - _ __ __ __ _ - / | / /__ ____ / // / (_) - / |/ / _ \/ __ \/ // /_/ / - / /| / __/ /_/ /__ __/ / -/_/ |_/\___/\____/ /_/_/ / - /___/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Neo4j" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/neo4j ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/neo4j ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Browser should be reachable by going to the following URL. - ${BL}http://${IP}:7474${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7474${CL}" \ No newline at end of file diff --git a/ct/netbox.sh b/ct/netbox.sh index f2b13b9d1fd..fa80d901af9 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -2,107 +2,82 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: bvdberg01 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://netboxlabs.com/ -function header_info { -clear -cat <<"EOF" - _ __ __ ____ - / | / /__ / /_/ __ )____ _ __ - / |/ / _ \/ __/ __ / __ \| |/_/ - / /| / __/ /_/ /_/ / /_/ /> < -/_/ |_/\___/\__/_____/\____/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="NetBox" -var_disk="4" +TAGS="network" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/netbox.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/netbox.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -RELEASE=$(curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + RELEASE=$(curl -s https://api.github.com/repos/netbox-community/netbox/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop netbox netbox-rq - msg_ok "Stopped ${APP}" + msg_info "Stopping ${APP}" + systemctl stop netbox netbox-rq + msg_ok "Stopped ${APP}" - msg_info "Updating $APP to v${RELEASE}" - mv /opt/netbox/ /opt/netbox-backup - cd /opt - wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" - unzip -q "v${RELEASE}.zip" - mv /opt/netbox-${RELEASE}/ /opt/netbox/ - - cp -r /opt/netbox-backup/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/ - cp -r /opt/netbox-backup/netbox/media/ /opt/netbox/netbox/ - cp -r /opt/netbox-backup/netbox/scripts /opt/netbox/netbox/ - cp -r /opt/netbox-backup/netbox/reports /opt/netbox/netbox/ - cp -r /opt/netbox-backup/gunicorn.py /opt/netbox/ + msg_info "Updating $APP to v${RELEASE}" + mv /opt/netbox/ /opt/netbox-backup + cd /opt + wget -q "https://github.com/netbox-community/netbox/archive/refs/tags/v${RELEASE}.zip" + unzip -q "v${RELEASE}.zip" + mv /opt/netbox-${RELEASE}/ /opt/netbox/ - if [ -f /opt/netbox-backup/local_requirements.txt ]; then - cp -r /opt/netbox-backup/local_requirements.txt /opt/netbox/ - fi + cp -r /opt/netbox-backup/netbox/netbox/configuration.py /opt/netbox/netbox/netbox/ + cp -r /opt/netbox-backup/netbox/media/ /opt/netbox/netbox/ + cp -r /opt/netbox-backup/netbox/scripts /opt/netbox/netbox/ + cp -r /opt/netbox-backup/netbox/reports /opt/netbox/netbox/ + cp -r /opt/netbox-backup/gunicorn.py /opt/netbox/ - if [ -f /opt/netbox-backup/netbox/netbox/ldap_config.py ]; then - cp -r /opt/netbox-backup/netbox/netbox/ldap_config.py /opt/netbox/netbox/netbox/ - fi - - /opt/netbox/upgrade.sh &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP to v${RELEASE}" + if [ -f /opt/netbox-backup/local_requirements.txt ]; then + cp -r /opt/netbox-backup/local_requirements.txt /opt/netbox/ + fi - msg_info "Starting ${APP}" - systemctl start netbox netbox-rq - msg_ok "Started ${APP}" + if [ -f /opt/netbox-backup/netbox/netbox/ldap_config.py ]; then + cp -r /opt/netbox-backup/netbox/netbox/ldap_config.py /opt/netbox/netbox/netbox/ + fi - msg_info "Cleaning up" - rm -r "/opt/v${RELEASE}.zip" - rm -r /opt/netbox-backup - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at v${RELEASE}" -fi -exit + /opt/netbox/upgrade.sh &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start netbox netbox-rq + msg_ok "Started ${APP}" + + msg_info "Cleaning up" + rm -r "/opt/v${RELEASE}.zip" + rm -r /opt/netbox-backup + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit } start @@ -110,5 +85,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}https://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index c9a51281bb8..dfef9addd6a 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.turnkeylinux.org/nextcloud -function header_info { -clear -cat <<"EOF" - _ __ __ ________ ______ _ - / | / /__ _ __/ /_/ ____/ /___ __ ______/ / __ \(_) - / |/ / _ \| |/_/ __/ / / / __ \/ / / / __ / /_/ / / - / /| / __/> /dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/nextcloud-domain.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}https://${IP}/${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/nextpvr.sh b/ct/nextpvr.sh index 560230f8aae..4633d2ef58c 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -6,82 +6,57 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # https://github.com/tteck/Proxmox/raw/main/LICENSE # Source: https://nextpvr.com/ -function header_info { -clear -cat <<"EOF" - _ __ __ ____ _ ______ - / | / /__ _ __/ /_/ __ \ | / / __ \ - / |/ / _ \| |/_/ __/ /_/ / | / / /_/ / - / /| / __/> /dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated LXC packages" + msg_info "Updating LXC packages" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated LXC packages" -msg_info "Updating ${APP}" -cd /opt -wget -q https://nextpvr.com/nextpvr-helper.deb -dpkg -i nextpvr-helper.deb &>/dev/null -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + cd /opt + wget -q https://nextpvr.com/nextpvr-helper.deb + dpkg -i nextpvr-helper.deb &>/dev/null + msg_ok "Updated ${APP}" -msg_info "Starting ${APP}" -systemctl start nextpvr-server -msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start nextpvr-server + msg_ok "Started ${APP}" -msg_info "Cleaning Up" -rm -rf /opt/nextpvr-helper.deb -msg_ok "Cleaned" -msg_ok "Updated Successfully" -exit + msg_info "Cleaning Up" + rm -rf /opt/nextpvr-helper.deb + msg_ok "Cleaned" + msg_ok "Updated Successfully" + exit } start @@ -89,5 +64,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8866${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8866${CL}" \ No newline at end of file diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index 476989bbf9a..5ab75058db8 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -2,57 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nginxproxymanager.com/ -function header_info { - clear - cat <<"EOF" - _ __ _ ____ __ ___ - / | / /___ _(_)___ _ __ / __ \_________ __ ____ __ / |/ /___ _____ ____ _____ ____ _____ - / |/ / __ / / __ \| |/_/ / /_/ / ___/ __ \| |/_/ / / / / /|_/ / __ / __ \/ __ / __ / _ \/ ___/ - / /| / /_/ / / / / /> < / ____/ / / /_/ /> &1 1>&2 2>&3) -if [ "$UPD" == "1" ]; then - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - msg_info "Installing NPM" - apt-get install -y npm >/dev/null 2>&1 - msg_ok "Installed NPM" - fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /root/.node-red ]]; then + msg_error "No ${APP} Installation Found!" + exit fi -msg_info "Stopping ${APP}" -systemctl stop nodered -msg_ok "Stopped ${APP}" + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select" 11 58 2 \ + "1" "Update ${APP}" ON \ + "2" "Install Themes" OFF \ + 3>&1 1>&2 2>&3) + if [ "$UPD" == "1" ]; then + if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then + if ! command -v npm >/dev/null 2>&1; then + msg_info "Installing NPM" + apt-get install -y npm >/dev/null 2>&1 + msg_ok "Installed NPM" + fi + fi + msg_info "Stopping ${APP}" + systemctl stop nodered + msg_ok "Stopped ${APP}" -msg_info "Updating ${APP}" -npm install -g --unsafe-perm node-red &>/dev/null -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + npm install -g --unsafe-perm node-red &>/dev/null + msg_ok "Updated ${APP}" -msg_info "Starting ${APP}" -systemctl start nodered -msg_ok "Started ${APP}" -msg_ok "Update Successful" -exit -fi -if [ "$UPD" == "2" ]; then -THEME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "NODE-RED THEMES" --radiolist --cancel-button Exit-Script "Choose Theme" 15 58 6 \ - "aurora" "" OFF \ - "cobalt2" "" OFF \ - "dark" "" OFF \ - "dracula" "" OFF \ - "espresso-libre" "" OFF \ - "github-dark" "" OFF \ - "github-dark-default" "" OFF \ - "github-dark-dimmed" "" OFF \ - "midnight-red" "" ON \ - "monoindustrial" "" OFF \ - "monokai" "" OFF \ - "monokai-dimmed" "" OFF \ - "noctis" "" OFF \ - "oceanic-next" "" OFF \ - "oled" "" OFF \ - "one-dark-pro" "" OFF \ - "one-dark-pro-darker" "" OFF \ - "solarized-dark" "" OFF \ - "solarized-light" "" OFF \ - "tokyo-night" "" OFF \ - "tokyo-night-light" "" OFF \ - "tokyo-night-storm" "" OFF \ - "totallyinformation" "" OFF \ - "zenburn" "" OFF \ - 3>&1 1>&2 2>&3) -header_info -msg_info "Installing ${THEME} Theme" -cd /root/.node-red -sed -i 's|// theme: ".*",|theme: "",|g' /root/.node-red/settings.js -npm install @node-red-contrib-themes/theme-collection &>/dev/null -sed -i "{s/theme: ".*"/theme: '${THEME}',/g}" /root/.node-red/settings.js -systemctl restart nodered -msg_ok "Installed ${THEME} Theme" -exit -fi + msg_info "Starting ${APP}" + systemctl start nodered + msg_ok "Started ${APP}" + msg_ok "Update Successful" + exit + fi + if [ "$UPD" == "2" ]; then + THEME=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "NODE-RED THEMES" --radiolist --cancel-button Exit-Script "Choose Theme" 15 58 6 \ + "aurora" "" OFF \ + "cobalt2" "" OFF \ + "dark" "" OFF \ + "dracula" "" OFF \ + "espresso-libre" "" OFF \ + "github-dark" "" OFF \ + "github-dark-default" "" OFF \ + "github-dark-dimmed" "" OFF \ + "midnight-red" "" ON \ + "monoindustrial" "" OFF \ + "monokai" "" OFF \ + "monokai-dimmed" "" OFF \ + "noctis" "" OFF \ + "oceanic-next" "" OFF \ + "oled" "" OFF \ + "one-dark-pro" "" OFF \ + "one-dark-pro-darker" "" OFF \ + "solarized-dark" "" OFF \ + "solarized-light" "" OFF \ + "tokyo-night" "" OFF \ + "tokyo-night-light" "" OFF \ + "tokyo-night-storm" "" OFF \ + "totallyinformation" "" OFF \ + "zenburn" "" OFF \ + 3>&1 1>&2 2>&3) + header_info + msg_info "Installing ${THEME} Theme" + cd /root/.node-red + sed -i 's|// theme: ".*",|theme: "",|g' /root/.node-red/settings.js + npm install @node-red-contrib-themes/theme-collection &>/dev/null + sed -i "{s/theme: ".*"/theme: '${THEME}',/g}" /root/.node-red/settings.js + systemctl restart nodered + msg_ok "Installed ${THEME} Theme" + exit + fi } start @@ -127,5 +102,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:1880${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:1880${CL}" \ No newline at end of file diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index 3ab68b6211d..555ee1f481f 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://notifiarr.com/ -function header_info { -clear -cat <<"EOF" - _ __ __ _ _____ - / | / /___ / /_(_) __(_)___ ___________ - / |/ / __ \/ __/ / /_/ / __ `/ ___/ ___/ - / /| / /_/ / /_/ / __/ / /_/ / / / / -/_/ |_/\____/\__/_/_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Notifiarr" -var_disk="2" +TAGS="*arr" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/golift.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/golift.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5454${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5454${CL}" \ No newline at end of file diff --git a/ct/ntfy.sh b/ct/ntfy.sh index d9031f594c7..71375d23d4c 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ntfy.sh/ -function header_info { -clear -cat <<"EOF" - __ ____ - ____ / /_/ __/_ __ - / __ \/ __/ /_/ / / / - / / / / /_/ __/ /_/ / -/_/ /_/\__/_/ \__, / - /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="ntfy" -var_disk="2" +TAGS="notification" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/nzbget.sh b/ct/nzbget.sh index e8b83bd5d46..7d313785d8e 100644 --- a/ct/nzbget.sh +++ b/ct/nzbget.sh @@ -1,68 +1,42 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: havardthom -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://nzbget.com/ -function header_info { -clear -cat <<"EOF" - _ _______ ____ ______ __ - / | / /__ / / __ )/ ____/__ / /_ - / |/ / / / / __ / / __/ _ \/ __/ - / /| / / /__/ /_/ / /_/ / __/ /_ -/_/ |_/ /____/_____/\____/\___/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="NZBGet" -var_disk="4" +TAGS="usenet;downloader" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /lib/systemd/system/nzbget.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/nzbget.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6789${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6789${CL}" \ No newline at end of file diff --git a/ct/octoprint.sh b/ct/octoprint.sh index bf5b634b8f1..9a1c74b91b7 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -2,75 +2,50 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://octoprint.org/ -function header_info { -clear -cat <<"EOF" - ____ __ ____ _ __ - / __ \_____/ /_____ / __ \_____(_)___ / /_ - / / / / ___/ __/ __ \/ /_/ / ___/ / __ \/ __/ -/ /_/ / /__/ /_/ /_/ / ____/ / / / / / / /_ -\____/\___/\__/\____/_/ /_/ /_/_/ /_/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="OctoPrint" -var_disk="4" +TAGS="3d-printing" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/octoprint ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping OctoPrint" -systemctl stop octoprint -msg_ok "Stopped OctoPrint" - -msg_info "Updating OctoPrint" -source /opt/octoprint/bin/activate -pip3 install octoprint --upgrade &>/dev/null -msg_ok "Updated OctoPrint" - -msg_info "Starting OctoPrint" -systemctl start octoprint -msg_ok "Started OctoPrint" -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/octoprint ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping OctoPrint" + systemctl stop octoprint + msg_ok "Stopped OctoPrint" + + msg_info "Updating OctoPrint" + source /opt/octoprint/bin/activate + pip3 install octoprint --upgrade &>/dev/null + msg_ok "Updated OctoPrint" + + msg_info "Starting OctoPrint" + systemctl start octoprint + msg_ok "Started OctoPrint" + msg_ok "Updated Successfully" + exit } start @@ -78,5 +53,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/ollama.sh b/ct/ollama.sh index 1d5bf471976..1082e046cbc 100644 --- a/ct/ollama.sh +++ b/ct/ollama.sh @@ -1,68 +1,41 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: havardthom -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ollama.com/ -function header_info { -clear -cat <<"EOF" - ____ ____ - / __ \/ / /___ _____ ___ ____ _ - / / / / / / __ `/ __ `__ \/ __ `/ -/ /_/ / / / /_/ / / / / / / /_/ / -\____/_/_/\__,_/_/ /_/ /_/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Ollama" -var_disk="24" +TAGS="ai" var_cpu="4" var_ram="4096" +var_disk="24" var_os="ubuntu" var_version="22.04" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/ollama ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/ollama ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,5 +43,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:11434${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:14434${CL}" \ No newline at end of file diff --git a/ct/omada.sh b/ct/omada.sh index ceaa9c8a23c..bf73d01e691 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -2,73 +2,48 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.tp-link.com/us/support/download/omada-software-controller/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ ___ ____ _____/ /___ _ - / / / / __ __ \/ __ / __ / __ / -/ /_/ / / / / / / /_/ / /_/ / /_/ / -\____/_/ /_/ /_/\__,_/\__,_/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Omada" -var_disk="8" +TAGS="tp-link;controller" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/tplink ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -o 'https://.*x64.deb' | head -n1) -latest_version=$(basename "${latest_url}") -if [ -z "${latest_version}" ]; then - msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/tplink ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -o 'https://.*x64.deb' | head -n1) + latest_version=$(basename "${latest_url}") + if [ -z "${latest_version}" ]; then + msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." + exit + fi + echo -e "Updating Omada Controller" + wget -qL ${latest_url} + dpkg -i ${latest_version} + rm -rf ${latest_version} + echo -e "Updated Omada Controller" exit -fi -echo -e "Updating Omada Controller" -wget -qL ${latest_url} -dpkg -i ${latest_version} -rm -rf ${latest_version} -echo -e "Updated Omada Controller" -exit } start @@ -76,5 +51,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}https://${IP}:8043${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8043${CL}" \ No newline at end of file diff --git a/ct/ombi.sh b/ct/ombi.sh index d378a11c141..59d2c5b2969 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -2,82 +2,57 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ombi.io/ -function header_info { -clear -cat <<"EOF" - ____ __ _ - / __ \____ ___ / /_ (_) - / / / / __ `__ \/ __ \/ / -/ /_/ / / / / / / /_/ / / -\____/_/ /_/ /_/_.___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Ombi" -var_disk="4" +TAGS="media" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/ombi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -sL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - msg_info "Stopping ${APP}" - systemctl stop ombi - msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/ombi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -sL https://api.github.com/repos/Ombi-app/Ombi/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop ombi + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" - wget -q https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz - tar -xzf linux-x64.tar.gz -C /opt/ombi - rm -rf linux-x64.tar.gz - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + wget -q https://github.com/Ombi-app/Ombi/releases/download/${RELEASE}/linux-x64.tar.gz + tar -xzf linux-x64.tar.gz -C /opt/ombi + rm -rf linux-x64.tar.gz + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start ombi - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} ia already at ${RELEASE}." -fi -exit + msg_info "Starting ${APP}" + systemctl start ombi + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} ia already at ${RELEASE}." + fi + exit } start @@ -85,5 +60,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/omv.sh b/ct/omv.sh index 48e0ca0cf3b..67ed7d2f96a 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -2,72 +2,48 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.openmediavault.org/ -function header_info { -clear -cat <<"EOF" - ____ __ ___ ___ _ __ ____ - / __ \____ ___ ____ / |/ /__ ____/ (_)___ | | / /___ ___ __/ / /_ - / / / / __ \/ _ \/ __ \/ /|_/ / _ \/ __ / / __ `/ | / / __ `/ / / / / __/ -/ /_/ / /_/ / __/ / / / / / / __/ /_/ / / /_/ /| |/ / /_/ / /_/ / / /_ -\____/ .___/\___/_/ /_/_/ /_/\___/\__,_/_/\__,_/ |___/\__,_/\__,_/_/\__/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="OMV" -var_disk="4" +TAGS="media" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/openmediavault.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start build_container description -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/onedev.sh b/ct/onedev.sh index ac023c8b1bf..36e064bfb67 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -2,59 +2,31 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://onedev.io/ -function header_info { -clear -cat <<"EOF" - ____ ____ - / __ \____ ___ / __ \___ _ __ - / / / / __ \/ _ \/ / / / _ \ | / / -/ /_/ / / / / __/ /_/ / __/ |/ / -\____/_/ /_/\___/_____/\___/|___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="OneDev" -var_disk="4" +TAGS="git" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources + header_info + check_container_storage + check_container_resources if [[ ! -f /etc/systemd/system/onedev.service ]]; then msg_error "No ${APP} Installation Found!" @@ -95,5 +67,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6610${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6610${CL}" \ No newline at end of file diff --git a/ct/openhab.sh b/ct/openhab.sh index f4c0fdd8eaa..aecc3717d52 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.openhab.org/ -function header_info { -clear -cat <<"EOF" - __ _____ ____ - ____ ____ ___ ____ / / / / | / __ ) - / __ \/ __ \/ _ \/ __ \/ /_/ / /| | / __ | -/ /_/ / /_/ / __/ / / / __ / ___ |/ /_/ / -\____/ .___/\___/_/ /_/_/ /_/_/ |_/_____/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="openHAB" -var_disk="8" +TAGS="automation" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/openhab.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/openhab.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/openobserve.sh b/ct/openobserve.sh index 3ec7c50ef8d..b87fd8a87c3 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -2,70 +2,43 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://openobserve.ai/ -function header_info { -clear -cat <<"EOF" - - ____ ____ __ - / __ \____ ___ ____ / __ \/ /_ ________ ______ _____ - / / / / __ \/ _ \/ __ \/ / / / __ \/ ___/ _ \/ ___/ | / / _ \ -/ /_/ / /_/ / __/ / / / /_/ / /_/ (__ ) __/ / | |/ / __/ -\____/ .___/\___/_/ /_/\____/_.___/____/\___/_/ |___/\___/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="OpenObserve" -var_disk="3" +TAGS="monitoring" var_cpu="1" var_ram="512" +var_disk="3" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/openobserve/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop openobserve -LATEST=$(curl -sL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -tar zxvf <(curl -fsSL https://github.com/openobserve/openobserve/releases/download/$LATEST/openobserve-${LATEST}-linux-amd64.tar.gz) -C /opt/openobserve -systemctl start openobserve -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/openobserve/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop openobserve + LATEST=$(curl -sL https://api.github.com/repos/openobserve/openobserve/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + tar zxvf <(curl -fsSL https://github.com/openobserve/openobserve/releases/download/$LATEST/openobserve-${LATEST}-linux-amd64.tar.gz) -C /opt/openobserve + systemctl start openobserve + msg_ok "Updated $APP" + exit } start @@ -73,5 +46,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5080${CL}" \ No newline at end of file diff --git a/ct/openwebui.sh b/ct/openwebui.sh index a8c28ac980d..e78ebd7de1c 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -1,81 +1,53 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: havardthom -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: havardthom +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://openwebui.com/ -function header_info { -clear -cat <<"EOF" - ____ _ __ __ __ ______ - / __ \____ ___ ____ | | / /__ / /_ / / / / _/ - / / / / __ \/ _ \/ __ \ | | /| / / _ \/ __ \/ / / // / -/ /_/ / /_/ / __/ / / / | |/ |/ / __/ /_/ / /_/ // / -\____/ .___/\___/_/ /_/ |__/|__/\___/_.___/\____/___/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Open WebUI" -var_disk="16" +TAGS="ai;interface" var_cpu="4" var_ram="4096" +var_disk="16" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/open-webui ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} (Patience)" -cd /opt/open-webui -output=$(git pull --no-rebase) -if echo "$output" | grep -q "Already up to date." -then - msg_ok "$APP is already up to date." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/open-webui ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} (Patience)" + cd /opt/open-webui + output=$(git pull --no-rebase) + if echo "$output" | grep -q "Already up to date."; then + msg_ok "$APP is already up to date." + exit + fi + systemctl stop open-webui.service + npm install &>/dev/null + export NODE_OPTIONS="--max-old-space-size=3584" + npm run build &>/dev/null + cd ./backend + pip install -r requirements.txt -U &>/dev/null + systemctl start open-webui.service + msg_ok "Updated Successfully" exit -fi -systemctl stop open-webui.service -npm install &>/dev/null -export NODE_OPTIONS="--max-old-space-size=3584" -npm run build &>/dev/null -cd ./backend -pip install -r requirements.txt -U &>/dev/null -systemctl start open-webui.service -msg_ok "Updated Successfully" -exit } start @@ -83,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/overseerr.sh b/ct/overseerr.sh index e489be02834..64a133cca26 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -2,77 +2,51 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://overseerr.dev/ -function header_info { -clear -cat <<"EOF" - ____ - / __ \_ _____ _____________ ___ __________ - / / / / | / / _ \/ ___/ ___/ _ \/ _ \/ ___/ ___/ -/ /_/ /| |/ / __/ / (__ ) __/ __/ / / / -\____/ |___/\___/_/ /____/\___/\___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Overseerr" -var_disk="8" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/overseerr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop overseerr -cd /opt/overseerr -output=$(git pull) -git pull &>/dev/null -if echo "$output" | grep -q "Already up to date." -then - msg_ok " $APP is already up to date." + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/overseerr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop overseerr + cd /opt/overseerr + output=$(git pull) + git pull &>/dev/null + if echo "$output" | grep -q "Already up to date."; then + msg_ok " $APP is already up to date." + systemctl start overseerr + exit + fi + yarn install &>/dev/null + yarn build &>/dev/null systemctl start overseerr + msg_ok "Updated $APP" exit -fi -yarn install &>/dev/null -yarn build &>/dev/null -systemctl start overseerr -msg_ok "Updated $APP" -exit } start @@ -80,5 +54,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5055${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5055${CL}" \ No newline at end of file diff --git a/ct/owncast.sh b/ct/owncast.sh index 95c0a89187e..ed4c427e07f 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://owncast.online/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \_ ______ _________ ______/ /_ - / / / / | /| / / __ \/ ___/ __ `/ ___/ __/ -/ /_/ /| |/ |/ / / / / /__/ /_/ (__ ) /_ -\____/ |__/|__/_/ /_/\___/\__,_/____/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Owncast" -var_disk="2" +TAGS="broadcasting" var_cpu="2" var_ram="2048" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/owncast ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/owncast ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,6 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} - ${BL}http://${IP}:8080/admin${CL} admin|abc123\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin${CL}" \ No newline at end of file diff --git a/ct/pairdrop.sh b/ct/pairdrop.sh index baf4783cb3e..61a5f512824 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -2,69 +2,44 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pairdrop.net/ -function header_info { -clear -cat <<"EOF" - ____ _ ____ - / __ \____ _(_)____/ __ \_________ ____ - / /_/ / __ `/ / ___/ / / / ___/ __ \/ __ \ - / ____/ /_/ / / / / /_/ / / / /_/ / /_/ / -/_/ \__,_/_/_/ /_____/_/ \____/ .___/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PairDrop" -var_disk="4" +TAGS="sharing" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/pairdrop ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop pairdrop -cd /opt/pairdrop -git pull -npm install -systemctl start pairdrop -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/pairdrop ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop pairdrop + cd /opt/pairdrop + git pull + npm install + systemctl start pairdrop + msg_ok "Updated $APP" + exit } start @@ -72,5 +47,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index 3aac6ab112b..efeed56d544 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -2,57 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.paperless-ngx.com/ -function header_info { - clear - cat <<"EOF" - ____ __ - / __ \____ _____ ___ _____/ /__ __________ ____ ____ __ __ - / /_/ / __ `/ __ \/ _ \/ ___/ / _ \/ ___/ ___/___/ __ \/ __ `/ |/_/ - / ____/ /_/ / /_/ / __/ / / / __(__ |__ )___/ / / / /_/ /> < -/_/ \__,_/ .___/\___/_/ /_/\___/____/____/ /_/ /_/\__, /_/|_| - /_/ /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Paperless-ngx" -var_disk="10" +TAGS="document;management" var_cpu="2" var_ram="2048" +var_disk="10" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { if [[ ! -d /opt/paperless ]]; then msg_error "No ${APP} Installation Found!" @@ -69,7 +40,7 @@ function update_script() { check_container_resources if [ "$UPD" == "1" ]; then if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - if [[ "$(gs --version 2>/dev/null)" != "10.04.0" ]]; then + if [[ "$(gs --version 2>/dev/null)" != "10.04.0" ]]; then msg_info "Updating Ghostscript (Patience)" cd /tmp wget -q https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs10040/ghostscript-10.04.0.tar.gz @@ -125,5 +96,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" \ No newline at end of file diff --git a/ct/pbs.sh b/ct/pbs.sh index 11d6be38f43..d71558653b4 100644 --- a/ct/pbs.sh +++ b/ct/pbs.sh @@ -1,10 +1,8 @@ #!/usr/bin/env bash - source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE function header_info { clear @@ -18,51 +16,33 @@ cat <<"EOF" EOF } header_info -echo -e "Loading..." APP="PBS" -var_disk="10" +TAGS="backup" var_cpu="2" var_ram="2048" +var_disk="10" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +50,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8007${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8007${CL}" \ No newline at end of file diff --git a/ct/peanut.sh b/ct/peanut.sh index 13fd94deec3..30951588135 100644 --- a/ct/peanut.sh +++ b/ct/peanut.sh @@ -1,63 +1,37 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# Co-Author: remz1337 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck (tteckster) | Co-Author: remz1337 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Brandawg93/PeaNUT/ -function header_info { -clear -cat <<"EOF" - ____ _ ____ ________ - / __ \___ ____ _/ | / / / / /_ __/ - / /_/ / _ \/ __ `/ |/ / / / / / / - / ____/ __/ /_/ / /| / /_/ / / / -/_/ \___/\__,_/_/ |_/\____/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PeaNUT" -var_disk="4" +TAGS="network;ups;" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/systemd/system/peanut.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -f /etc/systemd/system/peanut.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi RELEASE=$(curl -sL https://api.github.com/repos/Brandawg93/PeaNUT/releases/latest | grep '"tag_name":' | cut -d'"' -f4) if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then msg_info "Updating $APP to ${RELEASE}" @@ -85,5 +59,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/petio.sh b/ct/petio.sh index 4e8d9541bb6..fbd22f93945 100644 --- a/ct/petio.sh +++ b/ct/petio.sh @@ -2,68 +2,42 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://petio.tv/ -function header_info { -clear -cat <<"EOF" - ____ __ _ - / __ \___ / /_(_)___ - / /_/ / _ \/ __/ / __ \ - / ____/ __/ /_/ / /_/ / -/_/ \___/\__/_/\____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Petio" -var_disk="4" +TAGS="media" var_cpu="2" var_ram="1024" +var_disk="4" var_os="ubuntu" var_version="20.04" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Petio ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop petio.service -wget https://petio.tv/releases/latest -O petio-latest.zip -unzip petio-latest.zip -d /opt/Petio -systemctl start petio.service -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Petio ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop petio.service + wget https://petio.tv/releases/latest -O petio-latest.zip + unzip petio-latest.zip -d /opt/Petio + systemctl start petio.service + msg_ok "Updated $APP" + exit } start @@ -71,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:7777${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7777${CL}" \ No newline at end of file diff --git a/ct/photoprism.sh b/ct/photoprism.sh index 864de0398c3..f23aa0eec10 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -2,56 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.photoprism.app/ -function header_info { - clear - cat <<"EOF" - ____ __ ______ __________ ____ ____ _________ __ ___ - / __ \/ / / / __ \/_ __/ __ \/ __ \/ __ \/ _/ ___// |/ / - / /_/ / /_/ / / / / / / / / / / /_/ / /_/ // / \__ \/ /|_/ / - / ____/ __ / /_/ / / / / /_/ / ____/ _, _// / ___/ / / / / -/_/ /_/ /_/\____/ /_/ \____/_/ /_/ |_/___//____/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PhotoPrism" -var_disk="8" +TAGS="media;photo" var_cpu="2" -var_ram="2048" +var_ram="3072" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -60,7 +32,6 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - echo -e "\n ⚠️ Ensure you set 2vCPU & 3072MiB RAM MIMIMUM!!! \n" msg_info "Stopping PhotoPrism" sudo systemctl stop photoprism msg_ok "Stopped PhotoPrism" @@ -82,5 +53,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:2342${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:2342${CL}" \ No newline at end of file diff --git a/ct/pialert.sh b/ct/pialert.sh index ee0de937624..ac9feeab235 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -2,64 +2,39 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/leiweibau/Pi.Alert/ -function header_info { -clear -cat <<"EOF" - ____ _ ___ __ __ - / __ \(_) / | / /__ _____/ /_ - / /_/ / / / /| | / / _ \/ ___/ __/ - / ____/ / / ___ |/ / __/ / / /_ -/_/ /_(_)_/ |_/_/\___/_/ \__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PiAlert" -var_disk="3" +TAGS="network" var_cpu="1" var_ram="512" +var_disk="3" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/pialert ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -bash -c "$(wget -qLO - https://github.com/leiweibau/Pi.Alert/raw/main/install/pialert_update.sh)" -s --lxc -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/pialert ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + bash -c "$(wget -qLO - https://github.com/leiweibau/Pi.Alert/raw/main/install/pialert_update.sh)" -s --lxc + msg_ok "Updated $APP" + exit } start @@ -67,5 +42,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}/pialert/${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/pialert${CL}" \ No newline at end of file diff --git a/ct/pihole.sh b/ct/pihole.sh index f26c120ec72..66489f23523 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pi-hole.net/ -function header_info { -clear -cat <<"EOF" - ____ ____ __ ______ __ ______ - / __ \/ _/ / / / / __ \/ / / ____/ - / /_/ // /___/ /_/ / / / / / / __/ - / ____// /___/ __ / /_/ / /___/ /___ -/_/ /___/ /_/ /_/\____/_____/_____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Pihole" -var_disk="2" +TAGS="adblock" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/pihole ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -set +e -pihole -up -msg_ok "Updated ${APP}" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/pihole ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + set +e + pihole -up + msg_ok "Updated ${APP}" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}/admin${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/admin${CL}" \ No newline at end of file diff --git a/ct/pingvin.sh b/ct/pingvin.sh index e2a2bd3df87..7e21fbfd7d7 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -2,83 +2,58 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://stonith404.github.io/pingvin-share/introduction -function header_info { -clear -cat <<"EOF" - ____ _ _ _____ __ - / __ \(_)___ ____ __ __(_)___ / ___// /_ ____ _________ - / /_/ / / __ \/ __ `/ | / / / __ \ \__ \/ __ \/ __ `/ ___/ _ \ - / ____/ / / / / /_/ /| |/ / / / / / ___/ / / / / /_/ / / / __/ -/_/ /_/_/ /_/\__, / |___/_/_/ /_/ /____/_/ /_/\__,_/_/ \___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Pingvin" -var_disk="8" +TAGS="sharing" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/pingvin-share ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping Pingvin Share" -systemctl stop pm2-root.service -msg_ok "Stopped Pingvin Share" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/pingvin-share ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping Pingvin Share" + systemctl stop pm2-root.service + msg_ok "Stopped Pingvin Share" -msg_info "Updating Pingvin Share" -cd /opt/pingvin-share -git fetch --tags -git checkout $(git describe --tags `git rev-list --tags --max-count=1`) &>/dev/null -cd backend -npm install &>/dev/null -npm run build &>/dev/null -cd ../frontend -npm install &>/dev/null -npm run build &>/dev/null -msg_ok "Updated Pingvin Share" + msg_info "Updating Pingvin Share" + cd /opt/pingvin-share + git fetch --tags + git checkout $(git describe --tags $(git rev-list --tags --max-count=1)) &>/dev/null + cd backend + npm install &>/dev/null + npm run build &>/dev/null + cd ../frontend + npm install &>/dev/null + npm run build &>/dev/null + msg_ok "Updated Pingvin Share" -msg_info "Starting Pingvin Share" -systemctl start pm2-root.service -msg_ok "Started Pingvin Share" + msg_info "Starting Pingvin Share" + systemctl start pm2-root.service + msg_ok "Started Pingvin Share" -msg_ok "Updated Successfully" -exit + msg_ok "Updated Successfully" + exit } start @@ -86,5 +61,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/plex.sh b/ct/plex.sh index 53977859738..8d228e2d97a 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.plex.tv/ -function header_info { -clear -cat <<"EOF" - ____ __ __ ___ ___ _____ - / __ \/ /__ _ __ / |/ /__ ____/ (_)___ _ / ___/___ ______ _____ _____ - / /_/ / / _ \| |/_/ / /|_/ / _ \/ __ / / __ `/ \__ \/ _ \/ ___/ | / / _ \/ ___/ - / ____/ / __/> < / / / / __/ /_/ / / /_/ / ___/ / __/ / | |/ / __/ / -/_/ /_/\___/_/|_| /_/ /_/\___/\__,_/_/\__,_/ /____/\___/_/ |___/\___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Plex" -var_disk="8" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="8" var_os="ubuntu" var_version="22.04" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select \nplexupdate info >> https://github.com/mrworf/plexupdate" 10 59 2 \ - "1" "Update LXC" ON \ - "2" "Install plexupdate" OFF \ - 3>&1 1>&2 2>&3) -if [ "$UPD" == "1" ]; then -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit -fi -if [ "$UPD" == "2" ]; then -set +e -bash -c "$(wget -qO - https://raw.githubusercontent.com/mrworf/plexupdate/master/extras/installer.sh)" -exit -fi + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/plexmediaserver.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + UPD=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "SUPPORT" --radiolist --cancel-button Exit-Script "Spacebar = Select \nplexupdate info >> https://github.com/mrworf/plexupdate" 10 59 2 \ + "1" "Update LXC" ON \ + "2" "Install plexupdate" OFF \ + 3>&1 1>&2 2>&3) + if [ "$UPD" == "1" ]; then + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit + fi + if [ "$UPD" == "2" ]; then + set +e + bash -c "$(wget -qO - https://raw.githubusercontent.com/mrworf/plexupdate/master/extras/installer.sh)" + exit + fi } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:32400/web${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:23400/web${CL}" \ No newline at end of file diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 5c7e1a9eaea..24f2e20d807 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -2,61 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pocketbase.io/ -function header_info { -clear -cat <<"EOF" - ____ __ __ __ - / __ \____ _____/ /_____ / /_/ /_ ____ _________ - / /_/ / __ \/ ___/ //_/ _ \/ __/ __ \/ __ `/ ___/ _ \ - / ____/ /_/ / /__/ ,< / __/ /_/ /_/ / /_/ (__ ) __/ -/_/ \____/\___/_/|_|\___/\__/_.___/\__,_/____/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Pocketbase" -var_disk="8" +TAGS="database" var_cpu="1" var_ram="512" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/systemd/system/pocketbase.service || ! -x /opt/pocketbase/pocketbase ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -f /etc/systemd/system/pocketbase.service || ! -x /opt/pocketbase/pocketbase ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi msg_info "Stopping ${APP}" systemctl stop pocketbase msg_ok "Stopped ${APP}" @@ -77,5 +52,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080/_${CL}" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/_${CL}" diff --git a/ct/podman-homeassistant.sh b/ct/podman-homeassistant.sh index 4498a6a63d3..fee6ae44961 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -2,60 +2,27 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ ____/ /___ ___ ____ _____ - / /_/ / __ \/ __ / __ __ \/ __ / __ \ - / ____/ /_/ / /_/ / / / / / / /_/ / / / / - __ __ /_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/__ __ - / / / /___ ____ ___ ___ / | __________(_)____/ /_____ _____ / /_ - / /_/ / __ \/ __ __ \/ _ \ / /| | / ___/ ___/ / ___/ __/ __ / __ \/ __/ - / __ / /_/ / / / / / / __/ / ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_ -/_/ /_/\____/_/ /_/ /_/\___/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Podman-Home Assistant" -var_disk="16" +TAGS="podman;smarthome" var_cpu="2" var_ram="2048" +var_disk="16" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -142,5 +109,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8123${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}" \ No newline at end of file diff --git a/ct/podman.sh b/ct/podman.sh index 7c29ca8fa2a..0fa863b8462 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://podman.io/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ ____/ /___ ___ ____ _____ - / /_/ / __ \/ __ / __ `__ \/ __ `/ __ \ - / ____/ /_/ / /_/ / / / / / / /_/ / / / / -/_/ \____/\__,_/_/ /_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Podman" -var_disk="4" +TAGS="container;kubernetes" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/containers/registries.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/containers/registries.conf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/postgresql.sh b/ct/postgresql.sh index a20c5e7b2be..c698ec8d60c 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.postgresql.org/ -function header_info { -clear -cat <<"EOF" - ____ __ _____ ____ __ - / __ \____ _____/ /_____ _________ / ___// __ \ / / - / /_/ / __ \/ ___/ __/ __ / ___/ _ \\__ \/ / / / / / - / ____/ /_/ (__ ) /_/ /_/ / / / __/__/ / /_/ / / /___ -/_/ \____/____/\__/\__, /_/ \___/____/\___\_\/_____/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PostgreSQL" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/pgdg.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/pgdg.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,3 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:5432${CL}" \ No newline at end of file diff --git a/ct/prometheus.sh b/ct/prometheus.sh index b24470353f5..24cb6c30f62 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -2,85 +2,60 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://prometheus.io/ -function header_info { -clear -cat <<"EOF" - ____ __ __ - / __ \_________ ____ ___ ___ / /_/ /_ ___ __ _______ - / /_/ / ___/ __ \/ __ __ \/ _ \/ __/ __ \/ _ \/ / / / ___/ - / ____/ / / /_/ / / / / / / __/ /_/ / / / __/ /_/ (__ ) -/_/ /_/ \____/_/ /_/ /_/\___/\__/_/ /_/\___/\__,_/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Prometheus" -var_disk="4" +TAGS="monitoring" var_cpu="1" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/prometheus.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop prometheus - msg_ok "Stopped ${APP}" - - msg_info "Updating ${APP} to ${RELEASE}" - wget -q https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz - tar -xf prometheus-${RELEASE}.linux-amd64.tar.gz - cd prometheus-${RELEASE}.linux-amd64 - cp -rf prometheus promtool /usr/local/bin/ - cd ~ - rm -rf prometheus-${RELEASE}.linux-amd64 prometheus-${RELEASE}.linux-amd64.tar.gz - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/prometheus.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/prometheus/prometheus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop prometheus + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to ${RELEASE}" + wget -q https://github.com/prometheus/prometheus/releases/download/v${RELEASE}/prometheus-${RELEASE}.linux-amd64.tar.gz + tar -xf prometheus-${RELEASE}.linux-amd64.tar.gz + cd prometheus-${RELEASE}.linux-amd64 + cp -rf prometheus promtool /usr/local/bin/ + cd ~ + rm -rf prometheus-${RELEASE}.linux-amd64 prometheus-${RELEASE}.linux-amd64.tar.gz + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start prometheus - msg_ok "Started ${APP}" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting ${APP}" + systemctl start prometheus + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -88,5 +63,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9090${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9090${CL}" \ No newline at end of file diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 38bced48ea7..1d0bb79e165 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://prowlarr.com/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \_________ _ __/ /___ __________ - / /_/ / ___/ __ \ | /| / / / __ `/ ___/ ___/ - / ____/ / / /_/ / |/ |/ / / /_/ / / / / -/_/ /_/ \____/|__/|__/_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Prowlarr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/prowlarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/prowlarr/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9696${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9696${CL}" \ No newline at end of file diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index 7544f7848ea..be4ad394420 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.qbittorrent.org/ -function header_info { -clear -cat <<"EOF" - ____ _ __ __ __ - ____ _/ __ )(_) /_/ /_____ _____________ ____ / /_ - / __ `/ __ / / __/ __/ __ \/ ___/ ___/ _ \/ __ \/ __/ -/ /_/ / /_/ / / /_/ /_/ /_/ / / / / / __/ / / / /_ -\__, /_____/_/\__/\__/\____/_/ /_/ \___/_/ /_/\__/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="qBittorrent" -var_disk="8" +TAGS="torrent" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/qbittorrent-nox.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/qbittorrent-nox.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8090${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}" \ No newline at end of file diff --git a/ct/rabbitmq.sh b/ct/rabbitmq.sh index 0ff43448af0..9dea1377981 100644 --- a/ct/rabbitmq.sh +++ b/ct/rabbitmq.sh @@ -1,77 +1,50 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: tteck | Co-Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.rabbitmq.com/ -function header_info { -clear -cat <<"EOF" - ____ __ __ _ __ __ _______ - / __ \____ _/ /_ / /_ (_) /_/ |/ / __ \ - / /_/ / __ `/ __ \/ __ \/ / __/ /|_/ / / / / - / _, _/ /_/ / /_/ / /_/ / / /_/ / / / /_/ / -/_/ |_|\__,_/_.___/_.___/_/\__/_/ /_/\___\_\ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="RabbitMQ" -var_disk="4" +TAGS="mqtt" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/rabbitmq ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP} Service" -systemctl stop rabbitmq-server -msg_ok "Stopped ${APP} Service" - -msg_info "Updating..." -apt install --only-upgrade rabbitmq-server &>/dev/null -msg_ok "Update Successfully" - -msg_info "Starting ${APP}" -systemctl start rabbitmq-server -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/rabbitmq ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP} Service" + systemctl stop rabbitmq-server + msg_ok "Stopped ${APP} Service" + + msg_info "Updating..." + apt install --only-upgrade rabbitmq-server &>/dev/null + msg_ok "Update Successfully" + + msg_info "Starting ${APP}" + systemctl start rabbitmq-server + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -79,5 +52,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:15672${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:15672${CL}" \ No newline at end of file diff --git a/ct/radarr.sh b/ct/radarr.sh index a7218ef8631..bfd706008e4 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://radarr.video/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \____ _____/ /___ __________ - / /_/ / __ `/ __ / __ `/ ___/ ___/ - / _, _/ /_/ / /_/ / /_/ / / / / -/_/ |_|\__,_/\__,_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Radarr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/radarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/radarr/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:7878${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7878${CL}" \ No newline at end of file diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index 8c6fab326f5..bec68f47d4a 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -2,86 +2,61 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/rogerfar/rdt-client -function header_info { -clear -cat <<"EOF" - ____ __ ____ __ _ __ ______ __ _________ __ - / __ \___ ____ / / / __ \___ / /_ _____(_)___/ / /_ __/___ _____________ ____ / /_ / ____/ (_)__ ____ / /_ - / /_/ / _ \/ __ `/ /___/ / / / _ \/ __ \/ ___/ / __ / / / / __ \/ ___/ ___/ _ \/ __ \/ __/ / / / / / _ \/ __ \/ __/ - / _, _/ __/ /_/ / /___/ /_/ / __/ /_/ / / / / /_/ / / / / /_/ / / / / / __/ / / / /_ / /___/ / / __/ / / / /_ -/_/ |_|\___/\__,_/_/ /_____/\___/_.___/_/ /_/\__,_/ /_/ \____/_/ /_/ \___/_/ /_/\__/ \____/_/_/\___/_/ /_/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="RDTClient" -var_disk="4" +TAGS="torrent" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/rdtc/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop rdtc -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/rdtc/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop rdtc + msg_ok "Stopped ${APP}" -msg_info "Updating ${APP}" -if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then - apt-get remove --purge -y dotnet-sdk-8.0 &>/dev/null - apt-get install -y dotnet-sdk-9.0 &>/dev/null -fi -mkdir -p rdtc-backup -cp -R /opt/rdtc/appsettings.json rdtc-backup/ -wget -q https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip -unzip -oqq RealDebridClient.zip -d /opt/rdtc -cp -R rdtc-backup/appsettings.json /opt/rdtc/ -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + if dpkg-query -W dotnet-sdk-8.0 >/dev/null 2>&1; then + apt-get remove --purge -y dotnet-sdk-8.0 &>/dev/null + apt-get install -y dotnet-sdk-9.0 &>/dev/null + fi + mkdir -p rdtc-backup + cp -R /opt/rdtc/appsettings.json rdtc-backup/ + wget -q https://github.com/rogerfar/rdt-client/releases/latest/download/RealDebridClient.zip + unzip -oqq RealDebridClient.zip -d /opt/rdtc + cp -R rdtc-backup/appsettings.json /opt/rdtc/ + msg_ok "Updated ${APP}" -msg_info "Starting ${APP}" -systemctl start rdtc -msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start rdtc + msg_ok "Started ${APP}" -msg_info "Cleaning Up" -rm -rf rdtc-backup RealDebridClient.zip -msg_ok "Cleaned" -msg_ok "Updated Successfully" -exit + msg_info "Cleaning Up" + rm -rf rdtc-backup RealDebridClient.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + exit } start @@ -89,5 +64,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6500${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6500${CL}" \ No newline at end of file diff --git a/ct/readarr.sh b/ct/readarr.sh index 10c6280baa0..f7f88fc81ba 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://readarr.com/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \___ ____ _____/ /___ __________ - / /_/ / _ \/ __ `/ __ / __ `/ ___/ ___/ - / _, _/ __/ /_/ / /_/ / /_/ / / / / -/_/ |_|\___/\__,_/\__,_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Readarr" -var_disk="4" +TAGS="media;comic;eBook" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/readarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/readarr/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8787${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8787${CL}" \ No newline at end of file diff --git a/ct/readeck.sh b/ct/readeck.sh index 29233e16659..1148cbe4a59 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -2,71 +2,46 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://readeck.org/en/ -function header_info { -clear -cat <<"EOF" - ____ __ __ - / __ \___ ____ _____/ /__ _____/ /__ - / /_/ / _ \/ __ `/ __ / _ \/ ___/ //_/ - / _, _/ __/ /_/ / /_/ / __/ /__/ ,< -/_/ |_|\___/\__,_/\__,_/\___/\___/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Readeck" -var_disk="2" +TAGS="bookmark" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/readeck ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -LATEST=$(curl -s https://codeberg.org/readeck/readeck/releases/ | grep -oP '(?<=Version )\d+\.\d+\.\d+' | head -1) -systemctl stop readeck.service -rm -rf /opt/readeck/readeck -cd /opt/readeck -wget -q -O readeck https://codeberg.org/readeck/readeck/releases/download/${LATEST}/readeck-${LATEST}-linux-amd64 -chmod a+x readeck -systemctl start readeck.service -msg_ok "Updated ${APP}" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/readeck ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + LATEST=$(curl -s https://codeberg.org/readeck/readeck/releases/ | grep -oP '(?<=Version )\d+\.\d+\.\d+' | head -1) + systemctl stop readeck.service + rm -rf /opt/readeck/readeck + cd /opt/readeck + wget -q -O readeck https://codeberg.org/readeck/readeck/releases/download/${LATEST}/readeck-${LATEST}-linux-amd64 + chmod a+x readeck + systemctl start readeck.service + msg_ok "Updated ${APP}" + exit } start @@ -74,5 +49,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8000${CL}\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" \ No newline at end of file diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index ea2bb1861bb..e03e76f4c5f 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -2,70 +2,45 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: MrYadro -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://recyclarr.dev/wiki/ -function header_info { -clear -cat <<"EOF" - ____ __ - / __ \___ _______ _______/ /___ ___________ - / /_/ / _ \/ ___/ / / / ___/ / __ `/ ___/ ___/ - / _, _/ __/ /__/ /_/ / /__/ / /_/ / / / / -/_/ |_|\___/\___/\__, /\___/_/\__,_/_/ /_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Recyclarr" -var_disk="2" +TAGS="*arr" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -f /root/.config/recyclarr/recyclarr.yml ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi -msg_info "Updating ${APP}" -wget -q $(curl -s https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4) -tar -C /usr/local/bin -xJf recyclarr*.tar.xz -rm -rf recyclarr*.tar.xz -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + wget -q $(curl -s https://api.github.com/repos/recyclarr/recyclarr/releases/latest | grep download | grep linux-x64 | cut -d\" -f4) + tar -C /usr/local/bin -xJf recyclarr*.tar.xz + rm -rf recyclarr*.tar.xz + msg_ok "Updated ${APP}" -msg_ok "Updated Successfully" -exit + msg_ok "Updated Successfully" + exit } start @@ -73,3 +48,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}${CL}" \ No newline at end of file diff --git a/ct/redis.sh b/ct/redis.sh index 32d0ee55eb6..3a089ff1c4d 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -2,64 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://redis.io/ -function header_info { -clear -cat <<"EOF" - ____ ___ - / __ \___ ____/ (_)____ - / /_/ / _ \/ __ / / ___/ - / _, _/ __/ /_/ / (__ ) -/_/ |_|\___/\__,_/_/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Redis" -var_disk="4" +TAGS="database" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" -VERBOSE="yes" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /lib/systemd/system/redis-server.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/redis-server.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit } start @@ -67,3 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following IP:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}${IP}:6379${CL}" \ No newline at end of file diff --git a/ct/rockylinux.sh b/ct/rockylinux.sh deleted file mode 100644 index 97dbc173a5d..00000000000 --- a/ct/rockylinux.sh +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE - -function header_info { -clear -cat <<"EOF" - ____ __ __ _ - / __ \____ _____/ /____ __ / / (_)___ __ ___ __ - / /_/ / __ \/ ___/ //_/ / / / / / / / __ \/ / / / |/_/ - / _, _/ /_/ / /__/ ,< / /_/ / / /___/ / / / / /_/ /> < -/_/ |_|\____/\___/_/|_|\__, / /_____/_/_/ /_/\__,_/_/|_| - /____/ - -EOF -} -header_info -echo -e "Loading..." -APP="Rocky Linux" -var_disk="1" -var_cpu="1" -var_ram="512" -var_os="rockylinux" -var_version="9" -variables -color -catch_errors - -function default_settings() { - CT_TYPE="1" - PW="-password rockylinux" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - -function update_script() { -header_info -if [[ ! -d /etc/pacman.d ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -dnf -y update -dnf -y upgrade -msg_ok "Updated Successfully" -exit -} - -start -build_container -description - -msg_ok "Completed Successfully!\n" diff --git a/ct/rtsptoweb.sh b/ct/rtsptoweb.sh index a2db3583119..ccb954f563d 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/deepch/RTSPtoWeb -function header_info { -clear -cat <<"EOF" - ____ ___________ ____ __ _ __ __ - / __ \/_ __/ ___// __ \/ /_____| | / /__ / /_ - / /_/ / / / \__ \/ /_/ / __/ __ \ | /| / / _ \/ __ \ - / _, _/ / / ___/ / ____/ /_/ /_/ / |/ |/ / __/ /_/ / -/_/ |_| /_/ /____/_/ \__/\____/|__/|__/\___/_.___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="RTSPtoWeb" -var_disk="4" +TAGS="media" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8083 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}" \ No newline at end of file diff --git a/ct/runtipi.sh b/ct/runtipi.sh index 2af52c24ea5..0942e69b00c 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -2,63 +2,38 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://runtipi.io/ -function header_info { -clear -cat <<"EOF" - ____ __ _ _ - / __ \__ ______ / /_(_)___ (_) - / /_/ / / / / __ \/ __/ / __ \/ / - / _, _/ /_/ / / / / /_/ / /_/ / / -/_/ |_|\__,_/_/ /_/\__/_/ .___/_/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Runtipi" -var_disk="8" +TAGS="os" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/runtipi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -cd /opt/runtipi && ./runtipi-cli update latest -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/runtipi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + cd /opt/runtipi && ./runtipi-cli update latest + exit } start @@ -66,5 +41,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP} ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 10b1b549040..0ffaabd7e45 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -2,77 +2,52 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://sabnzbd.org/ -function header_info { -clear -cat <<"EOF" - _____ ___ ____ __ __ - / ___// | / __ )____ ____ / /_ ____/ / - \__ \/ /| | / __ / __ \/_ / / __ \/ __ / - ___/ / ___ |/ /_/ / / / / / /_/ /_/ / /_/ / -/____/_/ |_/_____/_/ /_/ /___/_.___/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="SABnzbd" -var_disk="8" +TAGS="downloader" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/sabnzbd ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating $APP to ${RELEASE}" - systemctl stop sabnzbd.service - tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) &>/dev/null - \cp -r SABnzbd-${RELEASE}/* /opt/sabnzbd &>/dev/null - rm -rf SABnzbd-${RELEASE} - cd /opt/sabnzbd - python3 -m pip install -r requirements.txt &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - systemctl start sabnzbd.service - msg_ok "Updated ${APP} to ${RELEASE}" -else - msg_info "No update required. ${APP} is already at ${RELEASE}" -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/sabnzbd ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/sabnzbd/sabnzbd/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating $APP to ${RELEASE}" + systemctl stop sabnzbd.service + tar zxvf <(curl -fsSL https://github.com/sabnzbd/sabnzbd/releases/download/$RELEASE/SABnzbd-${RELEASE}-src.tar.gz) &>/dev/null + \cp -r SABnzbd-${RELEASE}/* /opt/sabnzbd &>/dev/null + rm -rf SABnzbd-${RELEASE} + cd /opt/sabnzbd + python3 -m pip install -r requirements.txt &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + systemctl start sabnzbd.service + msg_ok "Updated ${APP} to ${RELEASE}" + else + msg_info "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -80,5 +55,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:7777${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7777${CL}" \ No newline at end of file diff --git a/ct/sftpgo.sh b/ct/sftpgo.sh index 203ea956dc5..136349012ed 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://sftpgo.com/ -function header_info { -clear -cat <<"EOF" - _____ ________________ ______ - / ___// ____/_ __/ __ \/ ____/___ - \__ \/ /_ / / / /_/ / / __/ __ \ - ___/ / __/ / / / ____/ /_/ / /_/ / -/____/_/ /_/ /_/ \____/\____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="SFTPGo" -var_disk="4" +TAGS="ftp;sftp" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080/web/admin ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/web/admin${CL}" \ No newline at end of file diff --git a/ct/shinobi.sh b/ct/shinobi.sh index 609cae770e5..58bf134c98c 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -2,69 +2,44 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://shinobi.video/ -function header_info { -clear -cat <<"EOF" - _____ __ _ __ _ - / ___// /_ (_)___ ____ / /_ (_) - \__ \/ __ \/ / __ \/ __ \/ __ \/ / - ___/ / / / / / / / / /_/ / /_/ / / -/____/_/ /_/_/_/ /_/\____/_.___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Shinobi" -var_disk="8" +TAGS="nvr" var_cpu="2" var_ram="2048" +var_disk="8" var_os="ubuntu" var_version="22.04" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Shinobi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating Shinobi LXC" -cd /opt/Shinobi -sh UPDATE.sh -pm2 flush -pm2 restart camera -pm2 restart cron -msg_ok "Updated Shinobi LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Shinobi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating Shinobi LXC" + cd /opt/Shinobi + sh UPDATE.sh + pm2 flush + pm2 restart camera + pm2 restart cron + msg_ok "Updated Shinobi LXC" + exit } start @@ -72,5 +47,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8080/super${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/super${CL}" \ No newline at end of file diff --git a/ct/smokeping.sh b/ct/smokeping.sh index cb1e98a235d..44544ea8d73 100644 --- a/ct/smokeping.sh +++ b/ct/smokeping.sh @@ -1,69 +1,43 @@ #!/usr/bin/env bash - source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://oss.oetiker.ch/smokeping/ -function header_info { -clear -cat <<"EOF" - _____ __ ____ _ - / ___/____ ___ ____ / /_____ / __ \(_)___ ____ _ - \__ \/ __ `__ \/ __ \/ //_/ _ \/ /_/ / / __ \/ __ `/ - ___/ / / / / / / /_/ / ,< / __/ ____/ / / / / /_/ / -/____/_/ /_/ /_/\____/_/|_|\___/_/ /_/_/ /_/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="SmokePing" -var_disk="2" +TAGS="network" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if ! command -v smokeping &> /dev/null; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if ! command -v smokeping &>/dev/null; then + msg_error "No ${APP} Installation Found!" + exit + fi -msg_info "Updating ${APP}" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -71,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}/smokeping${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/smokeping${CL}" \ No newline at end of file diff --git a/ct/snipeit.sh b/ct/snipeit.sh index c38101a44fb..6591f98dbbe 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -1,94 +1,68 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) - -#Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2024 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE -function header_info { -clear -cat <<"EOF" - _____ _ __________ - / ___/____ (_)___ ___ / _/_ __/ - \__ \/ __ \/ / __ \/ _ \______ / / / / - ___/ / / / / / /_/ / __/_____// / / / -/____/_/ /_/_/ .___/\___/ /___/ /_/ - /_/ -EOF -} -header_info -echo -e "Loading..." -APP="SnipeIT" +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://snipeitapp.com/ -var_disk="4" +# App Default Values +APP="SnipeIT" +TAGS="assat-management;foss" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/snipe-it ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating ${APP} to v${RELEASE}" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null - mv /opt/snipe-it /opt/snipe-it-backup - cd /opt - wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" &>/dev/null - unzip -q v${RELEASE}.zip - mv snipe-it-${RELEASE} /opt/snipe-it - cp /opt/snipe-it-backup/.env /opt/snipe-it/.env - cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/ - cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads - cd /opt/snipe-it/ - export COMPOSER_ALLOW_SUPERUSER=1 - composer install --no-dev --prefer-source &>/dev/null - composer dump-autoload &>/dev/null - php artisan migrate --force &>/dev/null - php artisan config:clear &>/dev/null - php artisan route:clear &>/dev/null - php artisan cache:clear &>/dev/null - php artisan view:clear &>/dev/null - chown -R www-data: /opt/snipe-it - chmod -R 755 /opt/snipe-it - rm -rf /opt/v${RELEASE}.zip - rm -rf /opt/snipe-it-backup - msg_ok "Updated ${APP} LXC" -else - msg_ok "No update required. ${APP} is already at v${RELEASE}." -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/snipe-it ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/snipe/snipe-it/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to v${RELEASE}" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + mv /opt/snipe-it /opt/snipe-it-backup + cd /opt + wget -q "https://github.com/snipe/snipe-it/archive/refs/tags/v${RELEASE}.zip" &>/dev/null + unzip -q v${RELEASE}.zip + mv snipe-it-${RELEASE} /opt/snipe-it + cp /opt/snipe-it-backup/.env /opt/snipe-it/.env + cp -r /opt/snipe-it-backup/public/uploads/ /opt/snipe-it/public/uploads/ + cp -r /opt/snipe-it-backup/storage/private_uploads /opt/snipe-it/storage/private_uploads + cd /opt/snipe-it/ + export COMPOSER_ALLOW_SUPERUSER=1 + composer install --no-dev --prefer-source &>/dev/null + composer dump-autoload &>/dev/null + php artisan migrate --force &>/dev/null + php artisan config:clear &>/dev/null + php artisan route:clear &>/dev/null + php artisan cache:clear &>/dev/null + php artisan view:clear &>/dev/null + chown -R www-data: /opt/snipe-it + chmod -R 755 /opt/snipe-it + rm -rf /opt/v${RELEASE}.zip + rm -rf /opt/snipe-it-backup + msg_ok "Updated ${APP} LXC" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." + fi + exit } start @@ -96,3 +70,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 4f70eb3a9f5..2a59d3719ac 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -2,71 +2,46 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://sonarr.tv/ -function header_info { -clear -cat <<"EOF" - _____ - / ___/____ ____ ____ __________ - \__ \/ __ \/ __ \/ __ `/ ___/ ___/ - ___/ / /_/ / / / / /_/ / / / / -/____/\____/_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Sonarr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/sonarr/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP v4" -systemctl stop sonarr.service -wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64' -tar -xzf SonarrV4.tar.gz -rm -rf /opt/Sonarr -mv Sonarr /opt -rm -rf SonarrV4.tar.gz -systemctl start sonarr.service -msg_ok "Updated $APP v4" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/sonarr/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP v4" + systemctl stop sonarr.service + wget -q -O SonarrV4.tar.gz 'https://services.sonarr.tv/v1/download/main/latest?version=4&os=linux&arch=x64' + tar -xzf SonarrV4.tar.gz + rm -rf /opt/Sonarr + mv Sonarr /opt + rm -rf SonarrV4.tar.gz + systemctl start sonarr.service + msg_ok "Updated $APP v4" + exit } start @@ -74,5 +49,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8989${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8989${CL}" \ No newline at end of file diff --git a/ct/spoolman.sh b/ct/spoolman.sh index d1ba9ed9c3e..35c371f5dc5 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -1,95 +1,69 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Donkie/Spoolman -function header_info { -clear -cat <<"EOF" - _____ __ - / ___/____ ____ ____ / /___ ___ ____ _____ - \__ \/ __ \/ __ \/ __ \/ / __ `__ \/ __ `/ __ \ - ___/ / /_/ / /_/ / /_/ / / / / / / / /_/ / / / / -/____/ .___/\____/\____/_/_/ /_/ /_/\__,_/_/ /_/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Spoolman" -var_disk="4" +TAGS="3d-printing" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/spoolman ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(wget -q https://github.com/Donkie/Spoolman/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/spoolman ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(wget -q https://github.com/Donkie/Spoolman/releases/latest -O - | grep "title>Release" | cut -d " " -f 4) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP} Service" - systemctl stop spoolman - msg_ok "Stopped ${APP} Service" + msg_info "Stopping ${APP} Service" + systemctl stop spoolman + msg_ok "Stopped ${APP} Service" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - rm -rf spoolman_bak - mv spoolman spoolman_bak - wget -q https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip - unzip -q spoolman.zip -d spoolman - cd spoolman - pip3 install -r requirements.txt >/dev/null 2>&1 - wget -q https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example -O .env - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + rm -rf spoolman_bak + mv spoolman spoolman_bak + wget -q https://github.com/Donkie/Spoolman/releases/download/${RELEASE}/spoolman.zip + unzip -q spoolman.zip -d spoolman + cd spoolman + pip3 install -r requirements.txt >/dev/null 2>&1 + wget -q https://raw.githubusercontent.com/Donkie/Spoolman/master/.env.example -O .env + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP} Service" - systemctl start spoolman - msg_ok "Started ${APP} Service" + msg_info "Starting ${APP} Service" + systemctl start spoolman + msg_ok "Started ${APP} Service" - msg_info "Cleaning up" - rm -rf /opt/spoolman.zip - msg_ok "Cleaned" + msg_info "Cleaning up" + rm -rf /opt/spoolman.zip + msg_ok "Cleaned" - msg_ok "Updated Successfully!\n" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_ok "Updated Successfully!\n" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -97,5 +71,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:7912${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7912${CL}" \ No newline at end of file diff --git a/ct/stirling-pdf.sh b/ct/stirling-pdf.sh index e78ec23c410..c728c12f124 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -2,81 +2,56 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.stirlingpdf.com/ -function header_info { -clear -cat <<"EOF" - _____ __ _ ___ ____ ____ ______ - / ___// /_(_)____/ (_)___ ____ _ / __ \/ __ \/ ____/ - \__ \/ __/ / ___/ / / __ \/ __ `/___/ /_/ / / / / /_ - ___/ / /_/ / / / / / / / / /_/ /___/ ____/ /_/ / __/ -/____/\__/_/_/ /_/_/_/ /_/\__, / /_/ /_____/_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Stirling-PDF" -var_disk="8" +TAGS="pdf-editor" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Stirling-PDF ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -systemctl stop stirlingpdf -if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then - apt-get remove -y ocrmypdf &>/dev/null - apt-get install -y qpdf &>/dev/null -fi -RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz -tar -xzf v$RELEASE.tar.gz -cd Stirling-PDF-$RELEASE -chmod +x ./gradlew -./gradlew build &>/dev/null -cp -r ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ -cp -r scripts /opt/Stirling-PDF/ -cd ~ -rm -rf Stirling-PDF-$RELEASE v$RELEASE.tar.gz -ln -sf /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar -systemctl start stirlingpdf -msg_ok "Updated ${APP} to v$RELEASE" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Stirling-PDF ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + systemctl stop stirlingpdf + if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then + apt-get remove -y ocrmypdf &>/dev/null + apt-get install -y qpdf &>/dev/null + fi + RELEASE=$(curl -s https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + wget -q https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz + tar -xzf v$RELEASE.tar.gz + cd Stirling-PDF-$RELEASE + chmod +x ./gradlew + ./gradlew build &>/dev/null + cp -r ./build/libs/Stirling-PDF-*.jar /opt/Stirling-PDF/ + cp -r scripts /opt/Stirling-PDF/ + cd ~ + rm -rf Stirling-PDF-$RELEASE v$RELEASE.tar.gz + ln -sf /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar + systemctl start stirlingpdf + msg_ok "Updated ${APP} to v$RELEASE" + exit } start @@ -84,5 +59,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/syncthing.sh b/ct/syncthing.sh index d771e03f4e2..224b1cde78f 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://syncthing.net/ -function header_info { -clear -cat <<"EOF" - _____ __ __ _ - / ___/__ ______ _____/ /_/ /_ (_)___ ____ _ - \__ \/ / / / __ \/ ___/ __/ __ \/ / __ \/ __ `/ - ___/ / /_/ / / / / /__/ /_/ / / / / / / / /_/ / -/____/\__, /_/ /_/\___/\__/_/ /_/_/_/ /_/\__, / - /____/ /____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Syncthing" -var_disk="8" +TAGS="sync" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/sources.list.d/syncthing.list ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/sources.list.d/syncthing.list ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8384 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8384${CL}" \ No newline at end of file diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 693c8a9f67d..41f97742c85 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -1,63 +1,37 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://tandoor.dev/ -function header_info { -clear -cat <<"EOF" - ______ __ ____ _ - /_ __/___ _____ ____/ /___ ____ _____ / __ \___ _____(_)___ ___ _____ - / / / __ `/ __ \/ __ / __ \/ __ \/ ___/ / /_/ / _ \/ ___/ / __ \/ _ \/ ___/ - / / / /_/ / / / / /_/ / /_/ / /_/ / / / _, _/ __/ /__/ / /_/ / __(__ ) -/_/ \__,_/_/ /_/\__,_/\____/\____/_/ /_/ |_|\___/\___/_/ .___/\___/____/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Tandoor" -var_disk="10" +TAGS="recipes" var_cpu="4" var_ram="4096" +var_disk="10" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /opt/tandoor ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + if [[ ! -d /opt/tandoor ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi if cd /opt/tandoor && git pull | grep -q 'Already up to date'; then msg_ok "There is currently no update available." else @@ -82,5 +56,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8002${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${CL}" \ No newline at end of file diff --git a/ct/tasmoadmin.sh b/ct/tasmoadmin.sh index a99c012acfb..e09b3bd7d97 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/TasmoAdmin/TasmoAdmin -function header_info { -clear -cat <<"EOF" - ______ ___ __ _ - /_ __/___ __________ ___ ____ / | ____/ /___ ___ (_)___ - / / / __ `/ ___/ __ `__ \/ __ \/ /| |/ __ / __ `__ \/ / __ \ - / / / /_/ (__ ) / / / / / /_/ / ___ / /_/ / / / / / / / / / / -/_/ \__,_/____/_/ /_/ /_/\____/_/ |_\__,_/_/ /_/ /_/_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="TasmoAdmin" -var_disk="2" +TAGS="tasmota;smarthome" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9999${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9999${CL}" \ No newline at end of file diff --git a/ct/tautulli.sh b/ct/tautulli.sh index 59e1831b88d..1a1eb7c4a66 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://tautulli.com/ -function header_info { -clear -cat <<"EOF" - ______ __ _____ - /_ __/___ ___ __/ /___ __/ / (_) - / / / __ `/ / / / __/ / / / / / / - / / / /_/ / /_/ / /_/ /_/ / / / / -/_/ \__,_/\__,_/\__/\__,_/_/_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Tautulli" -var_disk="4" +TAGS="media" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/Tautulli/ ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/Tautulli/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8181${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8181${CL}" \ No newline at end of file diff --git a/ct/tdarr.sh b/ct/tdarr.sh index c6d5fddd7f3..4fc476c26a7 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://home.tdarr.io/ -function header_info { -clear -cat <<"EOF" - ______ __ - /_ __/___/ /___ __________ - / / / __ / __ `/ ___/ ___/ - / / / /_/ / /_/ / / / / -/_/ \__,_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Tdarr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/tdarr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/tdarr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8265${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8265${CL}" \ No newline at end of file diff --git a/ct/technitiumdns.sh b/ct/technitiumdns.sh index 73ff29baeba..b786b5f99a0 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -2,73 +2,48 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://technitium.com/dns/ -function header_info { -clear -cat <<"EOF" - ______ __ _ __ _ ____ _ _______ - /_ __/__ _____/ /_ ____ (_) /_(_)_ ______ ___ / __ \/ | / / ___/ - / / / _ \/ ___/ __ \/ __ \/ / __/ / / / / __ __ \ / / / / |/ /\__ \ - / / / __/ /__/ / / / / / / / /_/ / /_/ / / / / / / / /_/ / /| /___/ / -/_/ \___/\___/_/ /_/_/ /_/_/\__/_/\__,_/_/ /_/ /_/ /_____/_/ |_//____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Technitium DNS" -var_disk="2" +TAGS="dns" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/dns ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/dns ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" -if ! dpkg -s aspnetcore-runtime-8.0 > /dev/null 2>&1; then + if ! dpkg -s aspnetcore-runtime-8.0 >/dev/null 2>&1; then wget -q https://packages.microsoft.com/config/debian/12/packages-microsoft-prod.deb dpkg -i packages-microsoft-prod.deb &>/dev/null apt-get update &>/dev/null apt-get install -y aspnetcore-runtime-8.0 &>/dev/null rm packages-microsoft-prod.deb -fi -bash <(curl -fsSL https://download.technitium.com/dns/install.sh) &>/dev/null -msg_ok "Updated Successfully" -exit + fi + bash <(curl -fsSL https://download.technitium.com/dns/install.sh) &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -76,5 +51,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5380${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5380${CL}" \ No newline at end of file diff --git a/ct/the-lounge.sh b/ct/the-lounge.sh index dd4e50962db..b941f888acf 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -2,86 +2,61 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: kristocopani -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://thelounge.chat/ -function header_info { -clear -cat <<"EOF" - ________ __ - /_ __/ /_ ___ / / ____ __ ______ ____ ____ - / / / __ \/ _ \______/ / / __ \/ / / / __ \/ __ `/ _ \ - / / / / / / __/_____/ /___/ /_/ / /_/ / / / / /_/ / __/ -/_/ /_/ /_/\___/ /_____/\____/\__,_/_/ /_/\__, /\___/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="The-Lounge" -var_disk="4" +TAGS="irc" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="yes" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /usr/lib/systemd/system/thelounge.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Service" - systemctl stop thelounge - msg_ok "Stopped Service" + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/lib/systemd/system/thelounge.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/thelounge/thelounge-deb/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop thelounge + msg_ok "Stopped Service" - msg_info "Updating ${APP} to v${RELEASE}" - apt-get install --only-upgrade nodejs &>/dev/null - cd /opt - wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb - dpkg -i ./thelounge_${RELEASE}_all.deb - msg_ok "Updated ${APP} to v${RELEASE}" + msg_info "Updating ${APP} to v${RELEASE}" + apt-get install --only-upgrade nodejs &>/dev/null + cd /opt + wget -q https://github.com/thelounge/thelounge-deb/releases/download/v${RELEASE}/thelounge_${RELEASE}_all.deb + dpkg -i ./thelounge_${RELEASE}_all.deb + msg_ok "Updated ${APP} to v${RELEASE}" - msg_info "Starting Service" - systemctl start thelounge - msg_ok "Started Service" + msg_info "Starting Service" + systemctl start thelounge + msg_ok "Started Service" - msg_info "Cleaning up" - rm -rf "/opt/thelounge_${RELEASE}_all.deb" - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at v${RELEASE}." -fi -exit + msg_info "Cleaning up" + rm -rf "/opt/thelounge_${RELEASE}_all.deb" + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." + fi + exit } start @@ -89,5 +64,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:9000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000${CL}" \ No newline at end of file diff --git a/ct/threadfin.sh b/ct/threadfin.sh index 9995ea15713..65dd715ac24 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -2,68 +2,43 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Threadfin/Threadfin -function header_info { -clear -cat <<"EOF" - ________ _______ - /_ __/ /_ ________ ____ _____/ / __(_)___ - / / / __ \/ ___/ _ \/ __ `/ __ / /_/ / __ \ - / / / / / / / / __/ /_/ / /_/ / __/ / / / / -/_/ /_/ /_/_/ \___/\__,_/\__,_/_/ /_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Threadfin" -var_disk="4" +TAGS="media" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/threadfin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop threadfin.service -wget -q -O /opt/threadfin/threadfin 'https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64' -chmod +x /opt/threadfin/threadfin -systemctl start threadfin.service -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/threadfin ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop threadfin.service + wget -q -O /opt/threadfin/threadfin 'https://github.com/Threadfin/Threadfin/releases/latest/download/Threadfin_linux_amd64' + chmod +x /opt/threadfin/threadfin + systemctl start threadfin.service + msg_ok "Updated $APP" + exit } start @@ -71,5 +46,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:34400/web${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:34400/web${CL}" \ No newline at end of file diff --git a/ct/tianji.sh b/ct/tianji.sh index e80a524804d..6479c17ff1e 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -1,101 +1,75 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://tianji.msgbyte.com/ -function header_info { -clear -cat <<"EOF" - _______ _ _ - /_ __(_)___ _____ (_|_) - / / / / __ `/ __ \ / / / - / / / / /_/ / / / / / / / -/_/ /_/\__,_/_/ /_/_/ /_/ - /___/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Tianji" -var_disk="12" +TAGS="monitoring" var_cpu="4" var_ram="4096" +var_disk="12" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/tianji ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP} Service" - systemctl stop tianji - msg_ok "Stopped ${APP} Service" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - cp /opt/tianji/src/server/.env /opt/.env - mv /opt/tianji /opt/tianji_bak - wget -q "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv tianji-${RELEASE} /opt/tianji - cd tianji - pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile >/dev/null 2>&1 - pnpm build:static >/dev/null 2>&1 - pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false >/dev/null 2>&1 - mkdir -p ./src/server/public >/dev/null 2>&1 - cp -r ./geo ./src/server/public >/dev/null 2>&1 - pnpm build:server >/dev/null 2>&1 - mv /opt/.env /opt/tianji/src/server/.env - cd src/server - pnpm db:migrate:apply >/dev/null 2>&1 - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP} to ${RELEASE}" - msg_info "Starting ${APP}" - systemctl start tianji - msg_ok "Started ${APP}" - msg_info "Cleaning up" - rm -R /opt/v${RELEASE}.zip - rm -rf /opt/tianji_bak - rm -rf /opt/tianji/src/client - rm -rf /opt/tianji/website - rm -rf /opt/tianji/reporter - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}." -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/tianji ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/msgbyte/tianji/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP} Service" + systemctl stop tianji + msg_ok "Stopped ${APP} Service" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + cp /opt/tianji/src/server/.env /opt/.env + mv /opt/tianji /opt/tianji_bak + wget -q "https://github.com/msgbyte/tianji/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv tianji-${RELEASE} /opt/tianji + cd tianji + pnpm install --filter @tianji/client... --config.dedupe-peer-dependents=false --frozen-lockfile >/dev/null 2>&1 + pnpm build:static >/dev/null 2>&1 + pnpm install --filter @tianji/server... --config.dedupe-peer-dependents=false >/dev/null 2>&1 + mkdir -p ./src/server/public >/dev/null 2>&1 + cp -r ./geo ./src/server/public >/dev/null 2>&1 + pnpm build:server >/dev/null 2>&1 + mv /opt/.env /opt/tianji/src/server/.env + cd src/server + pnpm db:migrate:apply >/dev/null 2>&1 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to ${RELEASE}" + msg_info "Starting ${APP}" + systemctl start tianji + msg_ok "Started ${APP}" + msg_info "Cleaning up" + rm -R /opt/v${RELEASE}.zip + rm -rf /opt/tianji_bak + rm -rf /opt/tianji/src/client + rm -rf /opt/tianji/website + rm -rf /opt/tianji/reporter + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}." + fi + exit } start @@ -103,5 +77,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:12345${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:12345${CL}" \ No newline at end of file diff --git a/ct/traccar.sh b/ct/traccar.sh index c0f7a5daf5b..f3a2d2d3f8a 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -2,64 +2,39 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.traccar.org/ -function header_info { -clear -cat <<"EOF" - ______ - /_ __/________ _______________ ______ - / / / ___/ __ `/ ___/ ___/ __ `/ ___/ - / / / / / /_/ / /__/ /__/ /_/ / / -/_/ /_/ \__,_/\___/\___/\__,_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Traccar" -var_disk="2" +TAGS="gps;tracker" var_cpu="1" var_ram="1024" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/traccar ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_error "There is currently no update path available." -exit -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/traccar ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "There is currently no update path available." + exit + exit } start @@ -67,5 +42,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8082${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8082${CL}" \ No newline at end of file diff --git a/ct/traefik.sh b/ct/traefik.sh index 6cfbfe20ef0..82e1a025694 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -2,75 +2,50 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://traefik.io/ -function header_info { -clear -cat <<"EOF" - ______ _____ __ - /_ __/________ ____ / __(_) /__ - / / / ___/ __ `/ _ \/ /_/ / //_/ - / / / / / /_/ / __/ __/ / ,< -/_/ /_/ \__,_/\___/_/ /_/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Traefik" -var_disk="2" +TAGS="proxy" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/traefik.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1) -msg_info "Updating $APP LXC" -if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then - wget -q https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz - tar -C /tmp -xzf traefik*.tar.gz - mv /tmp/traefik /usr/bin/ - rm -rf traefik*.tar.gz - systemctl restart traefik.service - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated $APP LXC" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/traefik.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/traefik/traefik/releases | grep -oP '"tag_name":\s*"v\K[\d.]+?(?=")' | sort -V | tail -n 1) + msg_info "Updating $APP LXC" + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + wget -q https://github.com/traefik/traefik/releases/download/v${RELEASE}/traefik_v${RELEASE}_linux_amd64.tar.gz + tar -C /tmp -xzf traefik*.tar.gz + mv /tmp/traefik /usr/bin/ + rm -rf traefik*.tar.gz + systemctl restart traefik.service + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP LXC" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -78,5 +53,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/transmission.sh b/ct/transmission.sh index deaf8f74152..12afb2d10e4 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://transmissionbt.com/ -function header_info { -clear -cat <<"EOF" - ______ _ _ - /_ __/________ _____ _________ ___ (_)_________(_)___ ____ - / / / ___/ __ `/ __ \/ ___/ __ `__ \/ / ___/ ___/ / __ \/ __ \ - / / / / / /_/ / / / (__ ) / / / / / (__ |__ ) / /_/ / / / / -/_/ /_/ \__,_/_/ /_/____/_/ /_/ /_/_/____/____/_/\____/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Transmission" -var_disk="8" +TAGS="torrent" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/transmission-daemon/settings.json ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/transmission-daemon/settings.json ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:9091/transmission${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9091/transmission${CL}" \ No newline at end of file diff --git a/ct/trilium.sh b/ct/trilium.sh index f6a7d60baa8..9fc950c1936 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -2,84 +2,59 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://triliumnext.github.io/Docs/ -function header_info { -clear -cat <<"EOF" - ______ _ ___ - /_ __/____(_) (_)_ ______ ___ - / / / ___/ / / / / / / __ `__ \ - / / / / / / / / /_/ / / / / / / -/_/ /_/ /_/_/_/\__,_/_/ /_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Trilium" -var_disk="2" +TAGS="notes" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/trilium ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - -msg_info "Stopping ${APP}" -systemctl stop trilium.service -sleep 1 -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/trilium ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/TriliumNext/Notes/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + + msg_info "Stopping ${APP}" + systemctl stop trilium.service + sleep 1 + msg_ok "Stopped ${APP}" -msg_info "Updating to ${RELEASE}" -wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz -tar -xf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz -cp -r trilium-linux-x64-server/* /opt/trilium/ -msg_ok "Updated to ${RELEASE}" + msg_info "Updating to ${RELEASE}" + wget -q https://github.com/TriliumNext/Notes/releases/download/${RELEASE}/TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz + tar -xf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz + cp -r trilium-linux-x64-server/* /opt/trilium/ + msg_ok "Updated to ${RELEASE}" -msg_info "Cleaning up" -rm -rf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz trilium-linux-x64-server -msg_ok "Cleaned" + msg_info "Cleaning up" + rm -rf TriliumNextNotes-${RELEASE}-server-linux-x64.tar.xz trilium-linux-x64-server + msg_ok "Cleaned" -msg_info "Starting ${APP}" -systemctl start trilium.service -sleep 1 -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start trilium.service + sleep 1 + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -87,5 +62,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8080${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" \ No newline at end of file diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index fe2851d96ec..0ab070e0211 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ubuntu.com/ -function header_info { -clear -cat <<"EOF" - __ ____ __ - / / / / /_ __ ______ / /___ __ - / / / / __ \/ / / / __ \/ __/ / / / -/ /_/ / /_/ / /_/ / / / / /_/ /_/ / -\____/_.___/\__,_/_/ /_/\__/\__,_/ - -EOF -} -header_info +# App Default Values echo -e "Loading..." APP="Ubuntu" -var_disk="2" +TAGS="os" var_cpu="1" var_ram="512" +var_disk="2" var_os="ubuntu" -var_version="22.04" +var_version="24.04" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -69,3 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file diff --git a/ct/umami.sh b/ct/umami.sh index 0c37d001d52..ac1ed698562 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -2,79 +2,54 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://umami.is/ -function header_info { -clear -cat <<"EOF" - _ - __ ______ ___ ____ _____ ___ (_) - / / / / __ `__ \/ __ `/ __ `__ \/ / -/ /_/ / / / / / / /_/ / / / / / / / -\__,_/_/ /_/ /_/\__,_/_/ /_/ /_/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Umami" -var_disk="12" +TAGS="analytics" var_cpu="2" var_ram="2048" +var_disk="12" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/umami ]]; then msg_error "No ${APP} Installation Found!"; exit; fi - -msg_info "Stopping ${APP}" -systemctl stop umami -msg_ok "Stopped $APP" - -msg_info "Updating ${APP}" -cd /opt/umami -git pull -yarn install -yarn build -msg_ok "Updated ${APP}" - -msg_info "Starting ${APP}" -systemctl start umami -msg_ok "Started ${APP}" - -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/umami ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + msg_info "Stopping ${APP}" + systemctl stop umami + msg_ok "Stopped $APP" + + msg_info "Updating ${APP}" + cd /opt/umami + git pull + yarn install + yarn build + msg_ok "Updated ${APP}" + + msg_info "Starting ${APP}" + systemctl start umami + msg_ok "Started ${APP}" + + msg_ok "Updated Successfully" + exit } start @@ -82,5 +57,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/umbrel.sh b/ct/umbrel.sh index fa1bfb99d31..a336995c171 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -2,65 +2,37 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://umbrel.com/ -function header_info { -clear -cat <<"EOF" - __ __ __ __ - / / / /___ ___ / /_ ________ / / - / / / / __ `__ \/ __ \/ ___/ _ \/ / -/ /_/ / / / / / / /_/ / / / __/ / -\____/_/ /_/ /_/_.___/_/ \___/_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Umbrel" -var_disk="8" +TAGS="os" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -msg_info "Updating ${APP} LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated ${APP} LXC" -exit + header_info + check_container_storage + check_container_resources + msg_info "Updating ${APP} LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated ${APP} LXC" + exit } start @@ -68,5 +40,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL (reboot is required before apps install). - ${BL}http://${IP} ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized! (manual reboot is required!)${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/unbound.sh b/ct/unbound.sh index 94d0a405410..abc9bba5bba 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: wimb0 -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/NLnetLabs/unbound -function header_info { -clear -cat <<"EOF" - __ __ __ __ - / / / /___ / /_ ____ __ ______ ____/ / - / / / / __ \/ __ \/ __ \/ / / / __ \/ __ / -/ /_/ / / / / /_/ / /_/ / /_/ / / / / /_/ / -\____/_/ /_/_.___/\____/\__,_/_/ /_/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Unbound" -var_disk="2" +TAGS="dns" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/unbound ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/unbound ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be online. - ${BL} Set your DNS server to ${IP}:5335 ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5335${CL}" \ No newline at end of file diff --git a/ct/unifi.sh b/ct/unifi.sh index 706fcd19627..45af19a20c8 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://ui.com/download/unifi -function header_info { -clear -cat <<"EOF" - __ __ _ _____ - / / / /__ (_) __(_) - / / / / __ \/ / /_/ / -/ /_/ / / / / / __/ / -\____/_/ /_/_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Unifi" -var_disk="8" +TAGS="network;controller;unifi" var_cpu="2" var_ram="2048" +var_disk="8" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /usr/lib/unifi ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP}" -apt-get update --allow-releaseinfo-change &>/dev/null -apt-get install -y unifi &>/dev/null -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /usr/lib/unifi ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + apt-get update --allow-releaseinfo-change &>/dev/null + apt-get install -y unifi &>/dev/null + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP}${CL} should be reachable by going to the following URL. - ${BL}https://${IP}:8443${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8443${CL}" diff --git a/ct/unmanic.sh b/ct/unmanic.sh index a24633afc8b..7b7d7a9456e 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.unmanic.app/ -function header_info { -clear -cat <<"EOF" - __ __ _ - / / / /___ ____ ___ ____ _____ (_)____ - / / / / __ \/ __ `__ \/ __ `/ __ \/ / ___/ -/ /_/ / / / / / / / / / /_/ / / / / / /__ -\____/_/ /_/_/ /_/ /_/\__,_/_/ /_/_/\___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Unmanic" -var_disk="4" +TAGS="file;media" var_cpu="2" var_ram="2048" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/systemd/system/unmanic.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -pip3 install -U unmanic &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/unmanic.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + pip3 install -U unmanic &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8888${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8888${CL}" \ No newline at end of file diff --git a/ct/uptimekuma.sh b/ct/uptimekuma.sh index 53667c18f97..900f988d96f 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.sh @@ -2,62 +2,36 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://uptime.kuma.pet/ -function header_info { -clear -cat <<"EOF" - __ __ __ _ __ __ - / / / /___ / /_(_)___ ___ ___ / //_/_ ______ ___ ____ _ - / / / / __ \/ __/ / __ __ \/ _ \ / ,< / / / / __ __ \/ __ / -/ /_/ / /_/ / /_/ / / / / / / __/ / /| / /_/ / / / / / / /_/ / -\____/ .___/\__/_/_/ /_/ /_/\___/ /_/ |_\__,_/_/ /_/ /_/\__,_/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Uptime Kuma" -var_disk="4" +TAGS="analytics;monitoring" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/uptime-kuma ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/uptime-kuma ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then if ! command -v npm >/dev/null 2>&1; then echo "Installing NPM..." @@ -65,28 +39,28 @@ if [[ ! -d /opt/uptime-kuma ]]; then msg_error "No ${APP} Installation Found!"; echo "Installed NPM..." fi fi -LATEST=$(curl -sL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep '"tag_name":' | cut -d'"' -f4) -msg_info "Stopping ${APP}" -sudo systemctl stop uptime-kuma &>/dev/null -msg_ok "Stopped ${APP}" + LATEST=$(curl -sL https://api.github.com/repos/louislam/uptime-kuma/releases/latest | grep '"tag_name":' | cut -d'"' -f4) + msg_info "Stopping ${APP}" + sudo systemctl stop uptime-kuma &>/dev/null + msg_ok "Stopped ${APP}" -cd /opt/uptime-kuma + cd /opt/uptime-kuma -msg_info "Pulling ${APP} ${LATEST}" -git fetch --all &>/dev/null -git checkout $LATEST --force &>/dev/null -msg_ok "Pulled ${APP} ${LATEST}" + msg_info "Pulling ${APP} ${LATEST}" + git fetch --all &>/dev/null + git checkout $LATEST --force &>/dev/null + msg_ok "Pulled ${APP} ${LATEST}" -msg_info "Updating ${APP} to ${LATEST}" -npm install --production &>/dev/null -npm run download-dist &>/dev/null -msg_ok "Updated ${APP}" + msg_info "Updating ${APP} to ${LATEST}" + npm install --production &>/dev/null + npm run download-dist &>/dev/null + msg_ok "Updated ${APP}" -msg_info "Starting ${APP}" -sudo systemctl start uptime-kuma &>/dev/null -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + sudo systemctl start uptime-kuma &>/dev/null + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -94,5 +68,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3001${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3001${CL}" diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index aab39bd3b57..9bc744c524a 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -2,56 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE - -function header_info { - clear - cat <<"EOF" - _ __ ____ _ __ __ -| | / /___ ___ __/ / /| | / /___ __________/ /__ ____ -| | / / __ `/ / / / / __/ | /| / / __ `/ ___/ __ / _ \/ __ \ -| |/ / /_/ / /_/ / / /_ | |/ |/ / /_/ / / / /_/ / __/ / / / -|___/\__,_/\__,_/_/\__/ |__/|__/\__,_/_/ \__,_/\___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.vaultwarden.net/ + +# App Default Values APP="Vaultwarden" -var_disk="6" +TAGS="password-manager" var_cpu="4" var_ram="6144" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -60,7 +32,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - + VAULT=$(curl -s https://api.github.com/repos/dani-garcia/vaultwarden/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') @@ -143,5 +115,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" diff --git a/ct/vikunja.sh b/ct/vikunja.sh index a8889700364..508d2d4b9ff 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.sh @@ -2,89 +2,62 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://vikunja.io/ -function header_info { -clear -cat <<"EOF" - _ ___ __ _ -| | / (_) /____ ______ (_)___ _ -| | / / / //_/ / / / __ \ / / __ `/ -| |/ / / ,< / /_/ / / / / / / /_/ / -|___/_/_/|_|\__,_/_/ /_/_/ /\__,_/ - /___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Vikunja" -var_disk="4" +TAGS="todo-app" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/vikunja ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://dl.vikunja.io/vikunja/ | grep -oP 'href="/vikunja/\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop vikunja - msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/vikunja ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://dl.vikunja.io/vikunja/ | grep -oP 'href="/vikunja/\K[0-9]+\.[0-9]+\.[0-9]+' | sort -V | tail -n 1) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop vikunja + msg_ok "Stopped ${APP}" - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - rm -rf /opt/vikunja/vikunja - wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb" - DEBIAN_FRONTEND=noninteractive dpkg -i vikunja-$RELEASE-amd64.deb &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + rm -rf /opt/vikunja/vikunja + wget -q "https://dl.vikunja.io/vikunja/$RELEASE/vikunja-$RELEASE-amd64.deb" + DEBIAN_FRONTEND=noninteractive dpkg -i vikunja-$RELEASE-amd64.deb &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Starting ${APP}" - systemctl start vikunja - msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start vikunja + msg_ok "Started ${APP}" - msg_info "Cleaning Up" - rm -rf /opt/vikunja-$RELEASE-amd64.deb - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf /opt/vikunja-$RELEASE-amd64.deb + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -92,5 +65,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3456${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3456${CL}" diff --git a/ct/wallos.sh b/ct/wallos.sh index f8f9d352cc1..34fec89c164 100644 --- a/ct/wallos.sh +++ b/ct/wallos.sh @@ -1,96 +1,70 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://wallosapp.com/ -function header_info { -clear -cat <<"EOF" - _ __ ____ -| | / /___ _/ / /___ _____ -| | /| / / __ `/ / / __ \/ ___/ -| |/ |/ / /_/ / / / /_/ (__ ) -|__/|__/\__,_/_/_/\____/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wallos" -var_disk="5" +TAGS="finance" var_cpu="1" var_ram="1024" +var_disk="5" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/wallos ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Updating ${APP} to ${RELEASE}" - cd /opt - wget -q "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" - mkdir -p /opt/logos - mv /opt/wallos/db/wallos.db /opt/wallos.db - mv /opt/wallos/images/uploads/logos /opt/logos/ - unzip -q v${RELEASE}.zip - rm -rf /opt/wallos - mv Wallos-${RELEASE} /opt/wallos - rm -rf /opt/wallos/db/wallos.empty.db - mv /opt/wallos.db /opt/wallos/db/wallos.db - mv /opt/logos/* /opt/wallos/images/uploads/logos - chown -R www-data:www-data /opt/wallos - chmod -R 755 /opt/wallos - mkdir -p /var/log/cron - curl http://localhost/endpoints/db/migrate.php &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/wallos ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/ellite/Wallos/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to ${RELEASE}" + cd /opt + wget -q "https://github.com/ellite/Wallos/archive/refs/tags/v${RELEASE}.zip" + mkdir -p /opt/logos + mv /opt/wallos/db/wallos.db /opt/wallos.db + mv /opt/wallos/images/uploads/logos /opt/logos/ + unzip -q v${RELEASE}.zip + rm -rf /opt/wallos + mv Wallos-${RELEASE} /opt/wallos + rm -rf /opt/wallos/db/wallos.empty.db + mv /opt/wallos.db /opt/wallos/db/wallos.db + mv /opt/logos/* /opt/wallos/images/uploads/logos + chown -R www-data:www-data /opt/wallos + chmod -R 755 /opt/wallos + mkdir -p /var/log/cron + curl http://localhost/endpoints/db/migrate.php &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Reload Apache2" - systemctl reload apache2 - msg_ok "Apache2 Reloaded" + msg_info "Reload Apache2" + systemctl reload apache2 + msg_ok "Apache2 Reloaded" - msg_info "Cleaning Up" - rm -R /opt/v${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -R /opt/v${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -98,5 +72,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP} ${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/wastebin.sh b/ct/wastebin.sh index 639e0cacaf8..2bdf5ab8681 100644 --- a/ct/wastebin.sh +++ b/ct/wastebin.sh @@ -1,91 +1,63 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/matze/wastebin - -function header_info { -clear -cat <<"EOF" - _ __ __ __ _ -| | / /___ ______/ /____ / /_ (_)___ -| | /| / / __ `/ ___/ __/ _ \/ __ \/ / __ \ -| |/ |/ / /_/ (__ ) /_/ __/ /_/ / / / / / -|__/|__/\__,_/____/\__/\___/_.___/_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wastebin" -var_disk="4" +TAGS="file;code" var_cpu="1" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/wastebin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Wastebin" - systemctl stop wastebin - msg_ok "Wastebin Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/wastebin ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/matze/wastebin/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Wastebin" + systemctl stop wastebin + msg_ok "Wastebin Stopped" - msg_info "Updating Wastebin" - wget -q https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst - tar -xf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst - cp -f wastebin /opt/wastebin/ - chmod +x /opt/wastebin/wastebin - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated Wastebin" + msg_info "Updating Wastebin" + wget -q https://github.com/matze/wastebin/releases/download/${RELEASE}/wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst + tar -xf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst + cp -f wastebin /opt/wastebin/ + chmod +x /opt/wastebin/wastebin + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated Wastebin" - msg_info "Starting Wastebin" - systemctl start wastebin - msg_ok "Started Wastebin" + msg_info "Starting Wastebin" + systemctl start wastebin + msg_ok "Started Wastebin" - msg_info "Cleaning Up" - rm -rf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf wastebin_${RELEASE}_x86_64-unknown-linux-musl.tar.zst + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -93,5 +65,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:8088${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8088${CL}" \ No newline at end of file diff --git a/ct/watchyourlan.sh b/ct/watchyourlan.sh index 182a106fe06..c38355a0cd2 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -2,73 +2,48 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/aceberg/WatchYourLAN -function header_info { -clear -cat <<"EOF" - _ __ __ ____ __ __ ___ _ __ -| | / /___ _/ /______/ /\ \/ /___ __ _______/ / / | / | / / -| | /| / / __ `/ __/ ___/ __ \ / __ \/ / / / ___/ / / /| | / |/ / -| |/ |/ / /_/ / /_/ /__/ / / / / /_/ / /_/ / / / /___/ ___ |/ /| / -|__/|__/\__,_/\__/\___/_/ /_/_/\____/\__,_/_/ /_____/_/ |_/_/ |_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="WatchYourLAN" -var_disk="2" +TAGS="network" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /lib/systemd/system/watchyourlan.service ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP" -systemctl stop watchyourlan.service -cp -R /data/config.yaml config.yaml -RELEASE=$(curl -s https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4) -wget -q https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb -dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb -cp -R config.yaml /data/config.yaml -sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service -rm watchyourlan_${RELEASE}_linux_amd64.deb config.yaml -systemctl enable -q --now watchyourlan.service -msg_ok "Updated $APP" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /lib/systemd/system/watchyourlan.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP" + systemctl stop watchyourlan.service + cp -R /data/config.yaml config.yaml + RELEASE=$(curl -s https://api.github.com/repos/aceberg/WatchYourLAN/releases/latest | grep -o '"tag_name": *"[^"]*"' | cut -d '"' -f 4) + wget -q https://github.com/aceberg/WatchYourLAN/releases/download/$RELEASE/watchyourlan_${RELEASE}_linux_amd64.deb + dpkg -i watchyourlan_${RELEASE}_linux_amd64.deb + cp -R config.yaml /data/config.yaml + sed -i 's|/etc/watchyourlan/config.yaml|/data/config.yaml|' /lib/systemd/system/watchyourlan.service + rm watchyourlan_${RELEASE}_linux_amd64.deb config.yaml + systemctl enable -q --now watchyourlan.service + msg_ok "Updated $APP" + exit } start @@ -76,5 +51,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8840${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8840${CL}" \ No newline at end of file diff --git a/ct/wavelog.sh b/ct/wavelog.sh index 60ed3754aca..59a5b8f6f1b 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -2,104 +2,79 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: Don Locke (DonLocke) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.wavelog.org/ -function header_info { -clear -cat <<"EOF" - _ __ __ -| | / /___ __ _____ / / ____ ____ _ -| | /| / / __ `/ | / / _ \/ / / __ \/ __ '/ -| |/ |/ / /_/ /| |/ / __/ /___/ /_/ / /_/ / -|__/|__/\__,_/ |___/\___/_____/\____/\__, / - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wavelog" -var_disk="2" +TAGS="radio-logging" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/wavelog ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | cut -d '"' -f 4) -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping Services" - systemctl stop apache2 - msg_ok "Services Stopped" - - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/wavelog/application/config/config.php /opt/config.php - cp /opt/wavelog/application/config/database.php /opt/database.php - cp -r /opt/wavelog/userdata /opt/userdata - if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then - cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js - fi - wget -q "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" - unzip -q ${RELEASE}.zip - rm -rf /opt/wavelog - mv wavelog-${RELEASE}/ /opt/wavelog - rm -rf /opt/wavelog/install - mv /opt/config.php /opt/wavelog/application/config/config.php - mv /opt/database.php /opt/wavelog/application/config/database.php - cp -r /opt/userdata/* /opt/wavelog/userdata - rm -rf /opt/userdata - if [[ -f /opt/custom.js ]]; then - mv /opt/custom.js /opt/wavelog/assets/js/sections/custom.js + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/wavelog ]]; then + msg_error "No ${APP} Installation Found!" + exit fi - chown -R www-data:www-data /opt/wavelog/ - find /opt/wavelog/ -type d -exec chmod 755 {} \; - find /opt/wavelog/ -type f -exec chmod 664 {} \; - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + RELEASE=$(curl -s https://api.github.com/repos/wavelog/wavelog/releases/latest | grep "tag_name" | cut -d '"' -f 4) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Services" + systemctl stop apache2 + msg_ok "Services Stopped" - msg_info "Starting Services" - systemctl start apache2 - msg_ok "Started Services" + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/wavelog/application/config/config.php /opt/config.php + cp /opt/wavelog/application/config/database.php /opt/database.php + cp -r /opt/wavelog/userdata /opt/userdata + if [[ -f /opt/wavelog/assets/js/sections/custom.js ]]; then + cp /opt/wavelog/assets/js/sections/custom.js /opt/custom.js + fi + wget -q "https://github.com/wavelog/wavelog/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + rm -rf /opt/wavelog + mv wavelog-${RELEASE}/ /opt/wavelog + rm -rf /opt/wavelog/install + mv /opt/config.php /opt/wavelog/application/config/config.php + mv /opt/database.php /opt/wavelog/application/config/database.php + cp -r /opt/userdata/* /opt/wavelog/userdata + rm -rf /opt/userdata + if [[ -f /opt/custom.js ]]; then + mv /opt/custom.js /opt/wavelog/assets/js/sections/custom.js + fi + chown -R www-data:www-data /opt/wavelog/ + find /opt/wavelog/ -type d -exec chmod 755 {} \; + find /opt/wavelog/ -type f -exec chmod 664 {} \; + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Cleaning Up" - rm -rf ${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Starting Services" + systemctl start apache2 + msg_ok "Started Services" + + msg_info "Cleaning Up" + rm -rf ${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -107,5 +82,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/whisparr.sh b/ct/whisparr.sh index 31c5813a558..d0f52996709 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -2,67 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/Whisparr/Whisparr -function header_info { -clear -cat <<"EOF" - _ ____ _ -| | / / /_ (_)________ ____ __________ -| | /| / / __ \/ / ___/ __ \/ __ `/ ___/ ___/ -| |/ |/ / / / / (__ ) /_/ / /_/ / / / / -|__/|__/_/ /_/_/____/ .___/\__,_/_/ /_/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Whisparr" -var_disk="4" +TAGS="*arr" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /var/lib/whisparr ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/whisparr ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -70,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:6969${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6969${CL}" \ No newline at end of file diff --git a/ct/whoogle.sh b/ct/whoogle.sh index a4375050382..189d7f94acf 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/benbusby/whoogle-search -function header_info { -clear -cat <<"EOF" - _ ____ ______ ____ ________ ______ -| | / / / / / __ \/ __ \/ ____/ / / ____/ -| | /| / / /_/ / / / / / / / / __/ / / __/ -| |/ |/ / __ / /_/ / /_/ / /_/ / /___/ /___ -|__/|__/_/ /_/\____/\____/\____/_____/_____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Whoogle" -var_disk="2" +TAGS="network;seaching" var_cpu="1" var_ram="512" +var_disk="2" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /usr/local/bin/whoogle-search ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating ${APP} LXC" -pip3 install whoogle-search --upgrade &>/dev/null -systemctl restart whoogle.service -msg_ok "Updated Successfully" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /usr/local/bin/whoogle-search ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" + pip3 install whoogle-search --upgrade &>/dev/null + systemctl restart whoogle.service + msg_ok "Updated Successfully" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:5000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file diff --git a/ct/wikijs.sh b/ct/wikijs.sh index bc9ddf90778..f3a86aceb78 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -2,89 +2,63 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://js.wiki/ -function header_info { -clear -cat <<"EOF" - _ ___ __ _ _ -| | / (_) /__(_) (_)____ -| | /| / / / //_/ / / / ___/ -| |/ |/ / / ,< / / / (__ ) -|__/|__/_/_/|_/_(_)_/ /____/ - /___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wikijs" -var_disk="3" +TAGS="wiki" var_cpu="1" var_ram="512" +var_disk="3" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/wikijs ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP}" -systemctl stop wikijs -msg_ok "Stopped ${APP}" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/wikijs ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP}" + systemctl stop wikijs + msg_ok "Stopped ${APP}" -msg_info "Backing up Data" -mkdir -p ~/data-backup -cp -R /opt/wikijs/{db.sqlite,config.yml,/data} ~/data-backup -msg_ok "Backed up Data" + msg_info "Backing up Data" + mkdir -p ~/data-backup + cp -R /opt/wikijs/{db.sqlite,config.yml,/data} ~/data-backup + msg_ok "Backed up Data" -msg_info "Updating ${APP}" -rm -rf /opt/wikijs/* -cd /opt/wikijs -wget -q https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz -tar xzf wiki-js.tar.gz -msg_ok "Updated ${APP}" + msg_info "Updating ${APP}" + rm -rf /opt/wikijs/* + cd /opt/wikijs + wget -q https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz + tar xzf wiki-js.tar.gz + msg_ok "Updated ${APP}" -msg_info "Restoring Data" -cp -R ~/data-backup/* /opt/wikijs -rm -rf ~/data-backup -npm rebuild sqlite3 &>/dev/null -msg_ok "Restored Data" + msg_info "Restoring Data" + cp -R ~/data-backup/* /opt/wikijs + rm -rf ~/data-backup + npm rebuild sqlite3 &>/dev/null + msg_ok "Restored Data" -msg_info "Starting ${APP}" -systemctl start wikijs -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start wikijs + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -92,5 +66,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/wireguard.sh b/ct/wireguard.sh index d4388ad33ee..46ca605d553 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -2,67 +2,42 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.wireguard.com/ -function header_info { -clear -cat <<"EOF" - _ ___ ______ __ -| | / (_)_______ / ____/_ ______ __________/ / -| | /| / / / ___/ _ \/ / __/ / / / __ `/ ___/ __ / -| |/ |/ / / / / __/ /_/ / /_/ / /_/ / / / /_/ / -|__/|__/_/_/ \___/\____/\__,_/\__,_/_/ \__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wireguard" -var_disk="4" +TAGS="network;vpn" var_cpu="1" var_ram="512" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /etc/wireguard ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -apt-get update -apt-get -y upgrade -sleep 2 -cd /etc/wgdashboard/src -./wgd.sh update -exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /etc/wireguard ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + apt-get update + apt-get -y upgrade + sleep 2 + cd /etc/wgdashboard/src + ./wgd.sh update + exit } start @@ -70,5 +45,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "WGDashboard should be reachable by going to the following URL. - ${BL}http://${IP}:10086${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} WGDashboard Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:10086${CL}" \ No newline at end of file diff --git a/ct/yunohost.sh b/ct/yunohost.sh index ce44c28eaba..84724f906dc 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -2,66 +2,41 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://yunohost.org/ -function header_info { -clear -cat <<"EOF" -__ __ __ __ __ -\ \/ /_ ______ ____ / / / /___ _____/ /_ - \ / / / / __ \/ __ \/ /_/ / __ \/ ___/ __/ - / / /_/ / / / / /_/ / __ / /_/ (__ ) /_ -/_/\__,_/_/ /_/\____/_/ /_/\____/____/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="YunoHost" -var_disk="20" +TAGS="os" var_cpu="2" var_ram="2048" +var_disk="20" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/apt/trusted.gpg.d/php.gpg ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Updating $APP LXC" -apt-get update &>/dev/null -apt-get -y upgrade &>/dev/null -msg_ok "Updated $APP LXC" -exit + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/apt/trusted.gpg.d/php.gpg ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit } start @@ -69,5 +44,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}/ ${CL}" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 9c238bcc191..8112640aff9 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -2,88 +2,63 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.zabbix.com/ -function header_info { -clear -cat <<"EOF" - _____ __ __ _ -/__ / ____ _/ /_ / /_ (_) __ - / / / __ `/ __ \/ __ \/ / |/_/ - / /__/ /_/ / /_/ / /_/ / /> < -/____/\__,_/_.___/_.___/_/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Zabbix" -var_disk="6" +TAGS="monitoring" var_cpu="2" var_ram="4096" +var_disk="6" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -msg_info "Stopping ${APP} Services" -systemctl stop zabbix-server zabbix-agent2 -msg_ok "Stopped ${APP} Services" + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping ${APP} Services" + systemctl stop zabbix-server zabbix-agent2 + msg_ok "Stopped ${APP} Services" -msg_info "Updating $APP LXC" -mkdir -p /opt/zabbix-backup/ -cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/ -cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/ -cp -R /usr/share/zabbix/ /opt/zabbix-backup/ -cp -R /usr/share/zabbix-* /opt/zabbix-backup/ -rm -Rf /etc/apt/sources.list.d/zabbix.list -cd /tmp -wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb -dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null -apt-get update &>/dev/null -apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null + msg_info "Updating $APP LXC" + mkdir -p /opt/zabbix-backup/ + cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/ + cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/ + cp -R /usr/share/zabbix/ /opt/zabbix-backup/ + cp -R /usr/share/zabbix-* /opt/zabbix-backup/ + rm -Rf /etc/apt/sources.list.d/zabbix.list + cd /tmp + wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb + dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null + apt-get update &>/dev/null + apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null -msg_info "Starting ${APP} Services" -systemctl start zabbix-server zabbix-agent2 -systemctl restart apache2 -msg_ok "Started ${APP} Services" + msg_info "Starting ${APP} Services" + systemctl start zabbix-server zabbix-agent2 + systemctl restart apache2 + msg_ok "Started ${APP} Services" -msg_info "Cleaning Up" -rm -rf /tmp/zabbix-release_latest+debian12_all.deb -msg_ok "Cleaned" -msg_ok "Updated Successfully" -exit + msg_info "Cleaning Up" + rm -rf /tmp/zabbix-release_latest+debian12_all.deb + msg_ok "Cleaned" + msg_ok "Updated Successfully" + exit } start @@ -91,5 +66,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}/zabbix${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/zabbix${CL}" \ No newline at end of file diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 70f1e758755..58d8dbe74e5 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -2,57 +2,28 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE - -function header_info { - clear - cat <<"EOF" - _____ _ __ ___ __ _______ ____________ -/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ - / / / / __ / __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / - / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / -/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ - /____/ 🐝 - -EOF -} -header_info -echo -e "Loading..." +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.zigbee2mqtt.io/ + +# App Default Values APP="Zigbee2MQTT" -var_disk="4" +TAGS="smarthome;zigbee;mqtt" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage @@ -154,3 +125,6 @@ build_container description msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9442${CL}" \ No newline at end of file diff --git a/ct/zipline.sh b/ct/zipline.sh index 8887bb998fe..c82c531277e 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -1,93 +1,67 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck -# Author: tteck -# Co-Author: MickLesk (Canbiz) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://zipline.diced.sh/ -function header_info { -clear -cat <<"EOF" - _____ _ ___ -/__ / (_)___ / (_)___ ___ - / / / / __ \/ / / __ \/ _ \ - / /__/ / /_/ / / / / / / __/ -/____/_/ .___/_/_/_/ /_/\___/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Zipline" -var_disk="5" +TAGS="file;sharing" var_cpu="2" var_ram="2048" +var_disk="5" var_os="debian" var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors - -function default_settings() { - CT_TYPE="1" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} function update_script() { -header_info -check_container_storage -check_container_resources -if [[ ! -d /opt/zipline ]]; then msg_error "No ${APP} Installation Found!"; exit; fi -RELEASE=$(curl -s https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') -if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then - msg_info "Stopping ${APP}" - systemctl stop zipline - msg_ok "${APP} Stopped" + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/zipline ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/diced/zipline/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop zipline + msg_ok "${APP} Stopped" - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/zipline/.env /opt/ - rm -R /opt/zipline - wget -q "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv zipline-${RELEASE} /opt/zipline - cd /opt/zipline - mv /opt/.env /opt/zipline/.env - yarn install &>/dev/null - yarn build &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + msg_info "Updating ${APP} to ${RELEASE}" + cp /opt/zipline/.env /opt/ + rm -R /opt/zipline + wget -q "https://github.com/diced/zipline/archive/refs/tags/v${RELEASE}.zip" + unzip -q v${RELEASE}.zip + mv zipline-${RELEASE} /opt/zipline + cd /opt/zipline + mv /opt/.env /opt/zipline/.env + yarn install &>/dev/null + yarn build &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP}" - msg_info "Starting ${APP}" - systemctl start zipline - msg_ok "Started ${APP}" + msg_info "Starting ${APP}" + systemctl start zipline + msg_ok "Started ${APP}" - msg_info "Cleaning Up" - rm -rf v${RELEASE}.zip - msg_ok "Cleaned" - msg_ok "Updated Successfully" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" -fi -exit + msg_info "Cleaning Up" + rm -rf v${RELEASE}.zip + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -95,5 +69,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} Setup should be reachable by going to the following URL. - ${BL}http://${IP}:3000${CL} \n" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/ct/zoraxy.sh b/ct/zoraxy.sh index 5fadef42eb8..b9be8b7bfa4 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.sh @@ -2,76 +2,51 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://zoraxy.aroz.org/ -function header_info { -clear -cat <<"EOF" - _____ -/__ / ____ _________ __ ____ __ - / / / __ \/ ___/ __ `/ |/_/ / / / - / /__/ /_/ / / / /_/ /> /opt/${APP}_version.txt - msg_ok "Updated $APP" -else - msg_ok "No update required. ${APP} is already at ${RELEASE}" - fi - exit + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/zoraxy/ ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/tobychui/zoraxy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating $APP to ${RELEASE}" + systemctl stop zoraxy + wget -q "https://github.com/tobychui/zoraxy/releases/download/${RELEASE}/zoraxy_linux_amd64" + rm -rf /opt/zoraxy/zoraxy + mv zoraxy_linux_amd64 /opt/zoraxy/zoraxy + chmod +x /opt/zoraxy/zoraxy + systemctl start zoraxy + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit } start @@ -79,5 +54,6 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8000${CL} \n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000${CL}" \ No newline at end of file diff --git a/ct/zwave-js-ui.sh b/ct/zwave-js-ui.sh index 885fc6d5492..91c8b99a7e3 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -2,63 +2,35 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 tteck # Author: tteck (tteckster) -# License: MIT -# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://zwave-js.github.io/zwave-js-ui/#/ -function header_info { - clear - cat <<"EOF" - _____ _______ __ ______ -/__ /_ ______ __ _____ / / ___/ / / / / _/ - / /| | /| / / __ `/ | / / _ \ __ / /\__ \ / / / // / - / /_| |/ |/ / /_/ /| |/ / __/ / /_/ /___/ / / /_/ // / -/____/__/|__/\__,_/ |___/\___/ \____//____/ \____/___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Zwave-JS-UI" -var_disk="4" +TAGS="smarthome;zwave" var_cpu="2" var_ram="1024" +var_disk="4" var_os="debian" var_version="12" +var_unprivileged="0" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core variables color catch_errors -function default_settings() { - CT_TYPE="0" - PW="" - CT_ID=$NEXTID - HN=$NSAPP - DISK_SIZE="$var_disk" - CORE_COUNT="$var_cpu" - RAM_SIZE="$var_ram" - BRG="vmbr0" - NET="dhcp" - GATE="" - APT_CACHER="" - APT_CACHER_IP="" - DISABLEIP6="no" - MTU="" - SD="" - NS="" - MAC="" - VLAN="" - SSH="no" - VERB="no" - echo_default -} - function update_script() { header_info check_container_storage check_container_resources - if [[ ! -d /opt/zwave-js-ui ]]; then - msg_error "No ${APP} Installation Found!"; - exit; + if [[ ! -d /opt/zwave-js-ui ]]; then + msg_error "No ${APP} Installation Found!" + exit fi RELEASE=$(curl -s https://api.github.com/repos/zwave-js/zwave-js-ui/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then @@ -85,12 +57,14 @@ function update_script() { else msg_ok "No update required. ${APP} is already at ${RELEASE}." fi -exit + exit } start build_container description -echo -e "${APP} should be reachable by going to the following URL. - ${BL}http://${IP}:8091${CL} \n" +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8091${CL}" \ No newline at end of file From 71cc0a0fd406fcf1237a7092b8313cd0f0c736db Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:45:49 +0100 Subject: [PATCH 042/286] Update CHANGELOG.md (#839) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 096c6f41178..beafe97e765 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,15 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-16 + +### Changed + +### 💥 Breaking Changes + +- Update ALL CT's to new default (Part 2) [@MickLesk](https://github.com/MickLesk) ([#710](https://github.com/community-scripts/ProxmoxVE/pull/710)) +- Massive Update: build.func | install.func | create_lxc.sh (Part 1) [@MickLesk](https://github.com/MickLesk) ([#643](https://github.com/community-scripts/ProxmoxVE/pull/643)) + ## 2024-12-13 ### Changed From afd57cafc64534b5c2326611feea12a2925016b8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 12:59:49 +0100 Subject: [PATCH 043/286] Fix ARR Tags --- ct/autobrr.sh | 2 +- ct/bazarr.sh | 2 +- ct/homarr.sh | 2 +- ct/lidarr.sh | 2 +- ct/notifiarr.sh | 2 +- ct/prowlarr.sh | 2 +- ct/radarr.sh | 2 +- ct/recyclarr.sh | 2 +- ct/sonarr.sh | 2 +- ct/tdarr.sh | 2 +- ct/whisparr.sh | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/ct/autobrr.sh b/ct/autobrr.sh index b3bef31b278..abc14f9e8ec 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Autobrr" -TAGS="*arr;" +TAGS="arr;" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/bazarr.sh b/ct/bazarr.sh index bbbb4ed95ca..0d1dd6d8f68 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Bazarr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/homarr.sh b/ct/homarr.sh index 5423976f892..18d0a13256f 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Homarr" -TAGS="*arr;dashboard" +TAGS="arr;dashboard" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/lidarr.sh b/ct/lidarr.sh index a9f290b6552..4f2dbbf296c 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Lidarr" -TAGS="*arr;torrent;usenet" +TAGS="arr;torrent;usenet" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index 555ee1f481f..afe6be4fc05 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Notifiarr" -TAGS="*arr" +TAGS="arr" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 1d0bb79e165..5e40ccbb7ae 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Prowlarr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/radarr.sh b/ct/radarr.sh index bfd706008e4..52e757d842c 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Radarr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index e03e76f4c5f..af41908be64 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Recyclarr" -TAGS="*arr" +TAGS="arr" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 2a59d3719ac..e0a117c6e9f 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Sonarr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/tdarr.sh b/ct/tdarr.sh index 4fc476c26a7..7a5eeeb1a93 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Tdarr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/whisparr.sh b/ct/whisparr.sh index d0f52996709..ce446adbbcf 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Whisparr" -TAGS="*arr" +TAGS="arr" var_cpu="2" var_ram="1024" var_disk="4" From 353a5e7c996d8bcb0e272c7a46a4be9072bf08ff Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:31:48 +0100 Subject: [PATCH 044/286] Update ALL CT's to new default (Part 2) (#710) --- ct/actualbudget.sh | 2 +- ct/adguard.sh | 2 +- ct/adventurelog.sh | 2 +- ct/agentdvr.sh | 2 +- ct/alpine-docker.sh | 2 +- ct/alpine-grafana.sh | 2 +- ct/alpine-nextcloud.sh | 2 +- ct/alpine-vaultwarden.sh | 2 +- ct/alpine-zigbee2mqtt.sh | 2 +- ct/alpine.sh | 2 +- ct/apache-cassandra.sh | 2 +- ct/apache-couchdb.sh | 2 +- ct/apt-cacher-ng.sh | 2 +- ct/archivebox.sh | 2 +- ct/aria2.sh | 2 +- ct/audiobookshelf.sh | 2 +- ct/autobrr.sh | 2 +- ct/bazarr.sh | 2 +- ct/blocky.sh | 2 +- ct/bookstack.sh | 2 +- ct/bunkerweb.sh | 2 +- ct/caddy.sh | 2 +- ct/calibre-web.sh | 2 +- ct/casaos.sh | 2 +- ct/changedetection.sh | 2 +- ct/channels.sh | 2 +- ct/cloudflared.sh | 2 +- ct/cockpit.sh | 2 +- ct/commafeed.sh | 2 +- ct/cronicle.sh | 2 +- ct/daemonsync.sh | 2 +- ct/dashy.sh | 2 +- ct/debian.sh | 2 +- ct/deconz.sh | 2 +- ct/deluge.sh | 2 +- ct/docker.sh | 2 +- ct/dockge.sh | 2 +- ct/emby.sh | 2 +- ct/emqx.sh | 2 +- ct/ersatztv.sh | 2 +- ct/esphome.sh | 2 +- ct/evcc.sh | 2 +- ct/fenrus.sh | 2 +- ct/fhem.sh | 2 +- ct/flaresolverr.sh | 2 +- ct/flowiseai.sh | 2 +- ct/forgejo.sh | 2 +- ct/frigate.sh | 2 +- ct/gitea.sh | 2 +- ct/glance.sh | 2 +- ct/go2rtc.sh | 2 +- ct/gokapi.sh | 2 +- ct/gotify.sh | 2 +- ct/grafana.sh | 2 +- ct/grocy.sh | 2 +- ct/headscale.sh | 2 +- ct/heimdall-dashboard.sh | 2 +- ct/hivemq.sh | 2 +- ct/hoarder.sh | 2 +- ct/homarr.sh | 2 +- ct/homeassistant-core.sh | 2 +- ct/homeassistant.sh | 2 +- ct/homebox.sh | 2 +- ct/homebridge.sh | 2 +- ct/homepage.sh | 2 +- ct/homer.sh | 2 +- ct/hyperhdr.sh | 2 +- ct/hyperion.sh | 2 +- ct/influxdb.sh | 2 +- ct/inspircd.sh | 2 +- ct/iobroker.sh | 2 +- ct/iventoy.sh | 2 +- ct/jackett.sh | 2 +- ct/jellyfin.sh | 2 +- ct/jellyseerr.sh | 2 +- ct/kavita.sh | 2 +- ct/keycloak.sh | 2 +- ct/kimai.sh | 2 +- ct/komga.sh | 2 +- ct/kubo.sh | 2 +- ct/lazylibrarian.sh | 2 +- ct/lidarr.sh | 2 +- ct/linkwarden.sh | 2 +- ct/listmonk.sh | 2 +- ct/lldap.sh | 2 +- ct/lubelogger.sh | 2 +- ct/mafl.sh | 2 +- ct/magicmirror.sh | 2 +- ct/mariadb.sh | 2 +- ct/matterbridge.sh | 2 +- ct/mediamtx.sh | 2 +- ct/medusa.sh | 2 +- ct/memos.sh | 2 +- ct/meshcentral.sh | 2 +- ct/metube.sh | 2 +- ct/mongodb.sh | 2 +- ct/motioneye.sh | 2 +- ct/mqtt.sh | 2 +- ct/mylar3.sh | 2 +- ct/myspeed.sh | 2 +- ct/mysql.sh | 2 +- ct/n8n.sh | 2 +- ct/navidrome.sh | 2 +- ct/neo4j.sh | 2 +- ct/netbox.sh | 2 +- ct/nextcloudpi.sh | 2 +- ct/nextpvr.sh | 2 +- ct/nginxproxymanager.sh | 2 +- ct/nocodb.sh | 2 +- ct/node-red.sh | 2 +- ct/notifiarr.sh | 2 +- ct/ntfy.sh | 2 +- ct/nzbget.sh | 2 +- ct/octoprint.sh | 2 +- ct/ollama.sh | 2 +- ct/omada.sh | 2 +- ct/ombi.sh | 2 +- ct/omv.sh | 2 +- ct/onedev.sh | 2 +- ct/openhab.sh | 2 +- ct/openobserve.sh | 2 +- ct/openwebui.sh | 2 +- ct/overseerr.sh | 2 +- ct/owncast.sh | 2 +- ct/pairdrop.sh | 2 +- ct/paperless-ngx.sh | 2 +- ct/pbs.sh | 2 +- ct/peanut.sh | 2 +- ct/petio.sh | 2 +- ct/photoprism.sh | 2 +- ct/pialert.sh | 2 +- ct/pihole.sh | 2 +- ct/pingvin.sh | 2 +- ct/plex.sh | 2 +- ct/pocketbase.sh | 2 +- ct/podman-homeassistant.sh | 2 +- ct/podman.sh | 2 +- ct/postgresql.sh | 2 +- ct/prometheus.sh | 2 +- ct/prowlarr.sh | 2 +- ct/qbittorrent.sh | 2 +- ct/rabbitmq.sh | 2 +- ct/radarr.sh | 2 +- ct/rdtclient.sh | 2 +- ct/readarr.sh | 2 +- ct/readeck.sh | 2 +- ct/recyclarr.sh | 2 +- ct/redis.sh | 2 +- ct/rtsptoweb.sh | 2 +- ct/runtipi.sh | 2 +- ct/sabnzbd.sh | 2 +- ct/sftpgo.sh | 2 +- ct/shinobi.sh | 2 +- ct/smokeping.sh | 2 +- ct/snipeit.sh | 2 +- ct/sonarr.sh | 2 +- ct/spoolman.sh | 2 +- ct/stirling-pdf.sh | 2 +- ct/syncthing.sh | 2 +- ct/tandoor.sh | 2 +- ct/tasmoadmin.sh | 2 +- ct/tautulli.sh | 2 +- ct/tdarr.sh | 2 +- ct/technitiumdns.sh | 2 +- ct/the-lounge.sh | 2 +- ct/threadfin.sh | 2 +- ct/tianji.sh | 2 +- ct/traccar.sh | 2 +- ct/traefik.sh | 2 +- ct/transmission.sh | 2 +- ct/trilium.sh | 2 +- ct/ubuntu.sh | 2 +- ct/umami.sh | 2 +- ct/umbrel.sh | 2 +- ct/unbound.sh | 2 +- ct/unifi.sh | 2 +- ct/unmanic.sh | 2 +- ct/uptimekuma.sh | 2 +- ct/vaultwarden.sh | 2 +- ct/vikunja.sh | 2 +- ct/wallos.sh | 2 +- ct/wastebin.sh | 2 +- ct/watchyourlan.sh | 2 +- ct/wavelog.sh | 2 +- ct/whisparr.sh | 2 +- ct/whoogle.sh | 2 +- ct/wikijs.sh | 2 +- ct/wireguard.sh | 2 +- ct/yunohost.sh | 2 +- ct/zabbix.sh | 2 +- ct/zigbee2mqtt.sh | 2 +- ct/zipline.sh | 2 +- ct/zoraxy.sh | 2 +- ct/zwave-js-ui.sh | 2 +- 194 files changed, 194 insertions(+), 194 deletions(-) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 1980fe1bed7..b5925f1d85d 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Actual Budget" -TAGS="finance" +var_tags="finance" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/adguard.sh b/ct/adguard.sh index 1679d1e64d6..f814a12de4d 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Adguard" -TAGS="adblock" +var_tags="adblock" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index fe7ccaad557..14478040ef4 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="AdventureLog" -TAGS="traveling" +var_tags="traveling" var_disk="7" var_cpu="2" var_ram="2048" diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index f28dbcba7d5..07810da88c3 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="AgentDVR" -TAGS="dvr" +var_tags="dvr" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index a629f0d856d..b04cd64a82b 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine-Docker" -TAGS="docker;alpine" +var_tags="docker;alpine" var_cpu="1" var_ram="1024" var_disk="2" diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index 2ba68ca7d01..c71d9a21da9 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine-Grafana" -TAGS="alpine;monitoring" +var_tags="alpine;monitoring" var_cpu="1" var_ram="256" var_disk="1" diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index 20dfbe159e5..ec1a313ea32 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine-Nextcloud" -TAGS="alpine;cloud" +var_tags="alpine;cloud" var_cpu="2" var_ram="1024" var_disk="2" diff --git a/ct/alpine-vaultwarden.sh b/ct/alpine-vaultwarden.sh index f6b9cd4e9e8..9f18067b3d6 100644 --- a/ct/alpine-vaultwarden.sh +++ b/ct/alpine-vaultwarden.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine-Vaultwarden" -TAGS="alpine;vault" +var_tags="alpine;vault" var_cpu="1" var_ram="256" var_disk="0.3" diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index d52b7c96a10..688d513d6cf 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine-Zigbee2MQTT" -TAGS="alpine;zigbee;mqtt;smarthome" +var_tags="alpine;zigbee;mqtt;smarthome" var_disk="0.3" var_cpu="1" var_ram="256" diff --git a/ct/alpine.sh b/ct/alpine.sh index 5ce8f9999df..4b1a28bc54b 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Alpine" -TAGS="os;alpine" +var_tags="os;alpine" var_cpu="1" var_ram="512" var_disk="0.1" diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh index dcb09a05415..0e0db07b2f4 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Apache-Cassandra" -TAGS="database;NoSQL" +var_tags="database;NoSQL" var_cpu="1" var_ram="2048" var_disk="4" diff --git a/ct/apache-couchdb.sh b/ct/apache-couchdb.sh index 4dcc38b10d0..9f1b415997a 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Apache-CouchDB" -TAGS="database" +var_tags="database" var_cpu="2" var_ram="4096" var_disk="10" diff --git a/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index 18ee4f26dc4..52182d22a27 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Apt-Cacher-NG" -TAGS="caching" +var_tags="caching" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 81063ba8991..53849d0014f 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="ArchiveBox" -TAGS="archive;bookmark" +var_tags="archive;bookmark" var_cpu="2" var_ram="1024" var_disk="8" diff --git a/ct/aria2.sh b/ct/aria2.sh index 1bb5b5d9281..af1bd81854b 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Aria2" -TAGS="download-utility" +var_tags="download-utility" var_cpu="2" var_ram="1024" var_disk="8" diff --git a/ct/audiobookshelf.sh b/ct/audiobookshelf.sh index 9c63c1f7c3b..8c8770f1151 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="audiobookshelf" -TAGS="podcast;audiobook" +var_tags="podcast;audiobook" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/autobrr.sh b/ct/autobrr.sh index abc14f9e8ec..5497fb2560b 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Autobrr" -TAGS="arr;" +var_tags="arr;" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/bazarr.sh b/ct/bazarr.sh index 0d1dd6d8f68..fd646e614e6 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Bazarr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/blocky.sh b/ct/blocky.sh index 27548c893bd..494e51c0b40 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Blocky" -TAGS="adblock" +var_tags="adblock" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/bookstack.sh b/ct/bookstack.sh index bc76c6d4555..d7cf509317c 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Bookstack" -TAGS="organizer" +var_tags="organizer" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index 6ed24e22b8d..bd5a0b25204 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="BunkerWeb" -TAGS="webserver" +var_tags="webserver" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/caddy.sh b/ct/caddy.sh index 72869d45289..5afc686d063 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Caddy" -TAGS="webserver" +var_tags="webserver" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 2a033ff7e92..cd398c42cdd 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Calibre-Web" -TAGS="eBook" +var_tags="eBook" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/casaos.sh b/ct/casaos.sh index 118de1e56ed..050290a3b1d 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="CasaOS" -TAGS="cloud" +var_tags="cloud" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/changedetection.sh b/ct/changedetection.sh index 62c060f74f5..6046b399e3f 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Change Detection" -TAGS="monitoring;crawler" +var_tags="monitoring;crawler" var_cpu="2" var_ram="1024" var_disk="8" diff --git a/ct/channels.sh b/ct/channels.sh index 223a626f753..8d09ab4d64a 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Channels" -TAGS="dvr" +var_tags="dvr" var_cpu="2" var_ram="1024" var_disk="8" diff --git a/ct/cloudflared.sh b/ct/cloudflared.sh index e4b8a3a4b12..c3a43cb2e49 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Cloudflared" -TAGS="network;cloudflare" +var_tags="network;cloudflare" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/cockpit.sh b/ct/cockpit.sh index 4126c39c27b..265f3de2f43 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Cockpit" -TAGS="monitoring;network" +var_tags="monitoring;network" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/commafeed.sh b/ct/commafeed.sh index b3f72d87741..59d9f44c387 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="CommaFeed" -TAGS="rss-reader" +var_tags="rss-reader" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/cronicle.sh b/ct/cronicle.sh index 99abc78b035..fd2d563377e 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Cronicle" -TAGS="task-scheduler" +var_tags="task-scheduler" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/daemonsync.sh b/ct/daemonsync.sh index a58a187b7df..910324befe0 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Daemon Sync" -TAGS="sync" +var_tags="sync" var_cpu="1" var_ram="512" var_disk="8" diff --git a/ct/dashy.sh b/ct/dashy.sh index 18404b6990b..edce87ed0a4 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Dashy" -TAGS="dashboard" +var_tags="dashboard" var_cpu="2" var_ram="2048" var_disk="6" diff --git a/ct/debian.sh b/ct/debian.sh index a914f673011..be9e3aa9d88 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Debian" -TAGS="os" +var_tags="os" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/deconz.sh b/ct/deconz.sh index 27c6bccbb4c..49f06c81aae 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="deCONZ" -TAGS="zigbee" +var_tags="zigbee" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/deluge.sh b/ct/deluge.sh index e8971ed382f..be944b69492 100644 --- a/ct/deluge.sh +++ b/ct/deluge.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Deluge" -TAGS="torrent" +var_tags="torrent" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/docker.sh b/ct/docker.sh index 7b15a87bcff..fed85f34d54 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Docker" -TAGS="docker" +var_tags="docker" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/dockge.sh b/ct/dockge.sh index b1d6823cd7e..45e3d227898 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Dockge" -TAGS="docker" +var_tags="docker" var_cpu="2" var_ram="2048" var_disk="18" diff --git a/ct/emby.sh b/ct/emby.sh index ce938f9220c..a57d4786c2c 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Emby" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/emqx.sh b/ct/emqx.sh index fe1d274f9bc..300ac95b7b1 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="EMQX" -TAGS="mqtt" +var_tags="mqtt" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index a15129a5c10..3b9d9fe9b5a 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="ErsatzTV" -TAGS="iptv" +var_tags="iptv" var_cpu="1" var_ram="1024" var_disk="5" diff --git a/ct/esphome.sh b/ct/esphome.sh index d1a18faedb7..d28c43f276c 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="ESPHome" -TAGS="automation" +var_tags="automation" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/evcc.sh b/ct/evcc.sh index 7df1109afdb..a1fedac10e7 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="evcc" -TAGS="solar;ev;automation" +var_tags="solar;ev;automation" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/fenrus.sh b/ct/fenrus.sh index c5e5f03a032..45b91696b4f 100644 --- a/ct/fenrus.sh +++ b/ct/fenrus.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Fenrus" -TAGS="dashboard" +var_tags="dashboard" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/fhem.sh b/ct/fhem.sh index 520f4b925ed..976bef55195 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="FHEM" -TAGS="automation" +var_tags="automation" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index 43f48d044d2..4db31142e57 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="FlareSolverr" -TAGS="proxy" +var_tags="proxy" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index 979f5e5077f..c83da821608 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="FlowiseAI" -TAGS="low-code" +var_tags="low-code" var_disk="10" var_cpu="4" var_ram="4096" diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 0d43ff19747..1b5b43e1c09 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Forgejo" -TAGS="git" +var_tags="git" var_cpu="2" var_ram="2048" var_disk="10" diff --git a/ct/frigate.sh b/ct/frigate.sh index a68b4e9a07e..e40014701b7 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Frigate" -TAGS="nvr" +var_tags="nvr" var_cpu="4" var_ram="4096" var_disk="20" diff --git a/ct/gitea.sh b/ct/gitea.sh index 2afcf220e28..18561c61c76 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Gitea" -TAGS="git" +var_tags="git" var_cpu="1" var_ram="1024" var_disk="8" diff --git a/ct/glance.sh b/ct/glance.sh index 22e59ef1eca..7cf8dc36f02 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Glance" -TAGS="dashboard" +var_tags="dashboard" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/go2rtc.sh b/ct/go2rtc.sh index a4508796167..b6278d9d741 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="go2rtc" -TAGS="recorder;video" +var_tags="recorder;video" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/gokapi.sh b/ct/gokapi.sh index f0df0568d6b..7f81581bdf0 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Gokapi" -TAGS="file;sharing" +var_tags="file;sharing" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/gotify.sh b/ct/gotify.sh index 059f89494c1..bf1875f6e91 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Gotify" -TAGS="notification" +var_tags="notification" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/grafana.sh b/ct/grafana.sh index 1f052654336..b8edc77415e 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Grafana" -TAGS="monitoring;visualization" +var_tags="monitoring;visualization" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/grocy.sh b/ct/grocy.sh index 257b0e76bc2..b9538672665 100644 --- a/ct/grocy.sh +++ b/ct/grocy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="grocy" -TAGS="grocery;household" +var_tags="grocery;household" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/headscale.sh b/ct/headscale.sh index 53e37c38c7e..cfa1ec13db2 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Headscale" -TAGS="tailscale" +var_tags="tailscale" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/heimdall-dashboard.sh b/ct/heimdall-dashboard.sh index 6bf533417cd..8e5f6fdc378 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Heimdall-Dashboard" -TAGS="dashboard" +var_tags="dashboard" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/hivemq.sh b/ct/hivemq.sh index d423db62dbd..6f055f1dcef 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="HiveMQ" -TAGS="mqtt" +var_tags="mqtt" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/hoarder.sh b/ct/hoarder.sh index 22238e0efe2..6c66c24c52a 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Hoarder" -TAGS="bookmark" +var_tags="bookmark" var_cpu="2" var_ram="4096" var_disk="8" diff --git a/ct/homarr.sh b/ct/homarr.sh index 18d0a13256f..a3c24270e92 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Homarr" -TAGS="arr;dashboard" +var_tags="arr;dashboard" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 5b905badd1d..f5d5d0453a7 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Home Assistant-Core" -TAGS="automation;smarthome" +var_tags="automation;smarthome" var_cpu="2" var_ram="1024" var_disk="8" diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index 2ac678b8f7d..9df12ee6340 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Home Assistant" -TAGS="automation;smarthome" +var_tags="automation;smarthome" var_cpu="2" var_ram="2048" var_disk="16" diff --git a/ct/homebox.sh b/ct/homebox.sh index 121952f485c..a697366d672 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="HomeBox" -TAGS="inventory;household" +var_tags="inventory;household" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/homebridge.sh b/ct/homebridge.sh index a17c9f3cbd5..007bfc411fb 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Homebridge" -TAGS="smarthome;homekit" +var_tags="smarthome;homekit" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/homepage.sh b/ct/homepage.sh index ce4106614ce..a4c62f8b60b 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Homepage" -TAGS="dashboard" +var_tags="dashboard" var_cpu="2" var_ram="1024" var_disk="3" diff --git a/ct/homer.sh b/ct/homer.sh index 1d222e180dc..7b410241f22 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Homer" -TAGS="dashboard" +var_tags="dashboard" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/hyperhdr.sh b/ct/hyperhdr.sh index bdb79134bde..64a4ca8665c 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="HyperHDR" -TAGS="ambient lightning" +var_tags="ambient lightning" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/hyperion.sh b/ct/hyperion.sh index 8034cf1e1db..552ee49836d 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Hyperion" -TAGS="ambient lightning" +var_tags="ambient lightning" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/influxdb.sh b/ct/influxdb.sh index 11f5002fada..8d0e3cfd573 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="InfluxDB" -TAGS="database" +var_tags="database" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/inspircd.sh b/ct/inspircd.sh index 4f9c3d310cb..15bd26cdb97 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="InspIRCd" -TAGS="IRC" +var_tags="IRC" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/iobroker.sh b/ct/iobroker.sh index 9b602e9d25d..5e9f47b395e 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="ioBroker" -TAGS="automtation" +var_tags="automtation" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/iventoy.sh b/ct/iventoy.sh index 69ce6797ce1..88da21121bf 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="iVentoy" -TAGS="pxe-tool" +var_tags="pxe-tool" var_disk="2" var_cpu="1" var_ram="512" diff --git a/ct/jackett.sh b/ct/jackett.sh index d35a7042225..d55e53619b9 100644 --- a/ct/jackett.sh +++ b/ct/jackett.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Jackett" -TAGS="torrent" +var_tags="torrent" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index e39fe8f05cf..84d8e205396 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Jellyfin" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 94d2fddefbb..018384f851e 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Jellyseerr" -TAGS="media" +var_tags="media" var_cpu="4" var_ram="4096" var_disk="8" diff --git a/ct/kavita.sh b/ct/kavita.sh index 33c65071676..cb44ee2218e 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Kavita" -TAGS="reader" +var_tags="reader" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 9d4b742b799..5bc16dcb9e5 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Keycloak" -TAGS="access management" +var_tags="access management" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/kimai.sh b/ct/kimai.sh index 517be7520dc..c5a974807f6 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Kimai" -TAGS="time tracking" +var_tags="time tracking" var_cpu="2" var_ram="2048" var_disk="7" diff --git a/ct/komga.sh b/ct/komga.sh index 2f2691c1997..05ece8a67c3 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Komga" -TAGS="media;eBook;comic" +var_tags="media;eBook;comic" var_cpu="1" var_ram="2048" var_disk="4" diff --git a/ct/kubo.sh b/ct/kubo.sh index a02dd98193d..414a6e929b3 100644 --- a/ct/kubo.sh +++ b/ct/kubo.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Kubo" -TAGS="sharing" +var_tags="sharing" var_cpu="2" var_ram="4096" var_disk="4" diff --git a/ct/lazylibrarian.sh b/ct/lazylibrarian.sh index 21c4a88b02b..954bbb5992d 100644 --- a/ct/lazylibrarian.sh +++ b/ct/lazylibrarian.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="LazyLibrarian" -TAGS="eBook" +var_tags="eBook" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/lidarr.sh b/ct/lidarr.sh index 4f2dbbf296c..4ce867560e1 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Lidarr" -TAGS="arr;torrent;usenet" +var_tags="arr;torrent;usenet" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 169e157c2d2..196bc52d3c9 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Linkwarden" -TAGS="bookmark" +var_tags="bookmark" var_cpu="2" var_ram="2048" var_disk="12" diff --git a/ct/listmonk.sh b/ct/listmonk.sh index 0ccc39803ca..a2ed4716a5b 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="listmonk" -TAGS="newsletter" +var_tags="newsletter" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/lldap.sh b/ct/lldap.sh index bf7de386434..83fef11663f 100644 --- a/ct/lldap.sh +++ b/ct/lldap.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="lldap" -TAGS="ldap" +var_tags="ldap" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 33a22913b2e..9bdfbe70c67 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="LubeLogger" -TAGS="verhicle;car" +var_tags="verhicle;car" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/mafl.sh b/ct/mafl.sh index bfe79d3b620..5f0bb003064 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Mafl" -TAGS="dashboard" +var_tags="dashboard" var_cpu="2" var_ram="2048" var_disk="6" diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index a31dd39a61c..dd068fea3ec 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MagicMirror" -TAGS="smarthome" +var_tags="smarthome" var_cpu="1" var_ram="512" var_disk="3" diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 956e105bc55..52171c01004 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MariaDB" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/matterbridge.sh b/ct/matterbridge.sh index 3b68c7e19b5..103898a9185 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Matterbridge" -TAGS="matter;smarthome" +var_tags="matter;smarthome" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/mediamtx.sh b/ct/mediamtx.sh index b062ef4dd36..a823ef2a87a 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MediaMTX" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/medusa.sh b/ct/medusa.sh index a77958a2633..3978812285a 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Medusa" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="1024" var_disk="6" diff --git a/ct/memos.sh b/ct/memos.sh index 2df208be0cf..50dba058003 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Memos" -TAGS="notes" +var_tags="notes" var_cpu="2" var_ram="2048" var_disk="7" diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 07a3953a52b..fb1a9717b7b 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MeshCentral" -TAGS="remote management" +var_tags="remote management" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/metube.sh b/ct/metube.sh index 9a2ea57755b..61642a8d96b 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MeTube" -TAGS="media;youtube" +var_tags="media;youtube" var_cpu="1" var_ram="1024" var_disk="10" diff --git a/ct/mongodb.sh b/ct/mongodb.sh index b2f4b12ceb0..bd86a235e85 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MongoDB" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/motioneye.sh b/ct/motioneye.sh index 3105a4d7567..5eab31d385a 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Motioneye" -TAGS="nvr" +var_tags="nvr" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/mqtt.sh b/ct/mqtt.sh index dcec33f5ec1..335d2574278 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MQTT" -TAGS="mqtt" +var_tags="mqtt" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/mylar3.sh b/ct/mylar3.sh index 44556f41421..88816bf4c22 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Mylar3" -TAGS="torrent;downloader;comic" +var_tags="torrent;downloader;comic" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/myspeed.sh b/ct/myspeed.sh index 567f8388292..69de5d148f8 100644 --- a/ct/myspeed.sh +++ b/ct/myspeed.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MySpeed" -TAGS="tracking" +var_tags="tracking" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/mysql.sh b/ct/mysql.sh index 9218a60d8f6..e61b0a0bdb3 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MySQL" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/n8n.sh b/ct/n8n.sh index aaff50f8f7b..e12caecd79d 100644 --- a/ct/n8n.sh +++ b/ct/n8n.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="n8n" -TAGS="automation" +var_tags="automation" var_cpu="2" var_ram="2048" var_disk="6" diff --git a/ct/navidrome.sh b/ct/navidrome.sh index 1d3e40f6df8..e3c7d4656f1 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Navidrome" -TAGS="music" +var_tags="music" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/neo4j.sh b/ct/neo4j.sh index 5e5894f1513..aa37e39acfc 100644 --- a/ct/neo4j.sh +++ b/ct/neo4j.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Neo4j" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/netbox.sh b/ct/netbox.sh index fa80d901af9..bfa96d3f722 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="NetBox" -TAGS="network" +var_tags="network" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index dfef9addd6a..6aa98306db1 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="NextCloudPi" -TAGS="cloud" +var_tags="cloud" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/nextpvr.sh b/ct/nextpvr.sh index 4633d2ef58c..52ef0d31ab6 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="NextPVR" -TAGS="pvr" +var_tags="pvr" var_cpu="1" var_ram="1024" var_disk="5" diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index 5ab75058db8..179da17407f 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Nginx Proxy Manager" -TAGS="proxy" +var_tags="proxy" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/nocodb.sh b/ct/nocodb.sh index 7804ee3280f..f5a5a616a61 100644 --- a/ct/nocodb.sh +++ b/ct/nocodb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="NocoDB" -TAGS="noCode" +var_tags="noCode" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/node-red.sh b/ct/node-red.sh index 75607cecbf9..a9a615a95a2 100644 --- a/ct/node-red.sh +++ b/ct/node-red.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Node-Red" -TAGS="automation" +var_tags="automation" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index afe6be4fc05..26a94e61e70 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Notifiarr" -TAGS="arr" +var_tags="arr" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/ntfy.sh b/ct/ntfy.sh index 71375d23d4c..8be75ec3ecb 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="ntfy" -TAGS="notification" +var_tags="notification" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/nzbget.sh b/ct/nzbget.sh index 7d313785d8e..352799aa747 100644 --- a/ct/nzbget.sh +++ b/ct/nzbget.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="NZBGet" -TAGS="usenet;downloader" +var_tags="usenet;downloader" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/octoprint.sh b/ct/octoprint.sh index 9a1c74b91b7..689cbe9d912 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="OctoPrint" -TAGS="3d-printing" +var_tags="3d-printing" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/ollama.sh b/ct/ollama.sh index 1082e046cbc..604552b780b 100644 --- a/ct/ollama.sh +++ b/ct/ollama.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Ollama" -TAGS="ai" +var_tags="ai" var_cpu="4" var_ram="4096" var_disk="24" diff --git a/ct/omada.sh b/ct/omada.sh index bf73d01e691..26a26df4ad1 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Omada" -TAGS="tp-link;controller" +var_tags="tp-link;controller" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/ombi.sh b/ct/ombi.sh index 59d2c5b2969..a74a9707f40 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Ombi" -TAGS="media" +var_tags="media" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/omv.sh b/ct/omv.sh index 67ed7d2f96a..ac1a70f8588 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="OMV" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/onedev.sh b/ct/onedev.sh index 36e064bfb67..568251b8114 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="OneDev" -TAGS="git" +var_tags="git" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/openhab.sh b/ct/openhab.sh index aecc3717d52..9800efedf60 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="openHAB" -TAGS="automation" +var_tags="automation" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/openobserve.sh b/ct/openobserve.sh index b87fd8a87c3..ae73a4ed1be 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="OpenObserve" -TAGS="monitoring" +var_tags="monitoring" var_cpu="1" var_ram="512" var_disk="3" diff --git a/ct/openwebui.sh b/ct/openwebui.sh index e78ebd7de1c..7bac3e88aa6 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Open WebUI" -TAGS="ai;interface" +var_tags="ai;interface" var_cpu="4" var_ram="4096" var_disk="16" diff --git a/ct/overseerr.sh b/ct/overseerr.sh index 64a133cca26..a7245a9dbd3 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Overseerr" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/owncast.sh b/ct/owncast.sh index ed4c427e07f..3b84d64f5dc 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Owncast" -TAGS="broadcasting" +var_tags="broadcasting" var_cpu="2" var_ram="2048" var_disk="2" diff --git a/ct/pairdrop.sh b/ct/pairdrop.sh index 61a5f512824..b3f6f57a0ac 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PairDrop" -TAGS="sharing" +var_tags="sharing" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index efeed56d544..3a641f3eff8 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Paperless-ngx" -TAGS="document;management" +var_tags="document;management" var_cpu="2" var_ram="2048" var_disk="10" diff --git a/ct/pbs.sh b/ct/pbs.sh index d71558653b4..d392e1635fd 100644 --- a/ct/pbs.sh +++ b/ct/pbs.sh @@ -17,7 +17,7 @@ EOF } header_info APP="PBS" -TAGS="backup" +var_tags="backup" var_cpu="2" var_ram="2048" var_disk="10" diff --git a/ct/peanut.sh b/ct/peanut.sh index 30951588135..7dedccd785a 100644 --- a/ct/peanut.sh +++ b/ct/peanut.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PeaNUT" -TAGS="network;ups;" +var_tags="network;ups;" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/petio.sh b/ct/petio.sh index fbd22f93945..13a72946437 100644 --- a/ct/petio.sh +++ b/ct/petio.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Petio" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/photoprism.sh b/ct/photoprism.sh index f23aa0eec10..4762fd83f45 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PhotoPrism" -TAGS="media;photo" +var_tags="media;photo" var_cpu="2" var_ram="3072" var_disk="8" diff --git a/ct/pialert.sh b/ct/pialert.sh index ac9feeab235..ef6ebdd0b3a 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PiAlert" -TAGS="network" +var_tags="network" var_cpu="1" var_ram="512" var_disk="3" diff --git a/ct/pihole.sh b/ct/pihole.sh index 66489f23523..9947f8d8737 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Pihole" -TAGS="adblock" +var_tags="adblock" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/pingvin.sh b/ct/pingvin.sh index 7e21fbfd7d7..53bd0aa2210 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Pingvin" -TAGS="sharing" +var_tags="sharing" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/plex.sh b/ct/plex.sh index 8d228e2d97a..413a7e65f21 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Plex" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 24f2e20d807..986e20f692d 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Pocketbase" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="512" var_disk="8" diff --git a/ct/podman-homeassistant.sh b/ct/podman-homeassistant.sh index fee6ae44961..05925edd615 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Podman-Home Assistant" -TAGS="podman;smarthome" +var_tags="podman;smarthome" var_cpu="2" var_ram="2048" var_disk="16" diff --git a/ct/podman.sh b/ct/podman.sh index 0fa863b8462..cdc63cd65d0 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Podman" -TAGS="container;kubernetes" +var_tags="container;kubernetes" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/postgresql.sh b/ct/postgresql.sh index c698ec8d60c..72f567a14e9 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="PostgreSQL" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/prometheus.sh b/ct/prometheus.sh index 24cb6c30f62..62c7cd3e0f5 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Prometheus" -TAGS="monitoring" +var_tags="monitoring" var_cpu="1" var_ram="2048" var_disk="4" diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index 5e40ccbb7ae..a8b32963e5a 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Prowlarr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index be4ad394420..7b6d95d90e4 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="qBittorrent" -TAGS="torrent" +var_tags="torrent" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/rabbitmq.sh b/ct/rabbitmq.sh index 9dea1377981..70ab8742307 100644 --- a/ct/rabbitmq.sh +++ b/ct/rabbitmq.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="RabbitMQ" -TAGS="mqtt" +var_tags="mqtt" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/radarr.sh b/ct/radarr.sh index 52e757d842c..f4aa3b4c2b3 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Radarr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index bec68f47d4a..fa5be48562f 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="RDTClient" -TAGS="torrent" +var_tags="torrent" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/readarr.sh b/ct/readarr.sh index f7f88fc81ba..96d625dcff8 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Readarr" -TAGS="media;comic;eBook" +var_tags="media;comic;eBook" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/readeck.sh b/ct/readeck.sh index 1148cbe4a59..69f29ba370c 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Readeck" -TAGS="bookmark" +var_tags="bookmark" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index af41908be64..5063ec2fe0e 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Recyclarr" -TAGS="arr" +var_tags="arr" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/redis.sh b/ct/redis.sh index 3a089ff1c4d..6b64f9b7c62 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Redis" -TAGS="database" +var_tags="database" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/rtsptoweb.sh b/ct/rtsptoweb.sh index ccb954f563d..9b85efc416b 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="RTSPtoWeb" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/runtipi.sh b/ct/runtipi.sh index 0942e69b00c..641c0236214 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Runtipi" -TAGS="os" +var_tags="os" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 0ffaabd7e45..1ef4edada57 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="SABnzbd" -TAGS="downloader" +var_tags="downloader" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/sftpgo.sh b/ct/sftpgo.sh index 136349012ed..3e9f7b14d9a 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="SFTPGo" -TAGS="ftp;sftp" +var_tags="ftp;sftp" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/shinobi.sh b/ct/shinobi.sh index 58bf134c98c..de34210a38b 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Shinobi" -TAGS="nvr" +var_tags="nvr" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/smokeping.sh b/ct/smokeping.sh index 44544ea8d73..4e7473abb28 100644 --- a/ct/smokeping.sh +++ b/ct/smokeping.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="SmokePing" -TAGS="network" +var_tags="network" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 6591f98dbbe..506e14cb12f 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="SnipeIT" -TAGS="assat-management;foss" +var_tags="assat-management;foss" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/sonarr.sh b/ct/sonarr.sh index e0a117c6e9f..80e3714bc2a 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Sonarr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/spoolman.sh b/ct/spoolman.sh index 35c371f5dc5..4ddf5a7325c 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Spoolman" -TAGS="3d-printing" +var_tags="3d-printing" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/stirling-pdf.sh b/ct/stirling-pdf.sh index c728c12f124..67acd496c5e 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Stirling-PDF" -TAGS="pdf-editor" +var_tags="pdf-editor" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/syncthing.sh b/ct/syncthing.sh index 224b1cde78f..8a685620175 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Syncthing" -TAGS="sync" +var_tags="sync" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 41f97742c85..0a449c22d5c 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Tandoor" -TAGS="recipes" +var_tags="recipes" var_cpu="4" var_ram="4096" var_disk="10" diff --git a/ct/tasmoadmin.sh b/ct/tasmoadmin.sh index e09b3bd7d97..dae77094651 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="TasmoAdmin" -TAGS="tasmota;smarthome" +var_tags="tasmota;smarthome" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/tautulli.sh b/ct/tautulli.sh index 1a1eb7c4a66..934131c98e2 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Tautulli" -TAGS="media" +var_tags="media" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/tdarr.sh b/ct/tdarr.sh index 7a5eeeb1a93..c69f2281e09 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Tdarr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/technitiumdns.sh b/ct/technitiumdns.sh index b786b5f99a0..73920a2ee14 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Technitium DNS" -TAGS="dns" +var_tags="dns" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/the-lounge.sh b/ct/the-lounge.sh index b941f888acf..ea854774637 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="The-Lounge" -TAGS="irc" +var_tags="irc" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/threadfin.sh b/ct/threadfin.sh index 65dd715ac24..bb3bc894171 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Threadfin" -TAGS="media" +var_tags="media" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/tianji.sh b/ct/tianji.sh index 6479c17ff1e..f2882924a53 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Tianji" -TAGS="monitoring" +var_tags="monitoring" var_cpu="4" var_ram="4096" var_disk="12" diff --git a/ct/traccar.sh b/ct/traccar.sh index f3a2d2d3f8a..c8bf88b2632 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Traccar" -TAGS="gps;tracker" +var_tags="gps;tracker" var_cpu="1" var_ram="1024" var_disk="2" diff --git a/ct/traefik.sh b/ct/traefik.sh index 82e1a025694..877943159ae 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Traefik" -TAGS="proxy" +var_tags="proxy" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/transmission.sh b/ct/transmission.sh index 12afb2d10e4..ea05ec43804 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Transmission" -TAGS="torrent" +var_tags="torrent" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/trilium.sh b/ct/trilium.sh index 9fc950c1936..f65702742a9 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Trilium" -TAGS="notes" +var_tags="notes" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index 0ab070e0211..86ac38615bd 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -8,7 +8,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values echo -e "Loading..." APP="Ubuntu" -TAGS="os" +var_tags="os" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/umami.sh b/ct/umami.sh index ac1ed698562..592c7e8df30 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Umami" -TAGS="analytics" +var_tags="analytics" var_cpu="2" var_ram="2048" var_disk="12" diff --git a/ct/umbrel.sh b/ct/umbrel.sh index a336995c171..4a5b0739c35 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Umbrel" -TAGS="os" +var_tags="os" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/unbound.sh b/ct/unbound.sh index abc9bba5bba..a8bd86513f9 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Unbound" -TAGS="dns" +var_tags="dns" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/unifi.sh b/ct/unifi.sh index 45af19a20c8..0805320fa85 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Unifi" -TAGS="network;controller;unifi" +var_tags="network;controller;unifi" var_cpu="2" var_ram="2048" var_disk="8" diff --git a/ct/unmanic.sh b/ct/unmanic.sh index 7b7d7a9456e..02c53c6828a 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Unmanic" -TAGS="file;media" +var_tags="file;media" var_cpu="2" var_ram="2048" var_disk="4" diff --git a/ct/uptimekuma.sh b/ct/uptimekuma.sh index 900f988d96f..7c92b4aee60 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Uptime Kuma" -TAGS="analytics;monitoring" +var_tags="analytics;monitoring" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index 9bc744c524a..3d0f30841a2 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Vaultwarden" -TAGS="password-manager" +var_tags="password-manager" var_cpu="4" var_ram="6144" var_disk="6" diff --git a/ct/vikunja.sh b/ct/vikunja.sh index 508d2d4b9ff..7109494444e 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Vikunja" -TAGS="todo-app" +var_tags="todo-app" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/wallos.sh b/ct/wallos.sh index 34fec89c164..0e06c8e1d76 100644 --- a/ct/wallos.sh +++ b/ct/wallos.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Wallos" -TAGS="finance" +var_tags="finance" var_cpu="1" var_ram="1024" var_disk="5" diff --git a/ct/wastebin.sh b/ct/wastebin.sh index 2bdf5ab8681..f0c37343e33 100644 --- a/ct/wastebin.sh +++ b/ct/wastebin.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Wastebin" -TAGS="file;code" +var_tags="file;code" var_cpu="1" var_ram="1024" var_disk="4" diff --git a/ct/watchyourlan.sh b/ct/watchyourlan.sh index c38355a0cd2..e79dc367096 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="WatchYourLAN" -TAGS="network" +var_tags="network" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/wavelog.sh b/ct/wavelog.sh index 59a5b8f6f1b..1d1c55a9b2e 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Wavelog" -TAGS="radio-logging" +var_tags="radio-logging" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/whisparr.sh b/ct/whisparr.sh index ce446adbbcf..be18bff9cb4 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Whisparr" -TAGS="arr" +var_tags="arr" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/whoogle.sh b/ct/whoogle.sh index 189d7f94acf..f7e5b887c34 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Whoogle" -TAGS="network;seaching" +var_tags="network;seaching" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/wikijs.sh b/ct/wikijs.sh index f3a86aceb78..acec35dfd96 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Wikijs" -TAGS="wiki" +var_tags="wiki" var_cpu="1" var_ram="512" var_disk="3" diff --git a/ct/wireguard.sh b/ct/wireguard.sh index 46ca605d553..7fce847e0c8 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Wireguard" -TAGS="network;vpn" +var_tags="network;vpn" var_cpu="1" var_ram="512" var_disk="4" diff --git a/ct/yunohost.sh b/ct/yunohost.sh index 84724f906dc..fbd1e8a1d0c 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="YunoHost" -TAGS="os" +var_tags="os" var_cpu="2" var_ram="2048" var_disk="20" diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 8112640aff9..79139f90288 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Zabbix" -TAGS="monitoring" +var_tags="monitoring" var_cpu="2" var_ram="4096" var_disk="6" diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 58d8dbe74e5..c5ba5ef2b9c 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Zigbee2MQTT" -TAGS="smarthome;zigbee;mqtt" +var_tags="smarthome;zigbee;mqtt" var_cpu="2" var_ram="1024" var_disk="4" diff --git a/ct/zipline.sh b/ct/zipline.sh index c82c531277e..b6dfcf94b59 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Zipline" -TAGS="file;sharing" +var_tags="file;sharing" var_cpu="2" var_ram="2048" var_disk="5" diff --git a/ct/zoraxy.sh b/ct/zoraxy.sh index b9be8b7bfa4..71e9c12b48a 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Zoraxy" -TAGS="network" +var_tags="network" var_cpu="2" var_ram="2048" var_disk="6" diff --git a/ct/zwave-js-ui.sh b/ct/zwave-js-ui.sh index 91c8b99a7e3..9c25a90ad29 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Zwave-JS-UI" -TAGS="smarthome;zwave" +var_tags="smarthome;zwave" var_cpu="2" var_ram="1024" var_disk="4" From b78a919b41450332832d7696803abb0213d9b295 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:33:14 +0100 Subject: [PATCH 045/286] Update CHANGELOG.md (#840) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index beafe97e765..e1534099029 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,8 +22,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 💥 Breaking Changes -- Update ALL CT's to new default (Part 2) [@MickLesk](https://github.com/MickLesk) ([#710](https://github.com/community-scripts/ProxmoxVE/pull/710)) - Massive Update: build.func | install.func | create_lxc.sh (Part 1) [@MickLesk](https://github.com/MickLesk) ([#643](https://github.com/community-scripts/ProxmoxVE/pull/643)) +- Update ALL CT's to new default (Part 2) [@MickLesk](https://github.com/MickLesk) ([#710](https://github.com/community-scripts/ProxmoxVE/pull/710)) ## 2024-12-13 From b547530643b85f4cf5f830f3710c81c61d435417 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:33:34 +0100 Subject: [PATCH 046/286] Increase Size | Description & Download-URL of Debian VM (#837) * Update debian-vm.sh * Update debian-vm.json --- json/debian-vm.json | 4 ++-- vm/debian-vm.sh | 44 +++++++++++++++++++++++++++++++++++--------- 2 files changed, 37 insertions(+), 11 deletions(-) diff --git a/json/debian-vm.json b/json/debian-vm.json index 99b3069e0bc..acd0f1e6ebc 100644 --- a/json/debian-vm.json +++ b/json/debian-vm.json @@ -20,7 +20,7 @@ "resources": { "cpu": 2, "ram": 2048, - "hdd": 2, + "hdd": 4, "os": null, "version": null } @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} diff --git a/vm/debian-vm.sh b/vm/debian-vm.sh index 2246f4fcda6..92884abf941 100644 --- a/vm/debian-vm.sh +++ b/vm/debian-vm.sh @@ -370,7 +370,7 @@ fi msg_ok "Using ${CL}${BL}$STORAGE${CL} ${GN}for Storage Location." msg_ok "Virtual Machine ID is ${CL}${BL}$VMID${CL}." msg_info "Retrieving the URL for the Debian 12 Qcow2 Disk Image" -URL=https://cloud.debian.org/images/cloud/bookworm/20240507-1740/debian-12-nocloud-amd64-20240507-1740.qcow2 +URL=https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-nocloud-amd64.qcow2 sleep 2 msg_ok "${CL}${BL}${URL}${CL}" wget -q --show-progress $URL @@ -409,13 +409,39 @@ qm set $VMID \ -efidisk0 ${DISK0_REF}${FORMAT} \ -scsi0 ${DISK1_REF},${DISK_CACHE}${THIN}size=2G \ -boot order=scsi0 \ - -serial0 socket \ - -description "
- - # Debian 12 VM - - -
" >/dev/null + -serial0 socket >/dev/null +qm resize $VMID scsi0 4G >/dev/null + DESCRIPTION=$(cat < + + Logo + + +

Debian VM

+ +

+ + spend Coffee + +

+ + + + GitHub + + + + Discussions + + + + Issues + + +EOF +) + qm set "$VMID" -description "$DESCRIPTION" >/dev/null + msg_ok "Created a Debian 12 VM ${CL}${BL}(${HN})" if [ "$START_VM" == "yes" ]; then msg_info "Starting Debian 12 VM" @@ -423,4 +449,4 @@ if [ "$START_VM" == "yes" ]; then msg_ok "Started Debian 12 VM" fi msg_ok "Completed Successfully!\n" -echo "More Info at https://github.com/tteck/Proxmox/discussions/1988" +echo "More Info at https://github.com/community-scripts/ProxmoxVE/discussions/836" From 284238d1096b2d0896747adcfd404c3a712c5ef4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:35:52 +0100 Subject: [PATCH 047/286] Update CHANGELOG.md (#842) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e1534099029..26eea7dfc8e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - Massive Update: build.func | install.func | create_lxc.sh (Part 1) [@MickLesk](https://github.com/MickLesk) ([#643](https://github.com/community-scripts/ProxmoxVE/pull/643)) - Update ALL CT's to new default (Part 2) [@MickLesk](https://github.com/MickLesk) ([#710](https://github.com/community-scripts/ProxmoxVE/pull/710)) +### 🚀 Updated Scripts + +- Increase Size | Description & Download-URL of Debian VM [@MickLesk](https://github.com/MickLesk) ([#837](https://github.com/community-scripts/ProxmoxVE/pull/837)) + ## 2024-12-13 ### Changed From a00f7af0d2cecbeb5cf088c2d8f14f240d9172b9 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:47:16 +0100 Subject: [PATCH 048/286] New Script: LXC IP-Tag (#536) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * New Script: LXC IP-Tag * add comma in json * Update misc/add-lxc-iptag.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update json/add-lxc-iptag.json Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update json/add-lxc-iptag.json Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * remove files * Full-Update to Single-File * Finalo * Update add-lxc-iptag.json --------- Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> --- json/add-lxc-iptag.json | 43 +++++ misc/add-lxc-iptag.sh | 351 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 394 insertions(+) create mode 100644 json/add-lxc-iptag.json create mode 100644 misc/add-lxc-iptag.sh diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json new file mode 100644 index 00000000000..1657a0acbf3 --- /dev/null +++ b/json/add-lxc-iptag.json @@ -0,0 +1,43 @@ +{ + "name": "Proxmox VE LXC IP-Tag", + "slug": "add-lxc-iptag", + "categories": [ + 1 + ], + "date_created": "2024-11-27", + "type": "misc", + "updateable": false, + "privileged": false, + "interface_port": null, + "documentation": null, + "website": null, + "logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/proxmoxve/icon.png", + "description": "This script automatically adds IP address as tags to LXC containers using a Systemd service. The service also updates the tags if a LXC IP address is changed.", + "install_methods": [ + { + "type": "default", + "script": "misc/add-lxc-iptag.sh", + "resources": { + "cpu": null, + "ram": null, + "hdd": null, + "os": null, + "version": null + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Execute within the Proxmox shell", + "type": "Info" + }, + { + "text": "Configuration: `nano /opt/lxc-iptag/iptag.conf`. iptag.service must be restarted after change.", + "type": "Info" + } + ] +} diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh new file mode 100644 index 00000000000..093faaa7f60 --- /dev/null +++ b/misc/add-lxc-iptag.sh @@ -0,0 +1,351 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: MickLesk (Canbiz) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/gitsang/lxc-iptag + +function header_info { + clear + cat <<"EOF" + __ _ ________ ________ ______ + / / | |/ / ____/ / _/ __ \ /_ __/___ _____ _ + / / | / / / // /_/ /_____/ / / __ `/ __ `/ + / /___/ / /___ _/ // ____/_____/ / / /_/ / /_/ / +/_____/_/|_\____/ /___/_/ /_/ \__,_/\__, / + /____/ +EOF +} + +clear +header_info +APP="LXC IP-Tag" +hostname=$(hostname) + +# Farbvariablen +YW=$(echo "\033[33m") +GN=$(echo "\033[1;92m") +RD=$(echo "\033[01;31m") +CL=$(echo "\033[m") +BFR="\\r\\033[K" +HOLD=" " +CM=" ✔️ ${CL}" +CROSS=" ✖️ ${CL}" + +# This function enables error handling in the script by setting options and defining a trap for the ERR signal. +catch_errors() { + set -Eeuo pipefail + trap 'error_handler $LINENO "$BASH_COMMAND"' ERR +} + +# This function is called when an error occurs. It receives the exit code, line number, and command that caused the error, and displays an error message. +error_handler() { + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + printf "\e[?25h" + local exit_code="$?" + local line_number="$1" + local command="$2" + local error_message="${RD}[ERROR]${CL} in line ${RD}$line_number${CL}: exit code ${RD}$exit_code${CL}: while executing command ${YW}$command${CL}" + echo -e "\n$error_message\n" +} + +spinner() { + local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') + local spin_i=0 + local interval=0.1 + printf "\e[?25l" + local orange="\e[38;5;214m" + + while true; do + printf "\r ${orange}%s\e[0m " "${frames[spin_i]}" + spin_i=$(( (spin_i + 1) % ${#frames[@]} )) + sleep "$interval" + done +} + +# This function displays an informational message with a yellow color. +msg_info() { + local msg="$1" + echo -ne " ${HOLD} ${YW}${msg} " + spinner & + SPINNER_PID=$! +} + +# This function displays a success message with a green color. +msg_ok() { + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + printf "\e[?25h" + local msg="$1" + echo -e "${BFR}${CM} ${GN}${msg}${CL}" +} + +# This function displays a error message with a red color. +msg_error() { + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + printf "\e[?25h" + local msg="$1" + echo -e "${BFR}${CROSS} ${RD}${msg}${CL}" +} + +while true; do + read -p "This will install ${APP} on ${hostname}. Proceed? (y/n): " yn + case $yn in + [Yy]*) break ;; + [Nn]*) msg_info "Installation cancelled."; exit ;; + *) msg_info "Please answer yes or no." ;; + esac +done + +if ! pveversion | grep -Eq "pve-manager/8.[0-3]"; then + msg_error "This version of Proxmox Virtual Environment is not supported" + msg_error "⚠️ Requires Proxmox Virtual Environment Version 8.0 or later." + msg_error "Exiting..." + sleep 2 + exit +fi + +FILE_PATH="/usr/local/bin/iptag" +if [[ -f "$FILE_PATH" ]]; then + msg_info "The file already exists: '$FILE_PATH'. Skipping installation." + exit 0 +fi + +msg_info "Installing Dependencies" +apt-get update &>/dev/null +apt-get install -y ipcalc net-tools &>/dev/null +msg_ok "Installed Dependencies" + +msg_info "Setting up IP-Tag Scripts" +mkdir -p /opt/lxc-iptag + +msg_info "Setup Default Config" +if [[ ! -f /opt/lxc-iptag/iptag.conf ]]; then + cat < /opt/lxc-iptag/iptag.conf +# Configuration file for LXC IP tagging + +# List of allowed CIDRs +CIDR_LIST=( + 192.168.0.0/16 + 100.64.0.0/10 + 10.0.0.0/8 +) + +# Interval settings (in seconds) +LOOP_INTERVAL=60 +FW_NET_INTERFACE_CHECK_INTERVAL=60 +LXC_STATUS_CHECK_INTERVAL=-1 +FORCE_UPDATE_INTERVAL=1800 +EOF + msg_ok "Setup default config" +else + msg_ok "Default config already exists" +fi + +msg_info "Setup Main Function" +if [[ ! -f /opt/lxc-iptag/iptag ]]; then + cat <<'EOF' > /opt/lxc-iptag/iptag +#!/bin/bash + +# =============== CONFIGURATION =============== # + +CONFIG_FILE="/opt/lxc-iptag/iptag.conf" + +# Load the configuration file if it exists +if [ -f "$CONFIG_FILE" ]; then + # shellcheck source=./lxc-iptag.conf + source "$CONFIG_FILE" +fi + +# Convert IP to integer for comparison +ip_to_int() { + local ip="${1}" + local a b c d + + IFS=. read -r a b c d <<< "${ip}" + echo "$((a << 24 | b << 16 | c << 8 | d))" +} + +# Check if IP is in CIDR +ip_in_cidr() { + local ip="${1}" + local cidr="${2}" + + ip_int=$(ip_to_int "${ip}") + netmask_int=$(ip_to_int "$(ipcalc -b "${cidr}" | grep Broadcast | awk '{print $2}')") + masked_ip_int=$(( "${ip_int}" & "${netmask_int}" )) + [[ ${ip_int} -eq ${masked_ip_int} ]] && return 0 || return 1 +} + +# Check if IP is in any CIDRs +ip_in_cidrs() { + local ip="${1}" + local cidrs=() + + mapfile -t cidrs < <(echo "${2}" | tr ' ' '\n') + for cidr in "${cidrs[@]}"; do + ip_in_cidr "${ip}" "${cidr}" && return 0 + done + + return 1 +} + +# Check if IP is valid +is_valid_ipv4() { + local ip=$1 + local regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" + + if [[ $ip =~ $regex ]]; then + IFS='.' read -r -a parts <<< "$ip" + for part in "${parts[@]}"; do + if ! [[ $part =~ ^[0-9]+$ ]] || ((part < 0 || part > 255)); then + return 1 + fi + done + return 0 + else + return 1 + fi +} + +lxc_status_changed() { + current_lxc_status=$(pct list 2>/dev/null) + if [ "${last_lxc_status}" == "${current_lxc_status}" ]; then + return 1 + else + last_lxc_status="${current_lxc_status}" + return 0 + fi +} + +fw_net_interface_changed() { + current_net_interface=$(ifconfig | grep "^fw") + if [ "${last_net_interface}" == "${current_net_interface}" ]; then + return 1 + else + last_net_interface="${current_net_interface}" + return 0 + fi +} + +# =============== MAIN =============== # + +update_lxc_iptags() { + vmid_list=$(pct list 2>/dev/null | grep -v VMID | awk '{print $1}') + for vmid in ${vmid_list}; do + last_tagged_ips=() + current_valid_ips=() + next_tags=() + + # Parse current tags + mapfile -t current_tags < <(pct config "${vmid}" | grep tags | awk '{print $2}' | sed 's/;/\n/g') + for current_tag in "${current_tags[@]}"; do + if is_valid_ipv4 "${current_tag}"; then + last_tagged_ips+=("${current_tag}") + continue + fi + next_tags+=("${current_tag}") + done + + # Get current IPs + current_ips_full=$(lxc-info -n "${vmid}" -i | awk '{print $2}') + for ip in ${current_ips_full}; do + if is_valid_ipv4 "${ip}" && ip_in_cidrs "${ip}" "${CIDR_LIST[*]}"; then + current_valid_ips+=("${ip}") + next_tags+=("${ip}") + fi + done + + # Skip if no ip change + if [[ "$(echo "${last_tagged_ips[@]}" | tr ' ' '\n' | sort -u)" == "$(echo "${current_valid_ips[@]}" | tr ' ' '\n' | sort -u)" ]]; then + echo "Skipping ${vmid} cause ip no changes" + continue + fi + + # Set tags + echo "Setting ${vmid} tags from ${current_tags[*]} to ${next_tags[*]}" + pct set "${vmid}" -tags "$(IFS=';'; echo "${next_tags[*]}")" + done +} + +check() { + current_time=$(date +%s) + + time_since_last_lxc_status_check=$((current_time - last_lxc_status_check_time)) + if [[ "${LXC_STATUS_CHECK_INTERVAL}" -gt 0 ]] \ + && [[ "${time_since_last_lxc_status_check}" -ge "${STATUS_CHECK_INTERVAL}" ]]; then + echo "Checking lxc status..." + last_lxc_status_check_time=${current_time} + if lxc_status_changed; then + update_lxc_iptags + last_update_time=${current_time} + return + fi + fi + + time_since_last_fw_net_interface_check=$((current_time - last_fw_net_interface_check_time)) + if [[ "${FW_NET_INTERFACE_CHECK_INTERVAL}" -gt 0 ]] \ + && [[ "${time_since_last_fw_net_interface_check}" -ge "${FW_NET_INTERFACE_CHECK_INTERVAL}" ]]; then + echo "Checking fw net interface..." + last_fw_net_interface_check_time=${current_time} + if fw_net_interface_changed; then + update_lxc_iptags + last_update_time=${current_time} + return + fi + fi + + time_since_last_update=$((current_time - last_update_time)) + if [ ${time_since_last_update} -ge ${FORCE_UPDATE_INTERVAL} ]; then + echo "Force updating lxc iptags..." + update_lxc_iptags + last_update_time=${current_time} + return + fi +} + +# main: Set the IP tags for all LXC containers +main() { + while true; do + check + sleep "${LOOP_INTERVAL}" + done +} + +main +EOF + msg_ok "Setup Main Function" +else + msg_ok "Main Function already exists" +fi +chmod +x /opt/lxc-iptag/iptag + +msg_info "Creating Service" +if [[ ! -f /lib/systemd/system/iptag.service ]]; then + echo "Systemd service file not found. Creating it now..." + cat < /lib/systemd/system/iptag.service +[Unit] +Description=LXC IP-Tag service +After=network.target + +[Service] +Type=simple +ExecStart=/opt/lxc-iptag/iptag +Restart=always + +[Install] +WantedBy=multi-user.target +EOF + msg_ok "Created Service" +else + msg_ok "Service already exists." +fi + +msg_ok "Setup IP-Tag Scripts" + +msg_info "Starting Service" +systemctl daemon-reload &>/dev/null +systemctl enable -q --now iptag.service &>/dev/null +msg_ok "Started Service" + +echo -e "\n${APP} installation completed successfully! ${CL}\n" From 357f5bcdb6814f0e2982bb7181229a3879d3d766 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:48:15 +0100 Subject: [PATCH 049/286] Update CHANGELOG.md (#843) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 26eea7dfc8e..efd2dfdfb84 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - Massive Update: build.func | install.func | create_lxc.sh (Part 1) [@MickLesk](https://github.com/MickLesk) ([#643](https://github.com/community-scripts/ProxmoxVE/pull/643)) - Update ALL CT's to new default (Part 2) [@MickLesk](https://github.com/MickLesk) ([#710](https://github.com/community-scripts/ProxmoxVE/pull/710)) +### ✨ New Scripts + +- New Script: LXC IP-Tag [@MickLesk](https://github.com/MickLesk) ([#536](https://github.com/community-scripts/ProxmoxVE/pull/536)) + ### 🚀 Updated Scripts - Increase Size | Description & Download-URL of Debian VM [@MickLesk](https://github.com/MickLesk) ([#837](https://github.com/community-scripts/ProxmoxVE/pull/837)) From 49d8ed135c486be8fbc95472d14de5c247158b2e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:49:32 +0100 Subject: [PATCH 050/286] Update add-lxc-iptag.json --- json/add-lxc-iptag.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json index 1657a0acbf3..244d9d13045 100644 --- a/json/add-lxc-iptag.json +++ b/json/add-lxc-iptag.json @@ -4,7 +4,7 @@ "categories": [ 1 ], - "date_created": "2024-11-27", + "date_created": "2024-12-16", "type": "misc", "updateable": false, "privileged": false, From 6f2e0dfde9654c5577961364428db417e3148b40 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 04:55:03 -0800 Subject: [PATCH 051/286] Bump nanoid from 3.3.7 to 3.3.8 in /frontend (#845) --- frontend/package-lock.json | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0fc06b891fa..36ec168b76e 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -3187,7 +3187,7 @@ "version": "19.0.0-rc.1", "resolved": "https://registry.npmjs.org/types-react/-/types-react-19.0.0-rc.1.tgz", "integrity": "sha512-RshndUfqTW6K3STLPis8BtAYCGOkMbtvYsi90gmVNDZBXUyUc5juf2PE9LfS/JmOlUIRO8cWTS/1MTnmhjDqyQ==", - "dev": true, + "devOptional": true, "dependencies": { "csstype": "^3.0.2" } @@ -3197,7 +3197,7 @@ "version": "19.0.0-rc.1", "resolved": "https://registry.npmjs.org/types-react-dom/-/types-react-dom-19.0.0-rc.1.tgz", "integrity": "sha512-VSLZJl8VXCD0fAWp7DUTFUDCcZ8DVXOQmjhJMD03odgeFmu14ZQJHCXeETm3BEAhJqfgJaFkLnGkQv88sRx0fQ==", - "dev": true, + "devOptional": true, "dependencies": { "@types/react": "*" } @@ -7080,16 +7080,15 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -7768,7 +7767,6 @@ "version": "3.3.3", "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", - "dev": true, "license": "MIT", "bin": { "prettier": "bin/prettier.cjs" @@ -9415,7 +9413,6 @@ "version": "5.6.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", - "dev": true, "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", From 826482897aaaf2522d1776b9eab3ebe4c8f49ba4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:07:16 +0100 Subject: [PATCH 052/286] Update CHANGELOG.md (#846) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index efd2dfdfb84..604276ceed3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,10 @@ Do not break established syntax in this file, as it is automatically updated by - Increase Size | Description & Download-URL of Debian VM [@MickLesk](https://github.com/MickLesk) ([#837](https://github.com/community-scripts/ProxmoxVE/pull/837)) +### 🌐 Website + +- Bump nanoid from 3.3.7 to 3.3.8 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#845](https://github.com/community-scripts/ProxmoxVE/pull/845)) + ## 2024-12-13 ### Changed From 9fc81e49e42bada7c338cf5939288525d47c3e65 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:29:51 +0100 Subject: [PATCH 053/286] Update Script: Remove Docker Compose Question (#847) --- install/docker-install.sh | 9 --------- 1 file changed, 9 deletions(-) diff --git a/install/docker-install.sh b/install/docker-install.sh index 70ebcebe05e..b22e148686b 100644 --- a/install/docker-install.sh +++ b/install/docker-install.sh @@ -62,15 +62,6 @@ else msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION" fi fi -read -r -p "Would you like to add Docker Compose? " prompt -if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then - msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION" - DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker} - mkdir -p $DOCKER_CONFIG/cli-plugins - curl -sSL https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_LATEST_VERSION/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose - chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose - msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION" -fi motd_ssh customize From 7357c1c146fd65f562af4561a142cccb0a317983 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:32:00 +0100 Subject: [PATCH 054/286] Update CHANGELOG.md (#848) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 604276ceed3..4f5727e55ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update Script: Remove Docker Compose Question [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#847](https://github.com/community-scripts/ProxmoxVE/pull/847)) - Increase Size | Description & Download-URL of Debian VM [@MickLesk](https://github.com/MickLesk) ([#837](https://github.com/community-scripts/ProxmoxVE/pull/837)) ### 🌐 Website From e410bdbf5e64ee74d72f2e7d79155725cbb705dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20B=C3=A9dard-Couture?= Date: Mon, 16 Dec 2024 12:21:41 -0500 Subject: [PATCH 055/286] Keeps the same style after writing the SEARCH icon (#851) --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 82dcacf9bd8..6aa9c9f1528 100644 --- a/misc/build.func +++ b/misc/build.func @@ -611,7 +611,7 @@ install_script() { ;; 2) header_info - echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings (${SEARCH} Verbose)${CL}" + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings (${SEARCH}${BOLD}${BL} Verbose)${CL}" VERB="yes" base_settings "$VERB" echo_default From f449ca707a9b518b07fee740dbe4a8b27c0c2318 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 18:23:38 +0100 Subject: [PATCH 056/286] Update CHANGELOG.md (#852) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4f5727e55ef..a51fefccfef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,13 +31,17 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Update Script: Remove Docker Compose Question [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#847](https://github.com/community-scripts/ProxmoxVE/pull/847)) - Increase Size | Description & Download-URL of Debian VM [@MickLesk](https://github.com/MickLesk) ([#837](https://github.com/community-scripts/ProxmoxVE/pull/837)) +- Update Script: Remove Docker Compose Question [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#847](https://github.com/community-scripts/ProxmoxVE/pull/847)) ### 🌐 Website - Bump nanoid from 3.3.7 to 3.3.8 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#845](https://github.com/community-scripts/ProxmoxVE/pull/845)) +### ❔ Unlabelled + +- Keeps the same style after writing the SEARCH icon [@remz1337](https://github.com/remz1337) ([#851](https://github.com/community-scripts/ProxmoxVE/pull/851)) + ## 2024-12-13 ### Changed From db1950a2bbd9a051de0b7d006a27e16297140838 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20B=C3=A9dard-Couture?= Date: Mon, 16 Dec 2024 16:41:01 -0500 Subject: [PATCH 057/286] Fix variable name for CT_TYPE override (#855) --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 6aa9c9f1528..c43ef21ca08 100644 --- a/misc/build.func +++ b/misc/build.func @@ -204,7 +204,7 @@ base_settings() { TAGS="community-script;" # Override default settings with variables from ct script - CT_TYPE=${var_privileged:-$CT_TYPE} + CT_TYPE=${var_unprivileged:-$CT_TYPE} DISK_SIZE=${var_disk:-$DISK_SIZE} CORE_COUNT=${var_cpu:-$CORE_COUNT} RAM_SIZE=${var_ram:-$RAM_SIZE} From 5b3844810763ec5e3289c61dfd91d8ca453adfb0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 22:43:48 +0100 Subject: [PATCH 058/286] Update CHANGELOG.md (#856) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a51fefccfef..3c0a594938d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ❔ Unlabelled +- Fix variable name for CT_TYPE override [@remz1337](https://github.com/remz1337) ([#855](https://github.com/community-scripts/ProxmoxVE/pull/855)) - Keeps the same style after writing the SEARCH icon [@remz1337](https://github.com/remz1337) ([#851](https://github.com/community-scripts/ProxmoxVE/pull/851)) ## 2024-12-13 From 9256880c9f692e011b5ae056a2a6304dd1639ba1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5vard=20Gj=C3=B8by=20Thom?= <34199185+havardthom@users.noreply.github.com> Date: Mon, 16 Dec 2024 23:43:32 +0100 Subject: [PATCH 059/286] Fix SSH root access in install.func (#858) --- misc/install.func | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/misc/install.func b/misc/install.func index d701fdfb341..24f752a4894 100644 --- a/misc/install.func +++ b/misc/install.func @@ -231,6 +231,11 @@ motd_ssh() { # Disable default MOTD scripts chmod -x /etc/update-motd.d/* + + if [[ "${SSH_ROOT}" == "yes" ]]; then + sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config + systemctl restart sshd + fi } # This function customizes the container by modifying the getty service and enabling auto-login for the root user From fad540cf4c05080eb05b3b71787930eb3a53b0fe Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 16 Dec 2024 23:47:50 +0100 Subject: [PATCH 060/286] Update CHANGELOG.md (#859) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3c0a594938d..a3fab48a53a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ❔ Unlabelled +- Fix SSH root access in install.func [@havardthom](https://github.com/havardthom) ([#858](https://github.com/community-scripts/ProxmoxVE/pull/858)) - Fix variable name for CT_TYPE override [@remz1337](https://github.com/remz1337) ([#855](https://github.com/community-scripts/ProxmoxVE/pull/855)) - Keeps the same style after writing the SEARCH icon [@remz1337](https://github.com/remz1337) ([#851](https://github.com/community-scripts/ProxmoxVE/pull/851)) From f511d88502f591744c704aecf5d93818d86c9cac Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 11:19:08 +0100 Subject: [PATCH 061/286] Fix ports ressources (#867) * fix Plex Port * fix ressources adguard * fix photoprism ressource --- ct/adguard.sh | 8 ++++---- ct/plex.sh | 2 +- json/photoprism.json | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/ct/adguard.sh b/ct/adguard.sh index f814a12de4d..c233e2b4a97 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -8,9 +8,9 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Adguard" var_tags="adblock" -var_cpu="2" -var_ram="2048" -var_disk="4" +var_cpu="1" +var_ram="512" +var_disk="2" var_os="debian" var_version="12" var_unprivileged="1" @@ -43,4 +43,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/plex.sh b/ct/plex.sh index 413a7e65f21..0aebd688f98 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -57,4 +57,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:23400/web${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:32400/web${CL}" diff --git a/json/photoprism.json b/json/photoprism.json index 0e796d0de0b..9d7bb13f24b 100644 --- a/json/photoprism.json +++ b/json/photoprism.json @@ -19,7 +19,7 @@ "script": "ct/photoprism.sh", "resources": { "cpu": 2, - "ram": 2048, + "ram": 3072, "hdd": 8, "os": "debian", "version": "12" @@ -36,4 +36,4 @@ "type": "warning" } ] -} \ No newline at end of file +} From 79d597297ca8589f6a479d146844402e46107939 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 11:28:26 +0100 Subject: [PATCH 062/286] fix calibre web direct merge because issue in big merge --- ct/calibre-web.sh | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index cd398c42cdd..2d8849d17bd 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -41,13 +41,13 @@ function update_script() { rm -rf kepubify-linux-64bit curl -fsSLO https://github.com/pgaskin/kepubify/releases/latest/download/kepubify-linux-64bit chmod +x kepubify-linux-64bit - menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF - "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF - "3" "Enables displaying of additional author infos on the authors page" OFF - "4" "Enables login via LDAP server" OFF - "5" "Enables login via google or github oauth" OFF - "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF - "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF + menu_array=("1" "Enables gdrive as storage backend for your ebooks" OFF \ + "2" "Enables sending emails via a googlemail account without enabling insecure apps" OFF \ + "3" "Enables displaying of additional author infos on the authors page" OFF \ + "4" "Enables login via LDAP server" OFF \ + "5" "Enables login via google or github oauth" OFF \ + "6" "Enables extracting of metadata from epub, fb2, pdf files, and also extraction of covers from cbr, cbz, cbt files" OFF \ + "7" "Enables extracting of metadata from cbr, cbz, cbt files" OFF \ "8" "Enables syncing with your kobo reader" OFF) if [ -f "/opt/calibre-web/options.txt" ]; then cps_options="$(cat /opt/calibre-web/options.txt)" @@ -140,4 +140,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8083${CL}" From a46e66fd9a9153924bc33219bf248c6b163b6827 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 11:34:58 +0100 Subject: [PATCH 063/286] Update CHANGELOG.md (#868) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a3fab48a53a..f86ab345b1e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-17 + +### Changed + +### 🚀 Updated Scripts + +- Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) + ## 2024-12-16 ### Changed From 73d57940866980d22b0749579dca94cf01ed8121 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 13:18:39 +0100 Subject: [PATCH 064/286] fix figlet for alpine (#869) --- misc/build.func | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index c43ef21ca08..1907b391396 100644 --- a/misc/build.func +++ b/misc/build.func @@ -158,7 +158,17 @@ arch_check() { # This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. header_info() { - apt-get install -y figlet &> /dev/null + if [ -f /etc/debian_version ]; then + # Debian/Ubuntu + apt-get install -y figlet &> /dev/null + elif [ -f /etc/alpine-release ]; then + # Alpine Linux + apk add --no-cache figlet &> /dev/null + else + echo "Unsupported OS" + return 1 + fi + ascii_art=$(figlet -f slant "$APP") clear cat < Date: Tue, 17 Dec 2024 13:20:28 +0100 Subject: [PATCH 065/286] Update CHANGELOG.md (#870) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f86ab345b1e..f3d5966c3de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) +### ❔ Unlabelled + +- Fix header creation with figlet for alpine [@MickLesk](https://github.com/MickLesk) ([#869](https://github.com/community-scripts/ProxmoxVE/pull/869)) + ## 2024-12-16 ### Changed From 870313cc58b86d1230d178133ab325de0e50357e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:21:15 +0100 Subject: [PATCH 066/286] Update keycloak.sh (#874) --- ct/keycloak.sh | 58 +++++++++++++++++++++++++------------------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 5bc16dcb9e5..26d214f0de8 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Keycloak" -var_tags="access management" +var_tags="access-management" var_cpu="2" var_ram="2048" var_disk="4" @@ -25,38 +25,38 @@ color catch_errors function update_script() { - header_info - check_container_storage - check_container_resources - if [[ ! -f /etc/systemd/system/keycloak.service ]]; then - msg_error "No ${APP} Installation Found!" - exit - fi - msg_info "Updating ${APP} LXC" + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/keycloak.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP} LXC" - msg_info "Updating packages" - apt-get update &>/dev/null - apt-get -y upgrade &>/dev/null + msg_info "Updating packages" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null - RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') - msg_info "Updating Keycloak to v$RELEASE" - cd /opt - wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz - mv keycloak keycloak.old - tar -xzf keycloak-$RELEASE.tar.gz - cp -r keycloak.old/conf keycloak-$RELEASE - cp -r keycloak.old/providers keycloak-$RELEASE - cp -r keycloak.old/themes keycloak-$RELEASE - mv keycloak-$RELEASE keycloak + RELEASE=$(curl -s https://api.github.com/repos/keycloak/keycloak/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + msg_info "Updating Keycloak to v$RELEASE" + cd /opt + wget -q https://github.com/keycloak/keycloak/releases/download/$RELEASE/keycloak-$RELEASE.tar.gz + mv keycloak keycloak.old + tar -xzf keycloak-$RELEASE.tar.gz + cp -r keycloak.old/conf keycloak-$RELEASE + cp -r keycloak.old/providers keycloak-$RELEASE + cp -r keycloak.old/themes keycloak-$RELEASE + mv keycloak-$RELEASE keycloak - msg_info "Delete temporary installation files" - rm keycloak-$RELEASE.tar.gz - rm -rf keycloak.old + msg_info "Delete temporary installation files" + rm keycloak-$RELEASE.tar.gz + rm -rf keycloak.old - msg_info "Restating Keycloak" - systemctl restart keycloak - msg_ok "Updated Successfully" - exit + msg_info "Restating Keycloak" + systemctl restart keycloak + msg_ok "Updated Successfully" + exit } start From b18b49ef6fd4d86c5f303e459f11245513521646 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 14:23:46 +0100 Subject: [PATCH 067/286] Update CHANGELOG.md (#875) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f3d5966c3de..359a349fc79 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Keycloak Installation [@MickLesk](https://github.com/MickLesk) ([#874](https://github.com/community-scripts/ProxmoxVE/pull/874)) - Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) ### ❔ Unlabelled From c60b16229b40477eae69e645c0389d638520af4e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:30:51 +0100 Subject: [PATCH 068/286] fix spinner on lxc-ip-tag (#876) * fix spinner on lxc-ip-tag * fix indention --- misc/add-lxc-iptag.sh | 321 +++++++++++++++++++++--------------------- 1 file changed, 163 insertions(+), 158 deletions(-) diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh index 093faaa7f60..4222694ded6 100644 --- a/misc/add-lxc-iptag.sh +++ b/misc/add-lxc-iptag.sh @@ -7,8 +7,8 @@ # Source: https://github.com/gitsang/lxc-iptag function header_info { - clear - cat <<"EOF" +clear +cat <<"EOF" __ _ ________ ________ ______ / / | |/ / ____/ / _/ __ \ /_ __/___ _____ _ / / | / / / // /_/ /_____/ / / __ `/ __ `/ @@ -41,7 +41,7 @@ catch_errors() { # This function is called when an error occurs. It receives the exit code, line number, and command that caused the error, and displays an error message. error_handler() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local exit_code="$?" local line_number="$1" @@ -50,51 +50,56 @@ error_handler() { echo -e "\n$error_message\n" } +# This function displays a spinner. spinner() { - local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') - local spin_i=0 - local interval=0.1 - printf "\e[?25l" - local orange="\e[38;5;214m" - - while true; do - printf "\r ${orange}%s\e[0m " "${frames[spin_i]}" - spin_i=$(( (spin_i + 1) % ${#frames[@]} )) - sleep "$interval" - done + local frames=('⠋' '⠙' '⠹' '⠸' '⠼' '⠴' '⠦' '⠧' '⠇' '⠏') + local spin_i=0 + local interval=0.1 + printf "\e[?25l" + + local color="${YWB}" + + while true; do + printf "\r ${color}%s${CL}" "${frames[spin_i]}" + spin_i=$(((spin_i + 1) % ${#frames[@]})) + sleep "$interval" + done } # This function displays an informational message with a yellow color. msg_info() { - local msg="$1" - echo -ne " ${HOLD} ${YW}${msg} " - spinner & - SPINNER_PID=$! + local msg="$1" + echo -ne "${TAB}${YW}${HOLD}${msg}${HOLD}" + spinner & + SPINNER_PID=$! } # This function displays a success message with a green color. msg_ok() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR}${CM} ${GN}${msg}${CL}" + echo -e "${BFR}${CM}${GN}${msg}${CL}" } # This function displays a error message with a red color. msg_error() { - if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID > /dev/null; then kill $SPINNER_PID > /dev/null; fi + if [ -n "$SPINNER_PID" ] && ps -p $SPINNER_PID >/dev/null; then kill $SPINNER_PID >/dev/null; fi printf "\e[?25h" local msg="$1" - echo -e "${BFR}${CROSS} ${RD}${msg}${CL}" + echo -e "${BFR}${CROSS}${RD}${msg}${CL}" } while true; do - read -p "This will install ${APP} on ${hostname}. Proceed? (y/n): " yn - case $yn in - [Yy]*) break ;; - [Nn]*) msg_info "Installation cancelled."; exit ;; - *) msg_info "Please answer yes or no." ;; - esac + read -p "This will install ${APP} on ${hostname}. Proceed? (y/n): " yn + case $yn in + [Yy]*) break ;; + [Nn]*) + msg_error "Installation cancelled." + exit + ;; + *) msg_error "Please answer yes or no." ;; + esac done if ! pveversion | grep -Eq "pve-manager/8.[0-3]"; then @@ -118,17 +123,18 @@ msg_ok "Installed Dependencies" msg_info "Setting up IP-Tag Scripts" mkdir -p /opt/lxc-iptag +msg_ok "Setup IP-Tag Scripts" msg_info "Setup Default Config" if [[ ! -f /opt/lxc-iptag/iptag.conf ]]; then - cat < /opt/lxc-iptag/iptag.conf + cat </opt/lxc-iptag/iptag.conf # Configuration file for LXC IP tagging # List of allowed CIDRs CIDR_LIST=( - 192.168.0.0/16 - 100.64.0.0/10 - 10.0.0.0/8 + 192.168.0.0/16 + 100.64.0.0/10 + 10.0.0.0/8 ) # Interval settings (in seconds) @@ -137,14 +143,14 @@ FW_NET_INTERFACE_CHECK_INTERVAL=60 LXC_STATUS_CHECK_INTERVAL=-1 FORCE_UPDATE_INTERVAL=1800 EOF - msg_ok "Setup default config" + msg_ok "Setup default config" else - msg_ok "Default config already exists" + msg_ok "Default config already exists" fi msg_info "Setup Main Function" if [[ ! -f /opt/lxc-iptag/iptag ]]; then - cat <<'EOF' > /opt/lxc-iptag/iptag + cat <<'EOF' >/opt/lxc-iptag/iptag #!/bin/bash # =============== CONFIGURATION =============== # @@ -153,177 +159,176 @@ CONFIG_FILE="/opt/lxc-iptag/iptag.conf" # Load the configuration file if it exists if [ -f "$CONFIG_FILE" ]; then - # shellcheck source=./lxc-iptag.conf - source "$CONFIG_FILE" + # shellcheck source=./lxc-iptag.conf + source "$CONFIG_FILE" fi # Convert IP to integer for comparison ip_to_int() { - local ip="${1}" - local a b c d + local ip="${1}" + local a b c d - IFS=. read -r a b c d <<< "${ip}" - echo "$((a << 24 | b << 16 | c << 8 | d))" + IFS=. read -r a b c d <<< "${ip}" + echo "$((a << 24 | b << 16 | c << 8 | d))" } # Check if IP is in CIDR ip_in_cidr() { - local ip="${1}" - local cidr="${2}" + local ip="${1}" + local cidr="${2}" - ip_int=$(ip_to_int "${ip}") - netmask_int=$(ip_to_int "$(ipcalc -b "${cidr}" | grep Broadcast | awk '{print $2}')") - masked_ip_int=$(( "${ip_int}" & "${netmask_int}" )) - [[ ${ip_int} -eq ${masked_ip_int} ]] && return 0 || return 1 + ip_int=$(ip_to_int "${ip}") + netmask_int=$(ip_to_int "$(ipcalc -b "${cidr}" | grep Broadcast | awk '{print $2}')") + masked_ip_int=$(( "${ip_int}" & "${netmask_int}" )) + [[ ${ip_int} -eq ${masked_ip_int} ]] && return 0 || return 1 } # Check if IP is in any CIDRs ip_in_cidrs() { - local ip="${1}" - local cidrs=() + local ip="${1}" + local cidrs=() - mapfile -t cidrs < <(echo "${2}" | tr ' ' '\n') - for cidr in "${cidrs[@]}"; do - ip_in_cidr "${ip}" "${cidr}" && return 0 - done + mapfile -t cidrs < <(echo "${2}" | tr ' ' '\n') + for cidr in "${cidrs[@]}"; do + ip_in_cidr "${ip}" "${cidr}" && return 0 + done - return 1 + return 1 } # Check if IP is valid is_valid_ipv4() { - local ip=$1 - local regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" - - if [[ $ip =~ $regex ]]; then - IFS='.' read -r -a parts <<< "$ip" - for part in "${parts[@]}"; do - if ! [[ $part =~ ^[0-9]+$ ]] || ((part < 0 || part > 255)); then - return 1 - fi - done - return 0 - else + local ip=$1 + local regex="^([0-9]{1,3}\.){3}[0-9]{1,3}$" + + if [[ $ip =~ $regex ]]; then + IFS='.' read -r -a parts <<< "$ip" + for part in "${parts[@]}"; do + if ! [[ $part =~ ^[0-9]+$ ]] || ((part < 0 || part > 255)); then return 1 - fi + fi + done + return 0 + else + return 1 + fi } lxc_status_changed() { - current_lxc_status=$(pct list 2>/dev/null) - if [ "${last_lxc_status}" == "${current_lxc_status}" ]; then - return 1 - else - last_lxc_status="${current_lxc_status}" - return 0 - fi + current_lxc_status=$(pct list 2>/dev/null) + if [ "${last_lxc_status}" == "${current_lxc_status}" ]; then + return 1 + else + last_lxc_status="${current_lxc_status}" + return 0 + fi } fw_net_interface_changed() { - current_net_interface=$(ifconfig | grep "^fw") - if [ "${last_net_interface}" == "${current_net_interface}" ]; then - return 1 - else - last_net_interface="${current_net_interface}" - return 0 - fi + current_net_interface=$(ifconfig | grep "^fw") + if [ "${last_net_interface}" == "${current_net_interface}" ]; then + return 1 + else + last_net_interface="${current_net_interface}" + return 0 + fi } # =============== MAIN =============== # update_lxc_iptags() { - vmid_list=$(pct list 2>/dev/null | grep -v VMID | awk '{print $1}') - for vmid in ${vmid_list}; do - last_tagged_ips=() - current_valid_ips=() - next_tags=() - - # Parse current tags - mapfile -t current_tags < <(pct config "${vmid}" | grep tags | awk '{print $2}' | sed 's/;/\n/g') - for current_tag in "${current_tags[@]}"; do - if is_valid_ipv4 "${current_tag}"; then - last_tagged_ips+=("${current_tag}") - continue - fi - next_tags+=("${current_tag}") - done - - # Get current IPs - current_ips_full=$(lxc-info -n "${vmid}" -i | awk '{print $2}') - for ip in ${current_ips_full}; do - if is_valid_ipv4 "${ip}" && ip_in_cidrs "${ip}" "${CIDR_LIST[*]}"; then - current_valid_ips+=("${ip}") - next_tags+=("${ip}") - fi - done - - # Skip if no ip change - if [[ "$(echo "${last_tagged_ips[@]}" | tr ' ' '\n' | sort -u)" == "$(echo "${current_valid_ips[@]}" | tr ' ' '\n' | sort -u)" ]]; then - echo "Skipping ${vmid} cause ip no changes" - continue - fi - - # Set tags - echo "Setting ${vmid} tags from ${current_tags[*]} to ${next_tags[*]}" - pct set "${vmid}" -tags "$(IFS=';'; echo "${next_tags[*]}")" + vmid_list=$(pct list 2>/dev/null | grep -v VMID | awk '{print $1}') + for vmid in ${vmid_list}; do + last_tagged_ips=() + current_valid_ips=() + next_tags=() + + # Parse current tags + mapfile -t current_tags < <(pct config "${vmid}" | grep tags | awk '{print $2}' | sed 's/;/\n/g') + for current_tag in "${current_tags[@]}"; do + if is_valid_ipv4 "${current_tag}"; then + last_tagged_ips+=("${current_tag}") + continue + fi + next_tags+=("${current_tag}") done -} -check() { - current_time=$(date +%s) - - time_since_last_lxc_status_check=$((current_time - last_lxc_status_check_time)) - if [[ "${LXC_STATUS_CHECK_INTERVAL}" -gt 0 ]] \ - && [[ "${time_since_last_lxc_status_check}" -ge "${STATUS_CHECK_INTERVAL}" ]]; then - echo "Checking lxc status..." - last_lxc_status_check_time=${current_time} - if lxc_status_changed; then - update_lxc_iptags - last_update_time=${current_time} - return - fi - fi + # Get current IPs + current_ips_full=$(lxc-info -n "${vmid}" -i | awk '{print $2}') + for ip in ${current_ips_full}; do + if is_valid_ipv4 "${ip}" && ip_in_cidrs "${ip}" "${CIDR_LIST[*]}"; then + current_valid_ips+=("${ip}") + next_tags+=("${ip}") + fi + done - time_since_last_fw_net_interface_check=$((current_time - last_fw_net_interface_check_time)) - if [[ "${FW_NET_INTERFACE_CHECK_INTERVAL}" -gt 0 ]] \ - && [[ "${time_since_last_fw_net_interface_check}" -ge "${FW_NET_INTERFACE_CHECK_INTERVAL}" ]]; then - echo "Checking fw net interface..." - last_fw_net_interface_check_time=${current_time} - if fw_net_interface_changed; then - update_lxc_iptags - last_update_time=${current_time} - return - fi + # Skip if no ip change + if [[ "$(echo "${last_tagged_ips[@]}" | tr ' ' '\n' | sort -u)" == "$(echo "${current_valid_ips[@]}" | tr ' ' '\n' | sort -u)" ]]; then + echo "Skipping ${vmid} cause ip no changes" + continue fi - time_since_last_update=$((current_time - last_update_time)) - if [ ${time_since_last_update} -ge ${FORCE_UPDATE_INTERVAL} ]; then - echo "Force updating lxc iptags..." - update_lxc_iptags - last_update_time=${current_time} - return + # Set tags + echo "Setting ${vmid} tags from ${current_tags[*]} to ${next_tags[*]}" + pct set "${vmid}" -tags "$(IFS=';'; echo "${next_tags[*]}")" + done +} + +check() { + current_time=$(date +%s) + + time_since_last_lxc_status_check=$((current_time - last_lxc_status_check_time)) + if [[ "${LXC_STATUS_CHECK_INTERVAL}" -gt 0 ]] \ + && [[ "${time_since_last_lxc_status_check}" -ge "${STATUS_CHECK_INTERVAL}" ]]; then + echo "Checking lxc status..." + last_lxc_status_check_time=${current_time} + if lxc_status_changed; then + update_lxc_iptags + last_update_time=${current_time} + return fi + fi + + time_since_last_fw_net_interface_check=$((current_time - last_fw_net_interface_check_time)) + if [[ "${FW_NET_INTERFACE_CHECK_INTERVAL}" -gt 0 ]] \ + && [[ "${time_since_last_fw_net_interface_check}" -ge "${FW_NET_INTERFACE_CHECK_INTERVAL}" ]]; then + echo "Checking fw net interface..." + last_fw_net_interface_check_time=${current_time} + if fw_net_interface_changed; then + update_lxc_iptags + last_update_time=${current_time} + return + fi + fi + + time_since_last_update=$((current_time - last_update_time)) + if [ ${time_since_last_update} -ge ${FORCE_UPDATE_INTERVAL} ]; then + echo "Force updating lxc iptags..." + update_lxc_iptags + last_update_time=${current_time} + return + fi } # main: Set the IP tags for all LXC containers main() { - while true; do - check - sleep "${LOOP_INTERVAL}" - done + while true; do + check + sleep "${LOOP_INTERVAL}" + done } main EOF - msg_ok "Setup Main Function" + msg_ok "Setup Main Function" else - msg_ok "Main Function already exists" + msg_ok "Main Function already exists" fi -chmod +x /opt/lxc-iptag/iptag +chmod +x /opt/lxc-iptag/iptag msg_info "Creating Service" if [[ ! -f /lib/systemd/system/iptag.service ]]; then - echo "Systemd service file not found. Creating it now..." - cat < /lib/systemd/system/iptag.service + cat </lib/systemd/system/iptag.service [Unit] Description=LXC IP-Tag service After=network.target @@ -336,9 +341,9 @@ Restart=always [Install] WantedBy=multi-user.target EOF - msg_ok "Created Service" + msg_ok "Created Service" else - msg_ok "Service already exists." + msg_ok "Service already exists." fi msg_ok "Setup IP-Tag Scripts" @@ -347,5 +352,5 @@ msg_info "Starting Service" systemctl daemon-reload &>/dev/null systemctl enable -q --now iptag.service &>/dev/null msg_ok "Started Service" - +SPINNER_PID="" echo -e "\n${APP} installation completed successfully! ${CL}\n" From 7261affcc2fd323007ed07c177fde3897e252860 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 15:32:44 +0100 Subject: [PATCH 069/286] Update CHANGELOG.md (#877) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 359a349fc79..5a805eb0704 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- fix spinner on lxc-ip-tag [@MickLesk](https://github.com/MickLesk) ([#876](https://github.com/community-scripts/ProxmoxVE/pull/876)) - Fix Keycloak Installation [@MickLesk](https://github.com/MickLesk) ([#874](https://github.com/community-scripts/ProxmoxVE/pull/874)) - Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) From a6f377121496c9c7fa8b12318f5608ac9fed310c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 17 Dec 2024 16:07:07 +0100 Subject: [PATCH 070/286] calculate terminal size for header_info (#879) --- misc/build.func | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 1907b391396..bc15bd0b706 100644 --- a/misc/build.func +++ b/misc/build.func @@ -169,7 +169,8 @@ header_info() { return 1 fi - ascii_art=$(figlet -f slant "$APP") + term_width=$(tput cols) + ascii_art=$(figlet -f slant -w "$term_width" "$APP") clear cat < Date: Tue, 17 Dec 2024 16:07:20 +0100 Subject: [PATCH 071/286] Small Changes to the PR Template (#862) * Small Changes to the PR Template * Changes * Add hint to remove unnedeed lines --- .github/pull_request_template.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index e6dbcfddb19..8e2f5b0bc42 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -7,13 +7,13 @@ ## ✍️ Description Provide a summary of the changes made and/or reference the issue being addressed. -- + - - - - +**_Please remove unneeded lines!_** - Related Issue: # (issue number, if applicable) - Related PR: # (if applicable) -- Related Discussion: [Link](https://github.com/community-scripts/ProxmoxVE/discussions) +- Related Discussion: []()(if applicable) --- From d65d64e59e67f272df8c4d5527b709dde921f242 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 16:08:58 +0100 Subject: [PATCH 072/286] Update CHANGELOG.md (#880) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a805eb0704..0d8525138e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,8 +26,13 @@ Do not break established syntax in this file, as it is automatically updated by - Fix Keycloak Installation [@MickLesk](https://github.com/MickLesk) ([#874](https://github.com/community-scripts/ProxmoxVE/pull/874)) - Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) +### 🧰 Maintenance + +- Small Changes to the PR Template [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#862](https://github.com/community-scripts/ProxmoxVE/pull/862)) + ### ❔ Unlabelled +- calculate terminal size for header_info [@MickLesk](https://github.com/MickLesk) ([#879](https://github.com/community-scripts/ProxmoxVE/pull/879)) - Fix header creation with figlet for alpine [@MickLesk](https://github.com/MickLesk) ([#869](https://github.com/community-scripts/ProxmoxVE/pull/869)) ## 2024-12-16 From 9efb421b5cbdbae53df3a41556954530576dcc73 Mon Sep 17 00:00:00 2001 From: mneten Date: Tue, 17 Dec 2024 13:09:01 -0700 Subject: [PATCH 073/286] Change Port (#884) simply changed port from 8086 to 8096 in line 50 --- ct/jellyfin.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index 84d8e205396..bc5ec5400df 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -47,4 +47,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8086${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}" From f19936686772c7bb207b7978debd7d7a1705c9f3 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Tue, 17 Dec 2024 21:11:09 +0100 Subject: [PATCH 074/286] Fix Alpine-Nextcloud: Bump PHP Version to 8.3 (#865) * Fix Alpine Nextcloud: Bump PHP Version to 8.3 * Fix Alpine-Nextcloud: Bump PHP Version to 8.3 * Replace deprecated mysql_install_db --- install/alpine-nextcloud-install.sh | 42 +++++++++++++++-------------- 1 file changed, 22 insertions(+), 20 deletions(-) diff --git a/install/alpine-nextcloud-install.sh b/install/alpine-nextcloud-install.sh index 6d611ba3a16..665e899219a 100644 --- a/install/alpine-nextcloud-install.sh +++ b/install/alpine-nextcloud-install.sh @@ -24,18 +24,18 @@ $STD apk add nginx msg_ok "Installed Dependencies" msg_info "Installing PHP/Redis" -$STD apk add php82-opcache -$STD apk add php82-redis -$STD apk add php82-apcu -$STD apk add php82-fpm -$STD apk add php82-sysvsem -$STD apk add php82-ftp -$STD apk add php82-pecl-smbclient -$STD apk add php82-pecl-imagick -$STD apk add php82-pecl-vips -$STD apk add php82-exif -$STD apk add php82-sodium -$STD apk add php82-bz2 +$STD apk add php83-opcache +$STD apk add php83-redis +$STD apk add php83-apcu +$STD apk add php83-fpm +$STD apk add php83-sysvsem +$STD apk add php83-ftp +$STD apk add php83-pecl-smbclient +$STD apk add php83-pecl-imagick +$STD apk add php83-pecl-vips +$STD apk add php83-exif +$STD apk add php83-sodium +$STD apk add php83-bz2 $STD apk add redis msg_ok "Installed PHP/Redis" @@ -50,7 +50,7 @@ echo -e "Nextcloud Database Username: \e[32m$DB_USER\e[0m" >>~/nextcloud.creds echo -e "Nextcloud Database Password: \e[32m$DB_PASS\e[0m" >>~/nextcloud.creds echo -e "Nextcloud Database Name: \e[32m$DB_NAME\e[0m" >>~/nextcloud.creds $STD apk add nextcloud-mysql mariadb mariadb-client -$STD mysql_install_db --user=mysql --datadir=/var/lib/mysql +$STD mariadb-install-db --user=mysql --datadir=/var/lib/mysql $STD service mariadb start $STD rc-update add mariadb mysql -uroot -p"$ADMIN_PASS" -e "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '$ADMIN_PASS' WITH GRANT OPTION; DELETE FROM mysql.user WHERE User=''; DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1', '::1'); DROP DATABASE test; DELETE FROM mysql.db WHERE Db='test' OR Db='test\_%'; CREATE DATABASE $DB_NAME; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS'; GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost.localdomain' IDENTIFIED BY '$DB_PASS'; FLUSH PRIVILEGES;" @@ -134,11 +134,12 @@ server { location ^~ /.well-known/nodeinfo { return 301 /index.php/.well-known/nodeinfo; } } EOF -sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php82/php.ini -sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php82/php-fpm.d/nextcloud.conf +sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php83/php.ini +sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php83/php-fpm.d/nextcloud.conf msg_ok "Installed Nextcloud" msg_info "Adding Additional Nextcloud Packages" +$STD apk add nextcloud-occ $STD apk add nextcloud-default-apps $STD apk add nextcloud-activity $STD apk add nextcloud-admin_audit @@ -163,9 +164,10 @@ msg_ok "Added Additional Nextcloud Packages" msg_info "Starting Services" $STD rc-service redis start $STD rc-update add redis default -$STD rc-service php-fpm82 start +$STD rc-service php-fpm83 start chown -R nextcloud:www-data /var/log/nextcloud/ -$STD rc-service php-fpm82 restart +chown -R nextcloud:www-data /usr/share/webapps/nextcloud/ +$STD rc-service php-fpm83 restart $STD rc-service nginx start $STD rc-service nextcloud start $STD rc-update add nginx default @@ -175,16 +177,16 @@ msg_ok "Started Services" msg_info "Start Nextcloud Setup-Wizard" echo -e "export VISUAL=nano\nexport EDITOR=nano" >>/etc/profile cd /usr/share/webapps/nextcloud -$STD su nextcloud -s /bin/sh -c "php82 occ maintenance:install \ +$STD su nextcloud -s /bin/sh -c "php83 occ maintenance:install \ --database='mysql' --database-name $DB_NAME \ --database-user '$DB_USER' --database-pass '$DB_PASS' \ --admin-user '$ADMIN_USER' --admin-pass '$ADMIN_PASS' \ --data-dir '/var/lib/nextcloud/data'" -$STD su nextcloud -s /bin/sh -c 'php82 occ background:cron' +$STD su nextcloud -s /bin/sh -c 'php83 occ background:cron' rm -rf /usr/share/webapps/nextcloud/apps/serverinfo IP4=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) sed -i "/0 => \'localhost\',/a \ \1 => '$IP4'," /usr/share/webapps/nextcloud/config/config.php -su nextcloud -s /bin/sh -c 'php82 -f /usr/share/webapps/nextcloud/cron.php' +su nextcloud -s /bin/sh -c 'php83 -f /usr/share/webapps/nextcloud/cron.php' msg_ok "Finished Nextcloud Setup-Wizard" motd_ssh From 3e60e43d05b06801baa43087441d7e18431998b1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 17 Dec 2024 21:12:16 +0100 Subject: [PATCH 075/286] Update CHANGELOG.md (#885) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0d8525138e4..11cf6cd9ad0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Alpine-Nextcloud: Bump PHP Version to 8.3 [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#865](https://github.com/community-scripts/ProxmoxVE/pull/865)) +- Correction of Jellyfin CT Port [@mneten](https://github.com/mneten) ([#884](https://github.com/community-scripts/ProxmoxVE/pull/884)) - fix spinner on lxc-ip-tag [@MickLesk](https://github.com/MickLesk) ([#876](https://github.com/community-scripts/ProxmoxVE/pull/876)) - Fix Keycloak Installation [@MickLesk](https://github.com/MickLesk) ([#874](https://github.com/community-scripts/ProxmoxVE/pull/874)) - Fix ports ressources [@MickLesk](https://github.com/MickLesk) ([#867](https://github.com/community-scripts/ProxmoxVE/pull/867)) From 29dcf19c04c7f71161e8a11d7d8c4e173f97cbe0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 18 Dec 2024 08:52:27 +0100 Subject: [PATCH 076/286] Fix spaces in TAGS there breaking install --- ct/kimai.sh | 2 +- ct/meshcentral.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/kimai.sh b/ct/kimai.sh index c5a974807f6..3d499a73365 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Kimai" -var_tags="time tracking" +var_tags="time-tracking" var_cpu="2" var_ram="2048" var_disk="7" diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index fb1a9717b7b..1545d004c65 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="MeshCentral" -var_tags="remote management" +var_tags="remote-management" var_cpu="1" var_ram="512" var_disk="2" From 07508d10d0a8966a7f4de2bcb1086bc76610195a Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 18 Dec 2024 21:03:30 +1300 Subject: [PATCH 077/286] Moved webmin to server & networking, it is not a file management tool. (#891) --- json/webmin.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/webmin.json b/json/webmin.json index 9f05d09365d..3b5694b86a7 100644 --- a/json/webmin.json +++ b/json/webmin.json @@ -2,7 +2,7 @@ "name": "Webmin System Administration", "slug": "webmin", "categories": [ - 16 + 11 ], "date_created": "2024-05-02", "type": "misc", From cd374c296f21df0a6c0fe670e85c0cb88f0268a4 Mon Sep 17 00:00:00 2001 From: Paul Date: Wed, 18 Dec 2024 21:03:41 +1300 Subject: [PATCH 078/286] Add new category and put coding and ai into it. (#890) --- json/code-server.json | 2 +- json/flowiseai.json | 2 +- json/forgejo.json | 2 +- json/gitea.json | 2 +- json/metadata.json | 3 ++- json/openwebui.json | 2 +- 6 files changed, 7 insertions(+), 6 deletions(-) diff --git a/json/code-server.json b/json/code-server.json index 9a4007e6374..03e38d0dfc2 100644 --- a/json/code-server.json +++ b/json/code-server.json @@ -2,7 +2,7 @@ "name": "VS Code Server", "slug": "code-server", "categories": [ - 16 + 19 ], "date_created": "2024-05-02", "type": "misc", diff --git a/json/flowiseai.json b/json/flowiseai.json index 3813bda04a4..b2f99b5c788 100644 --- a/json/flowiseai.json +++ b/json/flowiseai.json @@ -2,7 +2,7 @@ "name": "FlowiseAI", "slug": "flowiseai", "categories": [ - 0 + 19 ], "date_created": "2024-05-02", "type": "ct", diff --git a/json/forgejo.json b/json/forgejo.json index 729fa26d9cb..3a16cf9a5d5 100644 --- a/json/forgejo.json +++ b/json/forgejo.json @@ -2,7 +2,7 @@ "name": "Forgejo", "slug": "forgejo", "categories": [ - 16 + 19 ], "date_created": "2024-06-12", "type": "ct", diff --git a/json/gitea.json b/json/gitea.json index 65143b0d279..17d2a29c273 100644 --- a/json/gitea.json +++ b/json/gitea.json @@ -2,7 +2,7 @@ "name": "Gitea", "slug": "gitea", "categories": [ - 16 + 19 ], "date_created": "2024-07-26", "type": "ct", diff --git a/json/metadata.json b/json/metadata.json index 05b5ab1e6b6..d915465253a 100644 --- a/json/metadata.json +++ b/json/metadata.json @@ -5,11 +5,12 @@ {"name": "AdBlocker & DNS", "id": 13, "sort_order": 2.0}, {"name": "*Arr Suite", "id": 18, "sort_order": 3.0}, {"name": "Automation", "id": 3, "sort_order": 4.0}, + {"name": "Coding & AI", "id": 19, "sort_order": 5.0}, {"name": "Dashboards", "id": 15, "sort_order": 5.0}, {"name": "Database", "id": 5, "sort_order": 6.0}, {"name": "Docker & Kubernetes", "id": 8, "sort_order": 7.0}, {"name": "Document & Notes", "id": 14, "sort_order": 8.0}, - {"name": "File & Code", "id": 16, "sort_order": 9.0}, + {"name": "File & Downloads", "id": 16, "sort_order": 9.0}, {"name": "Home Assistant", "id": 2, "sort_order": 10.0}, {"name": "Media & Photo", "id": 12, "sort_order": 11.0}, {"name": "Monitoring & Analytics", "id": 7, "sort_order": 12.0}, diff --git a/json/openwebui.json b/json/openwebui.json index 1a3c2017797..bcc5030ee91 100644 --- a/json/openwebui.json +++ b/json/openwebui.json @@ -2,7 +2,7 @@ "name": "Open WebUI", "slug": "openwebui", "categories": [ - 0 + 19 ], "date_created": "2024-10-24", "type": "ct", From 22c0757b4dac12cace463823e1e3b50f493087a1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 09:05:39 +0100 Subject: [PATCH 079/286] Update CHANGELOG.md (#892) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 11cf6cd9ad0..a4887cf3639 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,15 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-18 + +### Changed + +### 🌐 Website + +- New Metadata Category: "Coding & AI" [@newzealandpaul](https://github.com/newzealandpaul) ([#890](https://github.com/community-scripts/ProxmoxVE/pull/890)) +- Moved Webmin to "Server & Networking" [@newzealandpaul](https://github.com/newzealandpaul) ([#891](https://github.com/community-scripts/ProxmoxVE/pull/891)) + ## 2024-12-17 ### Changed From d0f2c71038e8b7a9943b139331664e7be3354fc3 Mon Sep 17 00:00:00 2001 From: bvdberg01 <74251551+bvdberg01@users.noreply.github.com> Date: Wed, 18 Dec 2024 12:05:30 +0100 Subject: [PATCH 080/286] New script: Part-DB LXC (#591) * New script: Part-DB LXC * Improved based on PR feedback MickLesk * Migrate header & footer to latest version * formatting and remove old header * formatting * fix json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/part-db.sh | 85 ++++++++++++++++++++++++++++ install/part-db-install.sh | 112 +++++++++++++++++++++++++++++++++++++ json/part-db.json | 39 +++++++++++++ 3 files changed, 236 insertions(+) create mode 100644 ct/part-db.sh create mode 100644 install/part-db-install.sh create mode 100644 json/part-db.json diff --git a/ct/part-db.sh b/ct/part-db.sh new file mode 100644 index 00000000000..bf7217e20e7 --- /dev/null +++ b/ct/part-db.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: bvdberg01 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.part-db.de/ + +# App Default Values +APP="Part-DB" +var_tags="inventory;parts" +var_cpu="2" +var_ram="1024" +var_disk="8" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/partdb ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop apache2 + msg_ok "Stopped Service" + + msg_info "Updating $APP to v${RELEASE}" + cd /opt + mv /opt/partdb/ /opt/partdb-backup + wget -q "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" + unzip -q "v${RELEASE}.zip" + mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb + + cd /opt/partdb/ + cp -r "/opt/partdb-backup/.env.local" /opt/partdb/ + cp -r "/opt/partdb-backup/public/media" /opt/partdb/public/ + cp -r "/opt/partdb-backup/config/banner.md" /opt/partdb/config/ + + export COMPOSER_ALLOW_SUPERUSER=1 + composer install --no-dev -o --no-interaction &>/dev/null + yarn install &>/dev/null + yarn build &>/dev/null + php bin/console cache:clear &>/dev/null + php bin/console doctrine:migrations:migrate -n &>/dev/null + chown -R www-data:www-data /opt/partdb + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated $APP to v${RELEASE}" + + msg_info "Starting Service" + systemctl start apache2 + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -r "/opt/v${RELEASE}.zip" + rm -r /opt/partdb-backup + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/part-db-install.sh b/install/part-db-install.sh new file mode 100644 index 00000000000..020d9e55ae2 --- /dev/null +++ b/install/part-db-install.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: bvdberg01 +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + zip \ + ca-certificates \ + software-properties-common \ + apt-transport-https \ + lsb-release \ + php-{opcache,curl,gd,mbstring,xml,bcmath,intl,zip,xsl,pgsql} \ + libapache2-mod-php \ + composer \ + postgresql +msg_ok "Installed Dependencies" + +msg_info "Setting up PostgreSQL" +DB_NAME=partdb +DB_USER=partdb +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13) +$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMPLATE template0;" +{ +echo "Part-DB Credentials" +echo "Part-DB Database User: $DB_USER" +echo "Part-DB Database Password: $DB_PASS" +echo "Part-DB Database Name: $DB_NAME" +} >> ~/partdb.creds +msg_ok "Set up PostgreSQL" + +msg_info "Setting up Node.js/Yarn" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +$STD apt-get update +$STD apt-get install -y nodejs +$STD npm install -g npm@latest +$STD npm install -g yarn +msg_ok "Installed Node.js/Yarn" + +msg_info "Installing Part-DB (Patience)" +cd /opt +RELEASE=$(curl -s https://api.github.com/repos/Part-DB/Part-DB-server/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -q "https://github.com/Part-DB/Part-DB-server/archive/refs/tags/v${RELEASE}.zip" +unzip -q "v${RELEASE}.zip" +mv /opt/Part-DB-server-${RELEASE}/ /opt/partdb + +cd /opt/partdb/ +cp .env .env.local +sed -i "s|DATABASE_URL=\"sqlite:///%kernel.project_dir%/var/app.db\"|DATABASE_URL=\"postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:5432/${DB_NAME}?serverVersion=12.19&charset=utf8\"|" .env.local + +export COMPOSER_ALLOW_SUPERUSER=1 +$STD composer install --no-dev -o --no-interaction +$STD yarn install +$STD yarn build +$STD php bin/console cache:clear +php bin/console doctrine:migrations:migrate -n > ~/database-migration-output +chown -R www-data:www-data /opt/partdb +ADMIN_PASS=$(grep -oP 'The initial password for the "admin" user is: \K\w+' ~/database-migration-output) +{ +echo "" +echo "Part-DB Admin User: admin" +echo "Part-DB Admin Password: $ADMIN_PASS" +} >> ~/partdb.creds +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Part-DB" + +msg_info "Creating Service" +cat </etc/apache2/sites-available/partdb.conf + + ServerName partdb + DocumentRoot /opt/partdb/public + + Options FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /var/log/apache2/partdb_error.log + CustomLog /var/log/apache2/partdb_access.log combined + +EOF +$STD a2ensite partdb +$STD a2enmod rewrite +$STD a2dissite 000-default.conf +$STD systemctl reload apache2 +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf ~/database-migration-output +rm -rf "/opt/v${RELEASE}.zip" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/part-db.json b/json/part-db.json new file mode 100644 index 00000000000..3a8d8d4647b --- /dev/null +++ b/json/part-db.json @@ -0,0 +1,39 @@ +{ + "name": "Part-DB", + "slug": "part-db", + "categories": [ + 0 + ], + "date_created": "2024-12-18", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://docs.part-db.de/", + "website": "https://github.com/Part-DB/Part-DB-server", + "logo": "https://avatars.githubusercontent.com/u/36010898?s=48&v=4", + "description": "Part-DB is an Open source inventory management system for your electronic components", + "install_methods": [ + { + "type": "default", + "script": "ct/part-db.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Show login and database credentials: `cat part-db.creds`", + "type": "info" + } + ] +} From 17eaedf3353fe708a9c3c26477a6d0deec8ed9f7 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 12:09:28 +0100 Subject: [PATCH 081/286] Update CHANGELOG.md (#896) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4887cf3639..b3c7c17c2f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New script: Part-DB LXC [@bvdberg01](https://github.com/bvdberg01) ([#591](https://github.com/community-scripts/ProxmoxVE/pull/591)) + ### 🌐 Website - New Metadata Category: "Coding & AI" [@newzealandpaul](https://github.com/newzealandpaul) ([#890](https://github.com/community-scripts/ProxmoxVE/pull/890)) From 9236f97009f4a442b0198dc77eabbbfc07f42636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20B=C3=A9dard-Couture?= Date: Wed, 18 Dec 2024 09:40:13 -0500 Subject: [PATCH 082/286] Remove SSE 4.2 from instruction set supporting OpenVino. Although the docs says it supports it, many users have reported it not working without AVX. (#902) --- install/frigate-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 3eda5afd42f..649e5ffae27 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -104,8 +104,8 @@ fi echo "tmpfs /tmp/cache tmpfs defaults 0 0" >> /etc/fstab msg_ok "Installed Frigate $RELEASE" -if grep -q -o -m1 -E 'avx[^ ]* | sse4_2' /proc/cpuinfo; then - msg_ok "AVX or SSE 4.2 Support Detected" +if grep -q -o -m1 -E 'avx[^ ]*' /proc/cpuinfo; then + msg_ok "AVX Support Detected" msg_info "Installing Openvino Object Detection Model (Resilience)" $STD pip install -r /opt/frigate/docker/main/requirements-ov.txt cd /opt/frigate/models From fe3faccc42a29360c8fee19682e11e1b877985f1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 15:41:53 +0100 Subject: [PATCH 083/286] Update CHANGELOG.md (#903) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b3c7c17c2f8..8914dc11ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,10 @@ Do not break established syntax in this file, as it is automatically updated by - New script: Part-DB LXC [@bvdberg01](https://github.com/bvdberg01) ([#591](https://github.com/community-scripts/ProxmoxVE/pull/591)) +### 🚀 Updated Scripts + +- [Frigate] Remove SSE 4.2 from instruction set supporting OpenVino [@remz1337](https://github.com/remz1337) ([#902](https://github.com/community-scripts/ProxmoxVE/pull/902)) + ### 🌐 Website - New Metadata Category: "Coding & AI" [@newzealandpaul](https://github.com/newzealandpaul) ([#890](https://github.com/community-scripts/ProxmoxVE/pull/890)) From 056d8902fbfe345337ff5dfaa6f5e75455c5bc14 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 18 Dec 2024 15:52:44 +0100 Subject: [PATCH 084/286] Fix Kernel-Clean for Proxmox 8.x (#904) --- misc/kernel-clean.sh | 77 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 61 insertions(+), 16 deletions(-) diff --git a/misc/kernel-clean.sh b/misc/kernel-clean.sh index adee9d3fa22..058ed240324 100644 --- a/misc/kernel-clean.sh +++ b/misc/kernel-clean.sh @@ -16,6 +16,8 @@ function header_info { EOF } + +# Color variables for output YW=$(echo "\033[33m") RD=$(echo "\033[01;31m") GN=$(echo "\033[1;92m") @@ -23,10 +25,8 @@ CL=$(echo "\033[m") BFR="\\r\\033[K" HOLD="-" CM="${GN}✓${CL}" -current_kernel=$(uname -r) -available_kernels=$(dpkg --list | grep 'kernel-.*-pve' | awk '{print $2}' | grep -v "$current_kernel" | sort -V) -header_info +# Functions for logging messages function msg_info() { local msg="$1" echo -ne " ${HOLD} ${YW}${msg}..." @@ -37,39 +37,84 @@ function msg_ok() { echo -e "${BFR} ${CM} ${GN}${msg}${CL}" } -whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE Kernel Clean" --yesno "This will Clean Unused Kernel Images, USE AT YOUR OWN RISK. Proceed?" 10 68 || exit +# Detect current kernel +current_kernel=$(uname -r) + +# Detect all installed kernels except the current one +available_kernels=$(dpkg --list | grep 'kernel-.*-pve' | awk '{print $2}' | grep -v "$current_kernel" | sort -V) + +header_info + +# If no old kernels are available, exit with a message if [ -z "$available_kernels" ]; then - whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Old Kernels" --msgbox "It appears there are no old Kernels on your system. \nCurrent kernel ($current_kernel)." 10 68 + whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Old Kernels" \ + --msgbox "It appears there are no old kernels on your system.\nCurrent kernel: $current_kernel" 10 68 echo "Exiting..." sleep 2 clear exit fi - KERNEL_MENU=() - MSG_MAX_LENGTH=0 + +# Prepare kernel options for selection +KERNEL_MENU=() while read -r TAG ITEM; do OFFSET=2 - ((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=${#ITEM}+OFFSET + MSG_MAX_LENGTH=$((MSG_MAX_LENGTH < ${#ITEM} + OFFSET ? ${#ITEM} + OFFSET : MSG_MAX_LENGTH)) KERNEL_MENU+=("$TAG" "$ITEM " "OFF") done < <(echo "$available_kernels") -remove_kernels=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Current Kernel $current_kernel" --checklist "\nSelect Kernels to remove:\n" 16 $((MSG_MAX_LENGTH + 58)) 6 "${KERNEL_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit +# Display checklist to select kernels for removal +remove_kernels=$(whiptail --backtitle "Proxmox VE Helper Scripts" \ + --title "Current Kernel: $current_kernel" \ + --checklist "\nSelect kernels to remove:\n" \ + 16 $((MSG_MAX_LENGTH + 58)) 6 "${KERNEL_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit + +# Exit if no kernel was selected [ -z "$remove_kernels" ] && { - whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Kernel Selected" --msgbox "It appears that no Kernel was selected" 10 68 + whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Kernel Selected" \ + --msgbox "It appears no kernel was selected." 10 68 echo "Exiting..." sleep 2 clear exit } -whiptail --backtitle "Proxmox VE Helper Scripts" --title "Remove Kernels" --yesno "Would you like to remove the $(echo $remove_kernels | awk '{print NF}') previously selected Kernels?" 10 68 || exit -msg_info "Removing ${CL}${RD}$(echo $remove_kernels | awk '{print NF}') ${CL}${YW}old Kernels${CL}" -/usr/bin/apt purge -y $remove_kernels >/dev/null 2>&1 -msg_ok "Successfully Removed Kernels" +# Confirm removal +whiptail --backtitle "Proxmox VE Helper Scripts" --title "Remove Kernels" \ + --yesno "Would you like to remove the $(echo $remove_kernels | awk '{print NF}') selected kernels?" 10 68 || exit +# Process kernel removal +msg_info "Removing ${RD}$(echo $remove_kernels | awk '{print NF}') ${YW}old kernels${CL}" +for kernel in $remove_kernels; do + if [[ $kernel == *"-signed" ]]; then + # Handle signed kernels with dependencies + touch /please-remove-proxmox-ve # Temporarily bypass Proxmox warnings + if sudo apt-get purge -y "$kernel" >/dev/null 2>&1; then + msg_ok "Removed kernel: $kernel" + else + msg_info "Failed to remove kernel: $kernel. Check dependencies or manual removal." + fi + rm -f /please-remove-proxmox-ve # Clean up bypass file + else + # Standard kernel removal + if sudo apt-get purge -y "$kernel" >/dev/null 2>&1; then + msg_ok "Removed kernel: $kernel" + else + msg_info "Failed to remove kernel: $kernel. Check dependencies or manual removal." + fi + fi + sleep 1 +done + +# Update GRUB configuration msg_info "Updating GRUB" -/usr/sbin/update-grub >/dev/null 2>&1 -msg_ok "Successfully Updated GRUB" +if /usr/sbin/update-grub >/dev/null 2>&1; then + msg_ok "GRUB updated successfully" +else + msg_info "Failed to update GRUB" +fi + +# Completion message msg_info "Exiting" sleep 2 msg_ok "Finished" From a9a640bb758300d523cd1d9269f8f59cb6f1e31f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 18 Dec 2024 15:53:19 +0100 Subject: [PATCH 085/286] Update CHANGELOG.md (#905) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8914dc11ffe..38ece4093c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Kernel-Clean for Proxmox 8.x [@MickLesk](https://github.com/MickLesk) ([#904](https://github.com/community-scripts/ProxmoxVE/pull/904)) - [Frigate] Remove SSE 4.2 from instruction set supporting OpenVino [@remz1337](https://github.com/remz1337) ([#902](https://github.com/community-scripts/ProxmoxVE/pull/902)) ### 🌐 Website From 6f96aebc271d190b1854a275a490b8707ec89cf2 Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:16:54 -0800 Subject: [PATCH 086/286] Enhance Tooltip component by adding CircleHelp icon and fix instructions in script component (#910) * Enhance Tooltip component by adding CircleHelp icon and adjusting layout. Updated TooltipContent max width for better display. * Refactor ScriptItem and InstallCommand components to improve conditional rendering based on item type. Updated text to clarify usage instructions for 'misc' type scripts. --- frontend/src/app/scripts/_components/ScriptItem.tsx | 2 +- .../_components/ScriptItems/InstallCommand.tsx | 11 ++++++----- .../app/scripts/_components/ScriptItems/Tooltips.tsx | 7 +++++-- 3 files changed, 12 insertions(+), 8 deletions(-) diff --git a/frontend/src/app/scripts/_components/ScriptItem.tsx b/frontend/src/app/scripts/_components/ScriptItem.tsx index 835fce57698..fb9e64e0b85 100644 --- a/frontend/src/app/scripts/_components/ScriptItem.tsx +++ b/frontend/src/app/scripts/_components/ScriptItem.tsx @@ -81,7 +81,7 @@ function ScriptItem({

- How to {item.type ? "install" : "use"} + How to {item.type == "misc" ? "use" : "install"}

diff --git a/frontend/src/app/scripts/_components/ScriptItems/InstallCommand.tsx b/frontend/src/app/scripts/_components/ScriptItems/InstallCommand.tsx index 58525f6b4ef..26d941cf395 100644 --- a/frontend/src/app/scripts/_components/ScriptItems/InstallCommand.tsx +++ b/frontend/src/app/scripts/_components/ScriptItems/InstallCommand.tsx @@ -28,15 +28,16 @@ export default function InstallCommand({ item }: { item: Script }) { time and minimal system resource usage. You are also obliged to adhere to updates provided by the package maintainer. - ) : item.type ? ( + ) : item.type == "misc" ? ( <> - To create a new Proxmox VE {item.name}{" "} - {getDisplayValueFromType(item.type)}, run the command below in the - Proxmox VE Shell. + To use the {item.name} script, run the command below in the shell. ) : ( <> - To use the {item.name} script, run the command below in the shell. + {" "} + To create a new Proxmox VE {item.name}{" "} + {getDisplayValueFromType(item.type)}, run the command below in the + Proxmox VE Shell. )}

diff --git a/frontend/src/app/scripts/_components/ScriptItems/Tooltips.tsx b/frontend/src/app/scripts/_components/ScriptItems/Tooltips.tsx index 7e70b68e996..9adb58b740b 100644 --- a/frontend/src/app/scripts/_components/ScriptItems/Tooltips.tsx +++ b/frontend/src/app/scripts/_components/ScriptItems/Tooltips.tsx @@ -6,6 +6,7 @@ import { TooltipTrigger, } from "@/components/ui/tooltip"; import { Script } from "@/lib/types"; +import { CircleHelp } from "lucide-react"; import React from "react"; interface TooltipProps { @@ -18,9 +19,11 @@ const TooltipBadge: React.FC = ({ variant, label, content }) => ( - {label} + + {label} + - + {content} From bda30403daff70a94c3155aa9aef67e123047948 Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:17:21 -0800 Subject: [PATCH 087/286] Fix script path formatting in InstallMethod component (#909) --- frontend/src/app/json-editor/_components/InstallMethod.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/src/app/json-editor/_components/InstallMethod.tsx b/frontend/src/app/json-editor/_components/InstallMethod.tsx index 85368999e11..792ec403aaf 100644 --- a/frontend/src/app/json-editor/_components/InstallMethod.tsx +++ b/frontend/src/app/json-editor/_components/InstallMethod.tsx @@ -34,7 +34,7 @@ function InstallMethod({ setScript((prev) => { const method = InstallMethodSchema.parse({ type: "default", - script: `/${prev.type}/${prev.slug}.sh`, + script: `${prev.type}/${prev.slug}.sh`, resources: { cpu: null, ram: null, From c0ac8a7fabbc7581f774997a170ca9f1412cf98d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 09:18:50 +0100 Subject: [PATCH 088/286] Update CHANGELOG.md (#916) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 38ece4093c9..7bf54aa232f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,15 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-19 + +### Changed + +### 🌐 Website + +- Fix script path formatting in InstallMethod component [@BramSuurdje](https://github.com/BramSuurdje) ([#909](https://github.com/community-scripts/ProxmoxVE/pull/909)) +- Enhance Tooltip component by adding CircleHelp icon and fix instructions in script component [@BramSuurdje](https://github.com/BramSuurdje) ([#910](https://github.com/community-scripts/ProxmoxVE/pull/910)) + ## 2024-12-18 ### Changed From 94d81fdf5ca4fe219ea377bccffed2ec20119fc7 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 09:27:10 +0100 Subject: [PATCH 089/286] Fix - Set Warning LXC-IPTag --- json/add-lxc-iptag.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json index 244d9d13045..fe9a629de45 100644 --- a/json/add-lxc-iptag.json +++ b/json/add-lxc-iptag.json @@ -38,6 +38,10 @@ { "text": "Configuration: `nano /opt/lxc-iptag/iptag.conf`. iptag.service must be restarted after change.", "type": "Info" + }, + { + "text": "The Proxmox Node must contain ipcalc and net-tools. ´apt-get install -y ipcalc net-tools´", + "type": "warn" } ] } From 25049290b09da91b88cba95c93e9ac8e7b539c47 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 09:36:46 +0100 Subject: [PATCH 090/286] Update add-lxc-iptag.json --- json/add-lxc-iptag.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json index fe9a629de45..641896214e3 100644 --- a/json/add-lxc-iptag.json +++ b/json/add-lxc-iptag.json @@ -40,7 +40,7 @@ "type": "Info" }, { - "text": "The Proxmox Node must contain ipcalc and net-tools. ´apt-get install -y ipcalc net-tools´", + "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`", "type": "warn" } ] From 08f6042f65749490728ed8c20a5af861d45c05d4 Mon Sep 17 00:00:00 2001 From: EvilBlood Date: Thu, 19 Dec 2024 09:49:14 +0100 Subject: [PATCH 091/286] Update part-db.json (#898) Fix Typo in Cerds-Filename --- json/part-db.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/part-db.json b/json/part-db.json index 3a8d8d4647b..a48f91570d4 100644 --- a/json/part-db.json +++ b/json/part-db.json @@ -32,7 +32,7 @@ }, "notes": [ { - "text": "Show login and database credentials: `cat part-db.creds`", + "text": "Show login and database credentials: `cat partdb.creds`", "type": "info" } ] From ba76b4fe37fff9eb91de8e63d224a8de29786265 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 09:50:49 +0100 Subject: [PATCH 092/286] Update CHANGELOG.md (#917) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7bf54aa232f..309ba8a6e10 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,8 +22,9 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website -- Fix script path formatting in InstallMethod component [@BramSuurdje](https://github.com/BramSuurdje) ([#909](https://github.com/community-scripts/ProxmoxVE/pull/909)) +- Fix Part-DB Docu (cred command) [@EvilBlood](https://github.com/EvilBlood) ([#898](https://github.com/community-scripts/ProxmoxVE/pull/898)) - Enhance Tooltip component by adding CircleHelp icon and fix instructions in script component [@BramSuurdje](https://github.com/BramSuurdje) ([#910](https://github.com/community-scripts/ProxmoxVE/pull/910)) +- Fix script path formatting in InstallMethod component [@BramSuurdje](https://github.com/BramSuurdje) ([#909](https://github.com/community-scripts/ProxmoxVE/pull/909)) ## 2024-12-18 From 773e3ba983f19429fb310e56e4bcc1136dc2ced8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 10:15:42 +0100 Subject: [PATCH 093/286] Update add-lxc-iptag.json --- json/add-lxc-iptag.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json index 641896214e3..468d2745363 100644 --- a/json/add-lxc-iptag.json +++ b/json/add-lxc-iptag.json @@ -33,11 +33,11 @@ "notes": [ { "text": "Execute within the Proxmox shell", - "type": "Info" + "type": "info" }, { "text": "Configuration: `nano /opt/lxc-iptag/iptag.conf`. iptag.service must be restarted after change.", - "type": "Info" + "type": "info" }, { "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`", From a5d6023da82ea2d5f545979886d3d92648ddf6b7 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:11:10 +0100 Subject: [PATCH 094/286] Fix Omada - Crawling latest version (#918) * Fix Update Function Omada * Fix Omada Install Latest URL * Fix Dependencies --- ct/omada.sh | 6 +++--- install/omada-install.sh | 13 +++++++------ 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/ct/omada.sh b/ct/omada.sh index 26a26df4ad1..3befcfb7867 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -32,8 +32,8 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -o 'https://.*x64.deb' | head -n1) - latest_version=$(basename "${latest_url}") + latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)"' | sed 's/href="//' | sort | tail -n 1) + latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." exit @@ -53,4 +53,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8043${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8043${CL}" diff --git a/install/omada-install.sh b/install/omada-install.sh index 318851048ba..14764747831 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -14,11 +14,12 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y gnupg -$STD apt-get install -y jsvc +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gnupg \ + jsvc msg_ok "Installed Dependencies" msg_info "Installing Azul Zulu" @@ -37,7 +38,7 @@ wget -qL https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/3.6/multiv $STD dpkg -i mongodb-org-server_3.6.23_amd64.deb msg_ok "Installed MongoDB" -latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -o 'https://.*x64.deb' | head -n1) +latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)"' | sed 's/href="//' | sort | tail -n 1) latest_version=$(basename "$latest_url") msg_info "Installing Omada Controller" From 785d745b22d212d11b7a827242289c5a33cf24b1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 11:45:14 +0100 Subject: [PATCH 095/286] Update CHANGELOG.md (#919) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 309ba8a6e10..d9d3deba0cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,11 +20,15 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Fix Omada - Crawling latest version [@MickLesk](https://github.com/MickLesk) ([#918](https://github.com/community-scripts/ProxmoxVE/pull/918)) + ### 🌐 Website +- Fix script path formatting in InstallMethod component [@BramSuurdje](https://github.com/BramSuurdje) ([#909](https://github.com/community-scripts/ProxmoxVE/pull/909)) - Fix Part-DB Docu (cred command) [@EvilBlood](https://github.com/EvilBlood) ([#898](https://github.com/community-scripts/ProxmoxVE/pull/898)) - Enhance Tooltip component by adding CircleHelp icon and fix instructions in script component [@BramSuurdje](https://github.com/BramSuurdje) ([#910](https://github.com/community-scripts/ProxmoxVE/pull/910)) -- Fix script path formatting in InstallMethod component [@BramSuurdje](https://github.com/BramSuurdje) ([#909](https://github.com/community-scripts/ProxmoxVE/pull/909)) ## 2024-12-18 From 9da79b9a973aeaebfe37a22fccb51db708c68656 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:15:12 +0100 Subject: [PATCH 096/286] Update omada.sh --- ct/omada.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/omada.sh b/ct/omada.sh index 3befcfb7867..a82cd3d3626 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -32,7 +32,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)"' | sed 's/href="//' | sort | tail -n 1) + latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)' | sed 's/href="//' | sort | tail -n 1) latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." From 4c04a33a293edf4a281f170b425db2351ed076fd Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 19 Dec 2024 14:15:25 +0100 Subject: [PATCH 097/286] Update omada-install.sh --- install/omada-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/omada-install.sh b/install/omada-install.sh index 14764747831..6cb1eb008db 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -38,7 +38,7 @@ wget -qL https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/3.6/multiv $STD dpkg -i mongodb-org-server_3.6.23_amd64.deb msg_ok "Installed MongoDB" -latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)"' | sed 's/href="//' | sort | tail -n 1) +latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)' | sed 's/href="//' | sort | tail -n 1) latest_version=$(basename "$latest_url") msg_info "Installing Omada Controller" From 23d7587f04689911e53a4ffcd50c13c6d8a5f5d6 Mon Sep 17 00:00:00 2001 From: Maximilian Bosche Date: Thu, 19 Dec 2024 15:09:19 +0100 Subject: [PATCH 098/286] mysql not showing ip after install (#924) --- ct/mysql.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/mysql.sh b/ct/mysql.sh index e61b0a0bdb3..9c43b59e65d 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -46,4 +46,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following IP:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}{IP}:3306${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}${IP}:3306${CL}" From 700902ba2ed1f1703c15431d36d713535c0d3687 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 15:35:28 +0100 Subject: [PATCH 099/286] Update CHANGELOG.md (#925) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9d3deba0cb..27d95bea1b3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- mysql not showing ip after install [@snow2k9](https://github.com/snow2k9) ([#924](https://github.com/community-scripts/ProxmoxVE/pull/924)) - Fix Omada - Crawling latest version [@MickLesk](https://github.com/MickLesk) ([#918](https://github.com/community-scripts/ProxmoxVE/pull/918)) ### 🌐 Website From 6487885f4bdf1270d5b9c7b7c31f801b9ff4dd9c Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Thu, 19 Dec 2024 16:31:30 +0100 Subject: [PATCH 100/286] Fix: Bookstack Update Function (#844) * Fix: Bookstack Update Function * Fixed Formating * Update Identions and Spaces * Changes * Add leadng / to unzip --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/bookstack.sh | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/ct/bookstack.sh b/ct/bookstack.sh index d7cf509317c..a54a11e2aad 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -38,32 +38,41 @@ function update_script() { systemctl stop apache2 msg_ok "Services Stopped" - msg_info "Updating ${APP} to ${RELEASE}" - cp /opt/bookstack/.env /opt/.env - wget -q "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" - unzip -q v${RELEASE}.zip - mv BookStack-${RELEASE} /opt/bookstack - mv /opt/.env /opt/bookstack/.env + msg_info "Updating ${APP} to v${RELEASE}" + mv /opt/bookstack /opt/bookstack-backup + wget -q --directory-prefix=/opt "https://github.com/BookStackApp/BookStack/archive/refs/tags/v${RELEASE}.zip" + unzip -q /opt/v${RELEASE}.zip -d /opt + mv /opt/BookStack-${RELEASE} /opt/bookstack + cp /opt/bookstack-backup/.env /opt/bookstack/.env + cp -r /opt/bookstack-backup/public/uploads/ /opt/bookstack/public/uploads + cp -r /opt/bookstack-backup/storage/uploads/ /opt/bookstack/storage/uploads + cp -r /opt/bookstack-backup/themes/ /opt/bookstack/themes cd /opt/bookstack COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null php artisan key:generate --force &>/dev/null php artisan migrate --force &>/dev/null + chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage + chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage + chmod -R 775 /opt/bookstack/storage /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads + chmod -R 640 /opt/bookstack/.env echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + msg_ok "Updated ${APP} to v${RELEASE}" msg_info "Starting Apache2" systemctl start apache2 msg_ok "Started Apache2" msg_info "Cleaning Up" - rm -rf v${RELEASE}.zip + rm -rf /opt/bookstack-backup + rm -rf /opt/v${RELEASE}.zip msg_ok "Cleaned" msg_ok "Updated Successfully" else - msg_ok "No update required. ${APP} is already at ${RELEASE}" + msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit } + start build_container description From 94b51fefeb26c7c48614f2dc83c989378b5edfb0 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 19 Dec 2024 16:32:49 +0100 Subject: [PATCH 101/286] Update CHANGELOG.md (#928) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 27d95bea1b3..5bad34f36e0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Bookstack Update Function [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#844](https://github.com/community-scripts/ProxmoxVE/pull/844)) - mysql not showing ip after install [@snow2k9](https://github.com/snow2k9) ([#924](https://github.com/community-scripts/ProxmoxVE/pull/924)) - Fix Omada - Crawling latest version [@MickLesk](https://github.com/MickLesk) ([#918](https://github.com/community-scripts/ProxmoxVE/pull/918)) From 2326e1169923453ade0852a5106b0fc1e0977c98 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:01:32 +0100 Subject: [PATCH 102/286] New Script: CheckMk (#926) * New Script: CheckMk * Add sudo * Change to dpkg -i --- ct/checkmk.sh | 59 ++++++++++++++++++++++++++++++++++++++ install/checkmk-install.sh | 48 +++++++++++++++++++++++++++++++ json/checkmk.json | 34 ++++++++++++++++++++++ 3 files changed, 141 insertions(+) create mode 100644 ct/checkmk.sh create mode 100644 install/checkmk-install.sh create mode 100644 json/checkmk.json diff --git a/ct/checkmk.sh b/ct/checkmk.sh new file mode 100644 index 00000000000..e76a69d8fcb --- /dev/null +++ b/ct/checkmk.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://checkmk.com/ + +APP="checkmk" +var_tags="monitoring" +var_cpu="2" +var_ram="2048" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +header_info "$APP" +base_settings + +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /opt/checkmk_version.txt ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | grep -v "*-rc" | tail -n +2 | head -n 1) + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Updating ${APP} to v${RELEASE}" + omd stop monitoring &>/dev/null + omd cp monitoring monitoringbackup &>/dev/null + wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb + dpkg -i /opt/checkmk.deb &>/dev/null + omd --force -V ${RELEASE}.cre update --conflict=install monitoring &>/dev/null + omd start monitoring &>/dev/null + omd -f rm monitoringbackup &>/dev/null + omd cleanup &>/dev/null + rm -rf /opt/checkmk.deb + msg_ok "Updated ${APP} to v${RELEASE}" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." + fi + + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/monitoring${CL}" diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh new file mode 100644 index 00000000000..9c44d8414a9 --- /dev/null +++ b/install/checkmk-install.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +#Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Install Checkmk" +RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | grep -v "*-rc" | tail -n +2 | head -n 1) +wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb +$STD dpkg -i /opt/checkmk.deb +echo "${RELEASE}" >"/opt/checkmk_version.txt" +msg_ok "Installed Checkmk" + +msg_info "Creating Service" +PASSWORD=$(omd create monitoring | grep "password:" | awk '{print $NF}') +$STD omd start &>/dev/null +{ + echo "Application-Credentials" + echo "Username: cmkadmin" + echo "Password: $PASSWORD" +} >> ~/checkmk.creds +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/checkmk.deb +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/checkmk.json b/json/checkmk.json new file mode 100644 index 00000000000..0305c7b21e3 --- /dev/null +++ b/json/checkmk.json @@ -0,0 +1,34 @@ +{ + "name": "Checkmk", + "slug": "checkmk", + "categories": [ + 7 + ], + "date_created": "2024-12-19", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://docs.checkmk.com/", + "website": "https://checkmk.com/", + "logo": "https://github.com/Checkmk/checkmk/blob/master/omd/license_sources/checkmk_logo.svg", + "description": "Checkmk - Your complete IT monitoring solution", + "install_methods": [ + { + "type": "default", + "script": "ct/checkmk.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 4, + "os": null, + "version": null + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} \ No newline at end of file From 9379ac4032f46e9f9fceccdce0ffcae3d4216ae2 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:02:06 +0100 Subject: [PATCH 103/286] New Script: Zammad (#640) * New Script: Zammad * Implement changes * Changes after review * Added changes * Added changes * Change to new System * Change to new Default System * formatting * Update zammad.json * fix json * Update zammad.json fix OS * remove / in json * Sync with develop branch --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/zammad.sh | 56 +++++++++++++++++++++++++++++++++++ install/zammad-install.sh | 61 +++++++++++++++++++++++++++++++++++++++ json/zammad.json | 34 ++++++++++++++++++++++ 3 files changed, 151 insertions(+) create mode 100644 ct/zammad.sh create mode 100644 install/zammad-install.sh create mode 100644 json/zammad.json diff --git a/ct/zammad.sh b/ct/zammad.sh new file mode 100644 index 00000000000..81bd5e835e5 --- /dev/null +++ b/ct/zammad.sh @@ -0,0 +1,56 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://zammad.com + +#App Default Values +APP="Zammad" +TAGS="webserver;ticket-system" +var_disk="8" +var_cpu="2" +var_ram="4096" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/zamad ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping Service" + systemctl stop zammad &>/dev/null + msg_info "Updating ${APP}" + apt-get update &>/dev/null + apt-mark hold zammad &>/dev/null + apt-get -y upgrade &>/dev/null + apt-mark unhold zammad &>/dev/null + apt-get -y upgrade &>/dev/null + msg_info "Starting Service" + systemctl start zammad &>/dev/null + msg_ok "Updated ${APP} LXC" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/install/zammad-install.sh b/install/zammad-install.sh new file mode 100644 index 00000000000..274df3a3e96 --- /dev/null +++ b/install/zammad-install.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +#Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + git \ + sudo \ + gpg \ + wget \ + nginx \ + apt-transport-https \ + gnupg +msg_ok "Installed Dependencies" + +msg_info "Setting up Elasticsearch" +curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo gpg --dearmor -o /usr/share/keyrings/elasticsearch-keyring.gpg +echo "deb [signed-by=/usr/share/keyrings/elasticsearch-keyring.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee /etc/apt/sources.list.d/elastic-7.x.list >/dev/null +$STD apt-get update +$STD apt-get -y install elasticsearch +echo "-Xms2g" >>/etc/elasticsearch/jvm.options +echo "-Xmx2g" >>/etc/elasticsearch/jvm.options +$STD /usr/share/elasticsearch/bin/elasticsearch-plugin install ingest-attachment -b +systemctl -q restart elasticsearch +msg_ok "Setup Elasticsearch" + +msg_info "Installing Zammad" +curl -fsSL https://dl.packager.io/srv/zammad/zammad/key | gpg --dearmor | sudo tee /etc/apt/keyrings/pkgr-zammad.gpg >/dev/null +echo "deb [signed-by=/etc/apt/keyrings/pkgr-zammad.gpg] https://dl.packager.io/srv/deb/zammad/zammad/stable/debian 12 main" | sudo tee /etc/apt/sources.list.d/zammad.list >/dev/null +$STD apt-get update +$STD apt-get -y install zammad +$STD zammad run rails r "Setting.set('es_url', 'http://localhost:9200')" +$STD zammad run rake zammad:searchindex:rebuild +msg_ok "Installed Zammad" + +msg_info "Setup Services" +cp /opt/zammad/contrib/nginx/zammad.conf /etc/nginx/sites-available/zammad.conf +IPADDRESS=$(hostname -I | awk '{print $1}') +sed -i "s/server_name localhost;/server_name $IPADDRESS;/g" /etc/nginx/sites-available/zammad.conf +$STD systemctl reload nginx +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/zammad.json b/json/zammad.json new file mode 100644 index 00000000000..1e6f5a96d50 --- /dev/null +++ b/json/zammad.json @@ -0,0 +1,34 @@ +{ + "name": "Zammad", + "slug": "zammad", + "categories": [ + 11 + ], + "date_created": "2024-12-18", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": null, + "documentation": "https://docs.zammad.org/en/latest/", + "website": "https://zammad.com/", + "logo": "https://raw.githubusercontent.com/zammad/zammad/refs/heads/develop/public/assets/images/logo.svg", + "description": "Zammad is a web based open source helpdesk/customer support system with many features to manage customer communication via several channels like telephone, facebook, twitter, chat and emails. It is distributed under version 3 of the GNU AFFERO General Public License (GNU AGPLv3).", + "install_methods": [ + { + "type": "default", + "script": "ct/zammad.sh", + "resources": { + "cpu": 2, + "ram": 4096, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 949ec3d1810b16bf7539fb9370db7e09fa1571ca Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:03:10 +0100 Subject: [PATCH 104/286] New Script: Apache Guacamole (#657) * New Script: Apache Guacamole * Changes as requested * Changed to new System * Changes * Update apache-guacamole.json * Update apache-guacamole.sh * Update apache-guacamole.sh * remove / in json * update install script from dev (changed functions) * Update apache-guacamole.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/apache-guacamole.sh | 47 ++++++++++ install/apache-guacamole-install.sh | 135 ++++++++++++++++++++++++++++ json/apache-guacamole.json | 34 +++++++ 3 files changed, 216 insertions(+) create mode 100644 ct/apache-guacamole.sh create mode 100644 install/apache-guacamole-install.sh create mode 100644 json/apache-guacamole.json diff --git a/ct/apache-guacamole.sh b/ct/apache-guacamole.sh new file mode 100644 index 00000000000..96df515fd86 --- /dev/null +++ b/ct/apache-guacamole.sh @@ -0,0 +1,47 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) +# License: | MIT https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://guacamole.apache.org/ + +#App Default Values +APP="Apache-Guacamole" +TAGS="webserver;remote" +var_disk="4" +var_cpu="1" +var_ram="2048" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/apache-guacamole ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "Ther is currently no automatic update function for ${APP}." + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/guacamole${CL}" + diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh new file mode 100644 index 00000000000..0c95a69b244 --- /dev/null +++ b/install/apache-guacamole-install.sh @@ -0,0 +1,135 @@ +#!/usr/bin/env bash +#Copyright (c) 2021-2024 community-scripts ORG +# Author: Michel Roegl-Brunner (michelroegl-brunner) | MickLesk (CanbiZ) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + build-essential \ + curl \ + jq \ + libcairo2-dev \ + libturbojpeg0 \ + libpng-dev \ + libtool-bin \ + libossp-uuid-dev \ + libvncserver-dev \ + freerdp2-dev \ + libssh2-1-dev \ + libtelnet-dev \ + libwebsockets-dev \ + libpulse-dev \ + libvorbis-dev \ + libwebp-dev \ + libssl-dev \ + libpango1.0-dev \ + libswscale-dev \ + libavcodec-dev \ + libavutil-dev \ + libavformat-dev \ + mariadb-server \ + default-jdk +msg_ok "Installed Dependencies" + +msg_info "Setup Apache Tomcat" +RELEASE=$(wget -qO- https://dlcdn.apache.org/tomcat/tomcat-9/ | grep -oP '(?<=href=")v[^"/]+(?=/")' | sed 's/^v//') +mkdir -p /opt/apache-guacamole/tomcat9 +mkdir -p /opt/apache-guacamole/server +wget -qO- "https://dlcdn.apache.org/tomcat/tomcat-9/v${RELEASE}/bin/apache-tomcat-${RELEASE}.tar.gz" | tar -xz -C /opt/apache-guacamole/tomcat9 --strip-components=1 +useradd -r -d /opt/apache-guacamole/tomcat9 -s /bin/false tomcat +chown -R tomcat: /opt/apache-guacamole/tomcat9 +chmod -R g+r /opt/apache-guacamole/tomcat9/conf +chmod g+x /opt/apache-guacamole/tomcat9/conf +msg_ok "Setup Apache Tomcat" + +msg_info "Setup Apache Guacamole" +mkdir -p /etc/guacamole/{extensions,lib} +RELEASE_SERVER=$(curl -sL https://api.github.com/repos/apache/guacamole-server/tags | jq -r '.[0].name') +wget -qO- https://api.github.com/repos/apache/guacamole-server/tarball/refs/tags/${RELEASE_SERVER} | tar -xz --strip-components=1 -C /opt/apache-guacamole/server +cd /opt/apache-guacamole/server +$STD autoreconf -fi +$STD ./configure --with-init-dir=/etc/init.d --enable-allow-freerdp-snapshots +$STD make +$STD make install +$STD ldconfig +RELEASE_CLIENT=$(curl -sL https://api.github.com/repos/apache/guacamole-client/tags | jq -r '.[0].name') +wget -q -O /opt/apache-guacamole/tomcat9/webapps/guacamole.war https://downloads.apache.org/guacamole/${RELEASE_CLIENT}/binary/guacamole-${RELEASE_CLIENT}.war +cd /root +wget -q --directory-prefix=/root/ https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.26.tar.gz +$STD tar -xf ~/mysql-connector-java-8.0.26.tar.gz +mv ~/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar /etc/guacamole/lib/ +wget -q --directory-prefix=/root/ https://downloads.apache.org/guacamole/1.5.5/binary/guacamole-auth-jdbc-1.5.5.tar.gz +$STD tar -xf ~/guacamole-auth-jdbc-1.5.5.tar.gz +mv ~/guacamole-auth-jdbc-1.5.5/mysql/guacamole-auth-jdbc-mysql-1.5.5.jar /etc/guacamole/extensions/ +msg_ok "Setup Apache Guacamole" + +msg_info "Setup Database" +DB_NAME=guacamole_db +DB_USER=guacamole_user +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +mysql -u root -e "CREATE DATABASE $DB_NAME;" +mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" +mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" +{ + echo "SnipeIT-Credentials" + echo "SnipeIT Database User: $DB_USER" + echo "SnipeIT Database Password: $DB_PASS" + echo "SnipeIT Database Name: $DB_NAME" +} >> ~/guacamole.creds +cd guacamole-auth-jdbc-1.5.5/mysql/schema +cat *.sql | mysql -u root ${DB_NAME} +{ + echo "mysql-hostname: 127.0.0.1" + echo "mysql-port: 3306" + echo "mysql-database: $DB_NAME" + echo "mysql-username: $DB_USER" + echo "mysql-password: $DB_PASS" + +} >> /etc/guacamole/guacamole.properties +msg_ok "Setup Database" + +msg_info "Setup Service" +JAVA_HOME=$(update-alternatives --query javadoc | grep Value: | head -n1 | sed 's/Value: //' | sed 's@bin/javadoc$@@') +cat </etc/systemd/system/tomcat.service +[Unit] +Description=Apache Tomcat Web Application Container +After=network.target +[Service] +Type=forking +Environment="JAVA_HOME=${JAVA_HOME}" +Environment="CATALINA_PID=/opt/apache-guacamole/tomcat9/temp/tomcat.pid" +Environment="CATALINA_HOME=/opt/apache-guacamole/tomcat9/" +Environment="CATALINA_BASE=/opt/apache-guacamole/tomcat9/" +Environment="CATALINA_OPTS=-Xms512M -Xmx1024M -server -XX:+UseParallelGC" +Environment="JAVA_OPTS=-Djava.awt.headless=true -Djava.security.egd=file:/dev/./urandom" +ExecStart=/opt/apache-guacamole/tomcat9/bin/startup.sh +ExecStop=/opt/apache-guacamole/tomcat9/bin/shutdown.sh +User=tomcat +Group=tomcat +UMask=0007 +RestartSec=10 +Restart=always +[Install] +WantedBy=multi-user.target +EOF +systemctl -q enable --now tomcat guacd mysql +msg_ok "Setup Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf ~/mysql-connector-java-8.0.26{,.tar.gz} +rm -rf ~/guacamole-auth-jdbc-1.5.5{,.tar.gz} +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/apache-guacamole.json b/json/apache-guacamole.json new file mode 100644 index 00000000000..cf095ea8be7 --- /dev/null +++ b/json/apache-guacamole.json @@ -0,0 +1,34 @@ +{ + "name": "Apache Guacamole", + "slug": "apache-guacamole", + "categories": [ + 11 + ], + "date_created": "2024-12-19", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 8080, + "documentation": null, + "website": "https://guacamole.apache.org/", + "logo": "https://guacamole.apache.org/images/logos/guac-tricolor-logo.svg", + "description": "Apache Guacamole is a clientless remote desktop gateway. It supports standard protocols like VNC, RDP, and SSH.", + "install_methods": [ + { + "type": "default", + "script": "ct/apache-guacamole.sh", + "resources": { + "cpu": 1, + "ram": 2048, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "guacadmin", + "password": "guacadmin" + }, + "notes": [] +} From 7f86418cf57f22281f7a03b19310bc392bd7826f Mon Sep 17 00:00:00 2001 From: Dominik Siebel <145283+dsiebel@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:03:49 +0100 Subject: [PATCH 105/286] new script: silverbullet (#659) * new script: silverbullet * update copyright and author information * address code review comments and suggestions * fix: overwrite existing binary on unzip * address remaining review comments * add documenation link * update header and footer to new standard * little fixes * little fixes --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/silverbullet.sh | 61 +++++++++++++++++++++++++++++++++ install/silverbullet-install.sh | 59 +++++++++++++++++++++++++++++++ json/silverbullet.json | 34 ++++++++++++++++++ 3 files changed, 154 insertions(+) create mode 100644 ct/silverbullet.sh create mode 100644 install/silverbullet-install.sh create mode 100644 json/silverbullet.json diff --git a/ct/silverbullet.sh b/ct/silverbullet.sh new file mode 100644 index 00000000000..744379b5b00 --- /dev/null +++ b/ct/silverbullet.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Dominik Siebel (dsiebel) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://silverbullet.md + +# App default values +APP="Silverbullet" +var_tags="notes" +var_cpu="1" +var_disk="2" +var_ram="512" +var_os="debian" +var_version="12" + +# App Output & Base Settings +header_info "${APP}" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/silverbullet ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + RELEASE=$(curl -s https://api.github.com/repos/silverbulletmd/silverbullet/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f "/opt/${APP}_version.txt" || "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop silverbullet + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to v${RELEASE}" + wget -q https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip + unzip -q silverbullet-server-linux-x86_64.zip + mv silverbullet /opt/silverbullet/bin/ + chmod +x /opt/silverbullet/bin/silverbullet + echo "${RELEASE}" >/opt/silverbullet/${APP}_version.txt + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start silverbullet + msg_ok "Started ${APP}" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/install/silverbullet-install.sh b/install/silverbullet-install.sh new file mode 100644 index 00000000000..7338acd5f21 --- /dev/null +++ b/install/silverbullet-install.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Dominik Siebel (dsiebel) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc +msg_ok "Installed Dependencies" + +msg_info "Installing Silverbullet" +RELEASE=$(curl -s https://api.github.com/repos/silverbulletmd/silverbullet/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +mkdir -p /opt/silverbullet/bin /opt/silverbullet/space +wget -q https://github.com/silverbulletmd/silverbullet/releases/download/${RELEASE}/silverbullet-server-linux-x86_64.zip +unzip -oq -d /opt/silverbullet/bin/ silverbullet-server-linux-x86_64.zip +chmod +x /opt/silverbullet/bin/silverbullet +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Silverbullet" + +msg_info "Creating Service" + +cat </etc/systemd/system/silverbullet.service +[Unit] +Description=Silverbullet Daemon +After=syslog.target network.target + +[Service] +User=root +Type=simple +ExecStart=/opt/silverbullet/bin/silverbullet --hostname 0.0.0.0 --port 3000 /opt/silverbullet/space +WorkingDirectory=/opt/silverbullet +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable --now -q silverbullet +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf silverbullet-server-linux-x86_64.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/silverbullet.json b/json/silverbullet.json new file mode 100644 index 00000000000..fd82f0366a4 --- /dev/null +++ b/json/silverbullet.json @@ -0,0 +1,34 @@ +{ + "name": "Silverbullet", + "slug": "silverbullet", + "categories": [ + 14 + ], + "date_created": "2024-12-03", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://silverbullet.md/Manual", + "website": "https://silverbullet.md", + "logo": "https://silverbullet.md/.client/logo.png", + "description": "SilverBullet is a note-taking application optimized for people with a hacker mindset.", + "install_methods": [ + { + "type": "default", + "script": "ct/silverbullet.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 5214c3d531d76f3a08762374e441aaf1bd2c6355 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:04:27 +0100 Subject: [PATCH 106/286] Update build.func to display the Proxmox Hostname (#894) * Update build.func to display the PROXMOX Hostname * Add to Advanced Settings * Changes * Change placement * Remove blank line * Changed Style * Changes * Remove Uppercasing --- misc/build.func | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/misc/build.func b/misc/build.func index bc15bd0b706..d632f0b600f 100644 --- a/misc/build.func +++ b/misc/build.func @@ -8,6 +8,7 @@ variables() { NSAPP=$(echo ${APP,,} | tr -d ' ') # This function sets the NSAPP variable by converting the value of the APP variable to lowercase and removing any spaces. var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP. INTEGER='^[0-9]+([.][0-9]+)?$' # it defines the INTEGER regular expression pattern. + PVEHOST_NAME=$(hostname) # gets the Proxmox Hostname and sets it to Uppercase } # This function sets various color variables using ANSI escape codes for formatting text in the terminal. @@ -314,7 +315,6 @@ advanced_settings() { fi done fi - # Setting Default Tag for Advanced Settings TAGS="community-script;" @@ -580,7 +580,7 @@ advanced_settings() { else clear header_info - echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" advanced_settings fi } @@ -614,7 +614,7 @@ install_script() { case $CHOICE in 1) header_info - echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings${CL}" + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}" VERB="no" base_settings "$VERB" echo_default @@ -622,7 +622,7 @@ install_script() { ;; 2) header_info - echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings (${SEARCH}${BOLD}${BL} Verbose)${CL}" + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME(${SEARCH}${BOLD}${BL} Verbose)${CL}" VERB="yes" base_settings "$VERB" echo_default @@ -630,7 +630,7 @@ install_script() { ;; 3) header_info - echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings${CL}" + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${CL}" advanced_settings break ;; From d283d0a1cb8254d5e4054d73485a9c05afc69e6f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:07:40 +0100 Subject: [PATCH 107/286] Update CHANGELOG.md (#934) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5bad34f36e0..a21a734c430 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,21 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-20 + +### Changed + +### ✨ New Scripts + +- New Script: silverbullet [@dsiebel](https://github.com/dsiebel) ([#659](https://github.com/community-scripts/ProxmoxVE/pull/659)) +- New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) +- New Script: Zammad [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#640](https://github.com/community-scripts/ProxmoxVE/pull/640)) +- New Script: CheckMk [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#926](https://github.com/community-scripts/ProxmoxVE/pull/926)) + +### ❔ Unlabelled + +- Update build.func to display the Proxmox Hostname [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#894](https://github.com/community-scripts/ProxmoxVE/pull/894)) + ## 2024-12-19 ### Changed From af30823bef207e6d536b04cb55c4be7c0eda4b81 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 10:09:32 +0100 Subject: [PATCH 108/286] checkmk logo --- json/checkmk.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/checkmk.json b/json/checkmk.json index 0305c7b21e3..00fec923207 100644 --- a/json/checkmk.json +++ b/json/checkmk.json @@ -11,7 +11,7 @@ "interface_port": 80, "documentation": "https://docs.checkmk.com/", "website": "https://checkmk.com/", - "logo": "https://github.com/Checkmk/checkmk/blob/master/omd/license_sources/checkmk_logo.svg", + "logo": "https://checkmk.com/application/files/cache/thumbnails/67fc39c599afdf20557d538416e3efd3.png", "description": "Checkmk - Your complete IT monitoring solution", "install_methods": [ { @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From 6efc6504d4bb3ec766326ee023f3ee32102756a5 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:15:41 +0100 Subject: [PATCH 109/286] Update checkmk-install.sh --- install/checkmk-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh index 9c44d8414a9..ae2d0c42658 100644 --- a/install/checkmk-install.sh +++ b/install/checkmk-install.sh @@ -24,7 +24,7 @@ msg_ok "Installed Dependencies" msg_info "Install Checkmk" RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | grep -v "*-rc" | tail -n +2 | head -n 1) wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb -$STD dpkg -i /opt/checkmk.deb +$STD apt-get install -y /opt/checkmk.deb echo "${RELEASE}" >"/opt/checkmk_version.txt" msg_ok "Installed Checkmk" From 45c1a73eda71d6ab8004d1457ebc5dfbe1a927ed Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 11:15:53 +0100 Subject: [PATCH 110/286] Update checkmk.sh --- ct/checkmk.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/checkmk.sh b/ct/checkmk.sh index e76a69d8fcb..4a08f504a13 100644 --- a/ct/checkmk.sh +++ b/ct/checkmk.sh @@ -35,7 +35,7 @@ function update_script() { omd stop monitoring &>/dev/null omd cp monitoring monitoringbackup &>/dev/null wget -q https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb -O /opt/checkmk.deb - dpkg -i /opt/checkmk.deb &>/dev/null + apt-get install -y /opt/checkmk.deb &>/dev/null omd --force -V ${RELEASE}.cre update --conflict=install monitoring &>/dev/null omd start monitoring &>/dev/null omd -f rm monitoringbackup &>/dev/null From 2892762a8085a29d2102a23615be4bd6872e8726 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 12:53:57 +0100 Subject: [PATCH 111/286] Update checkmk-install.sh --- install/checkmk-install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh index ae2d0c42658..17182008a30 100644 --- a/install/checkmk-install.sh +++ b/install/checkmk-install.sh @@ -29,12 +29,11 @@ echo "${RELEASE}" >"/opt/checkmk_version.txt" msg_ok "Installed Checkmk" msg_info "Creating Service" -PASSWORD=$(omd create monitoring | grep "password:" | awk '{print $NF}') -$STD omd start &>/dev/null +$STD omd start { echo "Application-Credentials" echo "Username: cmkadmin" - echo "Password: $PASSWORD" + echo "Password: cmkadmin" } >> ~/checkmk.creds msg_ok "Created Service" From 8e1644ab6e77c7e0032114114fb638f308f1e9b3 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:18:25 +0100 Subject: [PATCH 112/286] Update checkmk-install.sh --- install/checkmk-install.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh index 17182008a30..a802bfc3462 100644 --- a/install/checkmk-install.sh +++ b/install/checkmk-install.sh @@ -28,18 +28,19 @@ $STD apt-get install -y /opt/checkmk.deb echo "${RELEASE}" >"/opt/checkmk_version.txt" msg_ok "Installed Checkmk" +motd_ssh +customize + msg_info "Creating Service" +PASSWORD=$(omd create monitoring | grep "password:" | awk '{print $NF}') $STD omd start { echo "Application-Credentials" echo "Username: cmkadmin" - echo "Password: cmkadmin" + echo "Password: $PASSWORD" } >> ~/checkmk.creds msg_ok "Created Service" -motd_ssh -customize - msg_info "Cleaning up" rm -rf /opt/checkmk.deb $STD apt-get -y autoremove From abb0e0f96d074ec4a02a9816ebc4ead1e3183e64 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:23:25 +0100 Subject: [PATCH 113/286] Update build.func --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index d632f0b600f..b43746eac9e 100644 --- a/misc/build.func +++ b/misc/build.func @@ -622,7 +622,7 @@ install_script() { ;; 2) header_info - echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME(${SEARCH}${BOLD}${BL} Verbose)${CL}" + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}${BL}Verbose)${CL}" VERB="yes" base_settings "$VERB" echo_default From 4c042c180f3c3e2c32a5a4a4b0e61a8ac15a0f5c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:28:53 +0100 Subject: [PATCH 114/286] Update CHANGELOG.md (#936) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a21a734c430..50237a38298 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,8 +23,8 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts - New Script: silverbullet [@dsiebel](https://github.com/dsiebel) ([#659](https://github.com/community-scripts/ProxmoxVE/pull/659)) -- New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: Zammad [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#640](https://github.com/community-scripts/ProxmoxVE/pull/640)) +- New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: CheckMk [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#926](https://github.com/community-scripts/ProxmoxVE/pull/926)) ### ❔ Unlabelled From f40c606808414c3270837fc3dd526944a2a852bd Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:29:03 +0100 Subject: [PATCH 115/286] Add Login Note for Checkmk (#940) --- json/checkmk.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/json/checkmk.json b/json/checkmk.json index 00fec923207..be96b017c25 100644 --- a/json/checkmk.json +++ b/json/checkmk.json @@ -30,5 +30,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "Login Credentials : `cat ~/checkmk.creds`", + "type": "info" + } + ] } From 57b881db45ef473acb89cc644265132b88cfe867 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:31:05 +0100 Subject: [PATCH 116/286] Update CHANGELOG.md (#941) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 50237a38298..0b5f395771e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: CheckMk [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#926](https://github.com/community-scripts/ProxmoxVE/pull/926)) +### 🌐 Website + +- Add Login Note for Checkmk [@MickLesk](https://github.com/MickLesk) ([#940](https://github.com/community-scripts/ProxmoxVE/pull/940)) + ### ❔ Unlabelled - Update build.func to display the Proxmox Hostname [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#894](https://github.com/community-scripts/ProxmoxVE/pull/894)) From e715adf3ba2f87f0195e51147d7486dae515e594 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:49:28 +0100 Subject: [PATCH 117/286] Update omada-install.sh --- install/omada-install.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/install/omada-install.sh b/install/omada-install.sh index 6cb1eb008db..e29372fc874 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -38,7 +38,9 @@ wget -qL https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/3.6/multiv $STD dpkg -i mongodb-org-server_3.6.23_amd64.deb msg_ok "Installed MongoDB" -latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)' | sed 's/href="//' | sort | tail -n 1) +latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | \ +grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | \ +head -n 1) latest_version=$(basename "$latest_url") msg_info "Installing Omada Controller" From 326f7066727368cd3b5a6bb513ef9bfeb29dcbd1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:49:58 +0100 Subject: [PATCH 118/286] Update omada.sh --- ct/omada.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ct/omada.sh b/ct/omada.sh index a82cd3d3626..59232dcfa5f 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -32,7 +32,9 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - latest_url=$(curl -fsSL "https://www.tp-link.com/en/support/download/omada-software-controller/" | grep -oP 'href="([^"]+linux_x64[^"]+\.deb)' | sed 's/href="//' | sort | tail -n 1) + latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | \ + grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | \ + head -n 1) latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." From 8c989eee8e28ab8dbc37f9e78512c77fc663316b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 14:08:25 +0100 Subject: [PATCH 119/286] Update omada.sh --- ct/omada.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/omada.sh b/ct/omada.sh index 59232dcfa5f..0ef88d784d7 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -55,4 +55,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8043${CL}" +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8043${CL}" From d74ad31e72390530da3dd633e10314c9cb9972a4 Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:07:12 +0100 Subject: [PATCH 120/286] Hotfix: Remove new Keygeneration in Bookstack Update (#948) --- ct/bookstack.sh | 1 - 1 file changed, 1 deletion(-) diff --git a/ct/bookstack.sh b/ct/bookstack.sh index a54a11e2aad..e8b6aa1698e 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -49,7 +49,6 @@ function update_script() { cp -r /opt/bookstack-backup/themes/ /opt/bookstack/themes cd /opt/bookstack COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null - php artisan key:generate --force &>/dev/null php artisan migrate --force &>/dev/null chown www-data:www-data -R /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage chmod -R 755 /opt/bookstack /opt/bookstack/bootstrap/cache /opt/bookstack/public/uploads /opt/bookstack/storage From 5e22f990d262974a98d318d488c7e988f3f59451 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:08:20 +0100 Subject: [PATCH 121/286] Update CHANGELOG.md (#950) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0b5f395771e..beba4331913 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: CheckMk [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#926](https://github.com/community-scripts/ProxmoxVE/pull/926)) +### 🚀 Updated Scripts + +- Fix: Remove PHP Key generation in Bookstack Update [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#948](https://github.com/community-scripts/ProxmoxVE/pull/948)) + ### 🌐 Website - Add Login Note for Checkmk [@MickLesk](https://github.com/MickLesk) ([#940](https://github.com/community-scripts/ProxmoxVE/pull/940)) From 53fcbb46bec01b77316cdafe5bba73361958be58 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:29:56 +0100 Subject: [PATCH 122/286] update guacamole creds --- install/apache-guacamole-install.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh index 0c95a69b244..39b10cb4efb 100644 --- a/install/apache-guacamole-install.sh +++ b/install/apache-guacamole-install.sh @@ -80,10 +80,10 @@ mysql -u root -e "CREATE DATABASE $DB_NAME;" mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" { - echo "SnipeIT-Credentials" - echo "SnipeIT Database User: $DB_USER" - echo "SnipeIT Database Password: $DB_PASS" - echo "SnipeIT Database Name: $DB_NAME" + echo "Guacamole-Credentials" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" + echo "Database Name: $DB_NAME" } >> ~/guacamole.creds cd guacamole-auth-jdbc-1.5.5/mysql/schema cat *.sql | mysql -u root ${DB_NAME} From 48e86b063b12dcf214b47f09bb19909077578d6f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 20:32:05 +0100 Subject: [PATCH 123/286] Update CHANGELOG.md (#951) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index beba4331913..e639d5c8e44 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,9 +22,9 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: silverbullet [@dsiebel](https://github.com/dsiebel) ([#659](https://github.com/community-scripts/ProxmoxVE/pull/659)) - New Script: Zammad [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#640](https://github.com/community-scripts/ProxmoxVE/pull/640)) -- New Script: Apache Guacamole [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#657](https://github.com/community-scripts/ProxmoxVE/pull/657)) - New Script: CheckMk [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#926](https://github.com/community-scripts/ProxmoxVE/pull/926)) ### 🚀 Updated Scripts From e98d96a232e953e77ef2927dbe4cb19f2f2b672b Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Fri, 20 Dec 2024 13:31:27 -0800 Subject: [PATCH 124/286] Update checkmk.json (#954) --- json/checkmk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/checkmk.json b/json/checkmk.json index be96b017c25..db23ab85730 100644 --- a/json/checkmk.json +++ b/json/checkmk.json @@ -12,7 +12,7 @@ "documentation": "https://docs.checkmk.com/", "website": "https://checkmk.com/", "logo": "https://checkmk.com/application/files/cache/thumbnails/67fc39c599afdf20557d538416e3efd3.png", - "description": "Checkmk - Your complete IT monitoring solution", + "description": "Checkmk is an IT monitoring software that tracks the health and performance of your systems, networks, servers, applications, and cloud services. It provides real-time insights, alerts for issues, and tools for troubleshooting, helping ensure smooth operations across your infrastructure.", "install_methods": [ { "type": "default", From 1c4c3b71e3002b907fefee5871a39937f1640ebc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 20 Dec 2024 22:33:11 +0100 Subject: [PATCH 125/286] Update CHANGELOG.md (#955) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e639d5c8e44..a12bc326bd4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🌐 Website +- Update checkmk description [@BramSuurdje](https://github.com/BramSuurdje) ([#954](https://github.com/community-scripts/ProxmoxVE/pull/954)) - Add Login Note for Checkmk [@MickLesk](https://github.com/MickLesk) ([#940](https://github.com/community-scripts/ProxmoxVE/pull/940)) ### ❔ Unlabelled From 67a0c06b806aff58688d1bf9dd6c9ff5564a771e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 20 Dec 2024 23:18:29 +0100 Subject: [PATCH 126/286] update width for alpine --- misc/build.func | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/misc/build.func b/misc/build.func index b43746eac9e..5eed7c40d0f 100644 --- a/misc/build.func +++ b/misc/build.func @@ -164,13 +164,14 @@ header_info() { apt-get install -y figlet &> /dev/null elif [ -f /etc/alpine-release ]; then # Alpine Linux - apk add --no-cache figlet &> /dev/null + apk add --no-cache figlet ncurses &> /dev/null + export TERM=xterm else echo "Unsupported OS" return 1 fi - term_width=$(tput cols) + term_width=$(tput cols 2>/dev/null || echo 120) # Fallback to 120 columns ascii_art=$(figlet -f slant -w "$term_width" "$APP") clear cat < Date: Sat, 21 Dec 2024 11:24:51 -0500 Subject: [PATCH 127/286] Update homeassistant-core.sh (#961) Corrected the port number to 8123 --- ct/homeassistant-core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index f5d5d0453a7..733489b27e0 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -128,4 +128,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8132${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}" From 9523491c0ae3a71afb2d4ad872f6beb7176e7af5 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 21 Dec 2024 17:26:34 +0100 Subject: [PATCH 128/286] Update CHANGELOG.md (#965) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index a12bc326bd4..8f83ee4ea74 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-21 + +### Changed + +### 🚀 Updated Scripts + +- update Port in homeassistant-core CT [@fraefel](https://github.com/fraefel) ([#961](https://github.com/community-scripts/ProxmoxVE/pull/961)) + ## 2024-12-20 ### Changed From ae67ee8768ca4314bb8cc83906e76793b1e5c690 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 23 Dec 2024 13:29:39 +0100 Subject: [PATCH 129/286] Bugfix Tag in Hyperion CT --- ct/hyperion.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/hyperion.sh b/ct/hyperion.sh index 552ee49836d..d862196eecc 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m # App Default Values APP="Hyperion" -var_tags="ambient lightning" +var_tags="ambient-lightning" var_cpu="1" var_ram="512" var_disk="2" From b65d55282f0c3eed83c408df92caa4221643ae8d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 13:54:49 +0100 Subject: [PATCH 130/286] Update CHANGELOG.md (#984) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8f83ee4ea74..aaac30ee34d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-23 + +### Changed + ## 2024-12-21 ### Changed From 88120fcbccd8d452f5cc1d9e3a7c16ff05a8ad4a Mon Sep 17 00:00:00 2001 From: "Darin B." Date: Mon, 23 Dec 2024 10:48:41 -0600 Subject: [PATCH 131/286] Update emby.sh to correct port (#989) Updating echo to show correct port --- ct/emby.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/emby.sh b/ct/emby.sh index a57d4786c2c..91e04bee404 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -57,4 +57,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8086${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8096${CL}" From 6debf20d1945b949c6cb37d225daeb60c78b0c5e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 17:50:23 +0100 Subject: [PATCH 132/286] Update CHANGELOG.md (#990) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index aaac30ee34d..84d09666af3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Update emby.sh to correct port [@Rageplant](https://github.com/Rageplant) ([#989](https://github.com/community-scripts/ProxmoxVE/pull/989)) + ## 2024-12-21 ### Changed From 4ed5bf0c12027658e7700d894aa1502191615780 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:08:55 +0100 Subject: [PATCH 133/286] Fix Navidrome Update & Install (#991) * Update navidrome.sh * Update navidrome-install.sh * remove develop * remove empty line --- ct/navidrome.sh | 12 +++++++----- install/navidrome-install.sh | 4 ++-- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/ct/navidrome.sh b/ct/navidrome.sh index e3c7d4656f1..3c606f68777 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -34,16 +34,18 @@ function update_script() { fi RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') msg_info "Stopping ${APP}" - systemctl stop navidrome.service + systemctl stop navidrome msg_ok "Stopped Navidrome" msg_info "Updating to v${RELEASE}" - wget https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz &>/dev/null + cd /opt + wget -q https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ &>/dev/null + chmod +x /opt/navidrome/navidrome msg_ok "Updated ${APP}" - rm Navidrome.tar.gz + rm -rf /opt/Navidrome.tar.gz - msg_info "${GN} Starting ${APP}" + msg_info "Starting ${APP}" systemctl start navidrome.service msg_ok "Started ${APP}" msg_ok "Updated Successfully" @@ -57,4 +59,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:4533${CL}" diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh index a78f5e91726..2bf37bcbf8a 100644 --- a/install/navidrome-install.sh +++ b/install/navidrome-install.sh @@ -20,14 +20,14 @@ $STD apt-get install -y mc $STD apt-get install -y ffmpeg msg_ok "Installed Dependencies" -RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') - msg_info "Installing Navidrome" +RELEASE=$(curl -s https://api.github.com/repos/navidrome/navidrome/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') install -d -o root -g root /opt/navidrome install -d -o root -g root /var/lib/navidrome wget -q https://github.com/navidrome/navidrome/releases/download/v${RELEASE}/navidrome_${RELEASE}_linux_amd64.tar.gz -O Navidrome.tar.gz $STD tar -xvzf Navidrome.tar.gz -C /opt/navidrome/ chown -R root:root /opt/navidrome +chmod +x /opt/navidrome/navidrome mkdir -p /music cat </var/lib/navidrome/navidrome.toml MusicFolder = '/music' From d71bf7bcdfe22438bcc03c393e84dccadce0ee4e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:10:15 +0100 Subject: [PATCH 134/286] Update CHANGELOG.md (#994) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d09666af3..1ef7222f5c1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Navidrome Update & Install [@MickLesk](https://github.com/MickLesk) ([#991](https://github.com/community-scripts/ProxmoxVE/pull/991)) - Update emby.sh to correct port [@Rageplant](https://github.com/Rageplant) ([#989](https://github.com/community-scripts/ProxmoxVE/pull/989)) ## 2024-12-21 From 0f2e49fbeb300861faae99ebacdbb75ec7f8b87e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Wed, 25 Dec 2024 22:12:44 +0100 Subject: [PATCH 135/286] Doubled RAM for SAB (#1007) Having only 2GB of RAM will result in unrar OOM crashes: https://github.com/sabnzbd/sabnzbd/issues/3007 --- ct/sabnzbd.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 1ef4edada57..5f58c02c99a 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -9,7 +9,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="SABnzbd" var_tags="downloader" var_cpu="2" -var_ram="2048" +var_ram="4096" var_disk="8" var_os="debian" var_version="12" @@ -57,4 +57,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7777${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:7777${CL}" From 72df7e432d80ce3315d8e58e44d1fad0c5dff168 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:14:17 +0100 Subject: [PATCH 136/286] Update CHANGELOG.md (#1008) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1ef7222f5c1..53ac54edc12 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-25 + +### Changed + +### 🚀 Updated Scripts + +- Doubled RAM for SAB [@TheRealVira](https://github.com/TheRealVira) ([#1007](https://github.com/community-scripts/ProxmoxVE/pull/1007)) + ## 2024-12-23 ### Changed From 55e02d8bdda944c32ae1715179db8a9729a9ec4b Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:14:57 +0100 Subject: [PATCH 137/286] Fix Script: Alpine Nextcloud Upload File Size Limit (#933) * Max File Size * Small changes --- install/alpine-nextcloud-install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install/alpine-nextcloud-install.sh b/install/alpine-nextcloud-install.sh index 665e899219a..3fe273b28a2 100644 --- a/install/alpine-nextcloud-install.sh +++ b/install/alpine-nextcloud-install.sh @@ -103,6 +103,8 @@ server { listen 80; return 301 https://$host$request_uri; server_name localhost; + client_max_body_size 16G; + fastcgi_read_timeout 120s; } server { listen 443 ssl http2; @@ -127,6 +129,8 @@ server { fastcgi_pass unix:/run/nextcloud/fastcgi.sock; # From the nextcloud-initscript package fastcgi_index index.php; include fastcgi.conf; + fastcgi_read_timeout 120s; + client_max_body_size 16G; } location ^~ /.well-known/carddav { return 301 /remote.php/dav/; } location ^~ /.well-known/caldav { return 301 /remote.php/dav/; } @@ -135,6 +139,7 @@ server { } EOF sed -i -e 's|memory_limit = 128M|memory_limit = 512M|; $aapc.enable_cli=1' /etc/php83/php.ini +sed -i -e 's|upload_max_file_size = 2M|upload_max_file_size = 16G|' /etc/php83/php.ini sed -i -E '/^php_admin_(flag|value)\[opcache/s/^/;/' /etc/php83/php-fpm.d/nextcloud.conf msg_ok "Installed Nextcloud" From b8885e8d6cdab4de516a2cd2b1c558c32cc3957c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:16:50 +0100 Subject: [PATCH 138/286] Update CHANGELOG.md (#1009) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 53ac54edc12..17a69e0c343 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Script: Alpine Nextcloud Upload File Size Limit [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#933](https://github.com/community-scripts/ProxmoxVE/pull/933)) - Doubled RAM for SAB [@TheRealVira](https://github.com/TheRealVira) ([#1007](https://github.com/community-scripts/ProxmoxVE/pull/1007)) ## 2024-12-23 From ee62a56cb959abe957ca3deee56c4f4ee9986eb2 Mon Sep 17 00:00:00 2001 From: Tobias <96661824+CrazyWolf13@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:17:42 +0100 Subject: [PATCH 139/286] add: pve-datacenter-manager (#947) * add: pve-datacenter-manager * fix: scheming * add: warn pre-alpha-state * fix: naming & pve gpg key * fix: naming * fix: naming & correct install path * Fix Tag --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/proxmox-datacenter-manager.sh | 46 +++++++++++++++++++ install/proxmox-datacenter-manager-install.sh | 39 ++++++++++++++++ json/proxmox-datacenter-manager.json | 44 ++++++++++++++++++ 3 files changed, 129 insertions(+) create mode 100644 ct/proxmox-datacenter-manager.sh create mode 100644 install/proxmox-datacenter-manager-install.sh create mode 100644 json/proxmox-datacenter-manager.json diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh new file mode 100644 index 00000000000..21fd5ee6f65 --- /dev/null +++ b/ct/proxmox-datacenter-manager.sh @@ -0,0 +1,46 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: Proxmox Server Solution GmbH + +# App Default Values +APP="proxmox-datacenter-manager" +var_tags="datacenter" +var_cpu="2" +var_ram="2048" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -e /usr/sbin/proxmox-datacenter-manager-admin ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:8443${CL}" diff --git a/install/proxmox-datacenter-manager-install.sh b/install/proxmox-datacenter-manager-install.sh new file mode 100644 index 00000000000..8cd86eddc6a --- /dev/null +++ b/install/proxmox-datacenter-manager-install.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: CrazyWolf13 +# License: MIT +# Source: Proxmox Server Solution GmbH + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + gpg \ + mc +msg_ok "Installed Dependencies" + +msg_info "Installing Proxmox Datacenter Manager" +curl -fsSL https://enterprise.proxmox.com/debian/proxmox-release-bookworm.gpg | gpg --dearmor -o /etc/apt/keyrings/proxmox-release-bookworm.gpg +echo "deb [signed-by=/etc/apt/keyrings/proxmox-release-bookworm.gpg] http://download.proxmox.com/debian/pdm bookworm pdm-test " >/etc/apt/sources.list.d/proxmox-release-bookworm.list +$STD apt-get update +$STD apt-get install -y \ + proxmox-datacenter-manager \ + proxmox-datacenter-manager-ui +msg_ok "Installed Proxmox Datacenter Manager" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/proxmox-datacenter-manager.json b/json/proxmox-datacenter-manager.json new file mode 100644 index 00000000000..13cde8b1930 --- /dev/null +++ b/json/proxmox-datacenter-manager.json @@ -0,0 +1,44 @@ +{ + "name": "Proxmox Datacenter Manager", + "slug": "proxmox-datacenter-manager", + "categories": [ + 11, + 1 + ], + "date_created": "2024-12-20", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8443, + "documentation": "https://pve.proxmox.com/wiki/Proxmox_Datacenter_Manager_Roadmap", + "website": "https://pve.proxmox.com/wiki/Proxmox_Datacenter_Manager_Roadmap", + "logo": "https://raw.githubusercontent.com/home-assistant/brands/master/core_integrations/proxmoxve/icon.png", + "description": "The Proxmox Datacenter Manager project has been developed with the objective of providing a centralized overview of all your individual nodes and clusters. It also enables basic management like migrations of virtual guests without any cluster network requirements. ", + "install_methods": [ + { + "type": "default", + "script": "ct/proxmox-datacenter-manager.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 10, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Set a root password if using autologin. This will be the Proxmox-Datacenter-Manager password. `sudo passwd root`", + "type": "info" + }, + { + "text": "Proxmox Datacenter Manager is in an alpha stage of development. Use it cautiously, as bugs, incomplete features, and potential instabilities are expected.", + "type": "warning" + } + ] + } \ No newline at end of file From cf8dd2bfac113665d6ee4ea550f13ce4c2ebe2cc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 25 Dec 2024 22:18:32 +0100 Subject: [PATCH 140/286] Update CHANGELOG.md (#1010) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17a69e0c343..0a7c4785bdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,10 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- add: pve-datacenter-manager [@CrazyWolf13](https://github.com/CrazyWolf13) ([#947](https://github.com/community-scripts/ProxmoxVE/pull/947)) + ### 🚀 Updated Scripts - Fix Script: Alpine Nextcloud Upload File Size Limit [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#933](https://github.com/community-scripts/ProxmoxVE/pull/933)) From 7aca36a3f0a37d62de9797964d4c3a6895da388c Mon Sep 17 00:00:00 2001 From: Ryan Bradley <70593983+rbradley0@users.noreply.github.com> Date: Thu, 26 Dec 2024 02:52:52 -0500 Subject: [PATCH 141/286] Fix Script: Fix broken build.func url (#1013) --- ct/proxmox-datacenter-manager.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh index 21fd5ee6f65..d254d6835a2 100644 --- a/ct/proxmox-datacenter-manager.sh +++ b/ct/proxmox-datacenter-manager.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/raw/main/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2024 community-scripts ORG # Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE From be66aefd9a76a8d75b7ed6753f8c780f6d184aba Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 08:56:26 +0100 Subject: [PATCH 142/286] Update CHANGELOG.md (#1015) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0a7c4785bdf..f8c1b13084a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-26 + +### Changed + +### 🚀 Updated Scripts + +- Fix Proxmox DataCenter: incorrect build.func url [@rbradley0](https://github.com/rbradley0) ([#1013](https://github.com/community-scripts/ProxmoxVE/pull/1013)) + ## 2024-12-25 ### Changed From 9b07fe41785e9fd11bb4f9245e1511ea1aab59c6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 26 Dec 2024 10:18:47 +0100 Subject: [PATCH 143/286] Update proxmox-datacenter-manager.json --- json/proxmox-datacenter-manager.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/json/proxmox-datacenter-manager.json b/json/proxmox-datacenter-manager.json index 13cde8b1930..a9a1234abb1 100644 --- a/json/proxmox-datacenter-manager.json +++ b/json/proxmox-datacenter-manager.json @@ -2,10 +2,9 @@ "name": "Proxmox Datacenter Manager", "slug": "proxmox-datacenter-manager", "categories": [ - 11, 1 ], - "date_created": "2024-12-20", + "date_created": "2024-12-25", "type": "ct", "updateable": true, "privileged": false, @@ -41,4 +40,4 @@ "type": "warning" } ] - } \ No newline at end of file + } From b30e8c534f794d16c195603e80cca1b30bab1e3d Mon Sep 17 00:00:00 2001 From: Janek <6506725+jkrgr0@users.noreply.github.com> Date: Thu, 26 Dec 2024 10:36:17 +0100 Subject: [PATCH 144/286] New Script: 2FAuth (#943) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(2fauth): :sparkles: Added 2FAuth * refactor: :truck: Changed path to user repo * refactor: :truck: Changed path to user repo * refactor: :truck: Changed path to user repo * refactor: :truck: Changed path to user repo * refactor: :truck: Changed path to user repo * fix(2fauth): :bug: Fixed path to build functions file * fix(2fauth): :bug: Fixed unbound variable * fix(2fauth): :bug: Use instead of for the directory name * chore(2fauth): :sparkles: Added dependency package for improved composer performance * chore(2fauth): :sparkles: Added dependency package as it's required * chore(2fauth): :sparkles: Added dependency package `php8.2-fpm` as it's required * fix(2fauth): :bug: Fixed unbound variable * fix(2fauth): :bug: Fixed installation * fix(install): :bug: Fixed unassigned variable * fix(install): :bug: Fixed installation * fix(install): :bug: explicitly set ownership as last step * revert: :rewind: Revert path rewrite to user repo * revert: :rewind: Revert path rewrite to user repo * refactor(2fauth): :coffin: Removed commented-out code * fix(2fauth): :truck: Fixed path to remove correctly * refactor(2fauth): :art: Changed from variables to static as requested * docs(2fauth): :memo: Added notes for db credentials and the first account being an administrator account * fix(2fauth): :loud_sound: Updated progress logging * test(2fauth): :truck: Changed pathes temporarily to user repo to test the App * fix(2fauth): :ambulance: Fixed wrong version file in update_script * fix(2fauth): :lipstick: Removed duplicated version prefix v in messages * Revert 'test(2fauth): 🚚 Changed pathes temporarily to user repo to test the App' --- ct/2fauth.sh | 90 ++++++++++++++++++++++++++++ install/2fauth-install.sh | 123 ++++++++++++++++++++++++++++++++++++++ json/2fauth.json | 43 +++++++++++++ 3 files changed, 256 insertions(+) create mode 100644 ct/2fauth.sh create mode 100644 install/2fauth-install.sh create mode 100644 json/2fauth.json diff --git a/ct/2fauth.sh b/ct/2fauth.sh new file mode 100644 index 00000000000..1f930ac41e6 --- /dev/null +++ b/ct/2fauth.sh @@ -0,0 +1,90 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: jkrgr0 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://docs.2fauth.app/ + +# App Default Values +APP="2FAuth" +TAGS="2fa;authenticator" +var_cpu="1" +var_ram="512" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + # Check if installation is present | -f for file, -d for folder + if [[ ! -d "/opt/2fauth" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + # Crawling the new version and checking whether an update is required + RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/2fauth_version.txt)" ]] || [[ ! -f /opt/2fauth_version.txt ]]; then + msg_info "Updating $APP to ${RELEASE}" + + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + + # Creating Backup + msg_info "Creating Backup" + mv "/opt/2fauth" "/opt/2fauth-backup" + msg_ok "Backup Created" + + # Execute Update + wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" + unzip -q "${RELEASE}.zip" + mv "2FAuth-${RELEASE//v}/" "/opt/2fauth" + mv "/opt/2fauth-backup/.env" "/opt/2fauth/.env" + mv "/opt/2fauth-backup/storage" "/opt/2fauth/storage" + cd "/opt/2fauth" || return + + chown -R www-data: "/opt/2fauth" + chmod -R 755 "/opt/2fauth" + + export COMPOSER_ALLOW_SUPERUSER=1 + composer install --no-dev --prefer-source &>/dev/null + + php artisan 2fauth:install + + # Cleaning up + msg_info "Cleaning Up" + rm -rf "v${RELEASE}.zip" + $STD apt-get -y autoremove + $STD apt-get -y autoclean + msg_ok "Cleanup Completed" + + # Last Action + echo "${RELEASE}" >/opt/2fauth_version.txt + msg_ok "Updated $APP to ${RELEASE}" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}" \ No newline at end of file diff --git a/install/2fauth-install.sh b/install/2fauth-install.sh new file mode 100644 index 00000000000..949b84b2e57 --- /dev/null +++ b/install/2fauth-install.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: jkrgr0 +# License: MIT +# Source: https://docs.2fauth.app/ + +# Import Functions und Setup +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +# Installing Dependencies with the 3 core dependencies (curl;sudo;mc) +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + nginx \ + composer \ + php8.2-{bcmath,common,ctype,curl,fileinfo,fpm,gd,mbstring,mysql,xml,cli} \ + mariadb-server +msg_ok "Installed Dependencies" + +# Template: MySQL Database +msg_info "Setting up Database" +DB_NAME=2fauth_db +DB_USER=2fauth +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +$STD mysql -u root -e "CREATE DATABASE $DB_NAME;" +$STD mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" +$STD mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" +{ + echo "2FAuth Credentials" + echo "Database User: $DB_USER" + echo "Database Password: $DB_PASS" + echo "Database Name: $DB_NAME" +} >> ~/2FAuth.creds +msg_ok "Set up Database" + +# Setup App +msg_info "Setup 2FAuth" +RELEASE=$(curl -s https://api.github.com/repos/Bubka/2FAuth/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/Bubka/2FAuth/archive/refs/tags/${RELEASE}.zip" +unzip -q "${RELEASE}.zip" +mv "2FAuth-${RELEASE//v}/" /opt/2fauth + +cd "/opt/2fauth" || return +cp .env.example .env +IPADDRESS=$(hostname -I | awk '{print $1}') + +sed -i -e "s|^APP_URL=.*|APP_URL=http://$IPADDRESS|" \ + -e "s|^DB_CONNECTION=$|DB_CONNECTION=mysql|" \ + -e "s|^DB_DATABASE=$|DB_DATABASE=$DB_NAME|" \ + -e "s|^DB_HOST=$|DB_HOST=127.0.0.1|" \ + -e "s|^DB_PORT=$|DB_PORT=3306|" \ + -e "s|^DB_USERNAME=$|DB_USERNAME=$DB_USER|" \ + -e "s|^DB_PASSWORD=$|DB_PASSWORD=$DB_PASS|" .env + +export COMPOSER_ALLOW_SUPERUSER=1 +$STD composer update --no-plugins --no-scripts +$STD composer install --no-dev --prefer-source --no-plugins --no-scripts + +$STD php artisan key:generate --force + +$STD php artisan migrate:refresh +$STD php artisan passport:install -q -n +$STD php artisan storage:link +$STD php artisan config:cache + +chown -R www-data: /opt/2fauth +chmod -R 755 /opt/2fauth + +echo "${RELEASE}" >"/opt/2fauth_version.txt" +msg_ok "Setup 2fauth" + +# Configure Service (NGINX) +msg_info "Configure Service" +cat </etc/nginx/conf.d/2fauth.conf +server { + listen 80; + root /opt/2fauth/public; + server_name $IPADDRESS; + index index.php; + charset utf-8; + + location / { + try_files \$uri \$uri/ /index.php?\$query_string; + } + + location = /favicon.ico { access_log off; log_not_found off; } + location = /robots.txt { access_log off; log_not_found off; } + + error_page 404 /index.php; + + location ~ \.php\$ { + fastcgi_pass unix:/var/run/php/php8.2-fpm.sock; + fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name; + include fastcgi_params; + } + + location ~ /\.(?!well-known).* { + deny all; + } +} +EOF + +systemctl reload nginx +msg_ok "Configured Service" + +motd_ssh +customize + +# Cleanup +msg_info "Cleaning up" +rm -f "/opt/v${RELEASE}.zip" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/2fauth.json b/json/2fauth.json new file mode 100644 index 00000000000..1fb77270251 --- /dev/null +++ b/json/2fauth.json @@ -0,0 +1,43 @@ +{ + "name": "2FAuth", + "slug": "2fauth", + "categories": [ + 0 + ], + "date_created": "2024-12-20", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": null, + "website": "https://docs.2fauth.app/", + "logo": "https://raw.githubusercontent.com/Bubka/2FAuth/refs/heads/master/public/logo.svg", + "description": "2FAuth is a web based self-hosted alternative to One Time Passcode (OTP) generators like Google Authenticator, designed for both mobile and desktop. It aims to ease you perform your 2FA authentication steps whatever the device you handle, with a clean and suitable interface.", + "install_methods": [ + { + "type": "default", + "script": "ct/2fauth.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 2, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Database credentials: `cat ~/2FAuth.creds`", + "type": "info" + }, + { + "text": "The very first account created is automatically set up as an administrator account.", + "type": "info" + } + ] + } \ No newline at end of file From 8f243c74fff420544a73642fdf98e7a9b4e2319a Mon Sep 17 00:00:00 2001 From: Alice Knag Date: Thu, 26 Dec 2024 02:36:52 -0700 Subject: [PATCH 145/286] ensure all RFC1918 local Ipv4 addresses are in iptag script (#992) * ensure all RFC1918 local Ipv4 addresses are in iptag script * fix indent --- misc/add-lxc-iptag.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh index 4222694ded6..3b556cc24a8 100644 --- a/misc/add-lxc-iptag.sh +++ b/misc/add-lxc-iptag.sh @@ -133,8 +133,9 @@ if [[ ! -f /opt/lxc-iptag/iptag.conf ]]; then # List of allowed CIDRs CIDR_LIST=( 192.168.0.0/16 - 100.64.0.0/10 + 172.16.0.0/12 10.0.0.0/8 + 100.64.0.0/10 ) # Interval settings (in seconds) From b1dc0bc20fee576c096d6c680f826ca97544f516 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 14:29:03 +0100 Subject: [PATCH 146/286] Update CHANGELOG.md (#1017) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f8c1b13084a..d7e336f8903 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,8 +20,13 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### ✨ New Scripts + +- New Script: 2FAuth [@jkrgr0](https://github.com/jkrgr0) ([#943](https://github.com/community-scripts/ProxmoxVE/pull/943)) + ### 🚀 Updated Scripts +- ensure all RFC1918 local Ipv4 addresses are in iptag script [@AskAlice](https://github.com/AskAlice) ([#992](https://github.com/community-scripts/ProxmoxVE/pull/992)) - Fix Proxmox DataCenter: incorrect build.func url [@rbradley0](https://github.com/rbradley0) ([#1013](https://github.com/community-scripts/ProxmoxVE/pull/1013)) ## 2024-12-25 From 1b57be94fd4d9b37cde60d3702da828c585fd2bd Mon Sep 17 00:00:00 2001 From: Kristo Copani <31226503+quantumryuu@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:00:20 +0200 Subject: [PATCH 147/286] New Script: Jenkins (#1019) * jenkins * push jenkins * cleanup * Create jenkins.json * Update jenkins.json * Added # Source before # App Default Values * Update jenkins.sh var_tags --- ct/jenkins.sh | 50 ++++++++++++++++++++++++++++++++++++++ install/jenkins-install.sh | 36 +++++++++++++++++++++++++++ json/jenkins.json | 34 ++++++++++++++++++++++++++ 3 files changed, 120 insertions(+) create mode 100644 ct/jenkins.sh create mode 100644 install/jenkins-install.sh create mode 100644 json/jenkins.json diff --git a/ct/jenkins.sh b/ct/jenkins.sh new file mode 100644 index 00000000000..235c43c8c3a --- /dev/null +++ b/ct/jenkins.sh @@ -0,0 +1,50 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: kristocopani +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://www.jenkins.io/ + +# App Default Values +APP="Jenkins" +var_tags="automation" +var_cpu="2" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /var/lib/jenkins ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating $APP LXC" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated $APP LXC" + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080${CL}" diff --git a/install/jenkins-install.sh b/install/jenkins-install.sh new file mode 100644 index 00000000000..9283fb7aca9 --- /dev/null +++ b/install/jenkins-install.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2024 community-scripts ORG +# Author: kristocopani +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo \ + openjdk-17-jre +msg_ok "Installed Dependencies" + +msg_info "Setup Jenkins" +wget -qO /usr/share/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian/jenkins.io-2023.key +echo "deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc]" https://pkg.jenkins.io/debian binary/ >/etc/apt/sources.list.d/jenkins.list +$STD apt-get update +$STD apt-get install -y jenkins +msg_ok "Setup Jenkins" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/jenkins.json b/json/jenkins.json new file mode 100644 index 00000000000..9e2abbb2176 --- /dev/null +++ b/json/jenkins.json @@ -0,0 +1,34 @@ +{ + "name": "Jenkins", + "slug": "jenkins", + "categories": [ + 3 + ], + "date_created": "2024-12-26", + "type": "ct", + "updateable": false, + "privileged": false, + "interface_port": 8080, + "documentation": "https://www.jenkins.io/doc/", + "website": "https://www.jenkins.io/", + "logo": "https://www.jenkins.io/images/logos/jenkins/jenkins.svg", + "description": "Jenkins provides hundreds of plugins to support building, deploying and automating any project. ", + "install_methods": [ + { + "type": "default", + "script": "ct/jenkins.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] + } From ff3d2026a56891eaf8c4892fe605c9d9b3222ddb Mon Sep 17 00:00:00 2001 From: Andy Grunwald Date: Thu, 26 Dec 2024 19:00:33 +0100 Subject: [PATCH 148/286] [GitHub Actions] Introduce Shellcheck to check bash code (#1018) --- .github/workflows/shellcheck.yml | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 .github/workflows/shellcheck.yml diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml new file mode 100644 index 00000000000..842ebabd587 --- /dev/null +++ b/.github/workflows/shellcheck.yml @@ -0,0 +1,25 @@ +name: Shellcheck + +on: + push: + branches: + - main + pull_request: + workflow_dispatch: + schedule: + - cron: "5 1 * * *" + +jobs: + shellcheck: + name: Shellcheck + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Run ShellCheck + uses: ludeeus/action-shellcheck@master + with: + ignore_paths: >- + frontend + json From 4b0fff5a8848756fe53fe7d5595e121e7b16f1eb Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 20:31:46 +0100 Subject: [PATCH 149/286] Update CHANGELOG.md (#1025) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d7e336f8903..84e33778fb0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Jenkins [@quantumryuu](https://github.com/quantumryuu) ([#1019](https://github.com/community-scripts/ProxmoxVE/pull/1019)) - New Script: 2FAuth [@jkrgr0](https://github.com/jkrgr0) ([#943](https://github.com/community-scripts/ProxmoxVE/pull/943)) ### 🚀 Updated Scripts @@ -29,6 +30,10 @@ Do not break established syntax in this file, as it is automatically updated by - ensure all RFC1918 local Ipv4 addresses are in iptag script [@AskAlice](https://github.com/AskAlice) ([#992](https://github.com/community-scripts/ProxmoxVE/pull/992)) - Fix Proxmox DataCenter: incorrect build.func url [@rbradley0](https://github.com/rbradley0) ([#1013](https://github.com/community-scripts/ProxmoxVE/pull/1013)) +### 🧰 Maintenance + +- [GitHub Actions] Introduce Shellcheck to check bash code [@andygrunwald](https://github.com/andygrunwald) ([#1018](https://github.com/community-scripts/ProxmoxVE/pull/1018)) + ## 2024-12-25 ### Changed From e253fe6cee8795252ea27c44140f201dacfa4591 Mon Sep 17 00:00:00 2001 From: Niklas <33813894+Niklas04@users.noreply.github.com> Date: Thu, 26 Dec 2024 21:34:33 +0100 Subject: [PATCH 150/286] ChangeDetection Update: Update also Browsers (#1027) * Changedetection: Update also browsers * Changedetection: Adding more msg for updating, Make code more readable --- ct/changedetection.sh | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/ct/changedetection.sh b/ct/changedetection.sh index 6046b399e3f..86901e7d6bf 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -28,28 +28,45 @@ function update_script() { header_info check_container_storage check_container_resources + if [[ ! -f /etc/systemd/system/changedetection.service ]]; then msg_error "No ${APP} Installation Found!" exit fi - msg_info "Updating ${APP} LXC" + if ! dpkg -s libjpeg-dev >/dev/null 2>&1; then + msg_info "Installing Dependencies" apt-get update apt-get install -y libjpeg-dev + msg_ok "Updated Dependencies" fi + + msg_info "Updating ${APP}" pip3 install changedetection.io --upgrade &>/dev/null + msg_ok "Updated ${APP}" + + msg_info "Updating Playwright" pip3 install playwright --upgrade &>/dev/null + msg_ok "Updated Playwright" + if [[ -f /etc/systemd/system/browserless.service ]]; then + msg_info "Updating Browserless (Patience)" git -C /opt/browserless/ fetch --all &>/dev/null git -C /opt/browserless/ reset --hard origin/main &>/dev/null npm update --prefix /opt/browserless &>/dev/null + /opt/browserless/node_modules/playwright-core/cli.js install --with-deps &>/dev/null + # Update Chrome separately, as it has to be done with the force option. Otherwise the installation of other browsers will not be done if Chrome is already installed. + /opt/browserless/node_modules/playwright-core/cli.js install --force chrome &>/dev/null + /opt/browserless/node_modules/playwright-core/cli.js install chromium firefox webkit &>/dev/null npm run build --prefix /opt/browserless &>/dev/null npm run build:function --prefix /opt/browserless &>/dev/null npm prune production --prefix /opt/browserless &>/dev/null systemctl restart browserless + msg_ok "Updated Browserless" else msg_error "No Browserless Installation Found!" fi + systemctl restart changedetection msg_ok "Updated Successfully" exit @@ -62,4 +79,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" From 943e6967f45f1716c3e5da2aeae2b1199e54367c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 26 Dec 2024 21:35:38 +0100 Subject: [PATCH 151/286] Update CHANGELOG.md (#1029) --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84e33778fb0..75ab4ab6637 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- ChangeDetection Update: Update also Browsers [@Niklas04](https://github.com/Niklas04) ([#1027](https://github.com/community-scripts/ProxmoxVE/pull/1027)) - ensure all RFC1918 local Ipv4 addresses are in iptag script [@AskAlice](https://github.com/AskAlice) ([#992](https://github.com/community-scripts/ProxmoxVE/pull/992)) - Fix Proxmox DataCenter: incorrect build.func url [@rbradley0](https://github.com/rbradley0) ([#1013](https://github.com/community-scripts/ProxmoxVE/pull/1013)) From 0c31f437894e5eaa63cf7a8585086406505ebafa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Fri, 27 Dec 2024 16:42:18 +0100 Subject: [PATCH 152/286] Updated documentation based on RAM increase (#1035) https://github.com/community-scripts/ProxmoxVE/commit/0f2e49fbeb300861faae99ebacdbb75ec7f8b87e --- json/sabnzbd.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/sabnzbd.json b/json/sabnzbd.json index 003f5d8faad..ae6ebf43b3b 100644 --- a/json/sabnzbd.json +++ b/json/sabnzbd.json @@ -19,7 +19,7 @@ "script": "ct/sabnzbd.sh", "resources": { "cpu": 2, - "ram": 2048, + "ram": 4096, "hdd": 8, "os": "debian", "version": "12" @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From 8d96c5135d090bf6e6a4f617d73a688bfd858508 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9mi=20B=C3=A9dard-Couture?= Date: Fri, 27 Dec 2024 10:42:46 -0500 Subject: [PATCH 153/286] new scripts for Authentik (#291) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * new scripts for Authentik * Minor clean up based on initial PR review * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update json/authentik.json Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update json/authentik.json Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Minor fixes from havard's review * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update ct/authentik.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * More fixes addressing havard's review * Update install/authentik-install.sh Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> * Cleanup duplicate NodeJS installation commands * Change port value type to numeric * Change resources values type to numeric * Addressing latest feedback from PR review * merge from dev Signed-off-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> * merge from dev Signed-off-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> * merge from dev Signed-off-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --------- Signed-off-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> Co-authored-by: Håvard Gjøby Thom <34199185+havardthom@users.noreply.github.com> Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/authentik.sh | 85 +++++++++++++++ install/authentik-install.sh | 195 +++++++++++++++++++++++++++++++++++ json/authentik.json | 39 +++++++ 3 files changed, 319 insertions(+) create mode 100644 ct/authentik.sh create mode 100644 install/authentik-install.sh create mode 100644 json/authentik.json diff --git a/ct/authentik.sh b/ct/authentik.sh new file mode 100644 index 00000000000..4b40b6def3d --- /dev/null +++ b/ct/authentik.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: remz1337 +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +# App Default Values +APP="Authentik" +var_tags="identity-provider" +var_disk="15" +var_cpu="6" +var_ram="8192" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -f /etc/systemd/system/authentik-server.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then + msg_info "Stopping ${APP}" + systemctl stop authentik-server + systemctl stop authentik-worker + msg_ok "Stopped ${APP}" + + msg_info "Building ${APP} website" + mkdir -p /opt/authentik + wget -qO authentik.tar.gz "${RELEASE}" + tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite + rm -rf authentik.tar.gz + cd /opt/authentik/website + npm install &>/dev/null + npm run build-bundled &>/dev/null + cd /opt/authentik/web + npm install &>/dev/null + npm run build &>/dev/null + msg_ok "Built ${APP} website" + + msg_info "Installing Python Dependencies" + cd /opt/authentik + poetry install --only=main --no-ansi --no-interaction --no-root &>/dev/null + poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt &>/dev/null + pip install --no-cache-dir -r requirements.txt &>/dev/null + pip install . &>/dev/null + msg_ok "Installed Python Dependencies" + + msg_info "Updating ${APP} to v${RELEASE} (Patience)" + cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints + bash /opt/authentik/lifecycle/ak migrate &>/dev/null + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting ${APP}" + systemctl start authentik-server + systemctl start authentik-worker + msg_ok "Started ${APP}" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}" + fi + exit +} + +start +build_container +description + +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/if/flow/initial-setup/${CL}" diff --git a/install/authentik-install.sh b/install/authentik-install.sh new file mode 100644 index 00000000000..cd863b09701 --- /dev/null +++ b/install/authentik-install.sh @@ -0,0 +1,195 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: remz1337 +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies (Patience)" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + gpg \ + pkg-config \ + libffi-dev \ + build-essential \ + libpq-dev \ + libkrb5-dev \ + libssl-dev \ + libsqlite3-dev \ + tk-dev \ + libgdbm-dev \ + libc6-dev \ + libbz2-dev \ + zlib1g-dev \ + libxmlsec1 \ + libxmlsec1-dev \ + libxmlsec1-openssl \ + libmaxminddb0 \ + python3-pip \ + git +msg_ok "Installed Dependencies" + +msg_info "Installing yq" +cd /tmp +YQ_LATEST="$(wget -qO- "https://api.github.com/repos/mikefarah/yq/releases/latest" | grep -Po '"tag_name": "\K.*?(?=")')" +wget -q "https://github.com/mikefarah/yq/releases/download/${YQ_LATEST}/yq_linux_amd64" -qO /usr/bin/yq +chmod +x /usr/bin/yq +msg_ok "Installed yq" + +msg_info "Installing GeoIP" +cd /tmp +GEOIP_RELEASE=$(curl -s https://api.github.com/repos/maxmind/geoipupdate/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +wget -qO geoipupdate.deb https://github.com/maxmind/geoipupdate/releases/download/v${GEOIP_RELEASE}/geoipupdate_${GEOIP_RELEASE}_linux_amd64.deb +$STD dpkg -i geoipupdate.deb +cat </etc/GeoIP.conf +#GEOIPUPDATE_EDITION_IDS="GeoLite2-City GeoLite2-ASN" +#GEOIPUPDATE_VERBOSE="1" +#GEOIPUPDATE_ACCOUNT_ID_FILE="/run/secrets/GEOIPUPDATE_ACCOUNT_ID" +#GEOIPUPDATE_LICENSE_KEY_FILE="/run/secrets/GEOIPUPDATE_LICENSE_KEY" +EOF +msg_ok "Installed GeoIP" + +msg_info "Setting up Python 3" +cd /tmp +wget -q https://www.python.org/ftp/python/3.12.1/Python-3.12.1.tgz -O Python.tgz +tar -zxf Python.tgz +cd Python-3.12.1 +$STD ./configure --enable-optimizations +$STD make altinstall +cd ~ +$STD update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.12 1 +msg_ok "Setup Python 3" + +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Installing Golang" +cd /tmp +set +o pipefail +GO_RELEASE=$(curl -s https://go.dev/dl/ | grep -o -m 1 "go.*\linux-amd64.tar.gz") +wget -q https://golang.org/dl/${GO_RELEASE} +tar -xzf ${GO_RELEASE} -C /usr/local +ln -s /usr/local/go/bin/go /usr/bin/go +set -o pipefail +msg_ok "Installed Golang" + +msg_info "Installing Redis" +$STD apt-get install -y redis-server +systemctl enable -q --now redis-server +msg_ok "Installed Redis" + +msg_info "Installing PostgreSQL" +$STD apt-get install -y postgresql postgresql-contrib +DB_NAME="authentik" +DB_USER="authentik" +DB_PASS="$(openssl rand -base64 18 | cut -c1-13)" +$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME;" +$STD sudo -u postgres psql -c "CREATE USER $DB_USER WITH PASSWORD '$DB_PASS';" +$STD sudo -u postgres psql -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;" +$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME OWNER TO $DB_USER;" +$STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;" +msg_ok "Installed PostgreSQL" + +msg_info "Installing authentik" +RELEASE=$(curl -s https://api.github.com/repos/goauthentik/authentik/releases/latest | grep "tarball_url" | awk '{print substr($2, 2, length($2)-3)}') +mkdir -p /opt/authentik +wget -qO authentik.tar.gz "${RELEASE}" +tar -xzf authentik.tar.gz -C /opt/authentik --strip-components 1 --overwrite +cd /opt/authentik/website +$STD npm install +$STD npm run build-bundled +cd /opt/authentik/web +$STD npm install +$STD npm run build +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +cd /opt/authentik +$STD go mod download +$STD go build -o /go/authentik ./cmd/server +$STD go build -o /opt/authentik/authentik-server /opt/authentik/cmd/server/ +cd /opt/authentik +$STD pip3 install --upgrade pip +$STD pip3 install poetry poetry-plugin-export +ln -s /usr/local/bin/poetry /usr/bin/poetry +$STD poetry install --only=main --no-ansi --no-interaction --no-root +$STD poetry export --without-hashes --without-urls -f requirements.txt --output requirements.txt +$STD pip install --no-cache-dir -r requirements.txt +$STD pip install . +mkdir -p /etc/authentik +mv /opt/authentik/authentik/lib/default.yml /etc/authentik/config.yml +$STD yq -i ".secret_key = \"$(openssl rand -hex 32)\"" /etc/authentik/config.yml +$STD yq -i ".postgresql.password = \"${DB_PASS}\"" /etc/authentik/config.yml +$STD yq -i ".geoip = \"/opt/authentik/tests/GeoLite2-City-Test.mmdb\"" /etc/authentik/config.yml +cp -r /opt/authentik/authentik/blueprints /opt/authentik/blueprints +$STD yq -i ".blueprints_dir = \"/opt/authentik/blueprints\"" /etc/authentik/config.yml +ln -s /usr/bin/python3 /usr/bin/python +ln -s /usr/local/bin/gunicorn /usr/bin/gunicorn +ln -s /usr/local/bin/celery /usr/bin/celery +$STD bash /opt/authentik/lifecycle/ak migrate +cd ~ +msg_ok "Installed authentik" + +msg_info "Creating Services" +cat </etc/systemd/system/authentik-server.service +[Unit] +Description = authentik Server + +[Service] +ExecStart=/opt/authentik/authentik-server +WorkingDirectory=/opt/authentik/ +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF + +cat </etc/systemd/system/authentik-worker.service +[Unit] +Description = authentik Worker + +[Service] +Environment=DJANGO_SETTINGS_MODULE="authentik.root.settings" +ExecStart=celery -A authentik.root.celery worker -Ofair --max-tasks-per-child=1 --autoscale 3,1 -E -B -s /tmp/celerybeat-schedule -Q authentik,authentik_scheduled,authentik_events +WorkingDirectory=/opt/authentik/authentik +Restart=always +RestartSec=5 + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now authentik-server +sleep 2 +systemctl enable -q --now authentik-worker +msg_ok "Created Services" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /tmp/Python-3.12.1 +rm -rf /tmp/Python.tgz +rm -rf go/ +rm -rf /tmp/${GO_RELEASE} +rm -rf /tmp/geoipupdate.deb +rm -rf authentik.tar.gz +$STD apt-get -y remove yq +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/authentik.json b/json/authentik.json new file mode 100644 index 00000000000..d55d0f1def5 --- /dev/null +++ b/json/authentik.json @@ -0,0 +1,39 @@ +{ + "name": "authentik", + "slug": "authentik", + "categories": [ + 11 + ], + "date_created": "2024-12-26", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9000, + "documentation": "https://docs.goauthentik.io/docs/", + "website": "https://goauthentik.io/", + "logo": "https://github.com/goauthentik/authentik/blob/main/website/static/img/icon.png", + "description": "authentik is an IdP (Identity Provider) and SSO (single sign on) that is built with security at the forefront of every piece of code, every feature, with an emphasis on flexibility and versatility.", + "install_methods": [ + { + "type": "default", + "script": "ct/authentik.sh", + "resources": { + "cpu": 6, + "ram": 8192, + "hdd": 12, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Authentik is very resource-heavy, it is recommended to use at least 8GB RAM anytime!", + "type": "warning" + } + ] +} From 12f087932fc6c59c03f9eb61035eb53e5467f0ac Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 16:51:18 +0100 Subject: [PATCH 154/286] Update CHANGELOG.md (#1041) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75ab4ab6637..7239f9dcde3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,18 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-27 + +### Changed + +### ✨ New Scripts + +- new scripts for Authentik [@remz1337](https://github.com/remz1337) ([#291](https://github.com/community-scripts/ProxmoxVE/pull/291)) + +### 🌐 Website + +- Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035)) + ## 2024-12-26 ### Changed From 71d21f3bfe4157c6875002931cca8f56edb530c2 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 27 Dec 2024 19:42:13 +0100 Subject: [PATCH 155/286] fix Tags for Advanced Settings (#1042) --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 5eed7c40d0f..2213aa57290 100644 --- a/misc/build.func +++ b/misc/build.func @@ -317,7 +317,7 @@ advanced_settings() { done fi # Setting Default Tag for Advanced Settings - TAGS="community-script;" + TAGS="community-script;${var_tags:-}" CT_TYPE="" while [ -z "$CT_TYPE" ]; do From 1378e9a2e9bb512f93a9c8cbb6130350de8f005c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 19:45:58 +0100 Subject: [PATCH 156/286] Update CHANGELOG.md (#1043) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7239f9dcde3..6fdf4c1f792 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -28,6 +28,10 @@ Do not break established syntax in this file, as it is automatically updated by - Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035)) +### ❔ Unlabelled + +- fix Tags for Advanced Settings [@MickLesk](https://github.com/MickLesk) ([#1042](https://github.com/community-scripts/ProxmoxVE/pull/1042)) + ## 2024-12-26 ### Changed From 6bae0d71eaad55d7768c7ea647c3dd75d7905b20 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 27 Dec 2024 19:53:50 +0100 Subject: [PATCH 157/286] Patch Figlet Repo if missing (#1044) * Patch Figlet Repo if missing * readd comment --- misc/build.func | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/misc/build.func b/misc/build.func index 2213aa57290..ed08660a56f 100644 --- a/misc/build.func +++ b/misc/build.func @@ -161,6 +161,10 @@ arch_check() { header_info() { if [ -f /etc/debian_version ]; then # Debian/Ubuntu + if ! grep -q "^deb http://ftp.debian.org/debian bookworm main contrib" /etc/apt/sources.list; then + echo "deb http://ftp.debian.org/debian bookworm main contrib" >> /etc/apt/sources.list + apt-get update -y &> /dev/null + fi apt-get install -y figlet &> /dev/null elif [ -f /etc/alpine-release ]; then # Alpine Linux From ab292927e61722f7f970c9ebbe9c4e0c0ab2a922 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 19:55:41 +0100 Subject: [PATCH 158/286] Update CHANGELOG.md (#1045) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6fdf4c1f792..857de2bfce0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ❔ Unlabelled +- Patch Figlet Repo if missing [@MickLesk](https://github.com/MickLesk) ([#1044](https://github.com/community-scripts/ProxmoxVE/pull/1044)) - fix Tags for Advanced Settings [@MickLesk](https://github.com/MickLesk) ([#1042](https://github.com/community-scripts/ProxmoxVE/pull/1042)) ## 2024-12-26 From 517b19a62b93a0bd47a1ee5cfb1c26cbbaa443e2 Mon Sep 17 00:00:00 2001 From: JBSAN3 <72016241+sannier3@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:28:25 +0100 Subject: [PATCH 159/286] Apache-Guacamole script bug fix (#1039) * Fix apache-guacamole-script * Update apache-guacamole-install.sh Changed ip address binding for more security * Update apache-guacamole-install.sh * remove systemctl start --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- install/apache-guacamole-install.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh index 39b10cb4efb..71393235c6d 100644 --- a/install/apache-guacamole-install.sh +++ b/install/apache-guacamole-install.sh @@ -98,6 +98,11 @@ cat *.sql | mysql -u root ${DB_NAME} msg_ok "Setup Database" msg_info "Setup Service" +cat </etc/guacamole/guacd.conf +[server] +bind_host = 127.0.0.1 +bind_port = 4822 +EOF JAVA_HOME=$(update-alternatives --query javadoc | grep Value: | head -n1 | sed 's/Value: //' | sed 's@bin/javadoc$@@') cat </etc/systemd/system/tomcat.service [Unit] From 395d1086ea211cf6f0f8e58c4843495b4dc4b252 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:29:01 +0100 Subject: [PATCH 160/286] Add 8.0 for MongoDB Installation (#1046) * Add 8.0 for MongoDB Installation * Add MongoDB Check --- ct/mongodb.sh | 4 ++-- install/mongodb-install.sh | 17 +++++++++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/ct/mongodb.sh b/ct/mongodb.sh index bd86a235e85..2dcaae3214b 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -28,7 +28,7 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list ]]; then + if [[ ! -f /etc/apt/sources.list.d/mongodb-org-7.0.list && ! -f /etc/apt/sources.list.d/mongodb-org-8.0.list ]]; then msg_error "No ${APP} Installation Found!" exit fi @@ -44,4 +44,4 @@ build_container description msg_ok "Completed Successfully!\n" -echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" \ No newline at end of file +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" diff --git a/install/mongodb-install.sh b/install/mongodb-install.sh index 6b682e9ee43..30553ff09c2 100644 --- a/install/mongodb-install.sh +++ b/install/mongodb-install.sh @@ -1,3 +1,4 @@ + #!/usr/bin/env bash # Copyright (c) 2021-2024 tteck @@ -20,14 +21,22 @@ $STD apt-get install -y sudo $STD apt-get install -y mc msg_ok "Installed Dependencies" -msg_info "Installing MongoDB" -wget -qO- https://www.mongodb.org/static/pgp/server-7.0.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-7.0.gpg -echo "deb [signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/7.0 main" >/etc/apt/sources.list.d/mongodb-org-7.0.list +# Abfrage für die MongoDB-Version +read -p "Do you want to install MongoDB 8.0 instead of 7.0? [y/N]: " install_mongodb_8 +if [[ "$install_mongodb_8" =~ ^[Yy]$ ]]; then + MONGODB_VERSION="8.0" +else + MONGODB_VERSION="7.0" +fi + +msg_info "Installing MongoDB $MONGODB_VERSION" +wget -qO- https://www.mongodb.org/static/pgp/server-${MONGODB_VERSION}.asc | gpg --dearmor >/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg +echo "deb [signed-by=/usr/share/keyrings/mongodb-server-${MONGODB_VERSION}.gpg] http://repo.mongodb.org/apt/debian $(grep '^VERSION_CODENAME=' /etc/os-release | cut -d'=' -f2)/mongodb-org/${MONGODB_VERSION} main" >/etc/apt/sources.list.d/mongodb-org-${MONGODB_VERSION}.list $STD apt-get update $STD apt-get install -y mongodb-org sed -i 's/bindIp: 127.0.0.1/bindIp: 0.0.0.0/' /etc/mongod.conf systemctl enable -q --now mongod.service -msg_ok "Installed MongoDB" +msg_ok "Installed MongoDB $MONGODB_VERSION" motd_ssh customize From f97e93220519f8ba8531c1c51476d8ba4e9214c2 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:29:50 +0100 Subject: [PATCH 161/286] Update CHANGELOG.md (#1047) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 857de2bfce0..986bc1da1f9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -24,6 +24,11 @@ Do not break established syntax in this file, as it is automatically updated by - new scripts for Authentik [@remz1337](https://github.com/remz1337) ([#291](https://github.com/community-scripts/ProxmoxVE/pull/291)) +### 🚀 Updated Scripts + +- Add 8.0 for MongoDB Installation [@MickLesk](https://github.com/MickLesk) ([#1046](https://github.com/community-scripts/ProxmoxVE/pull/1046)) +- Apache-Guacamole script bug fix [@sannier3](https://github.com/sannier3) ([#1039](https://github.com/community-scripts/ProxmoxVE/pull/1039)) + ### 🌐 Website - Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035)) From 406bb57d7411c5eca25b79536bfe50fafce30f9c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:35:20 +0100 Subject: [PATCH 162/286] Update Zabbix to 7.2. Release (#1048) * Update Zabbix to 7.2 * Update Zabbix to 7.2 --- ct/zabbix.sh | 4 ++-- install/zabbix-install.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 79139f90288..243004844a5 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -44,7 +44,7 @@ function update_script() { cp -R /usr/share/zabbix-* /opt/zabbix-backup/ rm -Rf /etc/apt/sources.list.d/zabbix.list cd /tmp - wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb + wget -q https://repo.zabbix.com/zabbix/7.2/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null apt-get update &>/dev/null apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null @@ -68,4 +68,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/zabbix${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/zabbix${CL}" diff --git a/install/zabbix-install.sh b/install/zabbix-install.sh index 8e2af1bc91e..671be438207 100644 --- a/install/zabbix-install.sh +++ b/install/zabbix-install.sh @@ -22,7 +22,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Zabbix" cd /tmp -wget -q https://repo.zabbix.com/zabbix/7.0/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb +wget -q https://repo.zabbix.com/zabbix/7.2/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb $STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb $STD apt-get update $STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts From 26e4017d7641d045fb27c5afb69ad710b68f8d47 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:36:14 +0100 Subject: [PATCH 163/286] Update CHANGELOG.md (#1049) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 986bc1da1f9..a166eda2aac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update Zabbix to 7.2. Release [@MickLesk](https://github.com/MickLesk) ([#1048](https://github.com/community-scripts/ProxmoxVE/pull/1048)) - Add 8.0 for MongoDB Installation [@MickLesk](https://github.com/MickLesk) ([#1046](https://github.com/community-scripts/ProxmoxVE/pull/1046)) - Apache-Guacamole script bug fix [@sannier3](https://github.com/sannier3) ([#1039](https://github.com/community-scripts/ProxmoxVE/pull/1039)) From d3eaf6eaf5188f4557c369a8f1121bae985c0bf4 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:38:03 +0100 Subject: [PATCH 164/286] Update CHANGELOG.md (#1050) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a166eda2aac..98c94b3e882 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,8 +26,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Update Zabbix to 7.2. Release [@MickLesk](https://github.com/MickLesk) ([#1048](https://github.com/community-scripts/ProxmoxVE/pull/1048)) - Add 8.0 for MongoDB Installation [@MickLesk](https://github.com/MickLesk) ([#1046](https://github.com/community-scripts/ProxmoxVE/pull/1046)) +- Update Zabbix to 7.2. Release [@MickLesk](https://github.com/MickLesk) ([#1048](https://github.com/community-scripts/ProxmoxVE/pull/1048)) - Apache-Guacamole script bug fix [@sannier3](https://github.com/sannier3) ([#1039](https://github.com/community-scripts/ProxmoxVE/pull/1039)) ### 🌐 Website From 87ff677ed7524dd13928e8d10b734461061c8d7a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 27 Dec 2024 20:42:36 +0100 Subject: [PATCH 165/286] Fix Authentik Logo --- json/authentik.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/json/authentik.json b/json/authentik.json index d55d0f1def5..4b3f87a3cb0 100644 --- a/json/authentik.json +++ b/json/authentik.json @@ -4,14 +4,14 @@ "categories": [ 11 ], - "date_created": "2024-12-26", + "date_created": "2024-12-27", "type": "ct", "updateable": true, "privileged": false, "interface_port": 9000, "documentation": "https://docs.goauthentik.io/docs/", "website": "https://goauthentik.io/", - "logo": "https://github.com/goauthentik/authentik/blob/main/website/static/img/icon.png", + "logo": "https://raw.githubusercontent.com/goauthentik/authentik/refs/heads/main/website/static/img/icon.png", "description": "authentik is an IdP (Identity Provider) and SSO (single sign on) that is built with security at the forefront of every piece of code, every feature, with an emphasis on flexibility and versatility.", "install_methods": [ { From b22d66da1b286f67861f05c3f9dcd477fab5d033 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 08:42:28 +0100 Subject: [PATCH 166/286] fix url --- ct/zabbix.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 243004844a5..55a5c9521fd 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -44,7 +44,7 @@ function update_script() { cp -R /usr/share/zabbix-* /opt/zabbix-backup/ rm -Rf /etc/apt/sources.list.d/zabbix.list cd /tmp - wget -q https://repo.zabbix.com/zabbix/7.2/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb + wget -q https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb dpkg -i zabbix-release_latest+debian12_all.deb &>/dev/null apt-get update &>/dev/null apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-* &>/dev/null From cdb121a55f19a1b0a568c2492e7643cc04e93dec Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 08:43:01 +0100 Subject: [PATCH 167/286] fix url --- install/zabbix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/zabbix-install.sh b/install/zabbix-install.sh index 671be438207..994f1616efc 100644 --- a/install/zabbix-install.sh +++ b/install/zabbix-install.sh @@ -22,7 +22,7 @@ msg_ok "Installed Dependencies" msg_info "Installing Zabbix" cd /tmp -wget -q https://repo.zabbix.com/zabbix/7.2/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb +wget -q https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb $STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb $STD apt-get update $STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts From 8c0794c2bbe73e44e6fef3eb39c8e4d17290a3d3 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 14:58:18 +0100 Subject: [PATCH 168/286] Update CHANGELOG.md (#1056) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 98c94b3e882..5e065a37cca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,10 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-28 + +### Changed + ## 2024-12-27 ### Changed From d4c95779bf8d713f234046605e9074313a6a9d75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Sat, 28 Dec 2024 20:31:25 +0100 Subject: [PATCH 169/286] Added missing port to access url (#1065) --- ct/authentik.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/authentik.sh b/ct/authentik.sh index 4b40b6def3d..6ea956ed2c9 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -82,4 +82,4 @@ description echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}/if/flow/initial-setup/${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9000/if/flow/initial-setup/${CL}" From fe3ff916b65b40b9c67195950304ea31f43e59d3 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:37:58 +0100 Subject: [PATCH 170/286] Add MOTD IP Update (#1067) --- misc/build.func | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/misc/build.func b/misc/build.func index ed08660a56f..1fe025a2cc8 100644 --- a/misc/build.func +++ b/misc/build.func @@ -157,6 +157,36 @@ arch_check() { fi } +# Function to get the current IP address based on the distribution +get_current_ip() { + if [ -f /etc/os-release ]; then + # Check for Debian/Ubuntu (uses hostname -I) + if grep -qE 'ID=debian|ID=ubuntu' /etc/os-release; then + CURRENT_IP=$(hostname -I | awk '{print $1}') + # Check for Alpine (uses ip command) + elif grep -q 'ID=alpine' /etc/os-release; then + CURRENT_IP=$(ip -4 addr show eth0 | awk '/inet / {print $2}' | cut -d/ -f1 | head -n 1) + else + CURRENT_IP="Unknown" + fi + fi + echo "$CURRENT_IP" +} + +# Function to update the IP address in the MOTD file +update_motd_ip() { + MOTD_FILE="/etc/motd" + + if [ -f "$MOTD_FILE" ]; then + # Remove existing IP Address lines to prevent duplication + sed -i '/IP Address:/d' "$MOTD_FILE" + + IP=$(get_current_ip) + # Add the new IP address + echo -e "${TAB}${NETWORK}${YW} IP Address: ${GN}${IP}${CL}" >> "$MOTD_FILE" + fi +} + # This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. header_info() { if [ -f /etc/debian_version ]; then From 92d2e421ee53a560dcd39a03bc50007135cda589 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:42:56 +0100 Subject: [PATCH 171/286] Update CHANGELOG.md (#1066) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e065a37cca..08edb807d08 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,14 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- Add an IP-Update for MOTD if IP Changed [@MickLesk](https://github.com/MickLesk) ([#1067](https://github.com/community-scripts/ProxmoxVE/pull/1067)) + +### 🚀 Updated Scripts + +- Authentik: added missing port to access url [@TheRealVira](https://github.com/TheRealVira) ([#1065](https://github.com/community-scripts/ProxmoxVE/pull/1065)) + ## 2024-12-27 ### Changed From 678206768caccd5ac43b75e6455bd552db8acd86 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:47:50 +0100 Subject: [PATCH 172/286] Zabbix: Fix SQL Path for 7.2 (#1069) --- install/zabbix-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/zabbix-install.sh b/install/zabbix-install.sh index 994f1616efc..286d425c2c9 100644 --- a/install/zabbix-install.sh +++ b/install/zabbix-install.sh @@ -39,7 +39,7 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';" $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';" $STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'" -zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null +zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf From 304db812a82d738378fc705435c595bb8d415f1e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:48:31 +0100 Subject: [PATCH 173/286] Update CHANGELOG.md (#1070) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08edb807d08..1bde017fe68 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -26,6 +26,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Zabbix: Fix SQL Path for 7.2 [@MickLesk](https://github.com/MickLesk) ([#1069](https://github.com/community-scripts/ProxmoxVE/pull/1069)) - Authentik: added missing port to access url [@TheRealVira](https://github.com/TheRealVira) ([#1065](https://github.com/community-scripts/ProxmoxVE/pull/1065)) ## 2024-12-27 From 611a14b55f0e96341f3ce3eec3a71838f151e040 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 20:53:37 +0100 Subject: [PATCH 174/286] Add Figlet into repo --- misc/figlet.tar.xz | Bin 0 -> 168152 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 misc/figlet.tar.xz diff --git a/misc/figlet.tar.xz b/misc/figlet.tar.xz new file mode 100644 index 0000000000000000000000000000000000000000..3a2308ebaeaac1a8488ab4f5817f960c73deb708 GIT binary patch literal 168152 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 Date: Sat, 28 Dec 2024 20:59:16 +0100 Subject: [PATCH 175/286] Add Figlet into Repo | Creation of local ASCII Header (#1072) * Add Figlet into Repo | Creation of local ASCII Header * update develop > main --- misc/build.func | 50 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/misc/build.func b/misc/build.func index 1fe025a2cc8..93a8519e984 100644 --- a/misc/build.func +++ b/misc/build.func @@ -189,28 +189,44 @@ update_motd_ip() { # This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. header_info() { - if [ -f /etc/debian_version ]; then - # Debian/Ubuntu - if ! grep -q "^deb http://ftp.debian.org/debian bookworm main contrib" /etc/apt/sources.list; then - echo "deb http://ftp.debian.org/debian bookworm main contrib" >> /etc/apt/sources.list + # Check if figlet is installed + if ! command -v figlet &> /dev/null; then + echo -e "${INFO}${BOLD}${DGN}Figlet for ASCII-Header not found. Installing... ${CL}" + + # Install necessary dependencies and figlet + if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then apt-get update -y &> /dev/null + apt-get install -y tar build-essential &> /dev/null + elif [ -f /etc/alpine-release ]; then + apk add --no-cache tar build-base &> /dev/null + export TERM=xterm + else + return 1 fi - apt-get install -y figlet &> /dev/null - elif [ -f /etc/alpine-release ]; then - # Alpine Linux - apk add --no-cache figlet ncurses &> /dev/null - export TERM=xterm - else - echo "Unsupported OS" - return 1 + temp_dir=$(mktemp -d) + curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz" + mkdir -p /tmp/figlet + tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1 + cd /tmp/figlet + # Run make to compile the figlet binary + make >/dev/null + # Check if the figlet binary exists + if [ -f "figlet" ]; then + chmod +x figlet + # Move figlet to /usr/local/bin if not already there + if [ ! -e /usr/local/bin/figlet ]; then + mv figlet /usr/local/bin/ + mkdir -p /usr/local/share/figlet + cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/ + fi + echo -e "${CM}${BOLD}${DGN}Figlet successfully installed. ${CL}" + fi + rm -rf "$temp_dir" fi - - term_width=$(tput cols 2>/dev/null || echo 120) # Fallback to 120 columns + term_width=$(tput cols 2>/dev/null || echo 120) ascii_art=$(figlet -f slant -w "$term_width" "$APP") clear - cat < Date: Sat, 28 Dec 2024 21:00:35 +0100 Subject: [PATCH 176/286] Update CHANGELOG.md (#1074) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 1bde017fe68..4841041303c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 💥 Breaking Changes +- Add Figlet into Repo | Creation of local ASCII Header [@MickLesk](https://github.com/MickLesk) ([#1072](https://github.com/community-scripts/ProxmoxVE/pull/1072)) - Add an IP-Update for MOTD if IP Changed [@MickLesk](https://github.com/MickLesk) ([#1067](https://github.com/community-scripts/ProxmoxVE/pull/1067)) ### 🚀 Updated Scripts From 5f39bb66a5845414189f198ab1e527d5d3fc6a3c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 28 Dec 2024 22:46:03 +0100 Subject: [PATCH 177/286] Check mariaDB Installpath --- ct/mariadb.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 52171c01004..83446e94bf3 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -28,7 +28,7 @@ function update_script() { header_info check_container_storage check_container_resources - if [[ ! -f /etc/apt/sources.list.d/mariadb.list ]]; then + if [[ ! -d /etc/mysql/mariadb.conf.d ]]; then msg_error "No ${APP} Installation Found!" exit fi From 13a52878ab69b0131421519454a63221a6a96835 Mon Sep 17 00:00:00 2001 From: Carl Furrow Date: Sun, 29 Dec 2024 04:40:19 -0500 Subject: [PATCH 178/286] Add new script: Grist (#1076) * feat: create grist helper scripts, and json create new scripts for https://github.com/gristlabs/grist-core based on homarr scripts * fix: move rm of zip into "clean up" * fix: remove second source * fix: include 'v' in release messages * fix: use full path to remove release zip * fix: update copyright * fix: combine nodejs installers into one section * fix: comment spacing * fix: copy .env file from existing grist_bak dir * fix: ensure "install:python" is run to install python deps --- ct/grist.sh | 78 +++++++++++++++++++++++++++++++++++++ install/grist-install.sh | 84 ++++++++++++++++++++++++++++++++++++++++ json/grist.json | 34 ++++++++++++++++ 3 files changed, 196 insertions(+) create mode 100644 ct/grist.sh create mode 100644 install/grist-install.sh create mode 100644 json/grist.json diff --git a/ct/grist.sh b/ct/grist.sh new file mode 100644 index 00000000000..3cf698339bd --- /dev/null +++ b/ct/grist.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Source: https://github.com/gristlabs/grist-core + +# App Default Values +APP="Grist" +var_tags="database;spreadsheet" +var_cpu="1" +var_ram="1024" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -d /opt/grist ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + + msg_info "Stopping ${APP} Service" + systemctl stop grist + msg_ok "Stopped ${APP} Service" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + rm -rf grist_bak + mv grist grist_bak + wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip + unzip -q v$RELEASE.zip + mv grist-core-${RELEASE} grist + cp -n /opt/grist_bak/.env /opt/grist/.env + cd grist + yarn install >/dev/null 2>&1 + yarn run build:prod >/dev/null 2>&1 + yarn run install:python >/dev/null 2>&1 + echo "${RELEASE}" >/opt/${APP}_version.txt + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting ${APP} Service" + systemctl start grist + msg_ok "Started ${APP} Service" + + msg_info "Cleaning up" + rm -rf /opt/v$RELEASE.zip + msg_ok "Cleaned" + + msg_ok "Updated Successfully!\n" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}Grist: http://${IP}:8484${CL}" diff --git a/install/grist-install.sh b/install/grist-install.sh new file mode 100644 index 00000000000..d0640d2af9b --- /dev/null +++ b/install/grist-install.sh @@ -0,0 +1,84 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: cfurrow +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/gristlabs/grist-core + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + make \ + gnupg \ + ca-certificates \ + mc \ + python3.11-venv +msg_ok "Installed Dependencies" + +msg_info "Installing Node.js" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list + +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + +msg_info "Installing yarn" +$STD npm install -g yarn +msg_ok "Installed yarn $(yarn --version)" + +msg_info "Installing Grist" +RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +cd /opt +wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip +unzip -q v$RELEASE.zip +mv grist-core-${RELEASE} grist +cd grist +$STD yarn install +$STD yarn run build:prod +$STD yarn run install:python +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt + +cat </opt/grist/.env +NODE_ENV=production +GRIST_HOST=0.0.0.0 +EOF + +msg_ok "Installed Grist" + +cat </etc/systemd/system/grist.service +[Unit] +Description=Grist +After=network.target + +[Service] +Type=exec +WorkingDirectory=/opt/grist +ExecStart=/usr/bin/yarn run start:prod +EnvironmentFile=-/opt/grist/.env + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable -q --now grist.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/v${RELEASE}.zip +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/grist.json b/json/grist.json new file mode 100644 index 00000000000..fc93ecd8b03 --- /dev/null +++ b/json/grist.json @@ -0,0 +1,34 @@ +{ + "name": "Grist", + "slug": "grist", + "categories": [ + 5 + ], + "date_created": "2024-12-27", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 8484, + "documentation": null, + "website": "https://www.getgrist.com/", + "logo": "https://github.com/gristlabs/grist-core/blob/main/static/img/logo-grist.png?raw=true", + "description": "Grist is a modern, open source spreadsheet that goes beyond the grid", + "install_methods": [ + { + "type": "default", + "script": "ct/grist.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 4, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From 3424e9a86e3856994e4451b270531a7d1f47eb74 Mon Sep 17 00:00:00 2001 From: Dominik Siebel <145283+dsiebel@users.noreply.github.com> Date: Sun, 29 Dec 2024 10:41:20 +0100 Subject: [PATCH 179/286] New Script: TeddyCloud Server (#1064) * New Script: TeddyCloud Server * provide logo URL to fix frontend build * fix website category * remove unnecessary info --- ct/teddycloud.sh | 70 +++++++++++++++++++++++++++++++++++ install/teddycloud-install.sh | 62 +++++++++++++++++++++++++++++++ json/teddycloud.json | 39 +++++++++++++++++++ 3 files changed, 171 insertions(+) create mode 100644 ct/teddycloud.sh create mode 100644 install/teddycloud-install.sh create mode 100644 json/teddycloud.json diff --git a/ct/teddycloud.sh b/ct/teddycloud.sh new file mode 100644 index 00000000000..65e49f20b84 --- /dev/null +++ b/ct/teddycloud.sh @@ -0,0 +1,70 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Dominik Siebel (dsiebel) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://github.com/toniebox-reverse-engineering/teddycloud + +# App default values +APP="TeddyCloud" +var_tags="media" +var_cpu="2" +var_disk="8" +var_ram="1024" +var_os="debian" +var_version="12" + +# App Output & Base Settings +header_info "${APP}" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/teddycloud ]]; then msg_error "No ${APP} Installation Found!"; exit; fi + RELEASE="$(curl -s https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" + VERSION="${RELEASE#tc_v}" + if [[ ! -f "/opt/${APP}_version.txt" || "${VERSION}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping ${APP}" + systemctl stop teddycloud + msg_ok "Stopped ${APP}" + + msg_info "Updating ${APP} to v${VERSION}" + PREVIOUS_VERSION="$(readlink -f /opt/teddycloud)" + wget -q "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" + unzip -q -d "/opt/teddycloud-${VERSION}" "teddycloud.amd64.release_v${VERSION}.zip" + ln -fns "/opt/teddycloud-${VERSION}" /opt/teddycloud + echo "${VERSION}" >"/opt/${APP}_version.txt" + cp -R "${PREVIOUS_VERSION}/certs" /opt/teddycloud + cp -R "${PREVIOUS_VERSION}/config" /opt/teddycloud + cp -R "${PREVIOUS_VERSION}/data" /opt/teddycloud + msg_ok "Updated ${APP} to v${VERSION}" + + msg_info "Starting ${APP}" + systemctl start teddycloud + msg_ok "Started ${APP}" + + msg_info "Cleaning up" + rm "teddycloud.amd64.release_v${VERSION}.zip" + rm -rf "${PREVIOUS_VERSION}" + msg_ok "Cleaned" + else + msg_ok "No update required. ${APP} is already at v${VERSION}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/teddycloud-install.sh b/install/teddycloud-install.sh new file mode 100644 index 00000000000..74fdeda8340 --- /dev/null +++ b/install/teddycloud-install.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: Dominik Siebel (dsiebel) +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<< "$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install --no-install-recommends --yes \ + curl \ + sudo \ + mc \ + libubsan1 \ + ffmpeg \ + curl \ + ca-certificates +msg_ok "Installed Dependencies" + +msg_info "Installing TeddyCloud" +RELEASE="$(curl -s https://api.github.com/repos/toniebox-reverse-engineering/teddycloud/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')" +VERSION="${RELEASE#tc_v}" +wget -q "https://github.com/toniebox-reverse-engineering/teddycloud/releases/download/${RELEASE}/teddycloud.amd64.release_v${VERSION}.zip" +unzip -q -d "/opt/teddycloud-${VERSION}" "teddycloud.amd64.release_v${VERSION}.zip" +ln -fns "/opt/teddycloud-${VERSION}" /opt/teddycloud +echo "${VERSION}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Installed TeddyCloud" + +msg_info "Creating Service" +cat </etc/systemd/system/teddycloud.service +[Unit] +Description=TeddyCloud Server +After=network.target + +[Service] +User=root +Type=simple +ExecStart=/opt/teddycloud/teddycloud +WorkingDirectory=/opt/teddycloud +Restart=on-failure + +[Install] +WantedBy=multi-user.target +EOF +systemctl enable --now -q teddycloud +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get --yes autoremove +$STD apt-get --yes autoclean +rm -rf "teddycloud.amd64.release_v${VERSION}.zip" +msg_ok "Cleaned" diff --git a/json/teddycloud.json b/json/teddycloud.json new file mode 100644 index 00000000000..2217c585f5f --- /dev/null +++ b/json/teddycloud.json @@ -0,0 +1,39 @@ +{ + "name": "TeddyCloud", + "slug": "teddycloud", + "categories": [ + 12 + ], + "date_created": "2024-12-28", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://tonies-wiki.revvox.de/docs/tools/teddycloud/", + "website": "https://tonies-wiki.revvox.de/docs/tools/teddycloud/", + "logo": "https://avatars.githubusercontent.com/u/57543015", + "description": "TeddyCloud is an open source server replacement for the Boxine Cloud.", + "install_methods": [ + { + "type": "default", + "script": "ct/teddycloud.sh", + "resources": { + "cpu": 2, + "ram": 1024, + "hdd": 8, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "First start of the service can take some time due to certificate generation.", + "type": "warn" + } + ] +} From 152eb6b2bb6af15155d6baeefaefccfcdb963b5b Mon Sep 17 00:00:00 2001 From: Dominik Siebel <145283+dsiebel@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:35:58 +0100 Subject: [PATCH 180/286] Introduce editorconfig for more consistent formatting (#1073) --- .editorconfig | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 .editorconfig diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 00000000000..f79a823d747 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,16 @@ +; editorconfig.org +root = true + +[*] +charset = utf-8 +continuation_indent_size = 2 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +max_line_length = 120 +tab_width = 2 +; trim_trailing_whitespace = true ; disabled until files are cleaned up + +[*.md] +trim_trailing_whitespace = false From c754f4e243355568ec5f0bf899c866d8848c2c2d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:27:16 +0100 Subject: [PATCH 181/286] remove unneded apt-get install command --- install/teddycloud-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/teddycloud-install.sh b/install/teddycloud-install.sh index 74fdeda8340..8f61b89259e 100644 --- a/install/teddycloud-install.sh +++ b/install/teddycloud-install.sh @@ -14,7 +14,7 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install --no-install-recommends --yes \ +$STD apt-get install -y \ curl \ sudo \ mc \ From 024480d0a4397bfc41c0e7db28d6903cf41978bc Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:33:31 +0100 Subject: [PATCH 182/286] some bugfixes --- install/grist-install.sh | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/install/grist-install.sh b/install/grist-install.sh index d0640d2af9b..18fcfbdc1e1 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -29,14 +29,10 @@ msg_info "Installing Node.js" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list - $STD apt-get update $STD apt-get install -y nodejs -msg_ok "Installed Node.js" - -msg_info "Installing yarn" $STD npm install -g yarn -msg_ok "Installed yarn $(yarn --version)" +msg_ok "Installed Node.js" msg_info "Installing Grist" RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') @@ -45,18 +41,17 @@ wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zi unzip -q v$RELEASE.zip mv grist-core-${RELEASE} grist cd grist -$STD yarn install -$STD yarn run build:prod -$STD yarn run install:python -echo "${RELEASE}" >/opt/${APPLICATION}_version.txt - +yarn install +yarn run build:prod +yarn run install:python cat </opt/grist/.env NODE_ENV=production GRIST_HOST=0.0.0.0 EOF - +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Grist" +msg_info "Create Service" cat </etc/systemd/system/grist.service [Unit] Description=Grist From 464fa283ad38298f29f18899ba4c7acc7b3413a1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:40:24 +0100 Subject: [PATCH 183/286] add node_options --- install/grist-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/grist-install.sh b/install/grist-install.sh index 18fcfbdc1e1..4604655c70e 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -36,6 +36,8 @@ msg_ok "Installed Node.js" msg_info "Installing Grist" RELEASE=$(curl -s https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +export CYPRESS_INSTALL_BINARY=0 +export NODE_OPTIONS="--max-old-space-size=2048" cd /opt wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip unzip -q v$RELEASE.zip From 30bc16072e85e197ca84b87496d455eab53306fd Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 29 Dec 2024 13:35:55 +0100 Subject: [PATCH 184/286] Update CHANGELOG.md (#1086) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4841041303c..cd26e10059b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-29 + +### Changed + +### ✨ New Scripts + +- New Script: Grist [@cfurrow](https://github.com/cfurrow) ([#1076](https://github.com/community-scripts/ProxmoxVE/pull/1076)) +- New Script: TeddyCloud Server [@dsiebel](https://github.com/dsiebel) ([#1064](https://github.com/community-scripts/ProxmoxVE/pull/1064)) + +### 🧰 Maintenance + +- Introduce editorconfig for more consistent formatting [@dsiebel](https://github.com/dsiebel) ([#1073](https://github.com/community-scripts/ProxmoxVE/pull/1073)) + ## 2024-12-28 ### Changed From 8717a0fcf1a708c5f117b3560e97b462cd8b9d03 Mon Sep 17 00:00:00 2001 From: Bram Suurd <78373894+BramSuurdje@users.noreply.github.com> Date: Sun, 29 Dec 2024 12:13:23 -0800 Subject: [PATCH 185/286] Update add-lxc-iptag.json (#1094) --- json/add-lxc-iptag.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/json/add-lxc-iptag.json b/json/add-lxc-iptag.json index 468d2745363..15abfe6426f 100644 --- a/json/add-lxc-iptag.json +++ b/json/add-lxc-iptag.json @@ -41,7 +41,7 @@ }, { "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`", - "type": "warn" + "type": "warning" } ] } From aa7e8e0810f5e647b5f1ef1c300e592cd84fb6c2 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 29 Dec 2024 21:17:49 +0100 Subject: [PATCH 186/286] Update CHANGELOG.md (#1098) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd26e10059b..fd4b31bf0fc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Grist [@cfurrow](https://github.com/cfurrow) ([#1076](https://github.com/community-scripts/ProxmoxVE/pull/1076)) - New Script: TeddyCloud Server [@dsiebel](https://github.com/dsiebel) ([#1064](https://github.com/community-scripts/ProxmoxVE/pull/1064)) +### 🌐 Website + +- fix: Update add-lxc-iptag.json warn to warning [@BramSuurdje](https://github.com/BramSuurdje) ([#1094](https://github.com/community-scripts/ProxmoxVE/pull/1094)) + ### 🧰 Maintenance - Introduce editorconfig for more consistent formatting [@dsiebel](https://github.com/dsiebel) ([#1073](https://github.com/community-scripts/ProxmoxVE/pull/1073)) From 415f99e3eb1ec6ace453b4c4243d76ff98baf47c Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Sun, 29 Dec 2024 21:23:30 +0100 Subject: [PATCH 187/286] Hotfix: Grist (#1091) --- ct/grist.sh | 2 +- install/grist-install.sh | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/ct/grist.sh b/ct/grist.sh index 3cf698339bd..154e3ff5ee5 100644 --- a/ct/grist.sh +++ b/ct/grist.sh @@ -6,7 +6,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m APP="Grist" var_tags="database;spreadsheet" var_cpu="1" -var_ram="1024" +var_ram="2048" var_disk="4" var_os="debian" var_version="12" diff --git a/install/grist-install.sh b/install/grist-install.sh index 4604655c70e..868c93ac50a 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -22,6 +22,7 @@ $STD apt-get install -y \ gnupg \ ca-certificates \ mc \ + unzip \ python3.11-venv msg_ok "Installed Dependencies" @@ -43,9 +44,9 @@ wget -q https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zi unzip -q v$RELEASE.zip mv grist-core-${RELEASE} grist cd grist -yarn install -yarn run build:prod -yarn run install:python +$STD yarn install +$STD yarn run build:prod +$STD yarn run install:python cat </opt/grist/.env NODE_ENV=production GRIST_HOST=0.0.0.0 @@ -68,6 +69,7 @@ EnvironmentFile=-/opt/grist/.env [Install] WantedBy=multi-user.target EOF + systemctl enable -q --now grist.service msg_ok "Created Service" @@ -78,4 +80,4 @@ msg_info "Cleaning up" rm -rf /opt/v${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" +msg_ok "Cleaned" \ No newline at end of file From 2832a1e2c4e3fa48bd90bbc99d7b97212c6f367d Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 29 Dec 2024 21:25:07 +0100 Subject: [PATCH 188/286] Update CHANGELOG.md (#1099) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fd4b31bf0fc..c6aea90823b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,10 @@ Do not break established syntax in this file, as it is automatically updated by - New Script: Grist [@cfurrow](https://github.com/cfurrow) ([#1076](https://github.com/community-scripts/ProxmoxVE/pull/1076)) - New Script: TeddyCloud Server [@dsiebel](https://github.com/dsiebel) ([#1064](https://github.com/community-scripts/ProxmoxVE/pull/1064)) +### 🚀 Updated Scripts + +- Fix Install / Update on Grist Script [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1091](https://github.com/community-scripts/ProxmoxVE/pull/1091)) + ### 🌐 Website - fix: Update add-lxc-iptag.json warn to warning [@BramSuurdje](https://github.com/BramSuurdje) ([#1094](https://github.com/community-scripts/ProxmoxVE/pull/1094)) From 96f30bf51f096ad007306261aa8ad6c22f1699ce Mon Sep 17 00:00:00 2001 From: Thomas Kramer <52584155+tmkis2@users.noreply.github.com> Date: Mon, 30 Dec 2024 17:40:11 +0100 Subject: [PATCH 189/286] Fix Trilium Website to TriliumNext (#1103) Co-authored-by: Thomas Kramer --- json/trilium.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/json/trilium.json b/json/trilium.json index 2914bb2da8c..4dd8686a309 100644 --- a/json/trilium.json +++ b/json/trilium.json @@ -10,8 +10,8 @@ "privileged": false, "interface_port": 8080, "documentation": null, - "website": "https://github.com/zadam/trilium#trilium-notes", - "logo": "https://raw.githubusercontent.com/zadam/trilium/master/images/app-icons/png/128x128.png?raw=true", + "website": "https://github.com/TriliumNext/Notes", + "logo": "https://github.com/TriliumNext/Notes/blob/develop/images/app-icons/png/128x128.png?raw=true", "description": "Trilium is an open-source note-taking and personal knowledge management application. It allows users to organize and manage their notes, ideas, and information in a single place, using a hierarchical tree-like structure. Trilium offers a range of features, including rich text formatting, links, images, and attachments, making it easy to create and structure notes. The software is designed to be flexible and customizable, with a range of customization options and plugins available, including themes, export options, and more. Trilium is a self-hosted solution, and can be run on a local machine or a cloud-based server, providing users with full control over their notes and information.", "install_methods": [ { @@ -31,4 +31,4 @@ "password": null }, "notes": [] -} \ No newline at end of file +} From df3919b9049f2c296b8ebd26fcd846edff629483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastiaan?= Date: Mon, 30 Dec 2024 17:41:06 +0100 Subject: [PATCH 190/286] fix: add homepage version during build step (#1107) * Set homepage version during build in ct script * Change install script * Split commands to multiple lines for ct script as well * Make sure shellcheck is happy --- ct/homepage.sh | 4 ++-- install/homepage-install.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index a4c62f8b60b..43fb247a7f5 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -52,7 +52,7 @@ function update_script() { cd /opt/homepage npx update-browserslist-db@latest pnpm install - pnpm build + NEXT_PUBLIC_VERSION=v$RELEASE NEXT_PUBLIC_REVISION='source' pnpm build systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated Homepage to v${RELEASE}" @@ -69,4 +69,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 96b7b2ce378..234d44d0a95 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -43,7 +43,7 @@ rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install -$STD pnpm build +$STD NEXT_PUBLIC_VERSION=v$RELEASE NEXT_PUBLIC_REVISION='source' pnpm build echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" From 21d857e7ad252c9750a0ddd2e4b08f9391536219 Mon Sep 17 00:00:00 2001 From: Strana-Mechty <124194364+Strana-Mechty@users.noreply.github.com> Date: Mon, 30 Dec 2024 17:43:08 +0100 Subject: [PATCH 191/286] Fix wrong port being printed post install. (#1105) At the conclusion of the setup the msg_ok block tells the user to use port 8080, this should be 8000. --- ct/archivebox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 53849d0014f..1a6e2b7455f 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -57,4 +57,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8080/admin/login${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8000/admin/login${CL}" From e3193558591ca3128bb0c4370f52649c4c188b8c Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Mon, 30 Dec 2024 18:09:02 +0100 Subject: [PATCH 192/286] Update CHANGELOG.md (#1115) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6aea90823b..97c5511270c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-30 + +### Changed + +### 🚀 Updated Scripts + +- [Archivebox] Fix wrong port being printed post install. [@Strana-Mechty](https://github.com/Strana-Mechty) ([#1105](https://github.com/community-scripts/ProxmoxVE/pull/1105)) +- fix: add homepage version during build step [@se-bastiaan](https://github.com/se-bastiaan) ([#1107](https://github.com/community-scripts/ProxmoxVE/pull/1107)) + +### 🌐 Website + +- Fix Trilium Website to TriliumNext [@tmkis2](https://github.com/tmkis2) ([#1103](https://github.com/community-scripts/ProxmoxVE/pull/1103)) + ## 2024-12-29 ### Changed From 4a8239b2cef051845438909754985319973e82b1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 30 Dec 2024 23:02:57 +0100 Subject: [PATCH 193/286] fix --- ct/homepage.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index 43fb247a7f5..d2f913a2d4a 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -52,7 +52,9 @@ function update_script() { cd /opt/homepage npx update-browserslist-db@latest pnpm install - NEXT_PUBLIC_VERSION=v$RELEASE NEXT_PUBLIC_REVISION='source' pnpm build + export NEXT_PUBLIC_VERSION=v$RELEASE + export NEXT_PUBLIC_REVISION='source' + pnpm build systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated Homepage to v${RELEASE}" From 13175efbd879effeff3eb97d0672f5c88156d89b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Mon, 30 Dec 2024 23:04:03 +0100 Subject: [PATCH 194/286] fix --- install/homepage-install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 234d44d0a95..906e524a0e8 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -43,7 +43,8 @@ rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install -$STD NEXT_PUBLIC_VERSION=v$RELEASE NEXT_PUBLIC_REVISION='source' pnpm build +$STD export NEXT_PUBLIC_VERSION=v$RELEASE +$STD export NEXT_PUBLIC_REVISION='source' $STD pnpm build echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" From 69ae09346f1e866fe29233633893379c200fabb1 Mon Sep 17 00:00:00 2001 From: Suraj Subramanian Date: Tue, 31 Dec 2024 13:25:53 +0530 Subject: [PATCH 195/286] Update URL to https (#1124) --- ct/netbox.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/netbox.sh b/ct/netbox.sh index bfa96d3f722..8d34969d908 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -87,4 +87,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}https://${IP}${CL}" \ No newline at end of file From c9f4391df0d3002a00e7c053508d715177f2dee9 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 08:59:53 +0100 Subject: [PATCH 196/286] Fix Homepage-Script: Installation/Update (#1129) * Fix some Parts of Homepage-Script * Fix Install --- ct/homepage.sh | 12 ++++++------ install/homepage-install.sh | 5 +++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index d2f913a2d4a..0e3ef692645 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -50,16 +50,16 @@ function update_script() { cp -r homepage-${RELEASE}/* /opt/homepage/ rm -rf homepage-${RELEASE} cd /opt/homepage - npx update-browserslist-db@latest - pnpm install - export NEXT_PUBLIC_VERSION=v$RELEASE - export NEXT_PUBLIC_REVISION='source' - pnpm build + npx update-browserslist-db@latest >/dev/null 2>&1 + pnpm install >/dev/null 2>&1 + NEXT_PUBLIC_VERSION=v$RELEASE + NEXT_PUBLIC_REVISION='source' + pnpm build >/dev/null 2>&1 systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt msg_ok "Updated Homepage to v${RELEASE}" else - msg_ok "No update required. ${APP} is already at ${RELEASE}" + msg_ok "No update required. ${APP} is already at v${RELEASE}" fi exit } diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 906e524a0e8..85414ab3ef7 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -43,8 +43,9 @@ rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install -$STD export NEXT_PUBLIC_VERSION=v$RELEASE -$STD export NEXT_PUBLIC_REVISION='source' $STD pnpm build +$STD NEXT_PUBLIC_VERSION=v$RELEASE +$STD NEXT_PUBLIC_REVISION='source' +$STD pnpm build echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" From 3543d10d3565c7e2171a8ef8d6d0873a0f357892 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 09:02:07 +0100 Subject: [PATCH 197/286] update Alpine XZ Patch --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 93a8519e984..a91ecd21ffd 100644 --- a/misc/build.func +++ b/misc/build.func @@ -198,7 +198,7 @@ header_info() { apt-get update -y &> /dev/null apt-get install -y tar build-essential &> /dev/null elif [ -f /etc/alpine-release ]; then - apk add --no-cache tar build-base &> /dev/null + apk add --no-cache tar xz build-base &> /dev/null export TERM=xterm else return 1 From dc314990f8d38954569857b74f3ac6aa183aa9bc Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 31 Dec 2024 09:03:13 +0100 Subject: [PATCH 198/286] Update CHANGELOG.md (#1128) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 97c5511270c..fa0dfcfcb33 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,15 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2024-12-31 + +### Changed + +### 🚀 Updated Scripts + +- Fix Homepage-Script: Installation/Update [@MickLesk](https://github.com/MickLesk) ([#1129](https://github.com/community-scripts/ProxmoxVE/pull/1129)) +- Netbox: Updating URL to https [@surajsbmn](https://github.com/surajsbmn) ([#1124](https://github.com/community-scripts/ProxmoxVE/pull/1124)) + ## 2024-12-30 ### Changed From 2479ceeb99e41632e56ac7df0f27feb95bc48fac Mon Sep 17 00:00:00 2001 From: Emik Date: Tue, 31 Dec 2024 16:42:13 +0800 Subject: [PATCH 199/286] fix: update guacd service configuration in installation script (#1122) --- install/apache-guacamole-install.sh | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh index 71393235c6d..1a465ddf3ab 100644 --- a/install/apache-guacamole-install.sh +++ b/install/apache-guacamole-install.sh @@ -126,7 +126,21 @@ Restart=always [Install] WantedBy=multi-user.target EOF -systemctl -q enable --now tomcat guacd mysql +cat </etc/systemd/system/guacd.service +[Unit] +Description=Guacamole Proxy Daemon (guacd) +After=mysql.service tomcat.service +Requires=mysql.service tomcat.service +[Service] +Type=forking +ExecStart=/etc/init.d/guacd start +ExecStop=/etc/init.d/guacd stop +ExecReload=/etc/init.d/guacd restart +PIDFile=/var/run/guacd.pid +[Install] +WantedBy=multi-user.target +EOF +systemctl -q enable --now mysql tomcat guacd msg_ok "Setup Service" motd_ssh From a77ce0bad0c00edd355d53a95f6f30edf8fb195e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 10:36:13 +0100 Subject: [PATCH 200/286] Revert Changes from PR --- install/homepage-install.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 85414ab3ef7..96b7b2ce378 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -43,8 +43,6 @@ rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install -$STD NEXT_PUBLIC_VERSION=v$RELEASE -$STD NEXT_PUBLIC_REVISION='source' $STD pnpm build echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" From f2d11ea48c5aa1ca974e99470313588a3ff1a2ed Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 10:36:27 +0100 Subject: [PATCH 201/286] Revert Changes from PR --- ct/homepage.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index 0e3ef692645..f02fe77f108 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -52,8 +52,6 @@ function update_script() { cd /opt/homepage npx update-browserslist-db@latest >/dev/null 2>&1 pnpm install >/dev/null 2>&1 - NEXT_PUBLIC_VERSION=v$RELEASE - NEXT_PUBLIC_REVISION='source' pnpm build >/dev/null 2>&1 systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt From 4f517de2d189121f50bdade17dc1854c73b55089 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 14:11:10 +0100 Subject: [PATCH 202/286] Fix: Figlet Version & Font Check (#1133) --- misc/build.func | 63 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 41 insertions(+), 22 deletions(-) diff --git a/misc/build.func b/misc/build.func index a91ecd21ffd..623a53bc733 100644 --- a/misc/build.func +++ b/misc/build.func @@ -189,40 +189,59 @@ update_motd_ip() { # This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. header_info() { - # Check if figlet is installed - if ! command -v figlet &> /dev/null; then - echo -e "${INFO}${BOLD}${DGN}Figlet for ASCII-Header not found. Installing... ${CL}" + # Helper function: Install FIGlet and download fonts + install_figlet() { + echo -e "${INFO}${BOLD}${DGN}Installing FIGlet...${CL}" - # Install necessary dependencies and figlet - if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then - apt-get update -y &> /dev/null - apt-get install -y tar build-essential &> /dev/null - elif [ -f /etc/alpine-release ]; then - apk add --no-cache tar xz build-base &> /dev/null - export TERM=xterm - else - return 1 - fi temp_dir=$(mktemp -d) curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz" mkdir -p /tmp/figlet tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1 cd /tmp/figlet - # Run make to compile the figlet binary make >/dev/null - # Check if the figlet binary exists + if [ -f "figlet" ]; then chmod +x figlet - # Move figlet to /usr/local/bin if not already there - if [ ! -e /usr/local/bin/figlet ]; then - mv figlet /usr/local/bin/ - mkdir -p /usr/local/share/figlet - cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/ - fi - echo -e "${CM}${BOLD}${DGN}Figlet successfully installed. ${CL}" + mv figlet /usr/local/bin/ + mkdir -p /usr/local/share/figlet + cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/ + echo -e "${CM}${BOLD}${DGN}FIGlet successfully installed.${CL}" + else + echo -e "${ERR}${BOLD}${RED}Failed to install FIGlet.${CL}" + return 1 fi rm -rf "$temp_dir" + } + + # Check if figlet and the slant font are available + if ! figlet -f slant "Test" &>/dev/null; then + echo -e "${INFO}${BOLD}${DGN}FIGlet or the slant font is missing. Installing...${CL}" + + if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then + # Debian/Ubuntu-based systems + apt-get update -y &>/dev/null + apt-get install -y wget build-essential &>/dev/null + install_figlet + + elif [ -f /etc/alpine-release ]; then + # Alpine-based systems + apk add --no-cache tar xz build-base wget &>/dev/null + export TERM=xterm + install_figlet + + else + echo -e "${ERR}${BOLD}${RED}Unsupported operating system.${CL}" + return 1 + fi + + # Ensure the slant font is available + if [ ! -f "/usr/share/figlet/slant.flf" ]; then + echo -e "${INFO}${BOLD}${DGN}Downloading slant font...${CL}" + wget -qO /usr/share/figlet/slant.flf "http://www.figlet.org/fonts/slant.flf" + fi fi + + # Display ASCII header term_width=$(tput cols 2>/dev/null || echo 120) ascii_art=$(figlet -f slant -w "$term_width" "$APP") clear From 68aad8e1522161955b8c65ab3197677b42f8ba65 Mon Sep 17 00:00:00 2001 From: Sung Jeon Date: Tue, 31 Dec 2024 22:14:41 +0900 Subject: [PATCH 203/286] Add ExecReload to prometheus.service (#1131) --- install/prometheus-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/prometheus-install.sh b/install/prometheus-install.sh index 032a9d8c785..db3d1f527fa 100644 --- a/install/prometheus-install.sh +++ b/install/prometheus-install.sh @@ -46,6 +46,7 @@ ExecStart=/usr/local/bin/prometheus \ --config.file=/etc/prometheus/prometheus.yml \ --storage.tsdb.path=/var/lib/prometheus/ \ --web.listen-address=0.0.0.0:9090 +ExecReload=/bin/kill -HUP \$MAINPID [Install] WantedBy=multi-user.target" >$service_path From 72f844ddc684c272fee265048aa1ff9ff29e6aad Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 31 Dec 2024 14:17:03 +0100 Subject: [PATCH 204/286] Update CHANGELOG.md (#1130) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fa0dfcfcb33..f62a3fe7f48 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,8 +20,14 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 💥 Breaking Changes + +- Add ExecReload to prometheus.service [@BasixKOR](https://github.com/BasixKOR) ([#1131](https://github.com/community-scripts/ProxmoxVE/pull/1131)) +- Fix: Figlet Version & Font Check [@MickLesk](https://github.com/MickLesk) ([#1133](https://github.com/community-scripts/ProxmoxVE/pull/1133)) + ### 🚀 Updated Scripts +- fix: guacd service not start during Apache-Guacamole script installation process [@PhoenixEmik](https://github.com/PhoenixEmik) ([#1122](https://github.com/community-scripts/ProxmoxVE/pull/1122)) - Fix Homepage-Script: Installation/Update [@MickLesk](https://github.com/MickLesk) ([#1129](https://github.com/community-scripts/ProxmoxVE/pull/1129)) - Netbox: Updating URL to https [@surajsbmn](https://github.com/surajsbmn) ([#1124](https://github.com/community-scripts/ProxmoxVE/pull/1124)) From af4b833aa4aad7f0a1312ced55f4ce2d6dd76ab1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 14:44:01 +0100 Subject: [PATCH 205/286] Omada: Switch Base-URL to prevent issues (#1135) * fix path for omada update * fix omada install --- ct/omada.sh | 4 +--- install/omada-install.sh | 4 +--- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ct/omada.sh b/ct/omada.sh index 0ef88d784d7..7d8f9eec1db 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -32,9 +32,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | \ - grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | \ - head -n 1) + latest_url=$(curl -s "https://www.vigi.com/de/support/download/omada-software-controller/" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." diff --git a/install/omada-install.sh b/install/omada-install.sh index e29372fc874..de04a843efe 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -38,9 +38,7 @@ wget -qL https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/3.6/multiv $STD dpkg -i mongodb-org-server_3.6.23_amd64.deb msg_ok "Installed MongoDB" -latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | \ -grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | \ -head -n 1) +latest_url=$(curl -s "https://www.vigi.com/de/support/download/omada-software-controller/" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) latest_version=$(basename "$latest_url") msg_info "Installing Omada Controller" From 19c3b1dee0e4337d55a0f16b68034c8b53cdde9d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 15:00:44 +0100 Subject: [PATCH 206/286] Update omada.sh --- ct/omada.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/omada.sh b/ct/omada.sh index 7d8f9eec1db..c408ea73cc4 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -32,7 +32,7 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - latest_url=$(curl -s "https://www.vigi.com/de/support/download/omada-software-controller/" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) + latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) latest_version=$(basename "$latest_url") if [ -z "${latest_version}" ]; then msg_error "It seems that the server (tp-link.com) might be down. Please try again at a later time." From 0aeec1402518bb6b5c550531bee101a53943cb2a Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 15:01:14 +0100 Subject: [PATCH 207/286] Update omada-install.sh --- install/omada-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/omada-install.sh b/install/omada-install.sh index de04a843efe..e94f862cb99 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -38,7 +38,7 @@ wget -qL https://repo.mongodb.org/apt/ubuntu/dists/bionic/mongodb-org/3.6/multiv $STD dpkg -i mongodb-org-server_3.6.23_amd64.deb msg_ok "Installed MongoDB" -latest_url=$(curl -s "https://www.vigi.com/de/support/download/omada-software-controller/" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) +latest_url=$(curl -s "https://support.omadanetworks.com/en/product/omada-software-controller/?resourceType=download" | grep -o 'https://static\.tp-link\.com/upload/software/[^"]*linux_x64[^"]*\.deb' | head -n 1) latest_version=$(basename "$latest_url") msg_info "Installing Omada Controller" From 10634a77c79534ab93a5555796131c50aa3c2193 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 15:06:53 +0100 Subject: [PATCH 208/286] Fix: Copy issue after update in Bookstack LXC (#1137) --- ct/bookstack.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ct/bookstack.sh b/ct/bookstack.sh index e8b6aa1698e..c69b2ba4e95 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -44,9 +44,9 @@ function update_script() { unzip -q /opt/v${RELEASE}.zip -d /opt mv /opt/BookStack-${RELEASE} /opt/bookstack cp /opt/bookstack-backup/.env /opt/bookstack/.env - cp -r /opt/bookstack-backup/public/uploads/ /opt/bookstack/public/uploads - cp -r /opt/bookstack-backup/storage/uploads/ /opt/bookstack/storage/uploads - cp -r /opt/bookstack-backup/themes/ /opt/bookstack/themes + cp -r /opt/bookstack-backup/public/uploads/* /opt/bookstack/public/uploads/ + cp -r /opt/bookstack-backup/storage/uploads/* /opt/bookstack/storage/uploads/ + cp -r /opt/bookstack-backup/themes/* /opt/bookstack/themes/ cd /opt/bookstack COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null php artisan migrate --force &>/dev/null From 70f2a5095556fbac0744b371527f9c30e89941c2 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Tue, 31 Dec 2024 15:08:04 +0100 Subject: [PATCH 209/286] Update CHANGELOG.md (#1136) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index f62a3fe7f48..be959c8370e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Copy issue after update in Bookstack LXC [@MickLesk](https://github.com/MickLesk) ([#1137](https://github.com/community-scripts/ProxmoxVE/pull/1137)) +- Omada: Switch Base-URL to prevent issues [@MickLesk](https://github.com/MickLesk) ([#1135](https://github.com/community-scripts/ProxmoxVE/pull/1135)) - fix: guacd service not start during Apache-Guacamole script installation process [@PhoenixEmik](https://github.com/PhoenixEmik) ([#1122](https://github.com/community-scripts/ProxmoxVE/pull/1122)) - Fix Homepage-Script: Installation/Update [@MickLesk](https://github.com/MickLesk) ([#1129](https://github.com/community-scripts/ProxmoxVE/pull/1129)) - Netbox: Updating URL to https [@surajsbmn](https://github.com/surajsbmn) ([#1124](https://github.com/community-scripts/ProxmoxVE/pull/1124)) From bf53f57e1010c05ab981693c03bdbf521d109c40 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Tue, 31 Dec 2024 15:13:06 +0100 Subject: [PATCH 210/286] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index be959c8370e..e3324e833c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow -## 2024-12-31 +## 2024-12-31 - Happy new Year! 🎉✨ ### Changed From 47377fdd267c8b2f0d4127dcebf54436bb23e9ec Mon Sep 17 00:00:00 2001 From: Thomas Kunzfeld Date: Wed, 1 Jan 2025 11:30:02 +0100 Subject: [PATCH 211/286] Split installing dependencies for chromium and chronium itself (#1140) --- install/archivebox-install.sh | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/install/archivebox-install.sh b/install/archivebox-install.sh index 9d05a034c8c..3a9dcb079eb 100644 --- a/install/archivebox-install.sh +++ b/install/archivebox-install.sh @@ -47,14 +47,14 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Installing Playright/Chromium" -$STD pip install playwright -$STD playwright install --with-deps chromium -msg_ok "Installed Playright/Chromium" +msg_info "Installing Playwright" +$STD pip install playwright +$STD playwright install-deps chromium +msg_ok "Installed Playwright" -msg_info "Installing ArchiveBox" +msg_info "Installing Chromium and ArchiveBox" mkdir -p /opt/archivebox/{data,.npm,.cache,.local} -$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password archivebox +$STD adduser --system --shell /bin/bash --gecos 'Archive Box User' --group --disabled-password --home /home/archivebox archivebox chown -R archivebox:archivebox /opt/archivebox/{data,.npm,.cache,.local} chmod -R 755 /opt/archivebox/data $STD pip install archivebox @@ -63,6 +63,7 @@ expect < Date: Wed, 1 Jan 2025 12:37:06 +0200 Subject: [PATCH 212/286] New Script: Firefly (#616) * firefly * initial commit for test * more tests * fix fix fix * fixeeees * update flow * test * fixed install probably * update fix * update fix * fixes on versioning * 123 * test update * update flow test * hope it works now? * work pleaaaase * reeveeeeeert * cleanup * more cleanup * Ready for PR! * Update firefly.json * Fixes * more fixes * fix firefly.json * Update firefly-install.sh * Update firefly.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/firefly.sh | 85 +++++++++++++++++++++++++++++++ install/firefly-install.sh | 101 +++++++++++++++++++++++++++++++++++++ json/firefly.json | 39 ++++++++++++++ 3 files changed, 225 insertions(+) create mode 100644 ct/firefly.sh create mode 100644 install/firefly-install.sh create mode 100644 json/firefly.json diff --git a/ct/firefly.sh b/ct/firefly.sh new file mode 100644 index 00000000000..c8370dc4bcb --- /dev/null +++ b/ct/firefly.sh @@ -0,0 +1,85 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: quantumryuu +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://firefly-iii.org/ + +# App Default Values +APP="Firefly" +var_tags="finance" +var_cpu="1" +var_ram="1024" +var_disk="2" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { +header_info +check_container_storage +check_container_resources + + if [[ ! -d /opt/firefly ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Apache2" + systemctl stop apache2 + msg_ok "Stopped Apache2" + + msg_info "Updating ${APP} to v${RELEASE}" + cp /opt/firefly/.env /opt/.env + cp -r /opt/firefly/storage /opt/storage + rm -rf /opt/firefly/* + cd /opt + wget -q "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" + tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly --exclude='storage' + cd /opt/firefly + composer install --no-dev --no-interaction &>/dev/null + php artisan migrate --seed --force &>/dev/null + php artisan firefly:decrypt-all &>/dev/null + php artisan cache:clear &>/dev/null + php artisan view:clear &>/dev/null + php artisan firefly:upgrade-database &>/dev/null + php artisan firefly:laravel-passport-keys &>/dev/null + chown -R www-data:www-data /opt/firefly + chmod -R 775 /opt/firefly/storage + + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting Apache2" + systemctl start apache2 + msg_ok "Started Apache2" + + msg_info "Cleaning up" + rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" \ No newline at end of file diff --git a/install/firefly-install.sh b/install/firefly-install.sh new file mode 100644 index 00000000000..1e9bf455894 --- /dev/null +++ b/install/firefly-install.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: quantumryuu +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo +curl -sSLo /usr/share/keyrings/deb.sury.org-php.gpg https://packages.sury.org/php/apt.gpg +echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages.sury.org/php/ bookworm main" >/etc/apt/sources.list.d/php.list +$STD apt-get update +$STD apt-get install -y \ + apache2 \ + libapache2-mod-php8.3 \ + php8.3-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \ + mariadb-server \ + composer +msg_ok "Installed Dependencies" + +msg_info "Setting up database" +DB_NAME=firefly +DB_USER=firefly +DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13) +MYSQL_VERSION=$(mysql --version | grep -oP 'Distrib \K[0-9]+\.[0-9]+\.[0-9]+') +mysql -u root -e "CREATE DATABASE $DB_NAME;" +mysql -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED WITH mysql_native_password AS PASSWORD('$DB_PASS');" +mysql -u root -e "GRANT ALL ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;" +{ + echo "Firefly-Credentials" + echo "Firefly Database User: $DB_USER" + echo "Firefly Database Password: $DB_PASS" + echo "Firefly Database Name: $DB_NAME" +} >> ~/firefly.creds +msg_ok "Set up database" + +msg_info "Installing Firefly III (Patience)" +RELEASE=$(curl -s https://api.github.com/repos/firefly-iii/firefly-iii/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4)}') +cd /opt +wget -q "https://github.com/firefly-iii/firefly-iii/releases/download/v${RELEASE}/FireflyIII-v${RELEASE}.tar.gz" +mkdir -p /opt/firefly +tar -xzf FireflyIII-v${RELEASE}.tar.gz -C /opt/firefly +chown -R www-data:www-data /opt/firefly +chmod -R 775 /opt/firefly/storage +cd /opt/firefly +cp .env.example .env +sed -i "s/DB_HOST=.*/DB_HOST=localhost/" /opt/firefly/.env +sed -i "s/DB_PASSWORD=.*/DB_PASSWORD=$DB_PASS/" /opt/firefly/.env +echo "export COMPOSER_ALLOW_SUPERUSER=1" >> ~/.bashrc +source ~/.bashrc +$STD composer install --no-dev --no-plugins --no-interaction +$STD php artisan firefly:upgrade-database +$STD php artisan firefly:correct-database +$STD php artisan firefly:report-integrity +$STD php artisan firefly:laravel-passport-keys +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Installed Firefly III" + +msg_info "Creating Service" +cat </etc/apache2/sites-available/firefly.conf + + ServerAdmin webmaster@localhost + DocumentRoot /opt/firefly/public/ + + + Options FollowSymLinks + AllowOverride All + Require all granted + + + ErrorLog /var/log/apache2/error.log + CustomLog /var/log/apache2/access.log combined + + +EOF +$STD a2enmod php8.3 +$STD a2enmod rewrite +$STD a2ensite firefly.conf +$STD a2dissite 000-default.conf +$STD systemctl reload apache2 +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf /opt/FireflyIII-v${RELEASE}.tar.gz +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/firefly.json b/json/firefly.json new file mode 100644 index 00000000000..64a3669a58a --- /dev/null +++ b/json/firefly.json @@ -0,0 +1,39 @@ +{ + "name": "Firefly III", + "slug": "firefly", + "categories": [ + 0 + ], + "date_created": "2025-01-01", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://docs.firefly-iii.org/", + "website": "https://firefly-iii.org/", + "logo": "https://raw.githubusercontent.com/firefly-iii/firefly-iii/develop/.github/assets/img/logo-small.png", + "description": "Firefly III is a free, self-hosted tool for managing your finances. Track expenses, plan budgets, and get detailed reports.", + "install_methods": [ + { + "type": "default", + "script": "ct/firefly.sh", + "resources": { + "cpu": 1, + "ram": 1024, + "hdd": 2, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Database credentials: `cat ~/firefly.creds`", + "type": "info" + } + ] +} From 2af49786804bf01a104eb35518d7bd0ce64dbe8b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 12:48:28 +0100 Subject: [PATCH 213/286] Update Kernel-Clean to new Version & Bugfixing (#1147) * Update Kernel-Clean to new Version & Bugfixing * Update kernel-clean.sh --- misc/kernel-clean.sh | 130 +++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 85 deletions(-) diff --git a/misc/kernel-clean.sh b/misc/kernel-clean.sh index 058ed240324..959318bdb3e 100644 --- a/misc/kernel-clean.sh +++ b/misc/kernel-clean.sh @@ -1,7 +1,6 @@ #!/usr/bin/env bash - -# Copyright (c) 2021-2024 tteck -# Author: tteck (tteckster) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -17,104 +16,65 @@ function header_info { EOF } -# Color variables for output -YW=$(echo "\033[33m") -RD=$(echo "\033[01;31m") -GN=$(echo "\033[1;92m") -CL=$(echo "\033[m") -BFR="\\r\\033[K" -HOLD="-" -CM="${GN}✓${CL}" - -# Functions for logging messages -function msg_info() { - local msg="$1" - echo -ne " ${HOLD} ${YW}${msg}..." -} - -function msg_ok() { - local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" -} +# Color variables +YW="\033[33m" +GN="\033[1;92m" +RD="\033[01;31m" +CL="\033[m" # Detect current kernel current_kernel=$(uname -r) - -# Detect all installed kernels except the current one available_kernels=$(dpkg --list | grep 'kernel-.*-pve' | awk '{print $2}' | grep -v "$current_kernel" | sort -V) header_info -# If no old kernels are available, exit with a message if [ -z "$available_kernels" ]; then - whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Old Kernels" \ - --msgbox "It appears there are no old kernels on your system.\nCurrent kernel: $current_kernel" 10 68 - echo "Exiting..." - sleep 2 - clear - exit + echo -e "${GN}No old kernels detected. Current kernel: ${current_kernel}${CL}" + exit 0 fi -# Prepare kernel options for selection -KERNEL_MENU=() -while read -r TAG ITEM; do - OFFSET=2 - MSG_MAX_LENGTH=$((MSG_MAX_LENGTH < ${#ITEM} + OFFSET ? ${#ITEM} + OFFSET : MSG_MAX_LENGTH)) - KERNEL_MENU+=("$TAG" "$ITEM " "OFF") -done < <(echo "$available_kernels") +echo -e "${YW}Available kernels for removal:${CL}" +echo "$available_kernels" | nl -w 2 -s '. ' -# Display checklist to select kernels for removal -remove_kernels=$(whiptail --backtitle "Proxmox VE Helper Scripts" \ - --title "Current Kernel: $current_kernel" \ - --checklist "\nSelect kernels to remove:\n" \ - 16 $((MSG_MAX_LENGTH + 58)) 6 "${KERNEL_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"') || exit +echo -e "\n${YW}Select kernels to remove (comma-separated, e.g., 1,2):${CL}" +read -r selected -# Exit if no kernel was selected -[ -z "$remove_kernels" ] && { - whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Kernel Selected" \ - --msgbox "It appears no kernel was selected." 10 68 - echo "Exiting..." - sleep 2 - clear - exit -} +# Parse selection +IFS=',' read -r -a selected_indices <<< "$selected" +kernels_to_remove=() + +for index in "${selected_indices[@]}"; do + kernel=$(echo "$available_kernels" | sed -n "${index}p") + if [ -n "$kernel" ]; then + kernels_to_remove+=("$kernel") + fi +done + +if [ ${#kernels_to_remove[@]} -eq 0 ]; then + echo -e "${RD}No valid selection made. Exiting.${CL}" + exit 1 +fi # Confirm removal -whiptail --backtitle "Proxmox VE Helper Scripts" --title "Remove Kernels" \ - --yesno "Would you like to remove the $(echo $remove_kernels | awk '{print NF}') selected kernels?" 10 68 || exit +echo -e "${YW}Kernels to be removed:${CL}" +printf "%s\n" "${kernels_to_remove[@]}" +read -rp "Proceed with removal? (y/n): " confirm +if [[ "$confirm" != "y" ]]; then + echo -e "${RD}Aborted.${CL}" + exit 1 +fi -# Process kernel removal -msg_info "Removing ${RD}$(echo $remove_kernels | awk '{print NF}') ${YW}old kernels${CL}" -for kernel in $remove_kernels; do - if [[ $kernel == *"-signed" ]]; then - # Handle signed kernels with dependencies - touch /please-remove-proxmox-ve # Temporarily bypass Proxmox warnings - if sudo apt-get purge -y "$kernel" >/dev/null 2>&1; then - msg_ok "Removed kernel: $kernel" - else - msg_info "Failed to remove kernel: $kernel. Check dependencies or manual removal." - fi - rm -f /please-remove-proxmox-ve # Clean up bypass file +# Remove kernels +for kernel in "${kernels_to_remove[@]}"; do + echo -e "${YW}Removing $kernel...${CL}" + if apt-get purge -y "$kernel" >/dev/null 2>&1; then + echo -e "${GN}Successfully removed: $kernel${CL}" else - # Standard kernel removal - if sudo apt-get purge -y "$kernel" >/dev/null 2>&1; then - msg_ok "Removed kernel: $kernel" - else - msg_info "Failed to remove kernel: $kernel. Check dependencies or manual removal." - fi + echo -e "${RD}Failed to remove: $kernel. Check dependencies.${CL}" fi - sleep 1 done -# Update GRUB configuration -msg_info "Updating GRUB" -if /usr/sbin/update-grub >/dev/null 2>&1; then - msg_ok "GRUB updated successfully" -else - msg_info "Failed to update GRUB" -fi - -# Completion message -msg_info "Exiting" -sleep 2 -msg_ok "Finished" +# Clean up and update GRUB +echo -e "${YW}Cleaning up...${CL}" +apt-get autoremove -y >/dev/null 2>&1 && update-grub >/dev/null 2>&1 +echo -e "${GN}Cleanup and GRUB update complete.${CL}" From 50f7ae12372f0de61f29c6f392567e8388945271 Mon Sep 17 00:00:00 2001 From: Kristo Copani <31226503+quantumryuu@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:56:38 +0200 Subject: [PATCH 214/286] New Script: Semaphore (#596) * re-add files * update a lot of things * more stuff * update password generation * Ready to PR! * remove empty end lines * Ready to PR! * Update semaphore.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/semaphore.sh | 71 +++++++++++++++++++++++++++++ install/semaphore-install.sh | 87 ++++++++++++++++++++++++++++++++++++ json/semaphore.json | 41 +++++++++++++++++ 3 files changed, 199 insertions(+) create mode 100644 ct/semaphore.sh create mode 100644 install/semaphore-install.sh create mode 100644 json/semaphore.json diff --git a/ct/semaphore.sh b/ct/semaphore.sh new file mode 100644 index 00000000000..5f84faa5e91 --- /dev/null +++ b/ct/semaphore.sh @@ -0,0 +1,71 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2024 community-scripts ORG +# Author: kristocopani +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://semaphoreui.com/ + +# App Default Values +APP="Semaphore" +var_tags="dev_ops" +var_cpu="2" +var_ram="2048" +var_disk="4" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + if [[ ! -f /etc/systemd/system/semaphore.service ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/semaphoreui/semaphore/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop semaphore + msg_ok "Stopped Service" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + wget -q https://github.com/semaphoreui/semaphore/releases/download/v${RELEASE}/semaphore_${RELEASE}_linux_amd64.deb + dpkg -i semaphore_${RELEASE}_linux_amd64.deb &>/dev/null + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP} to v${RELEASE}" + + msg_info "Starting Service" + systemctl start semaphore + msg_ok "Started Service" + + msg_info "Cleaning up" + rm -rf /opt/semaphore_${RELEASE}_linux_amd64.deb + msg_ok "Cleaned" + msg_ok "Updated Successfully" + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file diff --git a/install/semaphore-install.sh b/install/semaphore-install.sh new file mode 100644 index 00000000000..0f40928f145 --- /dev/null +++ b/install/semaphore-install.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2024 community-scripts ORG +# Author: kristocopani +# License: MIT +# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + git \ + gpg \ + sudo + +wget -qO- "https://keyserver.ubuntu.com/pks/lookup?fingerprint=on&op=get&search=0x6125E2A8C77F2818FB7BD15B93C4A3FD7BB9C367" | gpg --dearmour >/usr/share/keyrings/ansible-archive-keyring.gpg +cat </etc/apt/sources.list.d/ansible.list +deb [signed-by=/usr/share/keyrings/ansible-archive-keyring.gpg] http://ppa.launchpad.net/ansible/ansible/ubuntu jammy main +EOF +$STD apt update +$STD apt install -y ansible +msg_ok "Installed Dependencies" + +msg_info "Setup Semaphore" +RELEASE=$(curl -s https://api.github.com/repos/semaphoreui/semaphore/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') +mkdir -p /opt/semaphore +cd /opt/semaphore +wget -q https://github.com/semaphoreui/semaphore/releases/download/v${RELEASE}/semaphore_${RELEASE}_linux_amd64.deb +$STD dpkg -i semaphore_${RELEASE}_linux_amd64.deb + +SEM_HASH=$(openssl rand -base64 32) +SEM_ENCRYPTION=$(openssl rand -base64 32) +SEM_KEY=$(openssl rand -base64 32) +SEM_PW=$(openssl rand -base64 12) +cat </opt/semaphore/config.json +{ + "bolt": { + "host": "/opt/semaphore/semaphore_db.bolt" + }, + "tmp_path": "/opt/semaphore/tmp", + "cookie_hash": "${SEM_HASH}", + "cookie_encryption": "${SEM_ENCRYPTION}", + "access_key_encryption": "${SEM_KEY}" +} +EOF + +$STD semaphore user add --admin --login admin --email admin@helper-scripts.com --name Administrator --password ${SEM_PW} --config /opt/semaphore/config.json +echo "${SEM_PW}" >~/semaphore.creds +echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt" +msg_ok "Setup Semaphore" + +msg_info "Creating Service" +cat </etc/systemd/system/semaphore.service +[Unit] +Description=Semaphore UI +Documentation=https://docs.semaphoreui.com/ +Wants=network-online.target +After=network-online.target + +[Service] +ExecStart=/usr/bin/semaphore server --config /opt/semaphore/config.json +Restart=always +RestartSec=10s + +[Install] +WantedBy=multi-user.target +EOF + +systemctl enable --now -q semaphore.service +msg_ok "Created Service" + +motd_ssh +customize + +msg_info "Cleaning up" +rm -rf semaphore_${RELEASE}_linux_amd64.deb +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" \ No newline at end of file diff --git a/json/semaphore.json b/json/semaphore.json new file mode 100644 index 00000000000..89433239152 --- /dev/null +++ b/json/semaphore.json @@ -0,0 +1,41 @@ +{ + "name": "Semaphore", + "slug": "semaphore", + "categories": [], + "date_created": "2025-01-01", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 3000, + "documentation": "https://docs.semaphoreui.com/", + "website": "https://semaphoreui.com/", + "logo": "https://docs.semaphoreui.com/favicon.png?x=", + "description": "Semaphore UI is a modern web interface for managing popular DevOps tools", + "install_methods": [ + { + "type": "default", + "script": "ct/semaphore.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 4, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": "admin", + "password": null + }, + "notes": [ + { + "text": "This instance uses BoltDB", + "type": "info" + }, + { + "text": "Admin password: `cat ~/semaphore.creds`", + "type": "info" + } + ] +} From 409af1b14a3e87016f97b24f1306e0387b46ab1b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 12:58:09 +0100 Subject: [PATCH 215/286] Fix Firefly to PHP8.4 --- install/firefly-install.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/install/firefly-install.sh b/install/firefly-install.sh index 1e9bf455894..371d2601bc5 100644 --- a/install/firefly-install.sh +++ b/install/firefly-install.sh @@ -23,8 +23,8 @@ echo "deb [signed-by=/usr/share/keyrings/deb.sury.org-php.gpg] https://packages. $STD apt-get update $STD apt-get install -y \ apache2 \ - libapache2-mod-php8.3 \ - php8.3-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \ + libapache2-mod-php8.4 \ + php8.4-{bcmath,cli,intl,curl,zip,gd,xml,mbstring,mysql} \ mariadb-server \ composer msg_ok "Installed Dependencies" From 2f05dcbf87a4612bcc3ac7bd0e33d31716227e8f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 12:59:14 +0100 Subject: [PATCH 216/286] Update CHANGELOG.md (#1146) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index e3324e833c8..8026ce75ed3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,20 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-01 + +### Changed + +### ✨ New Scripts + +- New Script: Semaphore [@quantumryuu](https://github.com/quantumryuu) ([#596](https://github.com/community-scripts/ProxmoxVE/pull/596)) +- New Script: Firefly [@quantumryuu](https://github.com/quantumryuu) ([#616](https://github.com/community-scripts/ProxmoxVE/pull/616)) + +### 🚀 Updated Scripts + +- Update Kernel-Clean to new Version & Bugfixing [@MickLesk](https://github.com/MickLesk) ([#1147](https://github.com/community-scripts/ProxmoxVE/pull/1147)) +- Fix chromium installation for ArchiveBox [@tkunzfeld](https://github.com/tkunzfeld) ([#1140](https://github.com/community-scripts/ProxmoxVE/pull/1140)) + ## 2024-12-31 - Happy new Year! 🎉✨ ### Changed From 3c765790a3c4753e78bfeee9ca9642aa6c277e4d Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:02:16 +0100 Subject: [PATCH 217/286] Fix PhP 8.4 --- install/firefly-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/firefly-install.sh b/install/firefly-install.sh index 371d2601bc5..6f131f47f4d 100644 --- a/install/firefly-install.sh +++ b/install/firefly-install.sh @@ -84,7 +84,7 @@ cat </etc/apache2/sites-available/firefly.conf EOF -$STD a2enmod php8.3 +$STD a2enmod php8.4 $STD a2enmod rewrite $STD a2ensite firefly.conf $STD a2dissite 000-default.conf From ac37d90403088336999cd0c2788d9b9192e0d093 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:11:31 +0100 Subject: [PATCH 218/286] Fix Category of Semaphore (#1148) --- json/semaphore.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/json/semaphore.json b/json/semaphore.json index 89433239152..057fe6ce403 100644 --- a/json/semaphore.json +++ b/json/semaphore.json @@ -1,7 +1,9 @@ { "name": "Semaphore", "slug": "semaphore", - "categories": [], + "categories": [ + 7 + ], "date_created": "2025-01-01", "type": "ct", "updateable": true, From a119a27b4f969d192dfcb66b4b0e034bf38e1a99 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:13:19 +0100 Subject: [PATCH 219/286] Update shellcheck.yml Check only PR files, because massive (useless) breaks over all scripts --- .github/workflows/shellcheck.yml | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index 842ebabd587..a01a978d39a 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -17,9 +17,12 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Get changed files + id: changes + run: | + echo "::set-output name=files::$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '\.sh$')" + - name: Run ShellCheck - uses: ludeeus/action-shellcheck@master - with: - ignore_paths: >- - frontend - json + if: steps.changes.outputs.files != '' + run: | + echo "${{ steps.changes.outputs.files }}" | xargs shellcheck From ccdb7007e74ce09eb583359b3fbe9f0e3fcff5f1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:26:51 +0100 Subject: [PATCH 220/286] Update CHANGELOG.md (#1149) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8026ce75ed3..ab86530ba53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,14 +22,18 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts -- New Script: Semaphore [@quantumryuu](https://github.com/quantumryuu) ([#596](https://github.com/community-scripts/ProxmoxVE/pull/596)) - New Script: Firefly [@quantumryuu](https://github.com/quantumryuu) ([#616](https://github.com/community-scripts/ProxmoxVE/pull/616)) +- New Script: Semaphore [@quantumryuu](https://github.com/quantumryuu) ([#596](https://github.com/community-scripts/ProxmoxVE/pull/596)) ### 🚀 Updated Scripts - Update Kernel-Clean to new Version & Bugfixing [@MickLesk](https://github.com/MickLesk) ([#1147](https://github.com/community-scripts/ProxmoxVE/pull/1147)) - Fix chromium installation for ArchiveBox [@tkunzfeld](https://github.com/tkunzfeld) ([#1140](https://github.com/community-scripts/ProxmoxVE/pull/1140)) +### 🌐 Website + +- Fix Category of Semaphore [@MickLesk](https://github.com/MickLesk) ([#1148](https://github.com/community-scripts/ProxmoxVE/pull/1148)) + ## 2024-12-31 - Happy new Year! 🎉✨ ### Changed From 15f04d525d2d3e4c4c53f3848abe0bb40014f831 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:37:29 +0100 Subject: [PATCH 221/286] Happy new Year! Update Copyright to 2025 (#1150) --- LICENSE | 2 +- ct/2fauth.sh | 2 +- ct/actualbudget.sh | 2 +- ct/adguard.sh | 2 +- ct/adventurelog.sh | 2 +- ct/agentdvr.sh | 2 +- ct/alpine-docker.sh | 2 +- ct/alpine-grafana.sh | 2 +- ct/alpine-nextcloud.sh | 2 +- ct/alpine-vaultwarden.sh | 2 +- ct/alpine-zigbee2mqtt.sh | 2 +- ct/alpine.sh | 2 +- ct/apache-cassandra.sh | 2 +- ct/apache-couchdb.sh | 2 +- ct/apache-guacamole.sh | 2 +- ct/apt-cacher-ng.sh | 2 +- ct/archivebox.sh | 2 +- ct/aria2.sh | 2 +- ct/audiobookshelf.sh | 2 +- ct/authentik.sh | 2 +- ct/autobrr.sh | 2 +- ct/bazarr.sh | 2 +- ct/blocky.sh | 2 +- ct/bookstack.sh | 2 +- ct/bunkerweb.sh | 2 +- ct/caddy.sh | 2 +- ct/calibre-web.sh | 2 +- ct/casaos.sh | 2 +- ct/changedetection.sh | 2 +- ct/channels.sh | 2 +- ct/checkmk.sh | 2 +- ct/cloudflared.sh | 2 +- ct/cockpit.sh | 2 +- ct/commafeed.sh | 2 +- ct/create_lxc.sh | 2 +- ct/cronicle.sh | 2 +- ct/daemonsync.sh | 2 +- ct/dashy.sh | 2 +- ct/debian.sh | 2 +- ct/deconz.sh | 2 +- ct/deluge.sh | 2 +- ct/docker.sh | 2 +- ct/dockge.sh | 2 +- ct/emby.sh | 2 +- ct/emqx.sh | 2 +- ct/ersatztv.sh | 2 +- ct/esphome.sh | 2 +- ct/evcc.sh | 2 +- ct/fenrus.sh | 2 +- ct/fhem.sh | 2 +- ct/firefly.sh | 2 +- ct/flaresolverr.sh | 2 +- ct/flowiseai.sh | 2 +- ct/forgejo.sh | 2 +- ct/frigate.sh | 2 +- ct/gitea.sh | 2 +- ct/glance.sh | 2 +- ct/go2rtc.sh | 2 +- ct/gokapi.sh | 2 +- ct/gotify.sh | 2 +- ct/grafana.sh | 2 +- ct/grocy.sh | 2 +- ct/headscale.sh | 2 +- ct/heimdall-dashboard.sh | 2 +- ct/hivemq.sh | 2 +- ct/hoarder.sh | 2 +- ct/homarr.sh | 2 +- ct/homeassistant-core.sh | 2 +- ct/homeassistant.sh | 2 +- ct/homebox.sh | 2 +- ct/homebridge.sh | 2 +- ct/homepage.sh | 2 +- ct/homer.sh | 2 +- ct/hyperhdr.sh | 2 +- ct/hyperion.sh | 2 +- ct/influxdb.sh | 2 +- ct/inspircd.sh | 2 +- ct/iobroker.sh | 2 +- ct/iventoy.sh | 2 +- ct/jackett.sh | 2 +- ct/jellyfin.sh | 2 +- ct/jellyseerr.sh | 2 +- ct/jenkins.sh | 2 +- ct/kavita.sh | 2 +- ct/keycloak.sh | 2 +- ct/kimai.sh | 2 +- ct/komga.sh | 2 +- ct/kubo.sh | 2 +- ct/lazylibrarian.sh | 2 +- ct/lidarr.sh | 2 +- ct/linkwarden.sh | 2 +- ct/listmonk.sh | 2 +- ct/lldap.sh | 2 +- ct/lubelogger.sh | 2 +- ct/mafl.sh | 2 +- ct/magicmirror.sh | 2 +- ct/mariadb.sh | 2 +- ct/matterbridge.sh | 2 +- ct/mediamtx.sh | 2 +- ct/medusa.sh | 2 +- ct/memos.sh | 2 +- ct/meshcentral.sh | 2 +- ct/metube.sh | 2 +- ct/mongodb.sh | 2 +- ct/motioneye.sh | 2 +- ct/mqtt.sh | 2 +- ct/mylar3.sh | 2 +- ct/myspeed.sh | 2 +- ct/mysql.sh | 2 +- ct/n8n.sh | 2 +- ct/navidrome.sh | 2 +- ct/neo4j.sh | 2 +- ct/netbox.sh | 2 +- ct/nextcloudpi.sh | 2 +- ct/nextpvr.sh | 2 +- ct/nginxproxymanager.sh | 2 +- ct/nocodb.sh | 2 +- ct/node-red.sh | 2 +- ct/notifiarr.sh | 2 +- ct/ntfy.sh | 2 +- ct/nzbget.sh | 2 +- ct/octoprint.sh | 2 +- ct/ollama.sh | 2 +- ct/omada.sh | 2 +- ct/ombi.sh | 2 +- ct/omv.sh | 2 +- ct/onedev.sh | 2 +- ct/openhab.sh | 2 +- ct/openobserve.sh | 2 +- ct/openwebui.sh | 2 +- ct/overseerr.sh | 2 +- ct/owncast.sh | 2 +- ct/pairdrop.sh | 2 +- ct/paperless-ngx.sh | 2 +- ct/part-db.sh | 2 +- ct/pbs.sh | 2 +- ct/peanut.sh | 2 +- ct/petio.sh | 2 +- ct/photoprism.sh | 2 +- ct/pialert.sh | 2 +- ct/pihole.sh | 2 +- ct/pingvin.sh | 2 +- ct/plex.sh | 2 +- ct/pocketbase.sh | 2 +- ct/podman-homeassistant.sh | 2 +- ct/podman.sh | 2 +- ct/postgresql.sh | 2 +- ct/prometheus.sh | 2 +- ct/prowlarr.sh | 2 +- ct/proxmox-datacenter-manager.sh | 2 +- ct/qbittorrent.sh | 2 +- ct/rabbitmq.sh | 2 +- ct/radarr.sh | 2 +- ct/rdtclient.sh | 2 +- ct/readarr.sh | 2 +- ct/readeck.sh | 2 +- ct/recyclarr.sh | 2 +- ct/redis.sh | 2 +- ct/rtsptoweb.sh | 2 +- ct/runtipi.sh | 2 +- ct/sabnzbd.sh | 2 +- ct/semaphore.sh | 2 +- ct/sftpgo.sh | 2 +- ct/shinobi.sh | 2 +- ct/silverbullet.sh | 2 +- ct/smokeping.sh | 2 +- ct/snipeit.sh | 2 +- ct/sonarr.sh | 2 +- ct/spoolman.sh | 2 +- ct/stirling-pdf.sh | 2 +- ct/syncthing.sh | 2 +- ct/tandoor.sh | 2 +- ct/tasmoadmin.sh | 2 +- ct/tautulli.sh | 2 +- ct/tdarr.sh | 2 +- ct/technitiumdns.sh | 2 +- ct/teddycloud.sh | 2 +- ct/the-lounge.sh | 2 +- ct/threadfin.sh | 2 +- ct/tianji.sh | 2 +- ct/traccar.sh | 2 +- ct/traefik.sh | 2 +- ct/transmission.sh | 2 +- ct/trilium.sh | 2 +- ct/ubuntu.sh | 2 +- ct/umami.sh | 2 +- ct/umbrel.sh | 2 +- ct/unbound.sh | 2 +- ct/unifi.sh | 2 +- ct/unmanic.sh | 2 +- ct/uptimekuma.sh | 2 +- ct/vaultwarden.sh | 2 +- ct/vikunja.sh | 2 +- ct/wallos.sh | 2 +- ct/wastebin.sh | 2 +- ct/watchyourlan.sh | 2 +- ct/wavelog.sh | 2 +- ct/whisparr.sh | 2 +- ct/whoogle.sh | 2 +- ct/wikijs.sh | 2 +- ct/wireguard.sh | 2 +- ct/yunohost.sh | 2 +- ct/zabbix.sh | 2 +- ct/zammad.sh | 2 +- ct/zigbee2mqtt.sh | 2 +- ct/zipline.sh | 2 +- ct/zoraxy.sh | 2 +- ct/zwave-js-ui.sh | 2 +- install/2fauth-install.sh | 2 +- install/actualbudget-install.sh | 2 +- install/adguard-install.sh | 2 +- install/adventurelog-install.sh | 2 +- install/agentdvr-install.sh | 2 +- install/alpine-docker-install.sh | 2 +- install/alpine-grafana-install.sh | 2 +- install/alpine-install.sh | 2 +- install/alpine-nextcloud-install.sh | 2 +- install/alpine-vaultwarden-install.sh | 2 +- install/alpine-zigbee2mqtt-install.sh | 2 +- install/apache-cassandra-install.sh | 2 +- install/apache-couchdb-install.sh | 2 +- install/apache-guacamole-install.sh | 2 +- install/apt-cacher-ng-install.sh | 2 +- install/archivebox-install.sh | 2 +- install/aria2-install.sh | 2 +- install/audiobookshelf-install.sh | 2 +- install/authentik-install.sh | 2 +- install/autobrr-install.sh | 2 +- install/bazarr-install.sh | 2 +- install/blocky-install.sh | 2 +- install/bookstack-install.sh | 2 +- install/bunkerweb-install.sh | 2 +- install/caddy-install.sh | 2 +- install/calibre-web-install.sh | 2 +- install/casaos-install.sh | 2 +- install/changedetection-install.sh | 2 +- install/channels-install.sh | 2 +- install/checkmk-install.sh | 2 +- install/cloudflared-install.sh | 2 +- install/cockpit-install.sh | 2 +- install/commafeed-install.sh | 2 +- install/cronicle-install.sh | 2 +- install/daemonsync-install.sh | 2 +- install/dashy-install.sh | 2 +- install/debian-install.sh | 2 +- install/deconz-install.sh | 2 +- install/deluge-install.sh | 2 +- install/docker-install.sh | 2 +- install/dockge-install.sh | 2 +- install/emby-install.sh | 2 +- install/emqx-install.sh | 2 +- install/ersatztv-install.sh | 2 +- install/esphome-install.sh | 2 +- install/evcc-install.sh | 2 +- install/fenrus-install.sh | 2 +- install/fhem-install.sh | 2 +- install/firefly-install.sh | 2 +- install/flaresolverr-install.sh | 2 +- install/flowiseai-install.sh | 2 +- install/forgejo-install.sh | 2 +- install/frigate-install.sh | 2 +- install/gitea-install.sh | 2 +- install/glance-install.sh | 2 +- install/go2rtc-install.sh | 2 +- install/gokapi-install.sh | 2 +- install/gotify-install.sh | 2 +- install/grafana-install.sh | 2 +- install/grist-install.sh | 2 +- install/grocy-install.sh | 2 +- install/headscale-install.sh | 2 +- install/heimdall-dashboard-install.sh | 2 +- install/hivemq-install.sh | 2 +- install/hoarder-install.sh | 2 +- install/homarr-install.sh | 2 +- install/homeassistant-core-install.sh | 2 +- install/homeassistant-install.sh | 2 +- install/homebox-install.sh | 2 +- install/homebridge-install.sh | 2 +- install/homepage-install.sh | 2 +- install/homer-install.sh | 2 +- install/hyperhdr-install.sh | 2 +- install/hyperion-install.sh | 2 +- install/influxdb-install.sh | 2 +- install/inspircd-install.sh | 2 +- install/iobroker-install.sh | 2 +- install/iventoy-install.sh | 2 +- install/jackett-install.sh | 2 +- install/jellyfin-install.sh | 2 +- install/jellyseerr-install.sh | 2 +- install/jenkins-install.sh | 2 +- install/kavita-install.sh | 2 +- install/keycloak-install.sh | 2 +- install/kimai-install.sh | 2 +- install/komga-install.sh | 2 +- install/kubo-install.sh | 2 +- install/lazylibrarian-install.sh | 2 +- install/lidarr-install.sh | 2 +- install/linkwarden-install.sh | 2 +- install/listmonk-install.sh | 2 +- install/lldap-install.sh | 2 +- install/lubelogger-install.sh | 2 +- install/mafl-install.sh | 2 +- install/magicmirror-install.sh | 2 +- install/mariadb-install.sh | 2 +- install/matterbridge-install.sh | 2 +- install/mediamtx-install.sh | 2 +- install/medusa-install.sh | 2 +- install/memos-install.sh | 2 +- install/meshcentral-install.sh | 2 +- install/metube-install.sh | 2 +- install/mongodb-install.sh | 2 +- install/motioneye-install.sh | 2 +- install/mqtt-install.sh | 2 +- install/mylar3-install.sh | 2 +- install/myspeed-install.sh | 2 +- install/mysql-install.sh | 2 +- install/n8n-install.sh | 2 +- install/navidrome-install.sh | 2 +- install/neo4j-install.sh | 2 +- install/netbox-install.sh | 2 +- install/nextcloudpi-install.sh | 2 +- install/nextpvr-install.sh | 2 +- install/nginxproxymanager-install.sh | 2 +- install/nocodb-install.sh | 2 +- install/node-red-install.sh | 2 +- install/notifiarr-install.sh | 2 +- install/ntfy-install.sh | 2 +- install/nzbget-install.sh | 2 +- install/octoprint-install.sh | 2 +- install/ollama-install.sh | 2 +- install/omada-install.sh | 2 +- install/ombi-install.sh | 2 +- install/omv-install.sh | 2 +- install/onedev-install.sh | 2 +- install/openhab-install.sh | 2 +- install/openobserve-install.sh | 2 +- install/openwebui-install.sh | 2 +- install/overseerr-install.sh | 2 +- install/owncast-install.sh | 2 +- install/pairdrop-install.sh | 2 +- install/paperless-ngx-install.sh | 2 +- install/part-db-install.sh | 2 +- install/pbs-install.sh | 2 +- install/peanut-install.sh | 2 +- install/petio-install.sh | 2 +- install/photoprism-install.sh | 2 +- install/pialert-install.sh | 2 +- install/pihole-install.sh | 2 +- install/pingvin-install.sh | 2 +- install/plex-install.sh | 2 +- install/pocketbase-install.sh | 2 +- install/podman-homeassistant-install.sh | 2 +- install/podman-install.sh | 2 +- install/postgresql-install.sh | 2 +- install/prometheus-install.sh | 2 +- install/prowlarr-install.sh | 2 +- install/proxmox-datacenter-manager-install.sh | 2 +- install/qbittorrent-install.sh | 2 +- install/rabbitmq-install.sh | 2 +- install/radarr-install.sh | 2 +- install/rdtclient-install.sh | 2 +- install/readarr-install.sh | 2 +- install/readeck-install.sh | 2 +- install/recyclarr-install.sh | 2 +- install/redis-install.sh | 2 +- install/rtsptoweb-install.sh | 2 +- install/runtipi-install.sh | 2 +- install/sabnzbd-install.sh | 2 +- install/semaphore-install.sh | 2 +- install/sftpgo-install.sh | 2 +- install/shinobi-install.sh | 2 +- install/silverbullet-install.sh | 2 +- install/smokeping-install.sh | 2 +- install/snipeit-install.sh | 2 +- install/sonarr-install.sh | 2 +- install/spoolman-install.sh | 2 +- install/stirling-pdf-install.sh | 2 +- install/syncthing-install.sh | 2 +- install/tandoor-install.sh | 2 +- install/tasmoadmin-install.sh | 2 +- install/tautulli-install.sh | 2 +- install/tdarr-install.sh | 2 +- install/technitiumdns-install.sh | 2 +- install/teddycloud-install.sh | 2 +- install/the-lounge-install.sh | 2 +- install/threadfin-install.sh | 2 +- install/tianji-install.sh | 2 +- install/traccar-install.sh | 2 +- install/traefik-install.sh | 2 +- install/transmission-install.sh | 2 +- install/trilium-install.sh | 2 +- install/ubuntu-install.sh | 2 +- install/umami-install.sh | 2 +- install/umbrel-install.sh | 2 +- install/unbound-install.sh | 2 +- install/unifi-install.sh | 2 +- install/unmanic-install.sh | 2 +- install/uptimekuma-install.sh | 2 +- install/vaultwarden-install.sh | 2 +- install/vikunja-install.sh | 2 +- install/wallos-install.sh | 2 +- install/wastebin-install.sh | 2 +- install/watchyourlan-install.sh | 2 +- install/wavelog-install.sh | 2 +- install/whisparr-install.sh | 2 +- install/whoogle-install.sh | 2 +- install/wikijs-install.sh | 2 +- install/wireguard-install.sh | 2 +- install/yunohost-install.sh | 2 +- install/zabbix-install.sh | 2 +- install/zammad-install.sh | 2 +- install/zigbee2mqtt-install.sh | 2 +- install/zipline-install.sh | 2 +- install/zoraxy-install.sh | 2 +- install/zwave-js-ui-install.sh | 2 +- misc/add-lxc-iptag.sh | 2 +- misc/add-netbird-lxc.sh | 2 +- misc/add-tailscale-lxc.sh | 2 +- misc/all-templates.sh | 2 +- misc/alpine-install.func | 2 +- misc/build.func | 2 +- misc/clean-lxcs.sh | 2 +- misc/clean.sh | 2 +- misc/code-server.sh | 2 +- misc/container-restore-from-backup.sh | 2 +- ...-assistant-container-copy-data-home-assistant-container.sh | 2 +- .../home-assistant-container-copy-data-home-assistant-core.sh | 2 +- ...ome-assistant-container-copy-data-podman-home-assistant.sh | 2 +- .../home-assistant-core-copy-data-home-assistant-container.sh | 2 +- .../home-assistant-core-copy-data-home-assistant-core.sh | 2 +- misc/copy-data/plex-copy-data-plex.sh | 2 +- ...odman-home-assistant-copy-data-home-assistant-container.sh | 2 +- misc/copy-data/z2m-copy-data-z2m.sh | 2 +- misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh | 2 +- misc/core-restore-from-backup.sh | 2 +- misc/cron-update-lxcs.sh | 2 +- misc/crowdsec.sh | 2 +- misc/filebrowser.sh | 2 +- misc/frigate-support.sh | 2 +- misc/fstrim.sh | 2 +- misc/glances.sh | 2 +- misc/host-backup.sh | 2 +- misc/hw-acceleration.sh | 2 +- misc/install.func | 2 +- misc/kernel-pin.sh | 2 +- misc/microcode.sh | 2 +- misc/monitor-all.sh | 2 +- misc/netdata.sh | 2 +- misc/olivetin.sh | 2 +- misc/pbs3-upgrade.sh | 2 +- misc/post-pbs-install.sh | 2 +- misc/post-pve-install.sh | 2 +- misc/pve8-upgrade.sh | 2 +- misc/pyenv.sh | 4 ++-- misc/scaling-governor.sh | 2 +- misc/update-lxcs-cron.sh | 2 +- misc/update-lxcs.sh | 2 +- misc/update-repo.sh | 2 +- misc/usb-passthrough.sh | 2 +- misc/webmin.sh | 2 +- turnkey/turnkey.sh | 2 +- vm/debian-vm.sh | 2 +- vm/haos-vm.sh | 2 +- vm/mikrotik-routeros.sh | 2 +- vm/nextcloud-vm.sh | 2 +- vm/openwrt.sh | 2 +- vm/owncloud-vm.sh | 2 +- vm/pimox-haos-vm.sh | 2 +- vm/ubuntu2204-vm.sh | 2 +- vm/ubuntu2404-vm.sh | 2 +- 470 files changed, 471 insertions(+), 471 deletions(-) diff --git a/LICENSE b/LICENSE index 8603db7b13f..3dfc60d2203 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2021-2024 tteck | community-scripts ORG +Copyright (c) 2021-2025 tteck | community-scripts ORG Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/ct/2fauth.sh b/ct/2fauth.sh index 1f930ac41e6..3ef44999c2e 100644 --- a/ct/2fauth.sh +++ b/ct/2fauth.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: jkrgr0 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.2fauth.app/ diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index b5925f1d85d..8bad74dcdb3 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://actualbudget.org/ diff --git a/ct/adguard.sh b/ct/adguard.sh index c233e2b4a97..d4d94f593e9 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://adguard.com/ diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index 14478040ef4..5c168ce4e55 100644 --- a/ct/adventurelog.sh +++ b/ct/adventurelog.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://adventurelog.app/ diff --git a/ct/agentdvr.sh b/ct/agentdvr.sh index 07810da88c3..2e5cda1b750 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.ispyconnect.com/ diff --git a/ct/alpine-docker.sh b/ct/alpine-docker.sh index b04cd64a82b..267066b1a12 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/alpine-grafana.sh b/ct/alpine-grafana.sh index c71d9a21da9..909ade3d6eb 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/alpine-nextcloud.sh b/ct/alpine-nextcloud.sh index ec1a313ea32..d41b9e3dc56 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/alpine-vaultwarden.sh b/ct/alpine-vaultwarden.sh index 9f18067b3d6..cafb2e4e88e 100644 --- a/ct/alpine-vaultwarden.sh +++ b/ct/alpine-vaultwarden.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/alpine-zigbee2mqtt.sh b/ct/alpine-zigbee2mqtt.sh index 688d513d6cf..4760d94a7df 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/alpine.sh b/ct/alpine.sh index 4b1a28bc54b..a89e79f2e21 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/apache-cassandra.sh b/ct/apache-cassandra.sh index 0e0db07b2f4..8e127029162 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cassandra.apache.org/_/index.html diff --git a/ct/apache-couchdb.sh b/ct/apache-couchdb.sh index 9f1b415997a..9df39570f82 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://couchdb.apache.org/ diff --git a/ct/apache-guacamole.sh b/ct/apache-guacamole.sh index 96df515fd86..35a2fceaff0 100644 --- a/ct/apache-guacamole.sh +++ b/ct/apache-guacamole.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/refs/heads/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: | MIT https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://guacamole.apache.org/ diff --git a/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index 52182d22a27..09c10d9d13a 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wiki.debian.org/AptCacherNg diff --git a/ct/archivebox.sh b/ct/archivebox.sh index 1a6e2b7455f..1fd6f09804b 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://archivebox.io/ diff --git a/ct/aria2.sh b/ct/aria2.sh index af1bd81854b..366d7279a58 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://aria2.github.io/ diff --git a/ct/audiobookshelf.sh b/ct/audiobookshelf.sh index 8c8770f1151..ccb1cac6b57 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.audiobookshelf.org/ diff --git a/ct/authentik.sh b/ct/authentik.sh index 6ea956ed2c9..3f1a39ab3db 100644 --- a/ct/authentik.sh +++ b/ct/authentik.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: remz1337 # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/autobrr.sh b/ct/autobrr.sh index 5497fb2560b..383f81df740 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://autobrr.com/ diff --git a/ct/bazarr.sh b/ct/bazarr.sh index fd646e614e6..698344b2d5e 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bazarr.media/ diff --git a/ct/blocky.sh b/ct/blocky.sh index 494e51c0b40..dd1309acce3 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://0xerr0r.github.io/blocky/latest/ diff --git a/ct/bookstack.sh b/ct/bookstack.sh index c69b2ba4e95..0589d2dca19 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/BookStackApp/BookStack diff --git a/ct/bunkerweb.sh b/ct/bunkerweb.sh index bd5a0b25204..d539cc5fe79 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.bunkerweb.io/ diff --git a/ct/caddy.sh b/ct/caddy.sh index 5afc686d063..e8fa01b4d5a 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://caddyserver.com/ diff --git a/ct/calibre-web.sh b/ct/calibre-web.sh index 2d8849d17bd..3980f37ac82 100644 --- a/ct/calibre-web.sh +++ b/ct/calibre-web.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/janeczku/calibre-web diff --git a/ct/casaos.sh b/ct/casaos.sh index 050290a3b1d..76e226a0bee 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://casaos.io/ diff --git a/ct/changedetection.sh b/ct/changedetection.sh index 86901e7d6bf..a6075cf2459 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://changedetection.io/ diff --git a/ct/channels.sh b/ct/channels.sh index 8d09ab4d64a..d7f23d366cf 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://getchannels.com/dvr-server/ diff --git a/ct/checkmk.sh b/ct/checkmk.sh index 4a08f504a13..7822d1355db 100644 --- a/ct/checkmk.sh +++ b/ct/checkmk.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://checkmk.com/ diff --git a/ct/cloudflared.sh b/ct/cloudflared.sh index c3a43cb2e49..16f8d62541f 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.cloudflare.com/ diff --git a/ct/cockpit.sh b/ct/cockpit.sh index 265f3de2f43..266d36219e3 100644 --- a/ct/cockpit.sh +++ b/ct/cockpit.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: havardthom # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cockpit-project.org/ diff --git a/ct/commafeed.sh b/ct/commafeed.sh index 59d9f44c387..4d5d2994797 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.commafeed.com/#/welcome diff --git a/ct/create_lxc.sh b/ct/create_lxc.sh index 46f5290211c..6d55fd17cce 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk # License: MIT diff --git a/ct/cronicle.sh b/ct/cronicle.sh index fd2d563377e..19f3454e221 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://cronicle.net/ diff --git a/ct/daemonsync.sh b/ct/daemonsync.sh index 910324befe0..1d9b313758f 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://daemonsync.me/ diff --git a/ct/dashy.sh b/ct/dashy.sh index edce87ed0a4..9f9c77aa62b 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://dashy.to/ diff --git a/ct/debian.sh b/ct/debian.sh index be9e3aa9d88..fd5dae410bf 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.debian.org/ diff --git a/ct/deconz.sh b/ct/deconz.sh index 49f06c81aae..e8233a5954a 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.phoscon.de/en/conbee2/software#deconz diff --git a/ct/deluge.sh b/ct/deluge.sh index be944b69492..1f80e8db119 100644 --- a/ct/deluge.sh +++ b/ct/deluge.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.deluge-torrent.org/ diff --git a/ct/docker.sh b/ct/docker.sh index fed85f34d54..5af992b2360 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.docker.com/ diff --git a/ct/dockge.sh b/ct/dockge.sh index 45e3d227898..8f5fd9d2e86 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://dockge.kuma.pet/ diff --git a/ct/emby.sh b/ct/emby.sh index 91e04bee404..364fb1663da 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://emby.media/ diff --git a/ct/emqx.sh b/ct/emqx.sh index 300ac95b7b1..348f0b7ef93 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.emqx.com/en diff --git a/ct/ersatztv.sh b/ct/ersatztv.sh index 3b9d9fe9b5a..c77cc7a79b4 100644 --- a/ct/ersatztv.sh +++ b/ct/ersatztv.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ersatztv.org/ diff --git a/ct/esphome.sh b/ct/esphome.sh index d28c43f276c..6b381486cbb 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://esphome.io/ diff --git a/ct/evcc.sh b/ct/evcc.sh index a1fedac10e7..bf1070edb46 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://evcc.io/en/ diff --git a/ct/fenrus.sh b/ct/fenrus.sh index 45b91696b4f..f3ae355075c 100644 --- a/ct/fenrus.sh +++ b/ct/fenrus.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: Scorpoon # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/revenz/Fenrus diff --git a/ct/fhem.sh b/ct/fhem.sh index 976bef55195..922cad73b81 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://fhem.de/ diff --git a/ct/firefly.sh b/ct/firefly.sh index c8370dc4bcb..542f84ec390 100644 --- a/ct/firefly.sh +++ b/ct/firefly.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: quantumryuu # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/flaresolverr.sh b/ct/flaresolverr.sh index 4db31142e57..d212c00f700 100644 --- a/ct/flaresolverr.sh +++ b/ct/flaresolverr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/FlareSolverr/FlareSolverr diff --git a/ct/flowiseai.sh b/ct/flowiseai.sh index c83da821608..ab26b11393b 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://flowiseai.com/ diff --git a/ct/forgejo.sh b/ct/forgejo.sh index 1b5b43e1c09..3e9223ba092 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://forgejo.org/ diff --git a/ct/frigate.sh b/ct/frigate.sh index e40014701b7..40e14e1db50 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Authors: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://frigate.video/ diff --git a/ct/gitea.sh b/ct/gitea.sh index 18561c61c76..ed7fbca4491 100644 --- a/ct/gitea.sh +++ b/ct/gitea.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: Rogue-King # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://about.gitea.com/ diff --git a/ct/glance.sh b/ct/glance.sh index 7cf8dc36f02..7ef2b4587ef 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/glanceapp/glance diff --git a/ct/go2rtc.sh b/ct/go2rtc.sh index b6278d9d741..e577388f544 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/AlexxIT/go2rtc diff --git a/ct/gokapi.sh b/ct/gokapi.sh index 7f81581bdf0..1a86e0ce0b5 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Forceu/Gokapi diff --git a/ct/gotify.sh b/ct/gotify.sh index bf1875f6e91..a31273f41af 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gotify.net/ diff --git a/ct/grafana.sh b/ct/grafana.sh index b8edc77415e..7547f14fa2e 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grafana.com/ diff --git a/ct/grocy.sh b/ct/grocy.sh index b9538672665..f6bfc8ecb55 100644 --- a/ct/grocy.sh +++ b/ct/grocy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://grocy.info/ diff --git a/ct/headscale.sh b/ct/headscale.sh index cfa1ec13db2..e63aa6a7e4d 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/juanfont/headscale diff --git a/ct/heimdall-dashboard.sh b/ct/heimdall-dashboard.sh index 8e5f6fdc378..4613040d57e 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://heimdall.site/ diff --git a/ct/hivemq.sh b/ct/hivemq.sh index 6f055f1dcef..fe9aa2ba5ef 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hivemq.com/ diff --git a/ct/hoarder.sh b/ct/hoarder.sh index 6c66c24c52a..b91765ec7e0 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) & vhsdream # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hoarder.app/ diff --git a/ct/homarr.sh b/ct/homarr.sh index a3c24270e92..715796a27dc 100644 --- a/ct/homarr.sh +++ b/ct/homarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homarr.dev/ diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 733489b27e0..265e16694f6 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.home-assistant.io/ diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index 9df12ee6340..aa35e94167d 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.home-assistant.io/ diff --git a/ct/homebox.sh b/ct/homebox.sh index a697366d672..75490965445 100644 --- a/ct/homebox.sh +++ b/ct/homebox.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homebox.software/en/ diff --git a/ct/homebridge.sh b/ct/homebridge.sh index 007bfc411fb..3253b79e497 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://homebridge.io/ diff --git a/ct/homepage.sh b/ct/homepage.sh index f02fe77f108..b94420c1342 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gethomepage.dev/ diff --git a/ct/homer.sh b/ct/homer.sh index 7b410241f22..1445fceea69 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bastienwirtz/homer diff --git a/ct/hyperhdr.sh b/ct/hyperhdr.sh index 64a4ca8665c..150864a4750 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.hyperhdr.eu/ diff --git a/ct/hyperion.sh b/ct/hyperion.sh index d862196eecc..28b310b5f64 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://hyperion-project.org/forum/ diff --git a/ct/influxdb.sh b/ct/influxdb.sh index 8d0e3cfd573..0824effefdc 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.influxdata.com/ diff --git a/ct/inspircd.sh b/ct/inspircd.sh index 15bd26cdb97..749911e5b59 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.inspircd.org/ diff --git a/ct/iobroker.sh b/ct/iobroker.sh index 5e9f47b395e..310f0a29cdf 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iobroker.net/#en/intro diff --git a/ct/iventoy.sh b/ct/iventoy.sh index 88da21121bf..12a434fff92 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.iventoy.com/en/index.html diff --git a/ct/jackett.sh b/ct/jackett.sh index d55e53619b9..0c1c91717c9 100644 --- a/ct/jackett.sh +++ b/ct/jackett.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Jackett/Jackett diff --git a/ct/jellyfin.sh b/ct/jellyfin.sh index bc5ec5400df..123f3e94c7f 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://jellyfin.org/ diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 018384f851e..5403ae58945 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.jellyseerr.dev/ diff --git a/ct/jenkins.sh b/ct/jenkins.sh index 235c43c8c3a..49e4fcda0e1 100644 --- a/ct/jenkins.sh +++ b/ct/jenkins.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/kavita.sh b/ct/kavita.sh index cb44ee2218e..4303d04aa9d 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kavitareader.com/ diff --git a/ct/keycloak.sh b/ct/keycloak.sh index 26d214f0de8..668a866b49e 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.keycloak.org/ diff --git a/ct/kimai.sh b/ct/kimai.sh index 3d499a73365..1ca15fac619 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.kimai.org/ diff --git a/ct/komga.sh b/ct/komga.sh index 05ece8a67c3..f8e47c29b84 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: madelyn (DysfunctionalProgramming) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://komga.org/ diff --git a/ct/kubo.sh b/ct/kubo.sh index 414a6e929b3..7a73b268214 100644 --- a/ct/kubo.sh +++ b/ct/kubo.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: ulmentflam # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/ipfs/kubo diff --git a/ct/lazylibrarian.sh b/ct/lazylibrarian.sh index 954bbb5992d..37f7e71f8bc 100644 --- a/ct/lazylibrarian.sh +++ b/ct/lazylibrarian.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: MountyMapleSyrup (MountyMapleSyrup) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://gitlab.com/LazyLibrarian/LazyLibrarian diff --git a/ct/lidarr.sh b/ct/lidarr.sh index 4ce867560e1..809e5a1916b 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://lidarr.audio/ diff --git a/ct/linkwarden.sh b/ct/linkwarden.sh index 196bc52d3c9..5c0435e09e3 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://linkwarden.app/ diff --git a/ct/listmonk.sh b/ct/listmonk.sh index a2ed4716a5b..55e5c4f5d10 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://listmonk.app/ diff --git a/ct/lldap.sh b/ct/lldap.sh index 83fef11663f..60c97157d7e 100644 --- a/ct/lldap.sh +++ b/ct/lldap.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/lldap/lldap diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 9bdfbe70c67..3bf3e12c577 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://lubelogger.com/ diff --git a/ct/mafl.sh b/ct/mafl.sh index 5f0bb003064..a8e5777d526 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mafl.hywax.space/ diff --git a/ct/magicmirror.sh b/ct/magicmirror.sh index dd068fea3ec..7504eb2079d 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://magicmirror.builders/ diff --git a/ct/mariadb.sh b/ct/mariadb.sh index 83446e94bf3..729d21365d8 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mariadb.org/ diff --git a/ct/matterbridge.sh b/ct/matterbridge.sh index 103898a9185..9647cb7cfc8 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Luligu/matterbridge diff --git a/ct/mediamtx.sh b/ct/mediamtx.sh index a823ef2a87a..67cb8f9aeb5 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/bluenviron/mediamtx diff --git a/ct/medusa.sh b/ct/medusa.sh index 3978812285a..19aae9b55b2 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/pymedusa/Medusa.git diff --git a/ct/memos.sh b/ct/memos.sh index 50dba058003..3428b9ec40a 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.usememos.com/ diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 1545d004c65..6ae005d4129 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://meshcentral.com/ diff --git a/ct/metube.sh b/ct/metube.sh index 61642a8d96b..8aa488afc8a 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/alexta69/metube diff --git a/ct/mongodb.sh b/ct/mongodb.sh index 2dcaae3214b..27e4bd0a1b0 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mongodb.com/de-de diff --git a/ct/motioneye.sh b/ct/motioneye.sh index 5eab31d385a..9436f759de9 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/motioneye-project/motioneye diff --git a/ct/mqtt.sh b/ct/mqtt.sh index 335d2574278..a577519db17 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://mosquitto.org/ diff --git a/ct/mylar3.sh b/ct/mylar3.sh index 88816bf4c22..9c7636eb064 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: davalanche # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/mylar3/mylar3 diff --git a/ct/myspeed.sh b/ct/myspeed.sh index 69de5d148f8..e52d123af81 100644 --- a/ct/myspeed.sh +++ b/ct/myspeed.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://myspeed.dev/ diff --git a/ct/mysql.sh b/ct/mysql.sh index 9c43b59e65d..9c5968f4c0c 100644 --- a/ct/mysql.sh +++ b/ct/mysql.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.mysql.com/ diff --git a/ct/n8n.sh b/ct/n8n.sh index e12caecd79d..27c15c60504 100644 --- a/ct/n8n.sh +++ b/ct/n8n.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://n8n.io/ diff --git a/ct/navidrome.sh b/ct/navidrome.sh index 3c606f68777..be9e335b9f5 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.navidrome.org/ diff --git a/ct/neo4j.sh b/ct/neo4j.sh index aa37e39acfc..0debb55d1de 100644 --- a/ct/neo4j.sh +++ b/ct/neo4j.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: havardthom # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://neo4j.com/product/neo4j-graph-database/ diff --git a/ct/netbox.sh b/ct/netbox.sh index 8d34969d908..38f54a837d6 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://netboxlabs.com/ diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index 6aa98306db1..d22fcaa30dc 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.turnkeylinux.org/nextcloud diff --git a/ct/nextpvr.sh b/ct/nextpvr.sh index 52ef0d31ab6..97938904a9b 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT # https://github.com/tteck/Proxmox/raw/main/LICENSE diff --git a/ct/nginxproxymanager.sh b/ct/nginxproxymanager.sh index 179da17407f..ed3dcdecbb7 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nginxproxymanager.com/ diff --git a/ct/nocodb.sh b/ct/nocodb.sh index f5a5a616a61..a72c91a6a1a 100644 --- a/ct/nocodb.sh +++ b/ct/nocodb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.nocodb.com/ diff --git a/ct/node-red.sh b/ct/node-red.sh index a9a615a95a2..c2bce18600a 100644 --- a/ct/node-red.sh +++ b/ct/node-red.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nodered.org/ diff --git a/ct/notifiarr.sh b/ct/notifiarr.sh index 26a94e61e70..4bd8f9a0d7a 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://notifiarr.com/ diff --git a/ct/ntfy.sh b/ct/ntfy.sh index 8be75ec3ecb..4ac3bae0d79 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ntfy.sh/ diff --git a/ct/nzbget.sh b/ct/nzbget.sh index 352799aa747..5091051326e 100644 --- a/ct/nzbget.sh +++ b/ct/nzbget.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: havardthom # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://nzbget.com/ diff --git a/ct/octoprint.sh b/ct/octoprint.sh index 689cbe9d912..be0b71a2a49 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://octoprint.org/ diff --git a/ct/ollama.sh b/ct/ollama.sh index 604552b780b..43cebc9c66d 100644 --- a/ct/ollama.sh +++ b/ct/ollama.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: havardthom # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ollama.com/ diff --git a/ct/omada.sh b/ct/omada.sh index c408ea73cc4..b9b46f86a9c 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.tp-link.com/us/support/download/omada-software-controller/ diff --git a/ct/ombi.sh b/ct/ombi.sh index a74a9707f40..610c7dfab04 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ombi.io/ diff --git a/ct/omv.sh b/ct/omv.sh index ac1a70f8588..a05706fd291 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.openmediavault.org/ diff --git a/ct/onedev.sh b/ct/onedev.sh index 568251b8114..16e1b19461b 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://onedev.io/ diff --git a/ct/openhab.sh b/ct/openhab.sh index 9800efedf60..79e2498425e 100644 --- a/ct/openhab.sh +++ b/ct/openhab.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.openhab.org/ diff --git a/ct/openobserve.sh b/ct/openobserve.sh index ae73a4ed1be..598182b67b6 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openobserve.ai/ diff --git a/ct/openwebui.sh b/ct/openwebui.sh index 7bac3e88aa6..47eab4abcc5 100644 --- a/ct/openwebui.sh +++ b/ct/openwebui.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: havardthom # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://openwebui.com/ diff --git a/ct/overseerr.sh b/ct/overseerr.sh index a7245a9dbd3..dff2604669e 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://overseerr.dev/ diff --git a/ct/owncast.sh b/ct/owncast.sh index 3b84d64f5dc..6442af66eb1 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://owncast.online/ diff --git a/ct/pairdrop.sh b/ct/pairdrop.sh index b3f6f57a0ac..00548dd36e4 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pairdrop.net/ diff --git a/ct/paperless-ngx.sh b/ct/paperless-ngx.sh index 3a641f3eff8..63aead01fd8 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.paperless-ngx.com/ diff --git a/ct/part-db.sh b/ct/part-db.sh index bf7217e20e7..dcb31c76fec 100644 --- a/ct/part-db.sh +++ b/ct/part-db.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.part-db.de/ diff --git a/ct/pbs.sh b/ct/pbs.sh index d392e1635fd..8aae63d3bf5 100644 --- a/ct/pbs.sh +++ b/ct/pbs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/peanut.sh b/ct/peanut.sh index 7dedccd785a..87cd3eff7bb 100644 --- a/ct/peanut.sh +++ b/ct/peanut.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) | Co-Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Brandawg93/PeaNUT/ diff --git a/ct/petio.sh b/ct/petio.sh index 13a72946437..c9d9b2d92ca 100644 --- a/ct/petio.sh +++ b/ct/petio.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://petio.tv/ diff --git a/ct/photoprism.sh b/ct/photoprism.sh index 4762fd83f45..f6f79c935f8 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.photoprism.app/ diff --git a/ct/pialert.sh b/ct/pialert.sh index ef6ebdd0b3a..9569f5643b6 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/leiweibau/Pi.Alert/ diff --git a/ct/pihole.sh b/ct/pihole.sh index 9947f8d8737..4071efe7e73 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pi-hole.net/ diff --git a/ct/pingvin.sh b/ct/pingvin.sh index 53bd0aa2210..95e09711161 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://stonith404.github.io/pingvin-share/introduction diff --git a/ct/plex.sh b/ct/plex.sh index 0aebd688f98..004a93e399e 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.plex.tv/ diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 986e20f692d..f9c24680eba 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://pocketbase.io/ diff --git a/ct/podman-homeassistant.sh b/ct/podman-homeassistant.sh index 05925edd615..f0e43c2ae3b 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/podman.sh b/ct/podman.sh index cdc63cd65d0..ef36a682424 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://podman.io/ diff --git a/ct/postgresql.sh b/ct/postgresql.sh index 72f567a14e9..287bfab1395 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.postgresql.org/ diff --git a/ct/prometheus.sh b/ct/prometheus.sh index 62c7cd3e0f5..d03e070be1a 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prometheus.io/ diff --git a/ct/prowlarr.sh b/ct/prowlarr.sh index a8b32963e5a..04c8a4ec54e 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://prowlarr.com/ diff --git a/ct/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh index d254d6835a2..2ee48633938 100644 --- a/ct/proxmox-datacenter-manager.sh +++ b/ct/proxmox-datacenter-manager.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: CrazyWolf13 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: Proxmox Server Solution GmbH diff --git a/ct/qbittorrent.sh b/ct/qbittorrent.sh index 7b6d95d90e4..790a5716734 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.qbittorrent.org/ diff --git a/ct/rabbitmq.sh b/ct/rabbitmq.sh index 70ab8742307..c47d56da83f 100644 --- a/ct/rabbitmq.sh +++ b/ct/rabbitmq.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck | Co-Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.rabbitmq.com/ diff --git a/ct/radarr.sh b/ct/radarr.sh index f4aa3b4c2b3..c6ee2507820 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://radarr.video/ diff --git a/ct/rdtclient.sh b/ct/rdtclient.sh index fa5be48562f..3b26ad7c0bd 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/rogerfar/rdt-client diff --git a/ct/readarr.sh b/ct/readarr.sh index 96d625dcff8..2c0bf458dd5 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readarr.com/ diff --git a/ct/readeck.sh b/ct/readeck.sh index 69f29ba370c..a34294edd3f 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://readeck.org/en/ diff --git a/ct/recyclarr.sh b/ct/recyclarr.sh index 5063ec2fe0e..388ab627e59 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MrYadro # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://recyclarr.dev/wiki/ diff --git a/ct/redis.sh b/ct/redis.sh index 6b64f9b7c62..13b29e590fa 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://redis.io/ diff --git a/ct/rtsptoweb.sh b/ct/rtsptoweb.sh index 9b85efc416b..c09182a3804 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/deepch/RTSPtoWeb diff --git a/ct/runtipi.sh b/ct/runtipi.sh index 641c0236214..3beb2ea2d05 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://runtipi.io/ diff --git a/ct/sabnzbd.sh b/ct/sabnzbd.sh index 5f58c02c99a..9c8489836f2 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sabnzbd.org/ diff --git a/ct/semaphore.sh b/ct/semaphore.sh index 5f84faa5e91..12d32a0a131 100644 --- a/ct/semaphore.sh +++ b/ct/semaphore.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/ct/sftpgo.sh b/ct/sftpgo.sh index 3e9f7b14d9a..6a14392c151 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sftpgo.com/ diff --git a/ct/shinobi.sh b/ct/shinobi.sh index de34210a38b..4da07b58611 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://shinobi.video/ diff --git a/ct/silverbullet.sh b/ct/silverbullet.sh index 744379b5b00..56bf1a4e67d 100644 --- a/ct/silverbullet.sh +++ b/ct/silverbullet.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Dominik Siebel (dsiebel) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://silverbullet.md diff --git a/ct/smokeping.sh b/ct/smokeping.sh index 4e7473abb28..8bd4a242137 100644 --- a/ct/smokeping.sh +++ b/ct/smokeping.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://oss.oetiker.ch/smokeping/ diff --git a/ct/snipeit.sh b/ct/snipeit.sh index 506e14cb12f..025088047f9 100644 --- a/ct/snipeit.sh +++ b/ct/snipeit.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://snipeitapp.com/ diff --git a/ct/sonarr.sh b/ct/sonarr.sh index 80e3714bc2a..606fdb30b52 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://sonarr.tv/ diff --git a/ct/spoolman.sh b/ct/spoolman.sh index 4ddf5a7325c..f98dc1f24fe 100644 --- a/ct/spoolman.sh +++ b/ct/spoolman.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Donkie/Spoolman diff --git a/ct/stirling-pdf.sh b/ct/stirling-pdf.sh index 67acd496c5e..c212c18c6a8 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.stirlingpdf.com/ diff --git a/ct/syncthing.sh b/ct/syncthing.sh index 8a685620175..455e262f11d 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://syncthing.net/ diff --git a/ct/tandoor.sh b/ct/tandoor.sh index 0a449c22d5c..146c73ee4d9 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tandoor.dev/ diff --git a/ct/tasmoadmin.sh b/ct/tasmoadmin.sh index dae77094651..500d67d63d4 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/TasmoAdmin/TasmoAdmin diff --git a/ct/tautulli.sh b/ct/tautulli.sh index 934131c98e2..0675f5bbbec 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tautulli.com/ diff --git a/ct/tdarr.sh b/ct/tdarr.sh index c69f2281e09..6360f0014a3 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://home.tdarr.io/ diff --git a/ct/technitiumdns.sh b/ct/technitiumdns.sh index 73920a2ee14..8f6877082ee 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://technitium.com/dns/ diff --git a/ct/teddycloud.sh b/ct/teddycloud.sh index 65e49f20b84..0b2a7dcb2dc 100644 --- a/ct/teddycloud.sh +++ b/ct/teddycloud.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Dominik Siebel (dsiebel) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/toniebox-reverse-engineering/teddycloud diff --git a/ct/the-lounge.sh b/ct/the-lounge.sh index ea854774637..28d426aed7d 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://thelounge.chat/ diff --git a/ct/threadfin.sh b/ct/threadfin.sh index bb3bc894171..83c5ed7950d 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Threadfin/Threadfin diff --git a/ct/tianji.sh b/ct/tianji.sh index f2882924a53..1ac59203f96 100644 --- a/ct/tianji.sh +++ b/ct/tianji.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://tianji.msgbyte.com/ diff --git a/ct/traccar.sh b/ct/traccar.sh index c8bf88b2632..5487784ae0b 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.traccar.org/ diff --git a/ct/traefik.sh b/ct/traefik.sh index 877943159ae..39786b8e5af 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://traefik.io/ diff --git a/ct/transmission.sh b/ct/transmission.sh index ea05ec43804..78d5b1b4ae3 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://transmissionbt.com/ diff --git a/ct/trilium.sh b/ct/trilium.sh index f65702742a9..a2835202c75 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://triliumnext.github.io/Docs/ diff --git a/ct/ubuntu.sh b/ct/ubuntu.sh index 86ac38615bd..d3aac33f52c 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ubuntu.com/ diff --git a/ct/umami.sh b/ct/umami.sh index 592c7e8df30..6b898cae19f 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://umami.is/ diff --git a/ct/umbrel.sh b/ct/umbrel.sh index 4a5b0739c35..5dc0a791809 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://umbrel.com/ diff --git a/ct/unbound.sh b/ct/unbound.sh index a8bd86513f9..b0a0d1ecc65 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: wimb0 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/NLnetLabs/unbound diff --git a/ct/unifi.sh b/ct/unifi.sh index 0805320fa85..16fe0c8d7ca 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://ui.com/download/unifi diff --git a/ct/unmanic.sh b/ct/unmanic.sh index 02c53c6828a..bce7450a04a 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://docs.unmanic.app/ diff --git a/ct/uptimekuma.sh b/ct/uptimekuma.sh index 7c92b4aee60..0efe730fd6c 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://uptime.kuma.pet/ diff --git a/ct/vaultwarden.sh b/ct/vaultwarden.sh index 3d0f30841a2..4d12d0dacd5 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.vaultwarden.net/ diff --git a/ct/vikunja.sh b/ct/vikunja.sh index 7109494444e..e805f8b238b 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://vikunja.io/ diff --git a/ct/wallos.sh b/ct/wallos.sh index 0e06c8e1d76..9931f1f70fa 100644 --- a/ct/wallos.sh +++ b/ct/wallos.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://wallosapp.com/ diff --git a/ct/wastebin.sh b/ct/wastebin.sh index f0c37343e33..9e416237754 100644 --- a/ct/wastebin.sh +++ b/ct/wastebin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/matze/wastebin diff --git a/ct/watchyourlan.sh b/ct/watchyourlan.sh index e79dc367096..de29154eb4f 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/aceberg/WatchYourLAN diff --git a/ct/wavelog.sh b/ct/wavelog.sh index 1d1c55a9b2e..0dc24ae2481 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Don Locke (DonLocke) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.wavelog.org/ diff --git a/ct/whisparr.sh b/ct/whisparr.sh index be18bff9cb4..53e2fff8933 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/Whisparr/Whisparr diff --git a/ct/whoogle.sh b/ct/whoogle.sh index f7e5b887c34..1010b6fc0db 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://github.com/benbusby/whoogle-search diff --git a/ct/wikijs.sh b/ct/wikijs.sh index acec35dfd96..d387b2d95f5 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://js.wiki/ diff --git a/ct/wireguard.sh b/ct/wireguard.sh index 7fce847e0c8..946a909ea43 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.wireguard.com/ diff --git a/ct/yunohost.sh b/ct/yunohost.sh index fbd1e8a1d0c..36319202a74 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://yunohost.org/ diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 55a5c9521fd..7fba6ec8760 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zabbix.com/ diff --git a/ct/zammad.sh b/ct/zammad.sh index 81bd5e835e5..43360bd0efc 100644 --- a/ct/zammad.sh +++ b/ct/zammad.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zammad.com diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index c5ba5ef2b9c..04f4646db62 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://www.zigbee2mqtt.io/ diff --git a/ct/zipline.sh b/ct/zipline.sh index b6dfcf94b59..7031bf8e9aa 100644 --- a/ct/zipline.sh +++ b/ct/zipline.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zipline.diced.sh/ diff --git a/ct/zoraxy.sh b/ct/zoraxy.sh index 71e9c12b48a..2f30ebc236a 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zoraxy.aroz.org/ diff --git a/ct/zwave-js-ui.sh b/ct/zwave-js-ui.sh index 9c25a90ad29..ffea06b2add 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # Source: https://zwave-js.github.io/zwave-js-ui/#/ diff --git a/install/2fauth-install.sh b/install/2fauth-install.sh index 949b84b2e57..9f71d9fa58b 100644 --- a/install/2fauth-install.sh +++ b/install/2fauth-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: jkrgr0 # License: MIT # Source: https://docs.2fauth.app/ diff --git a/install/actualbudget-install.sh b/install/actualbudget-install.sh index 133853f4aad..64995d5a7f3 100644 --- a/install/actualbudget-install.sh +++ b/install/actualbudget-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/adguard-install.sh b/install/adguard-install.sh index b4c4c3dc1ab..b62255c10ae 100644 --- a/install/adguard-install.sh +++ b/install/adguard-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/adventurelog-install.sh b/install/adventurelog-install.sh index e8120525788..250a4d8f240 100644 --- a/install/adventurelog-install.sh +++ b/install/adventurelog-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/agentdvr-install.sh b/install/agentdvr-install.sh index 74c1e6a4866..fc21d7fac63 100644 --- a/install/agentdvr-install.sh +++ b/install/agentdvr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-docker-install.sh b/install/alpine-docker-install.sh index c594f6bf5ba..cd70c6f0ed2 100644 --- a/install/alpine-docker-install.sh +++ b/install/alpine-docker-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-grafana-install.sh b/install/alpine-grafana-install.sh index 93171e1e51a..d6b59ef6011 100644 --- a/install/alpine-grafana-install.sh +++ b/install/alpine-grafana-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-install.sh b/install/alpine-install.sh index a6623386b0b..83999eb68c9 100644 --- a/install/alpine-install.sh +++ b/install/alpine-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-nextcloud-install.sh b/install/alpine-nextcloud-install.sh index 3fe273b28a2..7f337a05231 100644 --- a/install/alpine-nextcloud-install.sh +++ b/install/alpine-nextcloud-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-vaultwarden-install.sh b/install/alpine-vaultwarden-install.sh index dffd20b0d9d..c3a934901df 100644 --- a/install/alpine-vaultwarden-install.sh +++ b/install/alpine-vaultwarden-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/alpine-zigbee2mqtt-install.sh b/install/alpine-zigbee2mqtt-install.sh index 0effd6c1798..7c294388818 100644 --- a/install/alpine-zigbee2mqtt-install.sh +++ b/install/alpine-zigbee2mqtt-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/apache-cassandra-install.sh b/install/apache-cassandra-install.sh index e70f470d7c6..733102ee2d6 100644 --- a/install/apache-cassandra-install.sh +++ b/install/apache-cassandra-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/apache-couchdb-install.sh b/install/apache-couchdb-install.sh index af618efffc4..4388aaac6e9 100644 --- a/install/apache-couchdb-install.sh +++ b/install/apache-couchdb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/apache-guacamole-install.sh b/install/apache-guacamole-install.sh index 1a465ddf3ab..435193e1484 100644 --- a/install/apache-guacamole-install.sh +++ b/install/apache-guacamole-install.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -#Copyright (c) 2021-2024 community-scripts ORG +#Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) | MickLesk (CanbiZ) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/apt-cacher-ng-install.sh b/install/apt-cacher-ng-install.sh index 7bb65c480fc..fb0a8330c74 100644 --- a/install/apt-cacher-ng-install.sh +++ b/install/apt-cacher-ng-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/archivebox-install.sh b/install/archivebox-install.sh index 3a9dcb079eb..59c29c81c05 100644 --- a/install/archivebox-install.sh +++ b/install/archivebox-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/aria2-install.sh b/install/aria2-install.sh index 48fd7ab2543..ac44a056494 100644 --- a/install/aria2-install.sh +++ b/install/aria2-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/audiobookshelf-install.sh b/install/audiobookshelf-install.sh index eeea8450537..73ea69b7a4a 100644 --- a/install/audiobookshelf-install.sh +++ b/install/audiobookshelf-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/authentik-install.sh b/install/authentik-install.sh index cd863b09701..fc36f2e57fa 100644 --- a/install/authentik-install.sh +++ b/install/authentik-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: remz1337 # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/autobrr-install.sh b/install/autobrr-install.sh index a593d3f886e..b843c259272 100644 --- a/install/autobrr-install.sh +++ b/install/autobrr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/bazarr-install.sh b/install/bazarr-install.sh index b0e46e72b38..94cb09256b0 100755 --- a/install/bazarr-install.sh +++ b/install/bazarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/blocky-install.sh b/install/blocky-install.sh index abf168731ec..7f075e3cb1c 100644 --- a/install/blocky-install.sh +++ b/install/blocky-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/bookstack-install.sh b/install/bookstack-install.sh index 129ed71eb6c..3d648742f40 100644 --- a/install/bookstack-install.sh +++ b/install/bookstack-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/bunkerweb-install.sh b/install/bunkerweb-install.sh index ca569ba9925..3ed4797fd63 100644 --- a/install/bunkerweb-install.sh +++ b/install/bunkerweb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/caddy-install.sh b/install/caddy-install.sh index b435449c119..56a8fbd8139 100644 --- a/install/caddy-install.sh +++ b/install/caddy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/calibre-web-install.sh b/install/calibre-web-install.sh index f51714a736b..1cff7bf0866 100644 --- a/install/calibre-web-install.sh +++ b/install/calibre-web-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: remz1337 # License: MIT diff --git a/install/casaos-install.sh b/install/casaos-install.sh index 23e8d2895f6..99136ee9b0c 100644 --- a/install/casaos-install.sh +++ b/install/casaos-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/changedetection-install.sh b/install/changedetection-install.sh index 2eee9ec43dd..99aa077c741 100644 --- a/install/changedetection-install.sh +++ b/install/changedetection-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/channels-install.sh b/install/channels-install.sh index 1ee8b6bf3bc..f4b54520483 100644 --- a/install/channels-install.sh +++ b/install/channels-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/checkmk-install.sh b/install/checkmk-install.sh index a802bfc3462..892c057dad5 100644 --- a/install/checkmk-install.sh +++ b/install/checkmk-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -#Copyright (c) 2021-2024 community-scripts ORG +#Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/cloudflared-install.sh b/install/cloudflared-install.sh index 0b0d9f7f3e7..f0f5c925da0 100644 --- a/install/cloudflared-install.sh +++ b/install/cloudflared-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/cockpit-install.sh b/install/cockpit-install.sh index 126943e79d0..c444f7fa8ce 100644 --- a/install/cockpit-install.sh +++ b/install/cockpit-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: havardthom # License: MIT diff --git a/install/commafeed-install.sh b/install/commafeed-install.sh index 6beb62813ee..78fd051ca19 100644 --- a/install/commafeed-install.sh +++ b/install/commafeed-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/cronicle-install.sh b/install/cronicle-install.sh index ab87f78522b..56148456a5d 100644 --- a/install/cronicle-install.sh +++ b/install/cronicle-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/daemonsync-install.sh b/install/daemonsync-install.sh index f773bc0c8d6..20febdb17c8 100644 --- a/install/daemonsync-install.sh +++ b/install/daemonsync-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/dashy-install.sh b/install/dashy-install.sh index cfad57bf783..fb41a675845 100644 --- a/install/dashy-install.sh +++ b/install/dashy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/debian-install.sh b/install/debian-install.sh index 3feb1f7f135..209714516f6 100644 --- a/install/debian-install.sh +++ b/install/debian-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/deconz-install.sh b/install/deconz-install.sh index 5d6b1159232..0ee44eec68e 100644 --- a/install/deconz-install.sh +++ b/install/deconz-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/deluge-install.sh b/install/deluge-install.sh index 6ff3f1c265c..5a83ccb6e32 100644 --- a/install/deluge-install.sh +++ b/install/deluge-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/docker-install.sh b/install/docker-install.sh index b22e148686b..7e770888862 100644 --- a/install/docker-install.sh +++ b/install/docker-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/dockge-install.sh b/install/dockge-install.sh index 8d9a211de88..f25d671ec05 100644 --- a/install/dockge-install.sh +++ b/install/dockge-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/emby-install.sh b/install/emby-install.sh index 2e3cdc130d9..153d19ac56c 100644 --- a/install/emby-install.sh +++ b/install/emby-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/emqx-install.sh b/install/emqx-install.sh index 85b7e41bbcd..1818b9b9264 100644 --- a/install/emqx-install.sh +++ b/install/emqx-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/ersatztv-install.sh b/install/ersatztv-install.sh index ffaee546988..8e0a7389fbd 100644 --- a/install/ersatztv-install.sh +++ b/install/ersatztv-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/esphome-install.sh b/install/esphome-install.sh index 708f32da8cd..91295ed8366 100644 --- a/install/esphome-install.sh +++ b/install/esphome-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/evcc-install.sh b/install/evcc-install.sh index 764cdf4ecca..f0861c9255a 100644 --- a/install/evcc-install.sh +++ b/install/evcc-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/fenrus-install.sh b/install/fenrus-install.sh index 60d358f4782..2ccd0e68950 100644 --- a/install/fenrus-install.sh +++ b/install/fenrus-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: Scorpoon # License: MIT diff --git a/install/fhem-install.sh b/install/fhem-install.sh index b9e53d26f51..4188cff4480 100644 --- a/install/fhem-install.sh +++ b/install/fhem-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/firefly-install.sh b/install/firefly-install.sh index 6f131f47f4d..17b5623decb 100644 --- a/install/firefly-install.sh +++ b/install/firefly-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: quantumryuu # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/flaresolverr-install.sh b/install/flaresolverr-install.sh index cc09e46cda5..a9e57590b2c 100644 --- a/install/flaresolverr-install.sh +++ b/install/flaresolverr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: remz1337 # License: MIT diff --git a/install/flowiseai-install.sh b/install/flowiseai-install.sh index 84326e49423..a2932e94984 100644 --- a/install/flowiseai-install.sh +++ b/install/flowiseai-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/forgejo-install.sh b/install/forgejo-install.sh index 7cacfb40b3e..2da47a0558d 100644 --- a/install/forgejo-install.sh +++ b/install/forgejo-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/frigate-install.sh b/install/frigate-install.sh index 649e5ffae27..4ad064a3293 100644 --- a/install/frigate-install.sh +++ b/install/frigate-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: remz1337 # License: MIT diff --git a/install/gitea-install.sh b/install/gitea-install.sh index 66f6a2119a3..17cd4adc0e2 100644 --- a/install/gitea-install.sh +++ b/install/gitea-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-author: Rogue-King # License: MIT diff --git a/install/glance-install.sh b/install/glance-install.sh index 8f35798152c..c30bfaf63b6 100644 --- a/install/glance-install.sh +++ b/install/glance-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/go2rtc-install.sh b/install/go2rtc-install.sh index 43c0aa741e2..babf5913161 100644 --- a/install/go2rtc-install.sh +++ b/install/go2rtc-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/gokapi-install.sh b/install/gokapi-install.sh index 78be6810ad5..e25b6840d79 100644 --- a/install/gokapi-install.sh +++ b/install/gokapi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/gotify-install.sh b/install/gotify-install.sh index acff502e11d..67f8472d143 100644 --- a/install/gotify-install.sh +++ b/install/gotify-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/grafana-install.sh b/install/grafana-install.sh index c6e656caf47..2a4fc3e2e34 100644 --- a/install/grafana-install.sh +++ b/install/grafana-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/grist-install.sh b/install/grist-install.sh index 868c93ac50a..30786777dc6 100644 --- a/install/grist-install.sh +++ b/install/grist-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: cfurrow # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/grocy-install.sh b/install/grocy-install.sh index 35b5365dc32..63bee18bea6 100644 --- a/install/grocy-install.sh +++ b/install/grocy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/headscale-install.sh b/install/headscale-install.sh index c4ffaf4096c..c1464f45c33 100644 --- a/install/headscale-install.sh +++ b/install/headscale-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/heimdall-dashboard-install.sh b/install/heimdall-dashboard-install.sh index ee5083425e7..0cb03c2b2c9 100644 --- a/install/heimdall-dashboard-install.sh +++ b/install/heimdall-dashboard-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/hivemq-install.sh b/install/hivemq-install.sh index 7d225567a05..42c0d4aa8e9 100644 --- a/install/hivemq-install.sh +++ b/install/hivemq-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/hoarder-install.sh b/install/hoarder-install.sh index 0c37b69c2b6..4b56b0761a0 100644 --- a/install/hoarder-install.sh +++ b/install/hoarder-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk (Canbiz) & vhsdream # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/homarr-install.sh b/install/homarr-install.sh index fe138d40252..e05fc7f6f0b 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 3c794b32f99..2116342784f 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/homeassistant-install.sh b/install/homeassistant-install.sh index 9d1ce31b2b4..e0cfd3e178d 100644 --- a/install/homeassistant-install.sh +++ b/install/homeassistant-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/homebox-install.sh b/install/homebox-install.sh index 6548e76073c..2f6ab1da8ad 100644 --- a/install/homebox-install.sh +++ b/install/homebox-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/homebridge-install.sh b/install/homebridge-install.sh index 89012818411..72b7242f4d3 100644 --- a/install/homebridge-install.sh +++ b/install/homebridge-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/homepage-install.sh b/install/homepage-install.sh index 96b7b2ce378..d2026f2c4c9 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/homer-install.sh b/install/homer-install.sh index 594860d7314..02da0cae8a2 100644 --- a/install/homer-install.sh +++ b/install/homer-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/hyperhdr-install.sh b/install/hyperhdr-install.sh index 12283894516..fa72c6b5c51 100644 --- a/install/hyperhdr-install.sh +++ b/install/hyperhdr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/hyperion-install.sh b/install/hyperion-install.sh index f967e414bad..d6feebc34d6 100644 --- a/install/hyperion-install.sh +++ b/install/hyperion-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/influxdb-install.sh b/install/influxdb-install.sh index a15de6f5897..6c0905b6087 100644 --- a/install/influxdb-install.sh +++ b/install/influxdb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/inspircd-install.sh b/install/inspircd-install.sh index 512463cf776..33cd9f51ba5 100644 --- a/install/inspircd-install.sh +++ b/install/inspircd-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/iobroker-install.sh b/install/iobroker-install.sh index 9f2612c9efe..05747118582 100644 --- a/install/iobroker-install.sh +++ b/install/iobroker-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/iventoy-install.sh b/install/iventoy-install.sh index 586e588b6b2..681a5647cd0 100644 --- a/install/iventoy-install.sh +++ b/install/iventoy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/jackett-install.sh b/install/jackett-install.sh index 1f2f5d05b08..fe33d1e9f6a 100644 --- a/install/jackett-install.sh +++ b/install/jackett-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/jellyfin-install.sh b/install/jellyfin-install.sh index d2a04a47ebe..3f3f1a61290 100644 --- a/install/jellyfin-install.sh +++ b/install/jellyfin-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/jellyseerr-install.sh b/install/jellyseerr-install.sh index fe39f0944f4..535d374f162 100644 --- a/install/jellyseerr-install.sh +++ b/install/jellyseerr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/jenkins-install.sh b/install/jenkins-install.sh index 9283fb7aca9..3226a4ca630 100644 --- a/install/jenkins-install.sh +++ b/install/jenkins-install.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/kavita-install.sh b/install/kavita-install.sh index daf5133760a..22991cacc42 100644 --- a/install/kavita-install.sh +++ b/install/kavita-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/keycloak-install.sh b/install/keycloak-install.sh index ba9a0ec96a3..4ed59b2c464 100644 --- a/install/keycloak-install.sh +++ b/install/keycloak-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/kimai-install.sh b/install/kimai-install.sh index a86637fed1b..570a15b2a63 100644 --- a/install/kimai-install.sh +++ b/install/kimai-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk # License: MIT # https://github.com/tteck/Proxmox/raw/main/LICENSE diff --git a/install/komga-install.sh b/install/komga-install.sh index 43f4ea922fd..3659c7db7b0 100644 --- a/install/komga-install.sh +++ b/install/komga-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: madelyn (DysfunctionalProgramming) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/kubo-install.sh b/install/kubo-install.sh index 5dbc65c4fb2..8e1212544a2 100644 --- a/install/kubo-install.sh +++ b/install/kubo-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: ulmentflam # License: MIT diff --git a/install/lazylibrarian-install.sh b/install/lazylibrarian-install.sh index 271dc41afd2..d278eb5a208 100644 --- a/install/lazylibrarian-install.sh +++ b/install/lazylibrarian-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MountyMapleSyrup (MountyMapleSyrup) # License: MIT diff --git a/install/lidarr-install.sh b/install/lidarr-install.sh index 310135e4763..e1e4233baa4 100644 --- a/install/lidarr-install.sh +++ b/install/lidarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/linkwarden-install.sh b/install/linkwarden-install.sh index ba706814689..534a69caf88 100644 --- a/install/linkwarden-install.sh +++ b/install/linkwarden-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/listmonk-install.sh b/install/listmonk-install.sh index 18b8eaeb893..b6688356c4c 100644 --- a/install/listmonk-install.sh +++ b/install/listmonk-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/lldap-install.sh b/install/lldap-install.sh index 8def2e23ab5..303a302c99b 100644 --- a/install/lldap-install.sh +++ b/install/lldap-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: remz1337 # License: MIT diff --git a/install/lubelogger-install.sh b/install/lubelogger-install.sh index f9bf887d77f..f22f740e502 100644 --- a/install/lubelogger-install.sh +++ b/install/lubelogger-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/mafl-install.sh b/install/mafl-install.sh index 51ac1e10616..a8a63cf3393 100644 --- a/install/mafl-install.sh +++ b/install/mafl-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/magicmirror-install.sh b/install/magicmirror-install.sh index 7c884ab41b9..999ab848812 100644 --- a/install/magicmirror-install.sh +++ b/install/magicmirror-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/mariadb-install.sh b/install/mariadb-install.sh index d5ad1c4bec9..189003c4bb2 100644 --- a/install/mariadb-install.sh +++ b/install/mariadb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/matterbridge-install.sh b/install/matterbridge-install.sh index 99e609af854..8a81cc7c8c2 100644 --- a/install/matterbridge-install.sh +++ b/install/matterbridge-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/mediamtx-install.sh b/install/mediamtx-install.sh index db6dc3fbdf6..85d49d9dac3 100644 --- a/install/mediamtx-install.sh +++ b/install/mediamtx-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/medusa-install.sh b/install/medusa-install.sh index 924b496f92b..a1fe8d3811f 100644 --- a/install/medusa-install.sh +++ b/install/medusa-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/memos-install.sh b/install/memos-install.sh index f7c72e15376..05e95f404f8 100644 --- a/install/memos-install.sh +++ b/install/memos-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/meshcentral-install.sh b/install/meshcentral-install.sh index b0dc2c75695..0735f1a0e82 100644 --- a/install/meshcentral-install.sh +++ b/install/meshcentral-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/metube-install.sh b/install/metube-install.sh index 208c35af902..735c890df04 100644 --- a/install/metube-install.sh +++ b/install/metube-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/mongodb-install.sh b/install/mongodb-install.sh index 30553ff09c2..ce525fc36c7 100644 --- a/install/mongodb-install.sh +++ b/install/mongodb-install.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/motioneye-install.sh b/install/motioneye-install.sh index 2f915095194..71d0c82151c 100644 --- a/install/motioneye-install.sh +++ b/install/motioneye-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/mqtt-install.sh b/install/mqtt-install.sh index 1c87cf9ef00..6cbeaf6bf59 100644 --- a/install/mqtt-install.sh +++ b/install/mqtt-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/mylar3-install.sh b/install/mylar3-install.sh index eebb3b52dc7..ac0033ff37b 100644 --- a/install/mylar3-install.sh +++ b/install/mylar3-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: davalanche # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/myspeed-install.sh b/install/myspeed-install.sh index e0596490f01..443f8aa83d6 100644 --- a/install/myspeed-install.sh +++ b/install/myspeed-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/mysql-install.sh b/install/mysql-install.sh index c8d12b88f22..cfade74e18b 100644 --- a/install/mysql-install.sh +++ b/install/mysql-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/n8n-install.sh b/install/n8n-install.sh index 059a0726fd2..ef04b53834b 100644 --- a/install/n8n-install.sh +++ b/install/n8n-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/navidrome-install.sh b/install/navidrome-install.sh index 2bf37bcbf8a..1cb0277b824 100644 --- a/install/navidrome-install.sh +++ b/install/navidrome-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/neo4j-install.sh b/install/neo4j-install.sh index fdd22cf0c14..1de663abc40 100644 --- a/install/neo4j-install.sh +++ b/install/neo4j-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: havardthom # License: MIT diff --git a/install/netbox-install.sh b/install/netbox-install.sh index 81a7183229f..95eaf20fbf2 100644 --- a/install/netbox-install.sh +++ b/install/netbox-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/nextcloudpi-install.sh b/install/nextcloudpi-install.sh index 1cf277eaa5f..327434b95a2 100644 --- a/install/nextcloudpi-install.sh +++ b/install/nextcloudpi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/nextpvr-install.sh b/install/nextpvr-install.sh index 7fba6c2a938..b8a6cdaeab2 100644 --- a/install/nextpvr-install.sh +++ b/install/nextpvr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 communtiy-scripts ORG +# Copyright (c) 2021-2025 communtiy-scripts ORG # Author: MickLesk (Canbiz) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/nginxproxymanager-install.sh b/install/nginxproxymanager-install.sh index 27639f1af65..87664fb9ef3 100644 --- a/install/nginxproxymanager-install.sh +++ b/install/nginxproxymanager-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/nocodb-install.sh b/install/nocodb-install.sh index 64a2c05d2f3..c0da1894953 100644 --- a/install/nocodb-install.sh +++ b/install/nocodb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/node-red-install.sh b/install/node-red-install.sh index 01e3862abce..06a706e8f75 100644 --- a/install/node-red-install.sh +++ b/install/node-red-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/notifiarr-install.sh b/install/notifiarr-install.sh index 2790f5442c6..3e2bd1ec802 100644 --- a/install/notifiarr-install.sh +++ b/install/notifiarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/ntfy-install.sh b/install/ntfy-install.sh index f05c4c84fb0..cc93fc73e04 100644 --- a/install/ntfy-install.sh +++ b/install/ntfy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/nzbget-install.sh b/install/nzbget-install.sh index ef548922a6d..ee63eab042c 100644 --- a/install/nzbget-install.sh +++ b/install/nzbget-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: havardthom # License: MIT diff --git a/install/octoprint-install.sh b/install/octoprint-install.sh index a1c5c5ee8f7..d1091ac9b39 100644 --- a/install/octoprint-install.sh +++ b/install/octoprint-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/ollama-install.sh b/install/ollama-install.sh index 95e2803a634..a43d124dddb 100644 --- a/install/ollama-install.sh +++ b/install/ollama-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: havardthom # License: MIT diff --git a/install/omada-install.sh b/install/omada-install.sh index e94f862cb99..c8de262ea3b 100644 --- a/install/omada-install.sh +++ b/install/omada-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/ombi-install.sh b/install/ombi-install.sh index 86d869f453b..696795adafd 100644 --- a/install/ombi-install.sh +++ b/install/ombi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/omv-install.sh b/install/omv-install.sh index f89007f1609..c0d670192cd 100644 --- a/install/omv-install.sh +++ b/install/omv-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/onedev-install.sh b/install/onedev-install.sh index 432b45af6d6..32ad3f0232a 100644 --- a/install/onedev-install.sh +++ b/install/onedev-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/openhab-install.sh b/install/openhab-install.sh index f9c7dbd75ee..37c90316d8a 100644 --- a/install/openhab-install.sh +++ b/install/openhab-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/openobserve-install.sh b/install/openobserve-install.sh index a6b07b91898..c64084ae591 100644 --- a/install/openobserve-install.sh +++ b/install/openobserve-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/openwebui-install.sh b/install/openwebui-install.sh index 16cf2ad91dd..11fa4aa6788 100644 --- a/install/openwebui-install.sh +++ b/install/openwebui-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: havardthom # License: MIT diff --git a/install/overseerr-install.sh b/install/overseerr-install.sh index 3739eaea068..1bc15a83c74 100644 --- a/install/overseerr-install.sh +++ b/install/overseerr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/owncast-install.sh b/install/owncast-install.sh index 69d2d39123d..3ada3c8f6c8 100644 --- a/install/owncast-install.sh +++ b/install/owncast-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pairdrop-install.sh b/install/pairdrop-install.sh index e8e52392de8..46b799be083 100644 --- a/install/pairdrop-install.sh +++ b/install/pairdrop-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/paperless-ngx-install.sh b/install/paperless-ngx-install.sh index 47b36b5e146..9e52590878b 100644 --- a/install/paperless-ngx-install.sh +++ b/install/paperless-ngx-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/part-db-install.sh b/install/part-db-install.sh index 020d9e55ae2..1429649fde9 100644 --- a/install/part-db-install.sh +++ b/install/part-db-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: bvdberg01 # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pbs-install.sh b/install/pbs-install.sh index 3fdc090deed..c14a2c1234f 100644 --- a/install/pbs-install.sh +++ b/install/pbs-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/peanut-install.sh b/install/peanut-install.sh index bba32d87ab2..745278e7811 100644 --- a/install/peanut-install.sh +++ b/install/peanut-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: remz1337 # License: MIT diff --git a/install/petio-install.sh b/install/petio-install.sh index 0b2d403a2d1..13108368d72 100644 --- a/install/petio-install.sh +++ b/install/petio-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/photoprism-install.sh b/install/photoprism-install.sh index c7cf1a9f093..b06e8413979 100644 --- a/install/photoprism-install.sh +++ b/install/photoprism-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pialert-install.sh b/install/pialert-install.sh index 119ae699e1a..8b48ea8e5d8 100644 --- a/install/pialert-install.sh +++ b/install/pialert-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pihole-install.sh b/install/pihole-install.sh index d9f0a4139b4..e5a6f5819cc 100644 --- a/install/pihole-install.sh +++ b/install/pihole-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pingvin-install.sh b/install/pingvin-install.sh index 6007b45bd11..5478aab458a 100644 --- a/install/pingvin-install.sh +++ b/install/pingvin-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/plex-install.sh b/install/plex-install.sh index 5dfa8727263..f80bb887f8e 100644 --- a/install/plex-install.sh +++ b/install/plex-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/pocketbase-install.sh b/install/pocketbase-install.sh index c1fa1cfe7a0..d0efa7edcbb 100644 --- a/install/pocketbase-install.sh +++ b/install/pocketbase-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/podman-homeassistant-install.sh b/install/podman-homeassistant-install.sh index 77d9cf34396..cff4b32b3ee 100644 --- a/install/podman-homeassistant-install.sh +++ b/install/podman-homeassistant-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/podman-install.sh b/install/podman-install.sh index 8cc75ecf457..2b496ba75d2 100644 --- a/install/podman-install.sh +++ b/install/podman-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/postgresql-install.sh b/install/postgresql-install.sh index 8897abbec86..31eeec22e0f 100644 --- a/install/postgresql-install.sh +++ b/install/postgresql-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/prometheus-install.sh b/install/prometheus-install.sh index db3d1f527fa..94e0e273c12 100644 --- a/install/prometheus-install.sh +++ b/install/prometheus-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/prowlarr-install.sh b/install/prowlarr-install.sh index 9b5d2d90112..7eaf6f6d727 100644 --- a/install/prowlarr-install.sh +++ b/install/prowlarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/proxmox-datacenter-manager-install.sh b/install/proxmox-datacenter-manager-install.sh index 8cd86eddc6a..d9f7c8852ac 100644 --- a/install/proxmox-datacenter-manager-install.sh +++ b/install/proxmox-datacenter-manager-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: CrazyWolf13 # License: MIT # Source: Proxmox Server Solution GmbH diff --git a/install/qbittorrent-install.sh b/install/qbittorrent-install.sh index 19fed748ae7..8decce6a6a7 100644 --- a/install/qbittorrent-install.sh +++ b/install/qbittorrent-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/rabbitmq-install.sh b/install/rabbitmq-install.sh index 90518614142..ac867583bb9 100644 --- a/install/rabbitmq-install.sh +++ b/install/rabbitmq-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/radarr-install.sh b/install/radarr-install.sh index d1d94745673..93ae8345579 100644 --- a/install/radarr-install.sh +++ b/install/radarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/rdtclient-install.sh b/install/rdtclient-install.sh index d48d08487ed..e952f0a8b54 100644 --- a/install/rdtclient-install.sh +++ b/install/rdtclient-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/readarr-install.sh b/install/readarr-install.sh index 143d60e5eae..79e88132cde 100644 --- a/install/readarr-install.sh +++ b/install/readarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/readeck-install.sh b/install/readeck-install.sh index 9b74231c1d1..d60edf162f3 100644 --- a/install/readeck-install.sh +++ b/install/readeck-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/recyclarr-install.sh b/install/recyclarr-install.sh index 404298e0097..ecc03351196 100644 --- a/install/recyclarr-install.sh +++ b/install/recyclarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MrYadro # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/redis-install.sh b/install/redis-install.sh index 26ddec18dc4..c6cd900ae67 100644 --- a/install/redis-install.sh +++ b/install/redis-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/rtsptoweb-install.sh b/install/rtsptoweb-install.sh index 8c485934616..5928cdec994 100644 --- a/install/rtsptoweb-install.sh +++ b/install/rtsptoweb-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/runtipi-install.sh b/install/runtipi-install.sh index e553daea111..26d6ed5f100 100644 --- a/install/runtipi-install.sh +++ b/install/runtipi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/sabnzbd-install.sh b/install/sabnzbd-install.sh index 9f6e71b1905..94a0a0aff80 100644 --- a/install/sabnzbd-install.sh +++ b/install/sabnzbd-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/semaphore-install.sh b/install/semaphore-install.sh index 0f40928f145..2294ca22705 100644 --- a/install/semaphore-install.sh +++ b/install/semaphore-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/sftpgo-install.sh b/install/sftpgo-install.sh index 9930904fc41..bffec81cc78 100644 --- a/install/sftpgo-install.sh +++ b/install/sftpgo-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/shinobi-install.sh b/install/shinobi-install.sh index ef5965d3464..9d4c64fe450 100644 --- a/install/shinobi-install.sh +++ b/install/shinobi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/silverbullet-install.sh b/install/silverbullet-install.sh index 7338acd5f21..feaa59694e8 100644 --- a/install/silverbullet-install.sh +++ b/install/silverbullet-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Dominik Siebel (dsiebel) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/smokeping-install.sh b/install/smokeping-install.sh index 20af44935a8..5b97b711706 100644 --- a/install/smokeping-install.sh +++ b/install/smokeping-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/snipeit-install.sh b/install/snipeit-install.sh index f4fa32f47bc..e3c5e1b9a30 100644 --- a/install/snipeit-install.sh +++ b/install/snipeit-install.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash -#Copyright (c) 2021-2024 community-scripts ORG +#Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/sonarr-install.sh b/install/sonarr-install.sh index e7a6bf382ad..353f47a987d 100644 --- a/install/sonarr-install.sh +++ b/install/sonarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/spoolman-install.sh b/install/spoolman-install.sh index 5f5d118a77f..38a53c16da9 100644 --- a/install/spoolman-install.sh +++ b/install/spoolman-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/stirling-pdf-install.sh b/install/stirling-pdf-install.sh index 3e373373766..788cb757ff0 100644 --- a/install/stirling-pdf-install.sh +++ b/install/stirling-pdf-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/syncthing-install.sh b/install/syncthing-install.sh index 221ac563fa4..6f0458f306f 100644 --- a/install/syncthing-install.sh +++ b/install/syncthing-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/tandoor-install.sh b/install/tandoor-install.sh index 459dd6b2ee1..779b14e9461 100644 --- a/install/tandoor-install.sh +++ b/install/tandoor-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/tasmoadmin-install.sh b/install/tasmoadmin-install.sh index 680cc0843df..f9eb9ad28ec 100644 --- a/install/tasmoadmin-install.sh +++ b/install/tasmoadmin-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/tautulli-install.sh b/install/tautulli-install.sh index 0ba446c4c26..87bc14eeb41 100644 --- a/install/tautulli-install.sh +++ b/install/tautulli-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/tdarr-install.sh b/install/tdarr-install.sh index 8447a6c4a71..23303b30ea6 100644 --- a/install/tdarr-install.sh +++ b/install/tdarr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/technitiumdns-install.sh b/install/technitiumdns-install.sh index 8dc37ae1abb..3567030bf43 100644 --- a/install/technitiumdns-install.sh +++ b/install/technitiumdns-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/teddycloud-install.sh b/install/teddycloud-install.sh index 8f61b89259e..1a4995000f1 100644 --- a/install/teddycloud-install.sh +++ b/install/teddycloud-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Dominik Siebel (dsiebel) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/the-lounge-install.sh b/install/the-lounge-install.sh index 7b2a9381e5e..81a656ec642 100644 --- a/install/the-lounge-install.sh +++ b/install/the-lounge-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: kristocopani # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/threadfin-install.sh b/install/threadfin-install.sh index a4c08e014a3..3c78983f202 100644 --- a/install/threadfin-install.sh +++ b/install/threadfin-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/tianji-install.sh b/install/tianji-install.sh index 26b05eb3ed0..e03c09d0ad7 100644 --- a/install/tianji-install.sh +++ b/install/tianji-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/traccar-install.sh b/install/traccar-install.sh index c6c65034c5a..ebed5a9138f 100644 --- a/install/traccar-install.sh +++ b/install/traccar-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/traefik-install.sh b/install/traefik-install.sh index 7c98163daae..185c2683497 100644 --- a/install/traefik-install.sh +++ b/install/traefik-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/transmission-install.sh b/install/transmission-install.sh index b2e9e152be0..734a50d054e 100644 --- a/install/transmission-install.sh +++ b/install/transmission-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/trilium-install.sh b/install/trilium-install.sh index e8c44791519..e62695beb84 100644 --- a/install/trilium-install.sh +++ b/install/trilium-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/ubuntu-install.sh b/install/ubuntu-install.sh index cb2010c518c..7d58cdaae35 100644 --- a/install/ubuntu-install.sh +++ b/install/ubuntu-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/umami-install.sh b/install/umami-install.sh index 28dc0687f92..07b01998470 100644 --- a/install/umami-install.sh +++ b/install/umami-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/umbrel-install.sh b/install/umbrel-install.sh index 519f1c7c697..d39d3762d5d 100644 --- a/install/umbrel-install.sh +++ b/install/umbrel-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/unbound-install.sh b/install/unbound-install.sh index 198670224d1..39cde037e73 100644 --- a/install/unbound-install.sh +++ b/install/unbound-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: wimb0 # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/unifi-install.sh b/install/unifi-install.sh index d1d2e872b52..08af10cb9cc 100644 --- a/install/unifi-install.sh +++ b/install/unifi-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/unmanic-install.sh b/install/unmanic-install.sh index 8034abc7b1e..8c90ea432e9 100644 --- a/install/unmanic-install.sh +++ b/install/unmanic-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/uptimekuma-install.sh b/install/uptimekuma-install.sh index 5571166d694..f6e79a68dc5 100644 --- a/install/uptimekuma-install.sh +++ b/install/uptimekuma-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/vaultwarden-install.sh b/install/vaultwarden-install.sh index e5703f9298f..bcd10455ab7 100644 --- a/install/vaultwarden-install.sh +++ b/install/vaultwarden-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/vikunja-install.sh b/install/vikunja-install.sh index de52efc62ac..b4da4a748b7 100644 --- a/install/vikunja-install.sh +++ b/install/vikunja-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/wallos-install.sh b/install/wallos-install.sh index 5d62870ef2e..7f2191688f1 100644 --- a/install/wallos-install.sh +++ b/install/wallos-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/wastebin-install.sh b/install/wastebin-install.sh index 12e255a5c33..994d80f7505 100644 --- a/install/wastebin-install.sh +++ b/install/wastebin-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/watchyourlan-install.sh b/install/watchyourlan-install.sh index e93bfa2a5ac..22462473088 100644 --- a/install/watchyourlan-install.sh +++ b/install/watchyourlan-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/wavelog-install.sh b/install/wavelog-install.sh index c6aa77d69f4..0df0ef3124f 100644 --- a/install/wavelog-install.sh +++ b/install/wavelog-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: Don Locke (DonLocke) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/whisparr-install.sh b/install/whisparr-install.sh index 3401374fcd6..22573c0b328 100644 --- a/install/whisparr-install.sh +++ b/install/whisparr-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/whoogle-install.sh b/install/whoogle-install.sh index c2f80be7e70..00121f1c579 100644 --- a/install/whoogle-install.sh +++ b/install/whoogle-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/wikijs-install.sh b/install/wikijs-install.sh index f572752e2e3..1a41e42450a 100644 --- a/install/wikijs-install.sh +++ b/install/wikijs-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/wireguard-install.sh b/install/wireguard-install.sh index a5805eab1c6..545c9de83e8 100644 --- a/install/wireguard-install.sh +++ b/install/wireguard-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/yunohost-install.sh b/install/yunohost-install.sh index 3012db34e42..e43fd0b9764 100644 --- a/install/yunohost-install.sh +++ b/install/yunohost-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/zabbix-install.sh b/install/zabbix-install.sh index 286d425c2c9..265dcd6b942 100644 --- a/install/zabbix-install.sh +++ b/install/zabbix-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/zammad-install.sh b/install/zammad-install.sh index 274df3a3e96..7a87b51e2ce 100644 --- a/install/zammad-install.sh +++ b/install/zammad-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -#Copyright (c) 2021-2024 community-scripts ORG +#Copyright (c) 2021-2025 community-scripts ORG # Author: Michel Roegl-Brunner (michelroegl-brunner) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index 54cf0d18c1f..516fc3b0338 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/zipline-install.sh b/install/zipline-install.sh index f7f5c6a67bb..4ac4c6fcacf 100644 --- a/install/zipline-install.sh +++ b/install/zipline-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/install/zoraxy-install.sh b/install/zoraxy-install.sh index 5d7dd9b7904..860da7d4e81 100644 --- a/install/zoraxy-install.sh +++ b/install/zoraxy-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/install/zwave-js-ui-install.sh b/install/zwave-js-ui-install.sh index df366e32fa7..2c8a80c0b5f 100644 --- a/install/zwave-js-ui-install.sh +++ b/install/zwave-js-ui-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh index 3b556cc24a8..7ef23341fc5 100644 --- a/misc/add-lxc-iptag.sh +++ b/misc/add-lxc-iptag.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 community-scripts ORG +# Copyright (c) 2021-2025 community-scripts ORG # Author: MickLesk (Canbiz) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/add-netbird-lxc.sh b/misc/add-netbird-lxc.sh index c543bed0c7c..d2e02bf26da 100644 --- a/misc/add-netbird-lxc.sh +++ b/misc/add-netbird-lxc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk (Canbiz) # License: MIT diff --git a/misc/add-tailscale-lxc.sh b/misc/add-tailscale-lxc.sh index 73a94497467..36d148e406a 100644 --- a/misc/add-tailscale-lxc.sh +++ b/misc/add-tailscale-lxc.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/all-templates.sh b/misc/all-templates.sh index 3581768df1e..80f8c807c45 100644 --- a/misc/all-templates.sh +++ b/misc/all-templates.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/alpine-install.func b/misc/alpine-install.func index e8244baa2e0..4a9a655ce78 100644 --- a/misc/alpine-install.func +++ b/misc/alpine-install.func @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk # License: MIT diff --git a/misc/build.func b/misc/build.func index 623a53bc733..4ed08f52e1c 100644 --- a/misc/build.func +++ b/misc/build.func @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk # License: MIT diff --git a/misc/clean-lxcs.sh b/misc/clean-lxcs.sh index 129071f5858..cabd3f033e3 100644 --- a/misc/clean-lxcs.sh +++ b/misc/clean-lxcs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/clean.sh b/misc/clean.sh index 82a8ded8e3b..1c92d79ecc3 100644 --- a/misc/clean.sh +++ b/misc/clean.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/code-server.sh b/misc/code-server.sh index 5f25413474b..5114e320089 100644 --- a/misc/code-server.sh +++ b/misc/code-server.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/container-restore-from-backup.sh b/misc/container-restore-from-backup.sh index ebd22290291..dd5da945340 100644 --- a/misc/container-restore-from-backup.sh +++ b/misc/container-restore-from-backup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh b/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh index 02060ae3393..a8c137afb12 100644 --- a/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh +++ b/misc/copy-data/home-assistant-container-copy-data-home-assistant-container.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh b/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh index 8ca7b409f94..998bcb63a23 100644 --- a/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh +++ b/misc/copy-data/home-assistant-container-copy-data-home-assistant-core.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh b/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh index cc348284214..e730372d2e2 100644 --- a/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh +++ b/misc/copy-data/home-assistant-container-copy-data-podman-home-assistant.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh b/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh index bdf8e55b9a7..dc9eecd7a4f 100644 --- a/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh +++ b/misc/copy-data/home-assistant-core-copy-data-home-assistant-container.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh b/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh index bca88f3625c..a8d36408535 100644 --- a/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh +++ b/misc/copy-data/home-assistant-core-copy-data-home-assistant-core.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/plex-copy-data-plex.sh b/misc/copy-data/plex-copy-data-plex.sh index 4ada54d5439..779921f89ac 100644 --- a/misc/copy-data/plex-copy-data-plex.sh +++ b/misc/copy-data/plex-copy-data-plex.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh b/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh index 56e9aabdd8c..0ff1f071fe5 100644 --- a/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh +++ b/misc/copy-data/podman-home-assistant-copy-data-home-assistant-container.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/z2m-copy-data-z2m.sh b/misc/copy-data/z2m-copy-data-z2m.sh index 35b8a33973e..b6807351aff 100644 --- a/misc/copy-data/z2m-copy-data-z2m.sh +++ b/misc/copy-data/z2m-copy-data-z2m.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh b/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh index e42adf7d6a5..3f282e250ef 100644 --- a/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh +++ b/misc/copy-data/zwavejs2mqtt-copy-data-zwavejsui.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/core-restore-from-backup.sh b/misc/core-restore-from-backup.sh index fd7fab0e055..021e6b05a06 100644 --- a/misc/core-restore-from-backup.sh +++ b/misc/core-restore-from-backup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/cron-update-lxcs.sh b/misc/cron-update-lxcs.sh index 04bbfb11c75..b83111fedb9 100644 --- a/misc/cron-update-lxcs.sh +++ b/misc/cron-update-lxcs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/crowdsec.sh b/misc/crowdsec.sh index 07577e22079..eae6fc9676e 100644 --- a/misc/crowdsec.sh +++ b/misc/crowdsec.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/filebrowser.sh b/misc/filebrowser.sh index d8912b7ffde..02a4bb4cb28 100644 --- a/misc/filebrowser.sh +++ b/misc/filebrowser.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/frigate-support.sh b/misc/frigate-support.sh index 981ba3a96ca..11e14e7a7b5 100644 --- a/misc/frigate-support.sh +++ b/misc/frigate-support.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/fstrim.sh b/misc/fstrim.sh index de604bdd505..27a9b9ed20e 100644 --- a/misc/fstrim.sh +++ b/misc/fstrim.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/glances.sh b/misc/glances.sh index 51cf5d6bf53..cd49dcb3329 100644 --- a/misc/glances.sh +++ b/misc/glances.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/host-backup.sh b/misc/host-backup.sh index f9405b1ee18..5de60fc7eaf 100644 --- a/misc/host-backup.sh +++ b/misc/host-backup.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/hw-acceleration.sh b/misc/hw-acceleration.sh index 97ca7de9773..b632afb344d 100644 --- a/misc/hw-acceleration.sh +++ b/misc/hw-acceleration.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/install.func b/misc/install.func index 24f752a4894..1a3cf5eb94d 100644 --- a/misc/install.func +++ b/misc/install.func @@ -1,4 +1,4 @@ -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Co-Author: MickLesk # License: MIT diff --git a/misc/kernel-pin.sh b/misc/kernel-pin.sh index cd4891c9510..5450b71ef70 100644 --- a/misc/kernel-pin.sh +++ b/misc/kernel-pin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/microcode.sh b/misc/microcode.sh index 232bcd48ef2..b5ce7aa71da 100644 --- a/misc/microcode.sh +++ b/misc/microcode.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/monitor-all.sh b/misc/monitor-all.sh index a624dbd6c07..3d6103f5e9f 100644 --- a/misc/monitor-all.sh +++ b/misc/monitor-all.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/netdata.sh b/misc/netdata.sh index 9c3ee42fa91..d04b11f9a8c 100644 --- a/misc/netdata.sh +++ b/misc/netdata.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/olivetin.sh b/misc/olivetin.sh index d3e0adeee5a..e35e78df1fa 100644 --- a/misc/olivetin.sh +++ b/misc/olivetin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/pbs3-upgrade.sh b/misc/pbs3-upgrade.sh index 789c07edb11..465ba8fb1b0 100644 --- a/misc/pbs3-upgrade.sh +++ b/misc/pbs3-upgrade.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/post-pbs-install.sh b/misc/post-pbs-install.sh index 31a15b7c1b2..e95c62b0bfd 100644 --- a/misc/post-pbs-install.sh +++ b/misc/post-pbs-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/post-pve-install.sh b/misc/post-pve-install.sh index 762d063f222..4290c50f644 100644 --- a/misc/post-pve-install.sh +++ b/misc/post-pve-install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/pve8-upgrade.sh b/misc/pve8-upgrade.sh index a530ee548ba..4dd8e158763 100644 --- a/misc/pve8-upgrade.sh +++ b/misc/pve8-upgrade.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/pyenv.sh b/misc/pyenv.sh index d8e36b0b2e4..c1d8044ad9a 100644 --- a/misc/pyenv.sh +++ b/misc/pyenv.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE @@ -110,7 +110,7 @@ pip3 install --pre esphome &>/dev/null cat </srv/esphome/start.sh #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/scaling-governor.sh b/misc/scaling-governor.sh index 646206e4023..cb0975349ff 100644 --- a/misc/scaling-governor.sh +++ b/misc/scaling-governor.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/update-lxcs-cron.sh b/misc/update-lxcs-cron.sh index d3ddee7caf3..9c0def0c451 100644 --- a/misc/update-lxcs-cron.sh +++ b/misc/update-lxcs-cron.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/update-lxcs.sh b/misc/update-lxcs.sh index 36892a9c7a3..09b6970506c 100644 --- a/misc/update-lxcs.sh +++ b/misc/update-lxcs.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/update-repo.sh b/misc/update-repo.sh index aa9c42d0c14..d218d829181 100644 --- a/misc/update-repo.sh +++ b/misc/update-repo.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: MickLesk # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/usb-passthrough.sh b/misc/usb-passthrough.sh index b8cb42cf4b6..58dab9a2398 100644 --- a/misc/usb-passthrough.sh +++ b/misc/usb-passthrough.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/misc/webmin.sh b/misc/webmin.sh index 260e806c619..92825f46301 100644 --- a/misc/webmin.sh +++ b/misc/webmin.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/turnkey/turnkey.sh b/turnkey/turnkey.sh index bf269223fe1..5a39bc83a7c 100644 --- a/turnkey/turnkey.sh +++ b/turnkey/turnkey.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/debian-vm.sh b/vm/debian-vm.sh index 92884abf941..007dffdf97a 100644 --- a/vm/debian-vm.sh +++ b/vm/debian-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/haos-vm.sh b/vm/haos-vm.sh index 36b989c11a7..caaa9c8563a 100644 --- a/vm/haos-vm.sh +++ b/vm/haos-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/mikrotik-routeros.sh b/vm/mikrotik-routeros.sh index 93ca54038c8..3a232fcd7e8 100644 --- a/vm/mikrotik-routeros.sh +++ b/vm/mikrotik-routeros.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/nextcloud-vm.sh b/vm/nextcloud-vm.sh index b956cd537ac..f2590c85a36 100644 --- a/vm/nextcloud-vm.sh +++ b/vm/nextcloud-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/openwrt.sh b/vm/openwrt.sh index 26d23493238..7410621373a 100644 --- a/vm/openwrt.sh +++ b/vm/openwrt.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # Jon Spriggs (jontheniceguy) # License: MIT diff --git a/vm/owncloud-vm.sh b/vm/owncloud-vm.sh index 3e68f8239d1..99ca81c5979 100644 --- a/vm/owncloud-vm.sh +++ b/vm/owncloud-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/pimox-haos-vm.sh b/vm/pimox-haos-vm.sh index d1206031f4d..0db35f7339e 100644 --- a/vm/pimox-haos-vm.sh +++ b/vm/pimox-haos-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/ubuntu2204-vm.sh b/vm/ubuntu2204-vm.sh index 020b59dacee..b4fa0fb66c3 100644 --- a/vm/ubuntu2204-vm.sh +++ b/vm/ubuntu2204-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE diff --git a/vm/ubuntu2404-vm.sh b/vm/ubuntu2404-vm.sh index e41c7cd02cf..01cc3015077 100644 --- a/vm/ubuntu2404-vm.sh +++ b/vm/ubuntu2404-vm.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT # https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE From ff660eaabbe195298d0585d595a60ed86d6f459f Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 13:45:40 +0100 Subject: [PATCH 222/286] Update CHANGELOG.md (#1151) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab86530ba53..859bb32aef8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Happy new Year! Update Copyright to 2025 [@MickLesk](https://github.com/MickLesk) ([#1150](https://github.com/community-scripts/ProxmoxVE/pull/1150)) - Update Kernel-Clean to new Version & Bugfixing [@MickLesk](https://github.com/MickLesk) ([#1147](https://github.com/community-scripts/ProxmoxVE/pull/1147)) - Fix chromium installation for ArchiveBox [@tkunzfeld](https://github.com/tkunzfeld) ([#1140](https://github.com/community-scripts/ProxmoxVE/pull/1140)) From 7c0f85d0b3ddbd423f31f622248eb183eb922276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastiaan?= Date: Wed, 1 Jan 2025 18:25:46 +0100 Subject: [PATCH 223/286] Fix Script Homepage: add version during build step (#1155) * Make variables exported * Auto-yes update-browserslist-db --- ct/homepage.sh | 4 +++- install/homepage-install.sh | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/ct/homepage.sh b/ct/homepage.sh index b94420c1342..e2c74b367cc 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -50,8 +50,10 @@ function update_script() { cp -r homepage-${RELEASE}/* /opt/homepage/ rm -rf homepage-${RELEASE} cd /opt/homepage - npx update-browserslist-db@latest >/dev/null 2>&1 + npx --yes update-browserslist-db@latest >/dev/null 2>&1 pnpm install >/dev/null 2>&1 + export NEXT_PUBLIC_VERSION="v$RELEASE" + export NEXT_PUBLIC_REVISION="source" pnpm build >/dev/null 2>&1 systemctl start homepage echo "${RELEASE}" >/opt/${APP}_version.txt diff --git a/install/homepage-install.sh b/install/homepage-install.sh index d2026f2c4c9..21064860ddd 100644 --- a/install/homepage-install.sh +++ b/install/homepage-install.sh @@ -43,6 +43,8 @@ rm -rf homepage-${RELEASE} cd /opt/homepage cp /opt/homepage/src/skeleton/* /opt/homepage/config $STD pnpm install +export NEXT_PUBLIC_VERSION="v$RELEASE" +export NEXT_PUBLIC_REVISION="source" $STD pnpm build echo "${RELEASE}" >/opt/${APPLICATION}_version.txt msg_ok "Installed Homepage v${RELEASE}" From b8671b97af2b6070f840ac8e719c80c0d4d5dda3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastiaan?= Date: Wed, 1 Jan 2025 18:26:23 +0100 Subject: [PATCH 224/286] Correctly check for changed files in Shellcheck workflow (#1156) --- .github/workflows/shellcheck.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml index a01a978d39a..394229e6f28 100644 --- a/.github/workflows/shellcheck.yml +++ b/.github/workflows/shellcheck.yml @@ -20,7 +20,11 @@ jobs: - name: Get changed files id: changes run: | - echo "::set-output name=files::$(git diff --name-only ${{ github.event.before }} ${{ github.sha }} | grep '\.sh$')" + if ${{ github.event_name == 'pull_request' }}; then + echo "files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT + else + echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT + fi - name: Run ShellCheck if: steps.changes.outputs.files != '' From ce27930f9d717005f5645d4885c57f69619cd288 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 18:29:33 +0100 Subject: [PATCH 225/286] Update CHANGELOG.md (#1161) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 859bb32aef8..b41598e1682 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix Script Homepage: add version during build step [@se-bastiaan](https://github.com/se-bastiaan) ([#1155](https://github.com/community-scripts/ProxmoxVE/pull/1155)) - Happy new Year! Update Copyright to 2025 [@MickLesk](https://github.com/MickLesk) ([#1150](https://github.com/community-scripts/ProxmoxVE/pull/1150)) - Update Kernel-Clean to new Version & Bugfixing [@MickLesk](https://github.com/MickLesk) ([#1147](https://github.com/community-scripts/ProxmoxVE/pull/1147)) - Fix chromium installation for ArchiveBox [@tkunzfeld](https://github.com/tkunzfeld) ([#1140](https://github.com/community-scripts/ProxmoxVE/pull/1140)) @@ -35,6 +36,10 @@ Do not break established syntax in this file, as it is automatically updated by - Fix Category of Semaphore [@MickLesk](https://github.com/MickLesk) ([#1148](https://github.com/community-scripts/ProxmoxVE/pull/1148)) +### 🧰 Maintenance + +- Correctly check for changed files in Shellcheck workflow [@se-bastiaan](https://github.com/se-bastiaan) ([#1156](https://github.com/community-scripts/ProxmoxVE/pull/1156)) + ## 2024-12-31 - Happy new Year! 🎉✨ ### Changed From 99e06341b30305c00e892fc792965a14f7f9319e Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Wed, 1 Jan 2025 22:55:11 +0100 Subject: [PATCH 226/286] New Script: Komodo (#1167) * Happy new Year! Update Copyright to 2025 * Create new LXC: Komodo --- ct/komodo.sh | 73 ++++++++++++++++++++++++++++++ install/komodo-install.sh | 95 +++++++++++++++++++++++++++++++++++++++ json/komodo.json | 39 ++++++++++++++++ 3 files changed, 207 insertions(+) create mode 100644 ct/komodo.sh create mode 100644 install/komodo-install.sh create mode 100644 json/komodo.json diff --git a/ct/komodo.sh b/ct/komodo.sh new file mode 100644 index 00000000000..2a550892407 --- /dev/null +++ b/ct/komodo.sh @@ -0,0 +1,73 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://komo.do + +# App Default Values +APP="Komodo" +var_tags="docker" +var_cpu="2" +var_ram="2048" +var_disk="10" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/komodo ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Updating ${APP}" + COMPOSE_FILE="" + for file in *.compose.yaml; do + if [[ "$file" != "compose.env" ]]; then + COMPOSE_FILE="$file" + break + fi + done + + if [[ -z "$COMPOSE_FILE" ]]; then + msg_error "No valid compose file found in /opt/komodo!" + exit 1 + fi + + BACKUP_FILE="${COMPOSE_FILE}.bak_$(date +%Y%m%d_%H%M%S)" + mv "$COMPOSE_FILE" "$BACKUP_FILE" || { + msg_error "Failed to create backup of $COMPOSE_FILE!" + exit 1 + } + + GITHUB_URL="https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$COMPOSE_FILE" + wget -q -O "$COMPOSE_FILE" "$GITHUB_URL" || { + msg_error "Failed to download $COMPOSE_FILE from GitHub!" + mv "$BACKUP_FILE" "$COMPOSE_FILE" + exit 1 + } + + docker compose -p komodo -f "/opt/komodo/$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d &>/dev/null + msg_ok "Updated ${APP}" +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9120${CL}" diff --git a/install/komodo-install.sh b/install/komodo-install.sh new file mode 100644 index 00000000000..9650a4d3b54 --- /dev/null +++ b/install/komodo-install.sh @@ -0,0 +1,95 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: MickLesk +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://komo.do/ + +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + ca-certificates +msg_ok "Installed Dependencies" + +msg_info "Setup Docker Repository" +install -m 0755 -d /etc/apt/keyrings +curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc +chmod a+r /etc/apt/keyrings/docker.asc +echo \ + "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \ + $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \ + sudo tee /etc/apt/sources.list.d/docker.list > /dev/null +$STD apt-get update +msg_ok "Setup Docker Repository" + +msg_info "Installing Docker" +$STD apt-get install -y \ + docker-ce \ + docker-ce-cli \ + containerd.io \ + docker-buildx-plugin \ + docker-compose-plugin +msg_ok "Installed Docker" + +echo "Choose the database for Komodo installation:" +echo "1) MongoDB (recommended)" +echo "2) SQLite" +echo "3) PostgreSQL" +read -rp "Enter your choice (default: 1): " DB_CHOICE +DB_CHOICE=${DB_CHOICE:-1} + +case $DB_CHOICE in + 1) + DB_COMPOSE_FILE="mongo.compose.yaml" + ;; + 2) + DB_COMPOSE_FILE="sqlite.compose.yaml" + ;; + 3) + DB_COMPOSE_FILE="postgres.compose.yaml" + ;; + *) + echo "Invalid choice. Defaulting to MongoDB." + DB_COMPOSE_FILE="mongo.compose.yaml" + ;; +esac +mkdir -p /opt/komodo +cd /opt/komodo +wget -q "https://raw.githubusercontent.com/mbecker20/komodo/main/compose/$DB_COMPOSE_FILE" + + +msg_info "Setup Komodo Environment" +wget -q -O /opt/komodo/compose.env https://raw.githubusercontent.com/mbecker20/komodo/main/compose/compose.env +DB_PASSWORD=$(openssl rand -base64 16 | tr -d '/+=') +PASSKEY=$(openssl rand -base64 24 | tr -d '/+=') +WEBHOOK_SECRET=$(openssl rand -base64 24 | tr -d '/+=') +JWT_SECRET=$(openssl rand -base64 24 | tr -d '/+=') + +sed -i "s/^DB_USERNAME=.*/DB_USERNAME=komodo_admin/" /opt/komodo/compose.env +sed -i "s/^DB_PASSWORD=.*/DB_PASSWORD=${DB_PASSWORD}/" /opt/komodo/compose.env +sed -i "s/^PASSKEY=.*/PASSKEY=${PASSKEY}/" /opt/komodo/compose.env +sed -i "s/^KOMODO_WEBHOOK_SECRET=.*/KOMODO_WEBHOOK_SECRET=${WEBHOOK_SECRET}/" /opt/komodo/compose.env +sed -i "s/^KOMODO_JWT_SECRET=.*/KOMODO_JWT_SECRET=${JWT_SECRET}/" /opt/komodo/compose.env +msg_ok "Setup Komodo Environment" + +msg_info "Initialize Komodo" +$STD docker compose -p komodo -f /opt/komodo/$DB_COMPOSE_FILE --env-file /opt/komodo/compose.env up -d +msg_ok "Initialized Komodo" + +motd_ssh +customize + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" diff --git a/json/komodo.json b/json/komodo.json new file mode 100644 index 00000000000..d27b09aaca9 --- /dev/null +++ b/json/komodo.json @@ -0,0 +1,39 @@ +{ + "name": "Komodo", + "slug": "komodo", + "categories": [ + 8 + ], + "date_created": "2025-01-01", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 9120, + "documentation": "https://komo.do/docs/intro", + "website": "https://komo.do", + "logo": "https://komo.do/img/logo512.png", + "description": "Komodo is a build and deployment system that automates the creation of versioned Docker images from Git repositories and facilitates the deployment of Docker containers and Docker Compose setups. It provides features such as build automation triggered by Git pushes, deployment management, and monitoring of uptime and logs across multiple servers. The core API and associated agent are developed in Rust.", + "install_methods": [ + { + "type": "default", + "script": "ct/komodo.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 10, + "os": "Debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "After the initial installation: Enter your desired admin user and password and then click on Sign Up", + "type": "info" + } + ] +} \ No newline at end of file From 2245479733f72a9a864210417a1732b314779d25 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Wed, 1 Jan 2025 22:59:15 +0100 Subject: [PATCH 227/286] Update CHANGELOG.md (#1168) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b41598e1682..02e92081048 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### ✨ New Scripts +- New Script: Komodo [@MickLesk](https://github.com/MickLesk) ([#1167](https://github.com/community-scripts/ProxmoxVE/pull/1167)) - New Script: Firefly [@quantumryuu](https://github.com/quantumryuu) ([#616](https://github.com/community-scripts/ProxmoxVE/pull/616)) - New Script: Semaphore [@quantumryuu](https://github.com/quantumryuu) ([#596](https://github.com/community-scripts/ProxmoxVE/pull/596)) From 3e5274a951a61dc81a72a269832ac90609a15c56 Mon Sep 17 00:00:00 2001 From: Fichtl <33128399+xFichtl1@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:28:50 +0100 Subject: [PATCH 228/286] Update config template in blocky-install.sh (#1059) * Update config template in blocky-install.sh * Removed most example configuration of the template in blocky-install.sh --- install/blocky-install.sh | 247 ++++---------------------------------- 1 file changed, 26 insertions(+), 221 deletions(-) diff --git a/install/blocky-install.sh b/install/blocky-install.sh index 7f075e3cb1c..69374672a99 100644 --- a/install/blocky-install.sh +++ b/install/blocky-install.sh @@ -28,241 +28,46 @@ RELEASE=$(curl -s https://api.github.com/repos/0xERR0R/blocky/releases/latest | wget -qO- https://github.com/0xERR0R/blocky/releases/download/v${RELEASE}/blocky_v${RELEASE}_Linux_x86_64.tar.gz | tar -xzf - -C /opt/blocky/ cat </opt/blocky/config.yml -upstream: - # these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query - # format for resolver: [net:]host:[port][/path]. net could be empty (default, shortcut for tcp+udp), tcp+udp, tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh)) - # this configuration is mandatory, please define at least one external DNS resolver - default: - # example for tcp+udp IPv4 server (https://digitalcourage.de/) - #- 5.9.164.112 - # Cloudflare - - 1.1.1.1 - # example for DNS-over-TLS server (DoT) - #- tcp-tls:fdns1.dismail.de:853 - # example for DNS-over-HTTPS (DoH) - #- https://dns.digitale-gesellschaft.ch/dns-query - # optional: use client name (with wildcard support: * - sequence of any characters, [0-9] - range) - # or single ip address / client subnet as CIDR notation - #laptop*: - #- 123.123.123.123 +# configuration documentation: https://0xerr0r.github.io/blocky/latest/configuration/ -# optional: timeout to query the upstream resolver. Default: 2s -#upstreamTimeout: 2s - -# optional: If true, blocky will fail to start unless at least one upstream server per group is reachable. Default: false -#startVerifyUpstream: true - -# optional: Determines how blocky will create outgoing connections. This impacts both upstreams, and lists. -# accepted: dual, v4, v6 -# default: dual -#connectIPVersion: dual - -# optional: custom IP address(es) for domain name (with all sub-domains). Multiple addresses must be separated by a comma -# example: query "printer.lan" or "my.printer.lan" will return 192.168.178.3 -#customDNS: - #customTTL: 1h - # optional: if true (default), return empty result for unmapped query types (for example TXT, MX or AAAA if only IPv4 address is defined). - # if false, queries with unmapped types will be forwarded to the upstream resolver - #filterUnmappedTypes: true - # optional: replace domain in the query with other domain before resolver lookup in the mapping - #rewrite: - #example.com: printer.lan - #mapping: - #printer.lan: 192.168.178.3,2001:0db8:85a3:08d3:1319:8a2e:0370:7344 - -# optional: definition, which DNS resolver(s) should be used for queries to the domain (with all sub-domains). Multiple resolvers must be separated by a comma -# Example: Query client.fritz.box will ask DNS server 192.168.178.1. This is necessary for local network, to resolve clients by host name -#conditional: - # optional: if false (default), return empty result if after rewrite, the mapped resolver returned an empty answer. If true, the original query will be sent to the upstream resolver - # Example: The query "blog.example.com" will be rewritten to "blog.fritz.box" and also redirected to the resolver at 192.168.178.1. If not found and if was set to , the original query "blog.example.com" will be sent upstream. - # Usage: One usecase when having split DNS for internal and external (internet facing) users, but not all subdomains are listed in the internal domain. - #fallbackUpstream: false - # optional: replace domain in the query with other domain before resolver lookup in the mapping - #rewrite: - #example.com: fritz.box - #mapping: - #fritz.box: 192.168.178.1 - #lan.net: 192.168.178.1,192.168.178.2 +upstreams: + groups: + # these external DNS resolvers will be used. Blocky picks 2 random resolvers from the list for each query + # format for resolver: [net:]host:[port][/path]. net could be empty (default, shortcut for tcp+udp), tcp+udp, tcp, udp, tcp-tls or https (DoH). If port is empty, default port will be used (53 for udp and tcp, 853 for tcp-tls, 443 for https (Doh)) + # this configuration is mandatory, please define at least one external DNS resolver + default: + # Cloudflare + - 1.1.1.1 + # Quad9 DNS-over-TLS server (DoT) + - tcp-tls:dns.quad9.net -# optional: use black and white lists to block queries (for example ads, trackers, adult pages etc.) +# optional: use allow/denylists to block queries (for example ads, trackers, adult pages etc.) blocking: - # definition of blacklist groups. Can be external link (http/https) or local file - blackLists: + # definition of denylist groups. Can be external link (http/https) or local file + denylists: ads: - - https://s3.amazonaws.com/lists.disconnect.me/simple_ad.txt - https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts - - http://sysctl.org/cameleon/hosts - - https://s3.amazonaws.com/lists.disconnect.me/simple_tracking.txt - - | - # inline definition with YAML literal block scalar style - # hosts format - someadsdomain.com - special: - - https://raw.githubusercontent.com/StevenBlack/hosts/master/alternates/fakenews/hosts - # definition of whitelist groups. Attention: if the same group has black and whitelists, whitelists will be used to disable particular blacklist entries. If a group has only whitelist entries -> this means only domains from this list are allowed, all other domains will be blocked - whiteLists: - ads: - - whitelist.txt - - | - # inline definition with YAML literal block scalar style - # hosts format - whitelistdomain.com - # this is a regex - /^banners?[_.-]/ # definition: which groups should be applied for which client clientGroupsBlock: # default will be used, if no special definition for a client name exists default: - ads - - special - # use client name (with wildcard support: * - sequence of any characters, [0-9] - range) - # or single ip address / client subnet as CIDR notation - #laptop*: - #- ads - #192.168.178.1/24: - #- special - # which response will be sent, if query is blocked: - # zeroIp: 0.0.0.0 will be returned (default) - # nxDomain: return NXDOMAIN as return code - # comma separated list of destination IP addresses (for example: 192.100.100.15, 2001:0db8:85a3:08d3:1319:8a2e:0370:7344). Should contain ipv4 and ipv6 to cover all query types. Useful with running web server on this address to display the "blocked" page. - blockType: zeroIp - # optional: TTL for answers to blocked domains - # default: 6h - blockTTL: 1m - # optional: automatically list refresh period (in duration format). Default: 4h. - # Negative value -> deactivate automatically refresh. - # 0 value -> use default - refreshPeriod: 4h - # optional: timeout for list download (each url). Default: 60s. Use large values for big lists or slow internet connections - downloadTimeout: 4m - # optional: Download attempt timeout. Default: 60s - downloadAttempts: 5 - # optional: Time between the download attempts. Default: 1s - downloadCooldown: 10s - # optional: if failOnError, application startup will fail if at least one list can't be downloaded / opened. Default: blocking - #startStrategy: failOnError - -# optional: configuration for caching of DNS responses -caching: - # duration how long a response must be cached (min value). - # If <=0, use response's TTL, if >0 use this value, if TTL is smaller - # Default: 0 - minTime: 5m - # duration how long a response must be cached (max value). - # If <0, do not cache responses - # If 0, use TTL - # If > 0, use this value, if TTL is greater - # Default: 0 - maxTime: 30m - # Max number of cache entries (responses) to be kept in cache (soft limit). Useful on systems with limited amount of RAM. - # Default (0): unlimited - maxItemsCount: 0 - # if true, will preload DNS results for often used queries (default: names queried more than 5 times in a 2-hour time window) - # this improves the response time for often used queries, but significantly increases external traffic - # default: false - prefetching: true - # prefetch track time window (in duration format) - # default: 120 - prefetchExpires: 2h - # name queries threshold for prefetch - # default: 5 - prefetchThreshold: 5 - # Max number of domains to be kept in cache for prefetching (soft limit). Useful on systems with limited amount of RAM. - # Default (0): unlimited - #prefetchMaxItemsCount: 0 - -# optional: configuration of client name resolution -clientLookup: - # optional: this DNS resolver will be used to perform reverse DNS lookup (typically local router) - #upstream: 192.168.178.1 - # optional: some routers return multiple names for client (host name and user defined name). Define which single name should be used. - # Example: take second name if present, if not take first name - #singleNameOrder: - #- 2 - #- 1 - # optional: custom mapping of client name to IP addresses. Useful if reverse DNS does not work properly or just to have custom client names. - #clients: - #laptop: - #- 192.168.178.29 -# optional: configuration for prometheus metrics endpoint -prometheus: - # enabled if true - #enable: true - # url path, optional (default '/metrics') - #path: /metrics # optional: write query information (question, answer, client, duration etc.) to daily csv file queryLog: # optional one of: mysql, postgresql, csv, csv-client. If empty, log to console - #type: mysql - # directory (should be mounted as volume in docker) for csv, db connection string for mysql/postgresql - #target: db_user:db_password@tcp(db_host_or_ip:3306)/db_name?charset=utf8mb4&parseTime=True&loc=Local - #postgresql target: postgres://user:password@db_host_or_ip:5432/db_name - # if > 0, deletes log files which are older than ... days - #logRetentionDays: 7 - # optional: Max attempts to create specific query log writer, default: 3 - #creationAttempts: 1 - # optional: Time between the creation attempts, default: 2s - #creationCooldown: 2s - -# optional: Blocky can synchronize its cache and blocking state between multiple instances through redis. -redis: - # Server address and port - #address: redis:6379 - # Password if necessary - #password: passwd - # Database, default: 0 - #database: 2 - # Connection is required for blocky to start. Default: false - #required: true - # Max connection attempts, default: 3 - #connectionAttempts: 10 - # Time between the connection attempts, default: 1s - #connectionCooldown: 3s - -# optional: DNS listener port(s) and bind ip address(es), default 53 (UDP and TCP). Example: 53, :53, "127.0.0.1:5353,[::1]:5353" -port: 553 -# optional: Port(s) and bind ip address(es) for DoT (DNS-over-TLS) listener. Example: 853, 127.0.0.1:853 -#tlsPort: 853 -# optional: HTTPS listener port(s) and bind ip address(es), default empty = no http listener. If > 0, will be used for prometheus metrics, pprof, REST API, DoH... Example: 443, :443, 127.0.0.1:443 -#httpPort: 4000 -#httpsPort: 443 -# optional: Mininal TLS version that the DoH and DoT server will use -#minTlsServeVersion: 1.3 -# if https port > 0: path to cert and key file for SSL encryption. if not set, self-signed certificate will be generated -#certFile: server.crt -#keyFile: server.key -# optional: use this DNS server to resolve blacklist urls and upstream DNS servers. Useful if no DNS resolver is configured and blocky needs to resolve a host name. Format net:IP:port, net must be udp or tcp -#bootstrapDns: tcp+udp:1.1.1.1 - -filtering: -# optional: drop all queries with following query types. Default: empty - #queryTypes: - #- AAAA - -# optional: if path defined, use this file for query resolution (A, AAAA and rDNS). Default: empty -hostsFile: - # optional: Path to hosts file (e.g. /etc/hosts on Linux) - #filePath: /etc/hosts - # optional: TTL, default: 1h - #hostsTTL: 60m - # optional: Time between hosts file refresh, default: 1h - #refreshPeriod: 30m - # optional: Whether loopback hosts addresses (127.0.0.0/8 and ::1) should be filtered or not, default: false - #filterLoopback: true -# optional: Log level (one from debug, info, warn, error). Default: info -#logLevel: info -# optional: Log format (text or json). Default: text -#logFormat: text -# optional: log timestamps. Default: true -#logTimestamp: true -# optional: obfuscate log output (replace all alphanumeric characters with *) for user sensitive data like request domains or responses to increase privacy. Default: false -#logPrivacy: false - -# optional: add EDE error codes to dns response -#ede: - # enabled if true, Default: false - #enable: true + type: + +# optional: use these DNS servers to resolve denylist urls and upstream DNS servers. It is useful if no system DNS resolver is configured, and/or to encrypt the bootstrap queries. +bootstrapDns: + - upstream: tcp-tls:one.one.one.one + ips: + - 1.1.1.1 + +# optional: logging configuration +log: + # optional: Log level (one from trace, debug, info, warn, error). Default: info + level: info EOF msg_ok "Installed Blocky" From 618445ec087c8437c2d769698ed06586befc0922 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Thu, 2 Jan 2025 20:29:27 +0100 Subject: [PATCH 229/286] New Script: 5etools (#1157) * Testing 5etools. * Adding httpd-foreground step for updates. * Debug. * Debug. * Debug. * Debug. * Debug. * Debug. * Debug. * Debug. * Fix version names. * Added 5etools json. * Introduced images and increased storage. * Fixing version zip names. * Increased storage. * Introduced image versions. * Clean-up. * Renamed step. * Increased git post buffer. * Fixing echo command. * Fix tags. * Finetune storage size. * cleanup and restore. * Update ct/5etools.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update ct/5etools.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update ct/5etools.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Update install/5etools-install.sh Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> * Moving stuff around. * Cleanup and finetune. * Update 5etools-install.sh * Switched to release crawling. * Update 5etools-install.sh * Update 5etools-install.sh * Update 5etools.sh * Update 5etools-install.sh * Update 5etools-install.sh * Update 5etools.sh * Update 5etools.sh * Update 5etools.json * Update 5etools-install.sh * Update 5etools.sh * Update 5etools-install.sh * Update 5etools.sh * Update 5etools-install.sh * Update 5etools.sh * Update 5etools.sh * Update 5etools-install.sh * Update 5etools.sh * Update 5etools.json * Update 5etools.sh * Update 5etools.sh Fixed update script * Update 5etools.json --------- Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/5etools.sh | 109 +++++++++++++++++++++++++++++++++++++ install/5etools-install.sh | 67 +++++++++++++++++++++++ json/5etools.json | 34 ++++++++++++ 3 files changed, 210 insertions(+) create mode 100644 ct/5etools.sh create mode 100644 install/5etools-install.sh create mode 100644 json/5etools.json diff --git a/ct/5etools.sh b/ct/5etools.sh new file mode 100644 index 00000000000..b0a40cf82a9 --- /dev/null +++ b/ct/5etools.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://5e.tools/ + +# App Default Values +APP="5etools" +var_tags="wiki" +var_cpu="1" +var_ram="512" +var_disk="13" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + # Check if installation is present | -f for file, -d for folder + if [[ ! -d "/opt/${APP}" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then + # Crawling the new version and checking whether an update is required + msg_info "Updating System" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated System" + + # Execute Update + msg_info "Updating base 5etools" + wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" + unzip -q "${RELEASE}.zip" + mv "/opt/${APP}/img" "/opt/img-backup" + rm -rf "/opt/${APP}" + mv "${APP}-src-${RELEASE:1}" "/opt/${APP}" + mv "/opt/img-backup" "/opt/${APP}/img" + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated base 5etools" + + chown -R www-data: "/opt/${APP}" + chmod -R 755 "/opt/${APP}" + + # Cleaning up + msg_info "Cleaning Up" + rm "${RELEASE}.zip" + $STD apt-get -y autoremove + $STD apt-get -y autoclean + msg_ok "Cleanup Completed" + else + msg_ok "No update required. Base ${APP} is already at ${RELEASE}" + fi + + IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${IMG_RELEASE}" != "$(cat /opt/${APP}_IMG_version.txt)" ]] || [[ ! -f "/opt/${APP}_IMG_version.txt" ]]; then + # Crawling the new version and checking whether an update is required + msg_info "Updating System" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated System" + + # Execute Update + msg_info "Updating 5etools images" + curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip" + unzip -q "${IMG_RELEASE}.zip" + rm -rf "/opt/${APP}/img" + mv "${APP}-img-${IMG_RELEASE:1}" "/opt/${APP}/img" + echo "${IMG_RELEASE}" >"/opt/${APP}_IMG_version.txt" + msg_ok "Updating 5etools images" + + chown -R www-data: "/opt/${APP}" + chmod -R 755 "/opt/${APP}" + + # Cleaning up + msg_info "Cleaning Up" + rm "${IMG_RELEASE}.zip" + $STD apt-get -y autoremove + $STD apt-get -y autoclean + msg_ok "Cleanup Completed" + else + msg_ok "No update required. ${APP} images are already at ${IMG_RELEASE}" + fi + +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/5etools-install.sh b/install/5etools-install.sh new file mode 100644 index 00000000000..4254ef0c7e8 --- /dev/null +++ b/install/5etools-install.sh @@ -0,0 +1,67 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT +# Source: https://5e.tools/ + +# Import Functions und Setup +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo \ + git \ + apache2 +msg_ok "Installed Dependencies" + +# Setup App +msg_info "Set up base 5etools" +RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" +unzip -q "${RELEASE}.zip" +mv "5etools-src-${RELEASE:1}" /opt/5etools +echo "${RELEASE}" >"/opt/5etools_version.txt" +rm "${RELEASE}.zip" +msg_ok "Set up base 5etools" + +msg_info "Set up 5etools images" +IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip" +unzip -q "${IMG_RELEASE}.zip" +mv "5etools-img-${IMG_RELEASE:1}" /opt/5etools/img +echo "${IMG_RELEASE}" >"/opt/5etools_IMG_version.txt" +rm "${IMG_RELEASE}.zip" +msg_ok "Set up 5etools images" + +msg_info "Creating Service" +cat <> /etc/apache2/apache2.conf + + SetHandler server-status + Order deny,allow + Allow from all + +EOF +rm -rf /var/www/html +ln -s "/opt/5etools" /var/www/html + +chown -R www-data: "/opt/5etools" +chmod -R 755 "/opt/5etools" +apache2ctl start +msg_ok "Creating Service" +# Cleanup +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize diff --git a/json/5etools.json b/json/5etools.json new file mode 100644 index 00000000000..2900dda6c70 --- /dev/null +++ b/json/5etools.json @@ -0,0 +1,34 @@ +{ + "name": "5etools", + "slug": "5etools", + "categories": [ + 0 + ], + "date_created": "2025-01-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://wiki.tercept.net/en/5eTools", + "website": "https://5e.tools/", + "logo": "https://wiki.tercept.net/core-wiki-assets/5etoolslogocircle.png", + "description": "5eTools is a website providing a suite of tools for 5th Edition Dungeons & Dragons players and Dungeon Masters.", + "install_methods": [ + { + "type": "default", + "script": "ct/5etools.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 13, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From e356259785b8c98373e7e87f8ac44e4a5832e550 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Thu, 2 Jan 2025 20:29:49 +0100 Subject: [PATCH 230/286] New Script: Pf2eTools (#1162) * Testing 5etools. * Introducing Pf2eTools * Replacing name with var. * Switched to release crawling. * Re-added git. * Update Pf2eTools-install.sh * Update Pf2eTools-install.sh * Update Pf2eTools-install.sh * Update Pf2eTools.sh * Update Pf2eTools-install.sh * Update Pf2eTools.sh * Update Pf2eTools.sh * Update Pf2eTools-install.sh * Update Pf2eTools.sh * Update Pf2eTools-install.sh * Update Pf2eTools.sh Fix update script * Update Pf2eTools.json --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/Pf2eTools.sh | 78 ++++++++++++++++++++++++++++++++++++ install/Pf2eTools-install.sh | 58 +++++++++++++++++++++++++++ json/Pf2eTools.json | 34 ++++++++++++++++ 3 files changed, 170 insertions(+) create mode 100644 ct/Pf2eTools.sh create mode 100644 install/Pf2eTools-install.sh create mode 100644 json/Pf2eTools.json diff --git a/ct/Pf2eTools.sh b/ct/Pf2eTools.sh new file mode 100644 index 00000000000..43d693c8700 --- /dev/null +++ b/ct/Pf2eTools.sh @@ -0,0 +1,78 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://pf2etools.com/ + +# App Default Values +APP="Pf2eTools" +var_tags="wiki" +var_cpu="1" +var_ram="512" +var_disk="6" +var_os="debian" +var_version="12" +var_unprivileged="1" + +# App Output & Base Settings +header_info "$APP" +base_settings + +# Core +variables +color +catch_errors + +function update_script() { + header_info + check_container_storage + check_container_resources + + # Check if installation is present | -f for file, -d for folder + if [[ ! -d "/opt/${APP}" ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + + RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f "/opt/${APP}_version.txt" ]]; then + # Crawling the new version and checking whether an update is required + msg_info "Updating System" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null + msg_ok "Updated System" + + # Execute Update + msg_info "Updating ${APP}" + cd "/opt/${APP}" + wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" + unzip -q "${RELEASE}.zip" + rm -rf "/opt/${APP}" + mv "${APP}-${RELEASE:1}" "/opt/${APP}" + echo "${RELEASE}" >"/opt/${APP}_version.txt" + msg_ok "Updated ${APP}" + + chown -R www-data: "/opt/${APP}" + chmod -R 755 "/opt/${APP}" + + # Cleaning up + msg_info "Cleaning Up" + rm "${RELEASE}.zip" + $STD apt-get -y autoremove + $STD apt-get -y autoclean + msg_ok "Cleanup Completed" + else + msg_ok "No update required. ${APP} is already at ${RELEASE}" + fi + exit +} + +start +build_container +description + +msg_ok "Completed Successfully!\n" +echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" +echo -e "${INFO}${YW} Access it using the following URL:${CL}" +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}${CL}" diff --git a/install/Pf2eTools-install.sh b/install/Pf2eTools-install.sh new file mode 100644 index 00000000000..d245d34626f --- /dev/null +++ b/install/Pf2eTools-install.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 community-scripts ORG +# Author: TheRealVira +# License: MIT +# Source: https://pf2etools.com/ + +# Import Functions und Setup +source /dev/stdin <<<"$FUNCTIONS_FILE_PATH" +color +verb_ip6 +catch_errors +setting_up_container +network_check +update_os + +msg_info "Installing Dependencies" +$STD apt-get install -y \ + curl \ + mc \ + sudo \ + apache2 \ + git +msg_ok "Installed Dependencies" + +# Setup App +msg_info "Setup Pf2eTools" +RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" +unzip -q "${RELEASE}.zip" +mv "Pf2eTools-${RELEASE:1}" /opt/Pf2eTools +echo "${RELEASE}" >/opt/Pf2eTools_version.txt +msg_ok "Set up Pf2eTools" + +msg_info "Creating Service" +cat <> /etc/apache2/apache2.conf + + SetHandler server-status + Order deny,allow + Allow from all + +EOF +rm -rf /var/www/html +ln -s "/opt/Pf2eTools" /var/www/html + +chown -R www-data: "/opt/Pf2eTools" +chmod -R 755 "/opt/Pf2eTools" +apache2ctl start +msg_ok "Creating Service" +# Cleanup +msg_info "Cleaning up" +rm "${RELEASE}.zip" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize diff --git a/json/Pf2eTools.json b/json/Pf2eTools.json new file mode 100644 index 00000000000..0dbb2b4727f --- /dev/null +++ b/json/Pf2eTools.json @@ -0,0 +1,34 @@ +{ + "name": "Pf2eTools", + "slug": "Pf2eTools", + "categories": [ + 0 + ], + "date_created": "2025-01-02", + "type": "ct", + "updateable": true, + "privileged": false, + "interface_port": 80, + "documentation": "https://github.com/Pf2eToolsOrg/Pf2eTools/wiki", + "website": "https://pf2etools.com/", + "logo": "https://raw.githubusercontent.com/Pf2eToolsOrg/Pf2eTools/refs/heads/dev/android-chrome-192x192.png", + "description": "Pf2eTools is an open-source website aiming to provide tools and information for Pathfinder 2nd Edition players and gamemasters. It's built using basic web technologies to ensure wide compatibility, and utilises client-side caching for speed, efficiency, and offline access.", + "install_methods": [ + { + "type": "default", + "script": "ct/Pf2eTools.sh", + "resources": { + "cpu": 1, + "ram": 512, + "hdd": 6, + "os": "debian", + "version": "12" + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [] +} From c72eb13e747a5addb47735439eafeea0e83722ee Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:31:58 +0100 Subject: [PATCH 231/286] Update CHANGELOG.md (#1183) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02e92081048..2923514f003 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,19 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-02 + +### Changed + +### ✨ New Scripts + +- New Script: Pf2eTools [@TheRealVira](https://github.com/TheRealVira) ([#1162](https://github.com/community-scripts/ProxmoxVE/pull/1162)) +- New Script: 5etools [@TheRealVira](https://github.com/TheRealVira) ([#1157](https://github.com/community-scripts/ProxmoxVE/pull/1157)) + +### 🚀 Updated Scripts + +- Update config template in blocky-install.sh [@xFichtl1](https://github.com/xFichtl1) ([#1059](https://github.com/community-scripts/ProxmoxVE/pull/1059)) + ## 2025-01-01 ### Changed From 585f9a2404a81497465c9320d61f793189d80518 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:37:41 +0100 Subject: [PATCH 232/286] Rename Pf2eTools.sh to pf2etools.sh --- ct/{Pf2eTools.sh => pf2etools.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ct/{Pf2eTools.sh => pf2etools.sh} (100%) diff --git a/ct/Pf2eTools.sh b/ct/pf2etools.sh similarity index 100% rename from ct/Pf2eTools.sh rename to ct/pf2etools.sh From dc0cf2cb3b6bedbb9a1a97e7891dd58c5c105839 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:38:07 +0100 Subject: [PATCH 233/286] Rename Pf2eTools-install.sh to pf2etools-install.sh --- install/{Pf2eTools-install.sh => pf2etools-install.sh} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename install/{Pf2eTools-install.sh => pf2etools-install.sh} (100%) diff --git a/install/Pf2eTools-install.sh b/install/pf2etools-install.sh similarity index 100% rename from install/Pf2eTools-install.sh rename to install/pf2etools-install.sh From eacaca938dd07411f26c39251f91ce412c730f98 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:38:59 +0100 Subject: [PATCH 234/286] Update and rename Pf2eTools.json to pf2etools.json --- json/{Pf2eTools.json => pf2etools.json} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename json/{Pf2eTools.json => pf2etools.json} (96%) diff --git a/json/Pf2eTools.json b/json/pf2etools.json similarity index 96% rename from json/Pf2eTools.json rename to json/pf2etools.json index 0dbb2b4727f..d50aa5fe363 100644 --- a/json/Pf2eTools.json +++ b/json/pf2etools.json @@ -16,7 +16,7 @@ "install_methods": [ { "type": "default", - "script": "ct/Pf2eTools.sh", + "script": "ct/pf2etools.sh", "resources": { "cpu": 1, "ram": 512, From 11de586c930c2b346d60b49724459792b68dd3a1 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:57:38 +0100 Subject: [PATCH 235/286] Update pf2etools-install.sh --- install/pf2etools-install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh index d245d34626f..c7b8cfaec5f 100644 --- a/install/pf2etools-install.sh +++ b/install/pf2etools-install.sh @@ -42,11 +42,10 @@ cat <> /etc/apache2/apache2.conf EOF rm -rf /var/www/html ln -s "/opt/Pf2eTools" /var/www/html - chown -R www-data: "/opt/Pf2eTools" chmod -R 755 "/opt/Pf2eTools" -apache2ctl start -msg_ok "Creating Service" +msg_ok "Created Service" + # Cleanup msg_info "Cleaning up" rm "${RELEASE}.zip" From 3b8ff01385cc21be38033c5cd2846468fafa10a0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Thu, 2 Jan 2025 20:59:51 +0100 Subject: [PATCH 236/286] Update 5etools-install.sh --- install/5etools-install.sh | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/install/5etools-install.sh b/install/5etools-install.sh index 4254ef0c7e8..5f9da35d229 100644 --- a/install/5etools-install.sh +++ b/install/5etools-install.sh @@ -24,23 +24,23 @@ $STD apt-get install -y \ msg_ok "Installed Dependencies" # Setup App -msg_info "Set up base 5etools" +msg_info "Set up 5etools Base" RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" unzip -q "${RELEASE}.zip" mv "5etools-src-${RELEASE:1}" /opt/5etools echo "${RELEASE}" >"/opt/5etools_version.txt" rm "${RELEASE}.zip" -msg_ok "Set up base 5etools" +msg_ok "Set up 5etools Base" -msg_info "Set up 5etools images" +msg_info "Set up 5etools Image" IMG_RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-2/5etools-img/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') curl -sSL "https://github.com/5etools-mirror-2/5etools-img/archive/refs/tags/${IMG_RELEASE}.zip" > "${IMG_RELEASE}.zip" unzip -q "${IMG_RELEASE}.zip" mv "5etools-img-${IMG_RELEASE:1}" /opt/5etools/img echo "${IMG_RELEASE}" >"/opt/5etools_IMG_version.txt" rm "${IMG_RELEASE}.zip" -msg_ok "Set up 5etools images" +msg_ok "Set up 5etools Image" msg_info "Creating Service" cat <> /etc/apache2/apache2.conf @@ -52,12 +52,10 @@ cat <> /etc/apache2/apache2.conf EOF rm -rf /var/www/html ln -s "/opt/5etools" /var/www/html - chown -R www-data: "/opt/5etools" chmod -R 755 "/opt/5etools" -apache2ctl start -msg_ok "Creating Service" -# Cleanup +msg_ok "Created Service" + msg_info "Cleaning up" $STD apt-get -y autoremove $STD apt-get -y autoclean From 385b36d29e1531ae4657b0a87e1b081880e6094f Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 3 Jan 2025 18:19:49 +0100 Subject: [PATCH 237/286] Update Nextcloud-LXC JSON (#1191) * Update Nextcloud-LXC JSON * nextcloudpi.json update --- json/nextcloudpi.json | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/json/nextcloudpi.json b/json/nextcloudpi.json index ab6d3f8c83e..b1b0f09b7c8 100644 --- a/json/nextcloudpi.json +++ b/json/nextcloudpi.json @@ -41,5 +41,10 @@ "username": null, "password": null }, - "notes": [] + "notes": [ + { + "text": "Only Alpine: To get the username and password, run the script again inside the LXC shell.", + "type": "warning" + } + ] } From 487f36fec6636a81de4b7ab9de2d7f27ee6e148e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jc=20Mi=C3=B1arro?= Date: Fri, 3 Jan 2025 18:55:06 +0100 Subject: [PATCH 238/286] Keep Lubelogger data after update to a new version (#1200) --- ct/lubelogger.sh | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 3bf3e12c577..0f10b6670ab 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -42,11 +42,19 @@ function update_script() { msg_info "Updating ${APP} to v${RELEASE}" cd /opt wget -q https://github.com/hargata/lubelog/releases/download/v${RELEASE}/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip - cp /opt/lubelogger/appsettings.json /opt/appsettings.json + mkdir -p /tmp/lubeloggerData/wwwroot + cp /opt/lubelogger/appsettings.json /tmp/lubeloggerData/appsettings.json + cp -r /opt/lubelogger/config /tmp/lubeloggerData/ + cp -r /opt/lubelogger/data /tmp/lubeloggerData/ + [[ -e /opt/lubelogger/wwwroot/translations ]] && cp -r /opt/lubelogger/wwwroot/translations /tmp/lubeloggerData/wwwroot/ + [[ -e /opt/lubelogger/wwwroot/documents ]] && cp -r /opt/lubelogger/wwwroot/documents /tmp/lubeloggerData/wwwroot/ + [[ -e /opt/lubelogger/wwwroot/images ]] && cp -r /opt/lubelogger/wwwroot/images /tmp/lubeloggerData/wwwroot/ + [[ -e /opt/lubelogger/wwwroot/temp ]] && cp -r /opt/lubelogger/wwwroot/temp /tmp/lubeloggerData/wwwroot/ + [[ -e /opt/lubelogger/log ]] && cp -r /opt/lubelogger/log /tmp/lubeloggerData/ rm -rf /opt/lubelogger unzip -qq LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip -d lubelogger chmod 700 /opt/lubelogger/CarCareTracker - mv -f /opt/appsettings.json /opt/lubelogger/appsettings.json + cp -rf /tmp/lubeloggerData/* /opt/lubelogger/ echo "${RELEASE}" >"/opt/${APP}_version.txt" msg_ok "Updated ${APP} to v${RELEASE}" @@ -56,6 +64,7 @@ function update_script() { msg_info "Cleaning up" rm -rf /opt/LubeLogger_v${RELEASE_TRIMMED}_linux_x64.zip + rm -rf /tmp/lubeloggerData msg_ok "Cleaned" msg_ok "Updated Successfully" else @@ -71,4 +80,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:5000${CL}" From 6f51b0f5a285a8cb8662375454591837507b6504 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:01:40 +0100 Subject: [PATCH 239/286] Update CHANGELOG.md (#1203) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2923514f003..19b39eace0f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,18 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-03 + +### Changed + +### 🚀 Updated Scripts + +- Keep Lubelogger data after update to a new version [@JcMinarro](https://github.com/JcMinarro) ([#1200](https://github.com/community-scripts/ProxmoxVE/pull/1200)) + +### 🌐 Website + +- Update Nextcloud-LXC JSON [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1191](https://github.com/community-scripts/ProxmoxVE/pull/1191)) + ## 2025-01-02 ### Changed From ff8b060cada5cca1027c6eab2781930d59180970 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:12:25 +0100 Subject: [PATCH 240/286] Fix: Zabbix-Update Script (#1205) Temporary remove /usr/share/zabbix-* --- ct/zabbix.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/zabbix.sh b/ct/zabbix.sh index 7fba6ec8760..14cfc35790f 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -41,7 +41,7 @@ function update_script() { cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/ cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/ cp -R /usr/share/zabbix/ /opt/zabbix-backup/ - cp -R /usr/share/zabbix-* /opt/zabbix-backup/ + #cp -R /usr/share/zabbix-* /opt/zabbix-backup/ Remove temporary rm -Rf /etc/apt/sources.list.d/zabbix.list cd /tmp wget -q https://repo.zabbix.com/zabbix/7.2/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb From e165153dcb6971bb8c03b2f58d297c557e44f2d9 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:18:04 +0100 Subject: [PATCH 241/286] Fix: Memos update function (#1207) --- ct/memos.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ct/memos.sh b/ct/memos.sh index 3428b9ec40a..ed1b30ed8a3 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -34,6 +34,7 @@ function update_script() { fi msg_info "Updating $APP (Patience)" cd /opt/memos + git reset --hard HEAD output=$(git pull --no-rebase) if echo "$output" | grep -q "Already up to date."; then msg_ok "$APP is already up to date." @@ -60,4 +61,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9030${CL}" From 593669b960c43cd199f3659381da39e8243ef07e Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:19:58 +0100 Subject: [PATCH 242/286] Update CHANGELOG.md (#1206) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 19b39eace0f..8c39dcb5b3d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix: Memos update function [@MickLesk](https://github.com/MickLesk) ([#1207](https://github.com/community-scripts/ProxmoxVE/pull/1207)) +- Fix: Zabbix-Update Script [@MickLesk](https://github.com/MickLesk) ([#1205](https://github.com/community-scripts/ProxmoxVE/pull/1205)) - Keep Lubelogger data after update to a new version [@JcMinarro](https://github.com/JcMinarro) ([#1200](https://github.com/community-scripts/ProxmoxVE/pull/1200)) ### 🌐 Website From 8fd34ea27715efafd92bd9b0407b29773eb40095 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:26:17 +0100 Subject: [PATCH 243/286] Improve Homarr Installation (#1208) add make, g++, build-essentials --- install/homarr-install.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/install/homarr-install.sh b/install/homarr-install.sh index e05fc7f6f0b..8052d9179b8 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -16,11 +16,14 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y ca-certificates -$STD apt-get install -y gnupg +$STD apt-get install -y \ + sudo \ + mc \ + ca-certificates \ + gnupg \ + make \ + g++ \ + build-essentials msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" From 3a52f8dbfb2cb56d70a0325c36d4b62b7119617e Mon Sep 17 00:00:00 2001 From: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:27:35 +0100 Subject: [PATCH 244/286] Update Script: Lazylibrarian (#1190) * Update Script: LazyLibarian * Changes --- install/lazylibrarian-install.sh | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/install/lazylibrarian-install.sh b/install/lazylibrarian-install.sh index d278eb5a208..dd00bab994d 100644 --- a/install/lazylibrarian-install.sh +++ b/install/lazylibrarian-install.sh @@ -15,15 +15,21 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y git +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + git \ + libpng-dev \ + libjpeg-dev \ + libtiff-dev \ + imagemagick msg_ok "Installed Dependencies" msg_info "Installing Python3 Dependencies" -$STD apt-get install -y pip -$STD apt-get install -y python3-irc +$STD apt-get install -y \ + pip \ + python3-irc $STD pip install jaraco.stream $STD pip install python-Levenshtein $STD pip install soupsieve @@ -31,6 +37,8 @@ msg_ok "Installed Python3 Dependencies" msg_info "Installing LazyLibrarian" $STD git clone https://gitlab.com/LazyLibrarian/LazyLibrarian /opt/LazyLibrarian +cd /opt/LazyLibrarian +$STD pip install . msg_ok "Installed LazyLibrarian" msg_info "Creating Service" From 5338a6762a1383c84f8fe931ef2621b17ba2f4af Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:28:39 +0100 Subject: [PATCH 245/286] Update CHANGELOG.md (#1209) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8c39dcb5b3d..a1a3c6c0cbb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Update Script: Lazylibrarian [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1190](https://github.com/community-scripts/ProxmoxVE/pull/1190)) +- Improve Homarr Installation [@MickLesk](https://github.com/MickLesk) ([#1208](https://github.com/community-scripts/ProxmoxVE/pull/1208)) - Fix: Memos update function [@MickLesk](https://github.com/MickLesk) ([#1207](https://github.com/community-scripts/ProxmoxVE/pull/1207)) - Fix: Zabbix-Update Script [@MickLesk](https://github.com/MickLesk) ([#1205](https://github.com/community-scripts/ProxmoxVE/pull/1205)) - Keep Lubelogger data after update to a new version [@JcMinarro](https://github.com/JcMinarro) ([#1200](https://github.com/community-scripts/ProxmoxVE/pull/1200)) From 682087c6ec42beca7a1eb82da3578879b4364819 Mon Sep 17 00:00:00 2001 From: Kristo Copani <31226503+quantumryuu@users.noreply.github.com> Date: Fri, 3 Jan 2025 20:31:06 +0200 Subject: [PATCH 246/286] Github action to check metadata lines in scripts. (#1110) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Create check-metadata.yml * Update check-metadata.yml * Update check-metadata.yml * Update check-metadata.yml * Update .github/workflows/check-metadata.yml Co-authored-by: Sébastiaan * Update .github/workflows/check-metadata.yml Co-authored-by: Sébastiaan --------- Co-authored-by: Sébastiaan --- .github/workflows/check-metadata.yml | 55 ++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 .github/workflows/check-metadata.yml diff --git a/.github/workflows/check-metadata.yml b/.github/workflows/check-metadata.yml new file mode 100644 index 00000000000..67159febd9e --- /dev/null +++ b/.github/workflows/check-metadata.yml @@ -0,0 +1,55 @@ +name: Check Metadata +on: + pull_request: + paths: + - '/ct/*.sh' + - '/install/*.sh' +jobs: + check-metadata: + runs-on: ubuntu-latest + steps: + - name: Checkout Code + uses: actions/checkout@v4 + - name: Check Metadata Lines in Scripts + shell: bash + run: | + set -e + ERROR_COUNT=0 + FILES=$(find . -name "*.sh") + + for FILE in $FILES; do + if [[ "$(sed -n '3p' "$FILE")" == "# Copyright (c) 2021-2024 community-scripts ORG" ]]; then + echo "Check for Copyright metadata passed for line 3 in: $FILE" + else + echo "Error in $FILE: Copyright metadata missing or not on line 3" + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + + if sed -n '4p' "$FILE" | grep -qE "^# Author: .+"; then + echo "Check for Author metadata passed for line 4 in: $FILE" + else + echo "Error in $FILE: Author metadata missing or invalid on line 4" + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + + if [[ "$(sed -n '5p' "$FILE")" == "# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE" ]]; then + echo "Check for License metadata passed for line 5 in: $FILE" + else + echo "Error in $FILE: License metadata missing or not on line 5" + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + + if sed -n '6p' "$FILE" | grep -qE "^# Source: .+"; then + echo "Check for Source metadata passed for line 6 in: $FILE" + else + echo "Error in $FILE: Source metadata missing or invalid on line 6" + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + done + + if [[ "$ERROR_COUNT" -gt 0 ]]; then + echo "$ERROR_COUNT script(s) failed validation." + exit 1 + else + echo "All scripts passed." + fi From 036728df0d25295cb2b00932f6f09256bad010f1 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Fri, 3 Jan 2025 19:32:22 +0100 Subject: [PATCH 247/286] Update CHANGELOG.md (#1210) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a1a3c6c0cbb..9d578d8f81d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,16 +22,20 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts -- Update Script: Lazylibrarian [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1190](https://github.com/community-scripts/ProxmoxVE/pull/1190)) - Improve Homarr Installation [@MickLesk](https://github.com/MickLesk) ([#1208](https://github.com/community-scripts/ProxmoxVE/pull/1208)) -- Fix: Memos update function [@MickLesk](https://github.com/MickLesk) ([#1207](https://github.com/community-scripts/ProxmoxVE/pull/1207)) - Fix: Zabbix-Update Script [@MickLesk](https://github.com/MickLesk) ([#1205](https://github.com/community-scripts/ProxmoxVE/pull/1205)) +- Update Script: Lazylibrarian [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1190](https://github.com/community-scripts/ProxmoxVE/pull/1190)) +- Fix: Memos update function [@MickLesk](https://github.com/MickLesk) ([#1207](https://github.com/community-scripts/ProxmoxVE/pull/1207)) - Keep Lubelogger data after update to a new version [@JcMinarro](https://github.com/JcMinarro) ([#1200](https://github.com/community-scripts/ProxmoxVE/pull/1200)) ### 🌐 Website - Update Nextcloud-LXC JSON [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1191](https://github.com/community-scripts/ProxmoxVE/pull/1191)) +### 🧰 Maintenance + +- Github action to check metadata lines in scripts. [@quantumryuu](https://github.com/quantumryuu) ([#1110](https://github.com/community-scripts/ProxmoxVE/pull/1110)) + ## 2025-01-02 ### Changed From b03e223e9156f4acd3610f985ec650eb780393d8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 00:09:47 +0100 Subject: [PATCH 248/286] remove "s" in build-essential --- install/homarr-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homarr-install.sh b/install/homarr-install.sh index 8052d9179b8..79486327f2c 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -23,7 +23,7 @@ $STD apt-get install -y \ gnupg \ make \ g++ \ - build-essentials + build-essential msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" From dfa14693ee446178412f509fa8925ef6ec1b2f8c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 08:44:43 +0100 Subject: [PATCH 249/286] Bump next from 15.0.2 to 15.1.3 in /frontend (#1212) Bumps [next](https://github.com/vercel/next.js) from 15.0.2 to 15.1.3. - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/compare/v15.0.2...v15.1.3) --- updated-dependencies: - dependency-name: next dependency-type: direct:production ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- frontend/package-lock.json | 107 +++++++++++++++++-------------------- frontend/package.json | 2 +- 2 files changed, 49 insertions(+), 60 deletions(-) diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 36ec168b76e..40e82fae361 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -31,7 +31,7 @@ "fuse.js": "^7.0.0", "lucide-react": "^0.453.0", "mini-svg-data-uri": "^1.4.4", - "next": "15.0.2", + "next": "15.1.3", "next-themes": "^0.3.0", "nuqs": "^2.1.1", "pocketbase": "^0.21.4", @@ -1556,10 +1556,9 @@ } }, "node_modules/@next/env": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.0.2.tgz", - "integrity": "sha512-c0Zr0ModK5OX7D4ZV8Jt/wqoXtitLNPwUfG9zElCZztdaZyNVnN40rDXVZ/+FGuR4CcNV5AEfM6N8f+Ener7Dg==", - "license": "MIT" + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.1.3.tgz", + "integrity": "sha512-Q1tXwQCGWyA3ehMph3VO+E6xFPHDKdHFYosadt0F78EObYxPio0S09H9UGYznDe6Wc8eLKLG89GqcFJJDiK5xw==" }, "node_modules/@next/eslint-plugin-next": { "version": "15.0.2", @@ -1602,13 +1601,12 @@ } }, "node_modules/@next/swc-darwin-arm64": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.0.2.tgz", - "integrity": "sha512-GK+8w88z+AFlmt+ondytZo2xpwlfAR8U6CRwXancHImh6EdGfHMIrTSCcx5sOSBei00GyLVL0ioo1JLKTfprgg==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.1.3.tgz", + "integrity": "sha512-aZtmIh8jU89DZahXQt1La0f2EMPt/i7W+rG1sLtYJERsP7GRnNFghsciFpQcKHcGh4dUiyTB5C1X3Dde/Gw8gg==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1618,13 +1616,12 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.0.2.tgz", - "integrity": "sha512-KUpBVxIbjzFiUZhiLIpJiBoelqzQtVZbdNNsehhUn36e2YzKHphnK8eTUW1s/4aPy5kH/UTid8IuVbaOpedhpw==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.1.3.tgz", + "integrity": "sha512-aw8901rjkVBK5mbq5oV32IqkJg+CQa6aULNlN8zyCWSsePzEG3kpDkAFkkTOh3eJ0p95KbkLyWBzslQKamXsLA==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "darwin" @@ -1634,13 +1631,12 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.0.2.tgz", - "integrity": "sha512-9J7TPEcHNAZvwxXRzOtiUvwtTD+fmuY0l7RErf8Yyc7kMpE47MIQakl+3jecmkhOoIyi/Rp+ddq7j4wG6JDskQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.1.3.tgz", + "integrity": "sha512-YbdaYjyHa4fPK4GR4k2XgXV0p8vbU1SZh7vv6El4bl9N+ZSiMfbmqCuCuNU1Z4ebJMumafaz6UCC2zaJCsdzjw==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -1650,13 +1646,12 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.0.2.tgz", - "integrity": "sha512-BjH4ZSzJIoTTZRh6rG+a/Ry4SW0HlizcPorqNBixBWc3wtQtj4Sn9FnRZe22QqrPnzoaW0ctvSz4FaH4eGKMww==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.1.3.tgz", + "integrity": "sha512-qgH/aRj2xcr4BouwKG3XdqNu33SDadqbkqB6KaZZkozar857upxKakbRllpqZgWl/NDeSCBYPmUAZPBHZpbA0w==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -1666,13 +1661,12 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.0.2.tgz", - "integrity": "sha512-i3U2TcHgo26sIhcwX/Rshz6avM6nizrZPvrDVDY1bXcLH1ndjbO8zuC7RoHp0NSK7wjJMPYzm7NYL1ksSKFreA==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.1.3.tgz", + "integrity": "sha512-uzafnTFwZCPN499fNVnS2xFME8WLC9y7PLRs/yqz5lz1X/ySoxfaK2Hbz74zYUdEg+iDZPd8KlsWaw9HKkLEVw==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -1682,13 +1676,12 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.0.2.tgz", - "integrity": "sha512-AMfZfSVOIR8fa+TXlAooByEF4OB00wqnms1sJ1v+iu8ivwvtPvnkwdzzFMpsK5jA2S9oNeeQ04egIWVb4QWmtQ==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.1.3.tgz", + "integrity": "sha512-el6GUFi4SiDYnMTTlJJFMU+GHvw0UIFnffP1qhurrN1qJV3BqaSRUjkDUgVV44T6zpw1Lc6u+yn0puDKHs+Sbw==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "linux" @@ -1698,13 +1691,12 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.0.2.tgz", - "integrity": "sha512-JkXysDT0/hEY47O+Hvs8PbZAeiCQVxKfGtr4GUpNAhlG2E0Mkjibuo8ryGD29Qb5a3IOnKYNoZlh/MyKd2Nbww==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.1.3.tgz", + "integrity": "sha512-6RxKjvnvVMM89giYGI1qye9ODsBQpHSHVo8vqA8xGhmRPZHDQUE4jcDbhBwK0GnFMqBnu+XMg3nYukNkmLOLWw==", "cpu": [ "arm64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -1714,13 +1706,12 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.0.2.tgz", - "integrity": "sha512-foaUL0NqJY/dX0Pi/UcZm5zsmSk5MtP/gxx3xOPyREkMFN+CTjctPfu3QaqrQHinaKdPnMWPJDKt4VjDfTBe/Q==", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.1.3.tgz", + "integrity": "sha512-VId/f5blObG7IodwC5Grf+aYP0O8Saz1/aeU3YcWqNdIUAmFQY3VEPKPaIzfv32F/clvanOb2K2BR5DtDs6XyQ==", "cpu": [ "x64" ], - "license": "MIT", "optional": true, "os": [ "win32" @@ -3024,12 +3015,11 @@ "license": "Apache-2.0" }, "node_modules/@swc/helpers": { - "version": "0.5.13", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.13.tgz", - "integrity": "sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==", - "license": "Apache-2.0", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", "dependencies": { - "tslib": "^2.4.0" + "tslib": "^2.8.0" } }, "node_modules/@testing-library/dom": { @@ -7104,14 +7094,13 @@ "license": "MIT" }, "node_modules/next": { - "version": "15.0.2", - "resolved": "https://registry.npmjs.org/next/-/next-15.0.2.tgz", - "integrity": "sha512-rxIWHcAu4gGSDmwsELXacqAPUk+j8dV/A9cDF5fsiCMpkBDYkO2AEaL1dfD+nNmDiU6QMCFN8Q30VEKapT9UHQ==", - "license": "MIT", + "version": "15.1.3", + "resolved": "https://registry.npmjs.org/next/-/next-15.1.3.tgz", + "integrity": "sha512-5igmb8N8AEhWDYzogcJvtcRDU6n4cMGtBklxKD4biYv4LXN8+awc/bbQ2IM2NQHdVPgJ6XumYXfo3hBtErg1DA==", "dependencies": { - "@next/env": "15.0.2", + "@next/env": "15.1.3", "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.13", + "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", @@ -7121,25 +7110,25 @@ "next": "dist/bin/next" }, "engines": { - "node": ">=18.18.0" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "15.0.2", - "@next/swc-darwin-x64": "15.0.2", - "@next/swc-linux-arm64-gnu": "15.0.2", - "@next/swc-linux-arm64-musl": "15.0.2", - "@next/swc-linux-x64-gnu": "15.0.2", - "@next/swc-linux-x64-musl": "15.0.2", - "@next/swc-win32-arm64-msvc": "15.0.2", - "@next/swc-win32-x64-msvc": "15.0.2", + "@next/swc-darwin-arm64": "15.1.3", + "@next/swc-darwin-x64": "15.1.3", + "@next/swc-linux-arm64-gnu": "15.1.3", + "@next/swc-linux-arm64-musl": "15.1.3", + "@next/swc-linux-x64-gnu": "15.1.3", + "@next/swc-linux-x64-musl": "15.1.3", + "@next/swc-win32-arm64-msvc": "15.1.3", + "@next/swc-win32-x64-msvc": "15.1.3", "sharp": "^0.33.5" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-02c0e824-20241028", - "react-dom": "^18.2.0 || 19.0.0-rc-02c0e824-20241028", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "peerDependenciesMeta": { diff --git a/frontend/package.json b/frontend/package.json index 174b34e5cee..2309f43c532 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -42,7 +42,7 @@ "fuse.js": "^7.0.0", "lucide-react": "^0.453.0", "mini-svg-data-uri": "^1.4.4", - "next": "15.0.2", + "next": "15.1.3", "next-themes": "^0.3.0", "nuqs": "^2.1.1", "pocketbase": "^0.21.4", From 536de5d0838e961b1d97f49819444912806e478b Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 08:58:40 +0100 Subject: [PATCH 250/286] Update CHANGELOG.md (#1220) --- CHANGELOG.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9d578d8f81d..5a4d4e7cba0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,14 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-04 + +### Changed + +### 🌐 Website + +- Bump next from 15.0.2 to 15.1.3 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#1212](https://github.com/community-scripts/ProxmoxVE/pull/1212)) + ## 2025-01-03 ### Changed From a5adf44f39daad24904b5066648ba91b6cc938a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johanna=20R=C3=BChrig?= Date: Sat, 4 Jan 2025 10:59:35 +0100 Subject: [PATCH 251/286] Pf2eTools & 5eTools: Fixing npm build (#1213) * Fixing #1195 * Fixing also for 5etools. * Update 5etools.sh * Update pf2etools.sh * Update 5etools-install.sh * Update pf2etools-install.sh * Update 5etools-install.sh * Update pf2etools-install.sh * remove pnpm * remove pnpm --------- Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com> --- ct/5etools.sh | 4 ++++ ct/pf2etools.sh | 4 ++++ install/5etools-install.sh | 15 +++++++++++++++ install/pf2etools-install.sh | 15 +++++++++++++++ 4 files changed, 38 insertions(+) diff --git a/ct/5etools.sh b/ct/5etools.sh index b0a40cf82a9..135119f9319 100644 --- a/ct/5etools.sh +++ b/ct/5etools.sh @@ -51,6 +51,10 @@ function update_script() { rm -rf "/opt/${APP}" mv "${APP}-src-${RELEASE:1}" "/opt/${APP}" mv "/opt/img-backup" "/opt/${APP}/img" + cd /opt/5etools + $STD npm install + $STD npm run build + cd ~ echo "${RELEASE}" >"/opt/${APP}_version.txt" msg_ok "Updated base 5etools" diff --git a/ct/pf2etools.sh b/ct/pf2etools.sh index 43d693c8700..ef617afd227 100644 --- a/ct/pf2etools.sh +++ b/ct/pf2etools.sh @@ -50,6 +50,10 @@ function update_script() { unzip -q "${RELEASE}.zip" rm -rf "/opt/${APP}" mv "${APP}-${RELEASE:1}" "/opt/${APP}" + cd /opt/Pf2eTools + $STD npm install + $STD npm run build + cd ~ echo "${RELEASE}" >"/opt/${APP}_version.txt" msg_ok "Updated ${APP}" diff --git a/install/5etools-install.sh b/install/5etools-install.sh index 5f9da35d229..48a2efa8255 100644 --- a/install/5etools-install.sh +++ b/install/5etools-install.sh @@ -23,12 +23,27 @@ $STD apt-get install -y \ apache2 msg_ok "Installed Dependencies" +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + # Setup App msg_info "Set up 5etools Base" RELEASE=$(curl -s https://api.github.com/repos/5etools-mirror-3/5etools-src/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" unzip -q "${RELEASE}.zip" mv "5etools-src-${RELEASE:1}" /opt/5etools +cd /opt/5etools +$STD npm install +$STD npm run build +cd ~ echo "${RELEASE}" >"/opt/5etools_version.txt" rm "${RELEASE}.zip" msg_ok "Set up 5etools Base" diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh index c7b8cfaec5f..1413ea87dbd 100644 --- a/install/pf2etools-install.sh +++ b/install/pf2etools-install.sh @@ -23,12 +23,27 @@ $STD apt-get install -y \ git msg_ok "Installed Dependencies" +msg_info "Setting up Node.js Repository" +mkdir -p /etc/apt/keyrings +curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +msg_ok "Set up Node.js Repository" + +msg_info "Installing Node.js" +$STD apt-get update +$STD apt-get install -y nodejs +msg_ok "Installed Node.js" + # Setup App msg_info "Setup Pf2eTools" RELEASE=$(curl -s https://api.github.com/repos/Pf2eToolsOrg/Pf2eTools/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/Pf2eToolsOrg/Pf2eTools/archive/refs/tags/${RELEASE}.zip" unzip -q "${RELEASE}.zip" mv "Pf2eTools-${RELEASE:1}" /opt/Pf2eTools +cd /opt/Pf2eTools +$STD npm install +$STD npm run build +cd ~ echo "${RELEASE}" >/opt/Pf2eTools_version.txt msg_ok "Set up Pf2eTools" From 9f2ae06726214d9ff9f08394a5ee2fb597a8079b Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 11:03:58 +0100 Subject: [PATCH 252/286] Onedev: Add git-lfs (#1225) --- install/onedev-install.sh | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/install/onedev-install.sh b/install/onedev-install.sh index 32ad3f0232a..86d74e5caed 100644 --- a/install/onedev-install.sh +++ b/install/onedev-install.sh @@ -19,7 +19,8 @@ $STD apt-get install -y \ mc \ sudo \ default-jdk \ - git + git \ + git-lfs msg_ok "Installed Dependencies" @@ -41,4 +42,4 @@ msg_info "Cleaning up" rm -rf /opt/onedev-latest.tar.gz $STD apt-get -y autoremove $STD apt-get -y autoclean -msg_ok "Cleaned" \ No newline at end of file +msg_ok "Cleaned" From 9fd4a13a8ad624e35e45f0bb91a67cc8e73bd7c4 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 11:15:14 +0100 Subject: [PATCH 253/286] Fix: Update Python for HomeAssistant (#1227) * Python Check: HA-Core * Update Python to 3.13.X * Update homeassistant-core.sh --- ct/homeassistant-core.sh | 4 +++- install/homeassistant-core-install.sh | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index 265e16694f6..f54bf4fdcdc 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -51,7 +51,9 @@ function update_script() { echo -e "${GN}Updating to Stable Version${CL}" BR="" fi - if [[ "$PY" == "python3.11" ]]; then echo -e "⚠️ Home Assistant will soon require Python 3.12."; fi + if [[ "$PY" =~ ^python3\.(11|12)\.[0-9]+$ ]]; then + echo -e "⚠️ Home Assistant will soon require Python 3.13.x"; + fi msg_info "Stopping Home Assistant" systemctl stop homeassistant diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 2116342784f..07df06ca8a1 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -14,7 +14,7 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y git curl sudo mc bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libturbojpeg0-dev ffmpeg liblapack3 liblapack-dev dbus-broker libpcap-dev libavdevice-dev libavformat-dev libavcodec-dev libavutil-dev libavfilter-dev libmariadb-dev-compat libatlas-base-dev pip python3.12-dev +$STD apt-get install -y git curl sudo mc bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libturbojpeg0-dev ffmpeg liblapack3 liblapack-dev dbus-broker libpcap-dev libavdevice-dev libavformat-dev libavcodec-dev libavutil-dev libavfilter-dev libmariadb-dev-compat libatlas-base-dev pip python3.13-dev msg_ok "Installed Dependencies" msg_info "Installing UV" From 8a35df4f59e717bc1a212a04dfd377ca80b5c545 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 11:27:58 +0100 Subject: [PATCH 254/286] Update CHANGELOG.md (#1224) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5a4d4e7cba0..0ee48bcdfe9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,12 @@ Do not break established syntax in this file, as it is automatically updated by ### Changed +### 🚀 Updated Scripts + +- Fix: Update Python for HomeAssistant [@MickLesk](https://github.com/MickLesk) ([#1227](https://github.com/community-scripts/ProxmoxVE/pull/1227)) +- OneDev: Add git-lfs [@MickLesk](https://github.com/MickLesk) ([#1225](https://github.com/community-scripts/ProxmoxVE/pull/1225)) +- Pf2eTools & 5eTools: Fixing npm build [@TheRealVira](https://github.com/TheRealVira) ([#1213](https://github.com/community-scripts/ProxmoxVE/pull/1213)) + ### 🌐 Website - Bump next from 15.0.2 to 15.1.3 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#1212](https://github.com/community-scripts/ProxmoxVE/pull/1212)) From eee58b43db4f1651cc285cd745b328a28afedb71 Mon Sep 17 00:00:00 2001 From: Kristo Copani <31226503+quantumryuu@users.noreply.github.com> Date: Sat, 4 Jan 2025 13:51:34 +0200 Subject: [PATCH 255/286] [GitHub Action] Add filename case check (#1228) --- .github/workflows/check-lowercase.yml | 92 +++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 .github/workflows/check-lowercase.yml diff --git a/.github/workflows/check-lowercase.yml b/.github/workflows/check-lowercase.yml new file mode 100644 index 00000000000..b570204bd28 --- /dev/null +++ b/.github/workflows/check-lowercase.yml @@ -0,0 +1,92 @@ +name: Check Lowercase Filenames + +on: + pull_request: + paths: + - 'ct/*.sh' + - 'install/*.sh' + - 'json/*.json' + +jobs: + check_lowercase: + runs-on: ubuntu-latest + + steps: + # Step 1: Checkout the code + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 # Ensure the full history is fetched for accurate diffing + + # Step 2: Fetch the base branch + - name: Fetch base branch + run: git fetch origin ${{ github.base_ref }} + + # Step 3a: Validate filenames in ct directory + - name: "Validate filenames in ct directory" + run: | + changed_files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -E '^ct/.*\.sh$') + + ERROR_COUNT=0 + + for FILE in $changed_files; do + BASENAME=$(basename "$FILE") + if [[ "$BASENAME" =~ ^[a-z0-9._-]+$ ]]; then + echo "$FILE: Check for lowercase in filename passed." + else + echo "Error in $FILE. Change filename to lowercase." + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + done + + if [ "$ERROR_COUNT" -ne 0 ]; then + exit 1 + else + echo "All filenames in ct directory passed the lowercase check." + fi + + # Step 3b: Validate filenames in install directory + - name: "Validate filenames in install directory" + run: | + changed_files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -E '^install/.*\.sh$') + + ERROR_COUNT=0 + + for FILE in $changed_files; do + BASENAME=$(basename "$FILE") + if [[ "$BASENAME" =~ ^[a-z0-9._-]+$ ]]; then + echo "$FILE: Check for lowercase in filename passed." + else + echo "Error in $FILE. Change filename to lowercase." + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + done + + if [ "$ERROR_COUNT" -ne 0 ]; then + exit 1 + else + echo "All filenames in install directory passed the lowercase check." + fi + + # Step 3c: Validate filenames in json directory + - name: "Validate filenames in json directory." + run: | + changed_files=$(git diff --name-only origin/${{ github.base_ref }}...HEAD | grep -E '^json/.*\.json$') + + ERROR_COUNT=0 + + for FILE in $changed_files; do + BASENAME=$(basename "$FILE") + if [[ "$BASENAME" =~ ^[a-z0-9._-]+$ ]]; then + echo "$FILE: Check for lowercase in filename passed." + else + echo "Error in $FILE. Change filename to lowercase." + ERROR_COUNT=$((ERROR_COUNT + 1)) + fi + done + + if [ "$ERROR_COUNT" -ne 0 ]; then + exit 1 + else + echo "All filenames in json directory passed the lowercase check." + fi From 71c04d9e12cfd40b2592bc22635b7457ed8d9216 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 12:57:29 +0100 Subject: [PATCH 256/286] Update CHANGELOG.md (#1229) --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ee48bcdfe9..ca275acd217 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -30,6 +30,10 @@ Do not break established syntax in this file, as it is automatically updated by - Bump next from 15.0.2 to 15.1.3 in /frontend [@dependabot[bot]](https://github.com/dependabot[bot]) ([#1212](https://github.com/community-scripts/ProxmoxVE/pull/1212)) +### 🧰 Maintenance + +- [GitHub Action] Add filename case check [@quantumryuu](https://github.com/quantumryuu) ([#1228](https://github.com/community-scripts/ProxmoxVE/pull/1228)) + ## 2025-01-03 ### Changed From 67cdc35d02708ee50d0b349f52ebedd0fbe4d58c Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:14:16 +0100 Subject: [PATCH 257/286] Homeassistan Core: Fix Python3 and add missing dependencies (#1236) --- install/homeassistant-core-install.sh | 41 ++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 07df06ca8a1..f10e230968e 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -14,9 +14,48 @@ network_check update_os msg_info "Installing Dependencies (Patience)" -$STD apt-get install -y git curl sudo mc bluez libffi-dev libssl-dev libjpeg-dev zlib1g-dev autoconf build-essential libopenjp2-7 libturbojpeg0-dev ffmpeg liblapack3 liblapack-dev dbus-broker libpcap-dev libavdevice-dev libavformat-dev libavcodec-dev libavutil-dev libavfilter-dev libmariadb-dev-compat libatlas-base-dev pip python3.13-dev +$STD apt-get install -y \ + git \ + curl \ + sudo \ + mc \ + bluez \ + libtiff \ + tzdata \ + libffi-dev \ + libssl-dev \ + libjpeg-dev \ + zlib1g-dev \ + autoconf \ + build-essential \ + libopenjp2-7 \ + libturbojpeg0-dev \ + ffmpeg \ + liblapack3 \ + liblapack-dev \ + dbus-broker \ + libpcap-dev \ + libavdevice-dev \ + libavformat-dev \ + libavcodec-dev \ + libavutil-dev \ + libavfilter-dev \ + libmariadb-dev-compat \ + libatlas-base-dev + msg_ok "Installed Dependencies" +msg_info "Setup Python3" +curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x6A755776 | sudo gpg --dearmor -o /usr/share/keyrings/deadsnakes-archive.gpg +echo "deb [signed-by=/usr/share/keyrings/deadsnakes-archive.gpg] http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/deadsnakes-ppa.list +$STD apt-get update +$STD apt get install -y \ + python3 \ + python3-pip \ + python3-dev \ + python3-venv +msg_ok "Setup Python3 + msg_info "Installing UV" $STD pip install uv msg_ok "Installed UV" From 5967a7f496b4c35659fdb4a6e0aa3bd45c79a2b8 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:17:19 +0100 Subject: [PATCH 258/286] Homar: Fix missing curl dependency (#1238) --- install/homarr-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/homarr-install.sh b/install/homarr-install.sh index 79486327f2c..410ba8aeb07 100644 --- a/install/homarr-install.sh +++ b/install/homarr-install.sh @@ -19,6 +19,7 @@ msg_info "Installing Dependencies" $STD apt-get install -y \ sudo \ mc \ + curl \ ca-certificates \ gnupg \ make \ From 38f4a98e4f86ff9bee52d16ea2d3d7061b5d6bbd Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:19:45 +0100 Subject: [PATCH 259/286] Update CHANGELOG.md (#1237) --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ca275acd217..63b6469fc41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,8 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Homarr: Fix missing curl dependency [@MickLesk](https://github.com/MickLesk) ([#1238](https://github.com/community-scripts/ProxmoxVE/pull/1238)) +- Homeassistan Core: Fix Python3 and add missing dependencies [@MickLesk](https://github.com/MickLesk) ([#1236](https://github.com/community-scripts/ProxmoxVE/pull/1236)) - Fix: Update Python for HomeAssistant [@MickLesk](https://github.com/MickLesk) ([#1227](https://github.com/community-scripts/ProxmoxVE/pull/1227)) - OneDev: Add git-lfs [@MickLesk](https://github.com/MickLesk) ([#1225](https://github.com/community-scripts/ProxmoxVE/pull/1225)) - Pf2eTools & 5eTools: Fixing npm build [@TheRealVira](https://github.com/TheRealVira) ([#1213](https://github.com/community-scripts/ProxmoxVE/pull/1213)) From 6f557aa394cc4d75f3e266dc1084e40005086f39 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:25:15 +0100 Subject: [PATCH 260/286] Update homeassistant-core-install.sh --- install/homeassistant-core-install.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index f10e230968e..34d8f709973 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -15,8 +15,8 @@ update_os msg_info "Installing Dependencies (Patience)" $STD apt-get install -y \ - git \ - curl \ + curl \ + git \ sudo \ mc \ bluez \ @@ -42,7 +42,6 @@ $STD apt-get install -y \ libavfilter-dev \ libmariadb-dev-compat \ libatlas-base-dev - msg_ok "Installed Dependencies" msg_info "Setup Python3" From e3299a67ece36f03ea2cde2deda6160feced3740 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:39:43 +0100 Subject: [PATCH 261/286] add missing " --- install/homeassistant-core-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 34d8f709973..e960a2d6d2e 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -53,7 +53,7 @@ $STD apt get install -y \ python3-pip \ python3-dev \ python3-venv -msg_ok "Setup Python3 +msg_ok "Setup Python3" msg_info "Installing UV" $STD pip install uv From 982a19cf284f6080e9f1a110e59072c0037f32b4 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:41:00 +0100 Subject: [PATCH 262/286] fix space in apt-get --- install/homeassistant-core-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index e960a2d6d2e..7350495aa2d 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -25,7 +25,7 @@ $STD apt-get install -y \ libffi-dev \ libssl-dev \ libjpeg-dev \ - zlib1g-dev \ + zlib1g-dev \ autoconf \ build-essential \ libopenjp2-7 \ From 603546904776ca8990bcf3a4ea501f62f3361020 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 18:45:50 +0100 Subject: [PATCH 263/286] idention From a99bdb9e97edfc7eca662cbac993adec919a22d0 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:04:23 +0100 Subject: [PATCH 264/286] Update homeassistant-core-install.sh From 84b15641fb4f6bab75407bc4edf6d0c30b639d61 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:05:46 +0100 Subject: [PATCH 265/286] fix libtiff6 --- install/homeassistant-core-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 7350495aa2d..8b039f21111 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -20,7 +20,7 @@ $STD apt-get install -y \ sudo \ mc \ bluez \ - libtiff \ + libtiff6 \ tzdata \ libffi-dev \ libssl-dev \ From 859f3dffc3ae065c487379049b6771986a154271 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:14:54 +0100 Subject: [PATCH 266/286] Update homeassistant-core-install.sh --- install/homeassistant-core-install.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 8b039f21111..2515b0264a8 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -19,6 +19,8 @@ $STD apt-get install -y \ git \ sudo \ mc \ + gnupg \ + ca-certificates \ bluez \ libtiff6 \ tzdata \ From ba97af3b9f8773e2bdd040b9f80caf204ce6c8eb Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:29:24 +0100 Subject: [PATCH 267/286] Fix Deadsnake Repository --- install/homeassistant-core-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 2515b0264a8..a7c36f5972e 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -47,7 +47,7 @@ $STD apt-get install -y \ msg_ok "Installed Dependencies" msg_info "Setup Python3" -curl -fsSL https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x6A755776 | sudo gpg --dearmor -o /usr/share/keyrings/deadsnakes-archive.gpg +curl -fsSL https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/dists/focal/Release.gpg | gpg --dearmor -o /usr/share/keyrings/deadsnakes-archive.gpg echo "deb [signed-by=/usr/share/keyrings/deadsnakes-archive.gpg] http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/deadsnakes-ppa.list $STD apt-get update $STD apt get install -y \ From a1fe451fe248d5bb3286ef03932fb1f8e560acfa Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:33:48 +0100 Subject: [PATCH 268/286] Fix gpg key pf2tools & 5etools (#1242) * Update pf2etools-install.sh * Fix GPG 5F --- install/5etools-install.sh | 2 ++ install/pf2etools-install.sh | 2 ++ 2 files changed, 4 insertions(+) diff --git a/install/5etools-install.sh b/install/5etools-install.sh index 48a2efa8255..c1a3cd946b4 100644 --- a/install/5etools-install.sh +++ b/install/5etools-install.sh @@ -20,6 +20,8 @@ $STD apt-get install -y \ mc \ sudo \ git \ + gpg \ + ca-certificates \ apache2 msg_ok "Installed Dependencies" diff --git a/install/pf2etools-install.sh b/install/pf2etools-install.sh index 1413ea87dbd..fda5e8f053c 100644 --- a/install/pf2etools-install.sh +++ b/install/pf2etools-install.sh @@ -20,6 +20,8 @@ $STD apt-get install -y \ mc \ sudo \ apache2 \ + gpg \ + ca-certificates \ git msg_ok "Installed Dependencies" From 32572c60722daae1bb735962a0ae0d861563e346 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:34:55 +0100 Subject: [PATCH 269/286] Update CHANGELOG.md (#1243) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 63b6469fc41..8010f6db620 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix gpg key pf2tools & 5etools [@MickLesk](https://github.com/MickLesk) ([#1242](https://github.com/community-scripts/ProxmoxVE/pull/1242)) - Homarr: Fix missing curl dependency [@MickLesk](https://github.com/MickLesk) ([#1238](https://github.com/community-scripts/ProxmoxVE/pull/1238)) - Homeassistan Core: Fix Python3 and add missing dependencies [@MickLesk](https://github.com/MickLesk) ([#1236](https://github.com/community-scripts/ProxmoxVE/pull/1236)) - Fix: Update Python for HomeAssistant [@MickLesk](https://github.com/MickLesk) ([#1227](https://github.com/community-scripts/ProxmoxVE/pull/1227)) From 9cc4bda762e847a24bb7a37496dc5f3e71db6967 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 19:49:26 +0100 Subject: [PATCH 270/286] Update homeassistant-core-install.sh --- install/homeassistant-core-install.sh | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index a7c36f5972e..09dfa93cc2f 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -43,18 +43,18 @@ $STD apt-get install -y \ libavutil-dev \ libavfilter-dev \ libmariadb-dev-compat \ - libatlas-base-dev + libatlas-base-dev \ + software-properties-common msg_ok "Installed Dependencies" msg_info "Setup Python3" -curl -fsSL https://ppa.launchpadcontent.net/deadsnakes/ppa/ubuntu/dists/focal/Release.gpg | gpg --dearmor -o /usr/share/keyrings/deadsnakes-archive.gpg -echo "deb [signed-by=/usr/share/keyrings/deadsnakes-archive.gpg] http://ppa.launchpad.net/deadsnakes/ppa/ubuntu focal main" | sudo tee /etc/apt/sources.list.d/deadsnakes-ppa.list +$STD add-apt-repository ppa:deadsnakes/ppa $STD apt-get update -$STD apt get install -y \ - python3 \ +$STD apt-get install -y \ + python3.13-* \ python3-pip \ - python3-dev \ - python3-venv + python3.13-dev \ + python3.13-venv msg_ok "Setup Python3" msg_info "Installing UV" From e191b941514d5db9e8b1e90ab82d18d41a284c82 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:00:57 +0100 Subject: [PATCH 271/286] Update homeassistant-core-install.sh --- install/homeassistant-core-install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 09dfa93cc2f..e5cca687357 100644 --- a/install/homeassistant-core-install.sh +++ b/install/homeassistant-core-install.sh @@ -48,7 +48,7 @@ $STD apt-get install -y \ msg_ok "Installed Dependencies" msg_info "Setup Python3" -$STD add-apt-repository ppa:deadsnakes/ppa +$STD add-apt-repository -y ppa:deadsnakes/ppa $STD apt-get update $STD apt-get install -y \ python3.13-* \ From 314f932764b691ec4bcb0962bf6e1d8b8f62babd Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:10:03 +0100 Subject: [PATCH 272/286] Update pf2etools.sh --- ct/pf2etools.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/pf2etools.sh b/ct/pf2etools.sh index ef617afd227..4d2205e869c 100644 --- a/ct/pf2etools.sh +++ b/ct/pf2etools.sh @@ -62,7 +62,7 @@ function update_script() { # Cleaning up msg_info "Cleaning Up" - rm "${RELEASE}.zip" + rm -rf /opt/${APP}/${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleanup Completed" From d3d6ec8b209a112c002935ca4fbee075553fdef5 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sat, 4 Jan 2025 20:11:24 +0100 Subject: [PATCH 273/286] Update 5etools.sh --- ct/5etools.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ct/5etools.sh b/ct/5etools.sh index 135119f9319..b0a0df27bcc 100644 --- a/ct/5etools.sh +++ b/ct/5etools.sh @@ -45,6 +45,7 @@ function update_script() { # Execute Update msg_info "Updating base 5etools" + cd /opt wget -q "https://github.com/5etools-mirror-3/5etools-src/archive/refs/tags/${RELEASE}.zip" unzip -q "${RELEASE}.zip" mv "/opt/${APP}/img" "/opt/img-backup" @@ -93,7 +94,8 @@ function update_script() { # Cleaning up msg_info "Cleaning Up" - rm "${IMG_RELEASE}.zip" + rm -rf /opt/${RELEASE}.zip + rm -rf ${IMG_RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleanup Completed" From d827d42968da9da61a4c0ed266580b004061e351 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:02:27 +0100 Subject: [PATCH 274/286] [Breaking] Update Zigbee2mqtt to v.2.0.0 (Read PR Description) (#1221) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix Zigbee2MQTT BreakingChange to Version 2.0.0 * Update zigbee2mqtt.sh * Fix Installation Zigbee2Mqtt 2.0.0 * Fix Zigbee2MQTT V.2.0.0 * Update zigbee2mqtt-install.sh * update script * Update install/zigbee2mqtt-install.sh Co-authored-by: Sébastiaan * add pnpm build * add pnpm build * update nodejs * Update ct/zigbee2mqtt.sh Co-authored-by: Sébastiaan --------- Co-authored-by: Sébastiaan --- ct/zigbee2mqtt.sh | 114 +++++++++------------------------ install/zigbee2mqtt-install.sh | 49 ++++++++------ 2 files changed, 59 insertions(+), 104 deletions(-) diff --git a/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 04f4646db62..591e19bb762 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.sh @@ -32,91 +32,35 @@ function update_script() { msg_error "No ${APP} Installation Found!" exit fi - if [[ "$(node -v | cut -d 'v' -f 2)" == "18."* ]]; then - if ! command -v npm >/dev/null 2>&1; then - echo "Installing NPM..." - apt-get install -y npm >/dev/null 2>&1 - echo "Installed NPM..." - fi + RELEASE=$(curl -s https://api.github.com/repos/Koenkk/zigbee2mqtt/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') + if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then + msg_info "Stopping Service" + systemctl stop zigbee2mqtt + msg_ok "Stopped Service" + + msg_info "Creating Backup" + mkdir -p /opt/z2m_backup + tar -czf /opt/z2m_backup/${APP}_backup_$(date +%Y%m%d%H%M%S).tar.gz -C /opt zigbee2mqtt &>/dev/null + mv /opt/zigbee2mqtt/data /opt/z2m_backup + msg_ok "Backup Created" + + msg_info "Updating ${APP} to v${RELEASE}" + cd /opt + wget -q "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" + unzip -q ${RELEASE}.zip + mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt + rm -rf /opt/zigbee2mqtt/data + mv /opt/z2m_backup/data /opt/zigbee2mqtt + cd /opt/zigbee2mqtt + pnpm install --frozen-lockfile &>/dev/null + pnpm build &>/dev/null + msg_info "Starting Service" + systemctl start zigbee2mqtt + msg_ok "Started Service" + echo "${RELEASE}" >/opt/${APP}_version.txt + else + msg_ok "No update required. ${APP} is already at v${RELEASE}." fi - cd /opt/zigbee2mqtt - - stop_zigbee2mqtt() { - if which systemctl 2>/dev/null >/dev/null; then - echo "Shutting down Zigbee2MQTT..." - sudo systemctl stop zigbee2mqtt - else - echo "Skipped stopping Zigbee2MQTT, no systemctl found" - fi - } - - start_zigbee2mqtt() { - if which systemctl 2>/dev/null >/dev/null; then - echo "Starting Zigbee2MQTT..." - sudo systemctl start zigbee2mqtt - else - echo "Skipped starting Zigbee2MQTT, no systemctl found" - fi - } - - set -e - - if [ -d data-backup ]; then - echo "ERROR: Backup directory exists. May be previous restoring was failed?" - echo "1. Save 'data-backup' and 'data' dirs to safe location to make possibility to restore config later." - echo "2. Manually delete 'data-backup' dir and try again." - exit 1 - fi - - stop_zigbee2mqtt - - echo "Generating a backup of the configuration..." - cp -R data data-backup || { - echo "Failed to create backup." - exit 1 - } - - echo "Checking if any changes were made to package-lock.json..." - git checkout package-lock.json || { - echo "Failed to check package-lock.json." - exit 1 - } - - echo "Initiating update..." - if ! git pull; then - echo "Update failed, temporarily storing changes and trying again." - git stash && git pull || ( - echo "Update failed even after storing changes. Aborting." - exit 1 - ) - fi - - echo "Acquiring necessary components..." - npm ci || { - echo "Failed to install necessary components." - exit 1 - } - - echo "Building..." - npm run build || { - echo "Failed to build new version." - exit 1 - } - - echo "Restoring configuration..." - cp -R data-backup/* data || { - echo "Failed to restore configuration." - exit 1 - } - - rm -rf data-backup || { - echo "Failed to remove backup directory." - exit 1 - } - - start_zigbee2mqtt - - echo "Done!" exit } @@ -127,4 +71,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9442${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:9442${CL}" diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index 516fc3b0338..bb012e99ed3 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -14,21 +14,22 @@ network_check update_os msg_info "Installing Dependencies" -$STD apt-get install -y curl -$STD apt-get install -y sudo -$STD apt-get install -y mc -$STD apt-get install -y git -$STD apt-get install -y make -$STD apt-get install -y g++ -$STD apt-get install -y gcc -$STD apt-get install -y ca-certificates -$STD apt-get install -y gnupg +$STD apt-get install -y \ + curl \ + sudo \ + mc \ + git \ + make \ + g++ \ + gcc \ + ca-certificates \ + gnupg msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" mkdir -p /etc/apt/keyrings curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg -echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list +echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_22.x nodistro main" >/etc/apt/sources.list.d/nodesource.list msg_ok "Set up Node.js Repository" msg_info "Installing Node.js" @@ -36,37 +37,47 @@ $STD apt-get update $STD apt-get install -y nodejs msg_ok "Installed Node.js" -msg_info "Setting up Zigbee2MQTT Repository" -$STD git clone --depth 1 https://github.com/Koenkk/zigbee2mqtt.git /opt/zigbee2mqtt -msg_ok "Set up Zigbee2MQTT Repository" +msg_info "Installing pnpm" +$STD npm install -g pnpm +msg_ok "Installed pnpm" -msg_info "Installing Zigbee2MQTT" +msg_info "Setting up Zigbee2MQTT" +cd /opt +$STD corepack enable +RELEASE=$(curl -s https://api.github.com/repos/Koenkk/zigbee2mqtt/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') +wget -q "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" +unzip -q ${RELEASE}.zip +mv zigbee2mqtt-${RELEASE} /opt/zigbee2mqtt +cd /opt/zigbee2mqtt/data +mv configuration.example.yaml configuration.yaml cd /opt/zigbee2mqtt -$STD npm ci +$STD pnpm install --frozen-lockfile +$STD pnpm build msg_ok "Installed Zigbee2MQTT" msg_info "Creating Service" -service_path="/etc/systemd/system/zigbee2mqtt.service" +cat </etc/systemd/system/zigbee2mqtt.service echo "[Unit] Description=zigbee2mqtt After=network.target [Service] Environment=NODE_ENV=production -ExecStart=/usr/bin/npm start +ExecStart=/usr/bin/pnpm start WorkingDirectory=/opt/zigbee2mqtt StandardOutput=inherit StandardError=inherit Restart=always User=root [Install] -WantedBy=multi-user.target" >$service_path -$STD systemctl enable zigbee2mqtt.service +EOF +systemctl enable -q --now zigbee2mqtt.service msg_ok "Created Service" motd_ssh customize msg_info "Cleaning up" +rm -rf /opt/${RELEASE}.zip $STD apt-get -y autoremove $STD apt-get -y autoclean msg_ok "Cleaned" From 0e84eba9d2869d70d800576dd48da637bd2dbbf6 Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:57:35 +0100 Subject: [PATCH 275/286] Update zigbee2mqtt-install.sh --- install/zigbee2mqtt-install.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index bb012e99ed3..f35316ba0d8 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -43,7 +43,6 @@ msg_ok "Installed pnpm" msg_info "Setting up Zigbee2MQTT" cd /opt -$STD corepack enable RELEASE=$(curl -s https://api.github.com/repos/Koenkk/zigbee2mqtt/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }') wget -q "https://github.com/Koenkk/zigbee2mqtt/archive/refs/tags/${RELEASE}.zip" unzip -q ${RELEASE}.zip @@ -57,7 +56,7 @@ msg_ok "Installed Zigbee2MQTT" msg_info "Creating Service" cat </etc/systemd/system/zigbee2mqtt.service -echo "[Unit] +[Unit] Description=zigbee2mqtt After=network.target [Service] From abfd5e086df2a763fb64a639e2fc7824dd5ba36f Mon Sep 17 00:00:00 2001 From: CanbiZ <47820557+MickLesk@users.noreply.github.com> Date: Sun, 5 Jan 2025 18:00:24 +0100 Subject: [PATCH 276/286] Update zigbee2mqtt-install.sh --- install/zigbee2mqtt-install.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index f35316ba0d8..faf08b577b1 100644 --- a/install/zigbee2mqtt-install.sh +++ b/install/zigbee2mqtt-install.sh @@ -68,6 +68,7 @@ StandardError=inherit Restart=always User=root [Install] +WantedBy=multi-user.target EOF systemctl enable -q --now zigbee2mqtt.service msg_ok "Created Service" From 81ffa34497a0d1de4a6f4140cb53b86046102f4b Mon Sep 17 00:00:00 2001 From: oOStroudyOo <111181956+oOStroudyOo@users.noreply.github.com> Date: Sun, 5 Jan 2025 17:08:25 +0000 Subject: [PATCH 277/286] Add RAM and Disk units (#1261) * Add RAM and Disk units * MB to MiB --- misc/build.func | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/misc/build.func b/misc/build.func index 4ed08f52e1c..d83c99e82d8 100644 --- a/misc/build.func +++ b/misc/build.func @@ -316,7 +316,7 @@ echo_default() { echo -e "${CONTAINERTYPE}${BOLD}${DGN}Container Type: ${BGN}$CT_TYPE_DESC${CL}" echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}" echo -e "${CPUCORE}${BOLD}${DGN}CPU Cores: ${BGN}${CORE_COUNT}${CL}" - echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MB${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}" echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}" if [ "$VERB" == "yes" ]; then echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}" @@ -463,13 +463,13 @@ advanced_settings() { if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then if [ -z "$DISK_SIZE" ]; then DISK_SIZE="$var_disk" - echo -e "${DISKSIZE}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}" else if ! [[ $DISK_SIZE =~ $INTEGER ]]; then echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}" advanced_settings fi - echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}$DISK_SIZE${CL}" + echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}" fi else exit_script @@ -489,9 +489,9 @@ advanced_settings() { if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then if [ -z "$RAM_SIZE" ]; then RAM_SIZE="$var_ram" - echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}" else - echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}$RAM_SIZE${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}" fi else exit_script From 144182d22cdd25e04c46c79a299ce6eb07829563 Mon Sep 17 00:00:00 2001 From: "community-scripts-pr-app[bot]" <189241966+community-scripts-pr-app[bot]@users.noreply.github.com> Date: Sun, 5 Jan 2025 18:15:03 +0100 Subject: [PATCH 278/286] Update CHANGELOG.md (#1263) Co-authored-by: github-actions[bot] --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8010f6db620..9c98aef0895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,18 @@ All LXC instances created using this repository come pre-installed with Midnight > [!IMPORTANT] Do not break established syntax in this file, as it is automatically updated by a Github Workflow +## 2025-01-05 + +### Changed + +### 💥 Breaking Changes + +- [Breaking] Update Zigbee2mqtt to v.2.0.0 (Read PR Description) [@MickLesk](https://github.com/MickLesk) ([#1221](https://github.com/community-scripts/ProxmoxVE/pull/1221)) + +### ❔ Unlabelled + +- Add RAM and Disk units [@oOStroudyOo](https://github.com/oOStroudyOo) ([#1261](https://github.com/community-scripts/ProxmoxVE/pull/1261)) + ## 2025-01-04 ### Changed From 66bce3c4445ca64cf551064e78987fa10b499d1b Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 13:39:18 -0600 Subject: [PATCH 279/286] modified: misc/build.func --- misc/build.func | 69 +++++++++---------------------------------------- 1 file changed, 12 insertions(+), 57 deletions(-) diff --git a/misc/build.func b/misc/build.func index d83c99e82d8..e476969a15d 100644 --- a/misc/build.func +++ b/misc/build.func @@ -9,6 +9,8 @@ variables() { var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP. INTEGER='^[0-9]+([.][0-9]+)?$' # it defines the INTEGER regular expression pattern. PVEHOST_NAME=$(hostname) # gets the Proxmox Hostname and sets it to Uppercase + # Display ASCII header + ASCII_ART="Proxmox VE Helper-Scripts" } # This function sets various color variables using ANSI escape codes for formatting text in the terminal. @@ -187,65 +189,18 @@ update_motd_ip() { fi } -# This function sets the APP-Name into an ASCII Header in Slant, figlet needed on proxmox main node. +# This function displays the ASCII Header and APP name. header_info() { - # Helper function: Install FIGlet and download fonts - install_figlet() { - echo -e "${INFO}${BOLD}${DGN}Installing FIGlet...${CL}" - - temp_dir=$(mktemp -d) - curl -sL https://github.com/community-scripts/ProxmoxVE/raw/refs/heads/main/misc/figlet.tar.xz -o "$temp_dir/figlet.tar.xz" - mkdir -p /tmp/figlet - tar -xf "$temp_dir/figlet.tar.xz" -C /tmp/figlet --strip-components=1 - cd /tmp/figlet - make >/dev/null - - if [ -f "figlet" ]; then - chmod +x figlet - mv figlet /usr/local/bin/ - mkdir -p /usr/local/share/figlet - cp -r /tmp/figlet/fonts/*.flf /usr/local/share/figlet/ - echo -e "${CM}${BOLD}${DGN}FIGlet successfully installed.${CL}" - else - echo -e "${ERR}${BOLD}${RED}Failed to install FIGlet.${CL}" - return 1 - fi - rm -rf "$temp_dir" - } - - # Check if figlet and the slant font are available - if ! figlet -f slant "Test" &>/dev/null; then - echo -e "${INFO}${BOLD}${DGN}FIGlet or the slant font is missing. Installing...${CL}" - - if [ -f /etc/debian_version ] || [ -f /etc/lsb-release ]; then - # Debian/Ubuntu-based systems - apt-get update -y &>/dev/null - apt-get install -y wget build-essential &>/dev/null - install_figlet - - elif [ -f /etc/alpine-release ]; then - # Alpine-based systems - apk add --no-cache tar xz build-base wget &>/dev/null - export TERM=xterm - install_figlet - - else - echo -e "${ERR}${BOLD}${RED}Unsupported operating system.${CL}" - return 1 - fi - - # Ensure the slant font is available - if [ ! -f "/usr/share/figlet/slant.flf" ]; then - echo -e "${INFO}${BOLD}${DGN}Downloading slant font...${CL}" - wget -qO /usr/share/figlet/slant.flf "http://www.figlet.org/fonts/slant.flf" - fi - fi - - # Display ASCII header - term_width=$(tput cols 2>/dev/null || echo 120) - ascii_art=$(figlet -f slant -w "$term_width" "$APP") clear - echo "$ascii_art" + echo "$ASCII_ART" + echo -e "\nCopyright (c) 2021-2025 tteck" + echo "Author: tteck (tteckster)" + echo "Co-Author: MickLesk" + echo "License: MIT. https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE" + echo "Website: https://Helper-Scripts.com" + echo "Github: https://github.com/community-scripts/ProxmoxVE" + echo "Report issues: https://github.com/community-scripts/ProxmoxVE/issues" + echo -e "${BOLD}${GN}${APP} Script${CL}" } # This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit. From 2a9d92b0e1cd52ac51383c47a48dac2ccc2a4cc6 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 13:47:06 -0600 Subject: [PATCH 280/286] modified: misc/build.func --- misc/build.func | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/misc/build.func b/misc/build.func index e476969a15d..f755a2f6560 100644 --- a/misc/build.func +++ b/misc/build.func @@ -743,9 +743,9 @@ build_container() { TEMP_DIR=$(mktemp -d) pushd $TEMP_DIR >/dev/null if [ "$var_os" == "alpine" ]; then - export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/alpine-install.func)" + export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/misc/alpine-install.func)" else - export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/install.func)" + export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/misc/install.func)" fi export CACHER="$APT_CACHER" export CACHER_IP="$APT_CACHER_IP" @@ -775,7 +775,7 @@ build_container() { $PW " # This executes create_lxc.sh and creates the container and .conf file - bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/create_lxc.sh)" || exit + bash -c "$(wget -qLO - https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/ct/create_lxc.sh)" || exit LXC_CONFIG=/etc/pve/lxc/${CTID}.conf if [ "$CT_TYPE" == "0" ]; then @@ -837,7 +837,7 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community EOF' pct exec "$CTID" -- ash -c "apk add bash >/dev/null" fi - lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/install/$var_install.sh)" || exit + lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/install/$var_install.sh)" || exit } From f9ab41aa7d6cb243c6a9d7a44112c8691751e231 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 13:53:58 -0600 Subject: [PATCH 281/286] modified: ct/homeassistant-core.sh --- ct/homeassistant-core.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ct/homeassistant-core.sh b/ct/homeassistant-core.sh index f54bf4fdcdc..d5d067f13af 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -1,5 +1,5 @@ #!/usr/bin/env bash -source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +source <(curl -s https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/misc/build.func) # Copyright (c) 2021-2025 tteck # Author: tteck (tteckster) # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE From 5baff5f0ddf7a4314a53b26da3b93a769a8782e0 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 13:58:59 -0600 Subject: [PATCH 282/286] modified: misc/build.func --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index f755a2f6560..631425aef5e 100644 --- a/misc/build.func +++ b/misc/build.func @@ -200,7 +200,7 @@ header_info() { echo "Website: https://Helper-Scripts.com" echo "Github: https://github.com/community-scripts/ProxmoxVE" echo "Report issues: https://github.com/community-scripts/ProxmoxVE/issues" - echo -e "${BOLD}${GN}${APP} Script${CL}" + echo -e "\n${BOLD}${DGN}${APP} Script${CL}" } # This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit. From 55c559e363549254dfc540a1ce382ceab8ccd401 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 14:04:12 -0600 Subject: [PATCH 283/286] modified: misc/build.func --- misc/build.func | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/misc/build.func b/misc/build.func index 631425aef5e..8d1a5710409 100644 --- a/misc/build.func +++ b/misc/build.func @@ -200,8 +200,8 @@ header_info() { echo "Website: https://Helper-Scripts.com" echo "Github: https://github.com/community-scripts/ProxmoxVE" echo "Report issues: https://github.com/community-scripts/ProxmoxVE/issues" - echo -e "\n${BOLD}${DGN}${APP} Script${CL}" -} + echo -e "\n${BOLD}${GN}${APP} Script${CL}\n" + } # This function checks if the script is running through SSH and prompts the user to confirm if they want to proceed or exit. ssh_check() { @@ -743,9 +743,9 @@ build_container() { TEMP_DIR=$(mktemp -d) pushd $TEMP_DIR >/dev/null if [ "$var_os" == "alpine" ]; then - export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/misc/alpine-install.func)" + export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/alpine-install.func)" else - export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/misc/install.func)" + export FUNCTIONS_FILE_PATH="$(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/install.func)" fi export CACHER="$APT_CACHER" export CACHER_IP="$APT_CACHER_IP" @@ -775,7 +775,7 @@ build_container() { $PW " # This executes create_lxc.sh and creates the container and .conf file - bash -c "$(wget -qLO - https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/ct/create_lxc.sh)" || exit + bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/create_lxc.sh)" || exit LXC_CONFIG=/etc/pve/lxc/${CTID}.conf if [ "$CT_TYPE" == "0" ]; then @@ -837,7 +837,7 @@ http://dl-cdn.alpinelinux.org/alpine/latest-stable/community EOF' pct exec "$CTID" -- ash -c "apk add bash >/dev/null" fi - lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/towerhand/ProxmoxVE/main/install/$var_install.sh)" || exit + lxc-attach -n "$CTID" -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/install/$var_install.sh)" || exit } From caa6847f2f9ac97474d27e1d9346c03151136995 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 14:05:37 -0600 Subject: [PATCH 284/286] modified: misc/build.func --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 8d1a5710409..141f2b45caa 100644 --- a/misc/build.func +++ b/misc/build.func @@ -9,7 +9,7 @@ variables() { var_install="${NSAPP}-install" # sets the var_install variable by appending "-install" to the value of NSAPP. INTEGER='^[0-9]+([.][0-9]+)?$' # it defines the INTEGER regular expression pattern. PVEHOST_NAME=$(hostname) # gets the Proxmox Hostname and sets it to Uppercase - # Display ASCII header + # PLACEHOLDER - CHANGE AS NEEDED---- # Display ASCII header ASCII_ART="Proxmox VE Helper-Scripts" } From 82f4451d7cbdce7439d22b651908611df31a90bd Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 14:07:29 -0600 Subject: [PATCH 285/286] modified: misc/build.func --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 141f2b45caa..6beb90c022f 100644 --- a/misc/build.func +++ b/misc/build.func @@ -197,7 +197,7 @@ header_info() { echo "Author: tteck (tteckster)" echo "Co-Author: MickLesk" echo "License: MIT. https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE" - echo "Website: https://Helper-Scripts.com" + echo -e "\nWebsite: https://Helper-Scripts.com" echo "Github: https://github.com/community-scripts/ProxmoxVE" echo "Report issues: https://github.com/community-scripts/ProxmoxVE/issues" echo -e "\n${BOLD}${GN}${APP} Script${CL}\n" From b2ae00b38932d1090e8d26184ccb8f468cb80cb5 Mon Sep 17 00:00:00 2001 From: lecanelon Date: Sun, 5 Jan 2025 14:12:00 -0600 Subject: [PATCH 286/286] modified: misc/build.func --- misc/build.func | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/misc/build.func b/misc/build.func index 6beb90c022f..a07e253a05e 100644 --- a/misc/build.func +++ b/misc/build.func @@ -192,7 +192,7 @@ update_motd_ip() { # This function displays the ASCII Header and APP name. header_info() { clear - echo "$ASCII_ART" + echo -e "$ASCII_ART" echo -e "\nCopyright (c) 2021-2025 tteck" echo "Author: tteck (tteckster)" echo "Co-Author: MickLesk"