Compare commits

..
Author SHA1 Message Date
MickLesk 51fc861b0f Install into uv venvs with uv pip instead of pip 2026-09-30 21:02:16 +02:00
1010 changed files with 5414 additions and 1481 deletions
+5
View File
@@ -7,6 +7,11 @@
*.func linguist-detectable=true *.func linguist-detectable=true
*.install linguist-language=Shell *.install linguist-language=Shell
# ---------------------------------------
# Exclude header art from stats
# ---------------------------------------
ct/headers/* linguist-documentation
# --------------------------------------- # ---------------------------------------
# Exclude documentation from stats # Exclude documentation from stats
# --------------------------------------- # ---------------------------------------
+6 -2
View File
@@ -10,7 +10,9 @@
], ],
"excludeGlobs": [ "excludeGlobs": [
"**/headers/**", "**/headers/**",
"tools/headers/**" "ct/headers/**",
"tools/headers/**",
"vm/headers/**"
] ]
} }
], ],
@@ -46,7 +48,9 @@
], ],
"excludeGlobs": [ "excludeGlobs": [
"**/headers/**", "**/headers/**",
"tools/headers/**" "ct/headers/**",
"tools/headers/**",
"vm/headers/**"
] ]
} }
], ],
-84
View File
@@ -1,87 +1,3 @@
## 2026-09-30
### 🆕 New Scripts
- Shoko ([#17617](https://github.com/community-scripts/ProxmoxVE/pull/17617))
- SIlo ([#17614](https://github.com/community-scripts/ProxmoxVE/pull/17614))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(blocky): restart on failure and wait for network-online [@haplo](https://github.com/haplo) ([#17601](https://github.com/community-scripts/ProxmoxVE/pull/17601))
- SparkyFitness: update sed replacement [@tomfrenzel](https://github.com/tomfrenzel) ([#17604](https://github.com/community-scripts/ProxmoxVE/pull/17604))
### 💾 Core
- vm: autologin on the serial console for images without cloud-init [@MickLesk](https://github.com/MickLesk) ([core#80](https://github.com/community-scripts/core/pull/80))
- download_gpg_key: make dearmored keyrings world-readable [@MickLesk](https://github.com/MickLesk) ([core#79](https://github.com/community-scripts/core/pull/79))
## 2026-09-29
### 🆕 New Scripts
- Anki Sync Server ([#17416](https://github.com/community-scripts/ProxmoxVE/pull/17416))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(kaneo): build with Vite+ instead of Turbo [@tinsever](https://github.com/tinsever) ([#17599](https://github.com/community-scripts/ProxmoxVE/pull/17599))
- tianji: raise the Node heap for the static build on install [@MickLesk](https://github.com/MickLesk) ([#17582](https://github.com/community-scripts/ProxmoxVE/pull/17582))
- fix(romm): snapshot Redis hourly like the upstream image [@DenislavDenev](https://github.com/DenislavDenev) ([#17562](https://github.com/community-scripts/ProxmoxVE/pull/17562))
- checkmate: bump Node.js from 22 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#17554](https://github.com/community-scripts/ProxmoxVE/pull/17554))
- #### 🔧 Refactor
- Drop the scripts base pin from every ct/ script [@MickLesk](https://github.com/MickLesk) ([#17585](https://github.com/community-scripts/ProxmoxVE/pull/17585))
- odoo: move to Debian 13 and stay on the installed major on update [@MickLesk](https://github.com/MickLesk) ([#17581](https://github.com/community-scripts/ProxmoxVE/pull/17581))
- manyfold: use upstream f3d for headless renders on amd64 [@MickLesk](https://github.com/MickLesk) ([#17583](https://github.com/community-scripts/ProxmoxVE/pull/17583))
### 💾 Core
- Default the scripts base to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#76](https://github.com/community-scripts/core/pull/76))
### 🧰 Tools
- #### 🐞 Bug Fixes
- all-templates: handle the arch column of pveam available [@MickLesk](https://github.com/MickLesk) ([#17579](https://github.com/community-scripts/ProxmoxVE/pull/17579))
### 📂 Github
- Skip automated core pull requests in the changelog [@MickLesk](https://github.com/MickLesk) ([#17589](https://github.com/community-scripts/ProxmoxVE/pull/17589))
- Post a test command for vm/, tools/ and turnkey/ changes too [@MickLesk](https://github.com/MickLesk) ([#17587](https://github.com/community-scripts/ProxmoxVE/pull/17587))
- Remove the PocketBase AI bot [@MickLesk](https://github.com/MickLesk) ([#17591](https://github.com/community-scripts/ProxmoxVE/pull/17591))
## 2026-09-28
### 🚀 Updated Scripts
- Immich: Pin version to 3.2.4 [@vhsdream](https://github.com/vhsdream) ([#17564](https://github.com/community-scripts/ProxmoxVE/pull/17564))
- #### 🐞 Bug Fixes
- fix(autocaliweb): wire .env into all service units, not just autocali… [@bobartlett](https://github.com/bobartlett) ([#17561](https://github.com/community-scripts/ProxmoxVE/pull/17561))
- Zipline: Change cp command [@Mraedis](https://github.com/Mraedis) ([#17559](https://github.com/community-scripts/ProxmoxVE/pull/17559))
- Borg-UI: start through upstream's start.sh so migrations run [@MickLesk](https://github.com/MickLesk) ([#17563](https://github.com/community-scripts/ProxmoxVE/pull/17563))
- linkding: serve favicons and preview images [@MickLesk](https://github.com/MickLesk) ([#17557](https://github.com/community-scripts/ProxmoxVE/pull/17557))
- SparkyFitness: Fill in the nginx resolver 1.7.3 added [@MickLesk](https://github.com/MickLesk) ([#17556](https://github.com/community-scripts/ProxmoxVE/pull/17556))
- #### 🔧 Refactor
- Plane: Replace MinIO installation with Silo [@MickLesk](https://github.com/MickLesk) ([#17347](https://github.com/community-scripts/ProxmoxVE/pull/17347))
## 2026-09-27
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- fix(aurral): bump to Node 26 and bypass strict engine pin [@JodyVanden](https://github.com/JodyVanden) ([#17543](https://github.com/community-scripts/ProxmoxVE/pull/17543))
- Tracearr: fetch map tiles on install/update [@durzo](https://github.com/durzo) ([#17544](https://github.com/community-scripts/ProxmoxVE/pull/17544))
- fix(autocaliweb): define INSTALL_DIR before first use [@bobartlett](https://github.com/bobartlett) ([#17545](https://github.com/community-scripts/ProxmoxVE/pull/17545))
## 2026-09-26 ## 2026-09-26
### 🚀 Updated Scripts ### 🚀 Updated Scripts
-74
View File
@@ -1,74 +0,0 @@
## 2026-10-03
### 🆕 New Scripts
- Keeper.sh ([#17659](https://github.com/community-scripts/ProxmoxVE/pull/17659))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- hermesagent: download the installer before running it [@MickLesk](https://github.com/MickLesk) ([#17666](https://github.com/community-scripts/ProxmoxVE/pull/17666))
- frigate: raise the Node heap for the web build [@MickLesk](https://github.com/MickLesk) ([#17667](https://github.com/community-scripts/ProxmoxVE/pull/17667))
- Tracearr: workaround for failing map tiles download and data preservation [@durzo](https://github.com/durzo) ([#17661](https://github.com/community-scripts/ProxmoxVE/pull/17661))
- fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth [@PsycoStea](https://github.com/PsycoStea) ([#17653](https://github.com/community-scripts/ProxmoxVE/pull/17653))
- #### 🔧 Refactor
- Several Scripts: refactor msg_ blocks, generate passwords with helper, add CLEAN_INSTALL_KEEP [@MickLesk](https://github.com/MickLesk) ([#17655](https://github.com/community-scripts/ProxmoxVE/pull/17655))
### 💾 Core
- detect_repo_source: read the license header and fall back to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#85](https://github.com/community-scripts/core/pull/85))
## 2026-10-02
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- zerobyte: upgrade Bun on update [@MickLesk](https://github.com/MickLesk) ([#17646](https://github.com/community-scripts/ProxmoxVE/pull/17646))
- sure: keep Active Storage uploads across updates [@MickLesk](https://github.com/MickLesk) ([#17648](https://github.com/community-scripts/ProxmoxVE/pull/17648))
- twenty: run upstreams upgrade command instead of the removed setup-db.ts [@MickLesk](https://github.com/MickLesk) ([#17647](https://github.com/community-scripts/ProxmoxVE/pull/17647))
- #### 🔧 Refactor
- NPM: Refactor / Fix npm openresty user and certbot version [@MickLesk](https://github.com/MickLesk) ([#17649](https://github.com/community-scripts/ProxmoxVE/pull/17649))
- several scripts: use the release helpers instead of hand-rolled version checks and downloads [@MickLesk](https://github.com/MickLesk) ([#17625](https://github.com/community-scripts/ProxmoxVE/pull/17625))
### 💾 Core
- QoL: message blocks, clean-install keep list, password helper, network limits [@MickLesk](https://github.com/MickLesk) ([core#61](https://github.com/community-scripts/core/pull/61))
## 2026-10-01
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- romm: keep the asset links in sync with ROMM_BASE_PATH [@MickLesk](https://github.com/MickLesk) ([#17610](https://github.com/community-scripts/ProxmoxVE/pull/17610))
- teslamate: build from the elixir directory since 4.3.0 [@MickLesk](https://github.com/MickLesk) ([#17612](https://github.com/community-scripts/ProxmoxVE/pull/17612))
- #### ✨ New Features
- feat(glance): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17605](https://github.com/community-scripts/ProxmoxVE/pull/17605))
- feat(blocky): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17637](https://github.com/community-scripts/ProxmoxVE/pull/17637))
- #### 🔧 Refactor
- several scripts: apt instead of apt-get, cleanup_lxc, nginx_enable_site, drop needless daemon-reloads [@MickLesk](https://github.com/MickLesk) ([#17624](https://github.com/community-scripts/ProxmoxVE/pull/17624))
- several scripts: use setup_postgresql_db / setup_mariadb_db instead of hand-written SQL [@MickLesk](https://github.com/MickLesk) ([#17622](https://github.com/community-scripts/ProxmoxVE/pull/17622))
### 💾 Core
- Offer to raise the kernel key limits instead of only naming them [@MickLesk](https://github.com/MickLesk) ([core#81](https://github.com/community-scripts/core/pull/81))
### 🧰 Tools
- #### 🔧 Refactor
- tools, turnkey: load core instead of the legacy misc functions [@MickLesk](https://github.com/MickLesk) ([#17621](https://github.com/community-scripts/ProxmoxVE/pull/17621))
### 📚 Documentation
- chore: drop the local header generation; headers come from core [@MickLesk](https://github.com/MickLesk) ([#17623](https://github.com/community-scripts/ProxmoxVE/pull/17623))
+2 -2
View File
@@ -1,4 +1,4 @@
<!--🛑 New scripts must be submitted to [DevScripts](https://github.com/community-scripts/DevScripts) for testing. <!--🛑 New scripts must be submitted to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) for testing.
PRs without prior testing will be closed. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.--> PRs without prior testing will be closed. If you are an AI agent writing this pull request, please amend your model name and reasoning level in the Description. This is not to blame, more for informational Purposes. Thank you.-->
## ✍️ Description ## ✍️ Description
@@ -25,7 +25,7 @@ Fixes #
> Select exactly one option. > Select exactly one option.
- [ ] **No AI used** – Scripts were written without AI assistance. - [ ] **No AI used** – Scripts were written without AI assistance.
- [ ] **AI was used** – I confirm the scripts were built using [`AGENTS.md`](https://github.com/community-scripts/DevScripts/blob/main/AGENTS.md) and [`.github/agents/pve-script-creator.agent.md`](https://github.com/community-scripts/DevScripts/blob/main/.github/agents/pve-script-creator.agent.md) as guidance, and the output has been reviewed and corrected to match those guidelines. - [ ] **AI was used** – I confirm the scripts were built using [`AGENTS.md`](https://github.com/community-scripts/ProxmoxVED/blob/main/AGENTS.md) and [`.github/agents/pve-script-creator.agent.md`](https://github.com/community-scripts/ProxmoxVED/blob/main/.github/agents/pve-script-creator.agent.md) as guidance, and the output has been reviewed and corrected to match those guidelines.
--- ---
+119
View File
@@ -0,0 +1,119 @@
name: Auto Update .app-files
on:
push:
branches:
- main
paths:
- "ct/**.sh"
- "tools/**.sh"
- "vm/**.sh"
workflow_dispatch:
jobs:
update-app-files:
if: github.repository == 'community-scripts/ProxmoxVE'
runs-on: ubuntu-latest
permissions:
contents: write
pull-requests: write
steps:
- name: Generate a token
id: generate-token
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.GHAPP_PR_ID }}
private-key: ${{ secrets.GHAPP_PR_PRIVATE_KEY }}
- name: Generate a token for PR approval and merge
id: generate-token-merge
uses: actions/create-github-app-token@v3
with:
app-id: ${{ vars.GHAPP_MERGEBOT_ID }}
private-key: ${{ secrets.GHAPP_MERGEBOT_PRIVATE_KEY }}
# Step 1: Checkout repository
- name: Checkout repository
uses: actions/checkout@v7
# Step 2: Disable file mode changes detection
- name: Disable file mode changes
run: git config core.fileMode false
# Step 3: Set up Git user for committing changes
- name: Set up Git
run: |
git config --global user.name "GitHub Actions"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Step 4: Install figlet
- name: Install figlet
run: sudo apt-get install -y figlet
# Step 5: Run the updated generate-app-files.sh script
- name: Run generate-app-files.sh
run: |
chmod +x .github/workflows/scripts/generate-app-headers.sh
.github/workflows/scripts/generate-app-headers.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# Step 6: Check if there are any changes
- name: Check if there are any changes
run: |
echo "Checking for changes..."
git add -A # Untracked Dateien aufnehmen
git status
if git diff --cached --quiet; then
echo "No changes detected."
echo "changed=false" >> "$GITHUB_ENV"
else
echo "Changes detected:"
git diff --stat --cached
echo "changed=true" >> "$GITHUB_ENV"
fi
# Step 7: Commit and create PR if changes exist
- name: Commit and create PR if changes exist
if: env.changed == 'true'
run: |
git commit -m "Update .app files"
git checkout -b pr-update-app-files
git push origin pr-update-app-files --force
gh pr create --title "[core] update .app files" \
--body "This PR is auto-generated by a GitHub Action to update the .app files." \
--head pr-update-app-files \
--base main \
--label "automated pr"
env:
GH_TOKEN: ${{ steps.generate-token.outputs.token }}
- name: Approve pull request
if: env.changed == 'true'
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
PR_NUMBER=$(gh pr list --head "pr-update-app-files" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
fi
- name: Approve pull request and merge
if: env.changed == 'true'
env:
GH_TOKEN: ${{ steps.generate-token-merge.outputs.token }}
run: |
git config --global user.name "github-actions-automege[bot]"
git config --global user.email "github-actions-automege[bot]@users.noreply.github.com"
PR_NUMBER=$(gh pr list --head "${BRANCH_NAME}" --json number --jq '.[].number')
if [ -n "$PR_NUMBER" ]; then
gh pr review $PR_NUMBER --approve
gh pr merge $PR_NUMBER --squash --admin
fi
# Step 8: Output success message when no changes
- name: No changes detected
if: env.changed == 'false'
run: echo "No changes to commit. Workflow completed successfully."
+1 -1
View File
@@ -126,7 +126,7 @@ jobs:
try { try {
const { data: relatedIssues } = await github.rest.issues.listForRepo({ const { data: relatedIssues } = await github.rest.issues.listForRepo({
owner: context.repo.owner, owner: context.repo.owner,
repo: "DevScripts", repo: "ProxmoxVED",
state: "all", state: "all",
labels: ["Started Migration To ProxmoxVE"] labels: ["Started Migration To ProxmoxVE"]
}); });
+2 -2
View File
@@ -86,10 +86,10 @@ jobs:
``, ``,
`However, **new scripts must first be submitted to our development repository** for testing and review before they can be merged here.`, `However, **new scripts must first be submitted to our development repository** for testing and review before they can be merged here.`,
``, ``,
`> 🛑 New scripts must be submitted to [**DevScripts**](https://github.com/community-scripts/DevScripts) for testing.`, `> 🛑 New scripts must be submitted to [**ProxmoxVED**](https://github.com/community-scripts/ProxmoxVED) for testing.`,
`> PRs without prior testing will be closed.`, `> PRs without prior testing will be closed.`,
``, ``,
`Please open your PR at **https://github.com/community-scripts/DevScripts** instead.`, `Please open your PR at **https://github.com/community-scripts/ProxmoxVED** instead.`,
`Once your script has been tested and approved there, it will be pushed to this repository automatically.`, `Once your script has been tested and approved there, it will be pushed to this repository automatically.`,
``, ``,
`This PR will now be closed. Thank you for understanding! 🙏`, `This PR will now be closed. Thank you for understanding! 🙏`,
+5 -5
View File
@@ -12,7 +12,7 @@ jobs:
if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE' if: github.event.pull_request.merged == true && github.repository == 'community-scripts/ProxmoxVE'
runs-on: self-hosted runs-on: self-hosted
env: env:
DEV_REPO: community-scripts/DevScripts DEV_REPO: community-scripts/ProxmoxVED
steps: steps:
- name: Checkout target repo (merge commit) - name: Checkout target repo (merge commit)
@@ -60,7 +60,7 @@ jobs:
echo "count=$(printf '%s' "$slugs" | wc -w | tr -d '[:space:]')" >> "$GITHUB_OUTPUT" echo "count=$(printf '%s' "$slugs" | wc -w | tr -d '[:space:]')" >> "$GITHUB_OUTPUT"
echo "Slugs in this PR: ${slugs:-<none>}" echo "Slugs in this PR: ${slugs:-<none>}"
- name: Resolve the matching DevScripts issue - name: Resolve the matching ProxmoxVED issue
id: find_issue id: find_issue
shell: bash shell: bash
env: env:
@@ -71,7 +71,7 @@ jobs:
# creates, so migration PRs carry an exact back-reference. Guessing from # creates, so migration PRs carry an exact back-reference. Guessing from
# titles or file names is never needed for them. # titles or file names is never needed for them.
matched=$(printf '%s' "$PR_BODY" \ matched=$(printf '%s' "$PR_BODY" \
| grep -oE 'community-scripts/(ProxmoxVED|DevScripts)#[0-9]+' \ | grep -oE 'community-scripts/ProxmoxVED#[0-9]+' \
| sed 's/.*#//' || true) | sed 's/.*#//' || true)
if [ -n "$matched" ]; then if [ -n "$matched" ]; then
@@ -96,7 +96,7 @@ jobs:
[ -n "$row" ] || continue [ -n "$row" ] || continue
num=$(printf '%s' "$row" | jq -r '.number') num=$(printf '%s' "$row" | jq -r '.number')
# Same slug derivation the DevScripts workflows use, so both # Same slug derivation the ProxmoxVED workflows use, so both
# sides agree on what "alpine-cinny" means. # sides agree on what "alpine-cinny" means.
name=$(printf '%s' "$row" | jq -r '.body // ""' \ name=$(printf '%s' "$row" | jq -r '.body // ""' \
| sed -n '/^###[[:space:]]*Name of the Script/,/^###/p' \ | sed -n '/^###[[:space:]]*Name of the Script/,/^###/p' \
@@ -124,7 +124,7 @@ jobs:
echo "issue_numbers=$matched" >> "$GITHUB_OUTPUT" echo "issue_numbers=$matched" >> "$GITHUB_OUTPUT"
echo "Closing: ${matched:-<none>}" echo "Closing: ${matched:-<none>}"
- name: Comment on and close matching DevScripts issues - name: Comment on and close matching ProxmoxVED issues
if: steps.find_issue.outputs.issue_numbers != '' if: steps.find_issue.outputs.issue_numbers != ''
shell: bash shell: bash
env: env:
+54
View File
@@ -0,0 +1,54 @@
#!/usr/bin/env bash
# Function for generating Figlet headers
generate_headers() {
local base_dir=$1
local target_subdir=$2
local search_pattern=$3
local headers_dir="${base_dir}/headers"
mkdir -p "$headers_dir"
rm -f "$headers_dir"/*
# Recursive or non-recursive search
if [[ "$search_pattern" == "**" ]]; then
shopt -s globstar nullglob
file_list=("${base_dir}"/**/*.sh)
shopt -u globstar
else
file_list=("${base_dir}"/*.sh)
fi
for script in "${file_list[@]}"; do
[[ -f "$script" ]] || continue
# -m1: a script that sets APP twice (the second carrying ${var_version})
# otherwise yields both lines, and the filename gets a newline in it.
app_name=$(grep -m1 -oP '^APP="\K[^"]+' "$script" 2>/dev/null)
if [[ -n "$app_name" ]]; then
# core.func/vm-core.func look the header up as "${APP,,}" without spaces,
# so the generated file has to be named after APP - not after the script.
output_file="${headers_dir}/$(echo "${app_name,,}" | tr -d ' ')"
figlet_output=$(figlet -w 500 -f slant "$app_name")
if [[ -n "$figlet_output" ]]; then
echo "$figlet_output" >"$output_file"
echo "Generated: $output_file"
else
echo "Figlet failed for $app_name in $script"
fi
else
echo "No APP name found in $script, skipping."
fi
done
}
# ct
generate_headers "./ct" "headers" "*"
# tools (addon, pve, ...)
generate_headers "./tools" "headers" "**"
# vm
generate_headers "./vm" "headers" "*"
echo "Completed processing all sections."
+161 -116
View File
@@ -110,9 +110,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
@@ -126,14 +123,7 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
<details> <details>
<summary><h4>October (3 entries)</h4></summary> <summary><h4>September (26 entries)</h4></summary>
[View October 2026 Changelog](.github/changelogs/2026/10.md)
</details>
<details>
<summary><h4>September (30 entries)</h4></summary>
[View September 2026 Changelog](.github/changelogs/2026/09.md) [View September 2026 Changelog](.github/changelogs/2026/09.md)
@@ -559,110 +549,6 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details> </details>
## 2026-10-05
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- wikijs: bump Node.js from 24 to 26 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#17689](https://github.com/community-scripts/ProxmoxVE/pull/17689))
- jotty: bump Node.js from 22 to 24 [@github-actions[bot]](https://github.com/github-actions[bot]) ([#17688](https://github.com/community-scripts/ProxmoxVE/pull/17688))
### 🧰 Tools
- #### 🐞 Bug Fixes
- monitor-all: read container IPs from the host side [@jasonobrien](https://github.com/jasonobrien) ([#17686](https://github.com/community-scripts/ProxmoxVE/pull/17686))
## 2026-10-04
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- immich: read the Intel runtime from the pinned release [@MickLesk](https://github.com/MickLesk) ([#17677](https://github.com/community-scripts/ProxmoxVE/pull/17677))
### 💾 Core
- better explain unsupported version & upgrade path for pve [@MickLesk](https://github.com/MickLesk) ([core#86](https://github.com/community-scripts/core/pull/86))
- Quote PostgreSQL identifiers and drop spaces from the creds file name [@MickLesk](https://github.com/MickLesk) ([core#89](https://github.com/community-scripts/core/pull/89))
- Find the default Rust toolchain in current rustup output [@MickLesk](https://github.com/MickLesk) ([core#88](https://github.com/community-scripts/core/pull/88))
## 2026-10-03
### 🆕 New Scripts
- Keeper.sh ([#17659](https://github.com/community-scripts/ProxmoxVE/pull/17659))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- hermesagent: download the installer before running it [@MickLesk](https://github.com/MickLesk) ([#17666](https://github.com/community-scripts/ProxmoxVE/pull/17666))
- frigate: raise the Node heap for the web build [@MickLesk](https://github.com/MickLesk) ([#17667](https://github.com/community-scripts/ProxmoxVE/pull/17667))
- Tracearr: workaround for failing map tiles download and data preservation [@durzo](https://github.com/durzo) ([#17661](https://github.com/community-scripts/ProxmoxVE/pull/17661))
- fix(nginxproxymanager): clean yarn cache after builds to prevent disk growth [@PsycoStea](https://github.com/PsycoStea) ([#17653](https://github.com/community-scripts/ProxmoxVE/pull/17653))
- #### 🔧 Refactor
- Several Scripts: refactor msg_ blocks, generate passwords with helper, add CLEAN_INSTALL_KEEP [@MickLesk](https://github.com/MickLesk) ([#17655](https://github.com/community-scripts/ProxmoxVE/pull/17655))
### 💾 Core
- detect_repo_source: read the license header and fall back to ProxmoxVE [@MickLesk](https://github.com/MickLesk) ([core#85](https://github.com/community-scripts/core/pull/85))
## 2026-10-02
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- zerobyte: upgrade Bun on update [@MickLesk](https://github.com/MickLesk) ([#17646](https://github.com/community-scripts/ProxmoxVE/pull/17646))
- sure: keep Active Storage uploads across updates [@MickLesk](https://github.com/MickLesk) ([#17648](https://github.com/community-scripts/ProxmoxVE/pull/17648))
- twenty: run upstreams upgrade command instead of the removed setup-db.ts [@MickLesk](https://github.com/MickLesk) ([#17647](https://github.com/community-scripts/ProxmoxVE/pull/17647))
- #### 🔧 Refactor
- NPM: Refactor / Fix npm openresty user and certbot version [@MickLesk](https://github.com/MickLesk) ([#17649](https://github.com/community-scripts/ProxmoxVE/pull/17649))
- several scripts: use the release helpers instead of hand-rolled version checks and downloads [@MickLesk](https://github.com/MickLesk) ([#17625](https://github.com/community-scripts/ProxmoxVE/pull/17625))
### 💾 Core
- QoL: message blocks, clean-install keep list, password helper, network limits [@MickLesk](https://github.com/MickLesk) ([core#61](https://github.com/community-scripts/core/pull/61))
## 2026-10-01
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- romm: keep the asset links in sync with ROMM_BASE_PATH [@MickLesk](https://github.com/MickLesk) ([#17610](https://github.com/community-scripts/ProxmoxVE/pull/17610))
- teslamate: build from the elixir directory since 4.3.0 [@MickLesk](https://github.com/MickLesk) ([#17612](https://github.com/community-scripts/ProxmoxVE/pull/17612))
- #### ✨ New Features
- feat(glance): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17605](https://github.com/community-scripts/ProxmoxVE/pull/17605))
- feat(blocky): add alpine os [@skilletfun](https://github.com/skilletfun) ([#17637](https://github.com/community-scripts/ProxmoxVE/pull/17637))
- #### 🔧 Refactor
- several scripts: apt instead of apt-get, cleanup_lxc, nginx_enable_site, drop needless daemon-reloads [@MickLesk](https://github.com/MickLesk) ([#17624](https://github.com/community-scripts/ProxmoxVE/pull/17624))
- several scripts: use setup_postgresql_db / setup_mariadb_db instead of hand-written SQL [@MickLesk](https://github.com/MickLesk) ([#17622](https://github.com/community-scripts/ProxmoxVE/pull/17622))
### 💾 Core
- Offer to raise the kernel key limits instead of only naming them [@MickLesk](https://github.com/MickLesk) ([core#81](https://github.com/community-scripts/core/pull/81))
### 🧰 Tools
- #### 🔧 Refactor
- tools, turnkey: load core instead of the legacy misc functions [@MickLesk](https://github.com/MickLesk) ([#17621](https://github.com/community-scripts/ProxmoxVE/pull/17621))
### 📚 Documentation
- chore: drop the local header generation; headers come from core [@MickLesk](https://github.com/MickLesk) ([#17623](https://github.com/community-scripts/ProxmoxVE/pull/17623))
## 2026-09-30 ## 2026-09-30
### 🆕 New Scripts ### 🆕 New Scripts
@@ -1253,4 +1139,163 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
### 💾 Core ### 💾 Core
- setup_go: resolve bare major.minor versions to the latest patch release [@MickLesk](https://github.com/MickLesk) ([core#24](https://github.com/community-scripts/core/pull/24)) - setup_go: resolve bare major.minor versions to the latest patch release [@MickLesk](https://github.com/MickLesk) ([core#24](https://github.com/community-scripts/core/pull/24))
## 2026-09-03
### 🚀 Updated Scripts
- Immich: bump libheif and libraw [@vhsdream](https://github.com/vhsdream) ([#16996](https://github.com/community-scripts/ProxmoxVE/pull/16996))
- #### 🐞 Bug Fixes
- romm: allow git-based npm dependency for rom-patcher under npm v12 [@MickLesk](https://github.com/MickLesk) ([#16990](https://github.com/community-scripts/ProxmoxVE/pull/16990))
- Pin Go to the version each project declares in go.mod [@MickLesk](https://github.com/MickLesk) ([#16976](https://github.com/community-scripts/ProxmoxVE/pull/16976))
- Authentik update 2026.8.1 [@thieneret](https://github.com/thieneret) ([#16980](https://github.com/community-scripts/ProxmoxVE/pull/16980))
## 2026-09-02
### 🆕 New Scripts
- OwnTracks-Recorder ([#16967](https://github.com/community-scripts/ProxmoxVE/pull/16967))
- PeerTube ([#16966](https://github.com/community-scripts/ProxmoxVE/pull/16966))
- Kaneo ([#16965](https://github.com/community-scripts/ProxmoxVE/pull/16965))
- JDownloader ([#16964](https://github.com/community-scripts/ProxmoxVE/pull/16964))
- ReadMeABook ([#16963](https://github.com/community-scripts/ProxmoxVE/pull/16963))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Enhance backup process in teddycloud.sh [@MickLesk](https://github.com/MickLesk) ([#16946](https://github.com/community-scripts/ProxmoxVE/pull/16946))
- mealie: copy Nuxt generate output and use pnpm when lockfile is present [@mjhuff](https://github.com/mjhuff) ([#16938](https://github.com/community-scripts/ProxmoxVE/pull/16938))
- OpenThread-BR: Clean build directory before update [@tomfrenzel](https://github.com/tomfrenzel) ([#16949](https://github.com/community-scripts/ProxmoxVE/pull/16949))
- #### 🔧 Refactor
- Scripts: use shared core bootstrap for final 114 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16953](https://github.com/community-scripts/ProxmoxVE/pull/16953))
- Scripts: use shared core bootstrap for next 115 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16952](https://github.com/community-scripts/ProxmoxVE/pull/16952))
- Scripts: use shared core bootstrap for next 115 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16951](https://github.com/community-scripts/ProxmoxVE/pull/16951))
- Scripts: use shared core bootstrap for next 100 Script Batch [@MickLesk](https://github.com/MickLesk) ([#16950](https://github.com/community-scripts/ProxmoxVE/pull/16950))
### 💾 Core
- setup_meilisearch: generate a 32-byte master key [@MickLesk](https://github.com/MickLesk) ([core#20](https://github.com/community-scripts/core/pull/20))
- setup_meilisearch: generate a 32-byte master key [@MickLesk](https://github.com/MickLesk) ([core#19](https://github.com/community-scripts/core/pull/19))
- setup_nodejs: restore the npm allowScripts bypass lost in the migration [@MickLesk](https://github.com/MickLesk) ([core#18](https://github.com/community-scripts/core/pull/18))
## 2026-09-01
### 🆕 New Scripts
- Mailpit ([#16942](https://github.com/community-scripts/ProxmoxVE/pull/16942))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Revert Aurral to Node22 [@Copilot](https://github.com/Copilot) ([#16930](https://github.com/community-scripts/ProxmoxVE/pull/16930))
- jellyfin: verify repo suite via fallback chain and use ensure_dependencies for clearer apt failures [@MickLesk](https://github.com/MickLesk) ([#16916](https://github.com/community-scripts/ProxmoxVE/pull/16916))
- #### 🔧 Refactor
- Move the next 25 scripts onto the core engine [@MickLesk](https://github.com/MickLesk) ([#16934](https://github.com/community-scripts/ProxmoxVE/pull/16934))
### 💾 Core
- Generate app headers [@github-actions[bot]](https://github.com/github-actions[bot]) ([core#15](https://github.com/community-scripts/core/pull/15))
- Report the exit code the engine actually saw [@MickLesk](https://github.com/MickLesk) ([core#17](https://github.com/community-scripts/core/pull/17))
- Silence npm's update notice so the real error stays visible [@MickLesk](https://github.com/MickLesk) ([core#16](https://github.com/community-scripts/core/pull/16))
### 🧰 Tools
- #### 🐞 Bug Fixes
- fix(add-iptag): merge live IPv4 addresses for running LXCs [@phillf](https://github.com/phillf) ([#16691](https://github.com/community-scripts/ProxmoxVE/pull/16691))
## 2026-08-31
### 🆕 New Scripts
- Aurral ([#16908](https://github.com/community-scripts/ProxmoxVE/pull/16908))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- openwebui: add UV_HTTP_TIMEOUT and retry loop to prevent uv install hangs [@MickLesk](https://github.com/MickLesk) ([#16917](https://github.com/community-scripts/ProxmoxVE/pull/16917))
- bambuddy: force asyncio loop, uvloop breaks camera proxy handlers [@MickLesk](https://github.com/MickLesk) ([#16904](https://github.com/community-scripts/ProxmoxVE/pull/16904))
- bookorbit: raise service start timeout, migration can exceed systemd default [@MickLesk](https://github.com/MickLesk) ([#16860](https://github.com/community-scripts/ProxmoxVE/pull/16860))
- node-red: remove --unsafe-perm flag [@MickLesk](https://github.com/MickLesk) ([#16859](https://github.com/community-scripts/ProxmoxVE/pull/16859))
- directus: add build-essential dependency [@MickLesk](https://github.com/MickLesk) ([#16858](https://github.com/community-scripts/ProxmoxVE/pull/16858))
- #### ✨ New Features
- haos-vm: add optional x86-64-v2-AES CPU option, future HA numpy builds need it [@MickLesk](https://github.com/MickLesk) ([#16868](https://github.com/community-scripts/ProxmoxVE/pull/16868))
- #### 🔧 Refactor
- omv: migrate to new package repo host (packages.openmediavault.org) is dead [@MickLesk](https://github.com/MickLesk) ([#16918](https://github.com/community-scripts/ProxmoxVE/pull/16918))
- yuvomi/aurral: bump NODE_VERSION [@MickLesk](https://github.com/MickLesk) ([#16914](https://github.com/community-scripts/ProxmoxVE/pull/16914))
- vaultwarden: relax cargo release profile via env vars to avoid build OOM [@MickLesk](https://github.com/MickLesk) ([#16915](https://github.com/community-scripts/ProxmoxVE/pull/16915))
- kima-hub/maintainerr/planka/spliit: bump NODE_VERSION [@MickLesk](https://github.com/MickLesk) ([#16905](https://github.com/community-scripts/ProxmoxVE/pull/16905))
- gatus: pin Go toolchain to gatus's own go.mod version [@MickLesk](https://github.com/MickLesk) ([#16893](https://github.com/community-scripts/ProxmoxVE/pull/16893))
- immich: tolerate enable-maintenance-mode crash, same as disable-maintenance-mode [@MickLesk](https://github.com/MickLesk) ([#16866](https://github.com/community-scripts/ProxmoxVE/pull/16866))
- move the hardware-accelerated scripts onto new core [@MickLesk](https://github.com/MickLesk) ([#16864](https://github.com/community-scripts/ProxmoxVE/pull/16864))
- ntopng: use ntop.org's documented apt repo per Debian codename, not always apt-stable [@MickLesk](https://github.com/MickLesk) ([#16862](https://github.com/community-scripts/ProxmoxVE/pull/16862))
- Refactor: OpenGist [@MickLesk](https://github.com/MickLesk) ([#16861](https://github.com/community-scripts/ProxmoxVE/pull/16861))
### 💾 Core
- Refactor VM script settings and fix load_functions errors [@MickLesk](https://github.com/MickLesk) ([core#13](https://github.com/community-scripts/core/pull/13))
- Ask ProxmoxVE to refresh its changelog on merge [@MickLesk](https://github.com/MickLesk) ([core#11](https://github.com/community-scripts/core/pull/11))
- Lift the settings summary and the mode fork into vm-core [@MickLesk](https://github.com/MickLesk) ([core#12](https://github.com/community-scripts/core/pull/12))
### 🧰 Tools
- #### 🐞 Bug Fixes
- filebrowser-quantum: strip removed disableIndexing key on update, restart service [@MickLesk](https://github.com/MickLesk) ([#16892](https://github.com/community-scripts/ProxmoxVE/pull/16892))
### 📚 Documentation
- Include engine pull requests in the changelog [@MickLesk](https://github.com/MickLesk) ([#16867](https://github.com/community-scripts/ProxmoxVE/pull/16867))
## 2026-08-30
### 🆕 New Scripts
- SolidInvoice ([#16869](https://github.com/community-scripts/ProxmoxVE/pull/16869))
- Super-Productivity ([#16870](https://github.com/community-scripts/ProxmoxVE/pull/16870))
- Defguard ([#16871](https://github.com/community-scripts/ProxmoxVE/pull/16871))
- OpenBao ([#16872](https://github.com/community-scripts/ProxmoxVE/pull/16872))
### 🚀 Updated Scripts
- #### 🔧 Refactor
- general: remove gitea links overall [@MickLesk](https://github.com/MickLesk) ([#16863](https://github.com/community-scripts/ProxmoxVE/pull/16863))
## 2026-08-29
### 📚 Documentation
- github action: post the command that tests a ct/ or install/ change [@MickLesk](https://github.com/MickLesk) ([#16833](https://github.com/community-scripts/ProxmoxVE/pull/16833))
## 2026-08-28
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- homepage: set CI=true so pnpm can self-heal node_modules without a TTY [@MickLesk](https://github.com/MickLesk) ([#16841](https://github.com/community-scripts/ProxmoxVE/pull/16841))
- droppedneedle: launch via automatic_upgrade orchestrator [@MickLesk](https://github.com/MickLesk) ([#16834](https://github.com/community-scripts/ProxmoxVE/pull/16834))
- calibre-web: point cps at explicit db path, src-layout package has no default anymore [@MickLesk](https://github.com/MickLesk) ([#16832](https://github.com/community-scripts/ProxmoxVE/pull/16832))
- podman: pull portainer images before systemd unit start to avoid start timeout [@MickLesk](https://github.com/MickLesk) ([#16831](https://github.com/community-scripts/ProxmoxVE/pull/16831))
- gitea: make gitea own its home dir instead of toggling group perms [@MickLesk](https://github.com/MickLesk) ([#16830](https://github.com/community-scripts/ProxmoxVE/pull/16830))
- pve-ups: fix: add pip binary [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16820](https://github.com/community-scripts/ProxmoxVE/pull/16820))
- #### 🔧 Refactor
- Refactor: Calibre-Web database creation [@MickLesk](https://github.com/MickLesk) ([#16842](https://github.com/community-scripts/ProxmoxVE/pull/16842))
- mastodon: read .ruby-version dynamically instead of hardcoding 4.0.5 [@MickLesk](https://github.com/MickLesk) ([#16829](https://github.com/community-scripts/ProxmoxVE/pull/16829))
+6 -6
View File
@@ -9,13 +9,13 @@ For detailed coding standards and full documentation, visit **[community-scripts
## How Can I Help? ## How Can I Help?
> [!IMPORTANT] > [!IMPORTANT]
> **New scripts** must always be submitted to [DevScripts](https://github.com/community-scripts/DevScripts) first — not to this repository. > **New scripts** must always be submitted to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) first — not to this repository.
> PRs with new scripts opened directly against ProxmoxVE **will be closed without review**. > PRs with new scripts opened directly against ProxmoxVE **will be closed without review**.
> **Bug fixes, improvements, and features for existing scripts** go here (ProxmoxVE). > **Bug fixes, improvements, and features for existing scripts** go here (ProxmoxVE).
| I want to… | Where to go | | I want to… | Where to go |
| :------------------------------------------ | :------------------------------------------------------------------------------------------- | | :------------------------------------------ | :------------------------------------------------------------------------------------------- |
| **Add a brand-new script** | [DevScripts](https://github.com/community-scripts/DevScripts) — testing repo for new scripts | | **Add a brand-new script** | [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) — testing repo for new scripts |
| **Fix a bug or improve an existing script** | This repo (ProxmoxVE) — open a PR here | | **Fix a bug or improve an existing script** | This repo (ProxmoxVE) — open a PR here |
| **Add a feature to an existing script** | This repo (ProxmoxVE) — open a PR here | | **Add a feature to an existing script** | This repo (ProxmoxVE) — open a PR here |
| Report a bug or broken script | [Open an Issue](https://github.com/community-scripts/ProxmoxVE/issues) | | Report a bug or broken script | [Open an Issue](https://github.com/community-scripts/ProxmoxVE/issues) |
@@ -55,13 +55,13 @@ Use existing scripts in [`ct/`](ct/) and [`install/`](install/) as reference. Fu
New scripts are **not accepted directly in this repository**. The workflow is: New scripts are **not accepted directly in this repository**. The workflow is:
1. Fork [DevScripts](https://github.com/community-scripts/DevScripts) and clone it 1. Fork [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) and clone it
2. Create a branch: `git switch -c feat/myapp` 2. Create a branch: `git switch -c feat/myapp`
3. Write your two script files: 3. Write your two script files:
- `ct/myapp.sh` - `ct/myapp.sh`
- `install/myapp-install.sh` - `install/myapp-install.sh`
4. Test thoroughly in DevScripts — run the script against a real Proxmox instance 4. Test thoroughly in ProxmoxVED — run the script against a real Proxmox instance
5. Open a PR in **DevScripts** for review and testing 5. Open a PR in **ProxmoxVED** for review and testing
6. Once accepted and verified there, the script will be promoted to ProxmoxVE by maintainers 6. Once accepted and verified there, the script will be promoted to ProxmoxVE by maintainers
Follow the coding standards at [community-scripts.org/docs/contribution](https://community-scripts.org/docs/contribution). Follow the coding standards at [community-scripts.org/docs/contribution](https://community-scripts.org/docs/contribution).
@@ -193,5 +193,5 @@ create` still ran and the container was still built.
- **Website metadata** (name, description, logo, tags) is managed via the website — use the "Report Issue" link on any script page to request changes. Do not submit metadata changes via repo files. - **Website metadata** (name, description, logo, tags) is managed via the website — use the "Report Issue" link on any script page to request changes. Do not submit metadata changes via repo files.
- **JSON files** in `json/` define script properties used by the website. See existing files for structure reference. - **JSON files** in `json/` define script properties used by the website. See existing files for structure reference.
- Keep PRs small and focused. One fix or feature per PR is ideal. - Keep PRs small and focused. One fix or feature per PR is ideal.
- PRs with **new scripts** opened against ProxmoxVE will be closed — submit them to [DevScripts](https://github.com/community-scripts/DevScripts) instead. - PRs with **new scripts** opened against ProxmoxVE will be closed — submit them to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) instead.
- PRs that fail CI checks will not be merged. - PRs that fail CI checks will not be merged.
+2 -2
View File
@@ -93,7 +93,7 @@ This project runs on community contributions. Whether you want to write new scri
| I want to… | Go here | | I want to… | Go here |
| ------------------------------------- | ------------------------------------------------------------------------------------------------- | | ------------------------------------- | ------------------------------------------------------------------------------------------------- |
| Add a **new** script | [DevScripts](https://github.com/community-scripts/DevScripts) — new scripts are tested here first | | Add a **new** script | [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED) — new scripts are tested here first |
| Fix or improve an **existing** script | [Contributing Guidelines](CONTRIBUTING.md) — open a PR in this repo | | Fix or improve an **existing** script | [Contributing Guidelines](CONTRIBUTING.md) — open a PR in this repo |
| Report a bug or broken script | [Issues](https://github.com/community-scripts/ProxmoxVE/issues) | | Report a bug or broken script | [Issues](https://github.com/community-scripts/ProxmoxVE/issues) |
| Request a new script or feature | [Discussions](https://github.com/community-scripts/ProxmoxVE/discussions) | | Request a new script or feature | [Discussions](https://github.com/community-scripts/ProxmoxVE/discussions) |
@@ -102,7 +102,7 @@ This project runs on community contributions. Whether you want to write new scri
### Before you open a PR ### Before you open a PR
- **New scripts go to [DevScripts](https://github.com/community-scripts/DevScripts), not here.** PRs with new scripts opened directly against this repo will be closed. - **New scripts go to [ProxmoxVED](https://github.com/community-scripts/ProxmoxVED), not here.** PRs with new scripts opened directly against this repo will be closed.
- Bug fixes and improvements to existing scripts belong in this repo — read the [Contributing Guidelines](CONTRIBUTING.md) first. - Bug fixes and improvements to existing scripts belong in this repo — read the [Contributing Guidelines](CONTRIBUTING.md) first.
- Keep PRs focused. One fix or feature per PR. - Keep PRs focused. One fix or feature per PR.
- Document what your script installs and any non-obvious decisions in the corresponding JSON metadata file. - Document what your script installs and any non-obvious decisions in the corresponding JSON metadata file.
+2 -3
View File
@@ -54,9 +54,8 @@ function update_script() {
$STD uv venv --clear .venv $STD uv venv --clear .venv
$STD .venv/bin/python -m ensurepip --upgrade $STD .venv/bin/python -m ensurepip --upgrade
fi fi
$STD .venv/bin/python -m pip install --upgrade pip $STD uv pip install --python .venv/bin/python -r requirements.txt
$STD .venv/bin/python -m pip install -r requirements.txt $STD uv pip install --python .venv/bin/python 'djangorestframework<3.15'
$STD .venv/bin/python -m pip install 'djangorestframework<3.15'
$STD .venv/bin/python -m manage collectstatic --noinput $STD .venv/bin/python -m manage collectstatic --noinput
$STD .venv/bin/python -m manage migrate $STD .venv/bin/python -m manage migrate
+2 -2
View File
@@ -36,9 +36,9 @@ function update_script() {
systemctl stop airtrail systemctl stop airtrail
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/airtrail/.env create_backup /opt/airtrail/.env /opt/airtrail/uploads
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="uploads" fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "airtrail" "johanohly/AirTrail" "tarball" "latest" "/opt/airtrail"
restore_backup restore_backup
+3 -1
View File
@@ -48,7 +48,9 @@ function update_script() {
exit exit
fi fi
echo -e "${INFO}${YW}Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host):${CL}" msg_info "Setting up SSH Public Key for backup user"
msg_info "Please paste your SSH public key (e.g., ssh-rsa AAAAB3... user@host): \n"
read -p "Key: " SSH_PUBLIC_KEY read -p "Key: " SSH_PUBLIC_KEY
echo echo
+13 -6
View File
@@ -29,13 +29,20 @@ function update_script() {
exit exit
fi fi
if [[ -f /opt/${APP}_version.txt ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/sharevb/it-tools/releases/latest | grep '"tag_name":' | cut -d '"' -f4)
mv /opt/"${APP}_version.txt" ~/.it-tools if [ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ] || [ ! -f /opt/${APP}_version.txt ]; then
fi msg_info "Updating ${APP} LXC"
curl -fsSL "https://github.com/sharevb/it-tools/releases/download/${RELEASE}/it-tools-${RELEASE#v}.zip" -o it-tools.zip
if check_for_gh_release "it-tools" "sharevb/it-tools"; then mkdir -p /usr/share/nginx/html
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "it-tools" "sharevb/it-tools" "prebuild" "latest" "/usr/share/nginx/html" "it-tools-*.zip" rm -rf /usr/share/nginx/html/*
$STD unzip it-tools.zip -d /tmp
cp -r /tmp/dist/* /usr/share/nginx/html
rm -rf /tmp/dist
rm -f it-tools.zip
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit 0 exit 0
} }
+2 -2
View File
@@ -31,7 +31,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script." msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo "" echo ""
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}" msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}" echo -e "${TAB}${TAB}${GN}update_komodo${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo "" echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -62,7 +62,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true ln -sf /usr/bin/update /usr/bin/update_komodo 2>/dev/null || true
msg_ok "Migration complete" msg_ok "Migration complete"
echo -e "${INFO}${YW}Running addon update${CL}" msg_info "Running addon update"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}") type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit exit
} }
+16 -3
View File
@@ -29,7 +29,8 @@ function update_script() {
exit exit
fi fi
if check_for_gh_release "wakapi" "muety/wakapi"; then RELEASE=$(curl -s https://api.github.com/repos/muety/wakapi/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
if [ "${RELEASE}" != "$(cat ~/.wakapi 2>/dev/null)" ] || [ ! -f ~/.wakapi ]; then
msg_info "Stopping Wakapi Service" msg_info "Stopping Wakapi Service"
$STD rc-service wakapi stop $STD rc-service wakapi stop
msg_ok "Stopped Wakapi Service" msg_ok "Stopped Wakapi Service"
@@ -38,14 +39,26 @@ function update_script() {
$STD apk -U upgrade $STD apk -U upgrade
msg_ok "Updated Wakapi LXC" msg_ok "Updated Wakapi LXC"
create_backup /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db msg_info "Creating backup"
mkdir -p /opt/wakapi-backup
cp /opt/wakapi/config.yml /opt/wakapi/wakapi_db.db /opt/wakapi-backup/
msg_ok "Created backup"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "wakapi" "muety/wakapi" "prebuild" "latest" "/opt/wakapi" "wakapi_linux_$(arch_resolve).zip"
restore_backup
msg_info "Configuring Wakapi"
cd /opt/wakapi
cp /opt/wakapi-backup/config.yml /opt/wakapi/
cp /opt/wakapi-backup/wakapi_db.db /opt/wakapi/
rm -rf /opt/wakapi-backup
msg_ok "Configured Wakapi"
msg_info "Starting Service" msg_info "Starting Service"
$STD rc-service wakapi start $STD rc-service wakapi start
msg_ok "Started Service" msg_ok "Started Service"
msg_ok "Updated successfully" msg_ok "Updated successfully"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit 0 exit 0
} }
+1 -1
View File
@@ -31,7 +31,7 @@ function update_script() {
fi fi
msg_info "Updating Apache CouchDB" msg_info "Updating Apache CouchDB"
apt_update_safe apt_update_safe
$STD apt install -y --only-upgrade couchdb $STD apt-get install -y --only-upgrade couchdb
msg_ok "Updated Apache CouchDB" msg_ok "Updated Apache CouchDB"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
+1
View File
@@ -136,6 +136,7 @@ function update_script() {
export UV_COMPILE_BYTECODE="1" export UV_COMPILE_BYTECODE="1"
export UV_LINK_MODE="copy" export UV_LINK_MODE="copy"
export UV_NATIVE_TLS="1" export UV_NATIVE_TLS="1"
export UV_HTTP_TIMEOUT="300"
export RUSTUP_PERMIT_COPY_RENAME="true" export RUSTUP_PERMIT_COPY_RENAME="true"
export UV_PYTHON_INSTALL_DIR="/usr/local/bin" export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
cd /opt/authentik cd /opt/authentik
+1 -1
View File
@@ -58,7 +58,7 @@ function update_script() {
mkdir -p "$INSTALL_DIR"/metadata_temp mkdir -p "$INSTALL_DIR"/metadata_temp
$STD tar -xf ~/autocaliweb_bkp.tar --directory / $STD tar -xf ~/autocaliweb_bkp.tar --directory /
KEPUB_VERSION="$(/usr/bin/kepubify --version)" KEPUB_VERSION="$(/usr/bin/kepubify --version)"
CALIBRE_RELEASE="$(get_latest_github_release "kovidgoyal/calibre")" CALIBRE_RELEASE="$(curl -s https://api.github.com/repos/kovidgoyal/calibre/releases/latest | grep -o '"tag_name": "[^"]*' | cut -d'"' -f4)"
echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE echo "${KEPUB_VERSION#v}" >"$INSTALL_DIR"/KEPUBIFY_RELEASE
echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE echo "${CALIBRE_RELEASE#v}" >/"$INSTALL_DIR"/CALIBRE_RELEASE
sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE sed 's/^/v/' ~/.autocaliweb >"$INSTALL_DIR"/ACW_RELEASE
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "beszel" "henrygd/beszel"; then if check_for_gh_release "beszel" "henrygd/beszel"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop beszel-hub systemctl stop beszel-hub
msg_ok "Stopped Service" msg_info "Stopped Service"
msg_info "Updating Beszel" msg_info "Updating Beszel"
$STD /opt/beszel/beszel update $STD /opt/beszel/beszel update
+19 -18
View File
@@ -75,7 +75,8 @@ update_deb_based() {
msg_info "Configuring Bitmagnet" msg_info "Configuring Bitmagnet"
cd /opt/bitmagnet cd /opt/bitmagnet
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=v$(cat ~/.bitmagnet)" VREL=v$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
chmod +x bitmagnet chmod +x bitmagnet
msg_ok "Configured Bitmagnet" msg_ok "Configured Bitmagnet"
@@ -91,10 +92,8 @@ update_alpine() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ -f /opt/bitmagnet_version.txt ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/bitmagnet-io/bitmagnet/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
mv /opt/bitmagnet_version.txt ~/.bitmagnet if [ "${RELEASE}" != "$(cat /opt/bitmagnet_version.txt)" ] || [ ! -f /opt/bitmagnet_version.txt ]; then
fi
if check_for_gh_release "bitmagnet" "bitmagnet-io/bitmagnet"; then
msg_info "Backing up database" msg_info "Backing up database"
rm -f /tmp/backup.sql rm -f /tmp/backup.sql
$STD sudo -u postgres pg_dump \ $STD sudo -u postgres pg_dump \
@@ -120,25 +119,27 @@ update_alpine() {
mv /tmp/backup.sql /opt/ mv /tmp/backup.sql /opt/
msg_ok "Database backed up" msg_ok "Database backed up"
msg_info "Stopping Service" msg_info "Updating ${APP} from $(cat /opt/bitmagnet_version.txt) to ${RELEASE}"
$STD apk -U upgrade $STD apk -U upgrade
$STD service bitmagnet stop $STD service bitmagnet stop
msg_ok "Stopped Service" [ -f /opt/bitmagnet/.env ] && cp /opt/bitmagnet/.env /opt/
[ -f /opt/bitmagnet/config.yml ] && cp /opt/bitmagnet/config.yml /opt/
create_backup /opt/bitmagnet/.env /opt/bitmagnet/config.yml rm -rf /opt/bitmagnet/*
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bitmagnet" "bitmagnet-io/bitmagnet" "tarball" temp_file=$(mktemp)
restore_backup curl -fsSL "https://github.com/bitmagnet-io/bitmagnet/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
tar zxf "$temp_file" --strip-components=1 -C /opt/bitmagnet
msg_info "Building ${APP}"
cd /opt/bitmagnet cd /opt/bitmagnet
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=v$(cat ~/.bitmagnet)" VREL=v$RELEASE
$STD go build -ldflags "-s -w -X github.com/bitmagnet-io/bitmagnet/internal/version.GitTag=$VREL"
chmod +x bitmagnet chmod +x bitmagnet
msg_ok "Built ${APP}" [ -f "/opt/.env" ] && cp "/opt/.env" /opt/bitmagnet/
[ -f "/opt/config.yml" ] && cp "/opt/config.yml" /opt/bitmagnet/
msg_info "Starting Service" rm -f "$temp_file"
echo "${RELEASE}" >/opt/bitmagnet_version.txt
$STD service bitmagnet start $STD service bitmagnet start
msg_ok "Started Service"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
} }
+8 -45
View File
@@ -9,30 +9,22 @@ source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_
APP="Blocky" APP="Blocky"
var_tags="${var_tags:-adblock}" var_tags="${var_tags:-adblock}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}" var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
if [[ -z "${var_os:-}" ]] && command -v pveversion >/dev/null 2>&1; then
var_os=$(msg_menu "Choose the container OS" \
"debian" "Debian 13" \
"alpine" "Alpine 3.24 (smaller footprint)")
fi
if [[ "${var_os:-}" == "alpine" ]]; then
var_ram="${var_ram:-256}"
var_disk="${var_disk:-2}"
var_version="${var_version:-3.24}"
else
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_version="${var_version:-13}"
fi
header_info "$APP" header_info "$APP"
variables variables
color color
catch_errors catch_errors
update_deb_based() { function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -d /opt/blocky ]]; then if [[ ! -d /opt/blocky ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
@@ -54,35 +46,6 @@ update_deb_based() {
exit exit
} }
update_alpine() {
if [[ ! -d /opt/blocky ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "blocky" "0xERR0R/blocky"; then
msg_info "Stopping Service"
rc-service blocky stop
msg_ok "Stopped Service"
create_backup /opt/blocky/config.yml
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_$(arch_resolve "x86_64" "arm64").tar.gz"
restore_backup
msg_info "Starting Service"
rc-service blocky start
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
function update_script() {
header_info
check_container_storage
check_container_resources
run_os_update
}
start start
build_container build_container
description description
+1 -1
View File
@@ -31,7 +31,7 @@ function update_script() {
fi fi
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
apt_update_safe apt_update_safe
$STD apt -y upgrade $STD apt-get -y upgrade
msg_ok "Updated ${APP} LXC" msg_ok "Updated ${APP} LXC"
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
+2 -3
View File
@@ -56,12 +56,11 @@ function update_script() {
rm -rf "$VENV_PATH" rm -rf "$VENV_PATH"
$STD uv venv --clear "$VENV_PATH" $STD uv venv --clear "$VENV_PATH"
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade $STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip $STD uv pip install --python "$VENV_PATH/bin/python" changedetection.io playwright
$STD "$VENV_PATH/bin/python" -m pip install changedetection.io playwright
msg_ok "Migrated to uv/venv" msg_ok "Migrated to uv/venv"
else else
msg_info "Updating ${APP}" msg_info "Updating ${APP}"
$STD "$VENV_PATH/bin/python" -m pip install --upgrade changedetection.io playwright $STD uv pip install --python "$VENV_PATH/bin/python" --upgrade changedetection.io playwright
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
fi fi
+4 -2
View File
@@ -38,9 +38,11 @@ function update_script() {
systemctl stop nginx "$PHP_FPM_SERVICE" systemctl stop nginx "$PHP_FPM_SERVICE"
msg_ok "Stopped Services" msg_ok "Stopped Services"
create_backup /opt/chevereto/app/env.php /opt/chevereto/content create_backup /opt/chevereto/app/env.php \
/opt/chevereto/images \
/opt/chevereto/content
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="images" fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "chevereto" "chevereto/chevereto" "tarball"
restore_backup restore_backup
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then if check_for_gh_release "cloudreve" "cloudreve/cloudreve"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop cloudreve systemctl stop cloudreve
msg_ok "Stopped Service" msg_info "Stopped Service"
fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz" fetch_and_deploy_gh_release "cloudreve" "cloudreve/cloudreve" "prebuild" "latest" "/opt/cloudreve" "*linux_$(arch_resolve).tar.gz"
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then if check_for_gh_release "ConvertX" "C4illin/ConvertX"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop convertx systemctl stop convertx
msg_ok "Stopped Service" msg_info "Stopped Service"
ensure_dependencies libreoffice-writer dasel graphicsmagick libemail-outlook-message-perl libheif-examples libjxl-tools resvg ensure_dependencies libreoffice-writer dasel graphicsmagick libemail-outlook-message-perl libheif-examples libjxl-tools resvg
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script." msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo "" echo ""
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}" msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${TAB}${TAB}${GN}update_coolify${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}" echo -e "${TAB}${TAB}${GN}update_coolify${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo "" echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -58,7 +58,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_coolify 2>/dev/null || true ln -sf /usr/bin/update /usr/bin/update_coolify 2>/dev/null || true
msg_ok "Migration complete" msg_ok "Migration complete"
echo -e "${INFO}${YW}Running addon update${CL}" msg_info "Running addon update"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}") type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit exit
} }
+10 -3
View File
@@ -33,11 +33,18 @@ function update_script() {
if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then if check_for_gh_release "cryptpad" "cryptpad/cryptpad"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop cryptpad systemctl stop cryptpad
msg_ok "Stopped Service" msg_info "Stopped Service"
create_backup /opt/cryptpad/config/config.js /opt/cryptpad/www/common/onlyoffice/dist create_backup /opt/cryptpad/config/config.js \
/opt/cryptpad/blob \
/opt/cryptpad/block \
/opt/cryptpad/customize \
/opt/cryptpad/data \
/opt/cryptpad/datastore \
/opt/cryptpad/www/common/onlyoffice/dist \
/opt/cryptpad/onlyoffice-conf
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="blob block customize data datastore onlyoffice-conf" fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cryptpad" "cryptpad/cryptpad" "tarball"
restore_backup restore_backup
+2 -1
View File
@@ -137,6 +137,7 @@ EOF
set +o allexport set +o allexport
if [[ -n "$POSTGRES_DB" ]] && [[ -n "$POSTGRES_USER" ]] && [[ -n "$POSTGRES_PASSWORD" ]]; then if [[ -n "$POSTGRES_DB" ]] && [[ -n "$POSTGRES_USER" ]] && [[ -n "$POSTGRES_PASSWORD" ]]; then
PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U "$POSTGRES_USER" -h "${POSTGRES_HOST:-localhost}" -p "${POSTGRES_PORT:-5432}" "$POSTGRES_DB" >/tmp/dispatcharr_db_$(date +%F).sql PGPASSWORD=$POSTGRES_PASSWORD pg_dump -U "$POSTGRES_USER" -h "${POSTGRES_HOST:-localhost}" -p "${POSTGRES_PORT:-5432}" "$POSTGRES_DB" >/tmp/dispatcharr_db_$(date +%F).sql
msg_info "Database backup created"
fi fi
fi fi
$STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql $STD tar -czf "$BACKUP_FILE" -C /opt dispatcharr /tmp/dispatcharr_db_*.sql
@@ -149,7 +150,7 @@ EOF
msg_info "Updating Dispatcharr Backend" msg_info "Updating Dispatcharr Backend"
if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then if ! grep -q "DJANGO_SECRET_KEY" /opt/dispatcharr/.env; then
DJANGO_SECRET=$(random_password 50) DJANGO_SECRET=$(openssl rand -base64 48 | tr -dc 'a-zA-Z0-9' | cut -c1-50)
echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env echo "DJANGO_SECRET_KEY=$DJANGO_SECRET" >>/opt/dispatcharr/.env
fi fi
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script." msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo "" echo ""
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}" msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${TAB}${TAB}${GN}update_dockge${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}" echo -e "${TAB}${TAB}${GN}update_dockge${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo "" echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -60,7 +60,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_dockge 2>/dev/null || true ln -sf /usr/bin/update /usr/bin/update_dockge 2>/dev/null || true
msg_ok "Migration complete" msg_ok "Migration complete"
echo -e "${INFO}${YW}Running addon update${CL}" msg_info "Running addon update"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}") type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit exit
} }
+2 -2
View File
@@ -38,9 +38,9 @@ function update_script() {
systemctl stop docmost systemctl stop docmost
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/docmost/.env create_backup /opt/docmost/.env /opt/docmost/data
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
restore_backup restore_backup
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
msg_warn "⚠️ ${APP} has been migrated to an addon script." msg_warn "⚠️ ${APP} has been migrated to an addon script."
echo "" echo ""
echo -e "${INFO}${YW}This is a one-time migration. After this, you can update ${APP} anytime with:${CL}" msg_info "This is a one-time migration. After this, you can update ${APP} anytime with:"
echo -e "${TAB}${TAB}${GN}update_dokploy${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}" echo -e "${TAB}${TAB}${GN}update_dokploy${CL} or ${GN}bash <(curl -fsSL ${ADDON_SCRIPT})${CL}"
echo "" echo ""
read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM read -r -p "${TAB}Migrate update function now? [y/N]: " CONFIRM
@@ -58,7 +58,7 @@ MIGRATION_EOF
ln -sf /usr/bin/update /usr/bin/update_dokploy 2>/dev/null || true ln -sf /usr/bin/update /usr/bin/update_dokploy 2>/dev/null || true
msg_ok "Migration complete" msg_ok "Migration complete"
echo -e "${INFO}${YW}Running addon update${CL}" msg_info "Running addon update"
type=update bash <(curl -fsSL "${ADDON_SCRIPT}") type=update bash <(curl -fsSL "${ADDON_SCRIPT}")
exit exit
} }
+2 -2
View File
@@ -35,7 +35,7 @@ function update_script() {
if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then if check_for_gh_release "domain-locker" "Lissy93/domain-locker"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop domain-locker systemctl stop domain-locker
msg_ok "Stopped Service" msg_info "Service stopped"
PG_VERSION="17" setup_postgresql PG_VERSION="17" setup_postgresql
NODE_VERSION="22" setup_nodejs NODE_VERSION="22" setup_nodejs
@@ -51,7 +51,7 @@ function update_script() {
source /opt/domain-locker.env source /opt/domain-locker.env
set +a set +a
$STD npm run build $STD npm run build
msg_ok "Built Domain-Locker" msg_info "Built Domain-Locker"
msg_info "Restarting Services" msg_info "Restarting Services"
systemctl start domain-locker systemctl start domain-locker
+1 -1
View File
@@ -42,7 +42,7 @@ function update_script() {
if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then if check_for_gh_release "domain-monitor" "Hosteroid/domain-monitor"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop apache2 systemctl stop apache2
msg_ok "Stopped Service" msg_info "Service stopped"
create_backup /opt/domain-monitor/.env create_backup /opt/domain-monitor/.env
+1 -1
View File
@@ -31,7 +31,7 @@ function update_script() {
fi fi
msg_info "Updating ${APP} LXC" msg_info "Updating ${APP} LXC"
apt_update_safe apt_update_safe
$STD apt -y upgrade $STD apt-get -y upgrade
msg_ok "Updated successfully!" msg_ok "Updated successfully!"
exit exit
} }
+1 -1
View File
@@ -33,7 +33,7 @@ function update_script() {
if check_for_gh_release "duplicati" "duplicati/duplicati"; then if check_for_gh_release "duplicati" "duplicati/duplicati"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop duplicati systemctl stop duplicati
msg_ok "Stopped Service" msg_info "Stopped Service"
fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb" fetch_and_deploy_gh_release "duplicati" "duplicati/duplicati" "binary" "latest" "/opt/duplicati" "duplicati-*-linux-$(arch_resolve "x64" "arm64")-gui.deb"
+1 -1
View File
@@ -47,7 +47,7 @@ function update_script() {
msg_ok "Backup created" msg_ok "Backup created"
msg_info "Installing Dependencies" msg_info "Installing Dependencies"
$STD apt install -y pkg-config $STD apt-get install -y pkg-config
$STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && uv python install 3.14' $STD sudo -u frappe bash -c 'export PATH="$HOME/.local/bin:/usr/local/bin:$PATH"; cd /opt/frappe-bench && uv python install 3.14'
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
+2 -3
View File
@@ -48,13 +48,12 @@ function update_script() {
cd /opt/esphome cd /opt/esphome
$STD uv venv --clear "$VENV_PATH" $STD uv venv --clear "$VENV_PATH"
$STD "$VENV_PATH/bin/python" -m ensurepip --upgrade $STD "$VENV_PATH/bin/python" -m ensurepip --upgrade
$STD "$VENV_PATH/bin/python" -m pip install --upgrade pip $STD uv pip install --python "$VENV_PATH/bin/python" esphome esphome-device-builder esptool
$STD "$VENV_PATH/bin/python" -m pip install esphome esphome-device-builder esptool
msg_ok "Migrated to uv/venv" msg_ok "Migrated to uv/venv"
else else
msg_info "Updating ESPHome Device Builder" msg_info "Updating ESPHome Device Builder"
PYTHON_VERSION="3.12" setup_uv PYTHON_VERSION="3.12" setup_uv
$STD "$VENV_PATH/bin/python" -m pip install --upgrade esphome esphome-device-builder esptool $STD uv pip install --python "$VENV_PATH/bin/python" --upgrade esphome esphome-device-builder esptool
msg_ok "Updated ESPHome Device Builder" msg_ok "Updated ESPHome Device Builder"
fi fi
+1 -1
View File
@@ -36,7 +36,7 @@ function update_script() {
if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then if check_for_gh_release "excalidraw" "excalidraw/excalidraw"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop excalidraw systemctl stop excalidraw
msg_ok "Stopped Service" msg_info "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw" "tarball"
+1 -2
View File
@@ -56,8 +56,7 @@ function update_script() {
cd /opt/fireshare cd /opt/fireshare
$STD uv venv --clear $STD uv venv --clear
$STD .venv/bin/python -m ensurepip --upgrade $STD .venv/bin/python -m ensurepip --upgrade
$STD .venv/bin/python -m pip install --upgrade --break-system-packages pip $STD uv pip install --python .venv/bin/python --no-cache --reinstall app/server
$STD .venv/bin/python -m pip install --no-cache-dir --break-system-packages --ignore-installed app/server
cp .venv/bin/fireshare /usr/local/bin/fireshare cp .venv/bin/fireshare /usr/local/bin/fireshare
set -a set -a
source /opt/fireshare/fireshare.env source /opt/fireshare/fireshare.env
+3 -2
View File
@@ -36,8 +36,9 @@ function update_script() {
systemctl stop flame systemctl stop flame
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/flame/.env create_backup /opt/flame/.env \
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="data" fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball" /opt/flame/data
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "flame" "pawelmalak/flame" "tarball"
restore_backup restore_backup
msg_info "Rebuilding Application" msg_info "Rebuilding Application"
+1 -1
View File
@@ -37,7 +37,7 @@ function update_script() {
if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then if check_for_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"; then
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop fluid-calendar systemctl stop fluid-calendar
msg_ok "Stopped Service" msg_info "Stopped Service"
create_backup /opt/fluid-calendar/.env create_backup /opt/fluid-calendar/.env
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar" "tarball"
+2 -2
View File
@@ -50,10 +50,10 @@ function update_script() {
echo "" echo ""
read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2 read -r -p "Final confirmation - proceed? (y/N): " CONFIRM2
if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then if [[ ! "$CONFIRM2" =~ ^[Yy]$ ]]; then
msg_warn "Update cancelled. Please backup your configuration before proceeding." msg_info "Update cancelled. Please backup your configuration before proceeding."
exit 0 exit 0
fi fi
msg_warn "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned." msg_info "Proceeding with version $APP_VERSION update. All configuration will be cleared as warned."
rm -rf /opt/gitea-mirror rm -rf /opt/gitea-mirror
fi fi
+9 -52
View File
@@ -9,30 +9,23 @@ source "$_cs_boot" 2>/dev/null || source <(curl -fsSL "${COMMUNITY_SCRIPTS_CORE_
APP="Glance" APP="Glance"
var_tags="${var_tags:-dashboard}" var_tags="${var_tags:-dashboard}"
var_cpu="${var_cpu:-1}" var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
var_arm64="${var_arm64:-yes}" var_arm64="${var_arm64:-yes}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
if [[ -z "${var_os:-}" ]] && command -v pveversion >/dev/null 2>&1; then
var_os=$(msg_menu "Choose the container OS" \
"debian" "Debian 13" \
"alpine" "Alpine 3.24 (smaller footprint)")
fi
if [[ "${var_os:-}" == "alpine" ]]; then
var_ram="${var_ram:-256}"
var_disk="${var_disk:-2}"
var_version="${var_version:-3.24}"
else
var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}"
var_version="${var_version:-13}"
fi
header_info "$APP" header_info "$APP"
variables variables
color color
catch_errors catch_errors
update_deb_based() { function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /etc/systemd/system/glance.service ]]; then if [[ ! -f /etc/systemd/system/glance.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
@@ -61,42 +54,6 @@ update_deb_based() {
exit exit
} }
update_alpine() {
if [[ ! -f /etc/init.d/glance ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if [[ ! -d /opt/glance_data ]]; then
msg_info "Creating config directory"
mkdir -p /opt/glance_data/
cp /opt/glance/*.yml /opt/glance_data/
sed -i 's|/opt/glance/glance\.yml|/opt/glance_data/glance.yml|' /etc/init.d/glance
rc-service glance restart
msg_ok "Created config directory"
fi
if check_for_gh_release "glance" "glanceapp/glance"; then
msg_info "Stopping Service"
rc-service glance stop
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "glance" "glanceapp/glance" "prebuild" "latest" "/opt/glance" "glance-linux-$(arch_resolve).tar.gz"
msg_info "Starting Service"
rc-service glance start
msg_ok "Started Service"
msg_ok "Updated successfully!"
fi
exit
}
function update_script() {
header_info
check_container_storage
check_container_resources
run_os_update
}
start start
build_container build_container
description description
+4 -4
View File
@@ -31,11 +31,11 @@ function update_script() {
exit exit
fi fi
setup_mariadb setup_mariadb
if [[ -f /opt/${APP}_version.txt ]]; then RELEASE=$(curl -fsSL https://api.github.com/repos/glpi-project/glpi/releases/latest | grep '"tag_name"' | sed -E 's/.*"tag_name": "([^"]+)".*/\1/')
mv /opt/"${APP}_version.txt" ~/.glpi if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
fi
if check_for_gh_release "glpi" "glpi-project/glpi"; then
msg_error "Currently we don't provide an update function for this ${APP}." msg_error "Currently we don't provide an update function for this ${APP}."
else
msg_ok "No update required. ${APP} is already at v${RELEASE}."
fi fi
exit exit
} }
+1 -1
View File
@@ -62,7 +62,7 @@ function update_script() {
GRAMPS_VERSION=$(/opt/gramps-web/venv/bin/python3 -c "import gramps.version; print('%s%s' % (gramps.version.VERSION_TUPLE[0], gramps.version.VERSION_TUPLE[1]))" 2>/dev/null || echo "60") GRAMPS_VERSION=$(/opt/gramps-web/venv/bin/python3 -c "import gramps.version; print('%s%s' % (gramps.version.VERSION_TUPLE[0], gramps.version.VERSION_TUPLE[1]))" 2>/dev/null || echo "60")
GRAMPS_PLUGINS_DIR="/opt/gramps-web/data/gramps/gramps${GRAMPS_VERSION}/plugins" GRAMPS_PLUGINS_DIR="/opt/gramps-web/data/gramps/gramps${GRAMPS_VERSION}/plugins"
mkdir -p "$GRAMPS_PLUGINS_DIR" mkdir -p "$GRAMPS_PLUGINS_DIR"
curl -fsSL -o /tmp/gramps-addons.zip https://github.com/gramps-project/addons/archive/refs/heads/master.zip $STD wget -q https://github.com/gramps-project/addons/archive/refs/heads/master.zip -O /tmp/gramps-addons.zip
for addon in FilterRules JSON; do for addon in FilterRules JSON; do
unzip -p /tmp/gramps-addons.zip "addons-master/gramps${GRAMPS_VERSION}/download/${addon}.addon.tgz" | unzip -p /tmp/gramps-addons.zip "addons-master/gramps${GRAMPS_VERSION}/download/${addon}.addon.tgz" |
tar -xz -C "$GRAMPS_PLUGINS_DIR" tar -xz -C "$GRAMPS_PLUGINS_DIR"
+1 -1
View File
@@ -34,7 +34,7 @@ function update_script() {
msg_info "Stopping Service" msg_info "Stopping Service"
systemctl stop graylog-datanode systemctl stop graylog-datanode
systemctl stop graylog-server systemctl stop graylog-server
msg_ok "Stopped Service" msg_info "Stopped Service"
CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+') CURRENT_VERSION=$(apt list --installed 2>/dev/null | grep graylog-server | grep -oP '\d+\.\d+\.\d+')
+2 -2
View File
@@ -38,9 +38,9 @@ function update_script() {
systemctl stop grist systemctl stop grist
msg_ok "Stopped Service" msg_ok "Stopped Service"
create_backup /opt/grist/.env /opt/grist/grist-sessions.db /opt/grist/landing.db create_backup /opt/grist/.env /opt/grist/docs /opt/grist/grist-sessions.db /opt/grist/landing.db
CLEAN_INSTALL=1 CLEAN_INSTALL_KEEP="docs" fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball" CLEAN_INSTALL=1 fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
restore_backup restore_backup
+6
View File
@@ -0,0 +1,6 @@
___ _________ __ __
|__ \ / ____/ | __ __/ /_/ /_
__/ // /_ / /| |/ / / / __/ __ \
/ __// __/ / ___ / /_/ / /_/ / / /
/____/_/ /_/ |_\__,_/\__/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
___ __ __ ____ __ __
/ | _____/ /___ ______ _/ / / __ )__ ______/ /___ ____ / /_
/ /| |/ ___/ __/ / / / __ `/ / / __ / / / / __ / __ `/ _ \/ __/
/ ___ / /__/ /_/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /_/ / __/ /_
/_/ |_\___/\__/\__,_/\__,_/_/ /_____/\__,_/\__,_/\__, /\___/\__/
/____/
+6
View File
@@ -0,0 +1,6 @@
___ __ __
/ | ____/ /___ ___ ______ __________/ /
/ /| |/ __ / __ `/ / / / __ `/ ___/ __ /
/ ___ / /_/ / /_/ / /_/ / /_/ / / / /_/ /
/_/ |_\__,_/\__, /\__,_/\__,_/_/ \__,_/
/____/
+6
View File
@@ -0,0 +1,6 @@
___ __ __ __
/ | ____/ / _____ ____ / /___ __________ / / ____ ____ _
/ /| |/ __ / | / / _ \/ __ \/ __/ / / / ___/ _ \/ / / __ \/ __ `/
/ ___ / /_/ /| |/ / __/ / / / /_/ /_/ / / / __/ /___/ /_/ / /_/ /
/_/ |_\__,_/ |___/\___/_/ /_/\__/\__,_/_/ \___/_____/\____/\__, /
/____/
+6
View File
@@ -0,0 +1,6 @@
___ _____________ _ ________
/ | / ____/ ____(_) | / / ____/
/ /| | / /_ / /_ / / |/ / __/
/ ___ |/ __/ / __/ / / /| / /___
/_/ |_/_/ /_/ /_/_/ |_/_____/
+6
View File
@@ -0,0 +1,6 @@
___ __ ____ _ ______
/ | ____ ____ ____ / /_/ __ \ | / / __ \
/ /| |/ __ `/ _ \/ __ \/ __/ / / / | / / /_/ /
/ ___ / /_/ / __/ / / / /_/ /_/ /| |/ / _, _/
/_/ |_\__, /\___/_/ /_/\__/_____/ |___/_/ |_|
/____/
+6
View File
@@ -0,0 +1,6 @@
___ _ ______ _ __
/ | (_)___/_ __/________ _(_) /
/ /| | / / ___// / / ___/ __ `/ / /
/ ___ |/ / / / / / / / /_/ / / /
/_/ |_/_/_/ /_/ /_/ \__,_/_/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ __ _
/ | / /___ ___ ____ _/ / (_)___ __ ___ __
/ /| | / / __ `__ \/ __ `/ / / / __ \/ / / / |/_/
/ ___ |/ / / / / / / /_/ / /___/ / / / / /_/ /> <
/_/ |_/_/_/ /_/ /_/\__,_/_____/_/_/ /_/\__,_/_/|_|
+6
View File
@@ -0,0 +1,6 @@
___ __ _
/ | / /___ (_)___ ___
/ /| | / / __ \/ / __ \/ _ \
/ ___ |/ / /_/ / / / / / __/
/_/ |_/_/ .___/_/_/ /_/\___/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ ____ ____ __ _____
/ | / /___ (_)___ ___ / __ )____ _________ _/ __ )____ ______/ /____ ______ / ___/___ ______ _____ _____
/ /| | / / __ \/ / __ \/ _ \______/ __ / __ \/ ___/ __ `/ __ / __ `/ ___/ //_/ / / / __ \______\__ \/ _ \/ ___/ | / / _ \/ ___/
/ ___ |/ / /_/ / / / / / __/_____/ /_/ / /_/ / / / /_/ / /_/ / /_/ / /__/ ,< / /_/ / /_/ /_____/__/ / __/ / | |/ / __/ /
/_/ |_/_/ .___/_/_/ /_/\___/ /_____/\____/_/ \__, /_____/\__,_/\___/_/|_|\__,_/ .___/ /____/\___/_/ |___/\___/_/
/_/ /____/ /_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ _______
/ | / /___ (_)___ ___ / ____(_)___ ____ __ __
/ /| | / / __ \/ / __ \/ _ \______/ / / / __ \/ __ \/ / / /
/ ___ |/ / /_/ / / / / / __/_____/ /___/ / / / / / / / /_/ /
/_/ |_/_/ .___/_/_/ /_/\___/ \____/_/_/ /_/_/ /_/\__, /
/_/ /____/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ __________ ______ __
/ | / /___ (_)___ ___ / _/_ __/ /_ __/___ ____ / /____
/ /| | / / __ \/ / __ \/ _ \______ / / / /_____/ / / __ \/ __ \/ / ___/
/ ___ |/ / /_/ / / / / / __/_____// / / /_____/ / / /_/ / /_/ / (__ )
/_/ |_/_/ .___/_/_/ /_/\___/ /___/ /_/ /_/ \____/\____/_/____/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ __ __ __
/ | / /___ (_)___ ___ / //_/___ ____ ___ ____ ____/ /___
/ /| | / / __ \/ / __ \/ _ \______/ ,< / __ \/ __ `__ \/ __ \/ __ / __ \
/ ___ |/ / /_/ / / / / / __/_____/ /| / /_/ / / / / / / /_/ / /_/ / /_/ /
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_\____/_/ /_/ /_/\____/\__,_/\____/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ _ __ __ __ __
/ | / /___ (_)___ ___ / | / /__ _ __/ /______/ /___ __ ______/ /
/ /| | / / __ \/ / __ \/ _ \______/ |/ / _ \| |/_/ __/ ___/ / __ \/ / / / __ /
/ ___ |/ / /_/ / / / / / __/_____/ /| / __/> </ /_/ /__/ / /_/ / /_/ / /_/ /
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_/\___/_/|_|\__/\___/_/\____/\__,_/\__,_/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ ____ _____ __
/ | / /___ (_)___ ___ / __ \___ ____/ / (_) /_
/ /| | / / __ \/ / __ \/ _ \______/ /_/ / _ \/ __ / / / __ \
/ ___ |/ / /_/ / / / / / __/_____/ _, _/ __/ /_/ / / / /_/ /
/_/ |_/_/ .___/_/_/ /_/\___/ /_/ |_|\___/\__,_/_/_/_.___/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ _ __ __ _
/ | / /___ (_)___ ___ | | / /___ _/ /______ _____ (_)
/ /| | / / __ \/ / __ \/ _ \_____| | /| / / __ `/ //_/ __ `/ __ \/ /
/ ___ |/ / /_/ / / / / / __/_____/ |/ |/ / /_/ / ,< / /_/ / /_/ / /
/_/ |_/_/ .___/_/_/ /_/\___/ |__/|__/\__,_/_/|_|\__,_/ .___/_/
/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
___ __
/ | ____ ___ ____ ____ ______/ /_ ___
/ /| | / __ `__ \/ __ \/ __ `/ ___/ __ \/ _ \
/ ___ |/ / / / / / /_/ / /_/ / /__/ / / / __/
/_/ |_/_/ /_/ /_/ .___/\__,_/\___/_/ /_/\___/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __
/ | ____ _____/ /_ ____ _____
/ /| | / __ \/ ___/ __ \/ __ \/ ___/
/ ___ |/ / / / /__/ / / / /_/ / /
/_/ |_/_/ /_/\___/_/ /_/\____/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ _____ _____
/ | ____ / /__(_) / ___/__ ______ _____ / ___/___ ______ _____ _____
/ /| | / __ \/ //_/ /_____\__ \/ / / / __ \/ ___/_____\__ \/ _ \/ ___/ | / / _ \/ ___/
/ ___ |/ / / / ,< / /_____/__/ / /_/ / / / / /__/_____/__/ / __/ / | |/ / __/ /
/_/ |_/_/ /_/_/|_/_/ /____/\__, /_/ /_/\___/ /____/\___/_/ |___/\___/_/
/____/
+6
View File
@@ -0,0 +1,6 @@
___ __ _____
/ | ____ __ __/ /___ ______ ___ / ___/___ ______ _____ _____
/ /| | / __ \/ / / / __/ / / / __ \/ _ \______\__ \/ _ \/ ___/ | / / _ \/ ___/
/ ___ |/ / / / /_/ / /_/ /_/ / /_/ / __/_____/__/ / __/ / | |/ / __/ /
/_/ |_/_/ /_/\__, /\__/\__, / .___/\___/ /____/\___/_/ |___/\___/_/
/____/ /____/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ___ _ ______
/ | ____ ____ ______/ /_ ___ / | (_)____/ __/ /___ _ __
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ /| | / / ___/ /_/ / __ \ | /| / /
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ ___ |/ / / / __/ / /_/ / |/ |/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ /_/ |_/_/_/ /_/ /_/\____/|__/|__/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ______ __
/ | ____ ____ ______/ /_ ___ / ____/___ _______________ _____ ____/ /________ _
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ `/ ___/ ___/ __ `/ __ \/ __ / ___/ __ `/
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ /___/ /_/ (__ |__ ) /_/ / / / / /_/ / / / /_/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/____/____/\__,_/_/ /_/\__,_/_/ \__,_/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ______ __ ____ ____
/ | ____ ____ ______/ /_ ___ / ____/___ __ _______/ /_ / __ \/ __ )
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ \/ / / / ___/ __ \/ / / / __ |
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ /___/ /_/ / /_/ / /__/ / / / /_/ / /_/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\____/\__,_/\___/_/ /_/_____/_____/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ______ __
/ | ____ ____ ______/ /_ ___ / ____/_ ______ __________ _____ ___ ____ / /__
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / __/ / / / __ `/ ___/ __ `/ __ `__ \/ __ \/ / _ \
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ /_/ / /_/ / /_/ / /__/ /_/ / / / / / / /_/ / / __/
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ \____/\__,_/\__,_/\___/\__,_/_/ /_/ /_/\____/_/\___/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _______ __
/ | ____ ____ ______/ /_ ___ /_ __(_) /______ _
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / / //_/ __ `/
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ / / / ,< / /_/ /
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ /_/ /_/_/|_|\__,_/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ______ __
/ | ____ ____ ______/ /_ ___ /_ __/___ ____ ___ _________ _/ /_
/ /| | / __ \/ __ `/ ___/ __ \/ _ \______/ / / __ \/ __ `__ \/ ___/ __ `/ __/
/ ___ |/ /_/ / /_/ / /__/ / / / __/_____/ / / /_/ / / / / / / /__/ /_/ / /_
/_/ |_/ .___/\__,_/\___/_/ /_/\___/ /_/ \____/_/ /_/ /_/\___/\__,_/\__/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ _ ___ ____ ____
/ | ____ ____ _____(_)_______ / | / __ \/ _/
/ /| | / __ \/ __ \/ ___/ / ___/ _ \______/ /| | / /_/ // /
/ ___ |/ /_/ / /_/ / / / (__ ) __/_____/ ___ |/ ____// /
/_/ |_/ .___/ .___/_/ /_/____/\___/ /_/ |_/_/ /___/
/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ______ __ _ ________
/ | ____ / /_ / ____/___ ______/ /_ ___ _____ / | / / ____/
/ /| | / __ \/ __/_____/ / / __ `/ ___/ __ \/ _ \/ ___/_____/ |/ / / __
/ ___ |/ /_/ / /_/_____/ /___/ /_/ / /__/ / / / __/ / /_____/ /| / /_/ /
/_/ |_/ .___/\__/ \____/\__,_/\___/_/ /_/\___/_/ /_/ |_/\____/
/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ ____
/ | __________/ /_ (_) _____ / __ )____ _ __
/ /| | / ___/ ___/ __ \/ / | / / _ \/ __ / __ \| |/_/
/ ___ |/ / / /__/ / / / /| |/ / __/ /_/ / /_/ /> <
/_/ |_/_/ \___/_/ /_/_/ |___/\___/_____/\____/_/|_|
+6
View File
@@ -0,0 +1,6 @@
___ __ __ _
/ | __________/ /_ / / (_)___ __ ___ __
/ /| | / ___/ ___/ __ \ / / / / __ \/ / / / |/_/
/ ___ |/ / / /__/ / / / / /___/ / / / / /_/ /> <
/_/ |_/_/ \___/_/ /_/ /_____/_/_/ /_/\__,_/_/|_|
+6
View File
@@ -0,0 +1,6 @@
___
/ | _________ ___ _______
/ /| | / ___/ __ `/ / / / ___/
/ ___ |/ / / /_/ / /_/ (__ )
/_/ |_/_/ \__, /\__,_/____/
/____/
+6
View File
@@ -0,0 +1,6 @@
___ _ ___
/ | _____(_)___ |__ \
/ /| | / ___/ / __ `/_/ /
/ ___ |/ / / / /_/ / __/
/_/ |_/_/ /_/\__,_/____/
+6
View File
@@ -0,0 +1,6 @@
___ __ _ __
/ | _____/ /____ _____(_)____/ /__
/ /| | / ___/ __/ _ \/ ___/ / ___/ //_/
/ ___ |(__ ) /_/ __/ / / (__ ) ,<
/_/ |_/____/\__/\___/_/ /_/____/_/|_|
+6
View File
@@ -0,0 +1,6 @@
___ __ __ __ ______
____ ___ ______/ (_)___ / /_ ____ ____ / /_______/ /_ ___ / / __/
/ __ `/ / / / __ / / __ \/ __ \/ __ \/ __ \/ //_/ ___/ __ \/ _ \/ / /_
/ /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / ,< (__ ) / / / __/ / __/
\__,_/\__,_/\__,_/_/\____/_.___/\____/\____/_/|_/____/_/ /_/\___/_/_/
+6
View File
@@ -0,0 +1,6 @@
___ ___ __ ___ ___ ____
/ | __ ______/ (_)___ / |/ /_ __________ / | / _/
/ /| |/ / / / __ / / __ \/ /|_/ / / / / ___/ _ \______/ /| | / /
/ ___ / /_/ / /_/ / / /_/ / / / / /_/ (__ ) __/_____/ ___ |_/ /
/_/ |_\__,_/\__,_/_/\____/_/ /_/\__,_/____/\___/ /_/ |_/___/
+6
View File
@@ -0,0 +1,6 @@
___ __
/ | __ ________________ _/ /
/ /| |/ / / / ___/ ___/ __ `/ /
/ ___ / /_/ / / / / / /_/ / /
/_/ |_\__,_/_/ /_/ \__,_/_/
+6
View File
@@ -0,0 +1,6 @@
___ __ __ ___
/ | __ __/ /_/ /_ ___ / (_)___ _
/ /| |/ / / / __/ __ \/ _ \/ / / __ `/
/ ___ / /_/ / /_/ / / / __/ / / /_/ /
/_/ |_\__,_/\__/_/ /_/\___/_/_/\__,_/
+6
View File
@@ -0,0 +1,6 @@
__ __ __ _ __
____ ___ __/ /_/ /_ ___ ____ / /_(_) /__
/ __ `/ / / / __/ __ \/ _ \/ __ \/ __/ / //_/
/ /_/ / /_/ / /_/ / / / __/ / / / /_/ / ,<
\__,_/\__,_/\__/_/ /_/\___/_/ /_/\__/_/_/|_|
+6
View File
@@ -0,0 +1,6 @@
___ __ __
/ | __ __/ /_____ / /_ __________
/ /| |/ / / / __/ __ \/ __ \/ ___/ ___/
/ ___ / /_/ / /_/ /_/ / /_/ / / / /
/_/ |_\__,_/\__/\____/_.___/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
___ __ ___ __
/ | __ __/ /_____ _________ _/ (_) _____ / /_
/ /| |/ / / / __/ __ \/ ___/ __ `/ / / | /| / / _ \/ __ \
/ ___ / /_/ / /_/ /_/ / /__/ /_/ / / /| |/ |/ / __/ /_/ /
/_/ |_\__,_/\__/\____/\___/\__,_/_/_/ |__/|__/\___/_.___/
+6
View File
@@ -0,0 +1,6 @@
____ __ ____ __ __
/ __ )____ _/ /_ __ __ / __ )__ ______/ /___/ /_ __
/ __ / __ `/ __ \/ / / / / __ / / / / __ / __ / / / /
/ /_/ / /_/ / /_/ / /_/ / / /_/ / /_/ / /_/ / /_/ / /_/ /
/_____/\__,_/_.___/\__, / /_____/\__,_/\__,_/\__,_/\__, /
/____/ /____/
+6
View File
@@ -0,0 +1,6 @@
____ __ __
/ __ )____ ______/ /__________ _____/ /_
/ __ / __ `/ ___/ //_/ ___/ _ \/ ___/ __/
/ /_/ / /_/ / /__/ ,< / / / __(__ ) /_
/_____/\__,_/\___/_/|_/_/ \___/____/\__/
+6
View File
@@ -0,0 +1,6 @@
____ _ __ __
/ __ )____ _(_) /______ _/ /
/ __ / __ `/ / //_/ __ `/ /
/ /_/ / /_/ / / ,< / /_/ / /
/_____/\__,_/_/_/|_|\__,_/_/
+6
View File
@@ -0,0 +1,6 @@
____ __ __ __
/ __ )____ _____ ___ / /_ __ ______/ /___/ /_ __
/ __ / __ `/ __ `__ \/ __ \/ / / / __ / __ / / / /
/ /_/ / /_/ / / / / / / /_/ / /_/ / /_/ / /_/ / /_/ /
/_____/\__,_/_/ /_/ /_/_.___/\__,_/\__,_/\__,_/\__, /
/____/
+6
View File
@@ -0,0 +1,6 @@
____ ___ _ __ __
/ __ )____ ______ / | __________(_)____/ /_____ _____ / /_
/ __ / __ `/ ___/_____/ /| | / ___/ ___/ / ___/ __/ __ `/ __ \/ __/
/ /_/ / /_/ / / /_____/ ___ |(__ |__ ) (__ ) /_/ /_/ / / / / /_
/_____/\__,_/_/ /_/ |_/____/____/_/____/\__/\__,_/_/ /_/\__/
+6
View File
@@ -0,0 +1,6 @@
____
/ __ )____ _________ _________ _ __
/ __ / __ `/ ___/ _ \/ ___/ __ \ | /| / /
/ /_/ / /_/ (__ ) __/ / / /_/ / |/ |/ /
/_____/\__,_/____/\___/_/ \____/|__/|__/
+6
View File
@@ -0,0 +1,6 @@
____
/ __ )____ _____ ____ ___________
/ __ / __ `/_ / / __ `/ ___/ ___/
/ /_/ / /_/ / / /_/ /_/ / / / /
/_____/\__,_/ /___/\__,_/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
____ __ __ __ _ __
/ __ )___ ____ __ _____ _____/ / / /___ _/ /_ (_) /______
/ __ / _ \/ __ `/ | / / _ \/ ___/ /_/ / __ `/ __ \/ / __/ ___/
/ /_/ / __/ /_/ /| |/ / __/ / / __ / /_/ / /_/ / / /_(__ )
/_____/\___/\__,_/ |___/\___/_/ /_/ /_/\__,_/_.___/_/\__/____/

Some files were not shown because too many files have changed in this diff Show More