Compare commits

...

112 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
779721cea5 Update CHANGELOG.md (#1538)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 18:35:15 +01:00
Pedro Vieira
22b7155203 Update jellyseerr-install.sh (#1535) 2025-01-16 18:33:43 +01:00
community-scripts-pr-app[bot]
1bb911e531 Update CHANGELOG.md (#1527)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 16:09:06 +01:00
github-actions[bot]
023c3fc52d Update .app-headers file (#1534)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 16:08:38 +01:00
Kristian Skov
258b1bd9fd New script: Dotnet ASP.NET Web Server (#1501)
* Added files

* Update dotnetaspwebapi.json

* Updated build.func reference back to the original repos one

* Update dotnetaspwebapi.json for ubuntu 24.04

* Update dotnetaspwebapi.sh for ubuntu 24.04

* Update dotnetaspwebapi-install.sh for ubuntu 24.04

* Update install/dotnetaspwebapi-install.sh

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>

* Updated for review

* Fixed FTP authentication

* Update dotnetaspwebapi-install.sh

Changed the service name to a static one

---------

Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-01-16 16:06:22 +01:00
CanbiZ
6d4eb9c3ee Update update_json_date.yml 2025-01-16 16:04:54 +01:00
CanbiZ
15faa76b69 Update update_json_date.yml 2025-01-16 16:02:07 +01:00
CanbiZ
393f6d74c9 Update update_json_date.yml 2025-01-16 15:58:37 +01:00
CanbiZ
f51762420a Update page.tsx 2025-01-16 15:13:39 +01:00
CanbiZ
f8c10ca80b Update page.tsx 2025-01-16 15:09:13 +01:00
CanbiZ
3fca76dbbc Mainpage: Fix "Scripts by TTeck": Typo & Mobile View 2025-01-16 15:05:48 +01:00
CanbiZ
b57689ec50 Mainpage: Fix "Scripts by TTeck": Typo & Mobile View (#1533) 2025-01-16 15:01:22 +01:00
CanbiZ
1f8f593116 add reactmode 2025-01-16 14:51:23 +01:00
CanbiZ
330315c615 remove comment jsx 2025-01-16 14:48:38 +01:00
CanbiZ
504d47d246 add react jsx 2025-01-16 14:48:17 +01:00
CanbiZ
ab206530e0 fix navbar issue in mobile view 2025-01-16 14:45:54 +01:00
CanbiZ
f5b78d5dcc fix navbar issue in mobile view 2025-01-16 14:43:53 +01:00
CanbiZ
3f9863ebf9 Add Mobile check for empty icon-url on website (#1532) 2025-01-16 14:36:46 +01:00
CanbiZ
786e8963b9 Update update_json_date.yml 2025-01-16 14:16:09 +01:00
CanbiZ
6cc4244f70 Update update_json_date.yml 2025-01-16 13:58:11 +01:00
CanbiZ
f5a260a399 Update update_json_date.yml 2025-01-16 13:55:54 +01:00
CanbiZ
f1f8f78420 Update update_json_date.yml 2025-01-16 13:55:22 +01:00
CanbiZ
6c42b5c21a Update update_json_date.yml 2025-01-16 13:53:28 +01:00
CanbiZ
24d24421d1 Update update_json_date.yml 2025-01-16 13:52:03 +01:00
CanbiZ
9e4c627323 Update update_json_date.yml 2025-01-16 13:49:56 +01:00
Michel Roegl-Brunner
2551bf6f9f [Workflow]Update autolabeler-config.json (#1525) 2025-01-16 13:44:24 +01:00
Michel Roegl-Brunner
8533380813 [core]Update update_json_date.yml (#1526)
* [core]Update update_json_date.yml

* Update update_json_date.yml
2025-01-16 13:44:04 +01:00
community-scripts-pr-app[bot]
f65abd9ac8 Update CHANGELOG.md (#1524)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 13:34:47 +01:00
Michel Roegl-Brunner
85387563f0 [core] Recreate Update JSON Workflow (#1523) 2025-01-16 12:12:13 +01:00
community-scripts-pr-app[bot]
5977f8f936 Update CHANGELOG.md (#1517)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 09:42:03 +01:00
CanbiZ
a15a59e615 add libapache2-mod-php 2025-01-16 09:18:02 +01:00
CanbiZ
14dfaa9bde fix php-pear & php8.2 deps 2025-01-16 09:13:07 +01:00
github-actions[bot]
75778976d0 Update .app-headers file (#1518)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-16 09:05:49 +01:00
bvdberg01
c45085a51d New script: phpIPAM (#1503)
* Added phpipam

* PR feedback

* fix json

* Fix php version

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-01-16 08:34:02 +01:00
community-scripts-pr-app[bot]
959a7b4b14 Update CHANGELOG.md (#1504)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-15 15:31:15 +01:00
CanbiZ
5da06e75e7 Update update_json_date.yml 2025-01-15 15:08:44 +01:00
Dominik Siebel
2aed45fa61 fix: actually add the given root SSH key to the container (#1502) 2025-01-15 15:01:24 +01:00
CanbiZ
7614034784 Update update_json_date.yml 2025-01-15 11:36:10 +01:00
CanbiZ
0f06725fdc Update update_json_date.yml 2025-01-15 11:34:20 +01:00
CanbiZ
5c16955a8e Update update_json_date.yml 2025-01-15 11:32:11 +01:00
CanbiZ
2c8aab24d0 Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2025-01-15 11:31:55 +01:00
CanbiZ
9cc07cc6e1 bak 2025-01-15 11:31:48 +01:00
CanbiZ
047667c428 Update update_json_date.yml 2025-01-15 11:27:53 +01:00
CanbiZ
147ba0e78d backup 2 files 2025-01-15 11:26:01 +01:00
CanbiZ
d3b0becfe6 Switch from workflows to scripts folder 2025-01-15 11:25:31 +01:00
CanbiZ
d20d0428dc Rename update_json_date.sh1 to update_json_date.sh 2025-01-15 11:21:51 +01:00
CanbiZ
0368ce36d1 Rename update_json_date.sh to update_json_date.yml 2025-01-15 11:21:38 +01:00
CanbiZ
757b5bd267 Create update_json_date.sh1 2025-01-15 11:21:26 +01:00
CanbiZ
4d0632fea0 Create update_json_date.sh 2025-01-15 11:19:32 +01:00
CanbiZ
69288b197f Update check_and_update_json_date.yml 2025-01-15 11:13:55 +01:00
CanbiZ
12a61a1d71 Update check_and_update_json_date.yml 2025-01-15 11:12:18 +01:00
CanbiZ
d186557488 Update check_and_update_json_date.yml 2025-01-15 11:09:31 +01:00
community-scripts-pr-app[bot]
db6390f791 Update CHANGELOG.md (#1498) 2025-01-15 11:08:48 +01:00
CanbiZ
41c4b11575 Update check_and_update_json_date.yml 2025-01-15 11:04:03 +01:00
CanbiZ
bf89a037bd Update check_and_update_json_date.yml 2025-01-15 11:00:17 +01:00
CanbiZ
e503ce3806 Update check_and_update_json_date.yml 2025-01-15 10:59:01 +01:00
CanbiZ
c934085b16 Update check_and_update_json_date.yml 2025-01-15 10:56:24 +01:00
CanbiZ
c57f0be737 Update check_and_update_json_date.yml 2025-01-15 10:54:23 +01:00
CanbiZ
e6530e14dd Update check_and_update_json_date.yml 2025-01-15 10:52:34 +01:00
CanbiZ
9174536e95 Update check_and_update_json_date.yml 2025-01-15 10:50:30 +01:00
CanbiZ
aa3a3997f0 Update check_and_update_json_date.yml 2025-01-15 10:45:22 +01:00
CanbiZ
37da2e5e1c Update check_and_update_json_date.yml 2025-01-15 10:41:47 +01:00
CanbiZ
18538897ba Update check_and_update_json_date.yml 2025-01-15 10:40:38 +01:00
CanbiZ
dbfb72807a Update check_and_update_json_date.yml 2025-01-15 10:37:30 +01:00
CanbiZ
e756c49e50 Update check_and_update_json_date.yml 2025-01-15 10:25:38 +01:00
CanbiZ
4ae131e102 Update check_and_update_json_date.yml 2025-01-15 10:21:44 +01:00
CanbiZ
f498f349f3 Update check_and_update_json_date.yml 2025-01-15 10:18:33 +01:00
CanbiZ
8e525611bd Merge branch 'main' of https://github.com/community-scripts/ProxmoxVE 2025-01-15 09:58:44 +01:00
CanbiZ
910f3bb6f4 switch shellcheck to backup 2025-01-15 09:58:37 +01:00
CanbiZ
c8319f044c Update check_and_update_json_date.yml 2025-01-15 09:58:13 +01:00
CanbiZ
ac61a925cc Fix: Add FFMPEG for OpenWebUI (#1497) 2025-01-15 09:04:52 +01:00
community-scripts-pr-app[bot]
4ce474382a Update CHANGELOG.md (#1493)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 22:21:14 +01:00
Michel Roegl-Brunner
424dc26720 Hotfix build.func: Error when tags are empty (#1492) 2025-01-14 21:43:37 +01:00
CanbiZ
b9829165cf adjust date opengist.json 2025-01-14 19:25:42 +01:00
community-scripts-pr-app[bot]
3b1c43381e Update CHANGELOG.md (#1487)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 18:35:22 +01:00
github-actions[bot]
cb496d74f4 Update .app-headers file (#1486)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 18:33:53 +01:00
CanbiZ
33cd0cb2f1 Create New LXC: Wordpress (#1485) 2025-01-14 18:32:33 +01:00
community-scripts-pr-app[bot]
325084f8ca Update CHANGELOG.md (#1481)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 16:28:49 +01:00
Michel Roegl-Brunner
349cfb28b5 Update tianji-install.sh: Add OPENAI_API_KEY to .env (#1480) 2025-01-14 16:23:46 +01:00
community-scripts-pr-app[bot]
2fff2079ef Update CHANGELOG.md (#1475)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 15:06:28 +01:00
github-actions[bot]
13a6e31a99 Update .app-headers file (#1477)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 15:05:26 +01:00
CanbiZ
481138bff5 Update auto-update-app-headers.yml 2025-01-14 15:05:14 +01:00
CanbiZ
c032db98a3 Update auto-update-app-headers.yml 2025-01-14 15:03:00 +01:00
CanbiZ
434c938cde Update auto-update-app-headers.yml 2025-01-14 15:01:05 +01:00
CanbiZ
647fb1cb5e Update auto-update-app-headers.yml 2025-01-14 14:58:23 +01:00
CanbiZ
45916edef5 Update auto-update-app-headers.yml 2025-01-14 14:55:18 +01:00
CanbiZ
78ed820bb0 Update auto-update-app-headers.yml 2025-01-14 14:54:00 +01:00
CanbiZ
7ab5485fc3 Update auto-update-app-headers.yml 2025-01-14 14:51:19 +01:00
CanbiZ
910e767bb4 Update auto-update-app-headers.yml 2025-01-14 14:48:47 +01:00
CanbiZ
8c54d25bf5 Update auto-update-app-headers.yml 2025-01-14 14:45:04 +01:00
CanbiZ
3c2db95345 Update auto-update-app-headers.yml 2025-01-14 14:44:00 +01:00
CanbiZ
692f3caab6 Update and rename App_Header_Merge_Into_main.yaml to auto-update-app-headers.yml 2025-01-14 14:43:07 +01:00
CanbiZ
3830527ef2 Delete .github/workflows/App_Header_Merge_update .app-headers_in_update-app-headers 2025-01-14 14:40:57 +01:00
CanbiZ
ed1a618f6d Delete .github/workflows/merge-main.yml 2025-01-14 14:40:41 +01:00
CanbiZ
76fa4c68d1 Update shellcheck.yml 2025-01-14 14:37:26 +01:00
CanbiZ
53b96a98c0 Update shellcheck.yml 2025-01-14 14:35:51 +01:00
CanbiZ
0f1eea7f09 Update shellcheck.yml 2025-01-14 14:33:32 +01:00
rajat
4c13164ad3 Update footer text on website (#1466)
Changed "Website build by the community" to "Website built by the community".
2025-01-14 14:31:05 +01:00
Michel Roegl-Brunner
97ca738332 [core] Update build.func: Fix bug with advanced tags (#1473) 2025-01-14 14:29:08 +01:00
community-scripts-pr-app[bot]
86706e6233 Update CHANGELOG.md (#1474)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 14:24:56 +01:00
community-scripts-pr-app[bot]
13671c613b Update CHANGELOG.md (#1469)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-14 14:24:01 +01:00
Michel Roegl-Brunner
364109877f Update opengist-install.sh: Add git as dependencie (#1471)
* Update opengist-install.sh: Add git as dependencie

* Update opengist-install.sh
2025-01-14 14:07:58 +01:00
jd
64297e7191 New Script: Opengist (#1429)
* feat(script): added opengist lxc

* fix: executable was inside the folder

* chore: use script from the fork

* chore: proper copyright

* chore: self script

* chore: self script

* chore: use original sources

* chore: back to links from fork

* fix: added /ref/head to urls

* fix: wrong executble path

* fix: git required to execute

* chore: proper links, prep PR

* Update install.func

* Update install.func

* Update build.func

* Update build.func

* fix(review): mc, release, license, -q

* Update opengist.sh

* Update opengist-install.sh

* Update opengist.sh

* Update opengist.sh

* Update opengist.sh

* fix(review): output for tar command

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Michel Roegl-Brunner <73236783+michelroegl-brunner@users.noreply.github.com>
2025-01-14 11:54:45 +01:00
Michel Roegl-Brunner
e60dc6784d Update lazylibrarian-install.sh: Add pypdf libary (#1467) 2025-01-14 11:34:03 +01:00
community-scripts-pr-app[bot]
2f620240a8 Update CHANGELOG.md (#1457)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-13 16:58:45 +01:00
MahrWe
07c9dc4d0a Update Hoarder: Improvement .env location (see PR comment for little migration) (#1325)
* Update .env file location in hoarder-install.sh

* Update .env file location in hoarder.sh

No more need to move around the .env file

* migration of .env to hoarder.env in hoarder.sh

* Update ct/hoarder.sh

Co-authored-by: Mohamed Bassem <me@mbassem.com>

---------

Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Mohamed Bassem <me@mbassem.com>
2025-01-13 16:58:14 +01:00
CanbiZ
8caf5e59b3 feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel (#1456)
* feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel

* remove spaces
2025-01-13 16:04:59 +01:00
community-scripts-pr-app[bot]
f8ab39e4d6 Update CHANGELOG.md (#1446)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-01-13 15:56:37 +01:00
Michel Roegl-Brunner
e47d7c4452 Update tandoor.sh: Call version.py to write current version (#1454) 2025-01-13 14:51:46 +01:00
Andy Grunwald
ac64a9de31 GitHub Actions: Fix Shellsheck workflow to only run on changes *.sh files (#1423) 2025-01-13 13:02:42 +01:00
Michel Roegl-Brunner
737625024e Update kavita.json (#1447) 2025-01-13 12:57:25 +01:00
Diego Saint Esteben
6958021528 Fix inexistent folder on actualbudget update script (#1444) 2025-01-13 11:02:35 +01:00
42 changed files with 1219 additions and 252 deletions

View File

@@ -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": []
}
]
}
}

View File

@@ -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

View File

@@ -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 }}

View 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

View 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
View 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"

View File

@@ -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 }}

View File

@@ -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 }}

View 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

View File

@@ -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 vendored Normal file
View 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 }}

View File

@@ -16,6 +16,93 @@ All LXC instances created using this repository come pre-installed with Midnight
> [!IMPORTANT]
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
## 2025-01-16
### Changed
### 💥 Breaking Changes
- Update jellyseerr-install.sh to use Node 22 as required by latest Jellyseerr version [@pedrovieira](https://github.com/pedrovieira) ([#1535](https://github.com/community-scripts/ProxmoxVE/pull/1535))
### ✨ New Scripts
- New script: Dotnet ASP.NET Web Server [@kris701](https://github.com/kris701) ([#1501](https://github.com/community-scripts/ProxmoxVE/pull/1501))
- New script: phpIPAM [@bvdberg01](https://github.com/bvdberg01) ([#1503](https://github.com/community-scripts/ProxmoxVE/pull/1503))
### 🌐 Website
- Add Mobile check for empty icon-url on website [@MickLesk](https://github.com/MickLesk) ([#1532](https://github.com/community-scripts/ProxmoxVE/pull/1532))
### 🧰 Maintenance
- [Workflow]Update autolabeler-config.json [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1525](https://github.com/community-scripts/ProxmoxVE/pull/1525))
- [core]Update update_json_date.yml [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1526](https://github.com/community-scripts/ProxmoxVE/pull/1526))
- [core] Recreate Update JSON Workflow [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1523](https://github.com/community-scripts/ProxmoxVE/pull/1523))
## 2025-01-15
### Changed
### 🚀 Updated Scripts
- Fix: Add FFMPEG for OpenWebUI [@MickLesk](https://github.com/MickLesk) ([#1497](https://github.com/community-scripts/ProxmoxVE/pull/1497))
### 🧰 Maintenance
- [core] build.func&install.func: Fix ssh keynot added error [@dsiebel](https://github.com/dsiebel) ([#1502](https://github.com/community-scripts/ProxmoxVE/pull/1502))
## 2025-01-14
### Changed
### 💥 Breaking Changes
- Update tianji-install.sh: Add OPENAI_API_KEY to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1480](https://github.com/community-scripts/ProxmoxVE/pull/1480))
### ✨ New Scripts
- New Script: Wordpress [@MickLesk](https://github.com/MickLesk) ([#1485](https://github.com/community-scripts/ProxmoxVE/pull/1485))
- New Script: Opengist [@jd-apprentice](https://github.com/jd-apprentice) ([#1429](https://github.com/community-scripts/ProxmoxVE/pull/1429))
### 🚀 Updated Scripts
- Update lazylibrarian-install.sh: Add pypdf libary [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1467](https://github.com/community-scripts/ProxmoxVE/pull/1467))
- Update opengist-install.sh: Add git as dependencie [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1471](https://github.com/community-scripts/ProxmoxVE/pull/1471))
### 🌐 Website
- [website] Update footer text [@rajatdiptabiswas](https://github.com/rajatdiptabiswas) ([#1466](https://github.com/community-scripts/ProxmoxVE/pull/1466))
### 🧰 Maintenance
- Hotfix build.func: Error when tags are empty [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1492](https://github.com/community-scripts/ProxmoxVE/pull/1492))
- [core] Update build.func: Fix bug with advanced tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1473](https://github.com/community-scripts/ProxmoxVE/pull/1473))
## 2025-01-13
### Changed
### 💥 Breaking Changes
- Update Hoarder: Improvement .env location (see PR comment for little migration) [@MahrWe](https://github.com/MahrWe) ([#1325](https://github.com/community-scripts/ProxmoxVE/pull/1325))
### 🚀 Updated Scripts
- Fix: tandoor.sh: Call version.py to write current version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1454](https://github.com/community-scripts/ProxmoxVE/pull/1454))
- Fix inexistent folder on actualbudget update script [@dosten](https://github.com/dosten) ([#1444](https://github.com/community-scripts/ProxmoxVE/pull/1444))
### 🌐 Website
- Update kavita.json: Add info on how to enable folder adding. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1447](https://github.com/community-scripts/ProxmoxVE/pull/1447))
### 🧰 Maintenance
- GitHub Actions: Fix Shellsheck workflow to only run on changes `*.sh` files [@andygrunwald](https://github.com/andygrunwald) ([#1423](https://github.com/community-scripts/ProxmoxVE/pull/1423))
### ❔ Unlabelled
- feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel [@MickLesk](https://github.com/MickLesk) ([#1456](https://github.com/community-scripts/ProxmoxVE/pull/1456))
## 2025-01-11
### Changed

View File

@@ -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

49
ct/dotnetaspwebapi.sh Normal file
View 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}"

View File

@@ -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}"

71
ct/opengist.sh Normal file
View 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
View 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}"

View File

@@ -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
View 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}"

View File

@@ -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"

View File

@@ -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",

View File

@@ -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"]
}

View 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"

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View 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"

View File

@@ -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"

View 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"

View File

@@ -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

View 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
View 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"
}
]
}

View File

@@ -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
View 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
View 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
View 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": []
}

View File

@@ -1,4 +1,4 @@
### Generated on 01-10-2025
### Generated on 01-16-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
__ __ __ __ __

View File

@@ -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"

View File

@@ -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
}