mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	Compare commits
	
		
			70 Commits
		
	
	
		
			2025-01-13
			...
			2025-01-15
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					959a7b4b14 | ||
| 
						 | 
					5da06e75e7 | ||
| 
						 | 
					2aed45fa61 | ||
| 
						 | 
					7614034784 | ||
| 
						 | 
					0f06725fdc | ||
| 
						 | 
					5c16955a8e | ||
| 
						 | 
					2c8aab24d0 | ||
| 
						 | 
					9cc07cc6e1 | ||
| 
						 | 
					047667c428 | ||
| 
						 | 
					147ba0e78d | ||
| 
						 | 
					d3b0becfe6 | ||
| 
						 | 
					d20d0428dc | ||
| 
						 | 
					0368ce36d1 | ||
| 
						 | 
					757b5bd267 | ||
| 
						 | 
					4d0632fea0 | ||
| 
						 | 
					69288b197f | ||
| 
						 | 
					12a61a1d71 | ||
| 
						 | 
					d186557488 | ||
| 
						 | 
					db6390f791 | ||
| 
						 | 
					41c4b11575 | ||
| 
						 | 
					bf89a037bd | ||
| 
						 | 
					e503ce3806 | ||
| 
						 | 
					c934085b16 | ||
| 
						 | 
					c57f0be737 | ||
| 
						 | 
					e6530e14dd | ||
| 
						 | 
					9174536e95 | ||
| 
						 | 
					aa3a3997f0 | ||
| 
						 | 
					37da2e5e1c | ||
| 
						 | 
					18538897ba | ||
| 
						 | 
					dbfb72807a | ||
| 
						 | 
					e756c49e50 | ||
| 
						 | 
					4ae131e102 | ||
| 
						 | 
					f498f349f3 | ||
| 
						 | 
					8e525611bd | ||
| 
						 | 
					910f3bb6f4 | ||
| 
						 | 
					c8319f044c | ||
| 
						 | 
					ac61a925cc | ||
| 
						 | 
					4ce474382a | ||
| 
						 | 
					424dc26720 | ||
| 
						 | 
					b9829165cf | ||
| 
						 | 
					3b1c43381e | ||
| 
						 | 
					cb496d74f4 | ||
| 
						 | 
					33cd0cb2f1 | ||
| 
						 | 
					325084f8ca | ||
| 
						 | 
					349cfb28b5 | ||
| 
						 | 
					2fff2079ef | ||
| 
						 | 
					13a6e31a99 | ||
| 
						 | 
					481138bff5 | ||
| 
						 | 
					c032db98a3 | ||
| 
						 | 
					434c938cde | ||
| 
						 | 
					647fb1cb5e | ||
| 
						 | 
					45916edef5 | ||
| 
						 | 
					78ed820bb0 | ||
| 
						 | 
					7ab5485fc3 | ||
| 
						 | 
					910e767bb4 | ||
| 
						 | 
					8c54d25bf5 | ||
| 
						 | 
					3c2db95345 | ||
| 
						 | 
					692f3caab6 | ||
| 
						 | 
					3830527ef2 | ||
| 
						 | 
					ed1a618f6d | ||
| 
						 | 
					76fa4c68d1 | ||
| 
						 | 
					53b96a98c0 | ||
| 
						 | 
					0f1eea7f09 | ||
| 
						 | 
					4c13164ad3 | ||
| 
						 | 
					97ca738332 | ||
| 
						 | 
					86706e6233 | ||
| 
						 | 
					13671c613b | ||
| 
						 | 
					364109877f | ||
| 
						 | 
					64297e7191 | ||
| 
						 | 
					e60dc6784d | 
@@ -1,66 +0,0 @@
 | 
			
		||||
name: Auto Update .app-headers and Create PR
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'ct/**.sh'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-app-headers:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      # Step 1: Checkout the 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: Ensure .app-headers file exists
 | 
			
		||||
      - name: Ensure .app-headers file exists
 | 
			
		||||
        run: |
 | 
			
		||||
          if [ ! -f ct/.app-headers ]; then
 | 
			
		||||
            echo "Creating .app-headers file."
 | 
			
		||||
            touch ct/.app-headers
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      # Step 4: Process the ct/*.sh files and update .app-headers
 | 
			
		||||
      - name: Update .app-headers with figlet output
 | 
			
		||||
        run: |
 | 
			
		||||
          echo "Updating .app-headers with figlet output."
 | 
			
		||||
          for script in ct/*.sh; do
 | 
			
		||||
            if grep -q 'APP=' "$script"; then
 | 
			
		||||
              APP_NAME=$(grep -oP 'APP=\K\w+' "$script")
 | 
			
		||||
              echo "Processing $script for APP: \"$APP_NAME\""
 | 
			
		||||
              figlet "$APP_NAME" >> ct/.app-headers
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
      # Step 5: Check out and merge main into the update-app-headers branch without committing
 | 
			
		||||
      - name: Merge main into update-app-headers
 | 
			
		||||
        run: |
 | 
			
		||||
          git fetch origin
 | 
			
		||||
          git checkout update-app-headers
 | 
			
		||||
          git merge origin/main --no-ff --no-commit -m "Merge main into update-app-headers"
 | 
			
		||||
          echo "Merge complete. Please review and commit the changes manually."
 | 
			
		||||
 | 
			
		||||
      # Step 6: Check if a PR exists and create one if it doesn't
 | 
			
		||||
      - name: Create Pull Request if not exists
 | 
			
		||||
        run: |
 | 
			
		||||
          PR_EXISTS=$(gh pr list --head "update-app-headers" --json number --jq '.[].number')
 | 
			
		||||
 | 
			
		||||
          if [ -z "$PR_EXISTS" ]; then
 | 
			
		||||
            echo "Creating a new PR."
 | 
			
		||||
            PR_URL=$(gh pr create --title "[core]: update .app-headers to latest version" \
 | 
			
		||||
                                   --body "This PR automatically updates the .app-headers file." \
 | 
			
		||||
                                   --head update-app-headers \
 | 
			
		||||
                                   --base main)
 | 
			
		||||
            echo "PR created: $PR_URL"
 | 
			
		||||
          else
 | 
			
		||||
            echo "PR already exists."
 | 
			
		||||
          fi
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
name: Update .app-headers with figlet output
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  workflow_run:
 | 
			
		||||
    workflows: ["Merge main into update-app-headers"]
 | 
			
		||||
    types:
 | 
			
		||||
      - completed
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-app-headers:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v2
 | 
			
		||||
 | 
			
		||||
      - name: Ensure .app-headers file exists silently
 | 
			
		||||
        run: |
 | 
			
		||||
          if [ ! -f ct/.app-headers ]; then
 | 
			
		||||
            touch ct/.app-headers
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
      - name: Update .app-headers with figlet output silently
 | 
			
		||||
        run: |
 | 
			
		||||
          for script in ct/*.sh; do
 | 
			
		||||
            if grep -q 'APP=' "$script"; then
 | 
			
		||||
              APP_NAME=$(grep -oP 'APP=\K\w+' "$script")
 | 
			
		||||
              if [ ! -z "$APP_NAME" ]; then
 | 
			
		||||
                echo "Adding $APP_NAME to .app-headers"
 | 
			
		||||
                figlet "$APP_NAME" >> ct/.app-headers 2>/dev/null || echo "figlet failed for $APP_NAME"
 | 
			
		||||
              fi
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
							
								
								
									
										82
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										82
									
								
								.github/workflows/auto-update-app-headers.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										60
									
								
								.github/workflows/backup/check_and_update_json_date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.github/workflows/backup/check_and_update_json_date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
							
								
								
									
										60
									
								
								.github/workflows/backup/shellcheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								.github/workflows/backup/shellcheck.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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"
 | 
			
		||||
							
								
								
									
										45
									
								
								.github/workflows/check_and_update_json_date.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										45
									
								
								.github/workflows/check_and_update_json_date.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,45 +0,0 @@
 | 
			
		||||
name: Check and Update JSON Date
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    types: [synchronize, opened, reopened, edited]
 | 
			
		||||
    paths:
 | 
			
		||||
    - "json/*.json"
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update-date:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout code
 | 
			
		||||
        uses: actions/checkout@v3
 | 
			
		||||
 | 
			
		||||
      - name: Set up Python
 | 
			
		||||
        uses: actions/setup-python@v4
 | 
			
		||||
        with:
 | 
			
		||||
          python-version: 3.12
 | 
			
		||||
 | 
			
		||||
      - name: Install dependencies
 | 
			
		||||
        run: pip install jq
 | 
			
		||||
 | 
			
		||||
      - name: Find and Update JSON files in /json folder
 | 
			
		||||
        run: |
 | 
			
		||||
          TODAY=$(date +%Y-%m-%d)
 | 
			
		||||
          for file in $(git diff --diff-filter=A --name-only HEAD | grep '^json/.*\.json$'); do
 | 
			
		||||
            if jq -e '.date_created' $file > /dev/null 2>&1; then
 | 
			
		||||
              echo "Updating date_created in $file"
 | 
			
		||||
              jq --arg date "$TODAY" '.date_created = $date' $file > temp.json && mv temp.json $file
 | 
			
		||||
              git add $file
 | 
			
		||||
            fi
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes
 | 
			
		||||
        run: |
 | 
			
		||||
          git config user.name "GitHub Action"
 | 
			
		||||
          git config user.email "action@github.com"
 | 
			
		||||
          git commit -m "Update date_created in new JSON files" || echo "No changes to commit"
 | 
			
		||||
 | 
			
		||||
      - name: Push changes
 | 
			
		||||
        uses: ad-m/github-push-action@v0.6.0
 | 
			
		||||
        with:
 | 
			
		||||
          github_token: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
							
								
								
									
										29
									
								
								.github/workflows/merge-main.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										29
									
								
								.github/workflows/merge-main.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,29 +0,0 @@
 | 
			
		||||
name: Merge main into update-app-headers
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  push:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    paths:
 | 
			
		||||
      - 'ct/**.sh'
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  merge-main:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Checkout repository
 | 
			
		||||
        uses: actions/checkout@v2
 | 
			
		||||
 | 
			
		||||
      - name: Set up Git
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.name "GitHub Actions"
 | 
			
		||||
          git config --global user.email "actions@github.com"
 | 
			
		||||
 | 
			
		||||
      - name: Merge main into update-app-headers silently
 | 
			
		||||
        run: |
 | 
			
		||||
          git fetch origin
 | 
			
		||||
          git checkout update-app-headers
 | 
			
		||||
          git merge origin/main --allow-unrelated-histories --no-commit -m "Merge main into update-app-headers"
 | 
			
		||||
          git push origin update-app-headers > /dev/null 2>&1 || true
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
							
								
								
									
										23
									
								
								.github/workflows/scripts/update_json_date.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										23
									
								
								.github/workflows/scripts/update_json_date.sh
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -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
 | 
			
		||||
							
								
								
									
										62
									
								
								.github/workflows/shellcheck.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								.github/workflows/shellcheck.yml
									
									
									
									
										vendored
									
									
								
							@@ -1,62 +0,0 @@
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
    # This is a manual copy from https://github.com/ludeeus/action-shellcheck/blob/00b27aa7cb85167568cb48a3838b75f4265f2bca/action.yaml#L59
 | 
			
		||||
    # Why? Because the action is not capable of adding ONLY a list of files.
 | 
			
		||||
    # We aim to only check the files that have changed.
 | 
			
		||||
    # This is used as we deal with a codebase that throws a lot of warnings.
 | 
			
		||||
    # Checking only the changed files is a good compromise to improve the codebase over time.
 | 
			
		||||
    - name: Download shellcheck
 | 
			
		||||
      shell: bash
 | 
			
		||||
      env:
 | 
			
		||||
        INPUT_VERSION: "v0.10.0"
 | 
			
		||||
      run: |
 | 
			
		||||
        if [[ "${{ runner.os }}" == "macOS" ]]; then
 | 
			
		||||
          osvariant="darwin"
 | 
			
		||||
        else
 | 
			
		||||
          osvariant="linux"
 | 
			
		||||
        fi
 | 
			
		||||
 | 
			
		||||
        baseurl="https://github.com/koalaman/shellcheck/releases/download"
 | 
			
		||||
 | 
			
		||||
        curl -Lso "${{ github.action_path }}/sc.tar.xz" \
 | 
			
		||||
          "${baseurl}/${INPUT_VERSION}/shellcheck-${INPUT_VERSION}.${osvariant}.x86_64.tar.xz"
 | 
			
		||||
 | 
			
		||||
        tar -xf "${{ github.action_path }}/sc.tar.xz" -C "${{ github.action_path }}"
 | 
			
		||||
        mv "${{ github.action_path }}/shellcheck-${INPUT_VERSION}/shellcheck" \
 | 
			
		||||
          "${{ github.action_path }}/shellcheck"
 | 
			
		||||
 | 
			
		||||
    - name: Display shellcheck version
 | 
			
		||||
      shell: bash
 | 
			
		||||
      run: |
 | 
			
		||||
        "${{ github.action_path }}/shellcheck" --version
 | 
			
		||||
 | 
			
		||||
    - name: Run ShellCheck
 | 
			
		||||
      if: steps.changed-files-specific.outputs.any_changed == 'true'
 | 
			
		||||
      env:
 | 
			
		||||
        ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
 | 
			
		||||
      run: |
 | 
			
		||||
        echo "${ALL_CHANGED_FILES}" | xargs shellcheck
 | 
			
		||||
							
								
								
									
										68
									
								
								.github/workflows/update_json_date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										68
									
								
								.github/workflows/update_json_date.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,68 @@
 | 
			
		||||
name: Update JSON Date in PR
 | 
			
		||||
 | 
			
		||||
on:
 | 
			
		||||
  pull_request:
 | 
			
		||||
    branches:
 | 
			
		||||
      - main
 | 
			
		||||
    types:
 | 
			
		||||
      - opened
 | 
			
		||||
      - synchronize
 | 
			
		||||
      - reopened
 | 
			
		||||
 | 
			
		||||
jobs:
 | 
			
		||||
  update_json:
 | 
			
		||||
    runs-on: ubuntu-latest
 | 
			
		||||
 | 
			
		||||
    steps:
 | 
			
		||||
      - name: Check out repository
 | 
			
		||||
        uses: actions/checkout@v4
 | 
			
		||||
 | 
			
		||||
      - name: Configure Git user
 | 
			
		||||
        run: |
 | 
			
		||||
          git config --global user.email "github-actions[bot]@users.noreply.github.com"
 | 
			
		||||
          git config --global user.name "github-actions[bot]"
 | 
			
		||||
 | 
			
		||||
      - name: Get list of changed files in PR
 | 
			
		||||
        id: files
 | 
			
		||||
        uses: actions/github-script@v7
 | 
			
		||||
        with:
 | 
			
		||||
          script: |
 | 
			
		||||
            const prNumber = context.payload.pull_request.number;
 | 
			
		||||
            const prFiles = await github.rest.pulls.listFiles({
 | 
			
		||||
              owner: context.repo.owner,
 | 
			
		||||
              repo: context.repo.repo,
 | 
			
		||||
              pull_number: prNumber,
 | 
			
		||||
            });
 | 
			
		||||
 | 
			
		||||
            // Filter for JSON files only
 | 
			
		||||
            const changedJsonFiles = prFiles.data
 | 
			
		||||
              .filter(file => file.filename.endsWith('.json'))
 | 
			
		||||
              .map(file => file.filename);
 | 
			
		||||
 | 
			
		||||
            core.setOutput('changed_files', changedJsonFiles.join('\n'));
 | 
			
		||||
            console.log('Changed JSON files:', changedJsonFiles);
 | 
			
		||||
 | 
			
		||||
      - name: Update dates in changed JSON files
 | 
			
		||||
        run: |
 | 
			
		||||
          changed_files="${{ steps.files.outputs.changed_files }}"
 | 
			
		||||
          if [[ -z "$changed_files" ]]; then
 | 
			
		||||
            echo "No JSON files changed in this PR. Exiting."
 | 
			
		||||
            exit 0
 | 
			
		||||
          fi
 | 
			
		||||
 | 
			
		||||
          for file in $changed_files; do
 | 
			
		||||
            echo "Updating $file with current date."
 | 
			
		||||
            # Your logic to update the file
 | 
			
		||||
            jq '.date_created = "'"$(date +%Y-%m-%d)"'"' "$file" > tmp.$$.json && mv tmp.$$.json "$file"
 | 
			
		||||
          done
 | 
			
		||||
 | 
			
		||||
      - name: Commit changes if updated
 | 
			
		||||
        run: |
 | 
			
		||||
          git add *.json
 | 
			
		||||
          git diff --cached --quiet || git commit -m "Update JSON dates"
 | 
			
		||||
 | 
			
		||||
      - name: Push changes
 | 
			
		||||
        env:
 | 
			
		||||
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
 | 
			
		||||
        run: |
 | 
			
		||||
          git push
 | 
			
		||||
							
								
								
									
										39
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								CHANGELOG.md
									
									
									
									
									
								
							@@ -16,6 +16,45 @@ 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-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
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										71
									
								
								ct/opengist.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										71
									
								
								ct/opengist.sh
									
									
									
									
									
										Normal file
									
								
							@@ -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}"
 | 
			
		||||
							
								
								
									
										45
									
								
								ct/wordpress.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								ct/wordpress.sh
									
									
									
									
									
										Normal file
									
								
							@@ -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}"
 | 
			
		||||
@@ -6,7 +6,7 @@ export default function Footer() {
 | 
			
		||||
    <div className="supports-backdrop-blur:bg-background/90 mt-auto flex border-t border-border bg-background/40 py-6 backdrop-blur-lg">
 | 
			
		||||
      <div className="flex w-full justify-between">
 | 
			
		||||
        <div className="mx-6 w-full max-w-7xl text-sm text-muted-foreground">
 | 
			
		||||
          Website build by the community. The source code is avaliable on{" "}
 | 
			
		||||
          Website built by the community. The source code is avaliable on{" "}
 | 
			
		||||
          <Link
 | 
			
		||||
            href={`https://github.com/community-scripts/${basePath}`}
 | 
			
		||||
            target="_blank"
 | 
			
		||||
 
 | 
			
		||||
@@ -33,6 +33,7 @@ $STD apt-get install -y \
 | 
			
		||||
$STD pip install jaraco.stream
 | 
			
		||||
$STD pip install python-Levenshtein
 | 
			
		||||
$STD pip install soupsieve
 | 
			
		||||
$STD pip install pypdf
 | 
			
		||||
msg_ok "Installed Python3 Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing LazyLibrarian"
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										61
									
								
								install/opengist-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										61
									
								
								install/opengist-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,61 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# Copyright (c) 2021-2025 community-scripts ORG
 | 
			
		||||
# Author: Jonathan (jd-apprentice)
 | 
			
		||||
# 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 \
 | 
			
		||||
    mc \
 | 
			
		||||
    curl \
 | 
			
		||||
    sudo \
 | 
			
		||||
    git
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Install Opengist"
 | 
			
		||||
RELEASE=$(curl -s https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
wget -q "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz"
 | 
			
		||||
$STD tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
 | 
			
		||||
mv opengist /opt/opengist
 | 
			
		||||
chmod +x /opt/opengist/opengist
 | 
			
		||||
mkdir -p /opt/opengist-data
 | 
			
		||||
msg_ok "Installed Opengist"
 | 
			
		||||
 | 
			
		||||
msg_info "Creating Service"
 | 
			
		||||
 | 
			
		||||
sed -i 's|opengist-home:.*|opengist-home: /opt/opengist-data|' /opt/opengist/config.yml
 | 
			
		||||
 | 
			
		||||
cat <<EOF >/etc/systemd/system/opengist.service
 | 
			
		||||
[Unit]
 | 
			
		||||
Description=Opengist server to manage your Gists
 | 
			
		||||
After=network.target
 | 
			
		||||
 | 
			
		||||
[Service]
 | 
			
		||||
WorkingDirectory=/opt/opengist
 | 
			
		||||
ExecStart=/opt/opengist/opengist --config /opt/opengist/config.yml
 | 
			
		||||
Restart=always
 | 
			
		||||
User=root
 | 
			
		||||
 | 
			
		||||
[Install]
 | 
			
		||||
WantedBy=multi-user.target
 | 
			
		||||
EOF
 | 
			
		||||
systemctl enable -q --now opengist.service
 | 
			
		||||
msg_ok "Created Service"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /opengist${RELEASE}-linux-amd64.tar.gz
 | 
			
		||||
$STD apt-get -y autoremove
 | 
			
		||||
$STD apt-get -y autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
@@ -15,11 +15,13 @@ 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 gpg
 | 
			
		||||
$STD apt-get install -y git
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  gpg \
 | 
			
		||||
  git \
 | 
			
		||||
  ffmpeg
 | 
			
		||||
msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Python3 Dependencies"
 | 
			
		||||
 
 | 
			
		||||
@@ -74,6 +74,7 @@ $STD pnpm build:server
 | 
			
		||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
 | 
			
		||||
cat <<EOF >/opt/tianji/src/server/.env
 | 
			
		||||
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?schema=public"
 | 
			
		||||
OPENAI_API_KEY=""
 | 
			
		||||
JWT_SECRET="$TIANJI_SECRET"
 | 
			
		||||
EOF
 | 
			
		||||
cd /opt/tianji/src/server
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										85
									
								
								install/wordpress-install.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										85
									
								
								install/wordpress-install.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,85 @@
 | 
			
		||||
#!/usr/bin/env bash
 | 
			
		||||
 | 
			
		||||
# 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/
 | 
			
		||||
 | 
			
		||||
source /dev/stdin <<< "$FUNCTIONS_FILE_PATH"
 | 
			
		||||
color
 | 
			
		||||
verb_ip6
 | 
			
		||||
catch_errors
 | 
			
		||||
setting_up_container
 | 
			
		||||
network_check
 | 
			
		||||
update_os
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Dependencies (Patience)"
 | 
			
		||||
$STD apt-get install -y \
 | 
			
		||||
  curl \
 | 
			
		||||
  unzip \
 | 
			
		||||
  sudo \
 | 
			
		||||
  mc \
 | 
			
		||||
  apache2 \
 | 
			
		||||
  php8.2-{bcmath,common,cli,curl,fpm,gd,snmp,imap,mbstring,mysql,xml,zip} \
 | 
			
		||||
  libapache2-mod-php \
 | 
			
		||||
  mariadb-server 
 | 
			
		||||
 msg_ok "Installed Dependencies"
 | 
			
		||||
 | 
			
		||||
msg_info "Setting up Database"
 | 
			
		||||
DB_NAME=wordpress_db
 | 
			
		||||
DB_USER=wordpress
 | 
			
		||||
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 BY '$DB_PASS';"
 | 
			
		||||
$STD mysql -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost'; FLUSH PRIVILEGES;"
 | 
			
		||||
{
 | 
			
		||||
    echo "WordPress Credentials"
 | 
			
		||||
    echo "Database User: $DB_USER"
 | 
			
		||||
    echo "Database Password: $DB_PASS"
 | 
			
		||||
    echo "Database Name: $DB_NAME"
 | 
			
		||||
} >> ~/wordpress.creds
 | 
			
		||||
msg_ok "Set up Database"
 | 
			
		||||
 | 
			
		||||
msg_info "Installing Wordpress (Patience)"
 | 
			
		||||
cd /var/www/html
 | 
			
		||||
wget -q https://wordpress.org/latest.zip
 | 
			
		||||
unzip -q latest.zip
 | 
			
		||||
chown -R www-data:www-data wordpress/
 | 
			
		||||
cd /var/www/html/wordpress
 | 
			
		||||
find . -type d -exec chmod 755 {} \;
 | 
			
		||||
find . -type f -exec chmod 644 {} \;
 | 
			
		||||
mv wp-config-sample.php wp-config.php
 | 
			
		||||
sed -i -e "s|^define( 'DB_NAME', '.*' );|define( 'DB_NAME', '$DB_NAME' );|" \
 | 
			
		||||
       -e "s|^define( 'DB_USER', '.*' );|define( 'DB_USER', '$DB_USER' );|" \
 | 
			
		||||
       -e "s|^define( 'DB_PASSWORD', '.*' );|define( 'DB_PASSWORD', '$DB_PASS' );|" \
 | 
			
		||||
       /var/www/html/wordpress/wp-config.php
 | 
			
		||||
msg_ok "Installed Wordpress"
 | 
			
		||||
 | 
			
		||||
msg_info "Setup Services"
 | 
			
		||||
cat <<EOF > /etc/apache2/sites-available/wordpress.conf
 | 
			
		||||
<VirtualHost *:80>
 | 
			
		||||
    ServerName yourdomain.com
 | 
			
		||||
    DocumentRoot /var/www/html/wordpress
 | 
			
		||||
 | 
			
		||||
    <Directory /var/www/html/wordpress>
 | 
			
		||||
        AllowOverride All
 | 
			
		||||
    </Directory>
 | 
			
		||||
 | 
			
		||||
    ErrorLog \${APACHE_LOG_DIR}/error.log
 | 
			
		||||
    CustomLog \${APACHE_LOG_DIR}/access.log combined
 | 
			
		||||
 | 
			
		||||
</VirtualHost>
 | 
			
		||||
EOF
 | 
			
		||||
$STD a2ensite wordpress.conf
 | 
			
		||||
$STD a2dissite 000-default.conf
 | 
			
		||||
systemctl reload apache2
 | 
			
		||||
msg_ok "Created Services"
 | 
			
		||||
 | 
			
		||||
motd_ssh
 | 
			
		||||
customize
 | 
			
		||||
 | 
			
		||||
msg_info "Cleaning up"
 | 
			
		||||
rm -rf /var/www/html/latest.zip
 | 
			
		||||
$STD apt-get autoremove
 | 
			
		||||
$STD apt-get autoclean
 | 
			
		||||
msg_ok "Cleaned"
 | 
			
		||||
							
								
								
									
										34
									
								
								json/opengist.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								json/opengist.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "Opengist",
 | 
			
		||||
    "slug": "opengist",
 | 
			
		||||
    "categories": [
 | 
			
		||||
        3
 | 
			
		||||
    ],
 | 
			
		||||
    "date_created": "2025-01-14",
 | 
			
		||||
    "type": "ct",
 | 
			
		||||
    "updateable": false,
 | 
			
		||||
    "privileged": false,
 | 
			
		||||
    "interface_port": 6157,
 | 
			
		||||
    "documentation": null,
 | 
			
		||||
    "website": "https://opengist.io/",
 | 
			
		||||
    "logo": "https://raw.githubusercontent.com/thomiceli/opengist/master/public/opengist.svg",
 | 
			
		||||
    "description": "Self-hosted pastebin powered by Git, open-source alternative to Github Gist.",
 | 
			
		||||
    "install_methods": [
 | 
			
		||||
        {
 | 
			
		||||
            "type": "default",
 | 
			
		||||
            "script": "ct/opengist.sh",
 | 
			
		||||
            "resources": {
 | 
			
		||||
                "cpu": 1,
 | 
			
		||||
                "ram": 1024,
 | 
			
		||||
                "hdd": 8,
 | 
			
		||||
                "os": "debian",
 | 
			
		||||
                "version": "12"
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "default_credentials": {
 | 
			
		||||
        "username": null,
 | 
			
		||||
        "password": null
 | 
			
		||||
    },
 | 
			
		||||
    "notes": []
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										34
									
								
								json/wordpress.json
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								json/wordpress.json
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
  "name": "Wordpress",
 | 
			
		||||
  "slug": "wordpress",
 | 
			
		||||
  "categories": [
 | 
			
		||||
    14
 | 
			
		||||
  ],
 | 
			
		||||
  "date_created": "2025-01-14",
 | 
			
		||||
  "type": "ct",
 | 
			
		||||
  "updateable": true,
 | 
			
		||||
  "privileged": false,
 | 
			
		||||
  "interface_port": 80,
 | 
			
		||||
  "documentation": "https://wordpress.org/documentation/",
 | 
			
		||||
  "website": "https://wordpress.org/",
 | 
			
		||||
  "logo": "https://s.w.org/style/images/about/WordPress-logotype-simplified.png",
 | 
			
		||||
  "description": "WordPress is the simplest, most popular way to create your own website or blog. In fact, WordPress powers over 43.6% of all the websites on the Internet. Yes – more than one in four websites that you visit are likely powered by WordPress.\n\nOn a slightly more technical level, WordPress is an open-source content management system licensed under GPLv2, which means that anyone can use or modify the WordPress software for free.",
 | 
			
		||||
  "install_methods": [
 | 
			
		||||
    {
 | 
			
		||||
      "type": "default",
 | 
			
		||||
      "script": "ct/wordpress.sh",
 | 
			
		||||
      "resources": {
 | 
			
		||||
        "cpu": 2,
 | 
			
		||||
        "ram": 2048,
 | 
			
		||||
        "hdd": 5,
 | 
			
		||||
        "os": "Debian",
 | 
			
		||||
        "version": "12"
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  ],
 | 
			
		||||
  "default_credentials": {
 | 
			
		||||
    "username": null,
 | 
			
		||||
    "password": null
 | 
			
		||||
  },
 | 
			
		||||
  "notes": []
 | 
			
		||||
}
 | 
			
		||||
@@ -1,4 +1,4 @@
 | 
			
		||||
### Generated on 01-10-2025
 | 
			
		||||
### Generated on 01-14-2025
 | 
			
		||||
##################################################
 | 
			
		||||
 | 
			
		||||
### 2fauth.sh
 | 
			
		||||
@@ -529,6 +529,15 @@ APP=Frigate
 | 
			
		||||
/_/   /_/  /_/\__, /\__,_/\__/\___/ 
 | 
			
		||||
             /____/                 
 | 
			
		||||
 | 
			
		||||
### ghost.sh
 | 
			
		||||
APP=Ghost
 | 
			
		||||
   ________               __ 
 | 
			
		||||
  / ____/ /_  ____  _____/ /_
 | 
			
		||||
 / / __/ __ \/ __ \/ ___/ __/
 | 
			
		||||
/ /_/ / / / / /_/ (__  ) /_  
 | 
			
		||||
\____/_/ /_/\____/____/\__/  
 | 
			
		||||
                             
 | 
			
		||||
 | 
			
		||||
### gitea.sh
 | 
			
		||||
APP=Gitea
 | 
			
		||||
   _______ __            
 | 
			
		||||
@@ -1222,6 +1231,15 @@ APP=OneDev
 | 
			
		||||
\____/_/ /_/\___/_____/\___/|___/  
 | 
			
		||||
                                   
 | 
			
		||||
 | 
			
		||||
### opengist.sh
 | 
			
		||||
APP=Opengist
 | 
			
		||||
   ____                         _      __ 
 | 
			
		||||
  / __ \____  ___  ____  ____ _(_)____/ /_
 | 
			
		||||
 / / / / __ \/ _ \/ __ \/ __ `/ / ___/ __/
 | 
			
		||||
/ /_/ / /_/ /  __/ / / / /_/ / (__  ) /_  
 | 
			
		||||
\____/ .___/\___/_/ /_/\__, /_/____/\__/  
 | 
			
		||||
    /_/               /____/              
 | 
			
		||||
 | 
			
		||||
### openhab.sh
 | 
			
		||||
APP=openHAB
 | 
			
		||||
                          __  _____    ____ 
 | 
			
		||||
@@ -1948,6 +1966,15 @@ APP=Wireguard
 | 
			
		||||
|__/|__/_/_/   \___/\__, /\__,_/\__,_/_/   \__,_/   
 | 
			
		||||
                   /____/                           
 | 
			
		||||
 | 
			
		||||
### wordpress.sh
 | 
			
		||||
APP=Wordpress
 | 
			
		||||
 _       __               __                         
 | 
			
		||||
| |     / /___  _________/ /___  ________  __________
 | 
			
		||||
| | /| / / __ \/ ___/ __  / __ \/ ___/ _ \/ ___/ ___/
 | 
			
		||||
| |/ |/ / /_/ / /  / /_/ / /_/ / /  /  __(__  |__  ) 
 | 
			
		||||
|__/|__/\____/_/   \__,_/ .___/_/   \___/____/____/  
 | 
			
		||||
                       /_/                           
 | 
			
		||||
 | 
			
		||||
### yunohost.sh
 | 
			
		||||
APP=YunoHost
 | 
			
		||||
__  __                  __  __           __ 
 | 
			
		||||
 
 | 
			
		||||
@@ -629,9 +629,14 @@ advanced_settings() {
 | 
			
		||||
 | 
			
		||||
  if ADV_TAGS=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Custom Tags?[If you remove all, there will be no tags!]" 8 58 ${TAGS} --title "Advanced Tags" 3>&1 1>&2 2>&3); then
 | 
			
		||||
    if [ -n "${ADV_TAGS}" ]; then
 | 
			
		||||
        ADV_TAGS=${ADV_TAGS:-""} 
 | 
			
		||||
        ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]')
 | 
			
		||||
      ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]') # Remove whitespace from ADV_TAGS
 | 
			
		||||
      if [[ "$ADV_TAGS" != *"community-script"* ]]; then
 | 
			
		||||
        TAGS="community-script;${ADV_TAGS}"
 | 
			
		||||
      else
 | 
			
		||||
        TAGS="${ADV_TAGS}" # ADV_TAGS already contains "community-script"
 | 
			
		||||
      fi
 | 
			
		||||
    else
 | 
			
		||||
      TAGS="community-script;"
 | 
			
		||||
    fi
 | 
			
		||||
      echo -e "${NETWORK}${BOLD}${DGN}Tags: ${BGN}$TAGS${CL}"
 | 
			
		||||
    else
 | 
			
		||||
@@ -822,6 +827,7 @@ build_container() {
 | 
			
		||||
  export PASSWORD="$PW"
 | 
			
		||||
  export VERBOSE="$VERB"
 | 
			
		||||
  export SSH_ROOT="${SSH}"
 | 
			
		||||
  export SSH_AUTHORIZED_KEY
 | 
			
		||||
  export CTID="$CT_ID"
 | 
			
		||||
  export CTTYPE="$CT_TYPE"
 | 
			
		||||
  export PCT_OSTYPE="$var_os"
 | 
			
		||||
 
 | 
			
		||||
@@ -255,4 +255,11 @@ EOF
 | 
			
		||||
  fi
 | 
			
		||||
  echo "bash -c \"\$(wget -qLO - https://github.com/community-scripts/ProxmoxVE/raw/main/ct/${app}.sh)\"" >/usr/bin/update
 | 
			
		||||
  chmod +x /usr/bin/update
 | 
			
		||||
 | 
			
		||||
  if [[ -n "${SSH_AUTHORIZED_KEY}" ]]; then
 | 
			
		||||
    mkdir -p /root/.ssh
 | 
			
		||||
    echo "${SSH_AUTHORIZED_KEY}" > /root/.ssh/authorized_keys
 | 
			
		||||
    chmod 700 /root/.ssh
 | 
			
		||||
    chmod 600 /root/.ssh/authorized_keys
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user