mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2026-08-02 19:13:04 +02:00
Compare commits
85 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6ad7dda1ec | |||
| fc21e2c458 | |||
| 7b7d5c4fdc | |||
| e028f3eb1b | |||
| 308ef17283 | |||
| 0fb07d03e7 | |||
| 084706a3d5 | |||
| cb58c616f7 | |||
| 89e43f2753 | |||
| 63434d9a0f | |||
| 7373c26b7f | |||
| d5d336698e | |||
| a686666abd | |||
| bedc73a049 | |||
| 92b7155ff9 | |||
| 5356ce7dcc | |||
| 566cbf736d | |||
| 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
+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.
|
<!--🛑 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
|
## ✍️ 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)
|
## 🛠️ Type of Change (**X** in brackets)
|
||||||
|
|
||||||
- [ ] 🐞 **Bug fix** – Resolves an issue without breaking functionality.
|
- [ ] 🐞 **Bug fix** – Resolves an issue without breaking functionality.
|
||||||
|
|||||||
+3
-3
@@ -20,21 +20,21 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Generate a token for PR approval and merge
|
- name: Generate a token for PR approval and merge
|
||||||
id: generate-token-merge
|
id: generate-token-merge
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
# Step 1: Checkout repository
|
# Step 1: Checkout repository
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
# Step 2: Disable file mode changes detection
|
# Step 2: Disable file mode changes detection
|
||||||
- name: Disable file mode changes
|
- name: Disable file mode changes
|
||||||
|
|||||||
Generated
+2
-2
@@ -16,13 +16,13 @@ jobs:
|
|||||||
CONFIG_PATH: .github/autolabeler-config.json
|
CONFIG_PATH: .github/autolabeler-config.json
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: npm install minimatch
|
run: npm install minimatch
|
||||||
|
|
||||||
- name: Label PR based on file changes, title, and PR template
|
- name: Label PR based on file changes, title, and PR template
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs').promises;
|
const fs = require('fs').promises;
|
||||||
|
|||||||
Generated
+4
-4
@@ -19,25 +19,25 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Generate a token for PR approval and merge
|
- name: Generate a token for PR approval and merge
|
||||||
id: generate-token-merge
|
id: generate-token-merge
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
- name: Archive old changelog entries
|
- name: Archive old changelog entries
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs').promises;
|
const fs = require('fs').promises;
|
||||||
|
|||||||
Generated
+5
-5
@@ -19,20 +19,20 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Generate a token
|
- name: Generate a token
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ vars.APP_ID }}
|
app-id: ${{ vars.APP_ID }}
|
||||||
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.APP_PRIVATE_KEY }}
|
||||||
|
|
||||||
- name: Generate a token for PR approval and merge
|
- name: Generate a token for PR approval and merge
|
||||||
id: generate-token-merge
|
id: generate-token-merge
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
app-id: ${{ secrets.APP_ID_APPROVE_AND_MERGE }}
|
||||||
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
private-key: ${{ secrets.APP_KEY_APPROVE_AND_MERGE }}
|
||||||
|
|
||||||
- name: Checkout code
|
- name: Checkout code
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Get categorized pull requests
|
- name: Get categorized pull requests
|
||||||
id: get-categorized-prs
|
id: get-categorized-prs
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
async function main() {
|
async function main() {
|
||||||
@@ -213,7 +213,7 @@ jobs:
|
|||||||
return await main();
|
return await main();
|
||||||
|
|
||||||
- name: Update CHANGELOG.md
|
- name: Update CHANGELOG.md
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const fs = require('fs').promises;
|
const fs = require('fs').promises;
|
||||||
|
|||||||
+2
-2
@@ -17,7 +17,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
ref: main
|
ref: main
|
||||||
|
|
||||||
@@ -242,7 +242,7 @@ jobs:
|
|||||||
checked=$((checked + 1))
|
checked=$((checked + 1))
|
||||||
|
|
||||||
# Extract our NODE_VERSION
|
# 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 [[ -z "$our_version" ]]; then
|
||||||
if grep -q 'NODE_VERSION=\$(' "$script"; then
|
if grep -q 'NODE_VERSION=\$(' "$script"; then
|
||||||
our_version="dynamic"
|
our_version="dynamic"
|
||||||
|
|||||||
+3
-3
@@ -15,7 +15,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Close PR if it does not follow the PR template
|
- name: Close PR if it does not follow the PR template
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const pr = context.payload.pull_request;
|
const pr = context.payload.pull_request;
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
const labels = pr.labels.map((label) => label.name);
|
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))) {
|
if (skipLabels.some((label) => labels.includes(label))) {
|
||||||
core.info(`PR #${prNumber} has a skip label (${labels.join(", ")}) — skipping template validation.`);
|
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.`,
|
`> 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! 🙏`,
|
`Thank you for contributing! 🙏`,
|
||||||
].join("\n");
|
].join("\n");
|
||||||
|
|||||||
+1
-1
@@ -14,7 +14,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Close PR if unauthorized new script submission
|
- name: Close PR if unauthorized new script submission
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const pr = context.payload.pull_request;
|
const pr = context.payload.pull_request;
|
||||||
|
|||||||
+1
-1
@@ -9,7 +9,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Auto-close if tteck script detected
|
- name: Auto-close if tteck script detected
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const issue = context.payload.issue;
|
const issue = context.payload.issue;
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout target repo (merge commit)
|
- name: Checkout target repo (merge commit)
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
repository: community-scripts/ProxmoxVE
|
repository: community-scripts/ProxmoxVE
|
||||||
ref: ${{ github.event.pull_request.merge_commit_sha }}
|
ref: ${{ github.event.pull_request.merge_commit_sha }}
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Delete branches of merged PRs
|
- name: Delete branches of merged PRs
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const owner = context.repo.owner;
|
const owner = context.repo.owner;
|
||||||
|
|||||||
+1
-1
@@ -17,7 +17,7 @@ jobs:
|
|||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
Generated
+1
-1
@@ -13,7 +13,7 @@ jobs:
|
|||||||
contents: write
|
contents: write
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Clean CHANGELOG (remove HTML header)
|
- name: Clean CHANGELOG (remove HTML header)
|
||||||
run: sed -n '/^## /,$p' CHANGELOG.md > changelog_cleaned.md
|
run: sed -n '/^## /,$p' CHANGELOG.md > changelog_cleaned.md
|
||||||
|
|||||||
Generated
+1
-1
@@ -14,7 +14,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Lock old issues and PRs
|
- name: Lock old issues and PRs
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const daysBeforeLock = 7;
|
const daysBeforeLock = 7;
|
||||||
|
|||||||
Generated
+1
-1
@@ -26,7 +26,7 @@ jobs:
|
|||||||
steps:
|
steps:
|
||||||
- name: Mint GitHub App token (bot identity)
|
- name: Mint GitHub App token (bot identity)
|
||||||
id: app-token
|
id: app-token
|
||||||
uses: actions/create-github-app-token@v1
|
uses: actions/create-github-app-token@v3
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.PB_BOT_APP_ID }}
|
app-id: ${{ secrets.PB_BOT_APP_ID }}
|
||||||
private-key: ${{ secrets.PB_BOT_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.PB_BOT_APP_PRIVATE_KEY }}
|
||||||
|
|||||||
+1
-1
@@ -12,7 +12,7 @@ jobs:
|
|||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
Generated
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
|||||||
contents: read
|
contents: read
|
||||||
steps:
|
steps:
|
||||||
- name: Handle stale PRs
|
- name: Handle stale PRs
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v9
|
||||||
with:
|
with:
|
||||||
script: |
|
script: |
|
||||||
const now = new Date();
|
const now = new Date();
|
||||||
|
|||||||
+3
-3
@@ -13,7 +13,7 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v4
|
- uses: actions/checkout@v7
|
||||||
|
|
||||||
- name: Create redirect page
|
- name: Create redirect page
|
||||||
run: |
|
run: |
|
||||||
@@ -33,9 +33,9 @@ jobs:
|
|||||||
</html>
|
</html>
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
- uses: actions/upload-pages-artifact@v3
|
- uses: actions/upload-pages-artifact@v5
|
||||||
with:
|
with:
|
||||||
path: site
|
path: site
|
||||||
|
|
||||||
- name: Deploy
|
- name: Deploy
|
||||||
uses: actions/deploy-pages@v4
|
uses: actions/deploy-pages@v5
|
||||||
|
|||||||
+1
-1
@@ -16,7 +16,7 @@ jobs:
|
|||||||
runs-on: self-hosted
|
runs-on: self-hosted
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout Repository
|
- name: Checkout Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v7
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
|||||||
+107
@@ -508,6 +508,113 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
|
## 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
|
## 2026-07-27
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
+2
-1
@@ -42,7 +42,8 @@ function update_script() {
|
|||||||
/opt/bambuddy/data \
|
/opt/bambuddy/data \
|
||||||
/opt/bambuddy/bambuddy.db \
|
/opt/bambuddy/bambuddy.db \
|
||||||
/opt/bambuddy/bambutrack.db \
|
/opt/bambuddy/bambutrack.db \
|
||||||
/opt/bambuddy/archive
|
/opt/bambuddy/archive \
|
||||||
|
/opt/bambuddy/virtual_printer
|
||||||
msg_ok "Backed up Configuration and Data"
|
msg_ok "Backed up Configuration and Data"
|
||||||
|
|
||||||
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "bambuddy" "maziggy/bambuddy" "tarball" "latest" "/opt/bambuddy"
|
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!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
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
|
if check_for_gh_release "bazarr" "morpheus65535/bazarr"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop bazarr
|
systemctl stop bazarr
|
||||||
|
|||||||
+33
-47
@@ -34,30 +34,27 @@ function update_script() {
|
|||||||
CURRENT_VERSION=$(cat /root/.bichon)
|
CURRENT_VERSION=$(cat /root/.bichon)
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MIGRATE_V1=0
|
if [[ $CURRENT_VERSION != 1.* && $CURRENT_VERSION != 2.* ]]; then
|
||||||
if [[ $CURRENT_VERSION == 0.* ]]; then
|
msg_error "Installed ${APP} version (${CURRENT_VERSION}) is too old for an automatic update to v2.x."
|
||||||
MIGRATE_V1=1
|
msg_error "Please create a new ${APP} container and migrate your data manually."
|
||||||
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
|
msg_error "Guide: https://github.com/rustmailer/bichon/wiki/Bichon-v2.x-Migration-Guide"
|
||||||
if [ "$DISK_USAGE" -gt 50 ]; then
|
exit
|
||||||
echo -e "\n${RD}Warning: Less than 50% free storage remaining on the root disk.${CL}"
|
fi
|
||||||
echo -e "${RD}Bichon v1 data migration temporarily duplicates data and requires free space for it.${CL}"
|
|
||||||
|
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
|
read -r -p "Are you sure you want to proceed with the update? (y/N): " proceed
|
||||||
if [[ ! $proceed =~ ^[Yy]$ ]]; then
|
if [[ ! $proceed =~ ^[Yy]$ ]]; then
|
||||||
msg_error "Update cancelled by user."
|
msg_error "Update cancelled by user."
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
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
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "bichon" "rustmailer/bichon"; then
|
if check_for_gh_release "bichon" "rustmailer/bichon"; then
|
||||||
@@ -67,55 +64,44 @@ function update_script() {
|
|||||||
|
|
||||||
create_backup /opt/bichon/bichon.env
|
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"
|
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
|
restore_backup
|
||||||
|
|
||||||
if [ "$MIGRATE_V1" -eq 1 ]; then
|
if [ "$MIGRATE_V2" -eq 1 ]; then
|
||||||
msg_info "Running Bichon v1 Data Migration (patience)"
|
msg_info "Migrating storage from fjall to bichon-blob (patience)"
|
||||||
$STD apt install -y expect
|
$STD apt install -y expect
|
||||||
|
# Menu: 0 Reset Password, 1 Migrate v0.3.7, 2 Migrate v1.x, 3 Exit
|
||||||
$STD expect <<'EOF'
|
$STD expect <<'EOF'
|
||||||
set timeout -1
|
set timeout -1
|
||||||
spawn /opt/bichon/bichon-admin
|
spawn /opt/bichon/bichon-admin
|
||||||
expect "*Select an operation*"
|
expect "*Select an operation*"
|
||||||
send "\033\[B\r"
|
send "\033\[B\033\[B\r"
|
||||||
expect "*--bichon-root-dir*"
|
expect "*--bichon-root-dir*"
|
||||||
send "/opt/bichon-data\r"
|
send "/opt/bichon-data\r"
|
||||||
expect "*--bichon-index-dir*"
|
|
||||||
send "\r"
|
|
||||||
expect "*--bichon-data-dir*"
|
expect "*--bichon-data-dir*"
|
||||||
send "\r"
|
send "\r"
|
||||||
expect "*Ready to migrate?*"
|
expect "*batch size*"
|
||||||
send "y"
|
|
||||||
expect "*Enter batch size*"
|
|
||||||
send "1000\r"
|
send "1000\r"
|
||||||
expect eof
|
expect eof
|
||||||
catch wait
|
catch wait
|
||||||
EOF
|
EOF
|
||||||
$STD apt remove --purge expect -y
|
$STD apt remove --purge expect -y
|
||||||
$STD apt autoremove -y
|
$STD apt autoremove -y
|
||||||
msg_ok "Migration completed"
|
|
||||||
|
|
||||||
msg_info "Cleaning up legacy Bichon v0.x storage files"
|
if [[ ! -d /opt/bichon-data/bichon-storage/blobs ]] ||
|
||||||
rm -rf /opt/bichon-data/envelope
|
[[ "$(cat /opt/bichon-data/STORAGE_VERSION 2>/dev/null)" != "2" ]]; then
|
||||||
rm -rf /opt/bichon-data/eml
|
msg_error "Storage migration did not complete - service left stopped, legacy data untouched."
|
||||||
rm -f /opt/bichon-data/mailbox.db
|
msg_error "Run /opt/bichon/bichon-admin manually and select 'Migrate v1.x Storage to v2.x'."
|
||||||
rm -f /opt/bichon-data/meta.db
|
exit
|
||||||
msg_ok "Cleanup completed"
|
fi
|
||||||
|
msg_ok "Migrated storage to bichon-blob"
|
||||||
|
|
||||||
msg_info "Updating Bichon service for v1"
|
msg_info "Removing legacy fjall files"
|
||||||
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
|
rm -rf /opt/bichon-data/bichon-storage/keyspaces
|
||||||
systemctl daemon-reload
|
rm -f /opt/bichon-data/bichon-storage/0.jnl
|
||||||
msg_ok "Service updated"
|
rm -f /opt/bichon-data/bichon-storage/lock
|
||||||
|
rm -f /opt/bichon-data/bichon-storage/version
|
||||||
|
msg_ok "Removed legacy fjall files"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Starting service"
|
msg_info "Starting service"
|
||||||
|
|||||||
+13
-1
@@ -33,7 +33,19 @@ function update_script() {
|
|||||||
systemctl stop cleanuparr
|
systemctl stop cleanuparr
|
||||||
msg_ok "Stopped Service"
|
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"
|
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_ram="${var_ram:-1024}"
|
||||||
var_disk="${var_disk:-3}"
|
var_disk="${var_disk:-3}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-13}"
|
||||||
var_arm64="${var_arm64:-yes}"
|
var_arm64="${var_arm64:-yes}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
|
|
||||||
@@ -24,11 +24,35 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
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!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
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
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ function update_script() {
|
|||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="26" setup_nodejs
|
||||||
ensure_dependencies build-essential
|
ensure_dependencies build-essential
|
||||||
|
|
||||||
if command -v cross-seed &>/dev/null; then
|
if command -v cross-seed &>/dev/null; then
|
||||||
|
|||||||
+1
-1
@@ -100,7 +100,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
systemctl reload nginx
|
nginx_enable_site dispatcharr.conf
|
||||||
msg_ok "Migrated Nginx Configuration"
|
msg_ok "Migrated Nginx Configuration"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
+5
-5
@@ -27,8 +27,8 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "22" ]]; then
|
if ! command -v node >/dev/null || [[ "$(/usr/bin/env node -v | grep -oP '^v\K[0-9]+')" != "26" ]]; 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
|
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
|
fi
|
||||||
export NODE_OPTIONS="--max_old_space_size=4096"
|
export NODE_OPTIONS="--max_old_space_size=4096"
|
||||||
|
|
||||||
@@ -37,9 +37,9 @@ function update_script() {
|
|||||||
systemctl stop docmost
|
systemctl stop docmost
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
create_backup /opt/docmost/.env \
|
create_backup /opt/docmost/.env /opt/docmost/data
|
||||||
/opt/docmost/data
|
|
||||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
||||||
|
|
||||||
restore_backup
|
restore_backup
|
||||||
|
|
||||||
|
|||||||
@@ -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 </opt/feishin/settings.js.template >/etc/nginx/conf.d/settings.js
|
||||||
envsubst '${PUBLIC_PATH}' </opt/feishin/ng.conf.template >/etc/nginx/sites-available/feishin
|
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
|
nginx_enable_site feishin
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl restart nginx
|
|
||||||
msg_ok "Published Web Assets"
|
msg_ok "Published Web Assets"
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
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 @@
|
|||||||
|
____ ____
|
||||||
|
/ __ \___ ____ _____ _/ __ \_________ _ __
|
||||||
|
/ /_/ / _ \/ __ `/ __ `/ /_/ / ___/ __ \| |/_/
|
||||||
|
/ ____/ __/ /_/ / /_/ / ____/ / / /_/ /> <
|
||||||
|
/_/ \___/\__, /\__,_/_/ /_/ \____/_/|_|
|
||||||
|
/____/
|
||||||
+2
-1
@@ -110,7 +110,7 @@ EOF
|
|||||||
msg_ok "Image-processing libraries up to date"
|
msg_ok "Image-processing libraries up to date"
|
||||||
fi
|
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 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
|
if [[ $(cat ~/.immich) > "2.5.1" ]]; then
|
||||||
msg_info "Enabling Maintenance Mode"
|
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 -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"
|
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
|
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}" "$APP_DIR"/upload
|
||||||
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
ln -s "${UPLOAD_DIR:-/opt/immich/upload}" "$ML_DIR"/upload
|
||||||
ln -s "$GEO_DIR" "$APP_DIR"
|
ln -s "$GEO_DIR" "$APP_DIR"
|
||||||
|
|||||||
@@ -30,6 +30,25 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
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
|
if check_for_gh_release "immichframe" "immichFrame/ImmichFrame"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop immichframe
|
systemctl stop immichframe
|
||||||
|
|||||||
+6
-74
@@ -1,85 +1,17 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
|
||||||
# Copyright (c) 2021-2026 community-scripts ORG
|
# 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
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
# Source: https://musicseerr.com/ | Github: https://github.com/HabiRabbu/Musicseerr
|
|
||||||
|
|
||||||
APP="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"
|
header_info "$APP"
|
||||||
variables
|
variables
|
||||||
color
|
color
|
||||||
catch_errors
|
|
||||||
|
|
||||||
function update_script() {
|
msg_error "This script is no longer available."
|
||||||
header_info
|
msg_warn "MusicSeerr has been renamed to DroppedNeedle."
|
||||||
check_container_storage
|
msg_warn "Run the DroppedNeedle script to migrate an existing installation:"
|
||||||
check_container_resources
|
echo 'bash -c "$(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/droppedneedle.sh)"'
|
||||||
|
exit 1
|
||||||
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}"
|
|
||||||
|
|||||||
@@ -21,8 +21,6 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info "$APP"
|
|
||||||
|
|
||||||
msg_info "Updating Alpine OS"
|
msg_info "Updating Alpine OS"
|
||||||
$STD apk -U upgrade
|
$STD apk -U upgrade
|
||||||
msg_ok "System updated"
|
msg_ok "System updated"
|
||||||
@@ -30,10 +28,8 @@ function update_script() {
|
|||||||
msg_info "Pulling latest NPMplus container image"
|
msg_info "Pulling latest NPMplus container image"
|
||||||
cd /opt
|
cd /opt
|
||||||
$STD docker compose pull
|
$STD docker compose pull
|
||||||
msg_info "Recreating container"
|
|
||||||
$STD docker compose up -d
|
$STD docker compose up -d
|
||||||
msg_ok "Updated NPMplus container"
|
msg_ok "Updated NPMplus container"
|
||||||
|
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
exit
|
||||||
fi
|
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
|
if check_for_gh_release "outline" "outline/outline"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
|
|||||||
@@ -31,6 +31,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="26" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "OxiCloud" "DioCrafts/OxiCloud"; then
|
if check_for_gh_release "OxiCloud" "DioCrafts/OxiCloud"; then
|
||||||
msg_info "Stopping OxiCloud"
|
msg_info "Stopping OxiCloud"
|
||||||
systemctl stop oxicloud
|
systemctl stop oxicloud
|
||||||
|
|||||||
+3
-2
@@ -34,8 +34,9 @@ function update_script() {
|
|||||||
if [[ "$CURRENT_PHP" != "8.3" ]]; then
|
if [[ "$CURRENT_PHP" != "8.3" ]]; then
|
||||||
PHP_VERSION="8.3" PHP_FPM="YES" setup_php
|
PHP_VERSION="8.3" PHP_FPM="YES" setup_php
|
||||||
setup_composer
|
setup_composer
|
||||||
sed -i 's|php8\.2-fpm\.sock|php8.3-fpm.sock|g' /etc/nginx/sites-available/paymenter.conf
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
$STD systemctl reload nginx
|
sed -i "s|fastcgi_pass unix:.*|fastcgi_pass unix:${PHP_SOCK};|" /etc/nginx/sites-available/paymenter.conf
|
||||||
|
nginx_enable_site paymenter.conf
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if check_for_gh_release "paymenter" "paymenter/paymenter"; then
|
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!"
|
msg_error "No ${APP} installation found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="24" NODE_MODULE="playactor" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt"; then
|
if check_for_gh_release "ps5-mqtt" "FunkeyFlo/ps5-mqtt"; then
|
||||||
msg_info "Stopping service"
|
msg_info "Stopping service"
|
||||||
systemctl stop ps5-mqtt
|
systemctl stop ps5-mqtt
|
||||||
|
|||||||
+2
-2
@@ -62,9 +62,9 @@ function update_script() {
|
|||||||
msg_ok "Updated Configuration"
|
msg_ok "Updated Configuration"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
$STD nginx -t
|
|
||||||
systemctl daemon-reload
|
systemctl daemon-reload
|
||||||
systemctl start nginx rackula-api
|
nginx_enable_site rackula
|
||||||
|
systemctl start rackula-api
|
||||||
msg_ok "Started Services"
|
msg_ok "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
+11
-1
@@ -30,6 +30,12 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
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
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "romm" "rommapp/romm"; then
|
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"
|
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
|
restore_backup
|
||||||
|
|
||||||
msg_info "Updating ROMM"
|
msg_info "Updating ROMM"
|
||||||
@@ -75,7 +85,7 @@ function update_script() {
|
|||||||
systemctl reload angie
|
systemctl reload angie
|
||||||
elif [[ -f /etc/nginx/sites-available/romm ]]; then
|
elif [[ -f /etc/nginx/sites-available/romm ]]; then
|
||||||
sed -i "s|alias .*/library/;|alias ${ROMM_BASE}/library/;|" /etc/nginx/sites-available/romm
|
sed -i "s|alias .*/library/;|alias ${ROMM_BASE}/library/;|" /etc/nginx/sites-available/romm
|
||||||
systemctl reload nginx
|
nginx_enable_site romm
|
||||||
fi
|
fi
|
||||||
msg_ok "Updated ROMM"
|
msg_ok "Updated ROMM"
|
||||||
|
|
||||||
|
|||||||
+2
-1
@@ -93,7 +93,8 @@ EOF
|
|||||||
msg_ok "Refreshed SparkyFitness Service"
|
msg_ok "Refreshed SparkyFitness Service"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
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 "Started Services"
|
||||||
msg_ok "Updated successfully!"
|
msg_ok "Updated successfully!"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -30,6 +30,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "sync-in" "Sync-in/server"; then
|
if check_for_gh_release "sync-in" "Sync-in/server"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop sync-in
|
systemctl stop sync-in
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="26" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_tag "guacd" "apache/guacamole-server"; then
|
if check_for_gh_tag "guacd" "apache/guacamole-server"; then
|
||||||
msg_info "Stopping guacd"
|
msg_info "Stopping guacd"
|
||||||
|
|||||||
@@ -29,6 +29,18 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
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
|
if check_for_gh_release "UmlautAdaptarr" "PCJones/Umlautadaptarr"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop umlautadaptarr
|
systemctl stop umlautadaptarr
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ chmod -R 755 /opt/2fauth
|
|||||||
msg_ok "Setup 2fauth"
|
msg_ok "Setup 2fauth"
|
||||||
|
|
||||||
msg_info "Configure Service"
|
msg_info "Configure Service"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/conf.d/2fauth.conf
|
cat <<EOF >/etc/nginx/conf.d/2fauth.conf
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -67,7 +68,7 @@ server {
|
|||||||
error_page 404 /index.php;
|
error_page 404 /index.php;
|
||||||
|
|
||||||
location ~ \.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;
|
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -207,9 +207,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/affine.conf /etc/nginx/sites-enabled/
|
nginx_enable_site affine.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -89,10 +89,7 @@ server {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ln -sf /etc/nginx/sites-available/babybuddy /etc/nginx/sites-enabled/babybuddy
|
nginx_enable_site babybuddy
|
||||||
rm /etc/nginx/sites-enabled/default
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
service nginx reload
|
|
||||||
msg_ok "Configured NGINX"
|
msg_ok "Configured NGINX"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ $STD npm run build
|
|||||||
msg_ok "Installed Salt Rim"
|
msg_ok "Installed Salt Rim"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/sites-available/barassistant.conf
|
cat <<EOF >/etc/nginx/sites-available/barassistant.conf
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
@@ -126,7 +127,7 @@ server {
|
|||||||
error_page 404 /index.php;
|
error_page 404 /index.php;
|
||||||
|
|
||||||
location ~ ^/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;
|
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_hide_header X-Powered-By;
|
fastcgi_hide_header X-Powered-By;
|
||||||
@@ -148,9 +149,7 @@ server {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ln -s /etc/nginx/sites-available/barassistant.conf /etc/nginx/sites-enabled/
|
nginx_enable_site barassistant.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
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
|
sed -i.bak 's/--only-binary=Pillow//g' /opt/bazarr/requirements.txt
|
||||||
$STD uv venv --clear /opt/bazarr/venv --python 3.12
|
$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 -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_ok "Installed Bazarr"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@@ -36,7 +37,7 @@ UMask=0002
|
|||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
Type=simple
|
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
|
KillSignal=SIGINT
|
||||||
TimeoutStopSec=20
|
TimeoutStopSec=20
|
||||||
SyslogIdentifier=bazarr
|
SyslogIdentifier=bazarr
|
||||||
|
|||||||
@@ -60,7 +60,7 @@ LimitNOFILE=65536
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable -q --now bichon
|
systemctl enable -q --now bichon
|
||||||
msg_info "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|||||||
@@ -122,9 +122,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/checkmate /etc/nginx/sites-enabled/checkmate
|
nginx_enable_site checkmate
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx Reverse Proxy"
|
msg_ok "Configured Nginx Reverse Proxy"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ update_os
|
|||||||
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
fetch_and_deploy_gh_release "Cleanuparr" "Cleanuparr/Cleanuparr" "prebuild" "latest" "/opt/cleanuparr" "*linux-$(arch_resolve).zip"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
mkdir -p /etc/cleanuparr /var/log/cleanuparr
|
||||||
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
cat <<EOF >/etc/systemd/system/cleanuparr.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Cleanuparr Daemon
|
Description=Cleanuparr Daemon
|
||||||
@@ -29,7 +30,8 @@ ExecStart=/opt/cleanuparr/Cleanuparr
|
|||||||
Restart=on-failure
|
Restart=on-failure
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
Environment="PORT=11011"
|
Environment="PORT=11011"
|
||||||
Environment="CONFIG_DIR=/opt/cleanuparr/config"
|
Environment="CLEANUPARR_CONFIG_PATH=/etc/cleanuparr"
|
||||||
|
Environment="CLEANUPARR_LOGS_PATH=/var/log/cleanuparr"
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -13,8 +13,6 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
setup_go
|
|
||||||
|
|
||||||
var_cf_api_token="default"
|
var_cf_api_token="default"
|
||||||
read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
|
read -rp "${TAB3}Enter the Cloudflare API token: " var_cf_api_token
|
||||||
|
|
||||||
@@ -53,23 +51,50 @@ while true; do
|
|||||||
done
|
done
|
||||||
msg_ok "Configured Application"
|
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"
|
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
|
cat <<EOF >/etc/systemd/system/cloudflare-ddns.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Cloudflare DDNS Service (Go run)
|
Description=Cloudflare DDNS Service
|
||||||
After=network.target
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
Environment="CLOUDFLARE_API_TOKEN=${var_cf_api_token}"
|
Type=simple
|
||||||
Environment="DOMAINS=${var_cf_domains}"
|
User=cloudflare-ddns
|
||||||
Environment="PROXIED=${var_cf_proxied}"
|
Group=cloudflare-ddns
|
||||||
Environment="IP6_PROVIDER=${var_cf_ip6_provider}"
|
EnvironmentFile=/etc/cloudflare-ddns.env
|
||||||
Environment="GOPATH=/root/go"
|
ExecStart=/usr/local/bin/ddns
|
||||||
Environment="GOCACHE=/tmp/go-build"
|
|
||||||
ExecStart=/usr/local/bin/go run github.com/favonia/cloudflare-ddns/cmd/ddns@latest
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=300
|
RestartSec=300
|
||||||
|
NoNewPrivileges=true
|
||||||
|
ProtectSystem=strict
|
||||||
|
ProtectHome=true
|
||||||
|
PrivateTmp=true
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y build-essential
|
$STD apt install -y build-essential
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="26" setup_nodejs
|
||||||
|
|
||||||
msg_info "Setup Cross-Seed"
|
msg_info "Setup Cross-Seed"
|
||||||
$STD npm install cross-seed@latest -g
|
$STD npm install cross-seed@latest -g
|
||||||
|
|||||||
@@ -185,11 +185,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/databasus /etc/nginx/sites-enabled/databasus
|
nginx_enable_site databasus
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD nginx -t
|
|
||||||
$STD systemctl enable -q --now nginx
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -174,9 +174,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/dawarich.conf /etc/nginx/sites-enabled/
|
nginx_enable_site dawarich.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -207,10 +207,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/discourse /etc/nginx/sites-enabled/discourse
|
nginx_enable_site discourse
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl enable --now nginx
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -139,9 +139,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/dispatcharr.conf /etc/nginx/sites-enabled/dispatcharr.conf
|
nginx_enable_site dispatcharr.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl restart nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Creating Services"
|
msg_info "Creating Services"
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ $STD apt install -y \
|
|||||||
make
|
make
|
||||||
msg_ok "Installed Dependencies"
|
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_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
|
PG_DB_NAME="docmost_db" PG_DB_USER="docmost_user" setup_postgresql_db
|
||||||
fetch_and_deploy_gh_release "docmost" "docmost/docmost" "tarball"
|
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
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/espconnect /etc/nginx/sites-enabled/espconnect
|
nginx_enable_site espconnect
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD nginx -t
|
|
||||||
systemctl enable -q nginx
|
|
||||||
systemctl restart nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -108,9 +108,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/excalidash /etc/nginx/sites-enabled/excalidash
|
nginx_enable_site excalidash
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
|
|||||||
@@ -57,10 +57,7 @@ set +a
|
|||||||
envsubst </opt/feishin/settings.js.template >/etc/nginx/conf.d/settings.js
|
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
|
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
|
nginx_enable_site feishin
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Published Web Assets"
|
msg_ok "Published Web Assets"
|
||||||
|
|
||||||
motd_ssh
|
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;
|
error_log /var/log/geopulse/nginx/error.log;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/geopulse.conf /etc/nginx/sites-enabled/
|
nginx_enable_site geopulse.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Creating Admin Helper"
|
msg_info "Creating Admin Helper"
|
||||||
|
|||||||
@@ -26,9 +26,7 @@ chown -R www-data:www-data /opt/grav
|
|||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
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)
|
PHP_FPM_SOCK=$(get_php_fpm_socket)
|
||||||
unlink /etc/nginx/sites-enabled/default
|
|
||||||
rm -f /etc/nginx/sites-available/default
|
|
||||||
cat <<EOF >/etc/nginx/sites-available/grav
|
cat <<EOF >/etc/nginx/sites-available/grav
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -99,11 +97,8 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/grav /etc/nginx/sites-enabled/grav
|
|
||||||
systemctl enable -q --now php${PHP_VER}-fpm
|
systemctl enable -q --now php${PHP_VER}-fpm
|
||||||
$STD nginx -t
|
nginx_enable_site grav
|
||||||
systemctl enable -q --now nginx
|
|
||||||
$STD nginx -s reload
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -312,7 +312,7 @@ ML_DIR="${APP_DIR}/machine-learning"
|
|||||||
GEO_DIR="${INSTALL_DIR}/geodata"
|
GEO_DIR="${INSTALL_DIR}/geodata"
|
||||||
mkdir -p {"${APP_DIR}","${UPLOAD_DIR}","${GEO_DIR}","${INSTALL_DIR}"/cache}
|
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)"
|
PNPM_VERSION="$(jq -r '.packageManager | split("@")[1] | split("+")[0]' ${SRC_DIR}/package.json)"
|
||||||
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
|
||||||
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
NODE_VERSION="24" NODE_MODULE="corepack" setup_nodejs
|
||||||
@@ -429,6 +429,7 @@ msg_info "Installing GeoNames data"
|
|||||||
cd "$GEO_DIR"
|
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/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/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://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"
|
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
|
unzip -q cities500.zip
|
||||||
|
|||||||
@@ -115,6 +115,7 @@ chmod -R 775 /opt/investbrain/bootstrap/cache
|
|||||||
msg_ok "Installed Investbrain"
|
msg_ok "Installed Investbrain"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/sites-available/investbrain.conf
|
cat <<EOF >/etc/nginx/sites-available/investbrain.conf
|
||||||
server {
|
server {
|
||||||
listen 8000 default_server;
|
listen 8000 default_server;
|
||||||
@@ -135,7 +136,7 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location ~ \.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;
|
fastcgi_param SCRIPT_FILENAME \$realpath_root\$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_hide_header X-Powered-By;
|
fastcgi_hide_header X-Powered-By;
|
||||||
@@ -150,9 +151,7 @@ server {
|
|||||||
access_log /var/log/nginx/investbrain_access.log;
|
access_log /var/log/nginx/investbrain_access.log;
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/investbrain.conf /etc/nginx/sites-enabled/
|
nginx_enable_site investbrain.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Setting up Supervisor"
|
msg_info "Setting up Supervisor"
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ chown -R www-data:www-data /opt/invoiceninja
|
|||||||
msg_ok "Set up Database"
|
msg_ok "Set up Database"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<'EOF' >/etc/nginx/sites-available/invoiceninja
|
cat <<'EOF' >/etc/nginx/sites-available/invoiceninja
|
||||||
server {
|
server {
|
||||||
listen 8080;
|
listen 8080;
|
||||||
@@ -130,7 +131,7 @@ server {
|
|||||||
}
|
}
|
||||||
|
|
||||||
location = /index.php {
|
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;
|
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
fastcgi_param HTTP_X_FORWARDED_HOST $http_host;
|
fastcgi_param HTTP_X_FORWARDED_HOST $http_host;
|
||||||
@@ -151,9 +152,8 @@ server {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ln -sf /etc/nginx/sites-available/invoiceninja /etc/nginx/sites-enabled/
|
sed -i "s|__PHP_SOCK__|${PHP_SOCK}|" /etc/nginx/sites-available/invoiceninja
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
nginx_enable_site invoiceninja
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Setting up Queue Worker"
|
msg_info "Setting up Queue Worker"
|
||||||
|
|||||||
@@ -56,10 +56,11 @@ msg_ok "Set up InvoiceShelf"
|
|||||||
|
|
||||||
msg_info "Configuring Caddy"
|
msg_info "Configuring Caddy"
|
||||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/caddy/Caddyfile
|
cat <<EOF >/etc/caddy/Caddyfile
|
||||||
:80 {
|
:80 {
|
||||||
root * /opt/invoiceshelf/public
|
root * /opt/invoiceshelf/public
|
||||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
php_fastcgi unix/${PHP_SOCK}
|
||||||
file_server
|
file_server
|
||||||
encode gzip
|
encode gzip
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ systemctl enable -q --now kitchenowl
|
|||||||
msg_ok "Created and Started Service"
|
msg_ok "Created and Started Service"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
cat <<'EOF' >/etc/nginx/sites-available/kitchenowl.conf
|
cat <<'EOF' >/etc/nginx/sites-available/kitchenowl.conf
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -134,9 +133,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/kitchenowl.conf /etc/nginx/sites-enabled/
|
nginx_enable_site kitchenowl.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -129,6 +129,7 @@ $STD systemctl restart php8.4-fpm
|
|||||||
msg_ok "Tuned PHP-FPM"
|
msg_ok "Tuned PHP-FPM"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<'EOF' >/etc/nginx/sites-available/koel
|
cat <<'EOF' >/etc/nginx/sites-available/koel
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -156,7 +157,7 @@ server {
|
|||||||
|
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
try_files $uri $uri/ /index.php?$args;
|
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_index index.php;
|
||||||
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
||||||
fastcgi_intercept_errors on;
|
fastcgi_intercept_errors on;
|
||||||
@@ -171,9 +172,8 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
sed -i "s|__PHP_SOCK__|${PHP_SOCK}|" /etc/nginx/sites-available/koel
|
||||||
ln -sf /etc/nginx/sites-available/koel /etc/nginx/sites-enabled/koel
|
nginx_enable_site koel
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
msg_info "Setting up Cron Job"
|
msg_info "Setting up Cron Job"
|
||||||
|
|||||||
@@ -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_ok "Configured PHP-FPM"
|
||||||
|
|
||||||
msg_info "Configure Nginx"
|
msg_info "Configure Nginx"
|
||||||
cat <<EOF >/etc/nginx/sites-enabled/librenms
|
cat <<EOF >/etc/nginx/sites-available/librenms
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
server_name ${LOCAL_IP};
|
server_name ${LOCAL_IP};
|
||||||
@@ -103,8 +103,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
rm /etc/nginx/sites-enabled/default
|
nginx_enable_site librenms
|
||||||
$STD systemctl reload nginx
|
|
||||||
systemctl restart php8.4-fpm
|
systemctl restart php8.4-fpm
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
|
|||||||
@@ -115,10 +115,8 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
$STD rm -f /etc/nginx/sites-enabled/default
|
systemctl enable -q --now linkding linkding-tasks
|
||||||
$STD ln -sf /etc/nginx/sites-available/linkding /etc/nginx/sites-enabled/linkding
|
nginx_enable_site linkding
|
||||||
systemctl enable -q --now nginx linkding linkding-tasks
|
|
||||||
systemctl restart nginx
|
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -56,10 +56,11 @@ chown -R www-data:www-data /opt/lychee
|
|||||||
|
|
||||||
msg_info "Configuring Caddy"
|
msg_info "Configuring Caddy"
|
||||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/caddy/Caddyfile
|
cat <<EOF >/etc/caddy/Caddyfile
|
||||||
:80 {
|
:80 {
|
||||||
root * /opt/lychee/public
|
root * /opt/lychee/public
|
||||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
php_fastcgi unix/${PHP_SOCK}
|
||||||
file_server
|
file_server
|
||||||
encode gzip
|
encode gzip
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -134,9 +134,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -s /etc/nginx/sites-available/manyfold.conf /etc/nginx/sites-enabled/
|
nginx_enable_site manyfold.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Created Services"
|
msg_ok "Created Services"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -262,12 +262,8 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
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 redis-server
|
||||||
systemctl enable -q --now nginx
|
nginx_enable_site mastodon
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -45,12 +45,13 @@ msg_ok "Set up Matomo"
|
|||||||
|
|
||||||
msg_info "Configuring Caddy"
|
msg_info "Configuring Caddy"
|
||||||
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
PHP_VER=$(php -r 'echo PHP_MAJOR_VERSION . "." . PHP_MINOR_VERSION;')
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/caddy/Caddyfile
|
cat <<EOF >/etc/caddy/Caddyfile
|
||||||
:80 {
|
:80 {
|
||||||
root * /opt/matomo
|
root * /opt/matomo
|
||||||
@blocked path /config /config/* /tmp /tmp/* /.* /.*/*
|
@blocked path /config /config/* /tmp /tmp/* /.* /.*/*
|
||||||
respond @blocked 403
|
respond @blocked 403
|
||||||
php_fastcgi unix//run/php/php${PHP_VER}-fpm.sock
|
php_fastcgi unix/${PHP_SOCK}
|
||||||
file_server
|
file_server
|
||||||
encode gzip
|
encode gzip
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -19,12 +19,16 @@ $STD apt install -y \
|
|||||||
git-core \
|
git-core \
|
||||||
mediainfo
|
mediainfo
|
||||||
|
|
||||||
cat <<EOF >/etc/apt/sources.list.d/non-free.list
|
cat <<EOF >/etc/apt/sources.list.d/non-free.sources
|
||||||
deb https://deb.debian.org/debian trixie main contrib non-free non-free-firmware
|
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
|
EOF
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt install -y unrar
|
$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_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Medusa"
|
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
|
|
||||||
@@ -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"
|
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"
|
msg_info "Configuring Webserver"
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
cat <<'EOF' >/etc/nginx/sites-available/netboot-xyz
|
cat <<'EOF' >/etc/nginx/sites-available/netboot-xyz
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
@@ -83,8 +82,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/netboot-xyz /etc/nginx/sites-enabled/netboot-xyz
|
nginx_enable_site netboot-xyz
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Webserver"
|
msg_ok "Configured Webserver"
|
||||||
|
|
||||||
msg_info "Configuring TFTP Server"
|
msg_info "Configuring TFTP Server"
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
NODE_VERSION="24" setup_nodejs
|
||||||
|
|
||||||
|
msg_info "Installing OmniRoute"
|
||||||
|
$STD npm install -g omniroute@latest
|
||||||
|
msg_ok "Installed OmniRoute"
|
||||||
|
|
||||||
|
msg_info "Configuring OmniRoute"
|
||||||
|
mkdir -p /opt/omniroute
|
||||||
|
cat <<EOF >/opt/omniroute/.env
|
||||||
|
JWT_SECRET=$(openssl rand -base64 48)
|
||||||
|
API_KEY_SECRET=$(openssl rand -hex 32)
|
||||||
|
STORAGE_ENCRYPTION_KEY=$(openssl rand -hex 32)
|
||||||
|
STORAGE_ENCRYPTION_KEY_VERSION=v1
|
||||||
|
INITIAL_PASSWORD=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-20)
|
||||||
|
PORT=20128
|
||||||
|
OMNIROUTE_SERVER_HOST=0.0.0.0
|
||||||
|
EOF
|
||||||
|
chmod 600 /opt/omniroute/.env
|
||||||
|
msg_ok "Configured OmniRoute"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/omniroute.service
|
||||||
|
[Unit]
|
||||||
|
Description=OmniRoute AI Gateway
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/omniroute
|
||||||
|
Environment=DATA_DIR=/opt/omniroute
|
||||||
|
ExecStart=/usr/bin/omniroute
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now omniroute
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -55,11 +55,7 @@ server {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ln -sf /etc/nginx/sites-available/omnitools /etc/nginx/sites-enabled/omnitools
|
nginx_enable_site omnitools
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD nginx -t
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -62,9 +62,7 @@ server {
|
|||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
ln -s /etc/nginx/sites-available/ots.conf /etc/nginx/sites-enabled/
|
nginx_enable_site ots.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured nginx"
|
msg_ok "Configured nginx"
|
||||||
|
|
||||||
msg_info "Creating Services"
|
msg_info "Creating Services"
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $STD apt install -y \
|
|||||||
redis
|
redis
|
||||||
msg_ok "Installed Dependencies"
|
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_VERSION="16" setup_postgresql
|
||||||
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
|
PG_DB_NAME="outline" PG_DB_USER="outline" setup_postgresql_db
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt install -y build-essential
|
$STD apt install -y build-essential
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="24" setup_nodejs
|
NODE_VERSION="26" setup_nodejs
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PG_DB_NAME="oxicloud" PG_DB_USER="oxicloud" setup_postgresql_db
|
PG_DB_NAME="oxicloud" PG_DB_USER="oxicloud" setup_postgresql_db
|
||||||
fetch_and_deploy_gh_release "OxiCloud" "DioCrafts/OxiCloud" "tarball" "latest" "/opt/oxicloud"
|
fetch_and_deploy_gh_release "OxiCloud" "DioCrafts/OxiCloud" "tarball" "latest" "/opt/oxicloud"
|
||||||
|
|||||||
@@ -57,6 +57,7 @@ $STD php artisan app:user:create paymenter admin admin@paymenter.org paymenter 1
|
|||||||
msg_ok "Created Admin User"
|
msg_ok "Created Admin User"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/sites-available/paymenter.conf
|
cat <<EOF >/etc/nginx/sites-available/paymenter.conf
|
||||||
server {
|
server {
|
||||||
listen 80;
|
listen 80;
|
||||||
@@ -72,7 +73,7 @@ server {
|
|||||||
|
|
||||||
location ~ \.php\$ {
|
location ~ \.php\$ {
|
||||||
include snippets/fastcgi-php.conf;
|
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;
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
}
|
}
|
||||||
@@ -82,9 +83,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -s /etc/nginx/sites-available/paymenter.conf /etc/nginx/sites-enabled/
|
nginx_enable_site paymenter.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
chown -R www-data:www-data /opt/paymenter/*
|
chown -R www-data:www-data /opt/paymenter/*
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,60 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# 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
|
||||||
|
|
||||||
|
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 sshpass
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "pegaprox" "PegaProx/project-pegaprox" "tarball"
|
||||||
|
|
||||||
|
msg_info "Setting up 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 "Set up Python Environment"
|
||||||
|
|
||||||
|
msg_info "Generating Master Key"
|
||||||
|
mkdir -p /etc/pegaprox
|
||||||
|
cat <<EOF >/etc/pegaprox/secret.key
|
||||||
|
$(openssl rand -base64 32 | tr '+/' '-_')
|
||||||
|
EOF
|
||||||
|
chmod 600 /etc/pegaprox/secret.key
|
||||||
|
msg_ok "Generated Master Key"
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/pegaprox.service
|
||||||
|
[Unit]
|
||||||
|
Description=PegaProx - Multi-Cluster Proxmox VE Management
|
||||||
|
After=network-online.target
|
||||||
|
Wants=network-online.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
WorkingDirectory=/opt/pegaprox
|
||||||
|
ExecStart=/opt/pegaprox/venv/bin/python /opt/pegaprox/pegaprox_multi_cluster.py
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now pegaprox
|
||||||
|
msg_ok "Created Service"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
cleanup_lxc
|
||||||
@@ -376,9 +376,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/plane.conf /etc/nginx/sites-enabled/plane.conf
|
nginx_enable_site plane.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -236,11 +236,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/postiz /etc/nginx/sites-enabled/postiz
|
nginx_enable_site postiz
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD nginx -t
|
|
||||||
systemctl enable -q nginx
|
|
||||||
systemctl reload -q nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ chown -R www-data:www-data /var/www/html
|
|||||||
msg_ok "Deployed Poznote"
|
msg_ok "Deployed Poznote"
|
||||||
|
|
||||||
msg_info "Configuring Nginx"
|
msg_info "Configuring Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/sites-available/poznote
|
cat <<EOF >/etc/nginx/sites-available/poznote
|
||||||
server {
|
server {
|
||||||
listen 8040;
|
listen 8040;
|
||||||
@@ -41,7 +42,7 @@ server {
|
|||||||
|
|
||||||
location ~ \.php$ {
|
location ~ \.php$ {
|
||||||
include fastcgi_params;
|
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 SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
fastcgi_param DOCUMENT_ROOT \$document_root;
|
fastcgi_param DOCUMENT_ROOT \$document_root;
|
||||||
}
|
}
|
||||||
@@ -51,11 +52,7 @@ server {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -sf /etc/nginx/sites-available/poznote /etc/nginx/sites-enabled/poznote
|
nginx_enable_site poznote
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
$STD nginx -t
|
|
||||||
systemctl enable -q --now nginx
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Configured Nginx"
|
msg_ok "Configured Nginx"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -37,6 +37,7 @@ systemctl restart php8.2-fpm
|
|||||||
msg_ok "Configured PHP"
|
msg_ok "Configured PHP"
|
||||||
|
|
||||||
msg_info "Configuring Universal Nginx"
|
msg_info "Configuring Universal Nginx"
|
||||||
|
PHP_SOCK=$(get_php_fpm_socket)
|
||||||
cat <<EOF >/etc/nginx/sites-available/privatebin.conf
|
cat <<EOF >/etc/nginx/sites-available/privatebin.conf
|
||||||
server {
|
server {
|
||||||
listen 80 default_server;
|
listen 80 default_server;
|
||||||
@@ -60,7 +61,7 @@ server {
|
|||||||
|
|
||||||
location ~ \.php\$ {
|
location ~ \.php\$ {
|
||||||
include snippets/fastcgi-php.conf;
|
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;
|
fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
|
||||||
include fastcgi_params;
|
include fastcgi_params;
|
||||||
}
|
}
|
||||||
@@ -75,9 +76,7 @@ server {
|
|||||||
add_header X-XSS-Protection "1; mode=block";
|
add_header X-XSS-Protection "1; mode=block";
|
||||||
}
|
}
|
||||||
EOF
|
EOF
|
||||||
ln -s /etc/nginx/sites-available/privatebin.conf /etc/nginx/sites-enabled/
|
nginx_enable_site privatebin.conf
|
||||||
rm -f /etc/nginx/sites-enabled/default
|
|
||||||
systemctl reload nginx
|
|
||||||
msg_ok "Nginx Configured"
|
msg_ok "Nginx Configured"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user