Compare commits

...

59 Commits

Author SHA1 Message Date
community-scripts-pr-app[bot]
fef7786714 Update CHANGELOG.md (#7756)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 00:12:08 +00:00
community-scripts-pr-app[bot]
0dfd337a9a Update versions.json (#7755)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-20 02:11:46 +02:00
community-scripts-pr-app[bot]
d99862fa24 Update CHANGELOG.md (#7747)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 18:52:42 +00:00
Slaviša Arežina
ac08d385c0 SigNoz: Fix wrong URL for Zookeeper (#7742)
* Fix install

* Update signoz-install.sh
2025-09-19 20:52:11 +02:00
community-scripts-pr-app[bot]
7a9de76acb Update CHANGELOG.md (#7745)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:29 +00:00
community-scripts-pr-app[bot]
35f3f043a7 Update CHANGELOG.md (#7744)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:13 +00:00
community-scripts-pr-app[bot]
4276df26d7 Update date in json (#7743)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-19 12:57:07 +00:00
push-app-to-main[bot]
5fec573533 Tunarr (#7735)
* 'Add new script'

* Refactor Intel Hardware Acceleration installation script

* Refactor hardware acceleration setup in tunarr-install.sh

Updated prompts and adjusted user group permissions for hardware acceleration setup.

---------

Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
2025-09-19 14:56:46 +02:00
community-scripts-pr-app[bot]
ebd269a808 Update versions.json (#7740)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 14:07:04 +02:00
community-scripts-pr-app[bot]
532c0a95bb Update CHANGELOG.md (#7734)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 00:12:32 +00:00
community-scripts-pr-app[bot]
c078b11aa9 Update versions.json (#7733)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-19 02:12:09 +02:00
community-scripts-pr-app[bot]
ab8b025824 Update CHANGELOG.md (#7729)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 19:16:16 +00:00
Chris
e2044a0572 Immich: Debian Trixie (#7728)
* Immich: Debian Trixie

- Use Debian Stable repo for all dependencies
- Remove unneeded dependencies
- Replace `libmimalloc2.0` with `libmimalloc3`
- Remove pre-1.140.x workarounds
- Pin an Intel OpenVINO dependency
- Force use of Python3.11 for machine-learning builds
- Unpin custom photo-library revisions
- Remove old vchord patches
- Remove DB collation version refresh
- Exit on detection of Debian 12 or below with message
- Force hardlink as pnpm import method (fixes #7192)

* Update immich.sh

---------

Co-authored-by: Tobias <96661824+CrazyWolf13@users.noreply.github.com>
2025-09-18 21:15:54 +02:00
community-scripts-pr-app[bot]
59e65eaba3 Update CHANGELOG.md (#7727)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 18:11:19 +00:00
Tobias
a2306d6b32 Delay chmod after updating beszel (#7725) 2025-09-18 20:10:51 +02:00
community-scripts-pr-app[bot]
3e71af1895 Update CHANGELOG.md (#7724)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 17:04:20 +00:00
Giovanni Pellerano
8a3b41867b Remove redundant globaleaks configuration (#7723) 2025-09-18 19:03:53 +02:00
community-scripts-pr-app[bot]
b4b9efeff2 Update CHANGELOG.md (#7722)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 13:23:20 +00:00
CanbiZ
5e2168b2d1 Cloudflared: Bump to Debian 13 (#7719) 2025-09-18 15:22:51 +02:00
community-scripts-pr-app[bot]
c00c1deb79 Update CHANGELOG.md (#7721)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 13:20:42 +00:00
CanbiZ
37e3739bd2 Update AdGuard Home to Debian 13 and improve install (#7720) 2025-09-18 15:20:15 +02:00
community-scripts-pr-app[bot]
f5eda37397 Update versions.json (#7718)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 14:07:02 +02:00
community-scripts-pr-app[bot]
9e42c801f1 Update .app files (#7717)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-18 13:26:53 +02:00
community-scripts-pr-app[bot]
e4d6dfc885 Update CHANGELOG.md (#7716)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 10:57:57 +00:00
Slaviša Arežina
14894f84b6 Alpine-Caddy (#7711) 2025-09-18 12:57:30 +02:00
community-scripts-pr-app[bot]
b5f70e6e77 Update CHANGELOG.md (#7715)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 10:56:31 +00:00
CanbiZ
2919ce16f1 pve-tool: execute.sh by @jeroenzwart (#7708) 2025-09-18 12:56:01 +02:00
community-scripts-pr-app[bot]
38cf6b2f46 Update CHANGELOG.md (#7714)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 10:20:34 +00:00
community-scripts-pr-app[bot]
c390fb925d Update CHANGELOG.md (#7713)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 10:20:15 +00:00
community-scripts-pr-app[bot]
a28fdac3f0 Update date in json (#7712)
Co-authored-by: GitHub Actions <github-actions[bot]@users.noreply.github.com>
2025-09-18 10:20:12 +00:00
push-app-to-main[bot]
41b27b31dc GlobaLeaks (#7707)
Co-authored-by: push-app-to-main[bot] <203845782+push-app-to-main[bot]@users.noreply.github.com>
Co-authored-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
Co-authored-by: Slaviša Arežina <58952836+tremor021@users.noreply.github.com>
2025-09-18 12:19:52 +02:00
CanbiZ
7ef8afe4d2 Refactor autolabeler workflow to simplify steps 2025-09-18 12:06:04 +02:00
CanbiZ
694d9c203e Refactor AI label review workflow and improve config 2025-09-18 12:03:52 +02:00
CanbiZ
76dcc45e9f Update autolabeler to use environment variable for config 2025-09-18 12:01:42 +02:00
CanbiZ
a0952e9f69 Use jq to load priority config from JSON 2025-09-18 11:58:39 +02:00
community-scripts-pr-app[bot]
3bd6b6e540 Update CHANGELOG.md (#7710)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 09:53:42 +00:00
community-scripts-pr-app[bot]
61be53cc26 Update CHANGELOG.md (#7709)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 09:53:28 +00:00
CanbiZ
02eda516df Add label priority configuration for GitHub 2025-09-18 11:53:20 +02:00
CanbiZ
25213fabaa Add AI label review step to autolabeler workflow 2025-09-18 11:53:02 +02:00
Zachary Laughlin
ad8a4f63c4 Add warning note about containerized version limitations (#7704) 2025-09-18 09:30:09 +02:00
community-scripts-pr-app[bot]
bcce0e20c1 Update CHANGELOG.md (#7706)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 06:55:10 +00:00
Chris
515c4073c4 Gatus: check for GO path before update (#7705) 2025-09-18 08:54:47 +02:00
community-scripts-pr-app[bot]
30e22ff661 Update CHANGELOG.md (#7703)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 00:12:12 +00:00
community-scripts-pr-app[bot]
8265abfb20 Update versions.json (#7702)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-18 02:11:50 +02:00
community-scripts-pr-app[bot]
b40d061f3e Update CHANGELOG.md (#7699)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 20:09:44 +00:00
Tobias
efe598d6ec beszel: fix: binary permission after upgrade (#7697) 2025-09-17 22:09:17 +02:00
community-scripts-pr-app[bot]
82caa8769e Update CHANGELOG.md (#7696)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 15:26:48 +00:00
CanbiZ
7961023f8c Improve: SECURITY.md for clarity and detail + Adding PVE9 as supported (#7690) 2025-09-17 17:26:17 +02:00
community-scripts-pr-app[bot]
ea58fdb7e0 Update CHANGELOG.md (#7694)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 14:43:27 +00:00
community-scripts-pr-app[bot]
238895534a Update CHANGELOG.md (#7693)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 14:43:07 +00:00
Slaviša Arežina
cc1c2f84ca Refactor: Grist (#7681)
* Refactor

* Refactor
2025-09-17 16:42:54 +02:00
Slaviša Arežina
3aff0d9d7e RabbitMQ: Update repositories (#7689)
* Update repos

* Update

* Update

* Update
2025-09-17 16:42:37 +02:00
community-scripts-pr-app[bot]
7cd332680a Update versions.json (#7688)
Co-authored-by: GitHub Actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 14:05:41 +02:00
community-scripts-pr-app[bot]
382e679842 Update CHANGELOG.md (#7685)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 08:17:57 +00:00
hanneshier
a3b5f798de Add docker compose pull for actually updating images (#7682) 2025-09-17 10:17:29 +02:00
community-scripts-pr-app[bot]
c22630c887 Update CHANGELOG.md (#7684)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 08:04:07 +00:00
CanbiZ
542f260f31 Debian-LXC: Bump to Debian 13 Trixie (#7683) 2025-09-17 10:03:42 +02:00
community-scripts-pr-app[bot]
a40cc130bd Update CHANGELOG.md (#7680)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2025-09-17 06:57:26 +00:00
Chris
7311f1b843 Bump Immich to v1.142.1 (#7675)
- no changes to script required
2025-09-17 08:57:01 +02:00
41 changed files with 1368 additions and 534 deletions

38
.github/label-priority.json generated vendored Normal file
View File

@@ -0,0 +1,38 @@
{
"priorities": {
"refactor": 3,
"feature": 2,
"bugfix": 1,
"new script": 3,
"update script": 2,
"delete script": 2,
"json": 3,
"website": 2,
"maintenance": 1,
"documentation": 1,
"core": 2,
"api": 2,
"addon": 2,
"pve-tool": 2,
"vm": 2,
"github": 1
},
"conflicts": {
"bugfix": ["refactor"],
"website": ["json"],
"update script": ["new script", "delete script"],
"new script": ["update script", "delete script"],
"delete script": ["new script", "update script"]
},
"rules": {
"always_combine": [
"maintenance",
"core",
"api",
"addon",
"pve-tool",
"vm",
"github"
]
}
}

116
.github/workflows/autolabeler.yml generated vendored
View File

@@ -112,3 +112,119 @@ jobs:
labels: Array.from(labelsToAdd), labels: Array.from(labelsToAdd),
}); });
} }
ai-check:
needs: autolabeler
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load priority config
run: |
echo "PRIORITY_JSON=$(jq -c . .github/label-priority.json)" >> $GITHUB_ENV
- name: Fetch PR metadata
id: pr
uses: actions/github-script@v7
with:
script: |
const pr = context.payload.pull_request;
const files = await github.rest.pulls.listFiles({
owner: context.repo.owner,
repo: context.repo.repo,
pull_number: pr.number
});
const prData = {
title: pr.title || "",
body: pr.body || "",
files: files.data.map(f => f.filename)
};
require('fs').writeFileSync(process.env.GITHUB_ENV, `PR_DATA=${JSON.stringify(prData)}\n`, {flag: 'a'});
- name: AI Label Review
id: ai
uses: actions/github-script@v7
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
with:
script: |
const prData = JSON.parse(process.env.PR_DATA);
const prompt = `
You are a GitHub labeling bot.
Task:
- Analyze PR title, body, and file list.
- For each possible label, return a confidence score (01).
- If both bugfix and refactor apply, prefer refactor.
- Output JSON: {"labels":[{"name":"bugfix","score":0.9},{"name":"refactor","score":0.6}]}
Valid labels: [new script, update script, delete script, bugfix, feature, maintenance, refactor, website, json, api, core, github, addon, pve-tool, vm].
PR data: ${JSON.stringify(prData)}
`;
const response = await fetch("https://api.openai.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer " + process.env.OPENAI_API_KEY,
},
body: JSON.stringify({
model: "gpt-4.1-mini",
messages: [{ role: "user", content: prompt }],
temperature: 0
})
});
const data = await response.json();
const labels = JSON.parse(data.choices[0].message.content).labels;
core.setOutput("labels", JSON.stringify(labels));
- name: Apply AI Labels
uses: actions/github-script@v7
with:
script: |
const raw = JSON.parse('${{ steps.ai.outputs.labels }}');
const prNumber = context.payload.pull_request.number;
const config = JSON.parse(process.env.PRIORITY_JSON);
let toApply = [];
let toSuggest = [];
raw.forEach(l => {
if (l.score >= 0.8) {
const conflicts = config.conflicts[l.name] || [];
const hasStrongerConflict = conflicts.some(c =>
raw.some(x =>
x.name === c &&
x.score >= 0.6 &&
(config.priorities[c] || 0) >= (config.priorities[l.name] || 0)
)
);
if (!hasStrongerConflict) {
toApply.push(l.name);
}
} else if (l.score >= 0.5) {
toSuggest.push(`${l.name} (${Math.round(l.score*100)}%)`);
}
});
if (toApply.length > 0) {
await github.rest.issues.addLabels({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
labels: toApply
});
}
if (toSuggest.length > 0) {
await github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: prNumber,
body: `🤖 AI suggests these possible labels (uncertain): ${toSuggest.join(", ")}`
});
}

View File

@@ -10,8 +10,76 @@
> [!CAUTION] > [!CAUTION]
Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes. Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit the project's popularity for potentially malicious purposes.
## 2025-09-20
## 2025-09-19
### 🆕 New Scripts
- Tunarr ([#7735](https://github.com/community-scripts/ProxmoxVE/pull/7735))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- SigNoz: Fix wrong URL for Zookeeper [@tremor021](https://github.com/tremor021) ([#7742](https://github.com/community-scripts/ProxmoxVE/pull/7742))
## 2025-09-18
### 🆕 New Scripts
- Alpine-Caddy [@tremor021](https://github.com/tremor021) ([#7711](https://github.com/community-scripts/ProxmoxVE/pull/7711))
- pve-tool: execute.sh by @jeroenzwart [@MickLesk](https://github.com/MickLesk) ([#7708](https://github.com/community-scripts/ProxmoxVE/pull/7708))
- GlobaLeaks ([#7707](https://github.com/community-scripts/ProxmoxVE/pull/7707))
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- Delay chmod after updating beszel [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7725](https://github.com/community-scripts/ProxmoxVE/pull/7725))
- Remove redundant globaleaks configuration [@evilaliv3](https://github.com/evilaliv3) ([#7723](https://github.com/community-scripts/ProxmoxVE/pull/7723))
- Gatus: check for GO path before update [@vhsdream](https://github.com/vhsdream) ([#7705](https://github.com/community-scripts/ProxmoxVE/pull/7705))
- #### ✨ New Features
- Cloudflared: Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#7719](https://github.com/community-scripts/ProxmoxVE/pull/7719))
- AdGuard Home: Bump to Debian 13 [@MickLesk](https://github.com/MickLesk) ([#7720](https://github.com/community-scripts/ProxmoxVE/pull/7720))
- #### 🔧 Refactor
- Immich: Debian Trixie [@vhsdream](https://github.com/vhsdream) ([#7728](https://github.com/community-scripts/ProxmoxVE/pull/7728))
### 🌐 Website
- #### 📝 Script Information
- Add Warning for Containerized Home Assistant [@ZaxLofful](https://github.com/ZaxLofful) ([#7704](https://github.com/community-scripts/ProxmoxVE/pull/7704))
## 2025-09-17 ## 2025-09-17
### 🚀 Updated Scripts
- #### 🐞 Bug Fixes
- beszel: fix: binary permission after upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7697](https://github.com/community-scripts/ProxmoxVE/pull/7697))
- RabbitMQ: Update repositories [@tremor021](https://github.com/tremor021) ([#7689](https://github.com/community-scripts/ProxmoxVE/pull/7689))
- Komodo: Add docker compose pull for actually updating docker container [@hanneshier](https://github.com/hanneshier) ([#7682](https://github.com/community-scripts/ProxmoxVE/pull/7682))
- #### ✨ New Features
- Debian-LXC: Bump to Debian 13 Trixie [@MickLesk](https://github.com/MickLesk) ([#7683](https://github.com/community-scripts/ProxmoxVE/pull/7683))
- Bump Immich to v1.142.1 [@vhsdream](https://github.com/vhsdream) ([#7675](https://github.com/community-scripts/ProxmoxVE/pull/7675))
- #### 🔧 Refactor
- Refactor: Grist [@tremor021](https://github.com/tremor021) ([#7681](https://github.com/community-scripts/ProxmoxVE/pull/7681))
### 🧰 Maintenance
- #### 📂 Github
- Improve: SECURITY.md for clarity and detail + Adding PVE9 as supported [@MickLesk](https://github.com/MickLesk) ([#7690](https://github.com/community-scripts/ProxmoxVE/pull/7690))
## 2025-09-16 ## 2025-09-16
### 🚀 Updated Scripts ### 🚀 Updated Scripts

View File

@@ -1,24 +1,64 @@
# Security Policy
## Supported Versions ## Supported Versions
This project currently supports the following versions of Proxmox VE:
This project currently supports the following versions of Proxmox VE (PVE):
| Version | Supported | | Version | Supported |
| ------- | ------------------ | | ------- | ------------------ |
| 9.0.x | :white_check_mark: |
| 8.4.x | :white_check_mark: | | 8.4.x | :white_check_mark: |
| 8.3.x | :white_check_mark: | | 8.3.x | :white_check_mark: |
| 8.2.x | :white_check_mark: | | 8.2.x | :white_check_mark: |
| 8.1.x | :white_check_mark: | | 8.1.x | :white_check_mark: |
| 8.0.x | Limited support* ❕| | 8.0.x | Limited support* ❕ |
| < 8.0 | :x: | | < 8.0 | :x: |
*Version 8.0.x has limited support. Security updates may not be provided for all issues in this version. *Version 8.0.x has limited support. Security updates may not be provided for all issues affecting this version.
---
## Reporting a Vulnerability ## Reporting a Vulnerability
Security vulnerabilities shouldnt be reported publicly to prevent potential exploitation. Instead, please report any vulnerabilities privately by reaching out directly to us. You can either join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer or contact us via email at contact@community-scripts.org. Be sure to include a detailed description of the vulnerability and the steps to reproduce it. Thank you for helping us keep our project secure! Security vulnerabilities must not be reported publicly to avoid potential exploitation.
Instead, please report them privately via one of the following channels:
Once a vulnerability has been reported, the project maintainers will review it and acknowledge the report within 7 business days. We will then work to address the vulnerability and provide a fix as soon as possible. Depending on the severity of the issue, a patch may be released immediately or included in the next scheduled update. - **Discord**: Join our [Discord server](https://discord.gg/jsYVk5JBxq) and send a direct message to a maintainer.
- **Email**: Write to us at **contact@community-scripts.org** with the subject line:
`Vulnerability Report - <Project/Script Name>`.
Please note that not all reported vulnerabilities may be accepted. The project maintainers reserve the right to decline a vulnerability report if it is deemed to be a low-risk issue or if it conflicts with the project's design or architecture. In such cases, we will provide an explanation for the decision. When reporting a vulnerability, please provide:
If you have any questions or concerns about this security policy, please don't hesitate to contact the project maintainers. - A clear description of the issue
- Steps to reproduce the vulnerability
- Affected versions or environments
- (Optional) Suggested fixes or workarounds
---
## Response Process
1. **Acknowledgment**
- We will review and acknowledge your report within **7 business days**.
2. **Assessment**
- The maintainers will verify the issue and classify its severity.
- Depending on impact, a patch may be released immediately or scheduled for the next update.
3. **Resolution**
- Critical security fixes will be prioritized.
- Non-critical issues may be deferred or declined with an explanation.
---
## Disclaimer
Not all reported issues will be treated as vulnerabilities.
Reports may be declined if they are deemed:
- Low-risk
- Out of project scope
- Conflicting with intended design or architecture
---
If you have any questions or concerns about this security policy, please reach out to the maintainers through the contact options above.

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,7 +27,7 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_error "Adguard Home should be updated via the user interface." msg_error "Adguard Home can only be updated via the user interface."
exit exit
} }

47
ct/alpine-caddy.sh Normal file
View File

@@ -0,0 +1,47 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: cobalt (cobaltgit)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://caddyserver.com/
APP="Alpine-Caddy"
var_tags="${var_tags:-webserver}"
var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-256}"
var_disk="${var_disk:-3}"
var_os="${var_os:-alpine}"
var_version="${var_version:-3.22}"
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 /etc/caddy ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apk -U upgrade
msg_ok "Updated $APP LXC"
msg_info "Restarting Caddy"
rc-service caddy restart
msg_ok "Restarted Caddy"
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}:80${CL}"

View File

@@ -33,6 +33,7 @@ function update_script() {
msg_info "Updating $APP" msg_info "Updating $APP"
$STD /opt/beszel/beszel update $STD /opt/beszel/beszel update
sleep 2 && chmod +x /opt/beszel/beszel
msg_ok "Updated $APP" msg_ok "Updated $APP"
msg_info "Starting $APP" msg_info "Starting $APP"

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -23,13 +23,13 @@ function update_script() {
header_info header_info
check_container_storage check_container_storage
check_container_resources check_container_resources
if [[ ! -d /var ]]; then if [[ ! -f /etc/systemd/system/cloudflared.service ]]; then
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
msg_info "Updating $APP LXC" msg_info "Updating $APP LXC"
$STD apt-get update $STD apt update
$STD apt-get -y upgrade $STD apt -y upgrade
msg_ok "Updated $APP LXC" msg_ok "Updated $APP LXC"
exit exit
} }

View File

@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-1}"
var_ram="${var_ram:-512}" var_ram="${var_ram:-512}"
var_disk="${var_disk:-2}" var_disk="${var_disk:-2}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -28,8 +28,8 @@ function update_script() {
exit exit
fi fi
msg_info "Updating $APP LXC" msg_info "Updating $APP LXC"
$STD apt-get update $STD apt update
$STD apt-get -y upgrade $STD apt -y upgrade
msg_ok "Updated $APP LXC" msg_ok "Updated $APP LXC"
exit exit
} }

View File

@@ -33,6 +33,11 @@ function update_script() {
systemctl stop gatus systemctl stop gatus
msg_ok "Stopped $APP" msg_ok "Stopped $APP"
if [[ :$PATH: != *":/usr/local/bin:"* ]]; then
echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc
source ~/.bashrc
fi
mv /opt/gatus/config/config.yaml /opt mv /opt/gatus/config/config.yaml /opt
rm -rf /opt/gatus rm -rf /opt/gatus
fetch_and_deploy_gh_release "gatus" "TwiN/gatus" fetch_and_deploy_gh_release "gatus" "TwiN/gatus"

43
ct/globaleaks.sh Normal file
View File

@@ -0,0 +1,43 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 communtiy-scripts ORG
# Author: Giovanni Pellerano (evilaliv3)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software
APP="GlobaLeaks"
var_tags="${var_tags:-whistleblowing-software}"
var_disk="${var_disk:-4}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-2048}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
header_info "$APP"
variables
color
catch_errors
function update_script() {
header_info
check_container_storage
check_container_resources
if [[ ! -f /usr/sbin/globaleaks ]]; then
msg_error "No ${APP} installation found!"
exit
fi
msg_info "Updating $APP LXC"
$STD apt update
$STD apt -y upgrade
msg_ok "Updated $APP LXC"
}
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}${CL}"

View File

@@ -1,5 +1,8 @@
#!/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-2025 community-scripts ORG
# Author: cfurrow | Co-Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gristlabs/grist-core # Source: https://github.com/gristlabs/grist-core
APP="Grist" APP="Grist"
@@ -26,57 +29,34 @@ function update_script() {
exit exit
fi fi
RELEASE=$(curl -fsSL https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }') if check_for_gh_release "grist" "gristlabs/grist-core"; then
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
msg_info "Stopping ${APP} Service" msg_info "Stopping ${APP} Service"
systemctl stop grist systemctl stop grist
msg_ok "Stopped ${APP} Service" msg_ok "Stopped ${APP} Service"
msg_info "Updating ${APP} to v${RELEASE}" msg_info "Creating backup"
rm -rf /opt/grist_bak
cd /opt
rm -rf grist_bak
mv grist grist_bak mv grist grist_bak
curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o $(basename "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip") msg_ok "Backup created"
$STD unzip v$RELEASE.zip
mv grist-core-${RELEASE} grist
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
msg_info "Updating ${APP}"
mkdir -p grist/docs mkdir -p grist/docs
cp -n /opt/grist_bak/.env /opt/grist/.env
cp -n grist_bak/.env grist/.env || true cp -r /opt/grist_bak/docs/* /opt/grist/docs/
cp -r grist_bak/docs/* grist/docs/ || true cp /opt/grist_bak/grist-sessions.db /opt/grist/grist-sessions.db
cp grist_bak/grist-sessions.db grist/grist-sessions.db || true cp /opt/grist_bak/landing.db /opt/grist/landing.db
cp grist_bak/landing.db grist/landing.db || true
cd grist
msg_info "Installing Dependencies"
$STD yarn install $STD yarn install
msg_ok "Installed Dependencies"
msg_info "Building"
$STD yarn run build:prod $STD yarn run build:prod
msg_ok "Done building"
msg_info "Installing Python"
$STD yarn run install:python $STD yarn run install:python
msg_ok "Installed Python" msg_ok "Updated ${APP}"
echo "${RELEASE}" >/opt/${APP}_version.txt
msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Starting ${APP} Service" msg_info "Starting ${APP} Service"
systemctl start grist systemctl start grist
msg_ok "Started ${APP} Service" msg_ok "Started ${APP} Service"
msg_info "Cleaning up" msg_ok "Updated Successfully"
rm -rf /opt/v$RELEASE.zip
msg_ok "Cleaned"
msg_ok "Updated Successfully!\n"
else
msg_ok "No update required. ${APP} is already at ${RELEASE}"
fi fi
exit exit
} }

6
ct/headers/alpine-caddy Normal file
View File

@@ -0,0 +1,6 @@
___ __ _ ______ __ __
/ | / /___ (_)___ ___ / ____/___ _____/ /___/ /_ __
/ /| | / / __ \/ / __ \/ _ \______/ / / __ `/ __ / __ / / / /
/ ___ |/ / /_/ / / / / / __/_____/ /___/ /_/ / /_/ / /_/ / /_/ /
/_/ |_/_/ .___/_/_/ /_/\___/ \____/\__,_/\__,_/\__,_/\__, /
/_/ /____/

6
ct/headers/globaleaks Normal file
View File

@@ -0,0 +1,6 @@
________ __ __ __
/ ____/ /___ / /_ ____ _/ / ___ ____ _/ /_______
/ / __/ / __ \/ __ \/ __ `/ / / _ \/ __ `/ //_/ ___/
/ /_/ / / /_/ / /_/ / /_/ / /___/ __/ /_/ / ,< (__ )
\____/_/\____/_.___/\__,_/_____/\___/\__,_/_/|_/____/

6
ct/headers/tunarr Normal file
View File

@@ -0,0 +1,6 @@
______
/_ __/_ ______ ____ ___________
/ / / / / / __ \/ __ `/ ___/ ___/
/ / / /_/ / / / / /_/ / / / /
/_/ \__,_/_/ /_/\__,_/_/ /_/

View File

@@ -11,7 +11,7 @@ var_disk="${var_disk:-20}"
var_cpu="${var_cpu:-4}" var_cpu="${var_cpu:-4}"
var_ram="${var_ram:-4096}" var_ram="${var_ram:-4096}"
var_os="${var_os:-debian}" var_os="${var_os:-debian}"
var_version="${var_version:-12}" var_version="${var_version:-13}"
var_unprivileged="${var_unprivileged:-1}" var_unprivileged="${var_unprivileged:-1}"
header_info "$APP" header_info "$APP"
@@ -27,11 +27,22 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if [[ -f /etc/apt/sources.list.d/immich.list ]]; then
msg_error "Wrong Debian version detected!"
msg_error "You must upgrade your LXC to Debian Trixie before updating."
msg_error "Please visit https://github.com/community-scripts/ProxmoxVE/discussions/7726 for details."
echo "${TAB3} If you have upgraded your LXC to Trixie and you still see this message, please open an Issue in the Community-Scripts repo."
exit
fi
setup_uv setup_uv
PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')" PNPM_VERSION="$(curl -fsSL "https://raw.githubusercontent.com/immich-app/immich/refs/heads/main/package.json" | jq -r '.packageManager | split("@")[1]')"
NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs NODE_VERSION="22" NODE_MODULE="pnpm@${PNPM_VERSION}" setup_nodejs
if dpkg -l | grep -q "libmimalloc2.0"; then
$STD apt-get update && $STD apt-get install -y libmimalloc3
fi
STAGING_DIR=/opt/staging STAGING_DIR=/opt/staging
BASE_DIR=${STAGING_DIR}/base-images BASE_DIR=${STAGING_DIR}/base-images
SOURCE_DIR=${STAGING_DIR}/image-source SOURCE_DIR=${STAGING_DIR}/image-source
@@ -45,8 +56,10 @@ function update_script() {
for url in "${INTEL_URLS[@]}"; do for url in "${INTEL_URLS[@]}"; do
curl -fsSLO "$url" curl -fsSLO "$url"
done done
$STD apt-mark unhold libigdgmm12
$STD apt install -y ./*.deb $STD apt install -y ./*.deb
rm ./*.deb rm ./*.deb
$STD apt-mark hold libigdgmm12
msg_ok "Intel iGPU dependencies updated" msg_ok "Intel iGPU dependencies updated"
fi fi
rm ~/Dockerfile rm ~/Dockerfile
@@ -61,7 +74,7 @@ function update_script() {
done done
msg_ok "Image-processing libraries up to date" msg_ok "Image-processing libraries up to date"
fi fi
RELEASE="1.142.0" RELEASE="1.142.1"
if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then if check_for_gh_release "immich" "immich-app/immich" "${RELEASE}"; then
msg_info "Stopping Services" msg_info "Stopping Services"
systemctl stop immich-web systemctl stop immich-web
@@ -78,22 +91,10 @@ function update_script() {
if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then if [[ ! -f ~/.vchord_version ]] || [[ "$VCHORD_RELEASE" != "$(cat ~/.vchord_version)" ]]; then
msg_info "Updating VectorChord" msg_info "Updating VectorChord"
if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
$STD sudo -u postgres pg_dumpall --clean --if-exists --username=postgres | gzip >/etc/postgresql/immich-db-vchord0.3.0.sql.gz
chown postgres /etc/postgresql/immich-db-vchord0.3.0.sql.gz
$STD sudo -u postgres gunzip --stdout /etc/postgresql/immich-db-vchord0.3.0.sql.gz |
sed -e "s/SELECT pg_catalog.set_config('search_path', '', false);/SELECT pg_catalog.set_config('search_path', 'public, pg_catalog', true);/g" \
-e "/vchordrq.prewarm_dim/d" |
sudo -u postgres psql
fi
curl -fsSL "https://github.com/tensorchord/vectorchord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb curl -fsSL "https://github.com/tensorchord/vectorchord/releases/download/${VCHORD_RELEASE}/postgresql-16-vchord_${VCHORD_RELEASE}-1_amd64.deb" -o vchord.deb
$STD apt install -y ./vchord.deb $STD apt install -y ./vchord.deb
$STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;" $STD sudo -u postgres psql -d immich -c "ALTER EXTENSION vchord UPDATE;"
systemctl restart postgresql systemctl restart postgresql
if [[ ! -f ~/.vchord_version ]] || [[ ! "$(cat ~/.vchord_version)" > "0.3.0" ]]; then
$STD sudo -u postgres psql -d immich -c "REINDEX INDEX face_index;"
$STD sudo -u postgres psql -d immich -c "REINDEX INDEX clip_index;"
fi
echo "$VCHORD_RELEASE" >~/.vchord_version echo "$VCHORD_RELEASE" >~/.vchord_version
rm ./vchord.deb rm ./vchord.deb
msg_ok "Updated VectorChord to v${VCHORD_RELEASE}" msg_ok "Updated VectorChord to v${VCHORD_RELEASE}"
@@ -126,9 +127,6 @@ EOF
msg_info "Updating ${APP} web and microservices" msg_info "Updating ${APP} web and microservices"
cd "$SRC_DIR"/server cd "$SRC_DIR"/server
if [[ "$RELEASE" == "1.135.1" ]]; then
rm ./src/schema/migrations/1750323941566-UnsetPrewarmDimParameter.ts
fi
export COREPACK_ENABLE_DOWNLOAD_PROMPT=0 export COREPACK_ENABLE_DOWNLOAD_PROMPT=0
export CI=1 export CI=1
corepack enable corepack enable
@@ -144,6 +142,7 @@ EOF
# openapi & web build # openapi & web build
cd "$SRC_DIR" cd "$SRC_DIR"
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install $STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
$STD pnpm --filter @immich/sdk --filter immich-web build $STD pnpm --filter @immich/sdk --filter immich-web build
cp -a web/build "$APP_DIR"/www cp -a web/build "$APP_DIR"/www
@@ -158,16 +157,16 @@ EOF
msg_ok "Updated ${APP} web and microservices" msg_ok "Updated ${APP} web and microservices"
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
mkdir -p "$ML_DIR" mkdir -p "$ML_DIR" && chown -R immich:immich "$ML_DIR"
export VIRTUAL_ENV="${ML_DIR}"/ml-venv export VIRTUAL_ENV="${ML_DIR}"/ml-venv
if [[ -f ~/.openvino ]]; then if [[ -f ~/.openvino ]]; then
msg_info "Updating HW-accelerated machine-learning" msg_info "Updating HW-accelerated machine-learning"
$STD /usr/local/bin/uv sync --extra openvino --no-cache --active $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --active -n -p python3.11 --managed-python
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so" patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
msg_ok "Updated HW-accelerated machine-learning" msg_ok "Updated HW-accelerated machine-learning"
else else
msg_info "Updating machine-learning" msg_info "Updating machine-learning"
$STD /usr/local/bin/uv sync --extra cpu --no-cache --active $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --active -n -p python3.11 --managed-python
msg_ok "Updated machine-learning" msg_ok "Updated machine-learning"
fi fi
cd "$SRC_DIR" cd "$SRC_DIR"
@@ -186,10 +185,6 @@ EOF
ln -s "$GEO_DIR" "$APP_DIR" ln -s "$GEO_DIR" "$APP_DIR"
chown -R immich:immich "$INSTALL_DIR" chown -R immich:immich "$INSTALL_DIR"
if [[ ! -f ~/.debian_version.bak ]]; then
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
fi
msg_ok "Updated ${APP} to v${RELEASE}" msg_ok "Updated ${APP} to v${RELEASE}"
msg_info "Cleaning up" msg_info "Cleaning up"
@@ -205,8 +200,7 @@ function compile_libjxl() {
SOURCE=${SOURCE_DIR}/libjxl SOURCE=${SOURCE_DIR}/libjxl
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62" JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0" JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}" : "${LIBJXL_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libjxl.json)}"
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBJXL_REVISION" != "$(grep 'libjxl' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libjxl" msg_info "Recompiling libjxl"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
@@ -253,8 +247,7 @@ function compile_libheif() {
$STD apt-get install -y libaom-dev $STD apt-get install -y libaom-dev
local update="required" local update="required"
fi fi
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}" : "${LIBHEIF_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libheif.json)}"
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "${update:-}" ]] || [[ "$LIBHEIF_REVISION" != "$(grep 'libheif' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libheif" msg_info "Recompiling libheif"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
@@ -285,9 +278,7 @@ function compile_libheif() {
function compile_libraw() { function compile_libraw() {
SOURCE=${SOURCE_DIR}/libraw SOURCE=${SOURCE_DIR}/libraw
local update : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libraw.json)}"
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBRAW_REVISION" != "$(grep 'libraw' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libraw" msg_info "Recompiling libraw"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
@@ -308,15 +299,15 @@ function compile_libraw() {
function compile_imagemagick() { function compile_imagemagick() {
SOURCE=$SOURCE_DIR/imagemagick SOURCE=$SOURCE_DIR/imagemagick
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}" : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/imagemagick.json)}"
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}" if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]] ||
if [[ "$IMAGEMAGICK_REVISION" != "$(grep 'imagemagick' ~/.immich_library_revisions | awk '{print $2}')" ]]; then ! grep -q 'DMAGICK_LIBRAW' /usr/local/lib/ImageMagick-7*/config-Q16HDRI/configure.xml; then
msg_info "Recompiling ImageMagick" msg_info "Recompiling ImageMagick"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE" $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$IMAGEMAGICK_REVISION" $STD git reset --hard "$IMAGEMAGICK_REVISION"
$STD ./configure --with-modules $STD ./configure --with-modules CPPFLAGS="-DMAGICK_LIBRAW_VERSION_TAIL=202502"
$STD make -j"$(nproc)" $STD make -j"$(nproc)"
$STD make install $STD make install
ldconfig /usr/local/lib ldconfig /usr/local/lib
@@ -329,8 +320,7 @@ function compile_imagemagick() {
function compile_libvips() { function compile_libvips() {
SOURCE=$SOURCE_DIR/libvips SOURCE=$SOURCE_DIR/libvips
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}" : "${LIBVIPS_REVISION:=$(jq -cr '.revision' "$BASE_DIR"/server/sources/libvips.json)}"
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then if [[ "$LIBVIPS_REVISION" != "$(grep 'libvips' ~/.immich_library_revisions | awk '{print $2}')" ]]; then
msg_info "Recompiling libvips" msg_info "Recompiling libvips"
if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi if [[ -d "$SOURCE" ]]; then rm -rf "$SOURCE"; fi

View File

@@ -59,6 +59,7 @@ function update_script() {
if ! grep -qxF 'COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env; then if ! grep -qxF 'COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env; then
sed -i '/^COMPOSE_KOMODO_IMAGE_TAG=latest$/a COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env sed -i '/^COMPOSE_KOMODO_IMAGE_TAG=latest$/a COMPOSE_KOMODO_BACKUPS_PATH=/etc/komodo/backups' /opt/komodo/compose.env
fi fi
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env pull
$STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d $STD docker compose -p komodo -f "$COMPOSE_FILE" --env-file /opt/komodo/compose.env up -d
msg_ok "Updated ${APP}" msg_ok "Updated ${APP}"
exit exit

View File

@@ -27,6 +27,20 @@ function update_script() {
msg_error "No ${APP} Installation Found!" msg_error "No ${APP} Installation Found!"
exit exit
fi fi
if grep -q "dl.cloudsmith.io" /etc/apt/sources.list.d/rabbitmq.list; then
rm -f /etc/apt/sources.list.d/rabbitmq.list
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
## Modern Erlang/OTP releases
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
## Provides modern RabbitMQ releases
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
EOF
$STD apt-get update
fi
msg_info "Stopping ${APP} Service" msg_info "Stopping ${APP} Service"
systemctl stop rabbitmq-server systemctl stop rabbitmq-server
msg_ok "Stopped ${APP} Service" msg_ok "Stopped ${APP} Service"

79
ct/tunarr.sh Normal file
View File

@@ -0,0 +1,79 @@
#!/usr/bin/env bash
source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)
# Copyright (c) 2021-2025 community-scripts ORG
# Author: chrisbenincasa
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://tunarr.com/
APP="Tunarr"
var_tags="${var_tags:-iptv}"
var_cpu="${var_cpu:-2}"
var_ram="${var_ram:-1024}"
var_disk="${var_disk:-5}"
var_os="${var_os:-debian}"
var_version="${var_version:-13}"
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/tunarr ]]; then
msg_error "No ${APP} Installation Found!"
exit
fi
if check_for_gh_release "tunarr" "chrisbenincasa/tunarr"; then
msg_info "Stopping Service"
systemctl stop tunarr
msg_ok "Stopped Service"
msg_info "Creating Backup"
if [ -d "/usr/local/share/tunarr" ]; then
tar -czf "/opt/${APP}_backup_$(date +%F).tar.gz" /usr/local/share/tunarr $STD
msg_ok "Backup Created"
else
msg_error "Backup failed: /usr/local/share/tunarr does not exist"
fi
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
msg_info "Starting Service"
systemctl start tunarr
msg_ok "Started Service"
msg_ok "Update Successfully"
fi
if check_for_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg"; then
msg_info "Stopping Service"
systemctl stop tunarr
msg_ok "Stopped Service"
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
msg_info "Set ErsatzTV-ffmpeg links"
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/local/bin/ffmpeg
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/local/bin/ffplay
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/local/bin/ffprobe
msg_ok "ffmpeg links set"
msg_info "Starting Service"
systemctl start tunarr
msg_ok "Started Service"
msg_ok "Update 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}http://${IP}:8000${CL}"

View File

@@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
}, },
{ {
@@ -44,7 +44,7 @@
}, },
"notes": [ "notes": [
{ {
"text": "Adguard Home can be updated via the user interface.", "text": "AdGuard Home can only be updated via the user interface.",
"type": "info" "type": "info"
} }
] ]

View File

@@ -4,7 +4,7 @@
"categories": [ "categories": [
21 21
], ],
"date_created": "2024-05-11", "date_created": "2025-09-17",
"type": "ct", "type": "ct",
"updateable": true, "updateable": true,
"privileged": false, "privileged": false,
@@ -25,6 +25,17 @@
"os": "debian", "os": "debian",
"version": "12" "version": "12"
} }
},
{
"type": "alpine",
"script": "ct/alpine-caddy.sh",
"resources": {
"cpu": 1,
"ram": 256,
"hdd": 3,
"os": "alpine",
"version": "3.22"
}
} }
], ],
"default_credentials": { "default_credentials": {

View File

@@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@@ -23,7 +23,7 @@
"ram": 512, "ram": 512,
"hdd": 2, "hdd": 2,
"os": "debian", "os": "debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@@ -0,0 +1,48 @@
{
"name": "PVE LXC Execute Command",
"slug": "lxc-execute",
"categories": [
1
],
"date_created": "2025-09-18",
"type": "pve",
"updateable": false,
"privileged": false,
"interface_port": null,
"documentation": null,
"website": null,
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
"config_path": "",
"description": "This script allows administrators to execute a custom command inside one or multiple LXC containers on a Proxmox VE node. Containers can be selectively excluded via an interactive checklist. If a container is stopped, the script will automatically start it, run the command, and then shut it down again. Only Debian and Ubuntu based containers are supported.",
"install_methods": [
{
"type": "default",
"script": "tools/pve/execute.sh",
"resources": {
"cpu": null,
"ram": null,
"hdd": null,
"os": null,
"version": null
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": [
{
"text": "Execute within the Proxmox shell.",
"type": "info"
},
{
"text": "Non-Debian/Ubuntu containers will be skipped automatically.",
"type": "info"
},
{
"text": "Stopped containers will be started temporarily to run the command, then shut down again.",
"type": "warning"
}
]
}

View File

@@ -0,0 +1,35 @@
{
"name": "GlobaLeaks",
"slug": "globaleaks",
"categories": [
0
],
"date_created": "2025-09-18",
"type": "ct",
"updateable": true,
"privileged": false,
"interface_port": 443,
"documentation": "https://docs.globaleaks.org",
"website": "https://www.globaleaks.org/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/globaleaks.webp",
"config_path": "",
"description": "GlobaLeaks is a free and open-source whistleblowing software enabling anyone to easily set up and maintain a secure reporting platform.",
"install_methods": [
{
"type": "default",
"script": "ct/globaleaks.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 4,
"os": "debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -13,7 +13,7 @@
"website": "https://www.getgrist.com/", "website": "https://www.getgrist.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/grist.webp", "logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/grist.webp",
"config_path": "/opt/grist/.env", "config_path": "/opt/grist/.env",
"description": "Grist is a modern, open source spreadsheet that goes beyond the grid", "description": "Grist is like a spreadsheet + database hybrid. It lets you store structured data, use relational links between tables, apply formulas (even with Python), build custom layouts (cards, forms, dashboards), set fine-grained access rules, and visualize data with charts or pivot-tables.",
"install_methods": [ "install_methods": [
{ {
"type": "default", "type": "default",

View File

@@ -32,6 +32,10 @@
"password": null "password": null
}, },
"notes": [ "notes": [
{
"text": "Containerized version doesn't allow Home Assistant add-ons.",
"type": "warning"
},
{ {
"text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.", "text": "If the LXC is created Privileged, the script will automatically set up USB passthrough.",
"type": "warning" "type": "warning"

View File

@@ -23,7 +23,7 @@
"ram": 4096, "ram": 4096,
"hdd": 20, "hdd": 20,
"os": "Debian", "os": "Debian",
"version": "12" "version": "13"
} }
} }
], ],

View File

@@ -0,0 +1,35 @@
{
"name": "Tunarr",
"slug": "tunarr",
"categories": [
13
],
"date_created": "2025-09-19",
"type": "ct",
"updateable": true,
"privileged": false,
"config_path": "/opt/tunarr/.env",
"interface_port": 8000,
"documentation": "https://tunarr.com/",
"website": "https://tunarr.com/",
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tunarr.webp",
"description": "Create a classic TV experience using your own media - IPTV backed by Plex/Jellyfin/Emby.",
"install_methods": [
{
"type": "default",
"script": "ct/tunarr.sh",
"resources": {
"cpu": 2,
"ram": 1024,
"hdd": 5,
"os": "Debian",
"version": "13"
}
}
],
"default_credentials": {
"username": null,
"password": null
},
"notes": []
}

View File

@@ -1,14 +1,274 @@
[ [
{ {
"name": "esphome/esphome", "name": "inventree/InvenTree",
"version": "2025.8.4", "version": "1.0.1",
"date": "2025-09-10T05:03:47Z" "date": "2025-09-19T22:28:31Z"
},
{
"name": "HabitRPG/habitica",
"version": "v5.41.2",
"date": "2025-09-19T21:47:42Z"
},
{
"name": "TwiN/gatus",
"version": "v5.24.1",
"date": "2025-09-19T21:25:48Z"
},
{
"name": "ipfs/kubo",
"version": "v0.37.0",
"date": "2025-08-27T20:03:52Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.4",
"date": "2025-09-19T21:09:39Z"
}, },
{ {
"name": "Ombi-app/Ombi", "name": "Ombi-app/Ombi",
"version": "v4.47.1", "version": "v4.47.1",
"date": "2025-01-05T21:14:23Z" "date": "2025-01-05T21:14:23Z"
}, },
{
"name": "coder/code-server",
"version": "v4.104.1",
"date": "2025-09-19T19:36:44Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.38.0",
"date": "2025-09-19T19:14:55Z"
},
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.13.0",
"date": "2025-09-19T07:02:27Z"
},
{
"name": "TandoorRecipes/recipes",
"version": "2.2.3",
"date": "2025-09-19T15:02:57Z"
},
{
"name": "hargata/lubelog",
"version": "v1.5.2",
"date": "2025-09-19T14:18:53Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "n8n-io/n8n",
"version": "n8n@1.111.1",
"date": "2025-09-19T09:26:05Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-mdx@11.10.1",
"date": "2025-09-19T10:43:04Z"
},
{
"name": "mattermost/mattermost",
"version": "mattermost-redux@10.12.0",
"date": "2025-09-18T20:15:19Z"
},
{
"name": "docker/compose",
"version": "v2.39.4",
"date": "2025-09-19T08:49:23Z"
},
{
"name": "esphome/esphome",
"version": "2025.9.1",
"date": "2025-09-19T08:47:03Z"
},
{
"name": "theonedev/onedev",
"version": "v13.0.0",
"date": "2025-09-19T06:05:50Z"
},
{
"name": "Jackett/Jackett",
"version": "v0.23.43",
"date": "2025-09-19T05:57:38Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-19T00:27:22Z"
},
{
"name": "ollama/ollama",
"version": "v0.12.0-rc1",
"date": "2025-09-18T23:11:08Z"
},
{
"name": "pocket-id/pocket-id",
"version": "v1.11.1",
"date": "2025-09-18T20:55:56Z"
},
{
"name": "saltstack/salt",
"version": "v3007.8",
"date": "2025-09-18T18:19:04Z"
},
{
"name": "runtipi/runtipi",
"version": "v4.4.0",
"date": "2025-09-02T19:26:18Z"
},
{
"name": "keycloak/keycloak",
"version": "26.2.9",
"date": "2025-09-17T15:11:25Z"
},
{
"name": "docmost/docmost",
"version": "v0.23.2",
"date": "2025-09-18T17:18:59Z"
},
{
"name": "bluenviron/mediamtx",
"version": "v1.15.0",
"date": "2025-09-18T17:14:15Z"
},
{
"name": "emqx/emqx",
"version": "e5.10.1",
"date": "2025-09-18T16:43:47Z"
},
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.25",
"date": "2025-09-18T15:40:25Z"
},
{
"name": "grokability/snipe-it",
"version": "v8.3.2",
"date": "2025-09-18T13:55:58Z"
},
{
"name": "zitadel/zitadel",
"version": "v4.2.2",
"date": "2025-09-18T10:45:22Z"
},
{
"name": "cloudflare/cloudflared",
"version": "2025.9.0",
"date": "2025-09-18T10:23:49Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.82-rc5",
"date": "2025-09-18T09:57:28Z"
},
{
"name": "NLnetLabs/unbound",
"version": "release-1.24.0",
"date": "2025-09-18T08:36:55Z"
},
{
"name": "outline/outline",
"version": "v0.87.4",
"date": "2025-09-18T00:47:08Z"
},
{
"name": "henrygd/beszel",
"version": "v0.12.9",
"date": "2025-09-17T20:13:59Z"
},
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.3.1",
"date": "2025-07-22T20:10:08Z"
},
{
"name": "msgbyte/tianji",
"version": "v1.25.14",
"date": "2025-09-17T19:00:05Z"
},
{
"name": "eclipse-mosquitto/mosquitto",
"version": "2.1.0-test1",
"date": "2025-09-17T18:21:45Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.30",
"date": "2025-09-17T17:25:37Z"
},
{
"name": "tailscale/tailscale",
"version": "v1.88.2",
"date": "2025-09-17T17:25:12Z"
},
{
"name": "heiher/hev-socks5-server",
"version": "2.10.0",
"date": "2025-09-17T14:47:00Z"
},
{
"name": "glpi-project/glpi",
"version": "10.0.20",
"date": "2025-09-10T12:00:00Z"
},
{
"name": "silverbulletmd/silverbullet",
"version": "2.0.0",
"date": "2025-08-29T13:38:35Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.528",
"date": "2025-09-17T13:09:51Z"
},
{
"name": "cockpit-project/cockpit",
"version": "347",
"date": "2025-09-17T12:03:45Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.14",
"date": "2025-09-17T11:44:22Z"
},
{
"name": "icereed/paperless-gpt",
"version": "v0.23.0",
"date": "2025-09-17T10:15:51Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.16.31",
"date": "2025-09-17T09:57:55Z"
},
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "WGDashboard/WGDashboard",
"version": "v4.3.0.1",
"date": "2025-09-17T08:50:39Z"
},
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.8.6-beta",
"date": "2025-09-17T00:57:54Z"
},
{ {
"name": "Cleanuparr/Cleanuparr", "name": "Cleanuparr/Cleanuparr",
"version": "v2.3.1", "version": "v2.3.1",
@@ -19,11 +279,6 @@
"version": "2.510", "version": "2.510",
"date": "2025-09-16T20:28:37Z" "date": "2025-09-16T20:28:37Z"
}, },
{
"name": "YunoHost/yunohost",
"version": "debian/12.1.24",
"date": "2025-09-16T19:55:04Z"
},
{ {
"name": "firefly-iii/firefly-iii", "name": "firefly-iii/firefly-iii",
"version": "v6.4.0", "version": "v6.4.0",
@@ -39,16 +294,6 @@
"version": "v0.107.66", "version": "v0.107.66",
"date": "2025-09-15T13:39:52Z" "date": "2025-09-15T13:39:52Z"
}, },
{
"name": "msgbyte/tianji",
"version": "v1.25.11",
"date": "2025-09-16T16:24:18Z"
},
{
"name": "wazuh/wazuh",
"version": "v4.13.0-rc5",
"date": "2025-09-16T16:12:20Z"
},
{ {
"name": "booklore-app/booklore", "name": "booklore-app/booklore",
"version": "v1.3.2", "version": "v1.3.2",
@@ -79,46 +324,21 @@
"version": "v11.3.0", "version": "v11.3.0",
"date": "2025-09-16T13:53:44Z" "date": "2025-09-16T13:53:44Z"
}, },
{
"name": "emqx/emqx",
"version": "e5.10.1-rc.2",
"date": "2025-09-16T13:41:59Z"
},
{ {
"name": "tobychui/zoraxy", "name": "tobychui/zoraxy",
"version": "v3.2.5r2", "version": "v3.2.5r2",
"date": "2025-07-21T12:52:26Z" "date": "2025-07-21T12:52:26Z"
}, },
{
"name": "WGDashboard/WGDashboard",
"version": "v4.3.0",
"date": "2025-09-16T13:07:29Z"
},
{ {
"name": "Checkmk/checkmk", "name": "Checkmk/checkmk",
"version": "v2.4.0p12", "version": "v2.4.0p12",
"date": "2025-09-16T12:53:03Z" "date": "2025-09-16T12:53:03Z"
}, },
{
"name": "zitadel/zitadel",
"version": "v4.2.0",
"date": "2025-09-15T09:29:55Z"
},
{ {
"name": "fallenbagel/jellyseerr", "name": "fallenbagel/jellyseerr",
"version": "preview-debug-plex-watchlist", "version": "preview-debug-plex-watchlist",
"date": "2025-09-16T09:20:58Z" "date": "2025-09-16T09:20:58Z"
}, },
{
"name": "n8n-io/n8n",
"version": "n8n@1.109.2",
"date": "2025-09-03T07:50:21Z"
},
{
"name": "mattermost/mattermost",
"version": "v10.11.3",
"date": "2025-09-16T07:39:13Z"
},
{ {
"name": "readeck/readeck", "name": "readeck/readeck",
"version": "0.20.3", "version": "0.20.3",
@@ -129,26 +349,6 @@
"version": "2.1.1", "version": "2.1.1",
"date": "2025-09-16T06:21:32Z" "date": "2025-09-16T06:21:32Z"
}, },
{
"name": "Jackett/Jackett",
"version": "v0.23.28",
"date": "2025-09-16T05:57:39Z"
},
{
"name": "jeedom/core",
"version": "4.4.20",
"date": "2025-09-16T00:27:04Z"
},
{
"name": "steveiliop56/tinyauth",
"version": "v3.6.2",
"date": "2025-07-17T12:08:03Z"
},
{
"name": "coder/code-server",
"version": "v4.104.0",
"date": "2025-09-15T22:24:49Z"
},
{ {
"name": "Paymenter/Paymenter", "name": "Paymenter/Paymenter",
"version": "v1.3.4", "version": "v1.3.4",
@@ -164,11 +364,6 @@
"version": "v3.5.6", "version": "v3.5.6",
"date": "2025-09-15T18:43:31Z" "date": "2025-09-15T18:43:31Z"
}, },
{
"name": "keycloak/keycloak",
"version": "26.3.4",
"date": "2025-09-12T13:28:51Z"
},
{ {
"name": "apache/tika", "name": "apache/tika",
"version": "3.2.0", "version": "3.2.0",
@@ -219,21 +414,6 @@
"version": "v0.25.1", "version": "v0.25.1",
"date": "2025-09-15T14:57:30Z" "date": "2025-09-15T14:57:30Z"
}, },
{
"name": "nzbgetcom/nzbget",
"version": "v25.3",
"date": "2025-09-01T09:47:06Z"
},
{
"name": "fuma-nama/fumadocs",
"version": "fumadocs-core@15.7.12",
"date": "2025-09-15T12:37:01Z"
},
{
"name": "dgtlmoon/changedetection.io",
"version": "0.50.13",
"date": "2025-09-15T11:52:07Z"
},
{ {
"name": "VictoriaMetrics/VictoriaMetrics", "name": "VictoriaMetrics/VictoriaMetrics",
"version": "pmm-6401-v1.126.0", "version": "pmm-6401-v1.126.0",
@@ -274,11 +454,6 @@
"version": "v4.5.4", "version": "v4.5.4",
"date": "2025-09-15T00:49:53Z" "date": "2025-09-15T00:49:53Z"
}, },
{
"name": "inventree/InvenTree",
"version": "1.0.0",
"date": "2025-09-14T23:37:56Z"
},
{ {
"name": "moghtech/komodo", "name": "moghtech/komodo",
"version": "v1.19.4", "version": "v1.19.4",
@@ -299,16 +474,6 @@
"version": "cli/v0.27.1", "version": "cli/v0.27.1",
"date": "2025-09-14T14:48:48Z" "date": "2025-09-14T14:48:48Z"
}, },
{
"name": "docmost/docmost",
"version": "v0.23.1",
"date": "2025-09-14T14:31:45Z"
},
{
"name": "semaphoreui/semaphore",
"version": "v2.17.0-beta2",
"date": "2025-09-14T14:08:27Z"
},
{ {
"name": "intri-in/manage-my-damn-life-nextjs", "name": "intri-in/manage-my-damn-life-nextjs",
"version": "v0.8.1", "version": "v0.8.1",
@@ -319,16 +484,6 @@
"version": "3.2.7", "version": "3.2.7",
"date": "2025-09-14T06:35:13Z" "date": "2025-09-14T06:35:13Z"
}, },
{
"name": "gtsteffaniak/filebrowser",
"version": "v0.8.5-beta",
"date": "2025-09-13T22:53:30Z"
},
{
"name": "home-assistant/core",
"version": "2025.9.3",
"date": "2025-09-13T12:44:37Z"
},
{ {
"name": "gotify/server", "name": "gotify/server",
"version": "v2.7.2", "version": "v2.7.2",
@@ -344,51 +499,21 @@
"version": "v1.12.4", "version": "v1.12.4",
"date": "2025-09-13T08:08:55Z" "date": "2025-09-13T08:08:55Z"
}, },
{
"name": "ollama/ollama",
"version": "v0.11.11-rc3",
"date": "2025-09-12T23:40:14Z"
},
{
"name": "chrisvel/tududi",
"version": "v0.82-rc2",
"date": "2025-09-12T09:59:30Z"
},
{
"name": "homarr-labs/homarr",
"version": "v1.37.0",
"date": "2025-09-12T19:19:14Z"
},
{ {
"name": "cloudreve/cloudreve", "name": "cloudreve/cloudreve",
"version": "4.8.0", "version": "4.8.0",
"date": "2025-09-12T09:48:11Z" "date": "2025-09-12T09:48:11Z"
}, },
{
"name": "MediaBrowser/Emby.Releases",
"version": "4.9.1.2",
"date": "2025-06-26T22:08:00Z"
},
{ {
"name": "go-vikunja/vikunja", "name": "go-vikunja/vikunja",
"version": "v1.0.0-rc0", "version": "v1.0.0-rc0",
"date": "2025-08-17T18:47:15Z" "date": "2025-08-17T18:47:15Z"
}, },
{
"name": "tailscale/tailscale",
"version": "v1.88.1",
"date": "2025-09-11T22:19:51Z"
},
{ {
"name": "influxdata/influxdb", "name": "influxdata/influxdb",
"version": "v3.4.2", "version": "v3.4.2",
"date": "2025-09-11T20:43:23Z" "date": "2025-09-11T20:43:23Z"
}, },
{
"name": "HabitRPG/habitica",
"version": "v5.41.0",
"date": "2025-09-11T19:46:20Z"
},
{ {
"name": "zerotier/ZeroTierOne", "name": "zerotier/ZeroTierOne",
"version": "1.16.0", "version": "1.16.0",
@@ -409,46 +534,16 @@
"version": "v4.14.0", "version": "v4.14.0",
"date": "2025-09-05T18:28:28Z" "date": "2025-09-05T18:28:28Z"
}, },
{
"name": "cockpit-project/cockpit",
"version": "345.2",
"date": "2025-09-11T09:06:44Z"
},
{
"name": "NLnetLabs/unbound",
"version": "release-1.24.0rc1",
"date": "2025-09-11T07:05:16Z"
},
{ {
"name": "go-gitea/gitea", "name": "go-gitea/gitea",
"version": "v1.24.6", "version": "v1.24.6",
"date": "2025-09-11T04:20:27Z" "date": "2025-09-11T04:20:27Z"
}, },
{
"name": "TandoorRecipes/recipes",
"version": "2.2.0",
"date": "2025-09-10T18:36:56Z"
},
{ {
"name": "aceberg/WatchYourLAN", "name": "aceberg/WatchYourLAN",
"version": "2.1.4", "version": "2.1.4",
"date": "2025-09-10T12:08:09Z" "date": "2025-09-10T12:08:09Z"
}, },
{
"name": "glpi-project/glpi",
"version": "10.0.20",
"date": "2025-09-10T12:00:00Z"
},
{
"name": "open-webui/open-webui",
"version": "v0.6.28",
"date": "2025-09-10T10:53:42Z"
},
{
"name": "jenkinsci/jenkins",
"version": "jenkins-2.527",
"date": "2025-09-09T19:58:28Z"
},
{ {
"name": "kyantech/Palmr", "name": "kyantech/Palmr",
"version": "v3.2.1-beta", "version": "v3.2.1-beta",
@@ -459,11 +554,6 @@
"version": "v2.1.2", "version": "v2.1.2",
"date": "2025-09-09T19:34:11Z" "date": "2025-09-09T19:34:11Z"
}, },
{
"name": "hargata/lubelog",
"version": "v1.5.1",
"date": "2025-09-09T16:56:49Z"
},
{ {
"name": "element-hq/synapse", "name": "element-hq/synapse",
"version": "v1.138.0", "version": "v1.138.0",
@@ -474,11 +564,6 @@
"version": "v3.5.2", "version": "v3.5.2",
"date": "2025-09-09T10:28:12Z" "date": "2025-09-09T10:28:12Z"
}, },
{
"name": "docker/compose",
"version": "v2.39.3",
"date": "2025-09-09T08:27:27Z"
},
{ {
"name": "OctoPrint/OctoPrint", "name": "OctoPrint/OctoPrint",
"version": "1.11.3", "version": "1.11.3",
@@ -509,11 +594,6 @@
"version": "16.2", "version": "16.2",
"date": "2025-09-08T14:03:25Z" "date": "2025-09-08T14:03:25Z"
}, },
{
"name": "theonedev/onedev",
"version": "v12.0.10",
"date": "2025-09-08T13:20:16Z"
},
{ {
"name": "evcc-io/evcc", "name": "evcc-io/evcc",
"version": "0.207.6", "version": "0.207.6",
@@ -534,11 +614,6 @@
"version": "RELEASE.2025-09-07T16-13-09Z", "version": "RELEASE.2025-09-07T16-13-09Z",
"date": "2025-09-07T18:53:04Z" "date": "2025-09-07T18:53:04Z"
}, },
{
"name": "runtipi/runtipi",
"version": "v4.4.0",
"date": "2025-09-02T19:26:18Z"
},
{ {
"name": "Radarr/Radarr", "name": "Radarr/Radarr",
"version": "v5.27.5.10198", "version": "v5.27.5.10198",
@@ -559,11 +634,6 @@
"version": "v1.3.2", "version": "v1.3.2",
"date": "2025-09-05T18:44:15Z" "date": "2025-09-05T18:44:15Z"
}, },
{
"name": "henrygd/beszel",
"version": "v0.12.7",
"date": "2025-09-05T18:11:36Z"
},
{ {
"name": "CrazyWolf13/streamlink-webui", "name": "CrazyWolf13/streamlink-webui",
"version": "0.6", "version": "0.6",
@@ -609,11 +679,6 @@
"version": "v0.15.1", "version": "v0.15.1",
"date": "2025-09-04T10:37:23Z" "date": "2025-09-04T10:37:23Z"
}, },
{
"name": "morpheus65535/bazarr",
"version": "v1.5.3-beta.10",
"date": "2025-07-15T06:07:03Z"
},
{ {
"name": "actualbudget/actual", "name": "actualbudget/actual",
"version": "v25.9.0", "version": "v25.9.0",
@@ -654,11 +719,6 @@
"version": "2.6.1", "version": "2.6.1",
"date": "2025-09-01T19:05:18Z" "date": "2025-09-01T19:05:18Z"
}, },
{
"name": "outline/outline",
"version": "v0.87.3",
"date": "2025-09-01T16:25:43Z"
},
{ {
"name": "seanmorley15/AdventureLog", "name": "seanmorley15/AdventureLog",
"version": "v0.11.0", "version": "v0.11.0",
@@ -669,11 +729,6 @@
"version": "rrc_steady_12.2.0-17245430286.patch1", "version": "rrc_steady_12.2.0-17245430286.patch1",
"date": "2025-09-01T14:19:14Z" "date": "2025-09-01T14:19:14Z"
}, },
{
"name": "grokability/snipe-it",
"version": "v8.3.1",
"date": "2025-09-01T11:00:07Z"
},
{ {
"name": "crowdsecurity/crowdsec", "name": "crowdsecurity/crowdsec",
"version": "v1.7.0", "version": "v1.7.0",
@@ -684,21 +739,11 @@
"version": "v1.7.3", "version": "v1.7.3",
"date": "2025-08-31T15:59:43Z" "date": "2025-08-31T15:59:43Z"
}, },
{
"name": "silverbulletmd/silverbullet",
"version": "2.0.0",
"date": "2025-08-29T13:38:35Z"
},
{ {
"name": "Forceu/Gokapi", "name": "Forceu/Gokapi",
"version": "v2.1.0", "version": "v2.1.0",
"date": "2025-08-29T12:56:13Z" "date": "2025-08-29T12:56:13Z"
}, },
{
"name": "saltstack/salt",
"version": "v3007.7",
"date": "2025-08-29T01:19:08Z"
},
{ {
"name": "linkwarden/linkwarden", "name": "linkwarden/linkwarden",
"version": "v2.12.2", "version": "v2.12.2",
@@ -724,16 +769,6 @@
"version": "v1.9.2", "version": "v1.9.2",
"date": "2025-08-28T07:06:14Z" "date": "2025-08-28T07:06:14Z"
}, },
{
"name": "pocket-id/pocket-id",
"version": "v1.10.0",
"date": "2025-08-27T20:35:47Z"
},
{
"name": "ipfs/kubo",
"version": "v0.37.0",
"date": "2025-08-27T20:03:52Z"
},
{ {
"name": "advplyr/audiobookshelf", "name": "advplyr/audiobookshelf",
"version": "v2.29.0", "version": "v2.29.0",
@@ -784,11 +819,6 @@
"version": "v6.9.1", "version": "v6.9.1",
"date": "2025-08-22T04:04:12Z" "date": "2025-08-22T04:04:12Z"
}, },
{
"name": "cloudflare/cloudflared",
"version": "2025.8.1",
"date": "2025-08-21T15:39:34Z"
},
{ {
"name": "gethomepage/homepage", "name": "gethomepage/homepage",
"version": "v1.4.6", "version": "v1.4.6",
@@ -804,11 +834,6 @@
"version": "v2.1.2.0-2.1.2.0_beta_2025-08-20", "version": "v2.1.2.0-2.1.2.0_beta_2025-08-20",
"date": "2025-08-20T08:15:46Z" "date": "2025-08-20T08:15:46Z"
}, },
{
"name": "TwiN/gatus",
"version": "v5.23.2",
"date": "2025-08-19T21:24:45Z"
},
{ {
"name": "karlomikus/bar-assistant", "name": "karlomikus/bar-assistant",
"version": "v5.8.0", "version": "v5.8.0",
@@ -874,11 +899,6 @@
"version": "v2.5.308", "version": "v2.5.308",
"date": "2025-08-13T07:09:29Z" "date": "2025-08-13T07:09:29Z"
}, },
{
"name": "bluenviron/mediamtx",
"version": "v1.14.0",
"date": "2025-08-12T13:58:46Z"
},
{ {
"name": "slskd/slskd", "name": "slskd/slskd",
"version": "0.23.2", "version": "0.23.2",
@@ -989,26 +1009,11 @@
"version": "v2.19.0", "version": "v2.19.0",
"date": "2025-07-27T22:25:00Z" "date": "2025-07-27T22:25:00Z"
}, },
{
"name": "heiher/hev-socks5-server",
"version": "2.9.0",
"date": "2025-07-25T14:20:25Z"
},
{
"name": "TasmoAdmin/TasmoAdmin",
"version": "v4.3.1",
"date": "2025-07-22T20:10:08Z"
},
{ {
"name": "PCJones/UmlautAdaptarr", "name": "PCJones/UmlautAdaptarr",
"version": "v0.7.3", "version": "v0.7.3",
"date": "2025-07-22T14:39:54Z" "date": "2025-07-22T14:39:54Z"
}, },
{
"name": "icereed/paperless-gpt",
"version": "v0.22.0",
"date": "2025-07-17T06:35:43Z"
},
{ {
"name": "sbondCo/Watcharr", "name": "sbondCo/Watcharr",
"version": "v2.1.1", "version": "v2.1.1",
@@ -1029,11 +1034,6 @@
"version": "1.3.11", "version": "1.3.11",
"date": "2025-07-13T13:33:48Z" "date": "2025-07-13T13:33:48Z"
}, },
{
"name": "eclipse-mosquitto/mosquitto",
"version": "v2.0.22",
"date": "2025-07-11T21:34:20Z"
},
{ {
"name": "NginxProxyManager/nginx-proxy-manager", "name": "NginxProxyManager/nginx-proxy-manager",
"version": "v2.12.6", "version": "v2.12.6",

View File

@@ -13,9 +13,7 @@ setting_up_container
network_check network_check
update_os update_os
msg_info "Installing AdGuard Home" fetch_and_deploy_gh_release "AdGuardHome" "AdguardTeam/AdGuardHome" "prebuild" "latest" "/opt/AdGuardHome" "AdGuardHome_linux_amd64.tar.gz"
$STD tar zxvf <(curl -fsSL https://static.adtidy.org/adguardhome/release/AdGuardHome_linux_amd64.tar.gz) -C /opt
msg_ok "Installed AdGuard Home"
msg_info "Creating Service" msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/AdGuardHome.service cat <<EOF >/etc/systemd/system/AdGuardHome.service
@@ -45,6 +43,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt -y autoremove
$STD apt-get -y autoclean $STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -0,0 +1,70 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: cobalt (cobaltgit)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://caddyserver.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Installing Caddy"
$STD apk add --no-cache caddy caddy-openrc
cat <<EOF >/etc/caddy/Caddyfile
:80 {
# Set this path to your site's directory.
root * /var/www/html
# Enable the static file server.
file_server
# Another common task is to set up a reverse proxy:
# reverse_proxy localhost:8080
# Or serve a PHP site through php-fpm:
# php_fastcgi localhost:9000
}
EOF
mkdir -p /var/www/html
cat <<EOF >/var/www/html/index.html
<!DOCTYPE html>
<html>
<head>
<title>Caddy works!</title>
</head>
<body>
<h1>Hello Caddy!</h1>
<p>For more information, refer to the Caddy <a href="https://caddyserver.com/docs/">documentation</a><p>
</body>
</html>
EOF
msg_ok "Installed Caddy"
read -r -p "${TAB3}Would you like to install xCaddy Addon? <y/N> " prompt
if [[ "${prompt,,}" =~ ^(y|yes)$ ]]; then
GO_VERSION="$(curl -fsSL https://go.dev/VERSION?m=text | head -1 | cut -c3-)" setup_go
msg_info "Setup xCaddy"
cd /opt
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${RELEASE:1}_linux_amd64.tar.gz" -o "xcaddy_${RELEASE:1}_linux_amd64.tar.gz"
$STD tar xzf xcaddy_"${RELEASE:1}"_linux_amd64.tar.gz -C /usr/local/bin xcaddy
rm -rf /opt/xcaddy*
$STD xcaddy build
msg_ok "Setup xCaddy"
fi
msg_info "Enabling Caddy Service"
$STD rc-update add caddy default
msg_ok "Enabled Caddy Service"
msg_info "Starting Caddy"
$STD service caddy start
msg_ok "Started Caddy"
motd_ssh
customize

View File

@@ -15,11 +15,16 @@ update_os
msg_info "Installing Cloudflared" msg_info "Installing Cloudflared"
mkdir -p --mode=0755 /usr/share/keyrings mkdir -p --mode=0755 /usr/share/keyrings
VERSION="$(awk -F'=' '/^VERSION_CODENAME=/{ print $NF }' /etc/os-release)"
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg >/usr/share/keyrings/cloudflare-main.gpg curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg >/usr/share/keyrings/cloudflare-main.gpg
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/cloudflared $VERSION main" >/etc/apt/sources.list.d/cloudflared.list cat <<EOF >/etc/apt/sources.list.d/cloudflared.sources
$STD apt-get update Types: deb
$STD apt-get install -y cloudflared URIs: https://pkg.cloudflare.com/cloudflared/
Suites: any
Components: main
Signed-By: /usr/share/keyrings/cloudflare-main.gpg
EOF
$STD apt update
$STD apt install -y cloudflared
msg_ok "Installed Cloudflared" msg_ok "Installed Cloudflared"
read -r -p "${TAB3}Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt read -r -p "${TAB3}Would you like to configure cloudflared as a DNS-over-HTTPS (DoH) proxy? <y/N> " prompt
@@ -61,6 +66,7 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt -y autoremove
$STD apt-get -y autoclean $STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -17,6 +17,8 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
$STD apt-get -y autoremove $STD apt -y autoremove
$STD apt-get -y autoclean $STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -0,0 +1,30 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: Giovanni Pellerano (evilaliv3)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/globaleaks/globaleaks-whistleblowing-software
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setup GlobaLeaks"
DISTRO_CODENAME="$(awk -F= '/^VERSION_CODENAME=/{print $2}' /etc/os-release)"
curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt/trusted.gpg.d/globaleaks.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/globaleaks.gpg] http://deb.globaleaks.org $DISTRO_CODENAME/" >/etc/apt/sources.list.d/globaleaks.list
echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks
$STD apt update
$STD apt -y install globaleaks
msg_ok "Setup GlobaLeaks"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt-get -y autoremove
$STD apt-get -y autoclean
msg_ok "Cleaned"

View File

@@ -1,7 +1,7 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG # Copyright (c) 2021-2025 community-scripts ORG
# Author: cfurrow # Author: cfurrow | Co-Author: Slaviša Arežina (tremor021)
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE # License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://github.com/gristlabs/grist-core # Source: https://github.com/gristlabs/grist-core
@@ -17,20 +17,15 @@ msg_info "Installing Dependencies"
$STD apt-get install -y \ $STD apt-get install -y \
make \ make \
ca-certificates \ ca-certificates \
python3.11-venv python3-venv
msg_ok "Installed Dependencies" msg_ok "Installed Dependencies"
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
fetch_and_deploy_gh_release "grist" "gristlabs/grist-core" "tarball"
msg_info "Installing Grist" msg_info "Installing Grist"
RELEASE=$(curl -fsSL https://api.github.com/repos/gristlabs/grist-core/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
export CYPRESS_INSTALL_BINARY=0 export CYPRESS_INSTALL_BINARY=0
export NODE_OPTIONS="--max-old-space-size=2048" export NODE_OPTIONS="--max-old-space-size=2048"
cd /opt cd /opt/grist
curl -fsSL "https://github.com/gristlabs/grist-core/archive/refs/tags/v${RELEASE}.zip" -o "v${RELEASE}.zip"
$STD unzip v$RELEASE.zip
mv grist-core-${RELEASE} grist
cd grist
$STD yarn install $STD yarn install
$STD yarn run build:prod $STD yarn run build:prod
$STD yarn run install:python $STD yarn run install:python
@@ -64,7 +59,6 @@ motd_ssh
customize customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf /opt/v${RELEASE}.zip
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

View File

@@ -15,14 +15,7 @@ update_os
setup_uv setup_uv
msg_info "Configuring apt and installing dependencies" msg_info "Installing dependencies"
echo "deb http://deb.debian.org/debian testing main contrib" >/etc/apt/sources.list.d/immich.list
cat <<EOF >/etc/apt/preferences.d/immich
Package: *
Pin: release a=testing
Pin-Priority: -10
EOF
$STD apt-get update $STD apt-get update
$STD apt-get install --no-install-recommends -y \ $STD apt-get install --no-install-recommends -y \
git \ git \
@@ -53,25 +46,33 @@ $STD apt-get install --no-install-recommends -y \
libgomp1 \ libgomp1 \
liblqr-1-0 \ liblqr-1-0 \
libltdl7 \ libltdl7 \
libmimalloc2.0 \ libmimalloc3 \
libopenjp2-7 \ libopenjp2-7 \
meson \ meson \
ninja-build \ ninja-build \
pkg-config \ pkg-config \
cpanminus \
mesa-utils \ mesa-utils \
mesa-va-drivers \ mesa-va-drivers \
mesa-vulkan-drivers \ mesa-vulkan-drivers \
ocl-icd-libopencl1 \ ocl-icd-libopencl1 \
tini \ tini \
zlib1g zlib1g \
libio-compress-brotli-perl \
libwebp7 \
libwebpdemux2 \
libwebpmux3 \
libhwy1t64 \
libdav1d-dev \
libhwy-dev \
libwebp-dev \
libaom-dev
curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg curl -fsSL https://repo.jellyfin.org/jellyfin_team.gpg.key | gpg --dearmor -o /etc/apt/keyrings/jellyfin.gpg
DPKG_ARCHITECTURE="$(dpkg --print-architecture)" DPKG_ARCHITECTURE="$(dpkg --print-architecture)"
export DPKG_ARCHITECTURE export DPKG_ARCHITECTURE
cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources cat <<EOF >/etc/apt/sources.list.d/jellyfin.sources
Types: deb Types: deb
URIs: https://repo.jellyfin.org/debian URIs: https://repo.jellyfin.org/debian
Suites: bookworm Suites: trixie
Components: main Components: main
Architectures: ${DPKG_ARCHITECTURE} Architectures: ${DPKG_ARCHITECTURE}
Signed-By: /etc/apt/keyrings/jellyfin.gpg Signed-By: /etc/apt/keyrings/jellyfin.gpg
@@ -93,6 +94,7 @@ read -r -p "${TAB3}Install OpenVINO dependencies for Intel HW-accelerated machin
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing OpenVINO dependencies" msg_info "Installing OpenVINO dependencies"
touch ~/.openvino touch ~/.openvino
$STD apt-get install -y --no-install-recommends patchelf
tmp_dir=$(mktemp -d) tmp_dir=$(mktemp -d)
$STD pushd "$tmp_dir" $STD pushd "$tmp_dir"
curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb curl -fsSLO https://github.com/intel/intel-graphics-compiler/releases/download/igc-1.0.17384.11/intel-igc-core_1.0.17384.11_amd64.deb
@@ -100,6 +102,7 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/intel-opencl-icd_24.31.30508.7_amd64.deb
curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb curl -fsSLO https://github.com/intel/compute-runtime/releases/download/24.31.30508.7/libigdgmm12_22.4.1_amd64.deb
$STD apt install -y ./*.deb $STD apt install -y ./*.deb
$STD apt-mark hold libigdgmm12
$STD popd $STD popd
rm -rf "$tmp_dir" rm -rf "$tmp_dir"
dpkg -l | grep "intel-opencl-icd" | awk '{print $3}' >~/.intel_version dpkg -l | grep "intel-opencl-icd" | awk '{print $3}' >~/.intel_version
@@ -134,27 +137,7 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
} >>~/"$APPLICATION".creds } >>~/"$APPLICATION".creds
msg_ok "Set up Postgresql Database" msg_ok "Set up Postgresql Database"
msg_info "Installing Packages from Testing Repo" msg_info "Compiling Custom Photo-processing Library (extreme patience)"
export APT_LISTCHANGES_FRONTEND=none
export DEBIAN_FRONTEND=noninteractive
$STD apt-get install -t testing --no-install-recommends -y \
libio-compress-brotli-perl \
libwebp7 \
libwebpdemux2 \
libwebpmux3 \
libhwy1t64 \
libdav1d-dev \
libhwy-dev \
libwebp-dev \
libaom-dev
if [[ -f ~/.openvino ]]; then
$STD apt-get install -t testing -y patchelf
fi
msg_ok "Packages from Testing Repo Installed"
$STD sudo -u postgres psql -c "ALTER DATABASE postgres REFRESH COLLATION VERSION;"
$STD sudo -u postgres psql -c "ALTER DATABASE $DB_NAME REFRESH COLLATION VERSION;"
LD_LIBRARY_PATH=/usr/local/lib LD_LIBRARY_PATH=/usr/local/lib
export LD_RUN_PATH=/usr/local/lib export LD_RUN_PATH=/usr/local/lib
STAGING_DIR=/opt/staging STAGING_DIR=/opt/staging
@@ -169,8 +152,7 @@ cd "$STAGING_DIR"
SOURCE=${SOURCE_DIR}/libjxl SOURCE=${SOURCE_DIR}/libjxl
JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62" JPEGLI_LIBJPEG_LIBRARY_SOVERSION="62"
JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0" JPEGLI_LIBJPEG_LIBRARY_VERSION="62.3.0"
# : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}" : "${LIBJXL_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libjxl.json)}"
: "${LIBJXL_REVISION:=794a5dcf0d54f9f0b20d288a12e87afb91d20dfc}"
$STD git clone https://github.com/libjxl/libjxl.git "$SOURCE" $STD git clone https://github.com/libjxl/libjxl.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$LIBJXL_REVISION" $STD git reset --hard "$LIBJXL_REVISION"
@@ -207,8 +189,7 @@ msg_ok "(1/5) Compiled libjxl"
msg_info "(2/5) Compiling libheif" msg_info "(2/5) Compiling libheif"
SOURCE=${SOURCE_DIR}/libheif SOURCE=${SOURCE_DIR}/libheif
# : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}" : "${LIBHEIF_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libheif.json)}"
: "${LIBHEIF_REVISION:=35dad50a9145332a7bfdf1ff6aef6801fb613d68}"
$STD git clone https://github.com/strukturag/libheif.git "$SOURCE" $STD git clone https://github.com/strukturag/libheif.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$LIBHEIF_REVISION" $STD git reset --hard "$LIBHEIF_REVISION"
@@ -233,8 +214,7 @@ msg_ok "(2/5) Compiled libheif"
msg_info "(3/5) Compiling libraw" msg_info "(3/5) Compiling libraw"
SOURCE=${SOURCE_DIR}/libraw SOURCE=${SOURCE_DIR}/libraw
# : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}" : "${LIBRAW_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libraw.json)}"
: "${LIBRAW_REVISION:=09bea31181b43e97959ee5452d91e5bc66365f1f}"
$STD git clone https://github.com/libraw/libraw.git "$SOURCE" $STD git clone https://github.com/libraw/libraw.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$LIBRAW_REVISION" $STD git reset --hard "$LIBRAW_REVISION"
@@ -249,12 +229,11 @@ msg_ok "(3/5) Compiled libraw"
msg_info "(4/5) Compiling imagemagick" msg_info "(4/5) Compiling imagemagick"
SOURCE=$SOURCE_DIR/imagemagick SOURCE=$SOURCE_DIR/imagemagick
# : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}" : "${IMAGEMAGICK_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/imagemagick.json)}"
: "${IMAGEMAGICK_REVISION:=8289a3388a085ad5ae81aa6812f21554bdfd54f2}"
$STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE" $STD git clone https://github.com/ImageMagick/ImageMagick.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$IMAGEMAGICK_REVISION" $STD git reset --hard "$IMAGEMAGICK_REVISION"
$STD ./configure --with-modules $STD ./configure --with-modules CPPFLAGS="-DMAGICK_LIBRAW_VERSION_TAIL=202502"
$STD make -j"$(nproc)" $STD make -j"$(nproc)"
$STD make install $STD make install
ldconfig /usr/local/lib ldconfig /usr/local/lib
@@ -264,8 +243,7 @@ msg_ok "(4/5) Compiled imagemagick"
msg_info "(5/5) Compiling libvips" msg_info "(5/5) Compiling libvips"
SOURCE=$SOURCE_DIR/libvips SOURCE=$SOURCE_DIR/libvips
# : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}" : "${LIBVIPS_REVISION:=$(jq -cr '.revision' $BASE_DIR/server/sources/libvips.json)}"
: "${LIBVIPS_REVISION:=8fa37a64547e392d3808eed8d72adab7e02b3d00}"
$STD git clone https://github.com/libvips/libvips.git "$SOURCE" $STD git clone https://github.com/libvips/libvips.git "$SOURCE"
cd "$SOURCE" cd "$SOURCE"
$STD git reset --hard "$LIBVIPS_REVISION" $STD git reset --hard "$LIBVIPS_REVISION"
@@ -294,7 +272,7 @@ GEO_DIR="${INSTALL_DIR}/geodata"
mkdir -p "$INSTALL_DIR" mkdir -p "$INSTALL_DIR"
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" "v1.142.0" "$SRC_DIR" fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.142.1" "$SRC_DIR"
msg_info "Installing ${APPLICATION} (patience)" msg_info "Installing ${APPLICATION} (patience)"
@@ -314,6 +292,7 @@ sed -i 's|^start|./start|' "$APP_DIR"/bin/immich-admin
# openapi & web build # openapi & web build
cd "$SRC_DIR" cd "$SRC_DIR"
echo "packageImportMethod: hardlink" >>./pnpm-workspace.yaml
$STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install $STD pnpm --filter @immich/sdk --filter immich-web --frozen-lockfile --force install
$STD pnpm --filter @immich/sdk --filter immich-web build $STD pnpm --filter @immich/sdk --filter immich-web build
cp -a web/build "$APP_DIR"/www cp -a web/build "$APP_DIR"/www
@@ -326,16 +305,17 @@ $STD pnpm --filter @immich/cli --prod --no-optional deploy "$APP_DIR"/cli
msg_ok "Installed Immich Server and Web Components" msg_ok "Installed Immich Server and Web Components"
cd "$SRC_DIR"/machine-learning cd "$SRC_DIR"/machine-learning
mkdir -p "$ML_DIR" $STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
mkdir -p "$ML_DIR" && chown -R immich:immich "$INSTALL_DIR"
export VIRTUAL_ENV="${ML_DIR}/ml-venv" export VIRTUAL_ENV="${ML_DIR}/ml-venv"
if [[ -f ~/.openvino ]]; then if [[ -f ~/.openvino ]]; then
msg_info "Installing HW-accelerated machine-learning" msg_info "Installing HW-accelerated machine-learning"
$STD uv sync --extra openvino --no-cache --active $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra openvino --active -n -p python3.11 --managed-python
patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so" patchelf --clear-execstack "${VIRTUAL_ENV}/lib/python3.11/site-packages/onnxruntime/capi/onnxruntime_pybind11_state.cpython-311-x86_64-linux-gnu.so"
msg_ok "Installed HW-accelerated machine-learning" msg_ok "Installed HW-accelerated machine-learning"
else else
msg_info "Installing machine-learning" msg_info "Installing machine-learning"
$STD uv sync --extra cpu --no-cache --active $STD sudo --preserve-env=VIRTUAL_ENV -nu immich uv sync --extra cpu --active -n -p python3.11 --managed-python
msg_ok "Installed machine-learning" msg_ok "Installed machine-learning"
fi fi
cd "$SRC_DIR" cd "$SRC_DIR"
@@ -374,8 +354,7 @@ mkdir -p /var/log/immich
touch /var/log/immich/{web.log,ml.log} touch /var/log/immich/{web.log,ml.log}
msg_ok "Installed ${APPLICATION}" msg_ok "Installed ${APPLICATION}"
msg_info "Creating user, env file, scripts & services" msg_info "Modifying user, creating env file, scripts & services"
$STD useradd -U -s /usr/sbin/nologin -r -M -d "$INSTALL_DIR" immich
usermod -aG video,render immich usermod -aG video,render immich
cat <<EOF >"${INSTALL_DIR}"/.env cat <<EOF >"${INSTALL_DIR}"/.env
@@ -464,11 +443,8 @@ WantedBy=multi-user.target
EOF EOF
chown -R immich:immich "$INSTALL_DIR" /var/log/immich chown -R immich:immich "$INSTALL_DIR" /var/log/immich
systemctl enable -q --now "$APPLICATION"-ml.service "$APPLICATION"-web.service systemctl enable -q --now "$APPLICATION"-ml.service "$APPLICATION"-web.service
msg_ok "Created user, env file, scripts and services" msg_ok "Modified user, created env file, scripts and services"
sed -i "$ a VERSION_ID=12" /etc/os-release # otherwise the motd_ssh function will fail
cp /etc/debian_version ~/.debian_version.bak
sed -i 's/.*/13.0/' /etc/debian_version
motd_ssh motd_ssh
customize customize

View File

@@ -23,19 +23,17 @@ msg_ok "Installed Dependencies"
msg_info "Adding RabbitMQ signing key" msg_info "Adding RabbitMQ signing key"
curl -fsSL "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | gpg --dearmor >/usr/share/keyrings/com.rabbitmq.team.gpg curl -fsSL "https://keys.openpgp.org/vks/v1/by-fingerprint/0A9AF2115F4687BD29803A206B73A36E6026DFCA" | gpg --dearmor >/usr/share/keyrings/com.rabbitmq.team.gpg
curl -fsSL "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-erlang.E495BB49CC4BBE5B.key" | gpg --dearmor >/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg
curl -fsSL "https://github.com/rabbitmq/signing-keys/releases/download/3.0/cloudsmith.rabbitmq-server.9F4587F226208342.key" | gpg --dearmor >/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg
msg_ok "Signing keys added" msg_ok "Signing keys added"
msg_info "Adding RabbitMQ repository" msg_info "Adding RabbitMQ repository"
cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list cat <<EOF >/etc/apt/sources.list.d/rabbitmq.list
## Provides modern Erlang/OTP releases from a Cloudsmith mirror ## Modern Erlang/OTP releases
deb [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/debian $(lsb_release -cs) main deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.E495BB49CC4BBE5B.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-erlang/deb/debian $(lsb_release -cs) main deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-erlang/debian/bookworm bookworm main
## Provides RabbitMQ from a Cloudsmith mirror ## Provides modern RabbitMQ releases
deb [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/debian $(lsb_release -cs) main deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb1.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
deb-src [signed-by=/usr/share/keyrings/rabbitmq.9F4587F226208342.gpg] https://dl.cloudsmith.io/public/rabbitmq/rabbitmq-server/deb/debian $(lsb_release -cs) main deb [arch=amd64 signed-by=/usr/share/keyrings/com.rabbitmq.team.gpg] https://deb2.rabbitmq.com/rabbitmq-server/debian/bookworm bookworm main
EOF EOF
msg_ok "RabbitMQ repository added" msg_ok "RabbitMQ repository added"

View File

@@ -30,12 +30,13 @@ $STD apt-get install -y clickhouse-server clickhouse-client
msg_ok "Setup ClickHouse" msg_ok "Setup ClickHouse"
msg_info "Setting up Zookeeper" msg_info "Setting up Zookeeper"
curl -fsSL "https://dlcdn.apache.org/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz" -o "$HOME/zookeeper.tar.gz" ZOOURL=$(curl -fsSL https://dlcdn.apache.org/zookeeper/current/ | grep -o 'apache-zookeeper-[0-9.]\+-bin\.tar\.gz' | head -n1)
curl -fsSL "https://dlcdn.apache.org/zookeeper/current/$ZOOURL" -o ~/zookeeper.tar.gz
tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME" tar -xzf "$HOME/zookeeper.tar.gz" -C "$HOME"
mkdir -p /opt/zookeeper mkdir -p /opt/zookeeper
mkdir -p /var/lib/zookeeper mkdir -p /var/lib/zookeeper
mkdir -p /var/log/zookeeper mkdir -p /var/log/zookeeper
cp -r ~/apache-zookeeper-3.8.4-bin/* /opt/zookeeper cp -r ~/apache-zookeeper-*-bin/* /opt/zookeeper
cat <<EOF >/opt/zookeeper/conf/zoo.cfg cat <<EOF >/opt/zookeeper/conf/zoo.cfg
tickTime=2000 tickTime=2000
@@ -256,7 +257,7 @@ customize
msg_info "Cleaning up" msg_info "Cleaning up"
rm -rf ~/zookeeper.tar.gz rm -rf ~/zookeeper.tar.gz
rm -rf ~/apache-zookeeper-3.8.4-bin rm -rf ~/apache-zookeeper-*-bin
$STD apt-get -y autoremove $STD apt-get -y autoremove
$STD apt-get -y autoclean $STD apt-get -y autoclean
msg_ok "Cleaned" msg_ok "Cleaned"

101
install/tunarr-install.sh Normal file
View File

@@ -0,0 +1,101 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 tteck
# Author: chrisbenincasa
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
# Source: https://tunarr.com/
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
color
verb_ip6
catch_errors
setting_up_container
network_check
update_os
msg_info "Setting Up Hardware Acceleration"
if [[ "$CTTYPE" == "0" ]]; then
$STD adduser "$(id -un)" video
$STD adduser "$(id -un)" render
fi
msg_ok "Base Hardware Acceleration Set Up"
read -r -p "${TAB3}Do you need the intel-media-va-driver-non-free driver for HW encoding (Debian 13 only)? <y/N> " prompt
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
msg_info "Installing Intel Hardware Acceleration (non-free)"
cat <<'EOF' >/etc/apt/sources.list.d/non-free.sources
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie
Components: non-free non-free-firmware
Types: deb deb-src
URIs: http://deb.debian.org/debian-security
Suites: trixie-security
Components: non-free non-free-firmware
Types: deb deb-src
URIs: http://deb.debian.org/debian
Suites: trixie-updates
Components: non-free non-free-firmware
EOF
$STD apt update
$STD apt -y install \
intel-media-va-driver-non-free \
ocl-icd-libopencl1 \
mesa-opencl-icd \
mesa-va-drivers \
libvpl2 \
vainfo \
intel-gpu-tools
else
msg_info "Installing Intel Hardware Acceleration (open packages)"
$STD apt -y install \
va-driver-all \
ocl-icd-libopencl1 \
mesa-opencl-icd \
mesa-va-drivers \
vainfo \
intel-gpu-tools
fi
msg_ok "Installed and Set Up Intel Hardware Acceleration"
fetch_and_deploy_gh_release "tunarr" "chrisbenincasa/tunarr" "singlefile" "latest" "/opt/tunarr" "*linux-x64"
fetch_and_deploy_gh_release "ersatztv-ffmpeg" "ErsatzTV/ErsatzTV-ffmpeg" "prebuild" "latest" "/opt/ErsatzTV-ffmpeg" "*-linux64-gpl-7.1.tar.xz"
msg_info "Set ErsatzTV-ffmpeg links"
chmod +x /opt/ErsatzTV-ffmpeg/bin/*
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffmpeg /usr/bin/ffmpeg
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffplay /usr/bin/ffplay
ln -sf /opt/ErsatzTV-ffmpeg/bin/ffprobe /usr/bin/ffprobe
msg_ok "ffmpeg links set"
msg_info "Creating Service"
cat <<EOF >/etc/systemd/system/tunarr.service
[Unit]
Description=Tunarr Service
After=multi-user.target
[Service]
Type=simple
User=root
WorkingDirectory=/opt/tunarr
ExecStart=/opt/tunarr/tunarr
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
systemctl enable -q --now tunarr
msg_ok "Created Service"
motd_ssh
customize
msg_info "Cleaning up"
$STD apt -y autoremove
$STD apt -y autoclean
$STD apt -y clean
msg_ok "Cleaned"

84
tools/pve/execute.sh Normal file
View File

@@ -0,0 +1,84 @@
#!/usr/bin/env bash
# Copyright (c) 2021-2025 community-scripts ORG
# Author: jeroenzwart
# License: MIT
# https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
function header_info() {
clear
cat <<"EOF"
______ __ __ _ ________
/ ____/ _____ _______ __/ /____ / / | |/ / ____/
/ __/ | |/_/ _ \/ ___/ / / / __/ _ \ / / | / /
/ /____> </ __/ /__/ /_/ / /_/ __/ / /___/ / /___
/_____/_/|_|\___/\___/\__,_/\__/\___/ /_____/_/|_\____/
EOF
}
set -eEuo pipefail
BL=$(echo "\033[36m")
RD=$(echo "\033[01;31m")
CM='\xE2\x9C\x94\033'
GN=$(echo "\033[1;92m")
CL=$(echo "\033[m")
header_info
echo "Loading..."
whiptail --backtitle "Proxmox VE Helper Scripts" --title "Proxmox VE LXC Execute" --yesno "This will execute a command inside selected LXC Containers. Proceed?" 10 58
NODE=$(hostname)
EXCLUDE_MENU=()
MSG_MAX_LENGTH=0
while read -r TAG ITEM; do
OFFSET=2
((${#ITEM} + OFFSET > MSG_MAX_LENGTH)) && MSG_MAX_LENGTH=${#ITEM}+OFFSET
EXCLUDE_MENU+=("$TAG" "$ITEM " "OFF")
done < <(pct list | awk 'NR>1')
excluded_containers=$(whiptail --backtitle "Proxmox VE Helper Scripts" --title "Containers on $NODE" --checklist "\nSelect containers to skip from executing:\n" \
16 $((MSG_MAX_LENGTH + 23)) 6 "${EXCLUDE_MENU[@]}" 3>&1 1>&2 2>&3 | tr -d '"')
if [ $? -ne 0 ]; then
exit
fi
read -r -p "Enter here command for inside the containers: " custom_command
header_info
echo "One moment please...\n"
function execute_in() {
container=$1
name=$(pct exec "$container" hostname)
echo -e "${BL}[Info]${GN} Execute inside${BL} ${name}${GN} with output: ${CL}"
pct exec "$container" -- bash -c "${custom_command}" | tee
}
for container in $(pct list | awk '{if(NR>1) print $1}'); do
if [[ " ${excluded_containers[@]} " =~ " $container " ]]; then
echo -e "${BL}[Info]${GN} Skipping ${BL}$container${CL}"
else
os=$(pct config "$container" | awk '/^ostype/ {print $2}')
if [ "$os" != "debian" ] && [ "$os" != "ubuntu" ]; then
echo -e "${BL}[Info]${GN} Skipping ${name} ${RD}$container is not Debian or Ubuntu ${CL}"
continue
fi
status=$(pct status "$container")
template=$(pct config "$container" | grep -q "template:" && echo "true" || echo "false")
if [ "$template" == "false" ] && [ "$status" == "status: stopped" ]; then
echo -e "${BL}[Info]${GN} Starting${BL} $container ${CL}"
pct start "$container"
echo -e "${BL}[Info]${GN} Waiting For${BL} $container${CL}${GN} To Start ${CL}"
sleep 5
execute_in "$container"
echo -e "${BL}[Info]${GN} Shutting down${BL} $container ${CL}"
pct shutdown "$container" &
elif [ "$status" == "status: running" ]; then
execute_in "$container"
fi
fi
done
wait
echo -e "${GN} Finished, execute command inside selected containers. ${CL} \n"