mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-03 19:43:05 +02:00
Compare commits
91 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 42a1a57587 | |||
| 16d2e3717b | |||
| 18fb43be11 | |||
| 9debedc386 | |||
| 64448c0ded | |||
| 6ce8062e3d | |||
| 213c342625 | |||
| b7f5ba1833 | |||
| a6196990a6 | |||
| 753f74c67d | |||
| aa4cd6a5ba | |||
| 92bc6915b1 | |||
| 915226fa3c | |||
| f8c7af7115 | |||
| 97aa6b39cb | |||
| bc944d90e2 | |||
| 4264cb46f4 | |||
| c29d71f5c0 | |||
| cb458b93f5 | |||
| da77587831 | |||
| 72380779d4 | |||
| b518978402 | |||
| f2ef2776e7 | |||
| 382ef231d8 | |||
| de122d075f | |||
| cffbe03b20 | |||
| f11aab9f17 | |||
| f12751cbd9 | |||
| 73b804bce7 | |||
| 5b65310d62 | |||
| 4a92a434e4 | |||
| 81fd7ef01a | |||
| fdb029403d | |||
| 304e73cd18 | |||
| f8bdd424eb | |||
| 70685ae8c3 | |||
| c4ae4d99e4 | |||
| d24422a533 | |||
| d7bc6b5967 | |||
| 8045921784 | |||
| 089bcd1c09 | |||
| b85de433db | |||
| 763732fc5b | |||
| e456b1fc96 | |||
| 30ab4a612d | |||
| c9bddaadc0 | |||
| a1cc2351d7 | |||
| 3157679ffe | |||
| 4d311e03df | |||
| 2f8cb52962 | |||
| 39d78754fa | |||
| 09c11fdecf | |||
| e562ab6128 | |||
| b5a9011581 | |||
| 450a5948ec | |||
| 6ff1e95334 | |||
| bf75cbd2a3 | |||
| 2098cf0f3a | |||
| 09c16ded19 | |||
| d9b12eaadf | |||
| 948f8f608f | |||
| 44483d08ae | |||
| 57c9246f59 | |||
| 00119abe89 | |||
| 645f6a2d9a | |||
| 5ce2cc3b00 | |||
| d9814ec169 | |||
| 58ac0fc22a | |||
| c1a13486a9 | |||
| c6ce72cefd | |||
| cac2d441b8 | |||
| 8029b208a6 | |||
| 7046b72981 | |||
| 8c4ed519a9 | |||
| ea6346e4ef | |||
| 8990ab702e | |||
| 57e02eee1b | |||
| 45053ea4c3 | |||
| 1fa4c1fbf7 | |||
| 0299e420e8 | |||
| db18c72bd8 | |||
| 4bf8a972bf | |||
| 47b8fbf2fb | |||
| 9cc1a739a5 | |||
| 0ce1cea6cd | |||
| e7eff1cf81 | |||
| 03edfcef85 | |||
| bc488e467c | |||
| 303bb672e6 | |||
| 69854a4f74 | |||
| dd74eef5f6 |
Generated
+162
@@ -1,3 +1,165 @@
|
||||
## 2026-07-31
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Docmost: cleanup folder at update [@MickLesk](https://github.com/MickLesk) ([#16177](https://github.com/community-scripts/ProxmoxVE/pull/16177))
|
||||
- Firecrawl: Add dependency [@tremor021](https://github.com/tremor021) ([#16174](https://github.com/community-scripts/ProxmoxVE/pull/16174))
|
||||
|
||||
## 2026-07-30
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Firecrawl ([#16156](https://github.com/community-scripts/ProxmoxVE/pull/16156))
|
||||
- OmniRoute ([#16155](https://github.com/community-scripts/ProxmoxVE/pull/16155))
|
||||
- PegaProx ([#16154](https://github.com/community-scripts/ProxmoxVE/pull/16154))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Pin version to 3.1.0 [@vhsdream](https://github.com/vhsdream) ([#16170](https://github.com/community-scripts/ProxmoxVE/pull/16170))
|
||||
- romm: remove stale 1.x alembic migrations on update [@Darkatek7](https://github.com/Darkatek7) ([#16101](https://github.com/community-scripts/ProxmoxVE/pull/16101))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Medusa: convert the non-free unrar source to deb822 format [@angusmaul](https://github.com/angusmaul) ([#16093](https://github.com/community-scripts/ProxmoxVE/pull/16093))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: support dynamic gitlab URL | add setup_mysql_db function [@MickLesk](https://github.com/MickLesk) ([#16166](https://github.com/community-scripts/ProxmoxVE/pull/16166))
|
||||
- core: add configurable host CA inheritance during bootstrap [@MickLesk](https://github.com/MickLesk) ([#15889](https://github.com/community-scripts/ProxmoxVE/pull/15889))
|
||||
|
||||
## 2026-07-29
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- backup virtual printer in bambuddy [@asylumexp](https://github.com/asylumexp) ([#16142](https://github.com/community-scripts/ProxmoxVE/pull/16142))
|
||||
- ImmichFrame: check .NET SDK before update deployment [@aidaskni](https://github.com/aidaskni) ([#16104](https://github.com/community-scripts/ProxmoxVE/pull/16104))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Bichon: Migration for V2 Release [@MickLesk](https://github.com/MickLesk) ([#16145](https://github.com/community-scripts/ProxmoxVE/pull/16145))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: Harden remote func bootstrapping with dns issues [@MickLesk](https://github.com/MickLesk) ([#16146](https://github.com/community-scripts/ProxmoxVE/pull/16146))
|
||||
|
||||
## 2026-07-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Create search directory in wanderer-install.sh [@Isnubi](https://github.com/Isnubi) ([#16134](https://github.com/community-scripts/ProxmoxVE/pull/16134))
|
||||
- npmplus: Remove duplicate msg_info for container recreation [@MickLesk](https://github.com/MickLesk) ([#16122](https://github.com/community-scripts/ProxmoxVE/pull/16122))
|
||||
- fix Node.js version drift [@asylumexp](https://github.com/asylumexp) ([#16111](https://github.com/community-scripts/ProxmoxVE/pull/16111))
|
||||
- UmlautAdaptarr: use the Debian 13 Microsoft repo with its 2025 signing key [@angusmaul](https://github.com/angusmaul) ([#16077](https://github.com/community-scripts/ProxmoxVE/pull/16077))
|
||||
- fix(bazarr): store data in /var/lib/bazarr instead of inside /opt/bazarr [@angusmaul](https://github.com/angusmaul) ([#16098](https://github.com/community-scripts/ProxmoxVE/pull/16098))
|
||||
- Cloudflare-DDNS: store API token in a 600 env file and build the binary at install time [@angusmaul](https://github.com/angusmaul) ([#16100](https://github.com/community-scripts/ProxmoxVE/pull/16100))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add nginx site helper and PHP socket resolver [@MickLesk](https://github.com/MickLesk) ([#16118](https://github.com/community-scripts/ProxmoxVE/pull/16118))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Migrate Musicseerr to DroppedNeedle [@vhsdream](https://github.com/vhsdream) ([#15751](https://github.com/community-scripts/ProxmoxVE/pull/15751))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix read prompt input directly from /dev/tty [@MickLesk](https://github.com/MickLesk) ([#16126](https://github.com/community-scripts/ProxmoxVE/pull/16126))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- actual-budget-prometheus-exporter ([#16109](https://github.com/community-scripts/ProxmoxVE/pull/16109))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: prometheus-paperless-exporter incompatibility with paperless v3 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16119](https://github.com/community-scripts/ProxmoxVE/pull/16119))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- fix keep-open for close invalid pr [@asylumexp](https://github.com/asylumexp) ([#16105](https://github.com/community-scripts/ProxmoxVE/pull/16105))
|
||||
- Bump GitHub Actions across workflows [@MickLesk](https://github.com/MickLesk) ([#16091](https://github.com/community-scripts/ProxmoxVE/pull/16091))
|
||||
|
||||
## 2026-07-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Unpackerr ([#16034](https://github.com/community-scripts/ProxmoxVE/pull/16034))
|
||||
- CookCLI ([#16028](https://github.com/community-scripts/ProxmoxVE/pull/16028))
|
||||
- Discourse ([#16024](https://github.com/community-scripts/ProxmoxVE/pull/16024))
|
||||
- Mastodon ([#16029](https://github.com/community-scripts/ProxmoxVE/pull/16029))
|
||||
- Docspell ([#16033](https://github.com/community-scripts/ProxmoxVE/pull/16033))
|
||||
- Poznote ([#16030](https://github.com/community-scripts/ProxmoxVE/pull/16030))
|
||||
- Shiori ([#16026](https://github.com/community-scripts/ProxmoxVE/pull/16026))
|
||||
- Nezha ([#16025](https://github.com/community-scripts/ProxmoxVE/pull/16025))
|
||||
- PasswordPusher ([#16031](https://github.com/community-scripts/ProxmoxVE/pull/16031))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Update MeiliSearch command for database upgrade [@Isnubi](https://github.com/Isnubi) ([#16081](https://github.com/community-scripts/ProxmoxVE/pull/16081))
|
||||
- Mylar3 & Medusa: use trixie non-free for unrar, not bookworm [@angusmaul](https://github.com/angusmaul) ([#16072](https://github.com/community-scripts/ProxmoxVE/pull/16072))
|
||||
- Vikunja: pin install/update to v2.3.0 due upstream issues [@MickLesk](https://github.com/MickLesk) ([#16059](https://github.com/community-scripts/ProxmoxVE/pull/16059))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- OpenThread-BR: Add runtime configuration options [@tomfrenzel](https://github.com/tomfrenzel) ([#16038](https://github.com/community-scripts/ProxmoxVE/pull/16038))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: Handle LXC upgrade prompt cancellation [@MickLesk](https://github.com/MickLesk) ([#16058](https://github.com/community-scripts/ProxmoxVE/pull/16058))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: fix OS version fallback when the host catalog lacks the requested version & harden template validation [@MickLesk](https://github.com/MickLesk) ([#16068](https://github.com/community-scripts/ProxmoxVE/pull/16068))
|
||||
|
||||
## 2026-07-26
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Satisfactory ([#16023](https://github.com/community-scripts/ProxmoxVE/pull/16023))
|
||||
- OmniTools ([#16032](https://github.com/community-scripts/ProxmoxVE/pull/16032))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Apache Tika: Remove software-properties-common from Apache Tika install [@andygrunwald](https://github.com/andygrunwald) ([#16054](https://github.com/community-scripts/ProxmoxVE/pull/16054))
|
||||
- Fix inventree missing db engine (upstream issue / postinstall) [@MickLesk](https://github.com/MickLesk) ([#16022](https://github.com/community-scripts/ProxmoxVE/pull/16022))
|
||||
- OPNsense VM: answer console password prompt explicitly, add inter-key delay [@MickLesk](https://github.com/MickLesk) ([#16021](https://github.com/community-scripts/ProxmoxVE/pull/16021))
|
||||
- [endurain] add node update to update script [@johanngrobe](https://github.com/johanngrobe) ([#16014](https://github.com/community-scripts/ProxmoxVE/pull/16014))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Apache Tika: Switch from Debian Bookworm to Debian Trixie and replace manual install of OpenJDK with setup_java [@andygrunwald](https://github.com/andygrunwald) ([#16036](https://github.com/community-scripts/ProxmoxVE/pull/16036))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- core: improve OS mismatch message [@MickLesk](https://github.com/MickLesk) ([#16035](https://github.com/community-scripts/ProxmoxVE/pull/16035))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Improve command description for disabling pve-enterprise repo [@Marcondiro](https://github.com/Marcondiro) ([#16020](https://github.com/community-scripts/ProxmoxVE/pull/16020))
|
||||
|
||||
## 2026-07-25
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
Generated
+12
@@ -0,0 +1,12 @@
|
||||
## 2026-08-01
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Update bazarr-install.sh [@asylumexp](https://github.com/asylumexp) ([#16191](https://github.com/community-scripts/ProxmoxVE/pull/16191))
|
||||
- fix romm missing 7z [@asylumexp](https://github.com/asylumexp) ([#16194](https://github.com/community-scripts/ProxmoxVE/pull/16194))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars [@asylumexp](https://github.com/asylumexp) ([#16193](https://github.com/community-scripts/ProxmoxVE/pull/16193))
|
||||
Generated
+17
@@ -0,0 +1,17 @@
|
||||
# Keeps the GitHub Actions referenced in .github/workflows up to date.
|
||||
# https://docs.github.com/code-security/dependabot/working-with-dependabot/dependabot-options-reference
|
||||
version: 2
|
||||
updates:
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
day: "monday"
|
||||
open-pull-requests-limit: 5
|
||||
labels:
|
||||
- "dependencies"
|
||||
# One PR per week for all action bumps instead of one PR per action.
|
||||
groups:
|
||||
github-actions:
|
||||
patterns:
|
||||
- "*"
|
||||
Generated
+11
-1
@@ -1,5 +1,5 @@
|
||||
<!--🛑 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. 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
|
||||
|
||||
@@ -16,6 +16,16 @@ Fixes #
|
||||
|
||||
---
|
||||
|
||||
## 🤖 AI Assistance (**X** in brackets)
|
||||
|
||||
> If you used an AI tool (GitHub Copilot, Claude, ChatGPT, etc.) to write or generate any scripts in this PR, you **must** confirm compliance below.
|
||||
> Select exactly one option.
|
||||
|
||||
- [ ] **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/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.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Type of Change (**X** in brackets)
|
||||
|
||||
- [ ] 🐞 **Bug fix** – Resolves an issue without breaking functionality.
|
||||
|
||||
+3
-3
@@ -20,21 +20,21 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
# Step 1: Checkout repository
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v2
|
||||
uses: actions/checkout@v7
|
||||
|
||||
# Step 2: Disable file mode changes detection
|
||||
- name: Disable file mode changes
|
||||
|
||||
Generated
+2
-2
@@ -16,13 +16,13 @@ jobs:
|
||||
CONFIG_PATH: .github/autolabeler-config.json
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm install minimatch
|
||||
|
||||
- name: Label PR based on file changes, title, and PR template
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs').promises;
|
||||
|
||||
Generated
+4
-4
@@ -19,25 +19,25 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Archive old changelog entries
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs').promises;
|
||||
|
||||
Generated
+5
-5
@@ -19,20 +19,20 @@ jobs:
|
||||
steps:
|
||||
- name: Generate a token
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||
|
||||
- name: Generate a token for PR approval and merge
|
||||
id: generate-token-merge
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
@@ -53,7 +53,7 @@ jobs:
|
||||
|
||||
- name: Get categorized pull requests
|
||||
id: get-categorized-prs
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
async function main() {
|
||||
@@ -213,7 +213,7 @@ jobs:
|
||||
return await main();
|
||||
|
||||
- name: Update CHANGELOG.md
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const fs = require('fs').promises;
|
||||
|
||||
+2
-2
@@ -17,7 +17,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
ref: main
|
||||
|
||||
@@ -242,7 +242,7 @@ jobs:
|
||||
checked=$((checked + 1))
|
||||
|
||||
# Extract our NODE_VERSION
|
||||
our_version=$(grep -oP 'NODE_VERSION="(\d+)"' "$script" | head -1 | grep -oP '\d+' || echo "")
|
||||
our_version=$(grep -oP 'NODE_VERSION=\K"?\d+' "$script" | head -1 | grep -oP '\d+' || echo "")
|
||||
if [[ -z "$our_version" ]]; then
|
||||
if grep -q 'NODE_VERSION=\$(' "$script"; then
|
||||
our_version="dynamic"
|
||||
|
||||
+3
-3
@@ -15,7 +15,7 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Close PR if it does not follow the PR template
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const pr = context.payload.pull_request;
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
}
|
||||
|
||||
const labels = pr.labels.map((label) => label.name);
|
||||
const skipLabels = ["automated pr", "keep open"];
|
||||
const skipLabels = ["automated pr", "keep-open"];
|
||||
|
||||
if (skipLabels.some((label) => labels.includes(label))) {
|
||||
core.info(`PR #${prNumber} has a skip label (${labels.join(", ")}) — skipping template validation.`);
|
||||
@@ -136,7 +136,7 @@ jobs:
|
||||
``,
|
||||
`> Use the template sections, fill in the description, check all prerequisite boxes, and select at least one type of change.`,
|
||||
``,
|
||||
`Maintainers can add the \`keep open\` label to exempt a PR from this check.`,
|
||||
`Maintainers can add the \`keep-open\` label to exempt a PR from this check.`,
|
||||
``,
|
||||
`Thank you for contributing! 🙏`,
|
||||
].join("\n");
|
||||
|
||||
+1
-1
@@ -14,7 +14,7 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Close PR if unauthorized new script submission
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const pr = context.payload.pull_request;
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Auto-close if tteck script detected
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const issue = context.payload.issue;
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout target repo (merge commit)
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
repository: community-scripts/ProxmoxVE
|
||||
ref: ${{ github.event.pull_request.merge_commit_sha }}
|
||||
|
||||
+1
-1
@@ -19,7 +19,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Delete branches of merged PRs
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const owner = context.repo.owner;
|
||||
|
||||
+1
-1
@@ -17,7 +17,7 @@ jobs:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -13,7 +13,7 @@ jobs:
|
||||
contents: write
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
|
||||
- name: Clean CHANGELOG (remove HTML header)
|
||||
run: sed -n '/^## /,$p' CHANGELOG.md > changelog_cleaned.md
|
||||
|
||||
Generated
+1
-1
@@ -14,7 +14,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Lock old issues and PRs
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const daysBeforeLock = 7;
|
||||
|
||||
Generated
+1
-1
@@ -26,7 +26,7 @@ jobs:
|
||||
steps:
|
||||
- name: Mint GitHub App token (bot identity)
|
||||
id: app-token
|
||||
uses: actions/create-github-app-token@v1
|
||||
uses: actions/create-github-app-token@v3
|
||||
with:
|
||||
app-id: ${{ secrets.PB_BOT_APP_ID }}
|
||||
private-key: ${{ secrets.PB_BOT_APP_PRIVATE_KEY }}
|
||||
|
||||
+1
-1
@@ -12,7 +12,7 @@ jobs:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
Generated
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
||||
contents: read
|
||||
steps:
|
||||
- name: Handle stale PRs
|
||||
uses: actions/github-script@v7
|
||||
uses: actions/github-script@v9
|
||||
with:
|
||||
script: |
|
||||
const now = new Date();
|
||||
|
||||
+3
-3
@@ -13,7 +13,7 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/checkout@v7
|
||||
|
||||
- name: Create redirect page
|
||||
run: |
|
||||
@@ -33,9 +33,9 @@ jobs:
|
||||
</html>
|
||||
EOF
|
||||
|
||||
- uses: actions/upload-pages-artifact@v3
|
||||
- uses: actions/upload-pages-artifact@v5
|
||||
with:
|
||||
path: site
|
||||
|
||||
- name: Deploy
|
||||
uses: actions/deploy-pages@v4
|
||||
uses: actions/deploy-pages@v5
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v4
|
||||
uses: actions/checkout@v7
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
|
||||
+147
-155
@@ -83,6 +83,9 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -96,7 +99,14 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
|
||||
<details>
|
||||
<summary><h4>July (25 entries)</h4></summary>
|
||||
<summary><h4>August (1 entries)</h4></summary>
|
||||
|
||||
[View August 2026 Changelog](.github/changelogs/2026/08.md)
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary><h4>July (31 entries)</h4></summary>
|
||||
|
||||
[View July 2026 Changelog](.github/changelogs/2026/07.md)
|
||||
|
||||
@@ -508,6 +518,141 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
</details>
|
||||
|
||||
## 2026-08-03
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix restore env in split pro [@johanngrobe](https://github.com/johanngrobe) ([#16228](https://github.com/community-scripts/ProxmoxVE/pull/16228))
|
||||
|
||||
## 2026-08-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Portainer as Addon [@MickLesk](https://github.com/MickLesk) ([#16200](https://github.com/community-scripts/ProxmoxVE/pull/16200))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- LibreNMS: Ensure ipmitool dependency is installed [@tremor021](https://github.com/tremor021) ([#16219](https://github.com/community-scripts/ProxmoxVE/pull/16219))
|
||||
- Bitfocus Companion: add libatomic1 dependency [@tremor021](https://github.com/tremor021) ([#16212](https://github.com/community-scripts/ProxmoxVE/pull/16212))
|
||||
- fix(dispatcharr): add recordings and dvr queues to celery worker [@eXistC](https://github.com/eXistC) ([#16204](https://github.com/community-scripts/ProxmoxVE/pull/16204))
|
||||
- add retry for uv - same as immich [@asylumexp](https://github.com/asylumexp) ([#16203](https://github.com/community-scripts/ProxmoxVE/pull/16203))
|
||||
- Fix for cross-seed node version regression [@TorinFrancis](https://github.com/TorinFrancis) ([#16209](https://github.com/community-scripts/ProxmoxVE/pull/16209))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- chore: remove portainer setup from several scripts (moved to addon) [@MickLesk](https://github.com/MickLesk) ([#16201](https://github.com/community-scripts/ProxmoxVE/pull/16201))
|
||||
|
||||
## 2026-08-01
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Update bazarr-install.sh [@asylumexp](https://github.com/asylumexp) ([#16191](https://github.com/community-scripts/ProxmoxVE/pull/16191))
|
||||
- fix romm missing 7z [@asylumexp](https://github.com/asylumexp) ([#16194](https://github.com/community-scripts/ProxmoxVE/pull/16194))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- add CLEANUPARR_CONFIG_PATH, CLEANUPARR_LOGS_PATH vars [@asylumexp](https://github.com/asylumexp) ([#16193](https://github.com/community-scripts/ProxmoxVE/pull/16193))
|
||||
|
||||
## 2026-07-31
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Docmost: cleanup folder at update [@MickLesk](https://github.com/MickLesk) ([#16177](https://github.com/community-scripts/ProxmoxVE/pull/16177))
|
||||
- Firecrawl: Add dependency [@tremor021](https://github.com/tremor021) ([#16174](https://github.com/community-scripts/ProxmoxVE/pull/16174))
|
||||
|
||||
## 2026-07-30
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Firecrawl ([#16156](https://github.com/community-scripts/ProxmoxVE/pull/16156))
|
||||
- OmniRoute ([#16155](https://github.com/community-scripts/ProxmoxVE/pull/16155))
|
||||
- PegaProx ([#16154](https://github.com/community-scripts/ProxmoxVE/pull/16154))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Immich: Pin version to 3.1.0 [@vhsdream](https://github.com/vhsdream) ([#16170](https://github.com/community-scripts/ProxmoxVE/pull/16170))
|
||||
- romm: remove stale 1.x alembic migrations on update [@Darkatek7](https://github.com/Darkatek7) ([#16101](https://github.com/community-scripts/ProxmoxVE/pull/16101))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Medusa: convert the non-free unrar source to deb822 format [@angusmaul](https://github.com/angusmaul) ([#16093](https://github.com/community-scripts/ProxmoxVE/pull/16093))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: support dynamic gitlab URL | add setup_mysql_db function [@MickLesk](https://github.com/MickLesk) ([#16166](https://github.com/community-scripts/ProxmoxVE/pull/16166))
|
||||
- core: add configurable host CA inheritance during bootstrap [@MickLesk](https://github.com/MickLesk) ([#15889](https://github.com/community-scripts/ProxmoxVE/pull/15889))
|
||||
|
||||
## 2026-07-29
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- backup virtual printer in bambuddy [@asylumexp](https://github.com/asylumexp) ([#16142](https://github.com/community-scripts/ProxmoxVE/pull/16142))
|
||||
- ImmichFrame: check .NET SDK before update deployment [@aidaskni](https://github.com/aidaskni) ([#16104](https://github.com/community-scripts/ProxmoxVE/pull/16104))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Bichon: Migration for V2 Release [@MickLesk](https://github.com/MickLesk) ([#16145](https://github.com/community-scripts/ProxmoxVE/pull/16145))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- core: Harden remote func bootstrapping with dns issues [@MickLesk](https://github.com/MickLesk) ([#16146](https://github.com/community-scripts/ProxmoxVE/pull/16146))
|
||||
|
||||
## 2026-07-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Create search directory in wanderer-install.sh [@Isnubi](https://github.com/Isnubi) ([#16134](https://github.com/community-scripts/ProxmoxVE/pull/16134))
|
||||
- npmplus: Remove duplicate msg_info for container recreation [@MickLesk](https://github.com/MickLesk) ([#16122](https://github.com/community-scripts/ProxmoxVE/pull/16122))
|
||||
- fix Node.js version drift [@asylumexp](https://github.com/asylumexp) ([#16111](https://github.com/community-scripts/ProxmoxVE/pull/16111))
|
||||
- UmlautAdaptarr: use the Debian 13 Microsoft repo with its 2025 signing key [@angusmaul](https://github.com/angusmaul) ([#16077](https://github.com/community-scripts/ProxmoxVE/pull/16077))
|
||||
- fix(bazarr): store data in /var/lib/bazarr instead of inside /opt/bazarr [@angusmaul](https://github.com/angusmaul) ([#16098](https://github.com/community-scripts/ProxmoxVE/pull/16098))
|
||||
- Cloudflare-DDNS: store API token in a 600 env file and build the binary at install time [@angusmaul](https://github.com/angusmaul) ([#16100](https://github.com/community-scripts/ProxmoxVE/pull/16100))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- tools.func: add nginx site helper and PHP socket resolver [@MickLesk](https://github.com/MickLesk) ([#16118](https://github.com/community-scripts/ProxmoxVE/pull/16118))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Migrate Musicseerr to DroppedNeedle [@vhsdream](https://github.com/vhsdream) ([#15751](https://github.com/community-scripts/ProxmoxVE/pull/15751))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix read prompt input directly from /dev/tty [@MickLesk](https://github.com/MickLesk) ([#16126](https://github.com/community-scripts/ProxmoxVE/pull/16126))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- actual-budget-prometheus-exporter ([#16109](https://github.com/community-scripts/ProxmoxVE/pull/16109))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- fix: prometheus-paperless-exporter incompatibility with paperless v3 [@CrazyWolf13](https://github.com/CrazyWolf13) ([#16119](https://github.com/community-scripts/ProxmoxVE/pull/16119))
|
||||
|
||||
### 📂 Github
|
||||
|
||||
- fix keep-open for close invalid pr [@asylumexp](https://github.com/asylumexp) ([#16105](https://github.com/community-scripts/ProxmoxVE/pull/16105))
|
||||
- Bump GitHub Actions across workflows [@MickLesk](https://github.com/MickLesk) ([#16091](https://github.com/community-scripts/ProxmoxVE/pull/16091))
|
||||
|
||||
## 2026-07-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
@@ -1000,157 +1145,4 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
||||
|
||||
## 2026-07-02
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Rackula ([#15465](https://github.com/community-scripts/ProxmoxVE/pull/15465))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- typo: fix npm update to npm install for n8n [@MickLesk](https://github.com/MickLesk) ([#15545](https://github.com/community-scripts/ProxmoxVE/pull/15545))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- Frigate: bump to v0.17.2 [@MickLesk](https://github.com/MickLesk) ([#15536](https://github.com/community-scripts/ProxmoxVE/pull/15536))
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- Revert "Immich v3.0.0" [@MickLesk](https://github.com/MickLesk) ([#15558](https://github.com/community-scripts/ProxmoxVE/pull/15558))
|
||||
- Immich v3.0.0 [@vhsdream](https://github.com/vhsdream) ([#15153](https://github.com/community-scripts/ProxmoxVE/pull/15153))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: configure pnpm to allow all build scripts for environments [@MickLesk](https://github.com/MickLesk) ([#15532](https://github.com/community-scripts/ProxmoxVE/pull/15532))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- feat(build.func): add var_ignore_disable to bypass disabled-script guard [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#15544](https://github.com/community-scripts/ProxmoxVE/pull/15544))
|
||||
|
||||
## 2026-07-01
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- iVentoy ([#15503](https://github.com/community-scripts/ProxmoxVE/pull/15503))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Stirling-PDF: patch libicudata execstack flag for LXC container compatibility [@MickLesk](https://github.com/MickLesk) ([#15531](https://github.com/community-scripts/ProxmoxVE/pull/15531))
|
||||
- FlowiseAI: align install to use pnpm instead of npm to fix missing dependencies [@MickLesk](https://github.com/MickLesk) ([#15530](https://github.com/community-scripts/ProxmoxVE/pull/15530))
|
||||
- Vaultwarden: handle version detection failure gracefully in update [@MickLesk](https://github.com/MickLesk) ([#15526](https://github.com/community-scripts/ProxmoxVE/pull/15526))
|
||||
- homarr: fix: update-fail [@CrazyWolf13](https://github.com/CrazyWolf13) ([#15512](https://github.com/community-scripts/ProxmoxVE/pull/15512))
|
||||
- n8n: pin version to 2.27.5 [@tremor021](https://github.com/tremor021) ([#15516](https://github.com/community-scripts/ProxmoxVE/pull/15516))
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [arm64] feat: iventory arm64 support [@asylumexp](https://github.com/asylumexp) ([#15521](https://github.com/community-scripts/ProxmoxVE/pull/15521))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- core: fix SDN vnet network parameter to use bridge instead of vnet [@MickLesk](https://github.com/MickLesk) ([#15527](https://github.com/community-scripts/ProxmoxVE/pull/15527))
|
||||
- tools.func: use safe variable expansion in check_for_gh_release RETURN trap [@MickLesk](https://github.com/MickLesk) ([#15529](https://github.com/community-scripts/ProxmoxVE/pull/15529))
|
||||
|
||||
## 2026-06-30
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: Use heredoc when creating env files and creds/other [@tremor021](https://github.com/tremor021) ([#15469](https://github.com/community-scripts/ProxmoxVE/pull/15469))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- [tools/pve/*.sh] https://download.proxmox.com -> http://download.proxmox.com (PVE8 Only) [@galeksandrp](https://github.com/galeksandrp) ([#15498](https://github.com/community-scripts/ProxmoxVE/pull/15498))
|
||||
|
||||
## 2026-06-29
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- Koffan ([#15467](https://github.com/community-scripts/ProxmoxVE/pull/15467))
|
||||
- Etherpad ([#15468](https://github.com/community-scripts/ProxmoxVE/pull/15468))
|
||||
- Flame ([#15464](https://github.com/community-scripts/ProxmoxVE/pull/15464))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- chore(ct): sync snapotter defaults with PocketBase [@github-actions[bot]](https://github.com/github-actions[bot]) ([#15472](https://github.com/community-scripts/ProxmoxVE/pull/15472))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- feat: update nginx proxy manager to trixie [@asylumexp](https://github.com/asylumexp) ([#15457](https://github.com/community-scripts/ProxmoxVE/pull/15457))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### ✨ New Features
|
||||
|
||||
- [tools.func]: add edit_yaml_config function [@tremor021](https://github.com/tremor021) ([#15484](https://github.com/community-scripts/ProxmoxVE/pull/15484))
|
||||
|
||||
## 2026-06-28
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 💥 Breaking Changes
|
||||
|
||||
- remove: promtail as EOL and other fixes [@asylumexp](https://github.com/asylumexp) ([#15455](https://github.com/community-scripts/ProxmoxVE/pull/15455))
|
||||
|
||||
## 2026-06-27
|
||||
|
||||
### 🆕 New Scripts
|
||||
|
||||
- tool: add disk-health tool (SMART + NVMe) [@MickLesk](https://github.com/MickLesk) ([#15417](https://github.com/community-scripts/ProxmoxVE/pull/15417))
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Deluge openssl fix [@asylumexp](https://github.com/asylumexp) ([#15435](https://github.com/community-scripts/ProxmoxVE/pull/15435))
|
||||
- fix command syntax in tunarr.sh [@asylumexp](https://github.com/asylumexp) ([#15434](https://github.com/community-scripts/ProxmoxVE/pull/15434))
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Storyteller: bump Node.js version to Node 24 [@thinusn](https://github.com/thinusn) ([#15439](https://github.com/community-scripts/ProxmoxVE/pull/15439))
|
||||
|
||||
### ❔ Uncategorized
|
||||
|
||||
- fix(endurain): replace Poetry/uv-pip backend setup with uv sync --frozen --no-dev [@Copilot](https://github.com/Copilot) ([#15429](https://github.com/community-scripts/ProxmoxVE/pull/15429))
|
||||
|
||||
## 2026-06-26
|
||||
|
||||
### 🚀 Updated Scripts
|
||||
|
||||
- Termix: Update Nginx configuration file paths [@xyzulu](https://github.com/xyzulu) ([#15397](https://github.com/community-scripts/ProxmoxVE/pull/15397))
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- Docuseal: use real SECRET_KEY_BASE for db:migrate on update [@MickLesk](https://github.com/MickLesk) ([#15411](https://github.com/community-scripts/ProxmoxVE/pull/15411))
|
||||
- bun: correct install for degoog [@MickLesk](https://github.com/MickLesk) ([#15412](https://github.com/community-scripts/ProxmoxVE/pull/15412))
|
||||
- fix databasus update/install errors [@asylumexp](https://github.com/asylumexp) ([#15403](https://github.com/community-scripts/ProxmoxVE/pull/15403))
|
||||
|
||||
### 💾 Core
|
||||
|
||||
- #### 🐞 Bug Fixes
|
||||
|
||||
- tools.func: fix setup_docker - don't abort update on docker pull failure [@MickLesk](https://github.com/MickLesk) ([#15410](https://github.com/community-scripts/ProxmoxVE/pull/15410))
|
||||
- fix(build.func): set /dev/kfd GID in fix_gpu_gids for AMD ROCm [@jamiej](https://github.com/jamiej) ([#15401](https://github.com/community-scripts/ProxmoxVE/pull/15401))
|
||||
- fix alpine mktmp error [@asylumexp](https://github.com/asylumexp) ([#15398](https://github.com/community-scripts/ProxmoxVE/pull/15398))
|
||||
|
||||
### 🧰 Tools
|
||||
|
||||
- #### 🔧 Refactor
|
||||
|
||||
- Refactor: reduce IP-Tag resource usage and clean up ShellCheck findings [@MickLesk](https://github.com/MickLesk) ([#15418](https://github.com/community-scripts/ProxmoxVE/pull/15418))
|
||||
- QoL: kernel-clean: Validate kernel selection input [@MickLesk](https://github.com/MickLesk) ([#15414](https://github.com/community-scripts/ProxmoxVE/pull/15414))
|
||||
- QoL: clean-lxcs exclude matching and set -e cancel handling [@MickLesk](https://github.com/MickLesk) ([#15413](https://github.com/community-scripts/ProxmoxVE/pull/15413))
|
||||
- QoL: Harden microcode download/install in microcode and pbs-microcode [@MickLesk](https://github.com/MickLesk) ([#15415](https://github.com/community-scripts/ProxmoxVE/pull/15415))
|
||||
- QoL: scaling-governor extend selection and guard missing cpufreq [@MickLesk](https://github.com/MickLesk) ([#15416](https://github.com/community-scripts/ProxmoxVE/pull/15416))
|
||||
- Removed deprecated parameter in Filebrowser Quantum configuration [@alpargatagazer](https://github.com/alpargatagazer) ([#15573](https://github.com/community-scripts/ProxmoxVE/pull/15573))
|
||||
+10
-1
@@ -118,10 +118,19 @@ function update_script() {
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export UV_HTTP_TIMEOUT="300"
|
||||
export RUSTUP_PERMIT_COPY_RENAME="true"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
for attempt in 1 2 3; do
|
||||
if [[ $attempt -eq 3 ]]; then
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
break
|
||||
fi
|
||||
$STD uv sync --frozen --no-install-project --no-dev && break
|
||||
msg_warn "uv sync attempt $attempt failed, retrying..."
|
||||
sleep $((attempt * 15))
|
||||
done
|
||||
chown -R authentik:authentik /opt/authentik
|
||||
msg_ok "Updated python server"
|
||||
|
||||
|
||||
+2
-1
@@ -42,7 +42,8 @@ function update_script() {
|
||||
/opt/bambuddy/data \
|
||||
/opt/bambuddy/bambuddy.db \
|
||||
/opt/bambuddy/bambutrack.db \
|
||||
/opt/bambuddy/archive
|
||||
/opt/bambuddy/archive \
|
||||
/opt/bambuddy/virtual_printer
|
||||
msg_ok "Backed up Configuration and Data"
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bambuddy" "maziggy/bambuddy" "tarball" "latest" "/opt/bambuddy"
|
||||
|
||||
@@ -28,6 +28,31 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! grep -qE -- "bazarr\.py.*[[:space:]](-c|--config)([[:space:]]|=)" /etc/systemd/system/bazarr.service 2>/dev/null; then
|
||||
if [[ -d /opt/bazarr/data && ! -L /opt/bazarr/data && -n "$(ls -A /var/lib/bazarr/ 2>/dev/null)" ]]; then
|
||||
msg_error "/opt/bazarr/data and /var/lib/bazarr both contain data - refusing to merge them. Keep the copy you want in /var/lib/bazarr, remove /opt/bazarr/data, then run the update again."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
msg_info "Moving Bazarr data to /var/lib/bazarr"
|
||||
systemctl stop bazarr
|
||||
if [[ -L /opt/bazarr/data ]]; then
|
||||
rm -f /opt/bazarr/data
|
||||
elif [[ -d /opt/bazarr/data ]]; then
|
||||
if ! cp -a /opt/bazarr/data/. /var/lib/bazarr/; then
|
||||
systemctl start bazarr
|
||||
msg_error "Could not copy /opt/bazarr/data to /var/lib/bazarr - nothing was removed."
|
||||
exit 1
|
||||
fi
|
||||
rm -rf /opt/bazarr/data
|
||||
fi
|
||||
sed -i -E "s|^(ExecStart=.*bazarr\.py.*)$|\1 -c /var/lib/bazarr|" /etc/systemd/system/bazarr.service
|
||||
systemctl daemon-reload
|
||||
systemctl start bazarr
|
||||
msg_ok "Moved Bazarr data to /var/lib/bazarr"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop bazarr
|
||||
|
||||
+33
-47
@@ -34,30 +34,27 @@ function update_script() {
|
||||
CURRENT_VERSION=$(cat /root/.bichon)
|
||||
fi
|
||||
|
||||
MIGRATE_V1=0
|
||||
if [[ $CURRENT_VERSION == 0.* ]]; then
|
||||
MIGRATE_V1=1
|
||||
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt 50 ]; then
|
||||
echo -e "\n${RD}Warning: Less than 50% free storage remaining on the root disk.${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration temporarily duplicates data and requires free space for it.${CL}"
|
||||
if [[ $CURRENT_VERSION != 1.* && $CURRENT_VERSION != 2.* ]]; then
|
||||
msg_error "Installed ${APP} version (${CURRENT_VERSION}) is too old for an automatic update to v2.x."
|
||||
msg_error "Please create a new ${APP} container and migrate your data manually."
|
||||
msg_error "Guide: https://github.com/rustmailer/bichon/wiki/Bichon-v2.x-Migration-Guide"
|
||||
exit
|
||||
fi
|
||||
|
||||
MIGRATE_V2=0
|
||||
if [[ $CURRENT_VERSION == 1.* ]]; then
|
||||
MIGRATE_V2=1
|
||||
STORAGE_KB=$(du -sk /opt/bichon-data/bichon-storage 2>/dev/null | awk '{print $1}')
|
||||
FREE_KB=$(df -Pk /opt/bichon-data | awk 'NR==2 {print $4}')
|
||||
if [[ -n "$STORAGE_KB" && -n "$FREE_KB" && "$FREE_KB" -lt "$STORAGE_KB" ]]; then
|
||||
echo -e "\n${RD}Warning: migration needs about $((STORAGE_KB / 1024))MB, only $((FREE_KB / 1024))MB free.${CL}"
|
||||
echo -e "${RD}The new bichon-blob store is written alongside the existing fjall data.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed
|
||||
if [[ ! $proceed =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
|
||||
RAM_TOTAL=$(free -m | awk '/^Mem:/{print $2}')
|
||||
if [ "$RAM_TOTAL" -lt 2000 ]; then
|
||||
echo -e "\n${RD}Warning: LXC has less than 2GB of RAM allocated (${RAM_TOTAL}MB).${CL}"
|
||||
echo -e "${RD}Bichon v1 data migration consumes significant memory and may crash if insufficient.${CL}"
|
||||
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed_ram
|
||||
if [[ ! $proceed_ram =~ ^[Yy]$ ]]; then
|
||||
msg_error "Update cancelled by user."
|
||||
exit
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
if check_for_gh_release "bichon" "rustmailer/bichon"; then
|
||||
@@ -67,55 +64,44 @@ function update_script() {
|
||||
|
||||
create_backup /opt/bichon/bichon.env
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ] && [ "$CURRENT_VERSION" != "0.3.7" ]; then
|
||||
msg_info "Updating to intermediate version v0.3.7"
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "v0.3.7" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz"
|
||||
restore_backup
|
||||
systemctl start bichon
|
||||
sleep 30
|
||||
systemctl stop bichon
|
||||
msg_ok "Intermediate update completed"
|
||||
fi
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bichon" "rustmailer/bichon" "prebuild" "latest" "/opt/bichon" "bichon-*-$(arch_resolve "x86_64" "aarch64")-unknown-linux-gnu.tar.gz"
|
||||
restore_backup
|
||||
|
||||
if [ "$MIGRATE_V1" -eq 1 ]; then
|
||||
msg_info "Running Bichon v1 Data Migration (patience)"
|
||||
if [ "$MIGRATE_V2" -eq 1 ]; then
|
||||
msg_info "Migrating storage from fjall to bichon-blob (patience)"
|
||||
$STD apt install -y expect
|
||||
# Menu: 0 Reset Password, 1 Migrate v0.3.7, 2 Migrate v1.x, 3 Exit
|
||||
$STD expect <<'EOF'
|
||||
set timeout -1
|
||||
spawn /opt/bichon/bichon-admin
|
||||
expect "*Select an operation*"
|
||||
send "\033\[B\r"
|
||||
send "\033\[B\033\[B\r"
|
||||
expect "*--bichon-root-dir*"
|
||||
send "/opt/bichon-data\r"
|
||||
expect "*--bichon-index-dir*"
|
||||
send "\r"
|
||||
expect "*--bichon-data-dir*"
|
||||
send "\r"
|
||||
expect "*Ready to migrate?*"
|
||||
send "y"
|
||||
expect "*Enter batch size*"
|
||||
expect "*batch size*"
|
||||
send "1000\r"
|
||||
expect eof
|
||||
catch wait
|
||||
EOF
|
||||
$STD apt remove --purge expect -y
|
||||
$STD apt autoremove -y
|
||||
msg_ok "Migration completed"
|
||||
|
||||
msg_info "Cleaning up legacy Bichon v0.x storage files"
|
||||
rm -rf /opt/bichon-data/envelope
|
||||
rm -rf /opt/bichon-data/eml
|
||||
rm -f /opt/bichon-data/mailbox.db
|
||||
rm -f /opt/bichon-data/meta.db
|
||||
msg_ok "Cleanup completed"
|
||||
if [[ ! -d /opt/bichon-data/bichon-storage/blobs ]] ||
|
||||
[[ "$(cat /opt/bichon-data/STORAGE_VERSION 2>/dev/null)" != "2" ]]; then
|
||||
msg_error "Storage migration did not complete - service left stopped, legacy data untouched."
|
||||
msg_error "Run /opt/bichon/bichon-admin manually and select 'Migrate v1.x Storage to v2.x'."
|
||||
exit
|
||||
fi
|
||||
msg_ok "Migrated storage to bichon-blob"
|
||||
|
||||
msg_info "Updating Bichon service for v1"
|
||||
sed -i 's|ExecStart=/opt/bichon/bichon|ExecStart=/opt/bichon/bichon-server|g; s|RestartSec=5|RestartSec=5\n\nLimitNOFILE=65536|g' /etc/systemd/system/bichon.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Service updated"
|
||||
msg_info "Removing legacy fjall files"
|
||||
rm -rf /opt/bichon-data/bichon-storage/keyspaces
|
||||
rm -f /opt/bichon-data/bichon-storage/0.jnl
|
||||
rm -f /opt/bichon-data/bichon-storage/lock
|
||||
rm -f /opt/bichon-data/bichon-storage/version
|
||||
msg_ok "Removed legacy fjall files"
|
||||
fi
|
||||
|
||||
msg_info "Starting service"
|
||||
|
||||
@@ -30,6 +30,8 @@ function update_script() {
|
||||
exit 1
|
||||
fi
|
||||
|
||||
ensure_dependencies libatomic1
|
||||
|
||||
RELEASE_JSON=$(curl -fsSL "https://api.bitfocus.io/v1/product/companion/packages?limit=20")
|
||||
PACKAGE_JSON=$(echo "$RELEASE_JSON" | jq -c \
|
||||
--arg target "linux-$(arch_resolve "tgz" "arm64-tgz")" \
|
||||
|
||||
+13
-1
@@ -33,7 +33,19 @@ function update_script() {
|
||||
systemctl stop cleanuparr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/cleanuparr/config
|
||||
if [[ ! -d /etc/cleanuparr ]]; then
|
||||
msg_info "Migrating Configuration to /etc/cleanuparr"
|
||||
mv /opt/cleanuparr/config /etc/cleanuparr
|
||||
mkdir -p /etc/cleanuparr /var/log/cleanuparr
|
||||
rm -rf /etc/cleanuparr/logs
|
||||
sed -i -e 's|^Environment="CONFIG_DIR=.*|Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"|' \
|
||||
-e '/^Environment="CLEANUPARR_CONFIG_PATH=/a Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"' \
|
||||
/etc/systemd/system/cleanuparr.service
|
||||
systemctl daemon-reload
|
||||
msg_ok "Migrated Configuration to /etc/cleanuparr"
|
||||
fi
|
||||
|
||||
create_backup /etc/cleanuparr
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||
|
||||
|
||||
+27
-3
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-3}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-12}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
@@ -24,11 +24,35 @@ function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
if [[ ! -f /etc/systemd/system/cloudflare-ddns.service ]]; then
|
||||
|
||||
if [[ ! -f /usr/local/bin/ddns ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
msg_error "There is no update function for ${APP}."
|
||||
|
||||
if check_for_gh_release "cloudflare-ddns" "favonia/cloudflare-ddns"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop cloudflare-ddns
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
setup_go
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "cloudflare-ddns" "favonia/cloudflare-ddns" "tarball"
|
||||
|
||||
msg_info "Updating ${APP}"
|
||||
cd /opt/cloudflare-ddns
|
||||
export CGO_ENABLED=0 GOOS=linux
|
||||
$STD go build -trimpath -ldflags="-s -w" -o /usr/local/bin/ddns ./cmd/ddns
|
||||
msg_ok "Updated ${APP}"
|
||||
|
||||
msg_info "Removing Build Dependencies"
|
||||
rm -rf /usr/local/go /usr/local/bin/go /usr/local/bin/gofmt /root/go /root/.cache/go-build /opt/cloudflare-ddns
|
||||
msg_ok "Removed Build Dependencies"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start cloudflare-ddns
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
exit
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -100,7 +100,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
systemctl reload nginx
|
||||
nginx_enable_site dispatcharr.conf
|
||||
msg_ok "Migrated Nginx Configuration"
|
||||
fi
|
||||
|
||||
|
||||
+5
-16
@@ -37,20 +37,9 @@ function update_script() {
|
||||
fi
|
||||
|
||||
if docker ps -a --format '{{.Image}}' | grep -q '^portainer/portainer-ce:latest$'; then
|
||||
msg_info "Updating Portainer"
|
||||
$STD docker pull portainer/portainer-ce:latest
|
||||
$STD docker stop portainer
|
||||
$STD docker rm portainer
|
||||
$STD docker volume create portainer_data >/dev/null 2>&1
|
||||
$STD docker run -d \
|
||||
-p 8000:8000 \
|
||||
-p 9443:9443 \
|
||||
--name=portainer \
|
||||
--restart=always \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v portainer_data:/data \
|
||||
portainer/portainer-ce:latest
|
||||
msg_ok "Updated Portainer"
|
||||
msg_warn "Portainer is now managed by a dedicated addon script and is no longer updated here."
|
||||
echo -e "${TAB}Update/migrate it with:"
|
||||
echo -e "${TAB}${TAB}${GN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
|
||||
fi
|
||||
|
||||
if docker ps -a --format '{{.Names}}' | grep -q '^portainer_agent$'; then
|
||||
@@ -77,5 +66,5 @@ description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} If you installed Portainer, access it at the following URL:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}https://${IP}:9443${CL}"
|
||||
echo -e "${INFO}${YW} Portainer is available as a separate addon. Install it with:${CL}"
|
||||
echo -e "${GATEWAY}${BGN}bash -c \"\$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)\"${CL}"
|
||||
|
||||
+5
-5
@@ -27,8 +27,8 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "26" ]]; then
|
||||
NODE_VERSION="26" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
fi
|
||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||
|
||||
@@ -37,9 +37,9 @@ function update_script() {
|
||||
systemctl stop docmost
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/docmost/.env \
|
||||
/opt/docmost/data
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
create_backup /opt/docmost/.env /opt/docmost/data
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
|
||||
@@ -0,0 +1,147 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: michelroegl-brunner | Co-Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://droppedneedle.com/ | Github: https://github.com/DroppedNeedle/DroppedNeedle
|
||||
|
||||
APP="DroppedNeedle"
|
||||
var_tags="${var_tags:-arr;media}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/droppedneedle && ! -d /opt/musicseerr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
MIGRATING=false
|
||||
[[ -d /opt/musicseerr ]] && MIGRATING=true
|
||||
|
||||
if [[ "$MIGRATING" == "true" ]] || check_for_gh_release "droppedneedle" "DroppedNeedle/DroppedNeedle"; then
|
||||
if [[ "$MIGRATING" == "true" ]]; then
|
||||
msg_warn "Migrating Musicseerr to DroppedNeedle"
|
||||
msg_info "Stopping Musicseerr Service"
|
||||
systemctl disable -q --now musicseerr
|
||||
msg_ok "Stopped Musicseerr Service"
|
||||
DATA_DIR="/opt/musicseerr/backend"
|
||||
else
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop droppedneedle
|
||||
msg_ok "Stopped Service"
|
||||
DATA_DIR="/opt/droppedneedle/backend"
|
||||
fi
|
||||
|
||||
create_backup "$DATA_DIR/config" "$DATA_DIR/cache"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "droppedneedle" "DroppedNeedle/DroppedNeedle" "tarball"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@10.33.0" setup_nodejs
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/droppedneedle/frontend
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
rm -rf node_modules build
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Updating Application"
|
||||
mkdir -p /opt/droppedneedle/backend/config /opt/droppedneedle/backend/cache
|
||||
$STD uv venv --clear /opt/droppedneedle/venv
|
||||
$STD uv pip install -r /opt/droppedneedle/backend/requirements.txt --python=/opt/droppedneedle/venv/bin/python
|
||||
rm -rf /opt/droppedneedle/backend/static
|
||||
cp -r /opt/droppedneedle/frontend/build /opt/droppedneedle/backend/static
|
||||
msg_ok "Updated Application"
|
||||
|
||||
restore_backup
|
||||
|
||||
if [[ "$MIGRATING" == "true" ]]; then
|
||||
msg_info "Migrating Musicseerr Data"
|
||||
rm -rf /opt/droppedneedle/backend/config /opt/droppedneedle/backend/cache
|
||||
cp -a /opt/musicseerr/backend/config /opt/droppedneedle/backend/config
|
||||
cp -a /opt/musicseerr/backend/cache /opt/droppedneedle/backend/cache
|
||||
msg_ok "Migrated Musicseerr Data"
|
||||
|
||||
msg_info "Replacing systemd Service"
|
||||
cat <<EOF >/etc/systemd/system/droppedneedle.service
|
||||
[Unit]
|
||||
Description=DroppedNeedle Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/droppedneedle/backend
|
||||
Environment=ROOT_APP_DIR=/opt/droppedneedle/backend
|
||||
Environment=PORT=8688
|
||||
# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>
|
||||
ExecStart=/opt/droppedneedle/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8688 --loop uvloop --http httptools --workers 1
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
rm -f /etc/systemd/system/musicseerr.service
|
||||
msg_ok "Replaced systemd Service"
|
||||
elif ! grep -q 'SLSKD' /etc/systemd/system/droppedneedle.service; then
|
||||
sed -i '\|=8688$|a# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>' /etc/systemd/system/droppedneedle.service
|
||||
fi
|
||||
|
||||
systemctl daemon-reload
|
||||
if [[ "$MIGRATING" == "true" ]]; then
|
||||
msg_info "Enabling DroppedNeedle Service"
|
||||
systemctl enable -q --now droppedneedle
|
||||
msg_ok "Enabled DroppedNeedle Service"
|
||||
|
||||
sed -i 's/musicseerr/droppedneedle/g' /bin/update
|
||||
rm -rf /opt/musicseerr
|
||||
|
||||
msg_info "Waiting up to 1min for backend to boot and retrieve Admin Username"
|
||||
for i in {1..30}; do
|
||||
username=$(/opt/droppedneedle/venv/bin/python -c 'import sqlite3; conn = sqlite3.connect("/opt/droppedneedle/backend/cache/library.db"); c = conn.cursor(); c.execute("SELECT username FROM auth_users WHERE role=\"admin\""); admin=c.fetchone(); print(admin[0]) if (admin and admin[0]) else None' 2>/dev/null || true)
|
||||
if [[ -n "$username" ]]; then
|
||||
break
|
||||
fi
|
||||
sleep 2
|
||||
done
|
||||
if [[ -n "$username" ]]; then
|
||||
msg_ok "Admin Username retrieved (Admin Username is: ${username})"
|
||||
else
|
||||
msg_warn "Failed to retrieve Admin Username. The backend might still be starting."
|
||||
fi
|
||||
msg_ok "Migrated successfully!"
|
||||
else
|
||||
msg_info "Starting Service"
|
||||
systemctl start droppedneedle
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
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 "${GATEWAY}${BGN}http://${IP}:8688${CL}"
|
||||
+1
-3
@@ -59,9 +59,7 @@ function update_script() {
|
||||
|
||||
envsubst </opt/feishin/settings.js.template >/etc/nginx/conf.d/settings.js
|
||||
envsubst '${PUBLIC_PATH}' </opt/feishin/ng.conf.template >/etc/nginx/sites-available/feishin
|
||||
ln -sf /etc/nginx/sites-available/feishin /etc/nginx/sites-enabled/feishin
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl restart nginx
|
||||
nginx_enable_site feishin
|
||||
msg_ok "Published Web Assets"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
|
||||
@@ -0,0 +1,93 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: esatbayhan
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.firecrawl.dev/
|
||||
|
||||
APP="Firecrawl"
|
||||
var_tags="${var_tags:-scraping;ai;crawler}"
|
||||
var_cpu="${var_cpu:-4}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-30}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-no}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/firecrawl/apps/api ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
ensure_dependencies build-essential
|
||||
|
||||
if check_for_gh_release "firecrawl" "firecrawl/firecrawl"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop firecrawl firecrawl-playwright
|
||||
msg_ok "Stopped Services"
|
||||
|
||||
create_backup /opt/firecrawl/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "firecrawl" "firecrawl/firecrawl" "tarball" "latest" "/opt/firecrawl"
|
||||
|
||||
restore_backup
|
||||
|
||||
FDB_VERSION="$(awk -F= '/^ARG FDB_VERSION=/{print $2; exit}' /opt/firecrawl/apps/api/Dockerfile)"
|
||||
if [[ -z "$FDB_VERSION" ]]; then
|
||||
msg_error "FDB_VERSION pin not found in upstream Dockerfile"
|
||||
exit 1
|
||||
fi
|
||||
if [[ "$(dpkg-query -W -f='${Version}' foundationdb-clients 2>/dev/null)" != "${FDB_VERSION}-"* ]]; then
|
||||
FDB_ARCH="$(get_system_arch)"
|
||||
[[ "$FDB_ARCH" == "arm64" ]] && FDB_ARCH="aarch64"
|
||||
fetch_and_deploy_gh_release "foundationdb-clients" "apple/foundationdb" "binary" "$FDB_VERSION" "/opt/foundationdb-clients" "foundationdb-clients_${FDB_VERSION}-1_${FDB_ARCH}.deb"
|
||||
fi
|
||||
|
||||
msg_info "Building Go Library"
|
||||
cd /opt/firecrawl/apps/api/sharedLibs/go-html-to-md
|
||||
$STD go build -o libhtml-to-markdown.so -buildmode=c-shared html-to-markdown.go
|
||||
msg_ok "Built Go Library"
|
||||
|
||||
msg_info "Building Firecrawl API"
|
||||
source "$HOME/.cargo/env"
|
||||
cd /opt/firecrawl/apps/api
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm build
|
||||
CI=true $STD pnpm prune --prod --ignore-scripts
|
||||
msg_ok "Built Firecrawl API"
|
||||
|
||||
msg_info "Building Playwright Service"
|
||||
cd /opt/firecrawl/apps/playwright-service-ts
|
||||
$STD npm install
|
||||
$STD npx playwright install chromium --with-deps
|
||||
$STD npm run build
|
||||
$STD npm prune --omit=dev
|
||||
msg_ok "Built Playwright Service"
|
||||
|
||||
msg_info "Starting Services"
|
||||
systemctl start firecrawl-playwright firecrawl
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
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 "${GATEWAY}${BGN}http://${IP}:3002${CL}"
|
||||
@@ -0,0 +1,6 @@
|
||||
____ ___ __ ____
|
||||
/ __ \_________ ____ ____ ___ ____/ / | / /__ ___ ____/ / /__
|
||||
/ / / / ___/ __ \/ __ \/ __ \/ _ \/ __ / |/ / _ \/ _ \/ __ / / _ \
|
||||
/ /_/ / / / /_/ / /_/ / /_/ / __/ /_/ / /| / __/ __/ /_/ / / __/
|
||||
/_____/_/ \____/ .___/ .___/\___/\__,_/_/ |_/\___/\___/\__,_/_/\___/
|
||||
/_/ /_/
|
||||
@@ -0,0 +1,6 @@
|
||||
_______ __
|
||||
/ ____(_)_______ ______________ __ __/ /
|
||||
/ /_ / / ___/ _ \/ ___/ ___/ __ `/ | /| / / /
|
||||
/ __/ / / / / __/ /__/ / / /_/ /| |/ |/ / /
|
||||
/_/ /_/_/ \___/\___/_/ \__,_/ |__/|__/_/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
____ __ _ ___ __ _ _____
|
||||
/ __ \/ /_ _____(_)___/ (_)___ _____ / / (_) _____ / ___/__ ______ _____
|
||||
/ / / / __ \/ ___/ / __ / / __ `/ __ \______/ / / / | / / _ \\__ \/ / / / __ \/ ___/
|
||||
/ /_/ / /_/ (__ ) / /_/ / / /_/ / / / /_____/ /___/ /| |/ / __/__/ / /_/ / / / / /__
|
||||
\____/_.___/____/_/\__,_/_/\__,_/_/ /_/ /_____/_/ |___/\___/____/\__, /_/ /_/\___/
|
||||
/____/
|
||||
@@ -0,0 +1,6 @@
|
||||
____ _ ____ __
|
||||
/ __ \____ ___ ____ (_) __ \____ __ __/ /____
|
||||
/ / / / __ `__ \/ __ \/ / /_/ / __ \/ / / / __/ _ \
|
||||
/ /_/ / / / / / / / / / / _, _/ /_/ / /_/ / /_/ __/
|
||||
\____/_/ /_/ /_/_/ /_/_/_/ |_|\____/\__,_/\__/\___/
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
____ ____
|
||||
/ __ \___ ____ _____ _/ __ \_________ _ __
|
||||
/ /_/ / _ \/ __ `/ __ `/ /_/ / ___/ __ \| |/_/
|
||||
/ ____/ __/ /_/ / /_/ / ____/ / / /_/ /> <
|
||||
/_/ \___/\__, /\__,_/_/ /_/ \____/_/|_|
|
||||
/____/
|
||||
+2
-1
@@ -110,7 +110,7 @@ EOF
|
||||
msg_ok "Image-processing libraries up to date"
|
||||
fi
|
||||
|
||||
RELEASE="v3.0.3"
|
||||
RELEASE="v3.1.0"
|
||||
if check_for_gh_release "Immich" "immich-app/immich" "${RELEASE}" "each release is tested individually before the version is updated. Please do not open issues for this"; then
|
||||
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
||||
msg_info "Enabling Maintenance Mode"
|
||||
@@ -310,6 +310,7 @@ EOF
|
||||
grep -rl /usr/src | xargs -n1 sed -i "s|\/usr/src|$INSTALL_DIR|g"
|
||||
grep -rlE "'/build'" | xargs -n1 sed -i "s|'/build'|'$APP_DIR'|g"
|
||||
sed -i "s@\"/cache\"@\"$INSTALL_DIR/cache\"@g" "$ML_DIR"/immich_ml/config.py
|
||||
[[ ! -f "$GEO_DIR/countryInfo.txt" ]] && curl_with_retry "https://download.geonames.org/export/dump/countryInfo.txt" "countryInfo.txt"
|
||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$APP_DIR"/upload
|
||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||
ln -s "$GEO_DIR" "$APP_DIR"
|
||||
|
||||
@@ -30,6 +30,25 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if ! dotnet --list-sdks 2>/dev/null | grep -q '^8\.'; then
|
||||
msg_info "Installing .NET SDK 8.0"
|
||||
if [[ "$(arch_resolve)" == "arm64" ]]; then
|
||||
curl -fsSL https://dot.net/v1/dotnet-install.sh -o /tmp/dotnet-install.sh
|
||||
$STD bash /tmp/dotnet-install.sh --channel 8.0 --install-dir /usr/lib/dotnet8
|
||||
ln -sf /usr/lib/dotnet8/dotnet /usr/bin/dotnet
|
||||
rm -f /tmp/dotnet-install.sh
|
||||
else
|
||||
setup_deb822_repo \
|
||||
"microsoft" \
|
||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
||||
"https://packages.microsoft.com/debian/13/prod/" \
|
||||
"trixie" \
|
||||
"main"
|
||||
$STD apt install -y dotnet-sdk-8.0
|
||||
fi
|
||||
msg_ok "Installed .NET SDK 8.0"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "immichframe" "immichFrame/ImmichFrame"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop immichframe
|
||||
|
||||
@@ -28,6 +28,9 @@ function update_script() {
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
ensure_dependencies ipmitool
|
||||
|
||||
if check_for_gh_release "librenms" "librenms/librenms"; then
|
||||
msg_info "Stopping Services"
|
||||
systemctl stop php8.4-fpm librenms-scheduler.timer
|
||||
|
||||
+6
-74
@@ -1,85 +1,17 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# Author: michelroegl-brunner | Co-Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://musicseerr.com/ | Github: https://github.com/HabiRabbu/Musicseerr
|
||||
|
||||
APP="MusicSeerr"
|
||||
var_tags="${var_tags:-arr;media}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-4096}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/musicseerr ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "musicseerr" "HabiRabbu/Musicseerr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop musicseerr
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp -a /opt/musicseerr/backend/config /opt/musicseerr_config_backup
|
||||
cp -a /opt/musicseerr/backend/cache /opt/musicseerr_cache_backup
|
||||
msg_ok "Backed up Data"
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "musicseerr" "HabiRabbu/Musicseerr" "tarball"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@10.33.0" setup_nodejs
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/musicseerr/frontend
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
rm -rf node_modules build
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Updating Application"
|
||||
mkdir -p /opt/musicseerr/backend/config /opt/musicseerr/backend/cache
|
||||
$STD uv venv --clear /opt/musicseerr/venv
|
||||
$STD uv pip install -r /opt/musicseerr/backend/requirements.txt --python=/opt/musicseerr/venv/bin/python
|
||||
rm -rf /opt/musicseerr/backend/static
|
||||
cp -r /opt/musicseerr/frontend/build /opt/musicseerr/backend/static
|
||||
msg_ok "Updated Application"
|
||||
|
||||
msg_info "Restoring Data"
|
||||
rm -rf /opt/musicseerr/backend/config /opt/musicseerr/backend/cache
|
||||
cp -a /opt/musicseerr_config_backup/. /opt/musicseerr/backend/config/
|
||||
cp -a /opt/musicseerr_cache_backup/. /opt/musicseerr/backend/cache/
|
||||
rm -rf /opt/musicseerr_config_backup /opt/musicseerr_cache_backup
|
||||
msg_ok "Restored Data"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start musicseerr
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
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 "${GATEWAY}${BGN}http://${IP}:8688${CL}"
|
||||
msg_error "This script is no longer available."
|
||||
msg_warn "MusicSeerr has been renamed to DroppedNeedle."
|
||||
msg_warn "Run the DroppedNeedle script to migrate an existing installation:"
|
||||
echo 'bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/droppedneedle.sh)"'
|
||||
exit 1
|
||||
|
||||
@@ -21,8 +21,6 @@ color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info "$APP"
|
||||
|
||||
msg_info "Updating Alpine OS"
|
||||
$STD apk -U upgrade
|
||||
msg_ok "System updated"
|
||||
@@ -30,10 +28,8 @@ function update_script() {
|
||||
msg_info "Pulling latest NPMplus container image"
|
||||
cd /opt
|
||||
$STD docker compose pull
|
||||
msg_info "Recreating container"
|
||||
$STD docker compose up -d
|
||||
msg_ok "Updated NPMplus container"
|
||||
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
@@ -0,0 +1,61 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/vrtmrz/obsidian-livesync | https://couchdb.apache.org/
|
||||
|
||||
APP="Obsidian-LiveSync"
|
||||
var_tags="${var_tags:-documents;notes}"
|
||||
var_cpu="${var_cpu:-1}"
|
||||
var_ram="${var_ram:-1024}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-yes}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -f /opt/couchdb/etc/local.d/obsidian-livesync.ini ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Stopping CouchDB"
|
||||
systemctl stop couchdb
|
||||
msg_ok "Stopped CouchDB"
|
||||
|
||||
create_backup /var/lib/couchdb /opt/couchdb/etc/local.d/obsidian-livesync.ini /opt/obsidian-livesync/.env
|
||||
|
||||
msg_info "Updating Container OS"
|
||||
$STD apt update
|
||||
$STD apt upgrade -y
|
||||
msg_ok "Updated Container OS"
|
||||
|
||||
systemctl stop couchdb
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting CouchDB"
|
||||
systemctl start couchdb
|
||||
msg_ok "Started CouchDB"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW}Configure the Self-hosted LiveSync plugin with the credentials in /opt/obsidian-livesync/.env${CL}"
|
||||
echo -e "${GATEWAY}${BGN}http://${IP}:5984/_utils/${CL}"
|
||||
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/diegosouzapw/OmniRoute
|
||||
|
||||
APP="OmniRoute"
|
||||
var_tags="${var_tags:-ai;gateway;llm}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-10}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-no}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/omniroute ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
msg_info "Checking for Updates"
|
||||
local LATEST
|
||||
LATEST=$(npm view omniroute version 2>/dev/null)
|
||||
if [[ -z "$LATEST" ]]; then
|
||||
msg_error "Could not determine latest OmniRoute version"
|
||||
exit
|
||||
fi
|
||||
if [[ "$LATEST" == "$(omniroute --version 2>/dev/null)" ]]; then
|
||||
msg_ok "Already up to date (${LATEST})"
|
||||
exit
|
||||
fi
|
||||
msg_ok "New version available: ${LATEST}"
|
||||
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop omniroute
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Updating OmniRoute to ${LATEST}"
|
||||
$STD npm install -g omniroute@latest
|
||||
msg_ok "Updated OmniRoute to ${LATEST}"
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start omniroute
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
exit
|
||||
}
|
||||
|
||||
start
|
||||
build_container
|
||||
description
|
||||
|
||||
msg_ok "Completed successfully!\n"
|
||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:20128${CL}"
|
||||
echo -e "${INFO}${YW} The admin password is stored in /opt/omniroute/.env (INITIAL_PASSWORD)${CL}"
|
||||
+1
-1
@@ -29,7 +29,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
NODE_VERSION="26" NODE_MODULE="corepack" setup_nodejs
|
||||
|
||||
if check_for_gh_release "outline" "outline/outline"; then
|
||||
msg_info "Stopping Services"
|
||||
|
||||
@@ -31,6 +31,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="26" setup_nodejs
|
||||
|
||||
if check_for_gh_release "OxiCloud" "DioCrafts/OxiCloud"; then
|
||||
msg_info "Stopping OxiCloud"
|
||||
systemctl stop oxicloud
|
||||
|
||||
+3
-2
@@ -34,8 +34,9 @@ function update_script() {
|
||||
if [[ "$CURRENT_PHP" != "8.3" ]]; then
|
||||
PHP_VERSION="8.3" PHP_FPM="YES" setup_php
|
||||
setup_composer
|
||||
sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
|
||||
$STD systemctl reload nginx
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
sed -i "s|fastcgi_pass unix:.*|fastcgi_pass unix:${PHP_SOCK};|" /etc/nginx/sites-available/paymenter.conf
|
||||
nginx_enable_site paymenter.conf
|
||||
fi
|
||||
|
||||
if check_for_gh_release "paymenter" "paymenter/paymenter"; then
|
||||
|
||||
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: MickLesk (CanbiZ)
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://github.com/PegaProx/project-pegaprox
|
||||
|
||||
APP="PegaProx"
|
||||
var_tags="${var_tags:-proxmox;management}"
|
||||
var_cpu="${var_cpu:-2}"
|
||||
var_ram="${var_ram:-2048}"
|
||||
var_disk="${var_disk:-8}"
|
||||
var_os="${var_os:-debian}"
|
||||
var_version="${var_version:-13}"
|
||||
var_arm64="${var_arm64:-no}"
|
||||
var_unprivileged="${var_unprivileged:-1}"
|
||||
|
||||
header_info "$APP"
|
||||
variables
|
||||
color
|
||||
catch_errors
|
||||
|
||||
function update_script() {
|
||||
header_info
|
||||
check_container_storage
|
||||
check_container_resources
|
||||
|
||||
if [[ ! -d /opt/pegaprox ]]; then
|
||||
msg_error "No ${APP} Installation Found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
if check_for_gh_release "pegaprox" "PegaProx/project-pegaprox"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop pegaprox
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
create_backup /opt/pegaprox/config /etc/pegaprox/secret.key
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "pegaprox" "PegaProx/project-pegaprox" "tarball"
|
||||
|
||||
msg_info "Updating Python Environment"
|
||||
$STD uv venv --python 3.12 /opt/pegaprox/venv
|
||||
$STD uv pip install --python /opt/pegaprox/venv/bin/python -r /opt/pegaprox/requirements.txt
|
||||
msg_ok "Updated Python Environment"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Starting Service"
|
||||
systemctl start pegaprox
|
||||
msg_ok "Started Service"
|
||||
msg_ok "Updated successfully!"
|
||||
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}https://${IP}:5000${CL}"
|
||||
@@ -28,6 +28,9 @@ function update_script() {
|
||||
msg_error "No ${APP} installation found!"
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" NODE_MODULE="playactor" setup_nodejs
|
||||
|
||||
if check_for_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt"; then
|
||||
msg_info "Stopping service"
|
||||
systemctl stop ps5-mqtt
|
||||
|
||||
+2
-2
@@ -62,9 +62,9 @@ function update_script() {
|
||||
msg_ok "Updated Configuration"
|
||||
|
||||
msg_info "Starting Services"
|
||||
$STD nginx -t
|
||||
systemctl daemon-reload
|
||||
systemctl start nginx rackula-api
|
||||
nginx_enable_site rackula
|
||||
systemctl start rackula-api
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
|
||||
+11
-1
@@ -30,6 +30,12 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if [[ ! -x /usr/bin/7zz || ! -x /usr/bin/bsdtar ]]; then
|
||||
msg_info "Installing Archive Tools"
|
||||
$STD apt install -y 7zip-standalone libarchive-tools
|
||||
msg_ok "Installed Archive Tools"
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "romm" "rommapp/romm"; then
|
||||
@@ -44,6 +50,10 @@ function update_script() {
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "romm" "rommapp/romm" "tarball" "latest" "/opt/romm"
|
||||
|
||||
find /opt/romm/backend/alembic/versions -maxdepth 1 -type f -name '1.*.py' -delete 2>/dev/null || true
|
||||
find /opt/romm/backend/alembic/versions -maxdepth 1 -type f -name '2.0.0_.py' -delete 2>/dev/null || true
|
||||
find /opt/romm/backend -name '__pycache__' -type d -prune -exec rm -rf {} + 2>/dev/null || true
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Updating ROMM"
|
||||
@@ -75,7 +85,7 @@ function update_script() {
|
||||
systemctl reload angie
|
||||
elif [[ -f /etc/nginx/sites-available/romm ]]; then
|
||||
sed -i "s|alias .*/library/;|alias ${ROMM_BASE}/library/;|" /etc/nginx/sites-available/romm
|
||||
systemctl reload nginx
|
||||
nginx_enable_site romm
|
||||
fi
|
||||
msg_ok "Updated ROMM"
|
||||
|
||||
|
||||
+2
-1
@@ -93,7 +93,8 @@ EOF
|
||||
msg_ok "Refreshed SparkyFitness Service"
|
||||
|
||||
msg_info "Starting Services"
|
||||
$STD systemctl start sparkyfitness-server nginx
|
||||
$STD systemctl start sparkyfitness-server
|
||||
nginx_enable_site sparkyfitness
|
||||
msg_ok "Started Services"
|
||||
msg_ok "Updated successfully!"
|
||||
fi
|
||||
|
||||
+3
-5
@@ -35,18 +35,16 @@ function update_script() {
|
||||
systemctl stop split-pro
|
||||
msg_ok "Stopped Service"
|
||||
|
||||
msg_info "Backing up Data"
|
||||
cp /opt/split-pro/.env /opt/split-pro.env
|
||||
msg_ok "Backed up Data"
|
||||
create_backup /opt/split-pro/.env
|
||||
|
||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "split-pro" "oss-apps/split-pro" "tarball"
|
||||
|
||||
restore_backup
|
||||
|
||||
msg_info "Building Application"
|
||||
cd /opt/split-pro
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm build
|
||||
cp /opt/split-pro.env /opt/split-pro/.env
|
||||
rm -f /opt/split-pro.env
|
||||
ln -sf /opt/split-pro_data/uploads /opt/split-pro/uploads
|
||||
$STD pnpm exec prisma migrate deploy
|
||||
msg_ok "Built Application"
|
||||
|
||||
@@ -30,6 +30,8 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
|
||||
if check_for_gh_release "sync-in" "Sync-in/server"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop sync-in
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
NODE_VERSION="24" setup_nodejs
|
||||
NODE_VERSION="26" setup_nodejs
|
||||
|
||||
if check_for_gh_tag "guacd" "apache/guacamole-server"; then
|
||||
msg_info "Stopping guacd"
|
||||
|
||||
@@ -29,6 +29,18 @@ function update_script() {
|
||||
exit
|
||||
fi
|
||||
|
||||
if grep -qs "packages.microsoft.com/debian/12" /etc/apt/sources.list.d/microsoft*.sources; then
|
||||
msg_info "Migrating Microsoft Repository to Debian 13"
|
||||
setup_deb822_repo \
|
||||
"microsoft" \
|
||||
"https://packages.microsoft.com/keys/microsoft-2025.asc" \
|
||||
"https://packages.microsoft.com/debian/13/prod/" \
|
||||
"trixie" \
|
||||
"main"
|
||||
rm -f /usr/share/keyrings/microsoft-prod.gpg
|
||||
msg_ok "Migrated Microsoft Repository to Debian 13"
|
||||
fi
|
||||
|
||||
if check_for_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr"; then
|
||||
msg_info "Stopping Service"
|
||||
systemctl stop umlautadaptarr
|
||||
|
||||
@@ -49,6 +49,7 @@ chmod -R 755 /opt/2fauth
|
||||
msg_ok "Setup 2fauth"
|
||||
|
||||
msg_info "Configure Service"
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/nginx/conf.d/2fauth.conf
|
||||
server {
|
||||
listen 80;
|
||||
@@ -67,7 +68,7 @@ server {
|
||||
error_page 404 /index.php;
|
||||
|
||||
location ~ \.php\$ {
|
||||
fastcgi_pass unix:/var/run/php/php${PHP_VERSION}-fpm.sock;
|
||||
fastcgi_pass unix:${PHP_SOCK};
|
||||
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
}
|
||||
|
||||
@@ -207,9 +207,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/affine.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
nginx_enable_site affine.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -26,23 +26,21 @@ msg_ok "Installed Docker"
|
||||
get_latest_release() {
|
||||
curl -fsSL https://api.github.com/repos/"$1"/releases/latest | grep '"tag_name":' | cut -d'"' -f4
|
||||
}
|
||||
PORTAINER_LATEST_VERSION=$(get_latest_release "portainer/portainer")
|
||||
DOCKER_COMPOSE_LATEST_VERSION=$(get_latest_release "docker/compose")
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_release "portainer/agent")
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Portainer? <y/N> " prompt
|
||||
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer $PORTAINER_LATEST_VERSION"
|
||||
docker volume create portainer_data >/dev/null
|
||||
$STD docker run -d \
|
||||
-p 8000:8000 \
|
||||
-p 9443:9443 \
|
||||
--name=portainer \
|
||||
--restart=always \
|
||||
-v /var/run/docker.sock:/var/run/docker.sock \
|
||||
-v portainer_data:/data \
|
||||
portainer/portainer-ce:latest
|
||||
msg_ok "Installed Portainer $PORTAINER_LATEST_VERSION"
|
||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
||||
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
|
||||
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
fi
|
||||
|
||||
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
|
||||
else
|
||||
read -r -p "${TAB3}Would you like to add the Portainer Agent? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
@@ -57,21 +55,12 @@ else
|
||||
msg_ok "Installed Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||
fi
|
||||
fi
|
||||
read -r -p "${TAB3}Would you like to add Docker Compose? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
|
||||
mkdir -p "$DOCKER_CONFIG"/cli-plugins
|
||||
curl -fsSL https://github.com/docker/compose/releases/download/"$DOCKER_COMPOSE_LATEST_VERSION"/docker-compose-linux-$(arch_resolve "x86_64" "aarch64") -o ~/.docker/cli-plugins/docker-compose
|
||||
chmod +x "$DOCKER_CONFIG"/cli-plugins/docker-compose
|
||||
msg_ok "Installed Docker Compose $DOCKER_COMPOSE_LATEST_VERSION"
|
||||
fi
|
||||
|
||||
read -r -p "${TAB3}Would you like to expose the Docker TCP socket? <y/N> " prompt
|
||||
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Exposing Docker TCP socket"
|
||||
$STD mkdir -p /etc/docker
|
||||
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' > /etc/docker/daemon.json
|
||||
$STD echo '{ "hosts": ["unix:///var/run/docker.sock", "tcp://0.0.0.0:2375"] }' >/etc/docker/daemon.json
|
||||
$STD rc-service docker restart
|
||||
msg_ok "Exposed Docker TCP socket at tcp://+:2375"
|
||||
fi
|
||||
|
||||
@@ -122,9 +122,18 @@ export UV_NO_BINARY_PACKAGE="cryptography lxml python-kadmin-rs xmlsec"
|
||||
export UV_COMPILE_BYTECODE="1"
|
||||
export UV_LINK_MODE="copy"
|
||||
export UV_NATIVE_TLS="1"
|
||||
export UV_HTTP_TIMEOUT="300"
|
||||
export UV_PYTHON_INSTALL_DIR="/usr/local/bin"
|
||||
cd /opt/authentik
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
for attempt in 1 2 3; do
|
||||
if [[ $attempt -eq 3 ]]; then
|
||||
$STD uv sync --frozen --no-install-project --no-dev
|
||||
break
|
||||
fi
|
||||
$STD uv sync --frozen --no-install-project --no-dev && break
|
||||
msg_warn "uv sync attempt $attempt failed, retrying..."
|
||||
sleep $((attempt * 15))
|
||||
done
|
||||
cp /opt/authentik/authentik/sources/kerberos/krb5.conf /etc/krb5.conf
|
||||
msg_ok "Setup python server"
|
||||
|
||||
|
||||
@@ -89,10 +89,7 @@ server {
|
||||
}
|
||||
EOF
|
||||
|
||||
ln -sf /etc/nginx/sites-available/babybuddy /etc/nginx/sites-enabled/babybuddy
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
service nginx reload
|
||||
nginx_enable_site babybuddy
|
||||
msg_ok "Configured NGINX"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -73,6 +73,7 @@ $STD npm run build
|
||||
msg_ok "Installed Salt Rim"
|
||||
|
||||
msg_info "Creating Service"
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/nginx/sites-available/barassistant.conf
|
||||
server {
|
||||
listen 80 default_server;
|
||||
@@ -126,7 +127,7 @@ server {
|
||||
error_page 404 /index.php;
|
||||
|
||||
location ~ ^/index\.php(/|$) {
|
||||
fastcgi_pass unix:/var/run/php/php$PHPVER-fpm.sock;
|
||||
fastcgi_pass unix:${PHP_SOCK};
|
||||
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
fastcgi_hide_header X-Powered-By;
|
||||
@@ -148,9 +149,7 @@ server {
|
||||
}
|
||||
EOF
|
||||
|
||||
ln -s /etc/nginx/sites-available/barassistant.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site barassistant.conf
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -22,6 +22,7 @@ chmod 775 /opt/bazarr /var/lib/bazarr/
|
||||
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
||||
$STD uv pip install -r /opt/bazarr/requirements.txt --python /opt/bazarr/venv/bin/python3
|
||||
$STD uv pip install psycopg2-binary --python /opt/bazarr/venv/bin/python3
|
||||
msg_ok "Installed Bazarr"
|
||||
|
||||
msg_info "Creating Service"
|
||||
@@ -36,7 +37,7 @@ UMask=0002
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Type=simple
|
||||
ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py
|
||||
ExecStart=/opt/bazarr/venv/bin/python3 /opt/bazarr/bazarr.py -c /var/lib/bazarr
|
||||
KillSignal=SIGINT
|
||||
TimeoutStopSec=20
|
||||
SyslogIdentifier=bazarr
|
||||
|
||||
@@ -60,7 +60,7 @@ LimitNOFILE=65536
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now bichon
|
||||
msg_info "Created Service"
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
|
||||
@@ -14,7 +14,9 @@ network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y libusb-1.0-0
|
||||
$STD apt install -y \
|
||||
libusb-1.0-0 \
|
||||
libatomic1
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Fetching Latest Bitfocus Companion Release"
|
||||
|
||||
@@ -122,9 +122,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/checkmate /etc/nginx/sites-enabled/checkmate
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site checkmate
|
||||
msg_ok "Configured Nginx Reverse Proxy"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -16,6 +16,7 @@ update_os
|
||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||
|
||||
msg_info "Creating Service"
|
||||
mkdir -p /etc/cleanuparr /var/log/cleanuparr
|
||||
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
||||
[Unit]
|
||||
Description=Cleanuparr Daemon
|
||||
@@ -29,7 +30,8 @@ ExecStart=/opt/cleanuparr/Cleanuparr
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Environment="PORT=11011"
|
||||
Environment="CONFIG_DIR=/opt/cleanuparr/config"
|
||||
Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"
|
||||
Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -13,8 +13,6 @@ setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
setup_go
|
||||
|
||||
var_cf_api_token="default"
|
||||
read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
|
||||
|
||||
@@ -53,23 +51,50 @@ while true; do
|
||||
done
|
||||
msg_ok "Configured Application"
|
||||
|
||||
setup_go
|
||||
fetch_and_deploy_gh_release "cloudflare-ddns" "favonia/cloudflare-ddns" "tarball"
|
||||
|
||||
msg_info "Building ${APPLICATION}"
|
||||
cd /opt/cloudflare-ddns
|
||||
export CGO_ENABLED=0 GOOS=linux
|
||||
$STD go build -trimpath -ldflags="-s -w" -o /usr/local/bin/ddns ./cmd/ddns
|
||||
msg_ok "Built ${APPLICATION}"
|
||||
|
||||
# The binary is statically linked (CGO_ENABLED=0), so Go is only a build-time
|
||||
# dependency. Removing it keeps the container small; update_script reinstalls it
|
||||
# via setup_go when a rebuild is needed.
|
||||
msg_info "Removing Build Dependencies"
|
||||
rm -rf /usr/local/go /usr/local/bin/go /usr/local/bin/gofmt /root/go /root/.cache/go-build /opt/cloudflare-ddns
|
||||
msg_ok "Removed Build Dependencies"
|
||||
|
||||
msg_info "Setting up service"
|
||||
mkdir -p /root/go
|
||||
useradd --system --no-create-home --shell /usr/sbin/nologin cloudflare-ddns 2>/dev/null || true
|
||||
cat <<EOF >/etc/cloudflare-ddns.env
|
||||
CLOUDFLARE_API_TOKEN=${var_cf_api_token}
|
||||
DOMAINS=${var_cf_domains}
|
||||
PROXIED=${var_cf_proxied}
|
||||
IP6_PROVIDER=${var_cf_ip6_provider}
|
||||
EOF
|
||||
chown root:root /etc/cloudflare-ddns.env
|
||||
chmod 600 /etc/cloudflare-ddns.env
|
||||
cat <<EOF >/etc/systemd/system/cloudflare-ddns.service
|
||||
[Unit]
|
||||
Description=Cloudflare DDNS Service (Go run)
|
||||
After=network.target
|
||||
Description=Cloudflare DDNS Service
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Environment="CLOUDFLARE_API_TOKEN=${var_cf_api_token}"
|
||||
Environment="DOMAINS=${var_cf_domains}"
|
||||
Environment="PROXIED=${var_cf_proxied}"
|
||||
Environment="IP6_PROVIDER=${var_cf_ip6_provider}"
|
||||
Environment="GOPATH=/root/go"
|
||||
Environment="GOCACHE=/tmp/go-build"
|
||||
ExecStart=/usr/local/bin/go run github.com/favonia/cloudflare-ddns/cmd/ddns@latest
|
||||
Type=simple
|
||||
User=cloudflare-ddns
|
||||
Group=cloudflare-ddns
|
||||
EnvironmentFile=/etc/cloudflare-ddns.env
|
||||
ExecStart=/usr/local/bin/ddns
|
||||
Restart=always
|
||||
RestartSec=300
|
||||
NoNewPrivileges=true
|
||||
ProtectSystem=strict
|
||||
ProtectHome=true
|
||||
PrivateTmp=true
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
||||
@@ -185,11 +185,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/databasus /etc/nginx/sites-enabled/databasus
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
$STD systemctl enable -q --now nginx
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site databasus
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -174,9 +174,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/dawarich.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
nginx_enable_site dawarich.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -207,10 +207,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/discourse
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl enable --now nginx
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site discourse
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -139,9 +139,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/dispatcharr.conf /etc/nginx/sites-enabled/dispatcharr.conf
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl restart nginx
|
||||
nginx_enable_site dispatcharr.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Services"
|
||||
@@ -176,7 +174,7 @@ cd /opt/dispatcharr
|
||||
set -a
|
||||
source .env
|
||||
set +a
|
||||
exec uv run celery -A dispatcharr worker -l info -c 4
|
||||
exec uv run celery -A dispatcharr worker -l info -c 4 -Q celery,recordings,dvr,default
|
||||
EOF
|
||||
chmod +x /opt/dispatcharr/start-celery.sh
|
||||
|
||||
|
||||
@@ -15,11 +15,11 @@ update_os
|
||||
|
||||
PORTAINER_AGENT_LATEST_VERSION=$(get_latest_github_release "portainer/agent")
|
||||
|
||||
read -r -p "${TAB3}Would you like to add Portainer (UI)? <y/N> " prompt
|
||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||
DOCKER_PORTAINER="true" setup_docker
|
||||
setup_docker
|
||||
|
||||
if prompt_confirm "${TAB3}Would you like to install Portainer (UI) via the community-scripts addon?" "n" 60; then
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
|
||||
else
|
||||
setup_docker
|
||||
read -r -p "${TAB3}Would you like to install the Portainer Agent (for remote management)? <y/N> " prompt_agent
|
||||
if [[ ${prompt_agent,,} =~ ^(y|yes)$ ]]; then
|
||||
msg_info "Installing Portainer Agent $PORTAINER_AGENT_LATEST_VERSION"
|
||||
|
||||
@@ -19,7 +19,7 @@ $STD apt install -y \
|
||||
make
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
NODE_VERSION="26" NODE_MODULE="pnpm@$(curl -s https://raw.githubusercontent.com/docmost/docmost/main/package.json | jq -r '.packageManager | split("@")[1]')" setup_nodejs
|
||||
PG_VERSION="16" setup_postgresql
|
||||
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
|
||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: michelroegl-brunner | Co-Author: vhsdream
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://droppedneedle.com/ | Github: https://github.com/DroppedNeedle/DroppedNeedle
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "droppedneedle" "DroppedNeedle/DroppedNeedle" "tarball"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@10.33.0" setup_nodejs
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/droppedneedle/frontend
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Setting up Application"
|
||||
mkdir -p /opt/droppedneedle/backend/config /opt/droppedneedle/backend/cache
|
||||
$STD uv venv /opt/droppedneedle/venv
|
||||
$STD uv pip install -r /opt/droppedneedle/backend/requirements.txt --python=/opt/droppedneedle/venv/bin/python
|
||||
rm -rf /opt/droppedneedle/backend/static
|
||||
cp -r /opt/droppedneedle/frontend/build /opt/droppedneedle/backend/static
|
||||
msg_ok "Set up Application"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/droppedneedle.service
|
||||
[Unit]
|
||||
Description=DroppedNeedle Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/droppedneedle/backend
|
||||
Environment=ROOT_APP_DIR=/opt/droppedneedle/backend
|
||||
Environment=PORT=8688
|
||||
# Environment=SLSKD_DOWNLOADS_PATH=<path-to-slskd-downloads>
|
||||
ExecStart=/opt/droppedneedle/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8688 --loop uvloop --http httptools --workers 1
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now droppedneedle
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -46,11 +46,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/espconnect /etc/nginx/sites-enabled/espconnect
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
systemctl enable -q nginx
|
||||
systemctl restart nginx
|
||||
nginx_enable_site espconnect
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -108,9 +108,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/excalidash /etc/nginx/sites-enabled/excalidash
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl reload nginx
|
||||
nginx_enable_site excalidash
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Service"
|
||||
|
||||
@@ -57,10 +57,7 @@ set +a
|
||||
envsubst </opt/feishin/settings.js.template >/etc/nginx/conf.d/settings.js
|
||||
envsubst '${PUBLIC_PATH}' </opt/feishin/ng.conf.template >/etc/nginx/sites-available/feishin
|
||||
|
||||
ln -sf /etc/nginx/sites-available/feishin /etc/nginx/sites-enabled/feishin
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
systemctl reload nginx
|
||||
nginx_enable_site feishin
|
||||
msg_ok "Published Web Assets"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: esatbayhan
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://www.firecrawl.dev/
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
msg_info "Installing Dependencies"
|
||||
$STD apt install -y \
|
||||
build-essential \
|
||||
cmake \
|
||||
git \
|
||||
nftables \
|
||||
pkg-config \
|
||||
procps \
|
||||
python3 \
|
||||
rabbitmq-server \
|
||||
redis-server
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
NODE_VERSION="22" NODE_MODULE="pnpm@11.4.0" setup_nodejs
|
||||
setup_go
|
||||
RUST_PROFILE="minimal" setup_rust
|
||||
PG_VERSION="17" PG_MODULES="cron" setup_postgresql
|
||||
|
||||
fetch_and_deploy_gh_release "firecrawl" "firecrawl/firecrawl" "tarball" "latest" "/opt/firecrawl"
|
||||
|
||||
msg_info "Configuring FDB"
|
||||
FDB_VERSION="$(awk -F= '/^ARG FDB_VERSION=/{print $2; exit}' /opt/firecrawl/apps/api/Dockerfile)"
|
||||
if [[ -z "$FDB_VERSION" ]]; then
|
||||
msg_error "FDB_VERSION pin not found in upstream Dockerfile"
|
||||
exit 1
|
||||
fi
|
||||
FDB_ARCH="$(get_system_arch)"
|
||||
[[ "$FDB_ARCH" == "arm64" ]] && FDB_ARCH="aarch64"
|
||||
fetch_and_deploy_gh_release "foundationdb-clients" "apple/foundationdb" "binary" "$FDB_VERSION" "/opt/foundationdb-clients" "foundationdb-clients_${FDB_VERSION}-1_${FDB_ARCH}.deb"
|
||||
msg_ok "Configured FDB"
|
||||
|
||||
PG_DB_NAME="firecrawl" PG_DB_USER="firecrawl" PG_DB_EXTENSIONS="pgcrypto,pg_cron" PG_DB_CREDS_FILE="/dev/null" setup_postgresql_db
|
||||
|
||||
msg_info "Configuring pg_cron"
|
||||
$STD runuser -u postgres -- psql -c "ALTER SYSTEM SET cron.use_background_workers = 'on';"
|
||||
systemctl restart postgresql
|
||||
until runuser -u postgres -- psql -c "SELECT 1;" &>/dev/null; do sleep 1; done
|
||||
msg_ok "Configured pg_cron"
|
||||
|
||||
msg_info "Configuring RabbitMQ"
|
||||
systemctl enable -q --now rabbitmq-server
|
||||
until rabbitmqctl status &>/dev/null; do sleep 1; done
|
||||
RABBITMQ_PASSWORD="$(openssl rand -base64 32 | tr -dc 'a-zA-Z0-9' | head -c24)"
|
||||
$STD rabbitmqctl add_user firecrawl "$RABBITMQ_PASSWORD"
|
||||
$STD rabbitmqctl set_permissions -p / firecrawl ".*" ".*" ".*"
|
||||
msg_ok "Configured RabbitMQ"
|
||||
|
||||
systemctl enable -q --now redis-server
|
||||
|
||||
msg_info "Importing NuQ Schema"
|
||||
$STD runuser -u postgres -- psql -d firecrawl -f /opt/firecrawl/apps/nuq-postgres/nuq.sql
|
||||
$STD runuser -u postgres -- psql -d firecrawl -c "GRANT USAGE ON SCHEMA nuq TO firecrawl;"
|
||||
$STD runuser -u postgres -- psql -d firecrawl -c "GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA nuq TO firecrawl;"
|
||||
$STD runuser -u postgres -- psql -d firecrawl -c "GRANT USAGE, SELECT, UPDATE ON ALL SEQUENCES IN SCHEMA nuq TO firecrawl;"
|
||||
$STD runuser -u postgres -- psql -d firecrawl -c "ALTER DEFAULT PRIVILEGES IN SCHEMA nuq GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO firecrawl;"
|
||||
$STD runuser -u postgres -- psql -d firecrawl -c "ALTER DEFAULT PRIVILEGES IN SCHEMA nuq GRANT USAGE, SELECT, UPDATE ON SEQUENCES TO firecrawl;"
|
||||
msg_ok "Imported NuQ Schema"
|
||||
|
||||
msg_info "Generating Configuration"
|
||||
cat <<EOF >/opt/firecrawl/.env
|
||||
ENV=local
|
||||
HOST=0.0.0.0
|
||||
PORT=3002
|
||||
USE_DB_AUTHENTICATION=false
|
||||
BULL_AUTH_KEY=$(openssl rand -hex 32)
|
||||
JWT_SECRET=$(openssl rand -hex 32)
|
||||
|
||||
REDIS_URL=redis://127.0.0.1:6379
|
||||
REDIS_RATE_LIMIT_URL=redis://127.0.0.1:6379
|
||||
|
||||
PLAYWRIGHT_MICROSERVICE_URL=http://127.0.0.1:3000/scrape
|
||||
|
||||
POSTGRES_HOST=127.0.0.1
|
||||
POSTGRES_PORT=5432
|
||||
POSTGRES_USER=${PG_DB_USER}
|
||||
POSTGRES_PASSWORD=${PG_DB_PASS}
|
||||
POSTGRES_DB=${PG_DB_NAME}
|
||||
NUQ_DATABASE_URL=postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}
|
||||
NUQ_DATABASE_URL_LISTEN=postgresql://${PG_DB_USER}:${PG_DB_PASS}@127.0.0.1:5432/${PG_DB_NAME}
|
||||
|
||||
NUQ_BACKEND=pg
|
||||
NUQ_RABBITMQ_URL=amqp://firecrawl:${RABBITMQ_PASSWORD}@127.0.0.1:5672/%2f
|
||||
|
||||
WORKER_PORT=3005
|
||||
EXTRACT_WORKER_PORT=3004
|
||||
NUQ_WORKER_START_PORT=3006
|
||||
NUQ_WORKER_COUNT=5
|
||||
NUQ_PREFETCH_WORKER_PORT=3011
|
||||
NUQ_RECONCILER_WORKER_PORT=3012
|
||||
HARNESS_STARTUP_TIMEOUT_MS=60000
|
||||
|
||||
LOGGING_LEVEL=INFO
|
||||
MAX_CONCURRENT_PAGES=10
|
||||
ALLOW_LOCAL_WEBHOOKS=false
|
||||
BLOCK_MEDIA=false
|
||||
|
||||
OPENAI_API_KEY=
|
||||
OPENAI_BASE_URL=
|
||||
OLLAMA_BASE_URL=
|
||||
MODEL_NAME=
|
||||
MODEL_EMBEDDING_NAME=
|
||||
SEARXNG_ENDPOINT=
|
||||
SEARXNG_ENGINES=
|
||||
SEARXNG_CATEGORIES=
|
||||
PROXY_SERVER=
|
||||
PROXY_USERNAME=
|
||||
PROXY_PASSWORD=
|
||||
SELF_HOSTED_WEBHOOK_URL=
|
||||
SELF_HOSTED_WEBHOOK_HMAC_SECRET=
|
||||
EOF
|
||||
chmod 600 /opt/firecrawl/.env
|
||||
msg_ok "Generated Configuration"
|
||||
|
||||
msg_info "Building Go Library"
|
||||
cd /opt/firecrawl/apps/api/sharedLibs/go-html-to-md
|
||||
$STD go build -o libhtml-to-markdown.so -buildmode=c-shared html-to-markdown.go
|
||||
msg_ok "Built Go Library"
|
||||
|
||||
msg_info "Building Firecrawl API"
|
||||
cd /opt/firecrawl/apps/api
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm build
|
||||
CI=true $STD pnpm prune --prod --ignore-scripts
|
||||
msg_ok "Built Firecrawl API"
|
||||
|
||||
msg_info "Building Playwright Service"
|
||||
cd /opt/firecrawl/apps/playwright-service-ts
|
||||
$STD npm install
|
||||
$STD npx playwright install chromium --with-deps
|
||||
$STD npm run build
|
||||
$STD npm prune --omit=dev
|
||||
msg_ok "Built Playwright Service"
|
||||
|
||||
msg_info "Creating Services"
|
||||
cat <<EOF >/etc/systemd/system/firecrawl-playwright.service
|
||||
[Unit]
|
||||
Description=Firecrawl Playwright Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/firecrawl/apps/playwright-service-ts
|
||||
EnvironmentFile=/opt/firecrawl/.env
|
||||
Environment=PORT=3000
|
||||
# /opt/firecrawl/.env also contains the API PORT=3002; force Playwright's private port here.
|
||||
ExecStart=/usr/bin/env PORT=3000 /usr/bin/node /opt/firecrawl/apps/playwright-service-ts/dist/api.js
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
cat <<EOF >/etc/systemd/system/firecrawl.service
|
||||
[Unit]
|
||||
Description=Firecrawl API and Workers
|
||||
After=network.target postgresql.service redis-server.service rabbitmq-server.service firecrawl-playwright.service
|
||||
Requires=postgresql.service redis-server.service rabbitmq-server.service firecrawl-playwright.service
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/firecrawl/apps/api
|
||||
EnvironmentFile=/opt/firecrawl/.env
|
||||
Environment=NODE_ENV=production
|
||||
# Upstream uses --start-docker to skip install/build and start compiled node dist entrypoints.
|
||||
ExecStart=/usr/bin/node /opt/firecrawl/apps/api/dist/src/harness.js --start-docker
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now firecrawl-playwright
|
||||
systemctl enable -q --now firecrawl
|
||||
msg_ok "Created Services"
|
||||
|
||||
msg_info "Configuring Firewall"
|
||||
cat <<'EOF' >/etc/nftables.conf
|
||||
#!/usr/sbin/nft -f
|
||||
|
||||
flush ruleset
|
||||
|
||||
table inet firecrawl_filter {
|
||||
chain input {
|
||||
type filter hook input priority 0; policy drop;
|
||||
|
||||
iif "lo" accept
|
||||
ct state established,related accept
|
||||
|
||||
ip protocol icmp accept
|
||||
ip6 nexthdr icmpv6 accept
|
||||
udp sport 67 udp dport 68 accept
|
||||
udp sport 547 udp dport 546 accept
|
||||
|
||||
tcp dport { 22, 3002 } accept
|
||||
}
|
||||
|
||||
chain forward {
|
||||
type filter hook forward priority 0; policy drop;
|
||||
}
|
||||
|
||||
chain output {
|
||||
type filter hook output priority 0; policy accept;
|
||||
}
|
||||
}
|
||||
EOF
|
||||
systemctl enable -q nftables
|
||||
systemctl restart nftables
|
||||
msg_ok "Configured Firewall"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
@@ -178,10 +178,7 @@ server {
|
||||
error_log /var/log/geopulse/nginx/error.log;
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/geopulse.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
systemctl enable -q --now nginx
|
||||
systemctl reload nginx
|
||||
nginx_enable_site geopulse.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Creating Admin Helper"
|
||||
|
||||
@@ -26,9 +26,7 @@ chown -R www-data:www-data /opt/grav
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
PHP_FPM_SOCK=$(find /run/php -maxdepth 1 -name "php*-fpm.sock" -type s | sort -V | tail -1)
|
||||
unlink /etc/nginx/sites-enabled/default
|
||||
rm -f /etc/nginx/sites-available/default
|
||||
PHP_FPM_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/nginx/sites-available/grav
|
||||
server {
|
||||
listen 80;
|
||||
@@ -99,11 +97,8 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/grav /etc/nginx/sites-enabled/grav
|
||||
systemctl enable -q --now php${PHP_VER}-fpm
|
||||
$STD nginx -t
|
||||
systemctl enable -q --now nginx
|
||||
$STD nginx -s reload
|
||||
nginx_enable_site grav
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -32,7 +32,8 @@ get_latest_release() {
|
||||
|
||||
CORE_LATEST_VERSION=$(get_latest_release "home-assistant/core")
|
||||
|
||||
DOCKER_PORTAINER="true" setup_docker
|
||||
setup_docker
|
||||
bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/tools/addon/portainer.sh)" <<<"y"
|
||||
|
||||
msg_info "Pulling Home Assistant $CORE_LATEST_VERSION Image"
|
||||
$STD docker pull ghcr.io/home-assistant/home-assistant:stable
|
||||
|
||||
@@ -312,7 +312,7 @@ ML_DIR="${APP_DIR}/machine-learning"
|
||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
||||
|
||||
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v3.0.3" "$SRC_DIR"
|
||||
fetch_and_deploy_gh_release "Immich" "immich-app/immich" "tarball" "v3.1.0" "$SRC_DIR"
|
||||
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)"
|
||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||
@@ -429,6 +429,7 @@ msg_info "Installing GeoNames data"
|
||||
cd "$GEO_DIR"
|
||||
curl_with_retry "https://download.geonames.org/export/dump/admin1CodesASCII.txt" "admin1CodesASCII.txt"
|
||||
curl_with_retry "https://download.geonames.org/export/dump/admin2Codes.txt" "admin2Codes.txt"
|
||||
curl_with_retry "https://download.geonames.org/export/dump/countryInfo.txt" "countryInfo.txt"
|
||||
curl_with_retry "https://download.geonames.org/export/dump/cities500.zip" "cities500.zip"
|
||||
curl_with_retry "https://raw.githubusercontent.com/nvkelso/natural-earth-vector/v5.1.2/geojson/ne_10m_admin_0_countries.geojson" "ne_10m_admin_0_countries.geojson"
|
||||
unzip -q cities500.zip
|
||||
|
||||
@@ -115,6 +115,7 @@ chmod -R 775 /opt/investbrain/bootstrap/cache
|
||||
msg_ok "Installed Investbrain"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/nginx/sites-available/investbrain.conf
|
||||
server {
|
||||
listen 8000 default_server;
|
||||
@@ -135,7 +136,7 @@ server {
|
||||
}
|
||||
|
||||
location ~ \.php\$ {
|
||||
fastcgi_pass unix:/var/run/php/php${PHP_VERSION}-fpm.sock;
|
||||
fastcgi_pass unix:${PHP_SOCK};
|
||||
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
fastcgi_hide_header X-Powered-By;
|
||||
@@ -150,9 +151,7 @@ server {
|
||||
access_log /var/log/nginx/investbrain_access.log;
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/investbrain.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site investbrain.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Setting up Supervisor"
|
||||
|
||||
@@ -110,6 +110,7 @@ chown -R www-data:www-data /opt/invoiceninja
|
||||
msg_ok "Set up Database"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<'EOF' >/etc/nginx/sites-available/invoiceninja
|
||||
server {
|
||||
listen 8080;
|
||||
@@ -130,7 +131,7 @@ server {
|
||||
}
|
||||
|
||||
location = /index.php {
|
||||
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
|
||||
fastcgi_pass unix:__PHP_SOCK__;
|
||||
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||
include fastcgi_params;
|
||||
fastcgi_param HTTP_X_FORWARDED_HOST $http_host;
|
||||
@@ -151,9 +152,8 @@ server {
|
||||
}
|
||||
EOF
|
||||
|
||||
ln -sf /etc/nginx/sites-available/invoiceninja /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
sed -i "s|__PHP_SOCK__|${PHP_SOCK}|" /etc/nginx/sites-available/invoiceninja
|
||||
nginx_enable_site invoiceninja
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Setting up Queue Worker"
|
||||
|
||||
@@ -56,10 +56,11 @@ msg_ok "Set up InvoiceShelf"
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
:80 {
|
||||
root * /opt/invoiceshelf/public
|
||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
||||
php_fastcgi unix/${PHP_SOCK}
|
||||
file_server
|
||||
encode gzip
|
||||
}
|
||||
|
||||
@@ -86,7 +86,6 @@ systemctl enable -q --now kitchenowl
|
||||
msg_ok "Created and Started Service"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
cat <<'EOF' >/etc/nginx/sites-available/kitchenowl.conf
|
||||
server {
|
||||
listen 80;
|
||||
@@ -134,9 +133,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/kitchenowl.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site kitchenowl.conf
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -129,6 +129,7 @@ $STD systemctl restart php8.4-fpm
|
||||
msg_ok "Tuned PHP-FPM"
|
||||
|
||||
msg_info "Configuring Nginx"
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<'EOF' >/etc/nginx/sites-available/koel
|
||||
server {
|
||||
listen 80;
|
||||
@@ -156,7 +157,7 @@ server {
|
||||
|
||||
location ~ \.php$ {
|
||||
try_files $uri $uri/ /index.php?$args;
|
||||
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
|
||||
fastcgi_pass unix:__PHP_SOCK__;
|
||||
fastcgi_index index.php;
|
||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||
fastcgi_intercept_errors on;
|
||||
@@ -171,9 +172,8 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
ln -sf /etc/nginx/sites-available/koel /etc/nginx/sites-enabled/koel
|
||||
$STD systemctl reload nginx
|
||||
sed -i "s|__PHP_SOCK__|${PHP_SOCK}|" /etc/nginx/sites-available/koel
|
||||
nginx_enable_site koel
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
msg_info "Setting up Cron Job"
|
||||
|
||||
@@ -25,7 +25,8 @@ $STD apt install -y \
|
||||
rrdtool \
|
||||
snmp \
|
||||
snmpd \
|
||||
whois
|
||||
whois \
|
||||
ipmitool
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Python Dependencies"
|
||||
@@ -80,7 +81,7 @@ sed -i "s/listen = \/run\/php\/php8.4-fpm.sock/listen = \/run\/php-fpm-librenms.
|
||||
msg_ok "Configured PHP-FPM"
|
||||
|
||||
msg_info "Configure Nginx"
|
||||
cat <<EOF >/etc/nginx/sites-enabled/librenms
|
||||
cat <<EOF >/etc/nginx/sites-available/librenms
|
||||
server {
|
||||
listen 80;
|
||||
server_name ${LOCAL_IP};
|
||||
@@ -103,8 +104,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
rm /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site librenms
|
||||
systemctl restart php8.4-fpm
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
|
||||
@@ -115,10 +115,8 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
$STD rm -f /etc/nginx/sites-enabled/default
|
||||
$STD ln -sf /etc/nginx/sites-available/linkding /etc/nginx/sites-enabled/linkding
|
||||
systemctl enable -q --now nginx linkding linkding-tasks
|
||||
systemctl restart nginx
|
||||
systemctl enable -q --now linkding linkding-tasks
|
||||
nginx_enable_site linkding
|
||||
msg_ok "Created Services"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -56,10 +56,11 @@ chown -R www-data:www-data /opt/lychee
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
:80 {
|
||||
root * /opt/lychee/public
|
||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
||||
php_fastcgi unix/${PHP_SOCK}
|
||||
file_server
|
||||
encode gzip
|
||||
}
|
||||
|
||||
@@ -134,9 +134,7 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -s /etc/nginx/sites-available/manyfold.conf /etc/nginx/sites-enabled/
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD systemctl reload nginx
|
||||
nginx_enable_site manyfold.conf
|
||||
msg_ok "Created Services"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -262,12 +262,8 @@ server {
|
||||
}
|
||||
}
|
||||
EOF
|
||||
ln -sf /etc/nginx/sites-available/mastodon /etc/nginx/sites-enabled/mastodon
|
||||
rm -f /etc/nginx/sites-enabled/default
|
||||
$STD nginx -t
|
||||
systemctl enable -q --now redis-server
|
||||
systemctl enable -q --now nginx
|
||||
systemctl reload nginx
|
||||
nginx_enable_site mastodon
|
||||
msg_ok "Configured Nginx"
|
||||
|
||||
motd_ssh
|
||||
|
||||
@@ -45,12 +45,13 @@ msg_ok "Set up Matomo"
|
||||
|
||||
msg_info "Configuring Caddy"
|
||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||
PHP_SOCK=$(get_php_fpm_socket)
|
||||
cat <<EOF >/etc/caddy/Caddyfile
|
||||
:80 {
|
||||
root * /opt/matomo
|
||||
@blocked path /config /config/* /tmp /tmp/* /.* /.*/*
|
||||
respond @blocked 403
|
||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
||||
php_fastcgi unix/${PHP_SOCK}
|
||||
file_server
|
||||
encode gzip
|
||||
}
|
||||
|
||||
@@ -19,12 +19,16 @@ $STD apt install -y \
|
||||
git-core \
|
||||
mediainfo
|
||||
|
||||
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
||||
deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware
|
||||
cat <<EOF >/etc/apt/sources.list.d/non-free.sources
|
||||
Types: deb
|
||||
URIs: https://deb.debian.org/debian
|
||||
Suites: trixie
|
||||
Components: non-free non-free-firmware
|
||||
Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg
|
||||
EOF
|
||||
$STD apt update
|
||||
$STD apt install -y unrar
|
||||
rm /etc/apt/sources.list.d/non-free.list
|
||||
rm /etc/apt/sources.list.d/non-free.sources
|
||||
msg_ok "Installed Dependencies"
|
||||
|
||||
msg_info "Installing Medusa"
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Copyright (c) 2021-2026 community-scripts ORG
|
||||
# Author: michelroegl-brunner
|
||||
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||
# Source: https://musicseerr.com/ | Github: https://github.com/HabiRabbu/Musicseerr
|
||||
|
||||
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||
color
|
||||
verb_ip6
|
||||
catch_errors
|
||||
setting_up_container
|
||||
network_check
|
||||
update_os
|
||||
|
||||
PYTHON_VERSION="3.13" setup_uv
|
||||
fetch_and_deploy_gh_release "musicseerr" "HabiRabbu/Musicseerr" "tarball"
|
||||
NODE_VERSION="25" NODE_MODULE="pnpm@10.33.0" setup_nodejs
|
||||
|
||||
msg_info "Building Frontend"
|
||||
cd /opt/musicseerr/frontend
|
||||
export NODE_OPTIONS="--max-old-space-size=3072"
|
||||
$STD pnpm install --frozen-lockfile
|
||||
$STD pnpm run build
|
||||
msg_ok "Built Frontend"
|
||||
|
||||
msg_info "Setting up Application"
|
||||
mkdir -p /opt/musicseerr/backend/config /opt/musicseerr/backend/cache
|
||||
$STD uv venv /opt/musicseerr/venv
|
||||
$STD uv pip install -r /opt/musicseerr/backend/requirements.txt --python=/opt/musicseerr/venv/bin/python
|
||||
rm -rf /opt/musicseerr/backend/static
|
||||
cp -r /opt/musicseerr/frontend/build /opt/musicseerr/backend/static
|
||||
msg_ok "Set up Application"
|
||||
|
||||
msg_info "Creating Service"
|
||||
cat <<EOF >/etc/systemd/system/musicseerr.service
|
||||
[Unit]
|
||||
Description=MusicSeerr Service
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User=root
|
||||
WorkingDirectory=/opt/musicseerr/backend
|
||||
Environment=ROOT_APP_DIR=/opt/musicseerr/backend
|
||||
Environment=PORT=8688
|
||||
ExecStart=/opt/musicseerr/venv/bin/uvicorn main:app --host 0.0.0.0 --port 8688 --loop uvloop --http httptools --workers 1
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl enable -q --now musicseerr
|
||||
msg_ok "Created Service"
|
||||
|
||||
motd_ssh
|
||||
customize
|
||||
cleanup_lxc
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user