Compare commits

...

43 Commits

Author SHA1 Message Date
Michel Roegl-Brunner 1b6863540d Refactor installation script for Firecrawl 2026-07-30 10:13:47 +02:00
Michel Roegl-Brunner 6aeff01570 Remove configuration file echo from firecrawl.sh
Removed configuration file output from the script.
2026-07-30 10:08:20 +02:00
push-app-to-main[bot] 722c91dd48 Add firecrawl (ct) 2026-07-30 07:52:10 +00:00
community-scripts-pr-app[bot] 09c11fdecf Update CHANGELOG.md (#16152)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 21:02:10 +00:00
community-scripts-pr-app[bot] e562ab6128 Update CHANGELOG.md (#16151)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 15:58:45 +00:00
CanbiZ (MickLesk) b5a9011581 Bichon: Migration for V2 Release (#16145) 2026-07-29 17:58:04 +02:00
community-scripts-pr-app[bot] 450a5948ec Update CHANGELOG.md (#16150)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 12:11:34 +00:00
CanbiZ (MickLesk) 6ff1e95334 core: Harden remote func bootstrapping with dns issues (#16146)
* Harden remote func bootstrapping

Replace bare `source <(curl ...)` calls with a `_bootstrap_source` helper that validates both the download exit code and the presence of a probe function after sourcing. This prevents silent failures when DNS is not yet available in a freshly booted container or when a download fails mid-stream. Applies to build.func, install.func, and alpine-install.func. Also adds retry flags and a connect timeout to curl/wget.

* Refactor bootstrap error handling with helper

Extract repeated fatal-error logic into a `_bootstrap_die` helper across alpine-install.func, build.func, and install.func. The helper uses `msg_error` when available, falling back to stderr, then exits with code 115. Inline error blocks are replaced with cleaner one-liner `|| _bootstrap_die` calls.
2026-07-29 14:11:08 +02:00
community-scripts-pr-app[bot] bf75cbd2a3 Update CHANGELOG.md (#16148)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 08:59:05 +00:00
Sam Heinz 2098cf0f3a backup virtual printer in bambuddy (#16142) 2026-07-29 10:58:34 +02:00
community-scripts-pr-app[bot] 09c16ded19 Update CHANGELOG.md (#16147)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 07:29:59 +00:00
aidaskni d9b12eaadf ImmichFrame: check .NET SDK before update deployment (#16104)
* fix(immichframe): check SDK before update deployment

* fix(immichframe): install SDK during update
2026-07-29 09:29:30 +02:00
MickLesk 948f8f608f Revert "Bichon: Migration for V2 Release"
This reverts commit 57c9246f59.
2026-07-29 07:41:02 +02:00
community-scripts-pr-app[bot] 44483d08ae Update CHANGELOG.md (#16144)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-29 05:38:39 +00:00
MickLesk 57c9246f59 Bichon: Migration for V2 Release 2026-07-29 07:38:04 +02:00
community-scripts-pr-app[bot] 00119abe89 Update CHANGELOG.md (#16139)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 23:29:39 +00:00
Tobias 645f6a2d9a fix: prometheus-paperless-exporter incompatibility with paperless v3 (#16119)
* fix: compatibility in paperless v3 (https://github.com/hansmi/prometheus-paperless-exporter/issues/134)

* rm: comments

* fix: revert func
2026-07-29 09:29:16 +10:00
community-scripts-pr-app[bot] 5ce2cc3b00 Update CHANGELOG.md (#16135)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 19:20:39 +00:00
Louis GAMBART d9814ec169 Create search directory in wanderer-install.sh (#16134) 2026-07-28 21:20:09 +02:00
community-scripts-pr-app[bot] 58ac0fc22a Update .app files (#16133)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-07-28 20:40:56 +02:00
community-scripts-pr-app[bot] c1a13486a9 Update CHANGELOG.md (#16132)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 18:13:09 +00:00
Chris c6ce72cefd Migrate Musicseerr to DroppedNeedle (#15751) 2026-07-28 20:12:37 +02:00
community-scripts-pr-app[bot] cac2d441b8 Update CHANGELOG.md (#16131)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 17:47:47 +00:00
CanbiZ (MickLesk) 8029b208a6 tools.func: add nginx site helper and PHP socket resolver (#16118) 2026-07-28 19:47:13 +02:00
community-scripts-pr-app[bot] 7046b72981 Update CHANGELOG.md (#16130)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 17:46:03 +00:00
CanbiZ (MickLesk) 8c4ed519a9 Read prompt input directly from /dev/tty (#16126) 2026-07-28 19:45:29 +02:00
community-scripts-pr-app[bot] ea6346e4ef Update CHANGELOG.md (#16129)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 17:03:51 +00:00
CanbiZ (MickLesk) 8990ab702e npmplus: Remove duplicate msg_info for container recreation (#16122) 2026-07-28 19:03:16 +02:00
community-scripts-pr-app[bot] 57e02eee1b Update .app files (#16114)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2026-07-28 13:38:55 +02:00
community-scripts-pr-app[bot] 45053ea4c3 Update CHANGELOG.md (#16115)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 11:37:14 +00:00
Sam Heinz 1fa4c1fbf7 fix Node.js version drift (#16111)
* fix Node.js version drift

* add upgrade node for oxicloud,ps5,syncin
2026-07-28 13:36:40 +02:00
community-scripts-pr-app[bot] 0299e420e8 Update CHANGELOG.md (#16113)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 10:30:10 +00:00
push-app-to-main[bot] db18c72bd8 Add actual-budget-prometheus-exporter (addon) (#16109)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
2026-07-28 12:29:40 +02:00
community-scripts-pr-app[bot] 4bf8a972bf Update CHANGELOG.md (#16112)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 09:44:49 +00:00
Sam Heinz 47b8fbf2fb fix keep-open for close invalid pr (#16105) 2026-07-28 11:44:26 +02:00
community-scripts-pr-app[bot] 9cc1a739a5 Update CHANGELOG.md (#16108)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 08:12:01 +00:00
Tim Moore 0ce1cea6cd UmlautAdaptarr: use the Debian 13 Microsoft repo with its 2025 signing key (#16077)
* UmlautAdaptarr: use the Debian 13 Microsoft repo with its 2025 signing key

The container is Debian 13 (var_version 13) but the script configures the
Microsoft debian/12 prod repo with suite bookworm.

The move to debian/13 was reverted in #8392 because apt reported "OpenPGP
signature verification failed" (#8385), diagnosed at the time as Microsoft
not having populated the trixie repo. The actual cause was the signing key:
debian/13/prod is signed by EE4D7792F748182B (microsoft-2025.asc), while the
script kept microsoft.asc (EB3E94ADBE1229CF). The suite and URL were changed
but the key was not.

The trixie repo carries the required packages at current patch level
(dotnet-sdk-8.0 8.0.423-1, aspnetcore-runtime-8.0 8.0.29-1).

This makes the call identical to the six other scripts already on the
Debian 13 Microsoft repo (technitiumdns, igotify, mail-archiver, rdtclient,
fileflows, immichframe).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* UmlautAdaptarr: migrate existing containers to the Debian 13 repo on update

Per review feedback: the install-side fix only helps new containers.
Existing ones keep the Debian 12 repo indefinitely, because update_script
only fetches a GitHub release and never touches apt.

Repoints them when the stale Debian 12 repo is detected, mirroring the
conditional setup_deb822_repo calls in ct/technitiumdns.sh and
ct/fileflows.sh. The guard makes this a no-op once migrated.

setup_deb822_repo's microsoft* globs also clear the pre-#9839
microsoft-prod.sources layout; its key lived in /usr/share/keyrings,
which cleanup_old_repo_files does not cover, so it is removed explicitly
as ct/technitiumdns.sh does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

---------

Co-authored-by: Tim Moore <tim.moore@ingenuity.com.au>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 18:11:29 +10:00
community-scripts-pr-app[bot] e7eff1cf81 Update CHANGELOG.md (#16107)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 08:10:45 +00:00
Tim Moore 03edfcef85 fix(bazarr): store data in /var/lib/bazarr instead of inside /opt/bazarr (#16098)
* fix(bazarr): store data in /var/lib/bazarr instead of inside /opt/bazarr

The installer creates /var/lib/bazarr and update_script() uses it as the
"is Bazarr installed" guard, but nothing pointed Bazarr at it. Bazarr
defaults its data directory to <install dir>/data, resolved from its own
source file rather than WorkingDirectory, so a stock container kept
config/ db/ backup/ cache/ log/ restore/ in /opt/bazarr/data - the
directory fetch_and_deploy_gh_release redeploys over - while
/var/lib/bazarr stayed empty.

Pass -c /var/lib/bazarr in the unit, matching the -data= flag the other
*arr scripts use. bazarr.py re-execs its child with sys.argv[1:], so the
flag survives the restart Bazarr performs while loading its config.

update_script() gains a one-time migration for existing installs. It runs
outside the release check so containers already on the latest version are
migrated too, is skipped when the unit already names a data directory,
refuses (before stopping the service) when both locations hold data, and
copies before removing so a failed migration leaves the original database
in place.

Fixes #16097

* fix(bazarr): drop explanatory comments per review
2026-07-28 18:10:12 +10:00
community-scripts-pr-app[bot] bc488e467c Update CHANGELOG.md (#16106)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 08:09:09 +00:00
CanbiZ (MickLesk) 303bb672e6 Bump GitHub Actions across workflows (#16091)
* Bump GitHub Actions across workflows

Update workflow dependencies to newer major versions in repository automation files. This upgrades `actions/checkout` to v7, `actions/github-script` to v9, `actions/create-github-app-token` to v3, and GitHub Pages actions (`upload-pages-artifact` and `deploy-pages`) to v5 to keep CI/CD and maintenance workflows current.

* add dependabot for gh actions
2026-07-28 10:08:38 +02:00
community-scripts-pr-app[bot] 69854a4f74 Update CHANGELOG.md (#16103)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-07-28 07:40:00 +00:00
Tim Moore dd74eef5f6 Cloudflare-DDNS: store API token in a 600 env file and build the binary at install time (#16100) 2026-07-28 09:39:30 +02:00
111 changed files with 1352 additions and 440 deletions
+17
View File
@@ -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:
- "*"
+3 -3
View File
@@ -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
+2 -2
View File
@@ -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;
+4 -4
View File
@@ -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;
+5 -5
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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
View File
@@ -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
View File
@@ -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
+59
View File
@@ -508,6 +508,65 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
</details>
## 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
+2 -1
View File
@@ -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"
+25
View File
@@ -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
View File
@@ -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"
+27 -3
View File
@@ -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
View File
@@ -25,7 +25,7 @@ function update_script() {
check_container_storage
check_container_resources
NODE_VERSION="24" setup_nodejs
NODE_VERSION="26" setup_nodejs
ensure_dependencies build-essential
if command -v cross-seed &>/dev/null; then
+1 -1
View File
@@ -100,7 +100,7 @@ server {
}
}
EOF
systemctl reload nginx
nginx_enable_site dispatcharr.conf
msg_ok "Migrated Nginx Configuration"
fi
+2 -2
View File
@@ -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"
+147
View File
@@ -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
View File
@@ -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!"
+91
View File
@@ -0,0 +1,91 @@
#!/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
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}"
+6
View File
@@ -0,0 +1,6 @@
____ ___ __ ____
/ __ \_________ ____ ____ ___ ____/ / | / /__ ___ ____/ / /__
/ / / / ___/ __ \/ __ \/ __ \/ _ \/ __ / |/ / _ \/ _ \/ __ / / _ \
/ /_/ / / / /_/ / /_/ / /_/ / __/ /_/ / /| / __/ __/ /_/ / / __/
/_____/_/ \____/ .___/ .___/\___/\__,_/_/ |_/\___/\___/\__,_/_/\___/
/_/ /_/
+6
View File
@@ -0,0 +1,6 @@
_______ __
/ ____(_)_______ ______________ __ __/ /
/ /_ / / ___/ _ \/ ___/ ___/ __ `/ | /| / / /
/ __/ / / / / __/ /__/ / / /_/ /| |/ |/ / /
/_/ /_/_/ \___/\___/_/ \__,_/ |__/|__/_/
+19
View File
@@ -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
+6 -74
View File
@@ -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
-4
View File
@@ -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
}
+1 -1
View File
@@ -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"
+2
View File
@@ -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
View File
@@ -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
+3
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -75,7 +75,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
View File
@@ -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
+2
View File
@@ -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
View File
@@ -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"
+12
View File
@@ -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
+2 -1
View File
@@ -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;
}
+1 -3
View File
@@ -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
+1 -4
View File
@@ -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
+3 -4
View File
@@ -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
+1 -1
View File
@@ -36,7 +36,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
+1 -1
View File
@@ -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
+1 -3
View File
@@ -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
+37 -12
View File
@@ -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
+1 -1
View File
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
NODE_VERSION="26" setup_nodejs
msg_info "Setup Cross-Seed"
$STD npm install cross-seed@latest -g
+1 -5
View File
@@ -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
+1 -3
View File
@@ -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
+1 -4
View File
@@ -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
+1 -3
View File
@@ -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"
+1 -1
View File
@@ -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"
+60
View File
@@ -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
+1 -5
View File
@@ -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
+1 -3
View File
@@ -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"
+1 -4
View File
@@ -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
+230
View File
@@ -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 \
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
+1 -4
View File
@@ -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"
+2 -7
View File
@@ -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
+3 -4
View File
@@ -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"
+4 -4
View File
@@ -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"
+2 -1
View File
@@ -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
}
+1 -4
View File
@@ -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
+4 -4
View File
@@ -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"
+2 -3
View File
@@ -80,7 +80,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 +103,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"
+2 -4
View File
@@ -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
+2 -1
View File
@@ -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
}
+1 -3
View File
@@ -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
+1 -5
View File
@@ -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
+2 -1
View File
@@ -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
}
-59
View File
@@ -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
+1 -3
View File
@@ -59,7 +59,6 @@ USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "netboot-xyz-multiarch-im
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "netboot-xyz-checksums" "netbootxyz/netboot.xyz" "singlefile" "latest" "/var/www/html" "netboot.xyz-sha256-checksums.txt"
msg_info "Configuring Webserver"
rm -f /etc/nginx/sites-enabled/default
cat <<'EOF' >/etc/nginx/sites-available/netboot-xyz
server {
listen 80 default_server;
@@ -83,8 +82,7 @@ server {
}
}
EOF
ln -sf /etc/nginx/sites-available/netboot-xyz /etc/nginx/sites-enabled/netboot-xyz
$STD systemctl reload nginx
nginx_enable_site netboot-xyz
msg_ok "Configured Webserver"
msg_info "Configuring TFTP Server"
+1 -5
View File
@@ -55,11 +55,7 @@ server {
}
EOF
ln -sf /etc/nginx/sites-available/omnitools /etc/nginx/sites-enabled/omnitools
rm -f /etc/nginx/sites-enabled/default
$STD nginx -t
systemctl enable -q --now nginx
systemctl reload nginx
nginx_enable_site omnitools
msg_ok "Configured Nginx"
motd_ssh
+1 -3
View File
@@ -62,9 +62,7 @@ server {
}
EOF
ln -s /etc/nginx/sites-available/ots.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
$STD systemctl reload nginx
nginx_enable_site ots.conf
msg_ok "Configured nginx"
msg_info "Creating Services"
+1 -1
View File
@@ -20,7 +20,7 @@ $STD apt install -y \
redis
msg_ok "Installed Dependencies"
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
NODE_VERSION="26" NODE_MODULE="corepack" setup_nodejs
PG_VERSION="16" setup_postgresql
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
+1 -1
View File
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
$STD apt install -y build-essential
msg_ok "Installed Dependencies"
NODE_VERSION="24" setup_nodejs
NODE_VERSION="26" setup_nodejs
PG_VERSION="17" setup_postgresql
PG_DB_NAME="oxicloud" PG_DB_USER="oxicloud" setup_postgresql_db
fetch_and_deploy_gh_release "OxiCloud" "DioCrafts/OxiCloud" "tarball" "latest" "/opt/oxicloud"
+3 -4
View File
@@ -57,6 +57,7 @@ $STD php artisan app:user:create paymenter admin admin@paymenter.org paymenter 1
msg_ok "Created Admin User"
msg_info "Configuring Nginx"
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/sites-available/paymenter.conf
server {
listen 80;
@@ -72,7 +73,7 @@ server {
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
@@ -82,9 +83,7 @@ server {
}
}
EOF
ln -s /etc/nginx/sites-available/paymenter.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
$STD systemctl reload nginx
nginx_enable_site paymenter.conf
chown -R www-data:www-data /opt/paymenter/*
msg_ok "Configured Nginx"
+1 -3
View File
@@ -376,9 +376,7 @@ server {
}
}
EOF
ln -sf /etc/nginx/sites-available/plane.conf /etc/nginx/sites-enabled/plane.conf
rm -f /etc/nginx/sites-enabled/default
$STD systemctl reload nginx
nginx_enable_site plane.conf
msg_ok "Configured Nginx"
motd_ssh
+1 -5
View File
@@ -236,11 +236,7 @@ server {
}
}
EOF
ln -sf /etc/nginx/sites-available/postiz /etc/nginx/sites-enabled/postiz
rm -f /etc/nginx/sites-enabled/default
$STD nginx -t
systemctl enable -q nginx
systemctl reload -q nginx
nginx_enable_site postiz
msg_ok "Configured Nginx"
motd_ssh
+3 -6
View File
@@ -29,6 +29,7 @@ chown -R www-data:www-data /var/www/html
msg_ok "Deployed Poznote"
msg_info "Configuring Nginx"
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/sites-available/poznote
server {
listen 8040;
@@ -41,7 +42,7 @@ server {
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT \$document_root;
}
@@ -51,11 +52,7 @@ server {
}
}
EOF
ln -sf /etc/nginx/sites-available/poznote /etc/nginx/sites-enabled/poznote
rm -f /etc/nginx/sites-enabled/default
$STD nginx -t
systemctl enable -q --now nginx
systemctl reload nginx
nginx_enable_site poznote
msg_ok "Configured Nginx"
motd_ssh
+3 -4
View File
@@ -37,6 +37,7 @@ systemctl restart php8.2-fpm
msg_ok "Configured PHP"
msg_info "Configuring Universal Nginx"
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/sites-available/privatebin.conf
server {
listen 80 default_server;
@@ -60,7 +61,7 @@ server {
location ~ \.php\$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
}
@@ -75,9 +76,7 @@ server {
add_header X-XSS-Protection "1; mode=block";
}
EOF
ln -s /etc/nginx/sites-available/privatebin.conf /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
systemctl reload nginx
nginx_enable_site privatebin.conf
msg_ok "Nginx Configured"
motd_ssh
+1 -1
View File
@@ -19,7 +19,7 @@ $STD apt install -y \
ca-certificates
msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="playactor" setup_nodejs
NODE_VERSION="24" NODE_MODULE="playactor" setup_nodejs
fetch_and_deploy_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt" "tarball"
msg_info "Configuring PS5-MQTT"
+1 -3
View File
@@ -55,9 +55,7 @@ msg_ok "Set up Rackula"
msg_info "Configuring nginx"
cp /opt/rackula/config/nginx.conf /etc/nginx/sites-available/rackula
rm -f /etc/nginx/sites-enabled/default
ln -sf /etc/nginx/sites-available/rackula /etc/nginx/sites-enabled/rackula
$STD nginx -t
nginx_enable_site rackula
msg_ok "Configured nginx"
msg_info "Creating Services"
+1 -4
View File
@@ -93,10 +93,7 @@ server {
}
}
EOF
ln -sf /etc/nginx/sites-available/shlink-web-client /etc/nginx/sites-enabled/shlink-web-client
rm -f /etc/nginx/sites-enabled/default
systemctl enable -q nginx
$STD systemctl restart nginx
nginx_enable_site shlink-web-client
msg_ok "Set up Web Client"
fi
+2 -1
View File
@@ -40,6 +40,7 @@ $STD php artisan key:generate --force
msg_ok "Configured Snipe-IT"
msg_info "Creating Service"
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/conf.d/snipeit.conf
server {
listen 80;
@@ -55,7 +56,7 @@ server {
location ~ \.php\$ {
include fastcgi.conf;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_split_path_info ^(.+\.php)(/.+)\$;
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
include fastcgi_params;
+2 -1
View File
@@ -68,10 +68,11 @@ msg_ok "Set up SolidTime"
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/solidtime/public
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
php_fastcgi unix/${PHP_SOCK}
file_server
encode gzip
}
+1 -5
View File
@@ -91,11 +91,7 @@ sed \
-e 's|root /usr/share/nginx/html;|root /var/www/sparkyfitness;|g' \
-e 's|server_name localhost;|server_name _;|g' \
"/opt/sparkyfitness/docker/nginx.conf" >/etc/nginx/sites-available/sparkyfitness
ln -sf /etc/nginx/sites-available/sparkyfitness /etc/nginx/sites-enabled/sparkyfitness
rm -f /etc/nginx/sites-enabled/default
$STD nginx -t
$STD systemctl enable -q --now nginx
$STD systemctl reload nginx
nginx_enable_site sparkyfitness
msg_ok "Configured Nginx"
motd_ssh
+3 -4
View File
@@ -120,6 +120,7 @@ EOF
msg_ok "Set up Scheduler"
msg_info "Configuring Nginx"
PHP_SOCK=$(get_php_fpm_socket)
cat <<EOF >/etc/nginx/sites-available/speedtest-tracker
server {
listen 80;
@@ -143,7 +144,7 @@ server {
error_page 404 /index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php8.4-fpm.sock;
fastcgi_pass unix:${PHP_SOCK};
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
include fastcgi_params;
}
@@ -154,9 +155,7 @@ server {
}
EOF
ln -sf /etc/nginx/sites-available/speedtest-tracker /etc/nginx/sites-enabled/
rm -f /etc/nginx/sites-enabled/default
systemctl reload nginx
nginx_enable_site speedtest-tracker
msg_ok "Configured Nginx"
motd_ssh
+1 -1
View File
@@ -13,7 +13,7 @@ setting_up_container
network_check
update_os
NODE_VERSION="22" setup_nodejs
NODE_VERSION="24" setup_nodejs
setup_mariadb
MARIADB_DB_NAME="sync_in" MARIADB_DB_USER="sync_in" setup_mariadb_db
+1 -1
View File
@@ -54,7 +54,7 @@ cd /opt
rm -rf /opt/guacamole-server
msg_ok "Built Guacamole Server (guacd)"
NODE_VERSION="24" setup_nodejs
NODE_VERSION="26" setup_nodejs
fetch_and_deploy_gh_release "termix" "Termix-SSH/Termix" "tarball"
msg_info "Building Frontend"
+3 -3
View File
@@ -16,9 +16,9 @@ update_os
msg_info "Installing Dependencies"
setup_deb822_repo \
"microsoft" \
"https://packages.microsoft.com/keys/microsoft.asc" \
"https://packages.microsoft.com/debian/12/prod/" \
"bookworm" \
"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 \
+4 -4
View File
@@ -93,6 +93,7 @@ chmod -R 755 /opt/wallabag/{var,web/assets}
msg_ok "Installed Wallabag"
msg_info "Configuring Nginx"
PHP_SOCK=$(get_php_fpm_socket)
cat <<'EOF' >/etc/nginx/sites-available/wallabag
server {
listen 8000;
@@ -110,7 +111,7 @@ server {
}
location ~ ^/app\.php(/|$) {
fastcgi_pass unix:/run/php/php8.3-fpm.sock;
fastcgi_pass unix:__PHP_SOCK__;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
@@ -131,9 +132,8 @@ server {
}
EOF
ln -sf /etc/nginx/sites-available/wallabag /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/wallabag
nginx_enable_site wallabag
msg_ok "Configured Nginx"
msg_info "Enabling Services"
+1
View File
@@ -23,6 +23,7 @@ fi
mkdir -p /opt/wanderer/{source,data/pb_data,data/meili_data,data/plugins}
fetch_and_deploy_gh_release "wanderer" "open-wanderer/wanderer" "tarball" "latest" "/opt/wanderer/source"
mkdir -p /opt/wanderer/source/db/data
mkdir -p /opt/wanderer/source/search
[[ -e /opt/wanderer/source/db/data/plugins ]] || ln -sfn /opt/wanderer/data/plugins /opt/wanderer/source/db/data/plugins
msg_info "Installing wanderer (patience)"

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