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 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..8e2f5b0bc42 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): +- - - +**_Please remove unneeded lines!_** +- Related Issue: # (issue number, if applicable) +- Related PR: # (if applicable) +- Related Discussion: []()(if applicable) -- [ ] 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.) +--- -## 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 # 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", 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 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 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/.github/workflows/shellcheck.yml b/.github/workflows/shellcheck.yml new file mode 100644 index 00000000000..394229e6f28 --- /dev/null +++ b/.github/workflows/shellcheck.yml @@ -0,0 +1,32 @@ +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: Get changed files + id: changes + run: | + 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 != '' + run: | + echo "${{ steps.changes.outputs.files }}" | xargs shellcheck diff --git a/CHANGELOG.md b/CHANGELOG.md index 9621dc8fe01..9c98aef0895 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,432 @@ 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 + +### šŸš€ 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)) +- 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)) + +### šŸ§° 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 + +### šŸš€ Updated Scripts + +- Improve Homarr Installation [@MickLesk](https://github.com/MickLesk) ([#1208](https://github.com/community-scripts/ProxmoxVE/pull/1208)) +- 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 + +### āœØ 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 + +### āœØ 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)) + +### šŸš€ 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)) + +### šŸŒ Website + +- 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 + +### šŸ’„ 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: 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)) + +## 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 + +### āœØ 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)) + +### šŸš€ 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)) + +### šŸ§° 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 + +### šŸ’„ 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 + +- 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 + +### Changed + +### āœØ New Scripts + +- 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)) +- 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 + +- Updated SAB documentation based on RAM increase [@TheRealVira](https://github.com/TheRealVira) ([#1035](https://github.com/community-scripts/ProxmoxVE/pull/1035)) + +### ā” 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 + +### Changed + +### āœØ 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 + +- 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)) + +### šŸ§° 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 + +### āœØ 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)) +- Doubled RAM for SAB [@TheRealVira](https://github.com/TheRealVira) ([#1007](https://github.com/community-scripts/ProxmoxVE/pull/1007)) + +## 2024-12-23 + +### Changed + +### šŸš€ 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 + +### 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 + +### āœØ 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: 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 + +- 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 + +- 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 + +### šŸš€ 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)) + +### šŸŒ 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)) + +## 2024-12-18 + +### Changed + +### āœØ New Scripts + +- New script: Part-DB LXC [@bvdberg01](https://github.com/bvdberg01) ([#591](https://github.com/community-scripts/ProxmoxVE/pull/591)) + +### šŸš€ 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 + +- 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 + +### šŸš€ 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)) + +### šŸ§° 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 + +### Changed + +### šŸ’„ Breaking Changes + +- 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)) +- 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 + +- 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)) + +## 2024-12-13 + +### Changed + +### šŸš€ 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 + +- 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)) + +### šŸ§° 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 + +### šŸš€ 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)) +- 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 + +### šŸš€ 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 + +### šŸš€ 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)) + +### šŸŒ Website + +- Move homarr to Dashboards section [@CrazyWolf13](https://github.com/CrazyWolf13) ([#740](https://github.com/community-scripts/ProxmoxVE/pull/740)) + +## 2024-12-07 + +### Changed + +### šŸš€ 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)) + +### šŸŒ Website + +- 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 + +### šŸš€ 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)) + +### šŸ§° Maintenance + +- Update frontend CI/CD workflow [@havardthom](https://github.com/havardthom) ([#703](https://github.com/community-scripts/ProxmoxVE/pull/703)) + ## 2024-12-05 ### Changed @@ -104,13 +530,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 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 new file mode 100644 index 00000000000..3ef44999c2e --- /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-2025 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/ct/5etools.sh b/ct/5etools.sh new file mode 100644 index 00000000000..b0a0df27bcc --- /dev/null +++ b/ct/5etools.sh @@ -0,0 +1,115 @@ +#!/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" + 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" + 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" + + 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 -rf /opt/${RELEASE}.zip + rm -rf ${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/ct/actualbudget.sh b/ct/actualbudget.sh index 009fb9527f9..8bad74dcdb3 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -1,70 +1,45 @@ #!/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 +# 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" +var_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..d4d94f593e9 100644 --- a/ct/adguard.sh +++ b/ct/adguard.sh @@ -1,64 +1,39 @@ #!/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 +# 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_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 /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}" diff --git a/ct/adventurelog.sh b/ct/adventurelog.sh index f7806968da9..5c168ce4e55 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..2e5cda1b750 100644 --- a/ct/agentdvr.sh +++ b/ct/agentdvr.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..267066b1a12 100644 --- a/ct/alpine-docker.sh +++ b/ct/alpine-docker.sh @@ -1,58 +1,28 @@ #!/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 +# 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" +var_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..909ade3d6eb 100644 --- a/ct/alpine-grafana.sh +++ b/ct/alpine-grafana.sh @@ -1,58 +1,28 @@ #!/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 +# 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" +var_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..d41b9e3dc56 100644 --- a/ct/alpine-nextcloud.sh +++ b/ct/alpine-nextcloud.sh @@ -1,57 +1,28 @@ #!/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 +# 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..4760d94a7df 100644 --- a/ct/alpine-zigbee2mqtt.sh +++ b/ct/alpine-zigbee2mqtt.sh @@ -1,58 +1,28 @@ #!/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 +# 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" +var_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 d6944dc0f9d..a89e79f2e21 100644 --- a/ct/alpine.sh +++ b/ct/alpine.sh @@ -1,68 +1,38 @@ #!/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 +# 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" +var_tags="os;alpine" var_cpu="1" var_ram="512" +var_disk="0.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="-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..8e127029162 100644 --- a/ct/apache-cassandra.sh +++ b/ct/apache-cassandra.sh @@ -1,66 +1,40 @@ #!/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 +# 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" +var_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..9df39570f82 100644 --- a/ct/apache-couchdb.sh +++ b/ct/apache-couchdb.sh @@ -1,66 +1,39 @@ #!/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 +# 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" +var_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/apache-guacamole.sh b/ct/apache-guacamole.sh new file mode 100644 index 00000000000..35a2fceaff0 --- /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-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/ + +#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/ct/apt-cacher-ng.sh b/ct/apt-cacher-ng.sh index f363b0e3772..09c10d9d13a 100644 --- a/ct/apt-cacher-ng.sh +++ b/ct/apt-cacher-ng.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 +# Copyright (c) 2021-2025 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" +var_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..1fd6f09804b 100644 --- a/ct/archivebox.sh +++ b/ct/archivebox.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_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}:8000/admin/login${CL}" diff --git a/ct/aria2.sh b/ct/aria2.sh index 8393b4ea385..366d7279a58 100644 --- a/ct/aria2.sh +++ b/ct/aria2.sh @@ -1,66 +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 +# Copyright (c) 2021-2025 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" +var_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..ccb1cac6b57 100644 --- a/ct/audiobookshelf.sh +++ b/ct/audiobookshelf.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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/authentik.sh b/ct/authentik.sh new file mode 100644 index 00000000000..3f1a39ab3db --- /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-2025 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}:9000/if/flow/initial-setup/${CL}" diff --git a/ct/autobrr.sh b/ct/autobrr.sh index d4d98a11764..383f81df740 100644 --- a/ct/autobrr.sh +++ b/ct/autobrr.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_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..698344b2d5e 100755 --- a/ct/bazarr.sh +++ b/ct/bazarr.sh @@ -1,66 +1,38 @@ #!/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 +# 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" +var_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..dd1309acce3 100644 --- a/ct/blocky.sh +++ b/ct/blocky.sh @@ -1,67 +1,39 @@ #!/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 +# 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" +var_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 0d52f3900d8..0589d2dca19 100644 --- a/ct/bookstack.sh +++ b/ct/bookstack.sh @@ -1,98 +1,82 @@ #!/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 +# 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" +var_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 - COMPOSER_ALLOW_SUPERUSER=1 composer install --no-dev &>/dev/null - php artisan key:generate &>/dev/null - php artisan migrate &>/dev/null - echo "${RELEASE}" >/opt/${APP}_version.txt - msg_ok "Updated ${APP}" + 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 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} to v${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 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 /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 v${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..d539cc5fe79 100644 --- a/ct/bunkerweb.sh +++ b/ct/bunkerweb.sh @@ -1,65 +1,36 @@ #!/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 +# 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" +var_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..e8fa01b4d5a 100644 --- a/ct/caddy.sh +++ b/ct/caddy.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..3980f37ac82 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 +# 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 -function header_info { -clear -cat <<"EOF" - ______ ___ __ _ __ __ - / ____/___ _/ (_) /_ ________ | | / /__ / /_ - / / / __ `/ / / __ \/ ___/ _ \___| | /| / / _ \/ __ \ -/ /___/ /_/ / / / /_/ / / / __/___/ |/ |/ / __/ /_/ / -\____/\__,_/_/_/_.___/_/ \___/ |__/|__/\___/_.___/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Calibre-Web" -var_disk="4" +var_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 @@ -77,33 +48,33 @@ function update_script() { "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 ) + "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}" diff --git a/ct/casaos.sh b/ct/casaos.sh index ebd0050c39f..76e226a0bee 100644 --- a/ct/casaos.sh +++ b/ct/casaos.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..a6075cf2459 100644 --- a/ct/changedetection.sh +++ b/ct/changedetection.sh @@ -1,83 +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 +# Copyright (c) 2021-2025 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" +var_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 + + 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 } start @@ -85,5 +77,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/channels.sh b/ct/channels.sh index dad211a5658..d7f23d366cf 100644 --- a/ct/channels.sh +++ b/ct/channels.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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/checkmk.sh b/ct/checkmk.sh new file mode 100644 index 00000000000..7822d1355db --- /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-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/ + +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 + 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 + 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/ct/cloudflared.sh b/ct/cloudflared.sh index cc6d1e8214f..16f8d62541f 100644 --- a/ct/cloudflared.sh +++ b/ct/cloudflared.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..266d36219e3 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 +# 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/ -function header_info { -clear -cat <<"EOF" - ______ __ _ __ - / ____/___ _____/ /______ (_) /_ - / / / __ \/ ___/ //_/ __ \/ / __/ -/ /___/ /_/ / /__/ ,< / /_/ / / /_ -\____/\____/\___/_/|_/ .___/_/\__/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Cockpit" -var_disk="4" +var_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..4d5d2994797 100644 --- a/ct/commafeed.sh +++ b/ct/commafeed.sh @@ -1,84 +1,59 @@ #!/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 +# 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" +var_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/create_lxc.sh b/ct/create_lxc.sh index aae2fcba0cd..6d55fd17cce 100644 --- a/ct/create_lxc.sh +++ b/ct/create_lxc.sh @@ -1,7 +1,8 @@ #!/usr/bin/env bash -# Copyright (c) 2021-2024 tteck +# Copyright (c) 2021-2025 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/ct/cronicle.sh b/ct/cronicle.sh index 0915c4f9859..19f3454e221 100644 --- a/ct/cronicle.sh +++ b/ct/cronicle.sh @@ -1,126 +1,101 @@ #!/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 +# 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" +var_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..1d9b313758f 100644 --- a/ct/daemonsync.sh +++ b/ct/daemonsync.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..9f9c77aa62b 100644 --- a/ct/dashy.sh +++ b/ct/dashy.sh @@ -1,105 +1,80 @@ #!/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 +# 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" +var_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..fd5dae410bf 100644 --- a/ct/debian.sh +++ b/ct/debian.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..e8233a5954a 100644 --- a/ct/deconz.sh +++ b/ct/deconz.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..1f80e8db119 100644 --- a/ct/deluge.sh +++ b/ct/deluge.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 +# Copyright (c) 2021-2025 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" +var_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..5af992b2360 100644 --- a/ct/docker.sh +++ b/ct/docker.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..8f5fd9d2e86 100644 --- a/ct/dockge.sh +++ b/ct/dockge.sh @@ -1,68 +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 +# Copyright (c) 2021-2025 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" +var_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..364fb1663da 100644 --- a/ct/emby.sh +++ b/ct/emby.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_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}:8096${CL}" diff --git a/ct/emqx.sh b/ct/emqx.sh index 070e38ff9c4..348f0b7ef93 100644 --- a/ct/emqx.sh +++ b/ct/emqx.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..c77cc7a79b4 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/ +# Copyright (c) 2021-2025 tteck +# 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" +var_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..6b381486cbb 100644 --- a/ct/esphome.sh +++ b/ct/esphome.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +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 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..bf1070edb46 100644 --- a/ct/evcc.sh +++ b/ct/evcc.sh @@ -1,66 +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 +# Copyright (c) 2021-2025 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" +var_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..f3ae355075c 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 +# 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 -function header_info { -clear -cat <<"EOF" - ______ - / ____/__ ____ _______ _______ - / /_ / _ \/ __ \/ ___/ / / / ___/ - / __/ / __/ / / / / / /_/ (__ ) -/_/ \___/_/ /_/_/ \__,_/____/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Fenrus" -var_disk="4" +var_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..922cad73b81 100644 --- a/ct/fhem.sh +++ b/ct/fhem.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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/firefly.sh b/ct/firefly.sh new file mode 100644 index 00000000000..542f84ec390 --- /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-2025 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/ct/flaresolverr.sh b/ct/flaresolverr.sh index 1946c93297d..d212c00f700 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 +# 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 -function header_info { -clear -cat <<"EOF" - ________ _____ __ - / ____/ /___ _________ / ___/____ / / _____ __________ - / /_ / / __ `/ ___/ _ \\__ \/ __ \/ / | / / _ \/ ___/ ___/ - / __/ / / /_/ / / / __/__/ / /_/ / /| |/ / __/ / / / -/_/ /_/\__,_/_/ \___/____/\____/_/ |___/\___/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="FlareSolverr" -var_disk="4" +var_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..ab26b11393b 100644 --- a/ct/flowiseai.sh +++ b/ct/flowiseai.sh @@ -1,68 +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 +# Copyright (c) 2021-2025 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" +var_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..3e9223ba092 100644 --- a/ct/forgejo.sh +++ b/ct/forgejo.sh @@ -1,85 +1,59 @@ #!/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 +# 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" +var_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..40e14e1db50 100644 --- a/ct/frigate.sh +++ b/ct/frigate.sh @@ -1,65 +1,39 @@ #!/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 +# 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" +var_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..ed7fbca4491 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 +# 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/ -function header_info { -clear -cat <<"EOF" - ______ _ __ - / ____/(_)/ /____ ____ _ - / / __// // __/ _ \/ __ / -/ /_/ // // /_/ __/ /_/ / -\____//_/ \__/\___/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Gitea" -var_disk="8" +var_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..7ef2b4587ef 100644 --- a/ct/glance.sh +++ b/ct/glance.sh @@ -1,68 +1,40 @@ #!/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 +# 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" +var_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..e577388f544 100644 --- a/ct/go2rtc.sh +++ b/ct/go2rtc.sh @@ -1,72 +1,46 @@ #!/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 +# 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" +var_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..1a86e0ce0b5 100644 --- a/ct/gokapi.sh +++ b/ct/gokapi.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..a31273f41af 100644 --- a/ct/gotify.sh +++ b/ct/gotify.sh @@ -1,86 +1,61 @@ #!/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 +# 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" +var_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..7547f14fa2e 100644 --- a/ct/grafana.sh +++ b/ct/grafana.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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/grist.sh b/ct/grist.sh new file mode 100644 index 00000000000..154e3ff5ee5 --- /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="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 [[ ! -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/ct/grocy.sh b/ct/grocy.sh index 945c7aea01a..f6bfc8ecb55 100644 --- a/ct/grocy.sh +++ b/ct/grocy.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 +# Copyright (c) 2021-2025 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" +var_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..e63aa6a7e4d 100644 --- a/ct/headscale.sh +++ b/ct/headscale.sh @@ -1,83 +1,58 @@ #!/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 +# 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" +var_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..4613040d57e 100644 --- a/ct/heimdall-dashboard.sh +++ b/ct/heimdall-dashboard.sh @@ -1,107 +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 +# Copyright (c) 2021-2025 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" +var_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..fe9aa2ba5ef 100644 --- a/ct/hivemq.sh +++ b/ct/hivemq.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..b91765ec7e0 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -1,100 +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 +# Copyright (c) 2021-2025 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" +var_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..715796a27dc 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 +# 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/ -function header_info { -clear -cat <<"EOF" - __ __ - / / / /___ ____ ___ ____ ___________ - / /_/ / __ \/ __ `__ \/ __ `/ ___/ ___/ - / __ / /_/ / / / / / / /_/ / / / / -/_/ /_/\____/_/ /_/ /_/\__,_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Homarr" -var_disk="8" +var_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..d5d067f13af 100644 --- a/ct/homeassistant-core.sh +++ b/ct/homeassistant-core.sh @@ -1,57 +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 +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 +# 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" +var_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 @@ -79,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 @@ -119,7 +93,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 +128,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}:8123${CL}" diff --git a/ct/homeassistant.sh b/ct/homeassistant.sh index bb0a325a04b..aa35e94167d 100644 --- a/ct/homeassistant.sh +++ b/ct/homeassistant.sh @@ -1,57 +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 +# Copyright (c) 2021-2025 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" +var_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..75490965445 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 +# 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/ -function header_info { -clear -cat <<"EOF" - __ __ ____ - / / / /___ ____ ___ ___ / __ )____ _ __ - / /_/ / __ \/ __ `__ \/ _ \/ __ / __ \| |/_/ - / __ / /_/ / / / / / / __/ /_/ / /_/ /> < -/_/ /_/\____/_/ /_/ /_/\___/_____/\____/_/|_| - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="HomeBox" -var_disk="4" +var_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..3253b79e497 100644 --- a/ct/homebridge.sh +++ b/ct/homebridge.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..e2c74b367cc 100644 --- a/ct/homepage.sh +++ b/ct/homepage.sh @@ -1,90 +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 +# Copyright (c) 2021-2025 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" +var_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 --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 + msg_ok "Updated Homepage to v${RELEASE}" + else + msg_ok "No update required. ${APP} is already at v${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 +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" +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/ct/homer.sh b/ct/homer.sh index bb2695d7628..1445fceea69 100644 --- a/ct/homer.sh +++ b/ct/homer.sh @@ -1,93 +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 +# Copyright (c) 2021-2025 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" +var_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..150864a4750 100644 --- a/ct/hyperhdr.sh +++ b/ct/hyperhdr.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 +# Copyright (c) 2021-2025 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" +var_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..28b310b5f64 100644 --- a/ct/hyperion.sh +++ b/ct/hyperion.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 +# Copyright (c) 2021-2025 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" +var_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..0824effefdc 100644 --- a/ct/influxdb.sh +++ b/ct/influxdb.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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..749911e5b59 100644 --- a/ct/inspircd.sh +++ b/ct/inspircd.sh @@ -1,61 +1,32 @@ #!/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 +# 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" +var_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..310f0a29cdf 100644 --- a/ct/iobroker.sh +++ b/ct/iobroker.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..12a434fff92 100644 --- a/ct/iventoy.sh +++ b/ct/iventoy.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..0c1c91717c9 100644 --- a/ct/jackett.sh +++ b/ct/jackett.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 +# Copyright (c) 2021-2025 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" +var_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 e15623523cf..123f3e94c7f 100644 --- a/ct/jellyfin.sh +++ b/ct/jellyfin.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 +# Copyright (c) 2021-2025 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" +var_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 --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}:8096${CL}" diff --git a/ct/jellyseerr.sh b/ct/jellyseerr.sh index 602ebad03de..5403ae58945 100644 --- a/ct/jellyseerr.sh +++ b/ct/jellyseerr.sh @@ -1,85 +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 +# Copyright (c) 2021-2025 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" +var_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/jenkins.sh b/ct/jenkins.sh new file mode 100644 index 00000000000..49e4fcda0e1 --- /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-2025 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/ct/kavita.sh b/ct/kavita.sh index e80d64631de..4303d04aa9d 100644 --- a/ct/kavita.sh +++ b/ct/kavita.sh @@ -1,72 +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 +# Copyright (c) 2021-2025 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" +var_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 5dad21ca447..668a866b49e 100644 --- a/ct/keycloak.sh +++ b/ct/keycloak.sh @@ -1,92 +1,62 @@ #!/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 +# 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" +var_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" - -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 "Downloading Keycloak 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 + 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 "Merging configuration files" -cp -r keycloak/conf keycloak-$RELEASE -cp -r keycloak/providers keycloak-$RELEASE -cp -r keycloak/themes keycloak-$RELEASE + msg_info "Updating packages" + apt-get update &>/dev/null + apt-get -y upgrade &>/dev/null -msg_info "Updating Keycloak" -mv keycloak keycloak.old -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 @@ -94,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..1ca15fac619 100644 --- a/ct/kimai.sh +++ b/ct/kimai.sh @@ -1,98 +1,73 @@ #!/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 +# 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" +var_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 225316ed37d..f8e47c29b84 100644 --- a/ct/komga.sh +++ b/ct/komga.sh @@ -1,84 +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 +# Copyright (c) 2021-2025 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" +var_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}" - rm -rf /opt/komga/komga*.jar - wget -q "https://github.com/gotson/komga/releases/download/v${RELEASE}/komga-${RELEASE}.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/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/ct/kubo.sh b/ct/kubo.sh index 335690f2054..7a73b268214 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 +# 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 -function header_info { -clear -cat <<"EOF" - __ __ __ - / //_/_ __/ /_ ____ - / ,< / / / / __ \/ __ \ - / /| / /_/ / /_/ / /_/ / -/_/ |_\__,_/_.___/\____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Kubo" -var_disk="4" +var_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..37f7e71f8bc 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 +# 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 -function header_info { -clear -cat <<"EOF" - __ __ _ __ _ - / / ____ _____ __ __/ / (_) /_ _________ ______(_)___ _____ - / / / __ `/_ / / / / / / / / __ \/ ___/ __ `/ ___/ / __ `/ __ \ - / /___/ /_/ / / /_/ /_/ / /___/ / /_/ / / / /_/ / / / / /_/ / / / / -/_____/\__,_/ /___/\__, /_____/_/_.___/_/ \__,_/_/ /_/\__,_/_/ /_/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="LazyLibrarian" -var_disk="4" +var_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..809e5a1916b 100644 --- a/ct/lidarr.sh +++ b/ct/lidarr.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..5c0435e09e3 100644 --- a/ct/linkwarden.sh +++ b/ct/linkwarden.sh @@ -1,97 +1,71 @@ #!/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 +# 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" +var_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..55e5c4f5d10 100644 --- a/ct/listmonk.sh +++ b/ct/listmonk.sh @@ -1,95 +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 +# Copyright (c) 2021-2025 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" +var_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..60c97157d7e 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 +# 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 -function header_info { -clear -cat <<"EOF" - ____ __ - / / /___/ /___ _____ - / / / __ / __ `/ __ \ - / / / /_/ / /_/ / /_/ / -/_/_/\__,_/\__,_/ .___/ - /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="lldap" -var_disk="4" +var_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..0f10b6670ab 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -1,68 +1,37 @@ #!/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 +# 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" +var_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 @@ -73,11 +42,19 @@ check_container_resources 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}" @@ -87,6 +64,7 @@ check_container_resources 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 @@ -100,5 +78,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/mafl.sh b/ct/mafl.sh index 730671d55c0..a8e5777d526 100644 --- a/ct/mafl.sh +++ b/ct/mafl.sh @@ -1,62 +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 +# Copyright (c) 2021-2025 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" +var_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..7504eb2079d 100644 --- a/ct/magicmirror.sh +++ b/ct/magicmirror.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 +# Copyright (c) 2021-2025 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" +var_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..729d21365d8 100644 --- a/ct/mariadb.sh +++ b/ct/mariadb.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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 [[ ! -d /etc/mysql/mariadb.conf.d ]]; 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..9647cb7cfc8 100644 --- a/ct/matterbridge.sh +++ b/ct/matterbridge.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..67cb8f9aeb5 100644 --- a/ct/mediamtx.sh +++ b/ct/mediamtx.sh @@ -1,65 +1,40 @@ #!/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 +# 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" +var_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..19aae9b55b2 100644 --- a/ct/medusa.sh +++ b/ct/medusa.sh @@ -1,80 +1,54 @@ #!/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 +# 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" +var_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..ed1b30ed8a3 100644 --- a/ct/memos.sh +++ b/ct/memos.sh @@ -1,90 +1,64 @@ #!/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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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 + 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." + 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}" diff --git a/ct/meshcentral.sh b/ct/meshcentral.sh index 6f2ebe7c5ef..6ae005d4129 100644 --- a/ct/meshcentral.sh +++ b/ct/meshcentral.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..8aa488afc8a 100644 --- a/ct/metube.sh +++ b/ct/metube.sh @@ -1,92 +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 +# Copyright (c) 2021-2025 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" +var_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..27e4bd0a1b0 100644 --- a/ct/mongodb.sh +++ b/ct/mongodb.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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 && ! -f /etc/apt/sources.list.d/mongodb-org-8.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}" diff --git a/ct/motioneye.sh b/ct/motioneye.sh index 76e2cb65243..9436f759de9 100644 --- a/ct/motioneye.sh +++ b/ct/motioneye.sh @@ -1,66 +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 +# Copyright (c) 2021-2025 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" +var_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..a577519db17 100644 --- a/ct/mqtt.sh +++ b/ct/mqtt.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..9c7636eb064 100644 --- a/ct/mylar3.sh +++ b/ct/mylar3.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 community-scripts ORG +# Copyright (c) 2021-2025 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" +var_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..e52d123af81 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 +# 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/ -function header_info { -clear -cat <<"EOF" - __ ___ _____ __ - / |/ /_ __/ ___/____ ___ ___ ____/ / - / /|_/ / / / /\__ \/ __ \/ _ \/ _ \/ __ / - / / / / /_/ /___/ / /_/ / __/ __/ /_/ / -/_/ /_/\__, //____/ .___/\___/\___/\__,_/ - /____/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MySpeed" -var_disk="4" +var_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..9c5968f4c0c 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 +# 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/ -function header_info { -clear -cat <<"EOF" - __ ___ _____ ____ __ - / |/ /_ __/ ___// __ \ / / - / /|_/ / / / /\__ \/ / / / / / - / / / / /_/ /___/ / /_/ / / /___ -/_/ /_/\__, //____/\___\_\/_____/ - /____/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="MySQL" -var_disk="4" +var_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}" diff --git a/ct/n8n.sh b/ct/n8n.sh index ead77f73207..27c15c60504 100644 --- a/ct/n8n.sh +++ b/ct/n8n.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 +# Copyright (c) 2021-2025 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" +var_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..be9e335b9f5 100644 --- a/ct/navidrome.sh +++ b/ct/navidrome.sh @@ -1,78 +1,55 @@ #!/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 +# 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" +var_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 + 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}" + 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 -rf /opt/Navidrome.tar.gz -msg_info "${GN} Starting ${APP}" -systemctl start navidrome.service -msg_ok "Started ${APP}" -msg_ok "Updated Successfully" -exit + msg_info "Starting ${APP}" + systemctl start navidrome.service + msg_ok "Started ${APP}" + msg_ok "Updated Successfully" + exit } start @@ -80,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}: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}" diff --git a/ct/neo4j.sh b/ct/neo4j.sh index 95757687908..0debb55d1de 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 +# 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/ -function header_info { -clear -cat <<"EOF" - _ __ __ __ _ - / | / /__ ____ / // / (_) - / |/ / _ \/ __ \/ // /_/ / - / /| / __/ /_/ /__ __/ / -/_/ |_/\___/\____/ /_/_/ / - /___/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Neo4j" -var_disk="4" +var_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..38f54a837d6 100644 --- a/ct/netbox.sh +++ b/ct/netbox.sh @@ -1,108 +1,83 @@ #!/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 +# 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" +var_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}https://${IP}${CL}" \ No newline at end of file diff --git a/ct/nextcloudpi.sh b/ct/nextcloudpi.sh index c9a51281bb8..d22fcaa30dc 100644 --- a/ct/nextcloudpi.sh +++ b/ct/nextcloudpi.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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..97938904a9b 100644 --- a/ct/nextpvr.sh +++ b/ct/nextpvr.sh @@ -1,87 +1,62 @@ #!/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 # 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..ed3dcdecbb7 100644 --- a/ct/nginxproxymanager.sh +++ b/ct/nginxproxymanager.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 +# Copyright (c) 2021-2025 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..4bd8f9a0d7a 100644 --- a/ct/notifiarr.sh +++ b/ct/notifiarr.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..4ac3bae0d79 100644 --- a/ct/ntfy.sh +++ b/ct/ntfy.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 +# Copyright (c) 2021-2025 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" +var_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..5091051326e 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 +# 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/ -function header_info { -clear -cat <<"EOF" - _ _______ ____ ______ __ - / | / /__ / / __ )/ ____/__ / /_ - / |/ / / / / __ / / __/ _ \/ __/ - / /| / / /__/ /_/ / /_/ / __/ /_ -/_/ |_/ /____/_____/\____/\___/\__/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="NZBGet" -var_disk="4" +var_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..be0b71a2a49 100644 --- a/ct/octoprint.sh +++ b/ct/octoprint.sh @@ -1,76 +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 +# Copyright (c) 2021-2025 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" +var_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..43cebc9c66d 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 +# 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/ -function header_info { -clear -cat <<"EOF" - ____ ____ - / __ \/ / /___ _____ ___ ____ _ - / / / / / / __ `/ __ `__ \/ __ `/ -/ /_/ / / / /_/ / / / / / / /_/ / -\____/_/_/\__,_/_/ /_/ /_/\__,_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Ollama" -var_disk="24" +var_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..b9b46f86a9c 100644 --- a/ct/omada.sh +++ b/ct/omada.sh @@ -1,74 +1,49 @@ #!/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 +# 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" +var_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 -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." + 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}https://${IP}:8043${CL}" diff --git a/ct/ombi.sh b/ct/ombi.sh index d378a11c141..610c7dfab04 100644 --- a/ct/ombi.sh +++ b/ct/ombi.sh @@ -1,83 +1,58 @@ #!/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 +# 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" +var_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..a05706fd291 100644 --- a/ct/omv.sh +++ b/ct/omv.sh @@ -1,73 +1,49 @@ #!/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 +# 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" +var_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..16e1b19461b 100644 --- a/ct/onedev.sh +++ b/ct/onedev.sh @@ -1,60 +1,32 @@ #!/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 +# 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" +var_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..79e2498425e 100644 --- a/ct/openhab.sh +++ b/ct/openhab.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 +# Copyright (c) 2021-2025 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" +var_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..598182b67b6 100644 --- a/ct/openobserve.sh +++ b/ct/openobserve.sh @@ -1,71 +1,44 @@ #!/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 +# 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" +var_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..47eab4abcc5 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..dff2604669e 100644 --- a/ct/overseerr.sh +++ b/ct/overseerr.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_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..6442af66eb1 100644 --- a/ct/owncast.sh +++ b/ct/owncast.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..00548dd36e4 100644 --- a/ct/pairdrop.sh +++ b/ct/pairdrop.sh @@ -1,70 +1,45 @@ #!/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 +# 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" +var_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..63aead01fd8 100644 --- a/ct/paperless-ngx.sh +++ b/ct/paperless-ngx.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 +# Copyright (c) 2021-2025 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" +var_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/part-db.sh b/ct/part-db.sh new file mode 100644 index 00000000000..dcb31c76fec --- /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-2025 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/ct/pbs.sh b/ct/pbs.sh index 11d6be38f43..8aae63d3bf5 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 +# Copyright (c) 2021-2025 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" +var_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..87cd3eff7bb 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 +# 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/ -function header_info { -clear -cat <<"EOF" - ____ _ ____ ________ - / __ \___ ____ _/ | / / / / /_ __/ - / /_/ / _ \/ __ `/ |/ / / / / / / - / ____/ __/ /_/ / /| / /_/ / / / -/_/ \___/\__,_/_/ |_/\____/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="PeaNUT" -var_disk="4" +var_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..c9d9b2d92ca 100644 --- a/ct/petio.sh +++ b/ct/petio.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 +# Copyright (c) 2021-2025 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" +var_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/pf2etools.sh b/ct/pf2etools.sh new file mode 100644 index 00000000000..4d2205e869c --- /dev/null +++ b/ct/pf2etools.sh @@ -0,0 +1,82 @@ +#!/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}" + cd /opt/Pf2eTools + $STD npm install + $STD npm run build + cd ~ + 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 -rf /opt/${APP}/${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/ct/photoprism.sh b/ct/photoprism.sh index 864de0398c3..f6f79c935f8 100644 --- a/ct/photoprism.sh +++ b/ct/photoprism.sh @@ -1,57 +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 +# Copyright (c) 2021-2025 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" +var_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..9569f5643b6 100644 --- a/ct/pialert.sh +++ b/ct/pialert.sh @@ -1,65 +1,40 @@ #!/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 +# 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" +var_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..4071efe7e73 100644 --- a/ct/pihole.sh +++ b/ct/pihole.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..95e09711161 100644 --- a/ct/pingvin.sh +++ b/ct/pingvin.sh @@ -1,84 +1,59 @@ #!/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 +# 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" +var_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..004a93e399e 100644 --- a/ct/plex.sh +++ b/ct/plex.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_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}:32400/web${CL}" diff --git a/ct/pocketbase.sh b/ct/pocketbase.sh index 5c7e1a9eaea..f9c24680eba 100644 --- a/ct/pocketbase.sh +++ b/ct/pocketbase.sh @@ -1,62 +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 +# Copyright (c) 2021-2025 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" +var_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..f0e43c2ae3b 100644 --- a/ct/podman-homeassistant.sh +++ b/ct/podman-homeassistant.sh @@ -1,61 +1,28 @@ #!/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 +# 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" +var_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..ef36a682424 100644 --- a/ct/podman.sh +++ b/ct/podman.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..287bfab1395 100644 --- a/ct/postgresql.sh +++ b/ct/postgresql.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..d03e070be1a 100644 --- a/ct/prometheus.sh +++ b/ct/prometheus.sh @@ -1,86 +1,61 @@ #!/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 +# 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" +var_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..04c8a4ec54e 100644 --- a/ct/prowlarr.sh +++ b/ct/prowlarr.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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/proxmox-datacenter-manager.sh b/ct/proxmox-datacenter-manager.sh new file mode 100644 index 00000000000..2ee48633938 --- /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/main/misc/build.func) +# 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 + +# 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/ct/qbittorrent.sh b/ct/qbittorrent.sh index 7544f7848ea..790a5716734 100644 --- a/ct/qbittorrent.sh +++ b/ct/qbittorrent.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 +# Copyright (c) 2021-2025 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" +var_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..c47d56da83f 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 +# 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/ -function header_info { -clear -cat <<"EOF" - ____ __ __ _ __ __ _______ - / __ \____ _/ /_ / /_ (_) /_/ |/ / __ \ - / /_/ / __ `/ __ \/ __ \/ / __/ /|_/ / / / / - / _, _/ /_/ / /_/ / /_/ / / /_/ / / / /_/ / -/_/ |_|\__,_/_.___/_.___/_/\__/_/ /_/\___\_\ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="RabbitMQ" -var_disk="4" +var_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..c6ee2507820 100644 --- a/ct/radarr.sh +++ b/ct/radarr.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..3b26ad7c0bd 100755 --- a/ct/rdtclient.sh +++ b/ct/rdtclient.sh @@ -1,87 +1,62 @@ #!/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 +# 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" +var_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..2c0bf458dd5 100644 --- a/ct/readarr.sh +++ b/ct/readarr.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..a34294edd3f 100644 --- a/ct/readeck.sh +++ b/ct/readeck.sh @@ -1,72 +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 +# Copyright (c) 2021-2025 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" +var_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..388ab627e59 100644 --- a/ct/recyclarr.sh +++ b/ct/recyclarr.sh @@ -1,71 +1,46 @@ #!/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 +# 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" +var_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..13b29e590fa 100644 --- a/ct/redis.sh +++ b/ct/redis.sh @@ -1,65 +1,39 @@ #!/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 +# 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" +var_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..c09182a3804 100644 --- a/ct/rtsptoweb.sh +++ b/ct/rtsptoweb.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..3beb2ea2d05 100644 --- a/ct/runtipi.sh +++ b/ct/runtipi.sh @@ -1,64 +1,39 @@ #!/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 +# 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" +var_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..9c8489836f2 100644 --- a/ct/sabnzbd.sh +++ b/ct/sabnzbd.sh @@ -1,78 +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 +# Copyright (c) 2021-2025 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" +var_tags="downloader" var_cpu="2" -var_ram="2048" +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/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}" diff --git a/ct/semaphore.sh b/ct/semaphore.sh new file mode 100644 index 00000000000..12d32a0a131 --- /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-2025 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/ct/sftpgo.sh b/ct/sftpgo.sh index 203ea956dc5..6a14392c151 100644 --- a/ct/sftpgo.sh +++ b/ct/sftpgo.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..4da07b58611 100644 --- a/ct/shinobi.sh +++ b/ct/shinobi.sh @@ -1,70 +1,45 @@ #!/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 +# 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" +var_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/silverbullet.sh b/ct/silverbullet.sh new file mode 100644 index 00000000000..56bf1a4e67d --- /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-2025 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/ct/smokeping.sh b/ct/smokeping.sh index cb1e98a235d..8bd4a242137 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 +# Copyright (c) 2021-2025 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" +var_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..025088047f9 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-2025 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" +var_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..606fdb30b52 100644 --- a/ct/sonarr.sh +++ b/ct/sonarr.sh @@ -1,72 +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 +# Copyright (c) 2021-2025 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" +var_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..f98dc1f24fe 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 +# 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 -function header_info { -clear -cat <<"EOF" - _____ __ - / ___/____ ____ ____ / /___ ___ ____ _____ - \__ \/ __ \/ __ \/ __ \/ / __ `__ \/ __ `/ __ \ - ___/ / /_/ / /_/ / /_/ / / / / / / / /_/ / / / / -/____/ .___/\____/\____/_/_/ /_/ /_/\__,_/_/ /_/ - /_/ -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Spoolman" -var_disk="4" +var_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..c212c18c6a8 100644 --- a/ct/stirling-pdf.sh +++ b/ct/stirling-pdf.sh @@ -1,82 +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 +# Copyright (c) 2021-2025 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" +var_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..455e262f11d 100644 --- a/ct/syncthing.sh +++ b/ct/syncthing.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 +# Copyright (c) 2021-2025 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" +var_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..146c73ee4d9 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..500d67d63d4 100644 --- a/ct/tasmoadmin.sh +++ b/ct/tasmoadmin.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..0675f5bbbec 100644 --- a/ct/tautulli.sh +++ b/ct/tautulli.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..6360f0014a3 100644 --- a/ct/tdarr.sh +++ b/ct/tdarr.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..8f6877082ee 100644 --- a/ct/technitiumdns.sh +++ b/ct/technitiumdns.sh @@ -1,74 +1,49 @@ #!/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 +# 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" +var_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/teddycloud.sh b/ct/teddycloud.sh new file mode 100644 index 00000000000..0b2a7dcb2dc --- /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-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 + +# 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/ct/the-lounge.sh b/ct/the-lounge.sh index dd4e50962db..28d426aed7d 100644 --- a/ct/the-lounge.sh +++ b/ct/the-lounge.sh @@ -1,87 +1,62 @@ #!/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 +# 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" +var_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..83c5ed7950d 100644 --- a/ct/threadfin.sh +++ b/ct/threadfin.sh @@ -1,69 +1,44 @@ #!/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 +# 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" +var_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..1ac59203f96 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..5487784ae0b 100644 --- a/ct/traccar.sh +++ b/ct/traccar.sh @@ -1,65 +1,40 @@ #!/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 +# 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" +var_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..39786b8e5af 100644 --- a/ct/traefik.sh +++ b/ct/traefik.sh @@ -1,76 +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 +# Copyright (c) 2021-2025 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" +var_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..78d5b1b4ae3 100644 --- a/ct/transmission.sh +++ b/ct/transmission.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..a2835202c75 100644 --- a/ct/trilium.sh +++ b/ct/trilium.sh @@ -1,85 +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 +# Copyright (c) 2021-2025 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" +var_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..d3aac33f52c 100644 --- a/ct/ubuntu.sh +++ b/ct/ubuntu.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..6b898cae19f 100644 --- a/ct/umami.sh +++ b/ct/umami.sh @@ -1,80 +1,55 @@ #!/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 +# 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" +var_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..5dc0a791809 100644 --- a/ct/umbrel.sh +++ b/ct/umbrel.sh @@ -1,66 +1,38 @@ #!/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 +# 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" +var_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..b0a0d1ecc65 100644 --- a/ct/unbound.sh +++ b/ct/unbound.sh @@ -1,67 +1,42 @@ #!/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 +# 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" +var_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..16fe0c8d7ca 100644 --- a/ct/unifi.sh +++ b/ct/unifi.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..bce7450a04a 100644 --- a/ct/unmanic.sh +++ b/ct/unmanic.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..0efe730fd6c 100644 --- a/ct/uptimekuma.sh +++ b/ct/uptimekuma.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 +# Copyright (c) 2021-2025 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" +var_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..4d12d0dacd5 100644 --- a/ct/vaultwarden.sh +++ b/ct/vaultwarden.sh @@ -1,57 +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 +# Copyright (c) 2021-2025 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" +var_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..e805f8b238b 100644 --- a/ct/vikunja.sh +++ b/ct/vikunja.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 community-scripts ORG +# Copyright (c) 2021-2025 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" +var_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..9931f1f70fa 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..9e416237754 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 +# 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 - -function header_info { -clear -cat <<"EOF" - _ __ __ __ _ -| | / /___ ______/ /____ / /_ (_)___ -| | /| / / __ `/ ___/ __/ _ \/ __ \/ / __ \ -| |/ |/ / /_/ (__ ) /_/ __/ /_/ / / / / / -|__/|__/\__,_/____/\__/\___/_.___/_/_/ /_/ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Wastebin" -var_disk="4" +var_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..de29154eb4f 100644 --- a/ct/watchyourlan.sh +++ b/ct/watchyourlan.sh @@ -1,74 +1,49 @@ #!/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 +# 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" +var_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..0dc24ae2481 100644 --- a/ct/wavelog.sh +++ b/ct/wavelog.sh @@ -1,105 +1,80 @@ #!/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 +# 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" +var_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..53e2fff8933 100644 --- a/ct/whisparr.sh +++ b/ct/whisparr.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 +# Copyright (c) 2021-2025 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" +var_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..1010b6fc0db 100644 --- a/ct/whoogle.sh +++ b/ct/whoogle.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..d387b2d95f5 100644 --- a/ct/wikijs.sh +++ b/ct/wikijs.sh @@ -1,90 +1,64 @@ #!/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 +# 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" +var_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..946a909ea43 100644 --- a/ct/wireguard.sh +++ b/ct/wireguard.sh @@ -1,68 +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 +# Copyright (c) 2021-2025 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" +var_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..36319202a74 100644 --- a/ct/yunohost.sh +++ b/ct/yunohost.sh @@ -1,67 +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 +# Copyright (c) 2021-2025 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" +var_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..14cfc35790f 100644 --- a/ct/zabbix.sh +++ b/ct/zabbix.sh @@ -1,89 +1,64 @@ #!/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 +# 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" +var_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/ 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 + 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}" diff --git a/ct/zammad.sh b/ct/zammad.sh new file mode 100644 index 00000000000..43360bd0efc --- /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-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 + +#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/ct/zigbee2mqtt.sh b/ct/zigbee2mqtt.sh index 70f1e758755..591e19bb762 100644 --- a/ct/zigbee2mqtt.sh +++ b/ct/zigbee2mqtt.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 +# Copyright (c) 2021-2025 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.zigbee2mqtt.io/ -function header_info { - clear - cat <<"EOF" - _____ _ __ ___ __ _______ ____________ -/__ / (_)___ _/ /_ ___ ___ |__ \ / |/ / __ \/_ __/_ __/ - / / / / __ / __ \/ _ \/ _ \__/ // /|_/ / / / / / / / / - / /__/ / /_/ / /_/ / __/ __/ __// / / / /_/ / / / / / -/____/_/\__, /_.___/\___/\___/____/_/ /_/\___\_\/_/ /_/ - /____/ šŸ - -EOF -} -header_info -echo -e "Loading..." +# App Default Values APP="Zigbee2MQTT" -var_disk="4" +var_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 @@ -61,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 - 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 + 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 - - 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 } @@ -154,3 +69,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}" diff --git a/ct/zipline.sh b/ct/zipline.sh index 8887bb998fe..7031bf8e9aa 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 +# Copyright (c) 2021-2025 tteck +# 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" +var_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..2f30ebc236a 100644 --- a/ct/zoraxy.sh +++ b/ct/zoraxy.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 +# Copyright (c) 2021-2025 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..ffea06b2add 100644 --- a/ct/zwave-js-ui.sh +++ b/ct/zwave-js-ui.sh @@ -1,64 +1,36 @@ #!/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 +# 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" +var_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 diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 0fc06b891fa..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": { @@ -3187,7 +3177,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 +3187,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 +7070,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" }, @@ -7105,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", @@ -7122,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": { @@ -7768,7 +7756,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 +9402,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", 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", 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, 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/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} diff --git a/frontend/src/components/CommandMenu.tsx b/frontend/src/components/CommandMenu.tsx index b1c8e1267ee..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; }; @@ -95,7 +95,7 @@ export default function CommandMenu() { {category.scripts.map((script) => ( { setOpen(false); router.push(`/scripts?id=${script.slug}`); 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 { diff --git a/install/2fauth-install.sh b/install/2fauth-install.sh new file mode 100644 index 00000000000..9f71d9fa58b --- /dev/null +++ b/install/2fauth-install.sh @@ -0,0 +1,123 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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/install/5etools-install.sh b/install/5etools-install.sh new file mode 100644 index 00000000000..c1a3cd946b4 --- /dev/null +++ b/install/5etools-install.sh @@ -0,0 +1,82 @@ +#!/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 \ + gpg \ + ca-certificates \ + 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" + +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 Image" + +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" +msg_ok "Created Service" + +msg_info "Cleaning up" +$STD apt-get -y autoremove +$STD apt-get -y autoclean +msg_ok "Cleaned" + +motd_ssh +customize 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 6d611ba3a16..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 @@ -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;" @@ -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/; } @@ -134,11 +138,13 @@ 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 '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" 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 +169,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 +182,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 diff --git a/install/alpine-vaultwarden-install.sh b/install/alpine-vaultwarden-install.sh index 1babe4277db..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 @@ -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/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 new file mode 100644 index 00000000000..435193e1484 --- /dev/null +++ b/install/apache-guacamole-install.sh @@ -0,0 +1,154 @@ +#!/usr/bin/env bash +#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 + +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 "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} +{ + 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" +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] +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 +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 +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/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 9d05a034c8c..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 @@ -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 </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/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..69374672a99 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 @@ -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" 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 new file mode 100644 index 00000000000..892c057dad5 --- /dev/null +++ b/install/checkmk-install.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash + +#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 /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 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: $PASSWORD" +} >> ~/checkmk.creds +msg_ok "Created Service" + +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/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 70ebcebe05e..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 @@ -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 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 new file mode 100644 index 00000000000..17b5623decb --- /dev/null +++ b/install/firefly-install.sh @@ -0,0 +1,101 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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.4 \ + php8.4-{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.4 +$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/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 3eda5afd42f..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 @@ -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 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 new file mode 100644 index 00000000000..30786777dc6 --- /dev/null +++ b/install/grist-install.sh @@ -0,0 +1,83 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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 \ + unzip \ + 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 +$STD npm install -g yarn +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 +mv grist-core-${RELEASE} grist +cd grist +$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 +EOF +echo "${RELEASE}" >/opt/${APPLICATION}_version.txt +msg_ok "Installed Grist" + +msg_info "Create Service" +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" \ No newline at end of file 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 92eed2de695..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 @@ -22,7 +22,8 @@ $STD apt-get install -y \ sudo \ gnupg \ ca-certificates \ - chromium \ + chromium/stable \ + chromium-common/stable \ mc msg_ok "Installed Dependencies" diff --git a/install/homarr-install.sh b/install/homarr-install.sh index fe138d40252..410ba8aeb07 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 @@ -16,11 +16,15 @@ 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 \ + curl \ + ca-certificates \ + gnupg \ + make \ + g++ \ + build-essential msg_ok "Installed Dependencies" msg_info "Setting up Node.js Repository" diff --git a/install/homeassistant-core-install.sh b/install/homeassistant-core-install.sh index 3c794b32f99..e5cca687357 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 @@ -14,9 +14,49 @@ 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 \ + curl \ + git \ + sudo \ + mc \ + gnupg \ + ca-certificates \ + bluez \ + libtiff6 \ + 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 \ + software-properties-common msg_ok "Installed Dependencies" +msg_info "Setup Python3" +$STD add-apt-repository -y ppa:deadsnakes/ppa +$STD apt-get update +$STD apt-get install -y \ + python3.13-* \ + python3-pip \ + python3.13-dev \ + python3.13-venv +msg_ok "Setup Python3" + msg_info "Installing UV" $STD pip install uv msg_ok "Installed UV" 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..21064860ddd 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 @@ -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}" 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 new file mode 100644 index 00000000000..3226a4ca630 --- /dev/null +++ b/install/jenkins-install.sh @@ -0,0 +1,36 @@ +#!/usr/bin/env bash +# Copyright (c) 2021-2025 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/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/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/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..dd00bab994d 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 @@ -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" 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 6b682e9ee43..ce525fc36c7 100644 --- a/install/mongodb-install.sh +++ b/install/mongodb-install.sh @@ -1,6 +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 @@ -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 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 a78f5e91726..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 @@ -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' 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 318851048ba..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 @@ -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 -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" 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..86d74e5caed 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 @@ -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" 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 new file mode 100644 index 00000000000..1429649fde9 --- /dev/null +++ b/install/part-db-install.sh @@ -0,0 +1,112 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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/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/pf2etools-install.sh b/install/pf2etools-install.sh new file mode 100644 index 00000000000..fda5e8f053c --- /dev/null +++ b/install/pf2etools-install.sh @@ -0,0 +1,74 @@ +#!/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 \ + gpg \ + ca-certificates \ + 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" + +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" +msg_ok "Created 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/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 032a9d8c785..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 @@ -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 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 new file mode 100644 index 00000000000..d9f7c8852ac --- /dev/null +++ b/install/proxmox-datacenter-manager-install.sh @@ -0,0 +1,39 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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/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 new file mode 100644 index 00000000000..2294ca22705 --- /dev/null +++ b/install/semaphore-install.sh @@ -0,0 +1,87 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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/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 new file mode 100644 index 00000000000..feaa59694e8 --- /dev/null +++ b/install/silverbullet-install.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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/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 new file mode 100644 index 00000000000..1a4995000f1 --- /dev/null +++ b/install/teddycloud-install.sh @@ -0,0 +1,62 @@ +#!/usr/bin/env bash + +# Copyright (c) 2021-2025 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 \ + 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/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 f913128fb79..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 @@ -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;" 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 5bf36a760ca..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 @@ -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/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 8e2af1bc91e..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 @@ -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/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 @@ -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 diff --git a/install/zammad-install.sh b/install/zammad-install.sh new file mode 100644 index 00000000000..7a87b51e2ce --- /dev/null +++ b/install/zammad-install.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +#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 /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/install/zigbee2mqtt-install.sh b/install/zigbee2mqtt-install.sh index f6b8e97c553..faf08b577b1 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 @@ -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,49 +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" -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" +msg_info "Setting up Zigbee2MQTT" +cd /opt +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 -if [[ $DEV == "y" ]]; then -$STD git fetch origin dev:dev -$STD git checkout dev -$STD git pull -fi -$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" -echo "[Unit] +cat </etc/systemd/system/zigbee2mqtt.service +[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 +WantedBy=multi-user.target +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" 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/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 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": [] +} 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-lxc-iptag.json b/json/add-lxc-iptag.json new file mode 100644 index 00000000000..15abfe6426f --- /dev/null +++ b/json/add-lxc-iptag.json @@ -0,0 +1,47 @@ +{ + "name": "Proxmox VE LXC IP-Tag", + "slug": "add-lxc-iptag", + "categories": [ + 1 + ], + "date_created": "2024-12-16", + "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" + }, + { + "text": "The Proxmox Node must contain ipcalc and net-tools. `apt-get install -y ipcalc net-tools`", + "type": "warning" + } + ] +} 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/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": [] +} 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/authentik.json b/json/authentik.json new file mode 100644 index 00000000000..4b3f87a3cb0 --- /dev/null +++ b/json/authentik.json @@ -0,0 +1,39 @@ +{ + "name": "authentik", + "slug": "authentik", + "categories": [ + 11 + ], + "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://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": [ + { + "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" + } + ] +} 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/checkmk.json b/json/checkmk.json new file mode 100644 index 00000000000..db23ab85730 --- /dev/null +++ b/json/checkmk.json @@ -0,0 +1,39 @@ +{ + "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://checkmk.com/application/files/cache/thumbnails/67fc39c599afdf20557d538416e3efd3.png", + "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", + "script": "ct/checkmk.sh", + "resources": { + "cpu": 2, + "ram": 2048, + "hdd": 4, + "os": null, + "version": null + } + } + ], + "default_credentials": { + "username": null, + "password": null + }, + "notes": [ + { + "text": "Login Credentials : `cat ~/checkmk.creds`", + "type": "info" + } + ] +} 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/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/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/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/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/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" + } + ] +} 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/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/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/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/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": [] +} 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/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", 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/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": [] + } 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/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 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/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/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/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 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/nextcloudpi.json b/json/nextcloudpi.json index bd0098e76b7..b1b0f09b7c8 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": [ @@ -41,5 +41,10 @@ "username": null, "password": null }, - "notes": [] -} \ No newline at end of file + "notes": [ + { + "text": "Only Alpine: To get the username and password, run the script again inside the LXC shell.", + "type": "warning" + } + ] +} 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/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, 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/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", 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/part-db.json b/json/part-db.json new file mode 100644 index 00000000000..a48f91570d4 --- /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 partdb.creds`", + "type": "info" + } + ] +} 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 +} diff --git a/json/pf2etools.json b/json/pf2etools.json new file mode 100644 index 00000000000..d50aa5fe363 --- /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": [] +} 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 +} 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/proxmox-datacenter-manager.json b/json/proxmox-datacenter-manager.json new file mode 100644 index 00000000000..a9a1234abb1 --- /dev/null +++ b/json/proxmox-datacenter-manager.json @@ -0,0 +1,43 @@ +{ + "name": "Proxmox Datacenter Manager", + "slug": "proxmox-datacenter-manager", + "categories": [ + 1 + ], + "date_created": "2024-12-25", + "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" + } + ] + } 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/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 +} 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/semaphore.json b/json/semaphore.json new file mode 100644 index 00000000000..057fe6ce403 --- /dev/null +++ b/json/semaphore.json @@ -0,0 +1,43 @@ +{ + "name": "Semaphore", + "slug": "semaphore", + "categories": [ + 7 + ], + "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" + } + ] +} 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": [] +} 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/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" + } + ] +} 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/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 +} 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/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" } ] 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/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" } ] diff --git a/json/webmin.json b/json/webmin.json index b17c4bb5e9a..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", @@ -33,7 +33,7 @@ "notes": [ { "text": "Execute within an existing LXC Console", - "type": "warning" + "type": "info" } ] } \ 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": [] +} diff --git a/misc/add-lxc-iptag.sh b/misc/add-lxc-iptag.sh new file mode 100644 index 00000000000..7ef23341fc5 --- /dev/null +++ b/misc/add-lxc-iptag.sh @@ -0,0 +1,357 @@ +#!/usr/bin/env bash + +# 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/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" +} + +# This function displays a spinner. +spinner() { + 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 "${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}" +} + +# 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_error "Installation cancelled." + exit + ;; + *) msg_error "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_ok "Setup IP-Tag Scripts" + +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 + 172.16.0.0/12 + 10.0.0.0/8 + 100.64.0.0/10 +) + +# 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 + 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" +SPINNER_PID="" +echo -e "\n${APP} installation completed successfully! ${CL}\n" 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 175b8ca767a..4a9a655ce78 100644 --- a/misc/alpine-install.func +++ b/misc/alpine-install.func @@ -1,20 +1,42 @@ +# Copyright (c) 2021-2025 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 aee3366a8b8..a07e253a05e 100644 --- a/misc/build.func +++ b/misc/build.func @@ -1,11 +1,21 @@ +# Copyright (c) 2021-2025 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. INTEGER='^[0-9]+([.][0-9]+)?$' # it defines the INTEGER regular expression pattern. + PVEHOST_NAME=$(hostname) # gets the Proxmox Hostname and sets it to Uppercase + # PLACEHOLDER - CHANGE AS NEEDED---- # 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. color() { + # Colors YW=$(echo "\033[33m") YWB=$(echo "\033[93m") BL=$(echo "\033[36m") @@ -13,11 +23,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 +77,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 +104,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 +112,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 +140,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 +151,61 @@ 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 } +# 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 displays the ASCII Header and APP name. +header_info() { + clear + echo -e "$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 -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" + } + # 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() { - if command -v pveversion >/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 +216,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_unprivileged:-$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}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}" + 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 +299,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 +315,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,19 +326,22 @@ 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;${var_tags:-}" CT_TYPE="" while [ -z "$CT_TYPE" ]; do @@ -222,10 +350,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 +372,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 +396,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 +410,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}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${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}GB${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}MiB${CL}" else - echo -e "${DGN}Allocated RAM: ${BGN}$RAM_SIZE${CL}" + echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${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 +468,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 +492,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 +507,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 +518,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 +527,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 +540,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 +552,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 +563,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 +576,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 +587,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 +598,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 on node $PVEHOST_NAME${CL}" advanced_settings fi } @@ -491,27 +623,68 @@ 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 on node $PVEHOST_NAME${CL}" + VERB="no" + base_settings "$VERB" + echo_default + break + ;; + 2) + header_info + echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}${BL}Verbose)${CL}" + VERB="yes" + base_settings "$VERB" + echo_default + break + ;; + 3) + header_info + echo -e "${ADVANCED}${BOLD}${RD}Using Advanced Settings on node $PVEHOST_NAME${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() { # 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 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 +697,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 +711,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 +721,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 +764,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 +834,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/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/figlet.tar.xz b/misc/figlet.tar.xz new file mode 100644 index 00000000000..3a2308ebaea Binary files /dev/null and b/misc/figlet.tar.xz differ 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 2a22e2ff9f7..1a3cf5eb94d 100644 --- a/misc/install.func +++ b/misc/install.func @@ -1,18 +1,39 @@ +# Copyright (c) 2021-2025 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,9 +199,39 @@ 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 + # 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/* + if [[ "${SSH_ROOT}" == "yes" ]]; then sed -i "s/#PermitRootLogin prohibit-password/PermitRootLogin yes/g" /etc/ssh/sshd_config systemctl restart sshd diff --git a/misc/kernel-clean.sh b/misc/kernel-clean.sh index adee9d3fa22..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 @@ -16,60 +15,66 @@ function header_info { EOF } -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}" + +# Color variables +YW="\033[33m" +GN="\033[1;92m" +RD="\033[01;31m" +CL="\033[m" + +# Detect current kernel current_kernel=$(uname -r) available_kernels=$(dpkg --list | grep 'kernel-.*-pve' | awk '{print $2}' | grep -v "$current_kernel" | sort -V) + header_info -function msg_info() { - local msg="$1" - echo -ne " ${HOLD} ${YW}${msg}..." -} +if [ -z "$available_kernels" ]; then + echo -e "${GN}No old kernels detected. Current kernel: ${current_kernel}${CL}" + exit 0 +fi -function msg_ok() { - local msg="$1" - echo -e "${BFR} ${CM} ${GN}${msg}${CL}" -} +echo -e "${YW}Available kernels for removal:${CL}" +echo "$available_kernels" | nl -w 2 -s '. ' -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 -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 "\n${YW}Select kernels to remove (comma-separated, e.g., 1,2):${CL}" +read -r selected + +# 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 - KERNEL_MENU=() - MSG_MAX_LENGTH=0 -while read -r TAG ITEM; do - OFFSET=2 - ((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=${#ITEM}+OFFSET - 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 -[ -z "$remove_kernels" ] && { - whiptail --backtitle "Proxmox VE Helper Scripts" --title "No Kernel Selected" --msgbox "It appears that 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 +# Confirm removal +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 -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" +# 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 + echo -e "${RD}Failed to remove: $kernel. Check dependencies.${CL}" + fi +done -msg_info "Updating GRUB" -/usr/sbin/update-grub >/dev/null 2>&1 -msg_ok "Successfully Updated GRUB" -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}" 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 2246f4fcda6..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 @@ -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" 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