mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-12-16 12:13:29 +01:00
Compare commits
48 Commits
2025-01-10
...
2025-01-14
| Author | SHA1 | Date | |
|---|---|---|---|
| 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 | |||
| cc40b5957d | |||
| 92020fed07 | |||
| 1476d1b6c4 | |||
| 0d8dcd5643 | |||
| 2347a669f2 | |||
| 6decf14d2e | |||
| 26d73317e8 |
@ -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/generate-app-headers.sh
|
||||||
|
.github/workflows/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
|
||||||
|
|
||||||
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 }}
|
|
||||||
42
.github/workflows/shellcheck.yml
vendored
42
.github/workflows/shellcheck.yml
vendored
@ -18,15 +18,43 @@ jobs:
|
|||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Get changed files
|
- name: Get changed files
|
||||||
id: changes
|
id: changed-files
|
||||||
|
uses: tj-actions/changed-files@v45
|
||||||
|
with:
|
||||||
|
files: |
|
||||||
|
**.sh
|
||||||
|
|
||||||
|
- name: Download ShellCheck
|
||||||
|
shell: bash
|
||||||
|
env:
|
||||||
|
INPUT_VERSION: "v0.10.0"
|
||||||
run: |
|
run: |
|
||||||
if ${{ github.event_name == 'pull_request' }}; then
|
set -euo pipefail
|
||||||
echo "files=$(git diff --name-only -r HEAD^1 HEAD | xargs)" >> $GITHUB_OUTPUT
|
if [[ "${{ runner.os }}" == "macOS" ]]; then
|
||||||
|
osvariant="darwin"
|
||||||
else
|
else
|
||||||
echo "files=$(git diff --name-only ${{ github.event.before }} ${{ github.event.after }} | xargs)" >> $GITHUB_OUTPUT
|
osvariant="linux"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
- name: Run ShellCheck
|
baseurl="https://github.com/koalaman/shellcheck/releases/download"
|
||||||
if: steps.changes.outputs.files != ''
|
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: |
|
run: |
|
||||||
echo "${{ steps.changes.outputs.files }}" | xargs shellcheck
|
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"
|
||||||
|
|||||||
63
CHANGELOG.md
63
CHANGELOG.md
@ -16,6 +16,69 @@ All LXC instances created using this repository come pre-installed with Midnight
|
|||||||
> [!IMPORTANT]
|
> [!IMPORTANT]
|
||||||
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
Do not break established syntax in this file, as it is automatically updated by a Github Workflow
|
||||||
|
|
||||||
|
## 2025-01-14
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Update tianji-install.sh: Add OPENAI_API_KEY to .env [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1480](https://github.com/community-scripts/ProxmoxVE/pull/1480))
|
||||||
|
|
||||||
|
### ✨ New Scripts
|
||||||
|
|
||||||
|
- New Script: Wordpress [@MickLesk](https://github.com/MickLesk) ([#1485](https://github.com/community-scripts/ProxmoxVE/pull/1485))
|
||||||
|
- New Script: Opengist [@jd-apprentice](https://github.com/jd-apprentice) ([#1429](https://github.com/community-scripts/ProxmoxVE/pull/1429))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Update lazylibrarian-install.sh: Add pypdf libary [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1467](https://github.com/community-scripts/ProxmoxVE/pull/1467))
|
||||||
|
- Update opengist-install.sh: Add git as dependencie [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1471](https://github.com/community-scripts/ProxmoxVE/pull/1471))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- [website] Update footer text [@rajatdiptabiswas](https://github.com/rajatdiptabiswas) ([#1466](https://github.com/community-scripts/ProxmoxVE/pull/1466))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- Hotfix build.func: Error when tags are empty [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1492](https://github.com/community-scripts/ProxmoxVE/pull/1492))
|
||||||
|
- [core] Update build.func: Fix bug with advanced tags [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1473](https://github.com/community-scripts/ProxmoxVE/pull/1473))
|
||||||
|
|
||||||
|
## 2025-01-13
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 💥 Breaking Changes
|
||||||
|
|
||||||
|
- Update Hoarder: Improvement .env location (see PR comment for little migration) [@MahrWe](https://github.com/MahrWe) ([#1325](https://github.com/community-scripts/ProxmoxVE/pull/1325))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Fix: tandoor.sh: Call version.py to write current version [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1454](https://github.com/community-scripts/ProxmoxVE/pull/1454))
|
||||||
|
- Fix inexistent folder on actualbudget update script [@dosten](https://github.com/dosten) ([#1444](https://github.com/community-scripts/ProxmoxVE/pull/1444))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- Update kavita.json: Add info on how to enable folder adding. [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1447](https://github.com/community-scripts/ProxmoxVE/pull/1447))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- GitHub Actions: Fix Shellsheck workflow to only run on changes `*.sh` files [@andygrunwald](https://github.com/andygrunwald) ([#1423](https://github.com/community-scripts/ProxmoxVE/pull/1423))
|
||||||
|
|
||||||
|
### ❔ Unlabelled
|
||||||
|
|
||||||
|
- feat: allow adding SSH authorized key for root (advanced settings) by @dsiebel [@MickLesk](https://github.com/MickLesk) ([#1456](https://github.com/community-scripts/ProxmoxVE/pull/1456))
|
||||||
|
|
||||||
|
## 2025-01-11
|
||||||
|
|
||||||
|
### Changed
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- Prometheus: Fix installation via creating the service file [@andygrunwald](https://github.com/andygrunwald) ([#1416](https://github.com/community-scripts/ProxmoxVE/pull/1416))
|
||||||
|
- Update prometheus-install.sh: Service creation fix [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1417](https://github.com/community-scripts/ProxmoxVE/pull/1417))
|
||||||
|
- Update prometheus-alertmanager-install.sh: Service Creation Fix [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#1418](https://github.com/community-scripts/ProxmoxVE/pull/1418))
|
||||||
|
- Fix: LubeLogger CT vehicle tag typo [@kkroboth](https://github.com/kkroboth) ([#1413](https://github.com/community-scripts/ProxmoxVE/pull/1413))
|
||||||
|
|
||||||
## 2025-01-10
|
## 2025-01-10
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|||||||
@ -45,6 +45,7 @@ function update_script() {
|
|||||||
cd "${TEMPD}"
|
cd "${TEMPD}"
|
||||||
wget -q https://codeload.github.com/actualbudget/actual-server/legacy.tar.gz/refs/tags/${RELEASE} -O - | tar -xz
|
wget -q https://codeload.github.com/actualbudget/actual-server/legacy.tar.gz/refs/tags/${RELEASE} -O - | tar -xz
|
||||||
mv /opt/actualbudget /opt/actualbudget_bak
|
mv /opt/actualbudget /opt/actualbudget_bak
|
||||||
|
mkdir -p /opt/actualbudget/
|
||||||
mv actualbudget-actual-server-*/* /opt/actualbudget/
|
mv actualbudget-actual-server-*/* /opt/actualbudget/
|
||||||
mv /opt/actualbudget_bak/.env /opt/actualbudget
|
mv /opt/actualbudget_bak/.env /opt/actualbudget
|
||||||
mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
|
mv /opt/actualbudget_bak/server-files /opt/actualbudget/server-files
|
||||||
|
|||||||
@ -40,7 +40,10 @@ function update_script() {
|
|||||||
msg_ok "Stopped Services"
|
msg_ok "Stopped Services"
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt
|
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
|
rm -rf /opt/hoarder
|
||||||
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
wget -q "https://github.com/hoarder-app/hoarder/archive/refs/tags/v${RELEASE}.zip"
|
||||||
unzip -q v${RELEASE}.zip
|
unzip -q v${RELEASE}.zip
|
||||||
@ -54,8 +57,7 @@ function update_script() {
|
|||||||
export DATA_DIR=/opt/hoarder_data
|
export DATA_DIR=/opt/hoarder_data
|
||||||
cd /opt/hoarder/packages/db
|
cd /opt/hoarder/packages/db
|
||||||
pnpm migrate &>/dev/null
|
pnpm migrate &>/dev/null
|
||||||
mv /opt/.env /opt/hoarder/.env
|
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /etc/hoarder/hoarder.env
|
||||||
sed -i "s/SERVER_VERSION=${PREV_RELEASE}/SERVER_VERSION=${RELEASE}/" /opt/hoarder/.env
|
|
||||||
msg_ok "Updated ${APP} to v${RELEASE}"
|
msg_ok "Updated ${APP} to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
@ -79,4 +81,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${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}"
|
||||||
|
|||||||
@ -7,7 +7,7 @@ source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/m
|
|||||||
|
|
||||||
# App Default Values
|
# App Default Values
|
||||||
APP="LubeLogger"
|
APP="LubeLogger"
|
||||||
var_tags="verhicle;car"
|
var_tags="vehicle;car"
|
||||||
var_cpu="1"
|
var_cpu="1"
|
||||||
var_ram="512"
|
var_ram="512"
|
||||||
var_disk="2"
|
var_disk="2"
|
||||||
|
|||||||
71
ct/opengist.sh
Normal file
71
ct/opengist.sh
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Jonathan (jd-apprentice)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://opengist.io/
|
||||||
|
|
||||||
|
# App Default Values
|
||||||
|
APP="Opengist"
|
||||||
|
var_tags="development"
|
||||||
|
var_cpu="1"
|
||||||
|
var_ram="1024"
|
||||||
|
var_disk="8"
|
||||||
|
var_os="debian"
|
||||||
|
var_version="12"
|
||||||
|
var_unprivileged="1"
|
||||||
|
|
||||||
|
# App Output & Base Settings
|
||||||
|
header_info "$APP"
|
||||||
|
base_settings
|
||||||
|
|
||||||
|
# Core
|
||||||
|
variables
|
||||||
|
color
|
||||||
|
catch_errors
|
||||||
|
|
||||||
|
function update_script() {
|
||||||
|
header_info
|
||||||
|
check_container_storage
|
||||||
|
check_container_resources
|
||||||
|
if [[ ! -d /opt/opengist ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
msg_info "Stopping Service"
|
||||||
|
systemctl stop opengist.service
|
||||||
|
msg_ok "Stopped Service"
|
||||||
|
apt-get update &>/dev/null
|
||||||
|
apt-get upgrade &>/dev/null
|
||||||
|
RELEASE=$(curl -s https://api.github.com/repos/thomiceli/opengist/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
||||||
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
|
cd /opt
|
||||||
|
wget -qO "https://github.com/thomiceli/opengist/releases/download/v${RELEASE}/opengist${RELEASE}-linux-amd64.tar.gz"
|
||||||
|
rm -rf /opt/opengist
|
||||||
|
tar -xzf opengist${RELEASE}-linux-amd64.tar.gz
|
||||||
|
chmod +x /opt/opengist/opengist
|
||||||
|
echo "${RELEASE}" >"/opt/${APP}_version.txt"
|
||||||
|
rm -rf /opt/opengist${RELEASE}-linux-amd64.tar.gz
|
||||||
|
apt-get -y autoremove &>/dev/null
|
||||||
|
apt-get -y autoclean &>/dev/null
|
||||||
|
msg_ok "Updated ${APP} LXC"
|
||||||
|
|
||||||
|
msg_info "Starting Service"
|
||||||
|
systemctl start opengist.service
|
||||||
|
msg_ok "Started Service"
|
||||||
|
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}."
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:6157${CL}"
|
||||||
@ -45,6 +45,8 @@ function update_script() {
|
|||||||
cd /opt/tandoor/vue
|
cd /opt/tandoor/vue
|
||||||
yarn install >/dev/null 2>&1
|
yarn install >/dev/null 2>&1
|
||||||
yarn build >/dev/null 2>&1
|
yarn build >/dev/null 2>&1
|
||||||
|
cd /opt/tandoor
|
||||||
|
python3 version.py &>/dev/null
|
||||||
systemctl restart gunicorn_tandoor
|
systemctl restart gunicorn_tandoor
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
fi
|
fi
|
||||||
@ -58,4 +60,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${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="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="flex w-full justify-between">
|
||||||
<div className="mx-6 w-full max-w-7xl text-sm text-muted-foreground">
|
<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
|
<Link
|
||||||
href={`https://github.com/community-scripts/${basePath}`}
|
href={`https://github.com/community-scripts/${basePath}`}
|
||||||
target="_blank"
|
target="_blank"
|
||||||
|
|||||||
@ -78,7 +78,8 @@ $STD pnpm install --frozen-lockfile
|
|||||||
|
|
||||||
export DATA_DIR=/opt/hoarder_data
|
export DATA_DIR=/opt/hoarder_data
|
||||||
HOARDER_SECRET=$(openssl rand -base64 36 | cut -c1-24)
|
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
|
SERVER_VERSION=$RELEASE
|
||||||
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
NEXTAUTH_SECRET="$HOARDER_SECRET"
|
||||||
NEXTAUTH_URL="http://localhost:3000"
|
NEXTAUTH_URL="http://localhost:3000"
|
||||||
@ -129,7 +130,7 @@ After=network.target hoarder-workers.service
|
|||||||
[Service]
|
[Service]
|
||||||
ExecStart=pnpm start
|
ExecStart=pnpm start
|
||||||
WorkingDirectory=/opt/hoarder/apps/web
|
WorkingDirectory=/opt/hoarder/apps/web
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||||
Restart=always
|
Restart=always
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@ -159,7 +160,7 @@ After=network.target hoarder-browser.service meilisearch.service
|
|||||||
[Service]
|
[Service]
|
||||||
ExecStart=pnpm start:prod
|
ExecStart=pnpm start:prod
|
||||||
WorkingDirectory=/opt/hoarder/apps/workers
|
WorkingDirectory=/opt/hoarder/apps/workers
|
||||||
EnvironmentFile=/opt/hoarder/.env
|
EnvironmentFile=/etc/hoarder/hoarder.env
|
||||||
Restart=always
|
Restart=always
|
||||||
TimeoutStopSec=5
|
TimeoutStopSec=5
|
||||||
|
|
||||||
|
|||||||
@ -33,6 +33,7 @@ $STD apt-get install -y \
|
|||||||
$STD pip install jaraco.stream
|
$STD pip install jaraco.stream
|
||||||
$STD pip install python-Levenshtein
|
$STD pip install python-Levenshtein
|
||||||
$STD pip install soupsieve
|
$STD pip install soupsieve
|
||||||
|
$STD pip install pypdf
|
||||||
msg_ok "Installed Python3 Dependencies"
|
msg_ok "Installed Python3 Dependencies"
|
||||||
|
|
||||||
msg_info "Installing LazyLibrarian"
|
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"
|
||||||
@ -33,7 +33,7 @@ msg_ok "Installed Prometheus Alertmanager"
|
|||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/prometheus-alertmanager.service
|
cat <<EOF >/etc/systemd/system/prometheus-alertmanager.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=Prometheus Alertmanager
|
Description=Prometheus Alertmanager
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
@ -49,7 +49,7 @@ ExecStart=/usr/local/bin/alertmanager \
|
|||||||
ExecReload=/bin/kill -HUP \$MAINPID
|
ExecReload=/bin/kill -HUP \$MAINPID
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target"
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now prometheus-alertmanager
|
systemctl enable -q --now prometheus-alertmanager
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|||||||
@ -32,8 +32,8 @@ echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|||||||
msg_ok "Installed Prometheus"
|
msg_ok "Installed Prometheus"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/prometheus.service"
|
cat <<EOF >/etc/systemd/system/prometheus.service
|
||||||
echo "[Unit]
|
[Unit]
|
||||||
Description=Prometheus
|
Description=Prometheus
|
||||||
Wants=network-online.target
|
Wants=network-online.target
|
||||||
After=network-online.target
|
After=network-online.target
|
||||||
@ -49,7 +49,7 @@ ExecStart=/usr/local/bin/prometheus \
|
|||||||
ExecReload=/bin/kill -HUP \$MAINPID
|
ExecReload=/bin/kill -HUP \$MAINPID
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target"
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now prometheus
|
systemctl enable -q --now prometheus
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|||||||
@ -74,6 +74,7 @@ $STD pnpm build:server
|
|||||||
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
echo "${RELEASE}" >"/opt/${APPLICATION}_version.txt"
|
||||||
cat <<EOF >/opt/tianji/src/server/.env
|
cat <<EOF >/opt/tianji/src/server/.env
|
||||||
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?schema=public"
|
DATABASE_URL="postgresql://$DB_USER:$DB_PASS@localhost:5432/$DB_NAME?schema=public"
|
||||||
|
OPENAI_API_KEY=""
|
||||||
JWT_SECRET="$TIANJI_SECRET"
|
JWT_SECRET="$TIANJI_SECRET"
|
||||||
EOF
|
EOF
|
||||||
cd /opt/tianji/src/server
|
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"
|
||||||
@ -30,5 +30,9 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": 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/wordpress.json
Normal file
34
json/wordpress.json
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
{
|
||||||
|
"name": "Wordpress",
|
||||||
|
"slug": "wordpress",
|
||||||
|
"categories": [
|
||||||
|
14
|
||||||
|
],
|
||||||
|
"date_created": "2025-01-14",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 80,
|
||||||
|
"documentation": "https://wordpress.org/documentation/",
|
||||||
|
"website": "https://wordpress.org/",
|
||||||
|
"logo": "https://s.w.org/style/images/about/WordPress-logotype-simplified.png",
|
||||||
|
"description": "WordPress is the simplest, most popular way to create your own website or blog. In fact, WordPress powers over 43.6% of all the websites on the Internet. Yes – more than one in four websites that you visit are likely powered by WordPress.\n\nOn a slightly more technical level, WordPress is an open-source content management system licensed under GPLv2, which means that anyone can use or modify the WordPress software for free.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/wordpress.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 2048,
|
||||||
|
"hdd": 5,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": []
|
||||||
|
}
|
||||||
@ -1,4 +1,4 @@
|
|||||||
### Generated on 01-10-2025
|
### Generated on 01-14-2025
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
### 2fauth.sh
|
### 2fauth.sh
|
||||||
@ -529,6 +529,15 @@ APP=Frigate
|
|||||||
/_/ /_/ /_/\__, /\__,_/\__/\___/
|
/_/ /_/ /_/\__, /\__,_/\__/\___/
|
||||||
/____/
|
/____/
|
||||||
|
|
||||||
|
### ghost.sh
|
||||||
|
APP=Ghost
|
||||||
|
________ __
|
||||||
|
/ ____/ /_ ____ _____/ /_
|
||||||
|
/ / __/ __ \/ __ \/ ___/ __/
|
||||||
|
/ /_/ / / / / /_/ (__ ) /_
|
||||||
|
\____/_/ /_/\____/____/\__/
|
||||||
|
|
||||||
|
|
||||||
### gitea.sh
|
### gitea.sh
|
||||||
APP=Gitea
|
APP=Gitea
|
||||||
_______ __
|
_______ __
|
||||||
@ -1222,6 +1231,15 @@ APP=OneDev
|
|||||||
\____/_/ /_/\___/_____/\___/|___/
|
\____/_/ /_/\___/_____/\___/|___/
|
||||||
|
|
||||||
|
|
||||||
|
### opengist.sh
|
||||||
|
APP=Opengist
|
||||||
|
____ _ __
|
||||||
|
/ __ \____ ___ ____ ____ _(_)____/ /_
|
||||||
|
/ / / / __ \/ _ \/ __ \/ __ `/ / ___/ __/
|
||||||
|
/ /_/ / /_/ / __/ / / / /_/ / (__ ) /_
|
||||||
|
\____/ .___/\___/_/ /_/\__, /_/____/\__/
|
||||||
|
/_/ /____/
|
||||||
|
|
||||||
### openhab.sh
|
### openhab.sh
|
||||||
APP=openHAB
|
APP=openHAB
|
||||||
__ _____ ____
|
__ _____ ____
|
||||||
@ -1948,6 +1966,15 @@ APP=Wireguard
|
|||||||
|__/|__/_/_/ \___/\__, /\__,_/\__,_/_/ \__,_/
|
|__/|__/_/_/ \___/\__, /\__,_/\__,_/_/ \__,_/
|
||||||
/____/
|
/____/
|
||||||
|
|
||||||
|
### wordpress.sh
|
||||||
|
APP=Wordpress
|
||||||
|
_ __ __
|
||||||
|
| | / /___ _________/ /___ ________ __________
|
||||||
|
| | /| / / __ \/ ___/ __ / __ \/ ___/ _ \/ ___/ ___/
|
||||||
|
| |/ |/ / /_/ / / / /_/ / /_/ / / / __(__ |__ )
|
||||||
|
|__/|__/\____/_/ \__,_/ .___/_/ \___/____/____/
|
||||||
|
/_/
|
||||||
|
|
||||||
### yunohost.sh
|
### yunohost.sh
|
||||||
APP=YunoHost
|
APP=YunoHost
|
||||||
__ __ __ __ __
|
__ __ __ __ __
|
||||||
|
|||||||
@ -36,7 +36,7 @@ color() {
|
|||||||
INFO="${TAB}💡${TAB}${CL}"
|
INFO="${TAB}💡${TAB}${CL}"
|
||||||
OS="${TAB}🖥️${TAB}${CL}"
|
OS="${TAB}🖥️${TAB}${CL}"
|
||||||
OSVERSION="${TAB}🌟${TAB}${CL}"
|
OSVERSION="${TAB}🌟${TAB}${CL}"
|
||||||
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
CONTAINERTYPE="${TAB}📦${TAB}${CL}"
|
||||||
DISKSIZE="${TAB}💾${TAB}${CL}"
|
DISKSIZE="${TAB}💾${TAB}${CL}"
|
||||||
CPUCORE="${TAB}🧠${TAB}${CL}"
|
CPUCORE="${TAB}🧠${TAB}${CL}"
|
||||||
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
RAMSIZE="${TAB}🛠️${TAB}${CL}"
|
||||||
@ -283,8 +283,9 @@ base_settings() {
|
|||||||
MAC=""
|
MAC=""
|
||||||
VLAN=""
|
VLAN=""
|
||||||
SSH="no"
|
SSH="no"
|
||||||
|
SSH_AUTHORIZED_KEY=""
|
||||||
TAGS="community-script;"
|
TAGS="community-script;"
|
||||||
|
|
||||||
# Override default settings with variables from ct script
|
# Override default settings with variables from ct script
|
||||||
CT_TYPE=${var_unprivileged:-$CT_TYPE}
|
CT_TYPE=${var_unprivileged:-$CT_TYPE}
|
||||||
DISK_SIZE=${var_disk:-$DISK_SIZE}
|
DISK_SIZE=${var_disk:-$DISK_SIZE}
|
||||||
@ -292,7 +293,7 @@ base_settings() {
|
|||||||
RAM_SIZE=${var_ram:-$RAM_SIZE}
|
RAM_SIZE=${var_ram:-$RAM_SIZE}
|
||||||
VERB=${var_verbose:-$VERBOSE}
|
VERB=${var_verbose:-$VERBOSE}
|
||||||
TAGS="${TAGS}${var_tags:-}"
|
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
|
# 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
|
if [ -z "$var_os" ]; then
|
||||||
var_os="debian"
|
var_os="debian"
|
||||||
@ -314,9 +315,9 @@ echo_default() {
|
|||||||
echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}"
|
echo -e "${OS}${BOLD}${DGN}Operating System: ${BGN}$var_os${CL}"
|
||||||
echo -e "${OSVERSION}${BOLD}${DGN}Version: ${BGN}$var_version${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 "${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 "${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}"
|
echo -e "${CONTAINERID}${BOLD}${DGN}Container ID: ${BGN}${CT_ID}${CL}"
|
||||||
if [ "$VERB" == "yes" ]; then
|
if [ "$VERB" == "yes" ]; then
|
||||||
echo -e "${SEARCH}${BOLD}${DGN}Verbose Mode: ${BGN}Enabled${CL}"
|
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 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
|
if [ -z "$DISK_SIZE" ]; then
|
||||||
DISK_SIZE="$var_disk"
|
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
|
else
|
||||||
if ! [[ $DISK_SIZE =~ $INTEGER ]]; then
|
if ! [[ $DISK_SIZE =~ $INTEGER ]]; then
|
||||||
echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}"
|
echo -e "{INFO}${HOLD}${RD} DISK SIZE MUST BE AN INTEGER NUMBER!${CL}"
|
||||||
advanced_settings
|
advanced_settings
|
||||||
fi
|
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
|
fi
|
||||||
else
|
else
|
||||||
exit_script
|
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 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
|
if [ -z "$RAM_SIZE" ]; then
|
||||||
RAM_SIZE="$var_ram"
|
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
|
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
|
fi
|
||||||
else
|
else
|
||||||
exit_script
|
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 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
|
if [ -n "${ADV_TAGS}" ]; then
|
||||||
ADV_TAGS=${ADV_TAGS:-""}
|
ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]') # Remove whitespace from ADV_TAGS
|
||||||
ADV_TAGS=$(echo "$ADV_TAGS" | tr -d '[:space:]')
|
if [[ "$ADV_TAGS" != *"community-script"* ]]; then
|
||||||
TAGS="community-script;${ADV_TAGS}"
|
TAGS="community-script;${ADV_TAGS}"
|
||||||
|
else
|
||||||
|
TAGS="${ADV_TAGS}" # ADV_TAGS already contains "community-script"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
TAGS="community-script;"
|
||||||
fi
|
fi
|
||||||
echo -e "${NETWORK}${BOLD}${DGN}Tags: ${BGN}$TAGS${CL}"
|
echo -e "${NETWORK}${BOLD}${DGN}Tags: ${BGN}$TAGS${CL}"
|
||||||
else
|
else
|
||||||
@ -649,6 +655,15 @@ advanced_settings() {
|
|||||||
echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}"
|
echo -e "${ROOTSSH}${BOLD}${DGN}Root SSH Access: ${BGN}$SSH${CL}"
|
||||||
fi
|
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
|
if (whiptail --backtitle "Proxmox VE Helper Scripts" --defaultno --title "VERBOSE MODE" --yesno "Enable Verbose Mode?" 10 58); then
|
||||||
VERB="yes"
|
VERB="yes"
|
||||||
else
|
else
|
||||||
@ -697,15 +712,15 @@ install_script() {
|
|||||||
header_info
|
header_info
|
||||||
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
|
echo -e "${DEFAULT}${BOLD}${BL}Using Default Settings on node $PVEHOST_NAME${CL}"
|
||||||
VERB="no"
|
VERB="no"
|
||||||
base_settings "$VERB"
|
base_settings "$VERB"
|
||||||
echo_default
|
echo_default
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
2)
|
2)
|
||||||
header_info
|
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"
|
VERB="yes"
|
||||||
base_settings "$VERB"
|
base_settings "$VERB"
|
||||||
echo_default
|
echo_default
|
||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
@ -729,13 +744,13 @@ install_script() {
|
|||||||
check_container_resources() {
|
check_container_resources() {
|
||||||
# Check actual RAM & Cores
|
# Check actual RAM & Cores
|
||||||
current_ram=$(free -m | awk 'NR==2{print $2}')
|
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
|
# 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
|
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 "\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"
|
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
|
# Check if the input is 'yes', otherwise exit with status 1
|
||||||
if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then
|
if [[ ! ${prompt,,} =~ ^(yes)$ ]]; then
|
||||||
echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}"
|
echo -e "${CROSS}${HOLD} ${YWB}Exiting based on user input.${CL}"
|
||||||
@ -754,7 +769,7 @@ check_container_storage() {
|
|||||||
if (( usage > 80 )); then
|
if (( usage > 80 )); then
|
||||||
# Prompt the user for confirmation to continue
|
# Prompt the user for confirmation to continue
|
||||||
echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
|
echo -e "${INFO}${HOLD} ${YWB}Warning: Storage is dangerously low (${usage}%).${CL}"
|
||||||
read -r -p "Continue anyway? <y/N> " prompt
|
read -r -p "Continue anyway? <y/N> " prompt
|
||||||
# Check if the input is 'y' or 'yes', otherwise exit with status 1
|
# Check if the input is 'y' or 'yes', otherwise exit with status 1
|
||||||
if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ! ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"
|
echo -e "${CROSS}${HOLD}${YWB}Exiting based on user input.${CL}"
|
||||||
|
|||||||
Reference in New Issue
Block a user