diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index f450b99b1..12bd44f84 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -8,13 +8,13 @@ body: # 🐞 **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** + ## ⚠️ **IMPORTANT - READ FIRST** - 🔍 **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: diff --git a/.github/autolabeler-config.json b/.github/autolabeler-config.json index 4485d62c9..30e34b972 100644 --- a/.github/autolabeler-config.json +++ b/.github/autolabeler-config.json @@ -50,7 +50,7 @@ "maintenance": [ { "fileStatus": null, - "includeGlobs": ["*.md", ".github/**"], + "includeGlobs": ["*.md", ".github/**", "misc/*.func", "ct/create_lxc.sh"], "excludeGlobs": [] } ], @@ -61,4 +61,4 @@ "excludeGlobs": [] } ] -} \ No newline at end of file +} diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index 8e2f5b0bc..7613cf4eb 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -1,39 +1,28 @@ -> **🛠️ 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 -Provide a summary of the changes made and/or reference the issue being addressed. + - - - -**_Please remove unneeded lines!_** -- Related Issue: # (issue number, if applicable) -- Related PR: # (if applicable) -- Related Discussion: []()(if applicable) +- Related Issue: # +- Related PR: # +- Related Discussion: # +- - - ---- - -## 🛠️ 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) - ---- ## ✅ 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) +- [] 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.) + +## 🛠️ 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 extra context or screenshots about the feature or fix here. diff --git a/.github/workflows/auto-update-app-headers.yml b/.github/workflows/auto-update-app-headers.yml new file mode 100644 index 000000000..b02c3e619 --- /dev/null +++ b/.github/workflows/auto-update-app-headers.yml @@ -0,0 +1,82 @@ +name: Auto Update .app-headers + +on: + push: + branches: + - main + paths: + - 'ct/**.sh' + workflow_dispatch: # Ermöglicht das manuelle Ausführen der Action + +jobs: + update-app-headers: + runs-on: ubuntu-latest + + permissions: + contents: write + pull-requests: write + + steps: + # Step 1: Checkout repository + - name: Checkout repository + uses: actions/checkout@v2 + + # Step 2: Set up Git user for committing changes + - name: Set up Git + run: | + git config --global user.name "GitHub Actions" + git config --global user.email "actions@github.com" + + # Step 3: Install figlet + - name: Install figlet + run: sudo apt-get install -y figlet + + # Step 4: Run the generate-app-headers.sh script to update .app-headers + - name: Run generate-app-headers.sh to update .app-headers + run: | + chmod +x .github/workflows/scripts/generate-app-headers.sh + .github/workflows/scripts/generate-app-headers.sh + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # Step 5: Check if there are any changes + - name: Check if there are any changes + id: verify-diff + run: | + git diff --quiet . || echo "changed=true" >> $GITHUB_OUTPUT + + # Step 6: Commit changes (if any) and create a PR + - name: Commit and create PR if changes exist + if: steps.verify-diff.outputs.changed == 'true' + run: | + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git add ./misc/.app-headers + git commit -m "Update .app-headers file" + # Create a temporary branch for the PR + git checkout -b pr-update-app-headers + git push origin pr-update-app-headers --force + + # Create PR against main + gh pr create --title "[core] update .app-headers file" \ + --body "This PR is auto-generated by a Github Action to update the .app-headers file." \ + --head pr-update-app-headers \ + --base main \ + --label "automated pr" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + - name: Re-approve pull request after update + if: steps.verify-diff.outputs.changed == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + PR_NUMBER=$(gh pr list --head "pr-update-app-headers" --json number --jq '.[].number') + # Check if the PR was created by the bot (skip review if so) + PR_AUTHOR=$(gh pr view "$PR_NUMBER" --json author --jq '.author.login') + if [ "$PR_AUTHOR" != "github-actions[bot]" ]; then + gh pr review "$PR_NUMBER" --approve + else + echo "PR was created by the bot, skipping review." + fi + diff --git a/.github/workflows/backup/check_and_update_json_date.yml b/.github/workflows/backup/check_and_update_json_date.yml new file mode 100644 index 000000000..cde3cbbad --- /dev/null +++ b/.github/workflows/backup/check_and_update_json_date.yml @@ -0,0 +1,60 @@ +name: Update date_created in JSON files + +on: + # Dieser Trigger wird für das Öffnen von PRs sowie für das Aktualisieren von offenen PRs verwendet + pull_request: + types: [opened, synchronize] + schedule: + # Dieser Trigger wird 4x am Tag ausgelöst, um sicherzustellen, dass das Datum aktualisiert wird + - cron: "0 0,6,12,18 * * *" # Führt alle 6 Stunden aus + workflow_dispatch: # Manuelle Ausführung des Workflows möglich + +jobs: + update-date: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install yq + run: | + sudo apt-get update + sudo apt-get install -y yq + + - name: Set the current date + id: set_date + run: echo "TODAY=$(date -u +%Y-%m-%d)" >> $GITHUB_ENV + + - name: Check for changes in PR + run: | + # Hole den PR-Branch + PR_BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge" + git fetch origin $PR_BRANCH + + # Liste alle JSON-Dateien im PR auf, die geändert wurden + CHANGED_JSON_FILES=$(git diff --name-only origin/main...$PR_BRANCH | grep '.json') + + if [ -z "$CHANGED_JSON_FILES" ]; then + echo "No JSON files changed in this PR." + exit 0 + fi + + # Gehe alle geänderten JSON-Dateien durch und aktualisiere das Datum + for file in $CHANGED_JSON_FILES; do + echo "Updating date_created in $file" + # Setze das aktuelle Datum + yq eval ".date_created = \"${{ env.TODAY }}\"" -i "$file" + git add "$file" + done + + - name: Commit and push changes + run: | + # Prüfe, ob es Änderungen gibt und committe sie + git config user.name "json-updater-bot" + git config user.email "github-actions[bot]@users.noreply.github.com" + + git commit -m "Update date_created to ${{ env.TODAY }}" || echo "No changes to commit" + + # Push zurück in den PR-Branch + git push origin $PR_BRANCH diff --git a/.github/workflows/backup/shellcheck.yml b/.github/workflows/backup/shellcheck.yml new file mode 100644 index 000000000..4385fc8e9 --- /dev/null +++ b/.github/workflows/backup/shellcheck.yml @@ -0,0 +1,60 @@ +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: changed-files + uses: tj-actions/changed-files@v45 + with: + files: | + **.sh + + - name: Download ShellCheck + shell: bash + env: + INPUT_VERSION: "v0.10.0" + run: | + set -euo pipefail + if [[ "${{ runner.os }}" == "macOS" ]]; then + osvariant="darwin" + else + osvariant="linux" + fi + + baseurl="https://github.com/koalaman/shellcheck/releases/download" + curl -Lso "${{ github.workspace }}/sc.tar.xz" \ + "${baseurl}/${INPUT_VERSION}/shellcheck-${INPUT_VERSION}.${osvariant}.x86_64.tar.xz" + + tar -xf "${{ github.workspace }}/sc.tar.xz" -C "${{ github.workspace }}" + mv "${{ github.workspace }}/shellcheck-${INPUT_VERSION}/shellcheck" \ + "${{ github.workspace }}/shellcheck" + + - name: Verify ShellCheck binary + run: | + ls -l "${{ github.workspace }}/shellcheck" + + - name: Display ShellCheck version + run: | + "${{ github.workspace }}/shellcheck" --version + + - name: Run ShellCheck + if: steps.changed-files.outputs.any_changed == 'true' + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + echo "${ALL_CHANGED_FILES}" | xargs "${{ github.workspace }}/shellcheck" diff --git a/.github/workflows/scripts/update_json_date.sh b/.github/workflows/scripts/update_json_date.sh new file mode 100644 index 000000000..d07eab711 --- /dev/null +++ b/.github/workflows/scripts/update_json_date.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +# Verzeichnis, das die JSON-Dateien enthält +json_dir="./json/*.json" + +current_date=$(date +"%Y-%m-%d") + +for json_file in $json_dir; do + if [[ -f "$json_file" ]]; then + current_json_date=$(jq -r '.date_created' "$json_file") + + if [[ "$current_json_date" != "$current_date" ]]; then + echo "Updating $json_file with date $current_date" + jq --arg date "$current_date" '.date_created = $date' "$json_file" > temp.json && mv temp.json "$json_file" + + git add "$json_file" + git commit -m "Update date_created to $current_date in $json_file" + else + echo "Date in $json_file is already up to date." + fi + fi +done +git push origin HEAD diff --git a/.github/workflows/update_json_date.yml b/.github/workflows/update_json_date.yml new file mode 100644 index 000000000..afaf8eda2 --- /dev/null +++ b/.github/workflows/update_json_date.yml @@ -0,0 +1,48 @@ +name: Update JSON Date +on: + pull_request: + types: [opened, synchronize, reopened] + +jobs: + list-files: + runs-on: ubuntu-latest + steps: + - name: Checkout PR Branch + uses: actions/checkout@v4 + with: + ref: ${{ github.event.pull_request.head.ref }} + + - name: Fetch PR changes + run: | + git remote add fork https://github.com/${{ github.event.pull_request.head.repo.full_name }}.git + git fetch fork ${{ github.event.pull_request.head.ref }}:pullreq + git checkout pullreq + + - name: Update JSON + id: changed-files + run: | + FILES=$(gh api repos/${{ github.repository }}/pulls/${{ github.event.pull_request.number }}/files --jq '.[].filename' | tr '\n' ' ') + echo "changed_files=${FILES}" + for FILE in $FILES; do + if [[ "$FILE" =~ /(.*)\.json ]]; then + NAME="${BASH_REMATCH[1]}" + else + echo "no new JSON in ${FILES}" + continue + fi + + JSON_FILE="json/${NAME}.json" + if [[ -f "$JSON_FILE" ]]; then + echo "Updating date_created in $JSON_FILE" + jq --arg date "$(date +%Y-%m-%d)" '.date_created = $date' "$JSON_FILE" > tmp.json && mv tmp.json "$JSON_FILE" + else + echo "JSON file $FILES not found" + fi + done + + git config --global user.name "github-actions[bot]" + git config --global user.email "github-actions[bot]@users.noreply.github.com" + git diff --exit-code || git commit -am "Updating Dates in affected JSON files." + git push + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/CHANGELOG.md b/CHANGELOG.md index ce0ebc224..98a625026 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,104 @@ 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-16 + +### Changed + +### 💥 Breaking Changes + +- Update jellyseerr-install.sh to use Node 22 as required by latest Jellyseerr version [@pedrovieira](https://github.com/pedrovieira) ([#1535](https://github.com/community-scripts/ProxmoxVE/pull/1535)) + +### ✨ New Scripts + +- New script: Dotnet ASP.NET Web Server [@kris701](https://github.com/kris701) ([#1501](https://github.com/community-scripts/ProxmoxVE/pull/1501)) +- New script: phpIPAM [@bvdberg01](https://github.com/bvdberg01) ([#1503](https://github.com/community-scripts/ProxmoxVE/pull/1503)) + +### 🌐 Website + +- Add Mobile check for empty icon-url on website [@MickLesk](https://github.com/MickLesk) ([#1532](https://github.com/community-scripts/ProxmoxVE/pull/1532)) + +### 🧰 Maintenance + +- [Workflow]Update autolabeler-config.json [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1525](https://github.com/community-scripts/ProxmoxVE/pull/1525)) +- [core]Update update_json_date.yml [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1526](https://github.com/community-scripts/ProxmoxVE/pull/1526)) +- [core] Recreate Update JSON Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1523](https://github.com/community-scripts/ProxmoxVE/pull/1523)) + +## 2025-01-15 + +### Changed + +### 🚀 Updated Scripts + +- Fix: Add FFMPEG for OpenWebUI [@MickLesk](https://github.com/MickLesk) ([#1497](https://github.com/community-scripts/ProxmoxVE/pull/1497)) + +### 🧰 Maintenance + +- [core] build.func&install.func: Fix ssh keynot added error [@dsiebel](https://github.com/dsiebel) ([#1502](https://github.com/community-scripts/ProxmoxVE/pull/1502)) + +## 2025-01-14 + +### Changed + +### 💥 Breaking Changes + +- Update tianji-install.sh: Add OPENAI_API_KEY to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1480](https://github.com/community-scripts/ProxmoxVE/pull/1480)) + +### ✨ New Scripts + +- New Script: Wordpress [@MickLesk](https://github.com/MickLesk) ([#1485](https://github.com/community-scripts/ProxmoxVE/pull/1485)) +- New Script: Opengist [@jd-apprentice](https://github.com/jd-apprentice) ([#1429](https://github.com/community-scripts/ProxmoxVE/pull/1429)) + +### 🚀 Updated Scripts + +- Update lazylibrarian-install.sh: Add pypdf libary [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1467](https://github.com/community-scripts/ProxmoxVE/pull/1467)) +- Update opengist-install.sh: Add git as dependencie [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1471](https://github.com/community-scripts/ProxmoxVE/pull/1471)) + +### 🌐 Website + +- [website] Update footer text [@rajatdiptabiswas](https://github.com/rajatdiptabiswas) ([#1466](https://github.com/community-scripts/ProxmoxVE/pull/1466)) + +### 🧰 Maintenance + +- Hotfix build.func: Error when tags are empty [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1492](https://github.com/community-scripts/ProxmoxVE/pull/1492)) +- [core] Update build.func: Fix bug with advanced tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1473](https://github.com/community-scripts/ProxmoxVE/pull/1473)) + +## 2025-01-13 + +### Changed + +### 💥 Breaking Changes + +- Update Hoarder: Improvement .env location (see PR comment for little migration) [@MahrWe](https://github.com/MahrWe) ([#1325](https://github.com/community-scripts/ProxmoxVE/pull/1325)) + +### 🚀 Updated Scripts + +- Fix: tandoor.sh: Call version.py to write current version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1454](https://github.com/community-scripts/ProxmoxVE/pull/1454)) +- Fix inexistent folder on actualbudget update script [@dosten](https://github.com/dosten) ([#1444](https://github.com/community-scripts/ProxmoxVE/pull/1444)) + +### 🌐 Website + +- Update kavita.json: Add info on how to enable folder adding. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1447](https://github.com/community-scripts/ProxmoxVE/pull/1447)) + +### 🧰 Maintenance + +- GitHub Actions: Fix Shellsheck workflow to only run on changes `*.sh` files [@andygrunwald](https://github.com/andygrunwald) ([#1423](https://github.com/community-scripts/ProxmoxVE/pull/1423)) + +### ❔ Unlabelled + +- feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel [@MickLesk](https://github.com/MickLesk) ([#1456](https://github.com/community-scripts/ProxmoxVE/pull/1456)) + +## 2025-01-11 + +### Changed + +### 🚀 Updated Scripts + +- Prometheus: Fix installation via creating the service file [@andygrunwald](https://github.com/andygrunwald) ([#1416](https://github.com/community-scripts/ProxmoxVE/pull/1416)) +- Update prometheus-install.sh: Service creation fix [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1417](https://github.com/community-scripts/ProxmoxVE/pull/1417)) +- Update prometheus-alertmanager-install.sh: Service Creation Fix [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1418](https://github.com/community-scripts/ProxmoxVE/pull/1418)) +- Fix: LubeLogger CT vehicle tag typo [@kkroboth](https://github.com/kkroboth) ([#1413](https://github.com/community-scripts/ProxmoxVE/pull/1413)) + ## 2025-01-10 ### Changed @@ -26,6 +124,7 @@ Do not break established syntax in this file, as it is automatically updated by ### 🚀 Updated Scripts +- Fix user in ghost-cli install command [@fabrice1236](https://github.com/fabrice1236) ([#1408](https://github.com/community-scripts/ProxmoxVE/pull/1408)) - Update Prometheus + Alertmanager: Unify scripts for easier maintenance [@andygrunwald](https://github.com/andygrunwald) ([#1402](https://github.com/community-scripts/ProxmoxVE/pull/1402)) - Update komodo.sh: Fix broken paths in update_script(). [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1403](https://github.com/community-scripts/ProxmoxVE/pull/1403)) - Fix: ActualBudget Update-Function [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1376](https://github.com/community-scripts/ProxmoxVE/pull/1376)) diff --git a/ct/actualbudget.sh b/ct/actualbudget.sh index 7aee9bd65..79b264ef2 100644 --- a/ct/actualbudget.sh +++ b/ct/actualbudget.sh @@ -45,6 +45,7 @@ function update_script() { cd "${TEMPD}" wget -q https://codeload.github.com/actualbudget/actual-server/legacy.tar.gz/refs/tags/${RELEASE} -O - | tar -xz mv /opt/actualbudget /opt/actualbudget_bak + mkdir -p /opt/actualbudget/ mv actualbudget-actual-server-*/* /opt/actualbudget/ mv /opt/actualbudget_bak/.env /opt/actualbudget mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files diff --git a/ct/dotnetaspwebapi.sh b/ct/dotnetaspwebapi.sh new file mode 100644 index 000000000..faf86d296 --- /dev/null +++ b/ct/dotnetaspwebapi.sh @@ -0,0 +1,49 @@ +#!/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: Kristian Skov +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu + +# App Default Values +APP="Dotnet ASP Web API" +var_tags="web" +var_cpu="1" +var_ram="1024" +var_disk="8" +var_os="ubuntu" +var_version="24.04" +var_unprivileged="0" + +# 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/www ]]; 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 + +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}:80${CL}" diff --git a/ct/hoarder.sh b/ct/hoarder.sh index c05f6bb0a..4dd931bd1 100644 --- a/ct/hoarder.sh +++ b/ct/hoarder.sh @@ -40,7 +40,10 @@ function update_script() { msg_ok "Stopped Services" msg_info "Updating ${APP} to v${RELEASE}" cd /opt - mv /opt/hoarder/.env /opt/.env + if [[ -f /opt/hoarder/.env ]] && [[ ! -f /etc/hoarder/hoarder.env ]]; then + mkdir -p /etc/hoarder + mv /opt/hoarder/.env /etc/hoarder/hoarder.env + fi rm -rf /opt/hoarder wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip" unzip -q v${RELEASE}.zip @@ -54,8 +57,7 @@ function update_script() { 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 + sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/hoarder/hoarder.env msg_ok "Updated ${APP} to v${RELEASE}" msg_info "Starting Services" @@ -79,4 +81,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}" diff --git a/ct/lubelogger.sh b/ct/lubelogger.sh index 4f8a56d8c..cd6e85d1c 100644 --- a/ct/lubelogger.sh +++ b/ct/lubelogger.sh @@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/asylumexp/Proxmox/main/misc/b # App Default Values APP="LubeLogger" -var_tags="verhicle;car" +var_tags="vehicle;car" var_cpu="1" var_ram="512" var_disk="2" diff --git a/ct/opengist.sh b/ct/opengist.sh new file mode 100644 index 000000000..65b586b43 --- /dev/null +++ b/ct/opengist.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: Jonathan (jd-apprentice) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://opengist.io/ + +# App Default Values +APP="Opengist" +var_tags="development" +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 update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/opengist ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_info "Stopping Service" + systemctl stop opengist.service + msg_ok "Stopped Service" + apt-get update &>/dev/null + apt-get upgrade &>/dev/null + RELEASE=$(curl -s https://api.github.com/repos/thomiceli/opengist/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}" + cd /opt + wget -qO "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz" + rm -rf /opt/opengist + tar -xzf opengist${RELEASE}-linux-amd64.tar.gz + chmod +x /opt/opengist/opengist + echo "${RELEASE}" >"/opt/${APP}_version.txt" + rm -rf /opt/opengist${RELEASE}-linux-amd64.tar.gz + apt-get -y autoremove &>/dev/null + apt-get -y autoclean &>/dev/null + msg_ok "Updated ${APP} LXC" + + msg_info "Starting Service" + systemctl start opengist.service + msg_ok "Started Service" + + 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}:6157${CL}" diff --git a/ct/phpipam.sh b/ct/phpipam.sh new file mode 100644 index 000000000..cf9905fde --- /dev/null +++ b/ct/phpipam.sh @@ -0,0 +1,72 @@ +#!/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://phpipam.net/ + +# App Default Values +APP="phpIPAM" +var_tags="network" +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 update_script() { + header_info + check_container_storage + check_container_resources + if [[ ! -d /opt/phpipam ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + RELEASE=$(curl -s https://api.github.com/repos/phpipam/phpipam/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/phpipam/ /opt/phpipam-backup + wget -q "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip" + unzip -q "phpipam-v${RELEASE}.zip" + cp /opt/phpipam-backup/config.php /opt/phpipam + 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/phpipam-v${RELEASE}.zip" + rm -r /opt/phpipam-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/tandoor.sh b/ct/tandoor.sh index b55586b87..2f03e6cd9 100644 --- a/ct/tandoor.sh +++ b/ct/tandoor.sh @@ -45,6 +45,8 @@ function update_script() { cd /opt/tandoor/vue yarn install >/dev/null 2>&1 yarn build >/dev/null 2>&1 + cd /opt/tandoor + python3 version.py &>/dev/null systemctl restart gunicorn_tandoor msg_ok "Updated ${APP}" fi @@ -58,4 +60,4 @@ description msg_ok "Completed Successfully!\n" echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}" echo -e "${INFO}${YW} Access it using the following URL:${CL}" -echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${CL}" \ No newline at end of file +echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${CL}" diff --git a/ct/wordpress.sh b/ct/wordpress.sh new file mode 100644 index 000000000..8ff69de17 --- /dev/null +++ b/ct/wordpress.sh @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) +# Copyright (c) 2021-2025 communtiy-scripts ORG +# Author: MickLesk (Canbiz) +# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE +# Source: https://wordpress.org/ + +## App Default Values +APP="Wordpress" +var_tags="blog;cms" +var_disk="5" +var_cpu="2" +var_ram="2048" +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 /var/www/html/wordpress ]]; then + msg_error "No ${APP} Installation Found!" + exit + fi + msg_error "Wordpress should be updated via the user interface." + 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/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index 83aa05cec..38a93803c 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -6,7 +6,7 @@ export default function Footer() {