mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-01 11:37:38 +00:00
Compare commits
133 Commits
2025-01-11
...
2025-01-18
Author | SHA1 | Date | |
---|---|---|---|
f8f166e26f | |||
b97d40bf5a | |||
0e443536cc | |||
0b73d9f689 | |||
5c11b67507 | |||
2f20db8a42 | |||
b04dc0261b | |||
81b271a9ef | |||
75590a8ff8 | |||
d1f5556ce3 | |||
e683fd900f | |||
643e0f5ac8 | |||
bd301942c5 | |||
8cb63aa07c | |||
ce7bb6612d | |||
a6bd47e0c7 | |||
ed9c083dda | |||
63b5024bf2 | |||
1049558407 | |||
b93b1021a3 | |||
7bb0cc32d2 | |||
779721cea5 | |||
22b7155203 | |||
1bb911e531 | |||
023c3fc52d | |||
258b1bd9fd | |||
6d4eb9c3ee | |||
15faa76b69 | |||
393f6d74c9 | |||
f51762420a | |||
f8c10ca80b | |||
3fca76dbbc | |||
b57689ec50 | |||
1f8f593116 | |||
330315c615 | |||
504d47d246 | |||
ab206530e0 | |||
f5b78d5dcc | |||
3f9863ebf9 | |||
786e8963b9 | |||
6cc4244f70 | |||
f5a260a399 | |||
f1f8f78420 | |||
6c42b5c21a | |||
24d24421d1 | |||
9e4c627323 | |||
2551bf6f9f | |||
8533380813 | |||
f65abd9ac8 | |||
85387563f0 | |||
5977f8f936 | |||
a15a59e615 | |||
14dfaa9bde | |||
75778976d0 | |||
c45085a51d | |||
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 | |||
2f620240a8 | |||
07c9dc4d0a | |||
8caf5e59b3 | |||
f8ab39e4d6 | |||
e47d7c4452 | |||
ac64a9de31 | |||
737625024e | |||
6958021528 |
1
.github/CONTRIBUTING.md
vendored
1
.github/CONTRIBUTING.md
vendored
@ -2,6 +2,7 @@
|
||||
# Community Scripts Contribution Guide
|
||||
|
||||
## **Welcome to the communty-scripts Repository!**
|
||||
|
||||
📜 These documents outline the essential coding standards for all our scripts and JSON files. Adhering to these standards ensures that our codebase remains consistent, readable, and maintainable. By following these guidelines, we can improve collaboration, reduce errors, and enhance the overall quality of our project.
|
||||
|
||||
### Why Coding Standards Matter
|
||||
|
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
4
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@ -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:
|
||||
|
4
.github/autolabeler-config.json
vendored
4
.github/autolabeler-config.json
vendored
@ -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": []
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
39
.github/pull_request_template.md
vendored
39
.github/pull_request_template.md
vendored
@ -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.
|
||||
|
||||
|
@ -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
|
32
.github/workflows/shellcheck.yml
vendored
32
.github/workflows/shellcheck.yml
vendored
@ -1,32 +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: 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
|
48
.github/workflows/update_json_date.yml.bak
vendored
Normal file
48
.github/workflows/update_json_date.yml.bak
vendored
Normal file
@ -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 }}
|
105
CHANGELOG.md
105
CHANGELOG.md
@ -16,6 +16,111 @@ 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-18
|
||||
|
||||
### Changed
|
||||
|
||||
### 💥 Breaking Changes
|
||||
|
||||
- **READ GUIDE FIRST** breaking change: Homeassistant-Core upgrade os and python3 [@MickLesk](https://github.com/MickLesk) ([#1550](https://github.com/community-scripts/ProxmoxVE/pull/1550))
|
||||
- Update Openwrt: Delete lines that do WAN input and forward accept [@chackl1990](https://github.com/chackl1990) ([#1540](https://github.com/community-scripts/ProxmoxVE/pull/1540))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- added cifs support in ubuntu2404-vm.sh [@plonxyz](https://github.com/plonxyz) ([#1461](https://github.com/community-scripts/ProxmoxVE/pull/1461))
|
||||
- Fix linkwarden update [@burgerga](https://github.com/burgerga) ([#1565](https://github.com/community-scripts/ProxmoxVE/pull/1565))
|
||||
- [jellyseerr] Update nodejs if not up-to-date [@makstech](https://github.com/makstech) ([#1563](https://github.com/community-scripts/ProxmoxVE/pull/1563))
|
||||
- Update VM Tags [@oOStroudyOo](https://github.com/oOStroudyOo) ([#1562](https://github.com/community-scripts/ProxmoxVE/pull/1562))
|
||||
- Update apt-cacher-ng.sh: Typo/Missing $ [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1545](https://github.com/community-scripts/ProxmoxVE/pull/1545))
|
||||
|
||||
## 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
|
||||
|
162
README.md
162
README.md
@ -7,106 +7,98 @@
|
||||
</div>
|
||||
|
||||
<div style="border: 2px solid #d1d5db; padding: 20px; border-radius: 8px; background-color: #f9fafb;">
|
||||
<h2 align="center">Proxmox VE Helper-Scripts: A Community Legacy</h2>
|
||||
<p>Dear Community,</p>
|
||||
<p>In agreement with <a href="https://github.com/tteck">tteck</a> and <a href="https://github.com/community-scripts">Community-Scripts</a>, this project has now transitioned into a community-driven effort. We aim to continue his work, building on the foundation he laid to support Proxmox users worldwide. Tteck sadly <a href="https://github.com/community-scripts/ProxmoxVE/discussions/237">passed away in early November 2024</a>. This project will be a memorial for his incredible contribution to the community.</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://helper-scripts.com">
|
||||
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTING.md">
|
||||
<img src="https://img.shields.io/badge/Contribute-ff4785?style=for-the-badge&logo=git&logoColor=white" alt="Contribute" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/USER_SUBMITTED_GUIDES.md">
|
||||
<img src="https://img.shields.io/badge/Guides-0077b5?style=for-the-badge&logo=read-the-docs&logoColor=white" alt="Guides" />
|
||||
</a>
|
||||
<a href="https://discord.gg/UHrpNWGwkH">
|
||||
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
|
||||
<img src="https://img.shields.io/badge/Changelog-6c5ce7?style=for-the-badge&logo=git&logoColor=white" alt="Changelog" />
|
||||
</a>
|
||||
</p>
|
||||
|
||||
<hr>
|
||||
|
||||
## 🚀 Introduction
|
||||
|
||||
**Proxmox VE Helper-Scripts** is a community-driven initiative that simplifies the setup of Proxmox Virtual Environment (VE). Originally created by [tteck](https://github.com/tteck), these scripts automate and streamline the process of creating and configuring Linux containers (LXC) and virtual machines (VMs) on Proxmox VE.
|
||||
<h2 align="center">Proxmox VE Helper-Scripts</h2>
|
||||
<p align="center">A Community Legacy in Memory of @tteck</p>
|
||||
<p align="center">
|
||||
<a href="https://helper-scripts.com">
|
||||
<img src="https://img.shields.io/badge/Website-4c9b3f?style=for-the-badge&logo=github&logoColor=white" alt="Website" />
|
||||
</a>
|
||||
<a href="https://discord.gg/UHrpNWGwkH">
|
||||
<img src="https://img.shields.io/badge/Discord-7289da?style=for-the-badge&logo=discord&logoColor=white" alt="Discord" />
|
||||
</a>
|
||||
<a href="https://ko-fi.com/community_scripts">
|
||||
<img src="https://img.shields.io/badge/Donate-FF5F5F?style=for-the-badge&logo=ko-fi&logoColor=white" alt="Donate" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/.github/CONTRIBUTING.md">
|
||||
<img src="https://img.shields.io/badge/Contribute-ff4785?style=for-the-badge&logo=git&logoColor=white" alt="Contribute" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/USER_SUBMITTED_GUIDES.md">
|
||||
<img src="https://img.shields.io/badge/Guides-0077b5?style=for-the-badge&logo=read-the-docs&logoColor=white" alt="Guides" />
|
||||
</a>
|
||||
<a href="https://github.com/community-scripts/ProxmoxVE/blob/main/CHANGELOG.md">
|
||||
<img src="https://img.shields.io/badge/Changelog-6c5ce7?style=for-the-badge&logo=git&logoColor=white" alt="Changelog" />
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 📦 Features
|
||||
## 🚀 Project Overview
|
||||
|
||||
- **Interactive Setup**: Select simple or advanced options for your VM or LXC container configurations.
|
||||
- **Customizable Configuration**: Advanced setup allows you to fine-tune your environment.
|
||||
- **Ease of Use**: Scripts automatically validate inputs to generate the final configuration.
|
||||
- **Proxmox Integration**: Seamlessly integrates with Proxmox VE to provide a user-friendly experience.
|
||||
- **Community-Driven**: This project is actively maintained and improved by the community.
|
||||
|
||||
<hr>
|
||||
|
||||
## 🚀 Installation
|
||||
|
||||
To install the Proxmox Helper Scripts, simply follow these steps:
|
||||
|
||||
1. Open the [Website](https://helper-scripts.com/)
|
||||
2. Search for the desired script, e.g. **"Home Assistant OS VM"**.
|
||||
3. In the **"How To Install"** section, copy the provided **Bash command**.
|
||||
4. Open the Proxmox shell on your **main node**.
|
||||
5. Paste the command into the console, hit enter, and you are away! 🚀
|
||||
|
||||
For detailed instructions, check out our [official guides](https://github.com/community-scripts/ProxmoxVE/blob/main/USER_SUBMITTED_GUIDES.md).
|
||||
**Proxmox VE Helper-Scripts** is a collection of tools to simplify the setup and management of Proxmox Virtual Environment (VE). Originally created by [tteck](https://github.com/tteck), these scripts are now continued by the community. Our goal is to preserve and expand upon tteck's work, providing an ongoing resource for Proxmox users worldwide.
|
||||
|
||||
---
|
||||
|
||||
## ❤️ Community and Contributions
|
||||
## 📦 Features
|
||||
|
||||
The Proxmox Helper Scripts project is community-driven, and we highly appreciate any contributions — whether it's through reporting bugs, suggesting features, improving documentation, or spreading the word. We are committed to maintaining transparency and sustainability in this open-source effort.
|
||||
- **Interactive Setup**: Choose between simple and advanced options for configuring VMs and LXC containers.
|
||||
- **Customizable Configurations**: Advanced setup for fine-tuning your environment.
|
||||
- **Seamless Integration**: Works seamlessly with Proxmox VE for a smooth experience.
|
||||
- **Community-driven**: Actively maintained and improved by the Proxmox community.
|
||||
|
||||
### 💖 Donate to Support the Project
|
||||
---
|
||||
## ✅ Requirements
|
||||
|
||||
We offer two donation options to help maintain and grow this project:
|
||||
|
||||
- **Ko-Fi for tteck**: [Donate to tteck's wife](https://ko-fi.com/proxmoxhelperscripts) - All donations will go directly to Angie, wife of the founder of this project [who passed away in early November 2024](https://github.com/community-scripts/ProxmoxVE/discussions/237).
|
||||
- **Ko-Fi for Community Edition**: [Donate to this project](https://ko-fi.com/community_scripts) - All funds will go towards script maintenance infrastructure and server costs. **Our most immediate need is funding testing infrastructure**. Your contributions help keep the project running. To honor tteck's legacy this project will also raise money for charity (cancer research, hospice care). Of the money donated to this project, 30% will be donated to charity. Income, expenditure and charitable donations will be disclosed annually in a transparent manner.
|
||||
|
||||
<hr>
|
||||
|
||||
## 💬 Get Help
|
||||
|
||||
Have a question or ran into an issue? Join the conversation and get help from fellow community members:
|
||||
|
||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/UHrpNWGwkH) to chat with other users and get support.
|
||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||
|
||||
<hr>
|
||||
|
||||
## 🤝 Found a bug or missing feature?
|
||||
|
||||
If you’ve encountered an issue or identified an area for improvement, please file a new issue on our [GitHub issues page](https://github.com/community-scripts/ProxmoxVE/issues). If you’ve already found a solution or improvement, feel free to submit a pull request! We’d love to review and merge your contributions.
|
||||
|
||||
<hr>
|
||||
|
||||
## ✅ Requirements
|
||||
|
||||
To use the Proxmox VE Helper-Scripts, your system should meet the following requirements:
|
||||
Ensure your system meets the following prerequisites:
|
||||
|
||||
- **Proxmox VE version**: 8.x or higher
|
||||
- **Linux**: Compatible with most distributions
|
||||
- **Dependencies**: Ensure that your system has bash and curl installed.
|
||||
|
||||
<hr>
|
||||
|
||||
## 📜 License
|
||||
|
||||
This project is licensed under the terms of the [MIT License](LICENSE).
|
||||
- **Dependencies**: bash and curl should be installed.
|
||||
|
||||
---
|
||||
|
||||
## 📢 Acknowledgments
|
||||
## 🚀 Installation
|
||||
|
||||
To install the Proxmox Helper Scripts, follow these steps:
|
||||
|
||||
1. Visit the [Website](https://helper-scripts.com/).
|
||||
2. Search for the desired script, e.g., **"Home Assistant OS VM"**.
|
||||
3. Copy the provided **Bash command** from the **"How To Install"** section.
|
||||
4. Open the Proxmox shell on your **main node** and paste the command.
|
||||
5. Press enter to start the installation! 🚀
|
||||
|
||||
---
|
||||
|
||||
## ❤️ Community and Contributions
|
||||
|
||||
We appreciate any contributions to the project—whether it's bug reports, feature requests, documentation improvements, or spreading the word. Your involvement helps keep the project alive and sustainable.
|
||||
|
||||
## 💖 Donate to Support the Project
|
||||
- **Ko-Fi for Community Edition**: [Donate to support this project](https://ko-fi.com/community_scripts) – Donations go towards maintaining the project, testing infrastructure, and charity (cancer research, hospice care). 30% of the funds will be donated to charity.
|
||||
|
||||
---
|
||||
|
||||
## 💬 Get Help
|
||||
|
||||
Join our community for support:
|
||||
|
||||
- **Discord**: Join our [Proxmox Helper Scripts Discord server](https://discord.gg/UHrpNWGwkH) for real-time support.
|
||||
- **GitHub Discussions**: [Ask questions or report issues](https://github.com/community-scripts/ProxmoxVE/discussions).
|
||||
|
||||
## 🤝 Report a Bug or Feature Request
|
||||
|
||||
If you encounter any issues or have suggestions for improvement, file a new issue on our [GitHub issues page](https://github.com/community-scripts/ProxmoxVE/issues). You can also submit pull requests with solutions or enhancements!
|
||||
|
||||
---
|
||||
|
||||
## 📜 License
|
||||
|
||||
This project is licensed under the [MIT License](LICENSE).
|
||||
|
||||
</br>
|
||||
</br>
|
||||
<p align="center">
|
||||
<i style="font-size: smaller;"><b>Proxmox</b>® is a registered trademark of <a href="https://www.proxmox.com/en/about/company">Proxmox Server Solutions GmbH</a>.</i>
|
||||
</p>
|
||||
|
||||
This community project is a memorial to the memory of [tteck](https://github.com/tteck). His foundational work created a thriving Proxmox community. Tteck worked on this project right until the end, even while in hospice. We are dedicated to keeping his vision alive and expanding upon it with the continued support of this vibrant community.
|
||||
|
||||
Proxmox® is a registered trademark of [Proxmox Server Solutions GmbH](https://www.proxmox.com/en/about/company).
|
@ -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
|
||||
|
@ -46,4 +46,4 @@ description
|
||||
msg_ok "Completed Successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3142/acng-report.html{CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3142/acng-report.html${CL}"
|
||||
|
49
ct/dotnetaspwebapi.sh
Normal file
49
ct/dotnetaspwebapi.sh
Normal file
@ -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}"
|
@ -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}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
|
@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2025 tteck
|
||||
# Author: tteck (tteckster)
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: tteck (tteckster) | Co-Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.home-assistant.io/
|
||||
|
||||
@ -9,10 +9,10 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
||||
APP="Home Assistant-Core"
|
||||
var_tags="automation;smarthome"
|
||||
var_cpu="2"
|
||||
var_ram="1024"
|
||||
var_disk="8"
|
||||
var_ram="2048"
|
||||
var_disk="10"
|
||||
var_os="ubuntu"
|
||||
var_version="24.04"
|
||||
var_version="24.10"
|
||||
var_unprivileged="1"
|
||||
|
||||
# App Output & Base Settings
|
||||
@ -26,6 +26,13 @@ catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
|
||||
# OS Check
|
||||
if ! lsb_release -d | grep -q "Ubuntu 24.10"; then
|
||||
msg_error "Wrong OS detected. This script only supports Ubuntu 24.10."
|
||||
msg_error "Read Guide: https://github.com/community-scripts/ProxmoxVE/discussions/1549"
|
||||
exit 1
|
||||
fi
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -d /srv/homeassistant ]]; then
|
||||
@ -51,17 +58,13 @@ function update_script() {
|
||||
echo -e "${GN}Updating to Stable Version${CL}"
|
||||
BR=""
|
||||
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
|
||||
msg_ok "Stopped Home Assistant"
|
||||
|
||||
msg_info "Updating Home Assistant"
|
||||
source /srv/homeassistant/bin/activate
|
||||
uv pip install ${BR}--upgrade homeassistant &>/dev/null
|
||||
pip install ${BR}--upgrade homeassistant &>/dev/null
|
||||
msg_ok "Updated Home Assistant"
|
||||
|
||||
msg_info "Starting Home Assistant"
|
||||
@ -75,7 +78,7 @@ function update_script() {
|
||||
if [ "$UPD" == "2" ]; then
|
||||
msg_info "Installing Home Assistant Community Store (HACS)"
|
||||
apt update &>/dev/null
|
||||
apt install unzip &>/dev/null
|
||||
apt install -y unzip &>/dev/null
|
||||
cd .homeassistant
|
||||
bash <(curl -fsSL https://get.hacs.xyz) &>/dev/null
|
||||
msg_ok "Installed Home Assistant Community Store (HACS)"
|
||||
@ -102,16 +105,19 @@ function update_script() {
|
||||
msg_ok "Installed FileBrowser"
|
||||
|
||||
msg_info "Creating Service"
|
||||
service_path="/etc/systemd/system/filebrowser.service"
|
||||
echo "[Unit]
|
||||
cat <<EOF > /etc/systemd/system/filebrowser.service
|
||||
[Unit]
|
||||
Description=Filebrowser
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
User=root
|
||||
WorkingDirectory=/root/
|
||||
ExecStart=/usr/local/bin/filebrowser -r /root/.homeassistant
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target" >$service_path
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
systemctl enable --now -q filebrowser.service
|
||||
msg_ok "Created Service"
|
||||
@ -130,4 +136,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}:8123${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8123${CL}"
|
@ -34,6 +34,22 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if [ "$(node -v | cut -c2-3)" -ne 22 ]; then
|
||||
msg_info "Updating Node.js Repository"
|
||||
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 "Updating Node.js Repository"
|
||||
|
||||
msg_info "Updating Packages"
|
||||
apt-get update &>/dev/null
|
||||
apt-get -y upgrade &>/dev/null
|
||||
msg_ok "Updating Packages"
|
||||
|
||||
msg_info "Cleaning up"
|
||||
apt-get -y autoremove
|
||||
apt-get -y autoclean
|
||||
msg_ok "Cleaning up"
|
||||
fi
|
||||
|
||||
if ! command -v pnpm &> /dev/null; then
|
||||
msg_error "pnpm not found. Installing..."
|
||||
npm install -g pnpm &>/dev/null
|
||||
|
@ -40,6 +40,7 @@ function update_script() {
|
||||
msg_info "Updating ${APP} to ${RELEASE}"
|
||||
cd /opt
|
||||
mv /opt/linkwarden/.env /opt/.env
|
||||
rm -rf /opt/linkwarden
|
||||
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
|
||||
@ -59,7 +60,6 @@ function update_script() {
|
||||
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
|
||||
@ -75,4 +75,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}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:3000${CL}"
|
||||
|
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}"
|
72
ct/phpipam.sh
Normal file
72
ct/phpipam.sh
Normal file
@ -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}"
|
@ -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}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8002${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"
|
||||
|
@ -1,9 +1,12 @@
|
||||
import { OperatingSystem } from "@/lib/types";
|
||||
import { MessagesSquare, Scroll } from "lucide-react";
|
||||
import { FaDiscord, FaGithub } from "react-icons/fa";
|
||||
import React from "react";
|
||||
|
||||
export const basePath = process.env.BASE_PATH;
|
||||
|
||||
const isMobile = typeof window !== "undefined" && window.innerWidth < 640;
|
||||
|
||||
export const navbarLinks = [
|
||||
{
|
||||
href: `https://github.com/community-scripts/${basePath}`,
|
||||
@ -23,13 +26,15 @@ export const navbarLinks = [
|
||||
icon: <Scroll className="h-4 w-4" />,
|
||||
text: "Change Log",
|
||||
},
|
||||
{
|
||||
href: `https://github.com/community-scripts/${basePath}/discussions`,
|
||||
event: "Discussions",
|
||||
icon: <MessagesSquare className="h-4 w-4 hidden sm:block" />,
|
||||
text: "Discussions",
|
||||
},
|
||||
];
|
||||
!isMobile
|
||||
? {
|
||||
href: `https://github.com/community-scripts/${basePath}/discussions`,
|
||||
event: "Discussions",
|
||||
icon: <MessagesSquare className="h-4 w-4" />,
|
||||
text: "Discussions",
|
||||
}
|
||||
: null,
|
||||
].filter(Boolean) as { href: string; event: string; icon: React.ReactNode; text: string }[];
|
||||
|
||||
export const mostPopularScripts = [
|
||||
"Proxmox VE Post Install",
|
||||
|
@ -10,7 +10,7 @@
|
||||
"moduleResolution": "bundler",
|
||||
"resolveJsonModule": true,
|
||||
"isolatedModules": true,
|
||||
"jsx": "preserve",
|
||||
"jsx": "react-jsx",
|
||||
"incremental": true,
|
||||
"plugins": [
|
||||
{
|
||||
@ -27,7 +27,7 @@
|
||||
"**/*.ts",
|
||||
"**/*.tsx",
|
||||
".next/types/**/*.ts",
|
||||
"next.config.mjs",
|
||||
"next.config.mjs"
|
||||
],
|
||||
"exclude": ["node_modules"]
|
||||
}
|
||||
|
110
install/dotnetaspwebapi-install.sh
Normal file
110
install/dotnetaspwebapi-install.sh
Normal file
@ -0,0 +1,110 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2025 community-scripts ORG
|
||||
# Author: Kristian Skov
|
||||
# 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 update
|
||||
$STD apt-get install -y \
|
||||
ssh \
|
||||
software-properties-common
|
||||
$STD add-apt-repository -y ppa:dotnet/backports
|
||||
$STD apt-get install -y \
|
||||
dotnet-sdk-9.0 \
|
||||
vsftpd \
|
||||
nginx
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Configure Application"
|
||||
var_project_name="default"
|
||||
read -r -p "Type the assembly name of the project: " var_project_name
|
||||
echo "Target assembly: '${var_project_name}'"
|
||||
msg_ok "Application Configured"
|
||||
|
||||
msg_info "Setting up FTP Server"
|
||||
useradd ftpuser
|
||||
FTP_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||
usermod --password $(echo ${FTP_PASS} | openssl passwd -1 -stdin) ftpuser
|
||||
mkdir -p /var/www/html
|
||||
usermod -d /var/www/html ftp
|
||||
usermod -d /var/www/html ftpuser
|
||||
chown ftpuser /var/www/html
|
||||
|
||||
sed -i "s|#write_enable=YES|write_enable=YES|g" /etc/vsftpd.conf
|
||||
sed -i "s|#chroot_local_user=YES|chroot_local_user=NO|g" /etc/vsftpd.conf
|
||||
|
||||
systemctl restart -q vsftpd.service
|
||||
|
||||
{
|
||||
echo "FTP-Credentials"
|
||||
echo "Username: ftpuser"
|
||||
echo "Password: $FTP_PASS"
|
||||
} >> ~/ftp.creds
|
||||
|
||||
msg_ok "FTP server setup completed"
|
||||
|
||||
msg_info "Setting up Nginx Server"
|
||||
rm -f /var/www/html/index.nginx-debian.html
|
||||
|
||||
sed "s/\$var_project_name/$var_project_name/g" >myfile <<'EOF' >/etc/nginx/sites-available/default
|
||||
map $http_connection $connection_upgrade {
|
||||
"~*Upgrade" $http_connection;
|
||||
default keep-alive;
|
||||
}
|
||||
server {
|
||||
listen 80;
|
||||
server_name $var_project_name.com *.$var_project_name.com;
|
||||
location / {
|
||||
proxy_pass http://127.0.0.1:5000/;
|
||||
proxy_http_version 1.1;
|
||||
proxy_set_header Upgrade $http_upgrade;
|
||||
proxy_set_header Connection $connection_upgrade;
|
||||
proxy_set_header Host $host;
|
||||
proxy_cache_bypass $http_upgrade;
|
||||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
||||
proxy_set_header X-Forwarded-Proto $scheme;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
systemctl reload nginx
|
||||
msg_ok "Nginx Server Created"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/kestrel-aspnetapi.service
|
||||
[Unit]
|
||||
Description=.NET Web API App running on Linux
|
||||
|
||||
[Service]
|
||||
WorkingDirectory=/var/www/html
|
||||
ExecStart=/usr/bin/dotnet /var/www/html/$var_project_name.dll
|
||||
Restart=always
|
||||
# Restart service after 10 seconds if the dotnet service crashes:
|
||||
RestartSec=10
|
||||
KillSignal=SIGINT
|
||||
SyslogIdentifier=dotnet-${var_project_name}
|
||||
User=root
|
||||
Environment=ASPNETCORE_ENVIRONMENT=Production
|
||||
Environment=DOTNET_NOLOGO=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now kestrel-aspnetapi.service
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -78,7 +78,8 @@ $STD pnpm install --frozen-lockfile
|
||||
|
||||
export DATA_DIR=/opt/hoarder_data
|
||||
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
||||
cat <<EOF >/opt/hoarder/.env
|
||||
mkdir -p /etc/hoarder
|
||||
cat <<EOF >/etc/hoarder/hoarder.env
|
||||
SERVER_VERSION=$RELEASE
|
||||
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
||||
NEXTAUTH_URL="http://localhost:3000"
|
||||
@ -129,7 +130,7 @@ After=network.target hoarder-workers.service
|
||||
[Service]
|
||||
ExecStart=pnpm start
|
||||
WorkingDirectory=/opt/hoarder/apps/web
|
||||
EnvironmentFile=/opt/hoarder/.env
|
||||
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
@ -159,7 +160,7 @@ After=network.target hoarder-browser.service meilisearch.service
|
||||
[Service]
|
||||
ExecStart=pnpm start:prod
|
||||
WorkingDirectory=/opt/hoarder/apps/workers
|
||||
EnvironmentFile=/opt/hoarder/.env
|
||||
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||
Restart=always
|
||||
TimeoutStopSec=5
|
||||
|
||||
|
@ -44,34 +44,36 @@ $STD apt-get install -y \
|
||||
libavfilter-dev \
|
||||
libmariadb-dev-compat \
|
||||
libatlas-base-dev \
|
||||
software-properties-common
|
||||
software-properties-common \
|
||||
libmariadb-dev \
|
||||
pkg-config
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setup Python3"
|
||||
$STD add-apt-repository -y ppa:deadsnakes/ppa
|
||||
msg_info "Setup Python3/pip"
|
||||
$STD apt-get update
|
||||
$STD rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
||||
$STD apt-get remove --purge -y python3.12 python3.12-dev python3.12-venv
|
||||
|
||||
$STD apt-get install -y \
|
||||
python3.13-* \
|
||||
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"
|
||||
ln -sf /usr/bin/python3.13 /usr/bin/python3
|
||||
msg_ok "Setup Python3"
|
||||
|
||||
msg_info "Setting up Home Assistant-Core environment"
|
||||
mkdir /srv/homeassistant
|
||||
cd /srv/homeassistant
|
||||
uv venv . &>/dev/null
|
||||
python3 -m venv .
|
||||
source bin/activate
|
||||
msg_ok "Created virtual environment with UV"
|
||||
msg_ok "Created virtual environment"
|
||||
|
||||
msg_info "Installing Home Assistant-Core and packages"
|
||||
$STD uv pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal
|
||||
msg_info "Installing Home Assistant-Core"
|
||||
$STD python3 -m pip install webrtcvad wheel homeassistant mysqlclient psycopg2-binary isal
|
||||
mkdir -p /root/.homeassistant
|
||||
msg_ok "Installed Home Assistant-Core and required packages"
|
||||
msg_ok "Installed Home Assistant-Core"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/homeassistant.service
|
||||
@ -97,4 +99,4 @@ customize
|
||||
msg_info "Cleaning up"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
||||
msg_ok "Cleaned"
|
@ -24,7 +24,7 @@ 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"
|
||||
|
@ -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"
|
||||
|
86
install/phpipam-install.sh
Normal file
86
install/phpipam-install.sh
Normal file
@ -0,0 +1,86 @@
|
||||
#!/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 \
|
||||
mariadb-server \
|
||||
apache2 \
|
||||
libapache2-mod-php \
|
||||
php8.2 php8.2-{fpm,curl,cli,mysql,gd,intl,imap,apcu,pspell,tidy,xmlrpc,mbstring,gmp,xml,ldap,common,snmp} \
|
||||
php-pear
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Setting up MariaDB"
|
||||
DB_NAME=phpipam
|
||||
DB_USER=phpipam
|
||||
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 "phpIPAM-Credentials"
|
||||
echo "phpIPAM Database User: $DB_USER"
|
||||
echo "phpIPAM Database Password: $DB_PASS"
|
||||
echo "phpIPAM Database Name: $DB_NAME"
|
||||
} >> ~/phpipam.creds
|
||||
msg_ok "Set up MariaDB"
|
||||
|
||||
msg_info "Installing phpIPAM"
|
||||
RELEASE=$(curl -s https://api.github.com/repos/phpipam/phpipam/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||
cd /opt
|
||||
wget -q "https://github.com/phpipam/phpipam/releases/download/v${RELEASE}/phpipam-v${RELEASE}.zip"
|
||||
unzip -q "phpipam-v${RELEASE}.zip"
|
||||
mysql -u root "${DB_NAME}" < /opt/phpipam/db/SCHEMA.sql
|
||||
cp /opt/phpipam/config.dist.php /opt/phpipam/config.php
|
||||
sed -i -e "s/\(\$disable_installer = \).*/\1true;/" \
|
||||
-e "s/\(\$db\['user'\] = \).*/\1'$DB_USER';/" \
|
||||
-e "s/\(\$db\['pass'\] = \).*/\1'$DB_PASS';/" \
|
||||
-e "s/\(\$db\['name'\] = \).*/\1'$DB_NAME';/" \
|
||||
/opt/phpipam/config.php
|
||||
sed -i '/max_execution_time/s/= .*/= 600/' /etc/php/8.2/apache2/php.ini
|
||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
||||
msg_ok "Installed phpIPAM"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/apache2/sites-available/phpipam.conf
|
||||
<VirtualHost *:80>
|
||||
ServerName phpipam
|
||||
DocumentRoot /opt/phpipam
|
||||
<Directory /opt/phpipam>
|
||||
Options FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
ErrorLog /var/log/apache2/phpipam_error.log
|
||||
CustomLog /var/log/apache2/phpipam_access.log combined
|
||||
</VirtualHost>
|
||||
EOF
|
||||
$STD a2ensite phpipam
|
||||
$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 "/opt/phpipam-v${RELEASE}.zip"
|
||||
$STD apt-get -y autoremove
|
||||
$STD apt-get -y autoclean
|
||||
msg_ok "Cleaned"
|
@ -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"
|
39
json/dotnetaspwebapi.json
Normal file
39
json/dotnetaspwebapi.json
Normal file
@ -0,0 +1,39 @@
|
||||
{
|
||||
"name":"Dotnet ASP Web API",
|
||||
"slug":"dotnetaspwebapi",
|
||||
"categories":[
|
||||
0
|
||||
],
|
||||
"date_created":"2025-01-15",
|
||||
"type":"ct",
|
||||
"updateable":true,
|
||||
"privileged":true,
|
||||
"interface_port":80,
|
||||
"documentation":"https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu",
|
||||
"website":"https://learn.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx?view=aspnetcore-9.0&tabs=linux-ubuntu",
|
||||
"logo":"https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Microsoft_.NET_logo.svg/456px-Microsoft_.NET_logo.svg.png",
|
||||
"description":"Automatically setup a ASP.NET server up, as well as a FTP server so you can publish to this container from Visual Studio.",
|
||||
"install_methods":[
|
||||
{
|
||||
"type":"default",
|
||||
"script":"ct/dotnetaspwebapi.sh",
|
||||
"resources":{
|
||||
"cpu":1,
|
||||
"ram":1024,
|
||||
"hdd":8,
|
||||
"os":"Ubuntu",
|
||||
"version":"24.04"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials":{
|
||||
"username":null,
|
||||
"password":null
|
||||
},
|
||||
"notes":[
|
||||
{
|
||||
"text":"FTP server credentials: `cat ~/ftp.creds`",
|
||||
"type":"info"
|
||||
}
|
||||
]
|
||||
}
|
@ -4,7 +4,7 @@
|
||||
"categories": [
|
||||
2
|
||||
],
|
||||
"date_created": "2024-04-29",
|
||||
"date_created": "2025-01-17",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
@ -19,10 +19,10 @@
|
||||
"script": "ct/homeassistant-core.sh",
|
||||
"resources": {
|
||||
"cpu": 2,
|
||||
"ram": 1024,
|
||||
"hdd": 8,
|
||||
"ram": 2048,
|
||||
"hdd": 10,
|
||||
"os": "ubuntu",
|
||||
"version": "24.04"
|
||||
"version": "24.10"
|
||||
}
|
||||
}
|
||||
],
|
||||
@ -40,7 +40,7 @@
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
"text": "Use Ubuntu 24.04 ONLY",
|
||||
"text": "Use Ubuntu 24.10 ONLY",
|
||||
"type": "warning"
|
||||
},
|
||||
{
|
||||
@ -48,4 +48,4 @@
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -30,5 +30,9 @@
|
||||
"username": null,
|
||||
"password": null
|
||||
},
|
||||
"notes": []
|
||||
}
|
||||
"notes": [{
|
||||
"text": "To enable folder adding append your lxc.conf on your host with 'lxc.environment: DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=1'",
|
||||
"type": "info"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
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/phpipam.json
Normal file
34
json/phpipam.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"name": "phpIPAM",
|
||||
"slug": "phpipam",
|
||||
"categories": [
|
||||
11
|
||||
],
|
||||
"date_created": "2025-01-15",
|
||||
"type": "ct",
|
||||
"updateable": true,
|
||||
"privileged": false,
|
||||
"interface_port": 80,
|
||||
"documentation": "https://phpipam.net/documents/all-documents/",
|
||||
"website": "https://phpipam.net/",
|
||||
"logo": "https://phpipam.net/css/images/phpipam_logo_small@2x.png",
|
||||
"description": "phpipam is an open-source web IP address management application (IPAM). Its goal is to provide light, modern and useful IP address management.",
|
||||
"install_methods": [
|
||||
{
|
||||
"type": "default",
|
||||
"script": "ct/phpipam.sh",
|
||||
"resources": {
|
||||
"cpu": 1,
|
||||
"ram": 1024,
|
||||
"hdd": 4,
|
||||
"os": "debian",
|
||||
"version": "12"
|
||||
}
|
||||
}
|
||||
],
|
||||
"default_credentials": {
|
||||
"username": "Admin",
|
||||
"password": "ipamadmin"
|
||||
},
|
||||
"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-18-2025
|
||||
##################################################
|
||||
|
||||
### 2fauth.sh
|
||||
@ -421,6 +421,21 @@ APP=Dockge
|
||||
/_____/\____/\___/_/|_|\__, /\___/
|
||||
/____/
|
||||
|
||||
### dotnetaspwebapi.sh
|
||||
APP=Dotnet ASP Web API
|
||||
____ __ __ ___ _____ ____ _ __ __
|
||||
/ __ \____ / /_____ ___ / /_ / | / ___// __ \ | | / /__ / /_
|
||||
/ / / / __ \/ __/ __ \/ _ \/ __/ / /| | \__ \/ /_/ / | | /| / / _ \/ __ \
|
||||
/ /_/ / /_/ / /_/ / / / __/ /_ / ___ |___/ / ____/ | |/ |/ / __/ /_/ /
|
||||
/_____/\____/\__/_/ /_/\___/\__/ /_/ |_/____/_/ |__/|__/\___/_.___/
|
||||
|
||||
___ ____ ____
|
||||
/ | / __ \/ _/
|
||||
/ /| | / /_/ // /
|
||||
/ ___ |/ ____// /
|
||||
/_/ |_/_/ /___/
|
||||
|
||||
|
||||
### emby.sh
|
||||
APP=Emby
|
||||
______ __
|
||||
@ -529,6 +544,15 @@ APP=Frigate
|
||||
/_/ /_/ /_/\__, /\__,_/\__/\___/
|
||||
/____/
|
||||
|
||||
### ghost.sh
|
||||
APP=Ghost
|
||||
________ __
|
||||
/ ____/ /_ ____ _____/ /_
|
||||
/ / __/ __ \/ __ \/ ___/ __/
|
||||
/ /_/ / / / / /_/ (__ ) /_
|
||||
\____/_/ /_/\____/____/\__/
|
||||
|
||||
|
||||
### gitea.sh
|
||||
APP=Gitea
|
||||
_______ __
|
||||
@ -1222,6 +1246,15 @@ APP=OneDev
|
||||
\____/_/ /_/\___/_____/\___/|___/
|
||||
|
||||
|
||||
### opengist.sh
|
||||
APP=Opengist
|
||||
____ _ __
|
||||
/ __ \____ ___ ____ ____ _(_)____/ /_
|
||||
/ / / / __ \/ _ \/ __ \/ __ `/ / ___/ __/
|
||||
/ /_/ / /_/ / __/ / / / /_/ / (__ ) /_
|
||||
\____/ .___/\___/_/ /_/\__, /_/____/\__/
|
||||
/_/ /____/
|
||||
|
||||
### openhab.sh
|
||||
APP=openHAB
|
||||
__ _____ ____
|
||||
@ -1339,6 +1372,15 @@ APP=PhotoPrism
|
||||
/_/ /_/ /_/\____/\__/\____/_/ /_/ /_/____/_/ /_/ /_/
|
||||
|
||||
|
||||
### phpipam.sh
|
||||
APP=phpIPAM
|
||||
__ ________ ___ __ ___
|
||||
____ / /_ ____ / _/ __ \/ | / |/ /
|
||||
/ __ \/ __ \/ __ \ / // /_/ / /| | / /|_/ /
|
||||
/ /_/ / / / / /_/ // // ____/ ___ |/ / / /
|
||||
/ .___/_/ /_/ .___/___/_/ /_/ |_/_/ /_/
|
||||
/_/ /_/
|
||||
|
||||
### pialert.sh
|
||||
APP=PiAlert
|
||||
____ _ ___ __ __
|
||||
@ -1948,6 +1990,15 @@ APP=Wireguard
|
||||
|__/|__/_/_/ \___/\__, /\__,_/\__,_/_/ \__,_/
|
||||
/____/
|
||||
|
||||
### wordpress.sh
|
||||
APP=Wordpress
|
||||
_ __ __
|
||||
| | / /___ _________/ /___ ________ __________
|
||||
| | /| / / __ \/ ___/ __ / __ \/ ___/ _ \/ ___/ ___/
|
||||
| |/ |/ / /_/ / / / /_/ / /_/ / / / __(__ |__ )
|
||||
|__/|__/\____/_/ \__,_/ .___/_/ \___/____/____/
|
||||
/_/
|
||||
|
||||
### yunohost.sh
|
||||
APP=YunoHost
|
||||
__ __ __ __ __
|
||||
|
@ -36,7 +36,7 @@ color() {
|
||||
INFO="${TAB}💡${TAB}${CL}"
|
||||
OS="${TAB}🖥️${TAB}${CL}"
|
||||
OSVERSION="${TAB}🌟${TAB}${CL}"
|
||||
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||
DISKSIZE="${TAB}💾${TAB}${CL}"
|
||||
CPUCORE="${TAB}🧠${TAB}${CL}"
|
||||
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
||||
@ -283,8 +283,9 @@ base_settings() {
|
||||
MAC=""
|
||||
VLAN=""
|
||||
SSH="no"
|
||||
SSH_AUTHORIZED_KEY=""
|
||||
TAGS="community-script;"
|
||||
|
||||
|
||||
# Override default settings with variables from ct script
|
||||
CT_TYPE=${var_unprivileged:-$CT_TYPE}
|
||||
DISK_SIZE=${var_disk:-$DISK_SIZE}
|
||||
@ -292,7 +293,7 @@ base_settings() {
|
||||
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"
|
||||
@ -314,9 +315,9 @@ echo_default() {
|
||||
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 "${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 "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||
echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}"
|
||||
if [ "$VERB" == "yes" ]; then
|
||||
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
||||
@ -463,13 +464,13 @@ advanced_settings() {
|
||||
if DISK_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Set Disk Size in GB" 8 58 $var_disk --title "DISK SIZE" 3>&1 1>&2 2>&3); then
|
||||
if [ -z "$DISK_SIZE" ]; then
|
||||
DISK_SIZE="$var_disk"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||
else
|
||||
if ! [[ $DISK_SIZE =~ $INTEGER ]]; then
|
||||
echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}"
|
||||
advanced_settings
|
||||
fi
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE}GB${CL}"
|
||||
echo -e "${DISKSIZE}${BOLD}${DGN}Disk Size: ${BGN}${DISK_SIZE} GB${CL}"
|
||||
fi
|
||||
else
|
||||
exit_script
|
||||
@ -489,9 +490,9 @@ advanced_settings() {
|
||||
if RAM_SIZE=$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "Allocate RAM in MiB" 8 58 $var_ram --title "RAM" 3>&1 1>&2 2>&3); then
|
||||
if [ -z "$RAM_SIZE" ]; then
|
||||
RAM_SIZE="$var_ram"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||
else
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE}MiB${CL}"
|
||||
echo -e "${RAMSIZE}${BOLD}${DGN}RAM Size: ${BGN}${RAM_SIZE} MiB${CL}"
|
||||
fi
|
||||
else
|
||||
exit_script
|
||||
@ -628,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
|
||||
@ -649,6 +655,15 @@ advanced_settings() {
|
||||
echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}"
|
||||
fi
|
||||
|
||||
if [[ "${SSH}" == "yes" ]]; then
|
||||
SSH_AUTHORIZED_KEY="$(whiptail --backtitle "Proxmox VE Helper Scripts" --inputbox "SSH Authorized key for root (leave empty for none)" 8 58 --title "SSH Key" 3>&1 1>&2 2>&3)"
|
||||
|
||||
if [[ -z "${SSH_AUTHORIZED_KEY}" ]]; then
|
||||
echo "Warning: No SSH key provided."
|
||||
fi
|
||||
else
|
||||
SSH_AUTHORIZED_KEY=""
|
||||
fi
|
||||
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then
|
||||
VERB="yes"
|
||||
else
|
||||
@ -697,15 +712,15 @@ install_script() {
|
||||
header_info
|
||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
|
||||
VERB="no"
|
||||
base_settings "$VERB"
|
||||
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}"
|
||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME (${SEARCH}Verbose)${CL}"
|
||||
VERB="yes"
|
||||
base_settings "$VERB"
|
||||
base_settings "$VERB"
|
||||
echo_default
|
||||
break
|
||||
;;
|
||||
@ -729,13 +744,13 @@ install_script() {
|
||||
check_container_resources() {
|
||||
# Check actual RAM & Cores
|
||||
current_ram=$(free -m | awk 'NR==2{print $2}')
|
||||
current_cpu=$(nproc)
|
||||
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${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"
|
||||
read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC? <yes/No> " prompt
|
||||
read -r -p "${INFO}${HOLD} May cause data loss! ${INFO} Continue update with under-provisioned LXC? <yes/No> " 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}"
|
||||
@ -754,7 +769,7 @@ check_container_storage() {
|
||||
if (( usage > 80 )); then
|
||||
# Prompt the user for confirmation to continue
|
||||
echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
|
||||
read -r -p "Continue anyway? <y/N> " prompt
|
||||
read -r -p "Continue anyway? <y/N> " prompt
|
||||
# Check if the input is 'y' or 'yes', otherwise exit with status 1
|
||||
if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"
|
||||
@ -812,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
|
||||
}
|
||||
|
@ -402,7 +402,7 @@ done
|
||||
|
||||
msg_info "Creating a Debian 12 VM"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
|
@ -444,7 +444,7 @@ done
|
||||
msg_ok "Extracted KVM Disk Image"
|
||||
msg_info "Creating HAOS VM"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE%.*} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
|
@ -269,7 +269,7 @@ DISK_REF="${STORAGE}:${DISK_REF:-}${DISK_VAR:-}"
|
||||
msg_ok "Extracted Mikrotik RouterOS CHR Disk Image"
|
||||
msg_info "Creating Mikrotik RouterOS CHR VM"
|
||||
qm create $VMID -tablet 0 -localtime 1 -cores $CORE_COUNT -memory $RAM_SIZE -name $HN \
|
||||
-tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU \
|
||||
-tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU \
|
||||
-onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
qm importdisk $VMID ${FILE%.*} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
|
@ -401,7 +401,7 @@ done
|
||||
|
||||
msg_info "Creating a $NAME"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios seabios${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
pvesm alloc $STORAGE $VMID $DISK1 12G 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
|
@ -475,7 +475,7 @@ qm set $VMID \
|
||||
-efidisk0 ${DISK0_REF},efitype=4m,size=4M \
|
||||
-scsi0 ${DISK1_REF},size=512M \
|
||||
-boot order=scsi0 \
|
||||
-tags proxmox-helper-scripts \
|
||||
-tags community-script \
|
||||
-description "<div align='center'><a href='https://Helper-Scripts.com'><img src='https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/images/logo-81x112.png'/></a>
|
||||
|
||||
# OpenWRT
|
||||
@ -498,8 +498,6 @@ send_line_to_vm "uci set network.lan.device=eth0"
|
||||
send_line_to_vm "uci set network.lan.proto=static"
|
||||
send_line_to_vm "uci set network.lan.ipaddr=${LAN_IP_ADDR}"
|
||||
send_line_to_vm "uci set network.lan.netmask=${LAN_NETMASK}"
|
||||
send_line_to_vm "uci set firewall.@zone[1].input='ACCEPT'"
|
||||
send_line_to_vm "uci set firewall.@zone[1].forward='ACCEPT'"
|
||||
send_line_to_vm "uci commit"
|
||||
send_line_to_vm "halt"
|
||||
msg_ok "Network interfaces have been successfully configured."
|
||||
|
@ -401,7 +401,7 @@ done
|
||||
|
||||
msg_info "Creating a $NAME"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios seabios${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
pvesm alloc $STORAGE $VMID $DISK1 12G 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
|
@ -402,7 +402,7 @@ done
|
||||
|
||||
msg_info "Creating a Ubuntu 22.04 VM"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
|
@ -370,7 +370,7 @@ msg_ok "Downloaded ${CL}${BL}${FILE}${CL}"
|
||||
|
||||
STORAGE_TYPE=$(pvesm status -storage $STORAGE | awk 'NR>1 {print $2}')
|
||||
case $STORAGE_TYPE in
|
||||
nfs | dir)
|
||||
nfs | dir | cifs)
|
||||
DISK_EXT=".qcow2"
|
||||
DISK_REF="$VMID/"
|
||||
DISK_IMPORT="-format qcow2"
|
||||
@ -392,7 +392,7 @@ done
|
||||
|
||||
msg_info "Creating a Ubuntu 24.04 VM"
|
||||
qm create $VMID -agent 1${MACHINE} -tablet 0 -localtime 1 -bios ovmf${CPU_TYPE} -cores $CORE_COUNT -memory $RAM_SIZE \
|
||||
-name $HN -tags proxmox-helper-scripts -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
-name $HN -tags community-script -net0 virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU -onboot 1 -ostype l26 -scsihw virtio-scsi-pci
|
||||
pvesm alloc $STORAGE $VMID $DISK0 4M 1>&/dev/null
|
||||
qm importdisk $VMID ${FILE} $STORAGE ${DISK_IMPORT:-} 1>&/dev/null
|
||||
qm set $VMID \
|
||||
|
Reference in New Issue
Block a user