mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-11-04 18:32:51 +00:00
Compare commits
106 Commits
2025-09-18
...
2025-09-24
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7fd08cbe69 | ||
|
|
285447b67f | ||
|
|
b394cdf6e0 | ||
|
|
ab2a6ed38e | ||
|
|
f8e109c529 | ||
|
|
46e4bc3a04 | ||
|
|
d0a1f305c7 | ||
|
|
6948e1f695 | ||
|
|
8c860da4ed | ||
|
|
d32e9fad59 | ||
|
|
9096a388c7 | ||
|
|
9f0efc27df | ||
|
|
06ca6e2087 | ||
|
|
8c48ea6718 | ||
|
|
b626e705eb | ||
|
|
f103d09c09 | ||
|
|
82a7d252ab | ||
|
|
48af77e928 | ||
|
|
d24308a409 | ||
|
|
584365fff1 | ||
|
|
95c54dccd7 | ||
|
|
eb28463d86 | ||
|
|
bddde99252 | ||
|
|
f1f8c1b279 | ||
|
|
37a0a4add9 | ||
|
|
02cede3f5d | ||
|
|
42a7d57a42 | ||
|
|
53b5f0d1fe | ||
|
|
4a56d8d9aa | ||
|
|
f819188a5e | ||
|
|
4d6e3e5977 | ||
|
|
d6fc527200 | ||
|
|
c103c3b03d | ||
|
|
2d290cb27f | ||
|
|
883efd1cd2 | ||
|
|
1f40670ea0 | ||
|
|
cec4e2d5c1 | ||
|
|
1fafb3f661 | ||
|
|
b56b053e8b | ||
|
|
21f98835dc | ||
|
|
ab455d7748 | ||
|
|
5382fa1dbd | ||
|
|
6fa1938360 | ||
|
|
2a2df5b5cc | ||
|
|
f99d582eb5 | ||
|
|
d3f24ae5b2 | ||
|
|
25e89f7bac | ||
|
|
2686753448 | ||
|
|
19678e2534 | ||
|
|
1ac8f90281 | ||
|
|
7cd3e40f9c | ||
|
|
42191bdb5a | ||
|
|
aab1a9bce5 | ||
|
|
208226065b | ||
|
|
54e62749be | ||
|
|
2a8e2e62cd | ||
|
|
b15d7be4c3 | ||
|
|
e208bc110b | ||
|
|
b26ad61a33 | ||
|
|
5beaec9514 | ||
|
|
3a668870b7 | ||
|
|
3266962630 | ||
|
|
2a3f5d7b47 | ||
|
|
fb4c3cf9e9 | ||
|
|
e96ea4eb40 | ||
|
|
dfbe5f03ce | ||
|
|
9c53c70f6b | ||
|
|
a3c7f468ef | ||
|
|
605f7a0330 | ||
|
|
306627378e | ||
|
|
0e464cb192 | ||
|
|
277f6ce7d1 | ||
|
|
a6d6f79943 | ||
|
|
a7ced850ab | ||
|
|
eadca5f81f | ||
|
|
5ab375fd89 | ||
|
|
2dc95b6b22 | ||
|
|
57dd3d5a44 | ||
|
|
25ddf48190 | ||
|
|
01b6bec1fe | ||
|
|
d1ff8201b1 | ||
|
|
c5c5ba1ede | ||
|
|
e3aabd81a3 | ||
|
|
4713941415 | ||
|
|
adda76f587 | ||
|
|
cf597b6a26 | ||
|
|
20e8730a34 | ||
|
|
9ce9de8e84 | ||
|
|
ac3f969016 | ||
|
|
c0597842f8 | ||
|
|
667d354059 | ||
|
|
d56c1e2f50 | ||
|
|
3dfbc2d6ea | ||
|
|
31b33d370e | ||
|
|
d4d4c0e07a | ||
|
|
aded4d5809 | ||
|
|
c00308524b | ||
|
|
fef7786714 | ||
|
|
0dfd337a9a | ||
|
|
d99862fa24 | ||
|
|
ac08d385c0 | ||
|
|
7a9de76acb | ||
|
|
35f3f043a7 | ||
|
|
4276df26d7 | ||
|
|
5fec573533 | ||
|
|
ebd269a808 |
2
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
generated
vendored
@@ -60,7 +60,7 @@ body:
|
|||||||
- Alpine
|
- Alpine
|
||||||
- Debian 11
|
- Debian 11
|
||||||
- Debian 12
|
- Debian 12
|
||||||
- Ubuntu 20.04
|
- Debian 13
|
||||||
- Ubuntu 22.04
|
- Ubuntu 22.04
|
||||||
- Ubuntu 24.04
|
- Ubuntu 24.04
|
||||||
- Ubuntu 24.10
|
- Ubuntu 24.10
|
||||||
|
|||||||
38
.github/label-priority.json
generated
vendored
38
.github/label-priority.json
generated
vendored
@@ -1,38 +0,0 @@
|
|||||||
{
|
|
||||||
"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
116
.github/workflows/autolabeler.yml
generated
vendored
@@ -112,119 +112,3 @@ 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 (0–1).
|
|
||||||
- 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(", ")}`
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|||||||
122
CHANGELOG.md
122
CHANGELOG.md
@@ -10,8 +10,130 @@
|
|||||||
> [!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-25
|
||||||
|
|
||||||
|
## 2025-09-24
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- Add Script: Joplin Server ([#7879](https://github.com/community-scripts/ProxmoxVE/pull/7879))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Monica: Fix dependencies [@tremor021](https://github.com/tremor021) ([#7877](https://github.com/community-scripts/ProxmoxVE/pull/7877))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Update name in lxc-delete.json to 'PVE LXC Deletion' [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7872](https://github.com/community-scripts/ProxmoxVE/pull/7872))
|
||||||
|
|
||||||
|
## 2025-09-23
|
||||||
|
|
||||||
|
### 🆕 New Scripts
|
||||||
|
|
||||||
|
- UpSnap ([#7825](https://github.com/community-scripts/ProxmoxVE/pull/7825))
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- tools.func: Check for /usr/local/bin in PATH during yq setup [@vhsdream](https://github.com/vhsdream) ([#7856](https://github.com/community-scripts/ProxmoxVE/pull/7856))
|
||||||
|
- BookLore: increase RAM [@vhsdream](https://github.com/vhsdream) ([#7855](https://github.com/community-scripts/ProxmoxVE/pull/7855))
|
||||||
|
- Bump Immich to v1.143.1 [@vhsdream](https://github.com/vhsdream) ([#7864](https://github.com/community-scripts/ProxmoxVE/pull/7864))
|
||||||
|
- zabbix: Remove not exist admin credentials from output [@MickLesk](https://github.com/MickLesk) ([#7849](https://github.com/community-scripts/ProxmoxVE/pull/7849))
|
||||||
|
- Suppress wrong errors from uv shell integration in setup_uv [@MickLesk](https://github.com/MickLesk) ([#7822](https://github.com/community-scripts/ProxmoxVE/pull/7822))
|
||||||
|
- Refactor Caddyfile configuration for headscale-admin [@MickLesk](https://github.com/MickLesk) ([#7821](https://github.com/community-scripts/ProxmoxVE/pull/7821))
|
||||||
|
- Improve subscription element removal (mobile) in post-pve script [@MickLesk](https://github.com/MickLesk) ([#7814](https://github.com/community-scripts/ProxmoxVE/pull/7814))
|
||||||
|
- Blocky: Fix release fetching [@tremor021](https://github.com/tremor021) ([#7807](https://github.com/community-scripts/ProxmoxVE/pull/7807))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Improve globaleaks install ensuring install can proceed without user … [@evilaliv3](https://github.com/evilaliv3) ([#7860](https://github.com/community-scripts/ProxmoxVE/pull/7860))
|
||||||
|
- Manage My Damn Life: use NodeJS 22 [@vhsdream](https://github.com/vhsdream) ([#7861](https://github.com/community-scripts/ProxmoxVE/pull/7861))
|
||||||
|
- VM: Increase pv & xz functions (HA OS / Umbrel OS) [@MickLesk](https://github.com/MickLesk) ([#7838](https://github.com/community-scripts/ProxmoxVE/pull/7838))
|
||||||
|
- Tandoor: update for newer dependencies (psql) + bump nodejs to 22 [@MickLesk](https://github.com/MickLesk) ([#7826](https://github.com/community-scripts/ProxmoxVE/pull/7826))
|
||||||
|
- Update Monica and Outline to use Node.js 22 [@MickLesk](https://github.com/MickLesk) ([#7833](https://github.com/community-scripts/ProxmoxVE/pull/7833))
|
||||||
|
- Update Zabbix install for Debian 13 and agent selection [@MickLesk](https://github.com/MickLesk) ([#7819](https://github.com/community-scripts/ProxmoxVE/pull/7819))
|
||||||
|
- tracktor: bump to debian 13 | feature bump [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7818](https://github.com/community-scripts/ProxmoxVE/pull/7818))
|
||||||
|
- LiteLLM: Bump to Debian 13 & add deps [@MickLesk](https://github.com/MickLesk) ([#7815](https://github.com/community-scripts/ProxmoxVE/pull/7815))
|
||||||
|
- Immich: bump to v1.143.0 [@vhsdream](https://github.com/vhsdream) ([#7801](https://github.com/community-scripts/ProxmoxVE/pull/7801))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- gh: remove ai autolabel test [@MickLesk](https://github.com/MickLesk) ([#7817](https://github.com/community-scripts/ProxmoxVE/pull/7817))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- OpenWebUI: Add information about Ollama [@tremor021](https://github.com/tremor021) ([#7843](https://github.com/community-scripts/ProxmoxVE/pull/7843))
|
||||||
|
- cosmos: add info note for configuration file [@MickLesk](https://github.com/MickLesk) ([#7824](https://github.com/community-scripts/ProxmoxVE/pull/7824))
|
||||||
|
- ElementSynapse: add note for Bridge Install Methods [@MickLesk](https://github.com/MickLesk) ([#7820](https://github.com/community-scripts/ProxmoxVE/pull/7820))
|
||||||
|
|
||||||
|
## 2025-09-22
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- [core]: Update detection of current running subshell [@tremor021](https://github.com/tremor021) ([#7796](https://github.com/community-scripts/ProxmoxVE/pull/7796))
|
||||||
|
- Paymenter: Installation and update fixes [@tremor021](https://github.com/tremor021) ([#7792](https://github.com/community-scripts/ProxmoxVE/pull/7792))
|
||||||
|
|
||||||
|
## 2025-09-21
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- fix openwebui update and installer [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7788](https://github.com/community-scripts/ProxmoxVE/pull/7788))
|
||||||
|
- tracktor: add: cleanup before upgrade [@CrazyWolf13](https://github.com/CrazyWolf13) ([#7782](https://github.com/community-scripts/ProxmoxVE/pull/7782))
|
||||||
|
- Fix regex to extract MySQL version correctly [@MickLesk](https://github.com/MickLesk) ([#7774](https://github.com/community-scripts/ProxmoxVE/pull/7774))
|
||||||
|
- Update Ollama Installer in OpenWebUI to resume downloads if interrupted [@HeedfulCrayon](https://github.com/HeedfulCrayon) ([#7779](https://github.com/community-scripts/ProxmoxVE/pull/7779))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Implement clean install option in tools.func (fetch_and_deploy_gh_release) [@MickLesk](https://github.com/MickLesk) ([#7785](https://github.com/community-scripts/ProxmoxVE/pull/7785))
|
||||||
|
- caddy: modify disk size and implement xCaddy update [@MickLesk](https://github.com/MickLesk) ([#7775](https://github.com/community-scripts/ProxmoxVE/pull/7775))
|
||||||
|
|
||||||
|
### 🌐 Website
|
||||||
|
|
||||||
|
- #### 📝 Script Information
|
||||||
|
|
||||||
|
- Harmonize and shorten JSON Names for PVE/PBS/PMG [@MickLesk](https://github.com/MickLesk) ([#7773](https://github.com/community-scripts/ProxmoxVE/pull/7773))
|
||||||
|
|
||||||
|
## 2025-09-20
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- checkmk.sh Update: Revert old Pr [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7765](https://github.com/community-scripts/ProxmoxVE/pull/7765))
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- Wazuh: Increase HDD size [@tremor021](https://github.com/tremor021) ([#7759](https://github.com/community-scripts/ProxmoxVE/pull/7759))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- Add Debian 13 in bug report template [@michelroegl-brunner](https://github.com/michelroegl-brunner) ([#7757](https://github.com/community-scripts/ProxmoxVE/pull/7757))
|
||||||
|
|
||||||
## 2025-09-19
|
## 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
|
## 2025-09-18
|
||||||
|
|
||||||
### 🆕 New Scripts
|
### 🆕 New Scripts
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ function update_script() {
|
|||||||
rm -rf /opt/blocky
|
rm -rf /opt/blocky
|
||||||
msg_ok "Removed Old Version"
|
msg_ok "Removed Old Version"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
|
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
|
||||||
|
|
||||||
msg_info "Restore Config"
|
msg_info "Restore Config"
|
||||||
mv /opt/config.yml /opt/blocky/config.yml
|
mv /opt/config.yml /opt/blocky/config.yml
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ source <(curl -fsSL https://raw.githubusercontent.com/community-scripts/ProxmoxV
|
|||||||
APP="BookLore"
|
APP="BookLore"
|
||||||
var_tags="${var_tags:-books;library}"
|
var_tags="${var_tags:-books;library}"
|
||||||
var_cpu="${var_cpu:-3}"
|
var_cpu="${var_cpu:-3}"
|
||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-3072}"
|
||||||
var_disk="${var_disk:-7}"
|
var_disk="${var_disk:-7}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
|
|||||||
17
ct/caddy.sh
17
ct/caddy.sh
@@ -9,7 +9,7 @@ APP="Caddy"
|
|||||||
var_tags="${var_tags:-webserver}"
|
var_tags="${var_tags:-webserver}"
|
||||||
var_cpu="${var_cpu:-1}"
|
var_cpu="${var_cpu:-1}"
|
||||||
var_ram="${var_ram:-512}"
|
var_ram="${var_ram:-512}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-6}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@@ -31,6 +31,19 @@ function update_script() {
|
|||||||
$STD apt-get update
|
$STD apt-get update
|
||||||
$STD apt-get -y upgrade
|
$STD apt-get -y upgrade
|
||||||
msg_ok "Updated $APP LXC"
|
msg_ok "Updated $APP LXC"
|
||||||
|
|
||||||
|
if command -v xcaddy >/dev/null 2>&1; then
|
||||||
|
install_go
|
||||||
|
msg_info "Updating xCaddy"
|
||||||
|
cd /opt
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/caddyserver/xcaddy/releases/latest | grep "tag_name" | awk -F '"' '{print $4}')
|
||||||
|
VERSION="${RELEASE#v}"
|
||||||
|
curl -fsSL "https://github.com/caddyserver/xcaddy/releases/download/${RELEASE}/xcaddy_${VERSION}_linux_amd64.deb" -o "xcaddy_${VERSION}_linux_amd64.deb"
|
||||||
|
$STD dpkg -i "xcaddy_${VERSION}_linux_amd64.deb"
|
||||||
|
rm -f "xcaddy_${VERSION}_linux_amd64.deb"
|
||||||
|
$STD xcaddy build
|
||||||
|
msg_ok "Updated xCaddy"
|
||||||
|
fi
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,4 +54,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:80${CL}"
|
||||||
|
|||||||
@@ -27,21 +27,21 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
if check_for_gh_release "checkmk" "checkmk/checkmk"; then
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/checkmk/checkmk/tags | grep "name" | awk '{print substr($2, 3, length($2)-4) }' | tr ' ' '\n' | grep -Ev 'rc|b' | sort -V | tail -n 1)
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
$STD omd stop monitoring
|
$STD omd stop monitoring
|
||||||
$STD omd cp monitoring monitoringbackup
|
$STD omd cp monitoring monitoringbackup
|
||||||
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
|
curl -fsSL "https://download.checkmk.com/checkmk/${RELEASE}/check-mk-raw-${RELEASE}_0.bookworm_amd64.deb" -o "/opt/checkmk.deb"
|
||||||
$STD apt-get install -y /opt/checkmk.deb
|
$STD apt-get install -y /opt/checkmk.deb
|
||||||
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
|
$STD omd --force -V ${RELEASE}.cre update --conflict=install monitoring
|
||||||
$STD omd start monitoring
|
$STD omd start monitoring
|
||||||
$STD omd -f rm monitoringbackup
|
$STD omd -f rm monitoringbackup
|
||||||
$STD omd cleanup
|
$STD omd cleanup
|
||||||
rm -rf /opt/checkmk.deb
|
rm -rf /opt/checkmk.deb
|
||||||
msg_ok "Updated ${APP}"
|
msg_ok "Updated ${APP}"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
6
ct/headers/joplin-server
Normal file
6
ct/headers/joplin-server
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ ___ _____
|
||||||
|
/ /___ ____ / (_)___ / ___/___ ______ _____ _____
|
||||||
|
__ / / __ \/ __ \/ / / __ \______\__ \/ _ \/ ___/ | / / _ \/ ___/
|
||||||
|
/ /_/ / /_/ / /_/ / / / / / /_____/__/ / __/ / | |/ / __/ /
|
||||||
|
\____/\____/ .___/_/_/_/ /_/ /____/\___/_/ |___/\___/_/
|
||||||
|
/_/
|
||||||
6
ct/headers/tunarr
Normal file
6
ct/headers/tunarr
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
______
|
||||||
|
/_ __/_ ______ ____ ___________
|
||||||
|
/ / / / / / __ \/ __ `/ ___/ ___/
|
||||||
|
/ / / /_/ / / / / /_/ / / / /
|
||||||
|
/_/ \__,_/_/ /_/\__,_/_/ /_/
|
||||||
|
|
||||||
6
ct/headers/upsnap
Normal file
6
ct/headers/upsnap
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
__ __ _____
|
||||||
|
/ / / /___ / ___/____ ____ _____
|
||||||
|
/ / / / __ \\__ \/ __ \/ __ `/ __ \
|
||||||
|
/ /_/ / /_/ /__/ / / / / /_/ / /_/ /
|
||||||
|
\____/ .___/____/_/ /_/\__,_/ .___/
|
||||||
|
/_/ /_/
|
||||||
@@ -53,3 +53,5 @@ description
|
|||||||
|
|
||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
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}Headscale API: ${IP}/api (no Frontend) | headscale-admin: http://${IP}/admin/${CL}"
|
||||||
|
|||||||
@@ -74,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.1"
|
RELEASE="1.143.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
|
||||||
|
|||||||
62
ct/joplin-server.sh
Normal file
62
ct/joplin-server.sh
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
#!/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: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://joplinapp.org/
|
||||||
|
|
||||||
|
APP="Joplin-Server"
|
||||||
|
var_tags="${var_tags:-notes}"
|
||||||
|
var_cpu="${var_cpu:-2}"
|
||||||
|
var_ram="${var_ram:-4096}"
|
||||||
|
var_disk="${var_disk:-20}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-12}"
|
||||||
|
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/joplin-server ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "joplin-server" "laurent22/joplin"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop joplin-server
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
|
||||||
|
|
||||||
|
msg_info "Updating ${APP}"
|
||||||
|
cd /opt/joplin-server
|
||||||
|
sed -i "/onenote-converter/d" packages/lib/package.json
|
||||||
|
$STD yarn config set --home enableTelemetry 0
|
||||||
|
export BUILD_SEQUENCIAL=1
|
||||||
|
$STD yarn install --inline-builds
|
||||||
|
msg_ok "Updated ${APP}"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start joplin-server
|
||||||
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:22300${CL}"
|
||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-2048}"
|
var_ram="${var_ram:-2048}"
|
||||||
var_disk="${var_disk:-4}"
|
var_disk="${var_disk:-4}"
|
||||||
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"
|
||||||
@@ -29,23 +29,24 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping Service"
|
||||||
systemctl stop litellm
|
systemctl stop litellm
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
VENV_PATH="/opt/litellm/.venv"
|
VENV_PATH="/opt/litellm/.venv"
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating LiteLLM"
|
||||||
$STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
|
$STD "$VENV_PATH/bin/python" -m pip install --upgrade litellm[proxy] prisma
|
||||||
|
msg_ok "LiteLLM updated"
|
||||||
|
|
||||||
msg_info "Updating DB Schema"
|
msg_info "Updating DB Schema"
|
||||||
$STD uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
|
$STD uv --directory=/opt/litellm run litellm --config /opt/litellm/litellm.yaml --use_prisma_db_push --skip_server_startup
|
||||||
msg_ok "DB Schema Updated"
|
msg_ok "DB Schema Updated"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting Service"
|
||||||
systemctl start litellm
|
systemctl start litellm
|
||||||
msg_ok "Started ${APP}"
|
msg_ok "Started Service"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -35,12 +35,15 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Creating Backup"
|
||||||
cp /opt/mmdl/.env /opt/mmdl.env
|
cp /opt/mmdl/.env /opt/mmdl.env
|
||||||
|
rm -rf /opt/mmdl
|
||||||
msg_ok "Backup Created"
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
fetch_and_deploy_gh_release "mmdl" "intri-in/manage-my-damn-life-nextjs" "tarball"
|
||||||
|
NODE_VERSION="22" setup_nodejs
|
||||||
|
|
||||||
msg_info "Configuring ${APP}"
|
msg_info "Configuring ${APP}"
|
||||||
cd /opt/mmdl
|
cd /opt/mmdl
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run migrate
|
$STD npm run migrate
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "monica" "monicahq/monica"; then
|
if check_for_gh_release "monica" "monicahq/monica"; then
|
||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop apache2
|
systemctl stop apache2
|
||||||
@@ -43,6 +46,7 @@ function update_script() {
|
|||||||
cp -r /opt/monica-backup/.env /opt/monica
|
cp -r /opt/monica-backup/.env /opt/monica
|
||||||
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
|
cp -r /opt/monica-backup/storage/* /opt/monica/storage/
|
||||||
$STD composer install --no-interaction --no-dev
|
$STD composer install --no-interaction --no-dev
|
||||||
|
$STD yarn config set ignore-engines true
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn run production
|
$STD yarn run production
|
||||||
$STD php artisan monica:update --force
|
$STD php artisan monica:update --force
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ function update_script() {
|
|||||||
msg_info "Stopping Service"
|
msg_info "Stopping Service"
|
||||||
systemctl stop ollama
|
systemctl stop ollama
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
|
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
|
||||||
rm -rf /usr/lib/ollama
|
rm -rf /usr/lib/ollama
|
||||||
rm -rf /usr/bin/ollama
|
rm -rf /usr/bin/ollama
|
||||||
tar -C /usr -xzf ollama-linux-amd64.tgz
|
tar -C /usr -xzf ollama-linux-amd64.tgz
|
||||||
|
|||||||
@@ -28,6 +28,8 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
|
|
||||||
if check_for_gh_release "outline" "outline/outline"; then
|
if check_for_gh_release "outline" "outline/outline"; then
|
||||||
msg_info "Stopping Services"
|
msg_info "Stopping Services"
|
||||||
systemctl stop outline
|
systemctl stop outline
|
||||||
@@ -37,7 +39,7 @@ function update_script() {
|
|||||||
cp /opt/outline/.env /opt
|
cp /opt/outline/.env /opt
|
||||||
msg_ok "Backup created"
|
msg_ok "Backup created"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "outline" "outline/outline" "tarball"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
cd /opt/outline
|
cd /opt/outline
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ function update_script() {
|
|||||||
if check_for_gh_release "paymenter" "paymenter/paymenter"; then
|
if check_for_gh_release "paymenter" "paymenter/paymenter"; then
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating ${APP}"
|
||||||
cd /opt/paymenter
|
cd /opt/paymenter
|
||||||
$STD php artisan p:upgrade --no-interaction
|
$STD php artisan app:upgrade --no-interaction
|
||||||
echo "${CHECK_UPDATE_RELEASE}" >~/.paymenter
|
echo "${CHECK_UPDATE_RELEASE}" >~/.paymenter
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ function update_script() {
|
|||||||
mv /opt/tandoor /opt/tandoor.bak
|
mv /opt/tandoor /opt/tandoor.bak
|
||||||
msg_ok "Backup Created"
|
msg_ok "Backup Created"
|
||||||
|
|
||||||
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||||
|
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
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"
|
||||||
@@ -33,22 +33,23 @@ function update_script() {
|
|||||||
systemctl stop tracktor
|
systemctl stop tracktor
|
||||||
msg_ok "Stopped Service"
|
msg_ok "Stopped Service"
|
||||||
|
|
||||||
msg_info "Creating Backup"
|
msg_info "Correcting Services"
|
||||||
cp /opt/tracktor/app/backend/.env /opt/tracktor.env
|
if [ -f /opt/tracktor/app/backend/.env ]; then
|
||||||
msg_ok "Created Backup"
|
mv /opt/tracktor/app/backend/.env /opt/tracktor.env
|
||||||
|
echo 'AUTH_PIN=123456' >> /opt/tracktor.env
|
||||||
|
sed -i 's|^EnvironmentFile=.*|EnvironmentFile=/opt/tracktor.env|' /etc/systemd/system/tracktor.service
|
||||||
|
systemctl daemon-reload
|
||||||
|
fi
|
||||||
|
msg_ok "Corrected Services"
|
||||||
|
|
||||||
setup_nodejs
|
setup_nodejs
|
||||||
fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
CLEAN_INSTALL=1 fetch_and_deploy_gh_release "tracktor" "javedh-dev/tracktor" "tarball" "latest" "/opt/tracktor"
|
||||||
|
|
||||||
msg_info "Updating ${APP}"
|
msg_info "Updating tracktor"
|
||||||
cd /opt/tracktor
|
cd /opt/tracktor
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run build
|
$STD npm run build
|
||||||
msg_ok "Updated $APP"
|
msg_ok "Updated tracktor"
|
||||||
|
|
||||||
msg_info "Restoring Backup"
|
|
||||||
cp /opt/tracktor.env /opt/tracktor/app/backend/.env
|
|
||||||
msg_ok "Restored Backup"
|
|
||||||
|
|
||||||
msg_info "Starting Service"
|
msg_info "Starting Service"
|
||||||
systemctl start tracktor
|
systemctl start tracktor
|
||||||
|
|||||||
79
ct/tunarr.sh
Normal file
79
ct/tunarr.sh
Normal 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}"
|
||||||
53
ct/upsnap.sh
Normal file
53
ct/upsnap.sh
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/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: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/seriousm4x/UpSnap
|
||||||
|
|
||||||
|
APP="UpSnap"
|
||||||
|
var_tags="${var_tags:-network}"
|
||||||
|
var_cpu="${var_cpu:-1}"
|
||||||
|
var_ram="${var_ram:-512}"
|
||||||
|
var_disk="${var_disk:-2}"
|
||||||
|
var_os="${var_os:-debian}"
|
||||||
|
var_version="${var_version:-13}"
|
||||||
|
var_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/upsnap ]]; then
|
||||||
|
msg_error "No ${APP} Installation Found!"
|
||||||
|
exit
|
||||||
|
fi
|
||||||
|
|
||||||
|
if check_for_gh_release "upsnap" "seriousm4x/UpSnap"; then
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop upsnap
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start upsnap
|
||||||
|
msg_ok "Started Services"
|
||||||
|
msg_ok "Updated Successfully"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
|
}
|
||||||
|
|
||||||
|
start
|
||||||
|
build_container
|
||||||
|
description
|
||||||
|
|
||||||
|
msg_ok "Completed Successfully!\n"
|
||||||
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
|
echo -e "${TAB}${GATEWAY}${BGN}http://${IP}:8090${CL}"
|
||||||
@@ -9,7 +9,7 @@ APP="Wazuh"
|
|||||||
var_tags="${var_tags:-security;monitoring}"
|
var_tags="${var_tags:-security;monitoring}"
|
||||||
var_cpu="${var_cpu:-4}"
|
var_cpu="${var_cpu:-4}"
|
||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-18}"
|
var_disk="${var_disk:-25}"
|
||||||
var_os="${var_os:-debian}"
|
var_os="${var_os:-debian}"
|
||||||
var_version="${var_version:-12}"
|
var_version="${var_version:-12}"
|
||||||
var_unprivileged="${var_unprivileged:-1}"
|
var_unprivileged="${var_unprivileged:-1}"
|
||||||
@@ -41,4 +41,4 @@ description
|
|||||||
msg_ok "Completed Successfully!\n"
|
msg_ok "Completed Successfully!\n"
|
||||||
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
echo -e "${CREATING}${GN}${APP} setup has been successfully initialized!${CL}"
|
||||||
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
echo -e "${INFO}${YW} Access it using the following URL:${CL}"
|
||||||
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:443${CL}"
|
echo -e "${TAB}${GATEWAY}${BGN}https://${IP}:443${CL}"
|
||||||
|
|||||||
65
ct/zabbix.sh
65
ct/zabbix.sh
@@ -11,7 +11,7 @@ var_cpu="${var_cpu:-2}"
|
|||||||
var_ram="${var_ram:-4096}"
|
var_ram="${var_ram:-4096}"
|
||||||
var_disk="${var_disk:-6}"
|
var_disk="${var_disk:-6}"
|
||||||
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,37 +23,72 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then
|
if [[ ! -f /etc/zabbix/zabbix_server.conf ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Stopping ${APP} Services"
|
|
||||||
systemctl stop zabbix-server zabbix-agent2
|
|
||||||
msg_ok "Stopped ${APP} Services"
|
|
||||||
|
|
||||||
msg_info "Updating $APP LXC"
|
. /etc/os-release
|
||||||
|
if [ "$VERSION_CODENAME" != "trixie" ]; then
|
||||||
|
msg_error "Unsupported Debian version: $VERSION_CODENAME – please upgrade to Debian 13 (Trixie) before updating Zabbix."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if systemctl list-unit-files | grep -q zabbix-agent2.service; then
|
||||||
|
AGENT_SERVICE="zabbix-agent2"
|
||||||
|
else
|
||||||
|
AGENT_SERVICE="zabbix-agent"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop zabbix-server $AGENT_SERVICE
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
msg_info "Updating Zabbix"
|
||||||
mkdir -p /opt/zabbix-backup/
|
mkdir -p /opt/zabbix-backup/
|
||||||
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
|
cp /etc/zabbix/zabbix_server.conf /opt/zabbix-backup/
|
||||||
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
|
cp /etc/apache2/conf-enabled/zabbix.conf /opt/zabbix-backup/
|
||||||
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
|
cp -R /usr/share/zabbix/ /opt/zabbix-backup/
|
||||||
#cp -R /usr/share/zabbix-* /opt/zabbix-backup/ Remove temporary
|
|
||||||
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
rm -Rf /etc/apt/sources.list.d/zabbix.list
|
||||||
cd /tmp
|
cd /tmp
|
||||||
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
||||||
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
|
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
|
||||||
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
|
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
|
||||||
-o /tmp/zabbix-release_latest+debian12_all.deb
|
-o /tmp/zabbix-release_latest+debian13_all.deb
|
||||||
$STD dpkg -i zabbix-release_latest+debian12_all.deb
|
$STD dpkg -i zabbix-release_latest+debian13_all.deb
|
||||||
$STD apt-get update
|
$STD apt update
|
||||||
$STD apt-get install --only-upgrade zabbix-server-pgsql zabbix-frontend-php zabbix-agent2 zabbix-agent2-plugin-*
|
|
||||||
|
|
||||||
msg_info "Starting ${APP} Services"
|
$STD apt install --only-upgrade zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql
|
||||||
systemctl start zabbix-server zabbix-agent2
|
|
||||||
|
if [ "$AGENT_SERVICE" = "zabbix-agent2" ]; then
|
||||||
|
$STD apt install --only-upgrade zabbix-agent2 zabbix-agent2-plugin-postgresql
|
||||||
|
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
|
||||||
|
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
|
||||||
|
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
$STD apt install --only-upgrade zabbix-agent
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v fping >/dev/null 2>&1; then
|
||||||
|
FPING_PATH=$(command -v fping)
|
||||||
|
sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
|
||||||
|
fi
|
||||||
|
if command -v fping6 >/dev/null 2>&1; then
|
||||||
|
FPING6_PATH=$(command -v fping6)
|
||||||
|
sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
|
||||||
|
fi
|
||||||
|
msg_ok "Updated Zabbix"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start zabbix-server $AGENT_SERVICE
|
||||||
systemctl restart apache2
|
systemctl restart apache2
|
||||||
msg_ok "Started ${APP} Services"
|
msg_ok "Started Services"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
msg_info "Cleaning Up"
|
||||||
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
msg_ok "Updated Successfully"
|
msg_ok "Updated Successfully"
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE LXC Tag",
|
"name": "PVE LXC Tag",
|
||||||
"slug": "add-iptag",
|
"slug": "add-iptag",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -20,7 +20,7 @@
|
|||||||
"script": "ct/booklore.sh",
|
"script": "ct/booklore.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 3,
|
"cpu": 3,
|
||||||
"ram": 2048,
|
"ram": 3072,
|
||||||
"hdd": 7,
|
"hdd": 7,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 1,
|
"cpu": 1,
|
||||||
"ram": 512,
|
"ram": 512,
|
||||||
"hdd": 4,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE LXC Cleaner",
|
"name": "PVE LXC Cleaner",
|
||||||
"slug": "clean-lxcs",
|
"slug": "clean-lxcs",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Clean Orphaned LVM",
|
"name": "PVE Clean Orphaned LVM",
|
||||||
"slug": "clean-orphaned-lvm",
|
"slug": "clean-orphaned-lvm",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -32,5 +32,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"type": "info",
|
||||||
|
"text": "The file `/etc/sysconfig/CosmosCloud` is optional. If you need custom settings, you can create it yourself."
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Cron LXC Updater",
|
"name": "PVE Cron LXC Updater",
|
||||||
"slug": "cron-update-lxcs",
|
"slug": "cron-update-lxcs",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -39,6 +39,10 @@
|
|||||||
{
|
{
|
||||||
"type": "info",
|
"type": "info",
|
||||||
"text": "Synapse-Admin is running on port 5173"
|
"text": "Synapse-Admin is running on port 5173"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "info",
|
||||||
|
"text": "For bridges Installation methods (WhatsApp, Signal, Discord, etc.), see: ´https://docs.mau.fi/bridges/go/setup.html´"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE LXC Filesystem Trim",
|
"name": "PVE LXC Filesystem Trim",
|
||||||
"slug": "fstrim",
|
"slug": "fstrim",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Host Backup",
|
"name": "PVE Host Backup",
|
||||||
"slug": "host-backup",
|
"slug": "host-backup",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
40
frontend/public/json/joplin-server.json
Normal file
40
frontend/public/json/joplin-server.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "Joplin Server",
|
||||||
|
"slug": "joplin-server",
|
||||||
|
"categories": [
|
||||||
|
12
|
||||||
|
],
|
||||||
|
"date_created": "2025-09-24",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 22300,
|
||||||
|
"documentation": "https://joplinapp.org/help/",
|
||||||
|
"config_path": "/opt/joplin-server/.env",
|
||||||
|
"website": "https://joplinapp.org/",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/joplin.webp",
|
||||||
|
"description": "Joplin - the privacy-focused note taking app with sync capabilities for Windows, macOS, Linux, Android and iOS.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/joplin-server.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 2,
|
||||||
|
"ram": 4096,
|
||||||
|
"hdd": 20,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "12"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": "admin@localhost",
|
||||||
|
"password": "admin"
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Application can take some time to build, depending on your host speed. Please be patient.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Kernel Clean",
|
"name": "PVE Kernel Clean",
|
||||||
"slug": "kernel-clean",
|
"slug": "kernel-clean",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Kernel Pin",
|
"name": "PVE Kernel Pin",
|
||||||
"slug": "kernel-pin",
|
"slug": "kernel-pin",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 4,
|
"hdd": 4,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Container LXC Deletion",
|
"name": "PVE LXC Deletion",
|
||||||
"slug": "lxc-delete",
|
"slug": "lxc-delete",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Processor Microcode",
|
"name": "PVE Processor Microcode",
|
||||||
"slug": "microcode",
|
"slug": "microcode",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Monitor-All",
|
"name": "PVE Monitor-All",
|
||||||
"slug": "monitor-all",
|
"slug": "monitor-all",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Netdata",
|
"name": "PVE Netdata",
|
||||||
"slug": "netdata",
|
"slug": "netdata",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -31,5 +31,10 @@
|
|||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": null
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "Script contains optional installation of Ollama.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Backup Server Processor Microcode",
|
"name": "PBS Processor Microcode",
|
||||||
"slug": "pbs-microcode",
|
"slug": "pbs-microcode",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Backup Server Post Install",
|
"name": "PBS Post Install",
|
||||||
"slug": "post-pbs-install",
|
"slug": "post-pbs-install",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "The script will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
|
"description": "The script is designed for Proxmox Backup Server (PBS) and will give options to Disable the Enterprise Repo, Add/Correct PBS Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Backup Server and Reboot PBS.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Mail Gateway Post Install",
|
"name": "PMG Post Install",
|
||||||
"slug": "post-pmg-install",
|
"slug": "post-pmg-install",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
@@ -13,7 +13,7 @@
|
|||||||
"website": null,
|
"website": null,
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/proxmox.webp",
|
||||||
"config_path": "",
|
"config_path": "",
|
||||||
"description": "The script will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
|
"description": "The script is designed for Proxmox Mail Gateway and will give options to Disable the Enterprise Repo, Add/Correct PMG Sources, Enable the No-Subscription Repo, Add Test Repo, Disable Subscription Nag, Update Proxmox Mail Gateway and Reboot PMG.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE Post Install",
|
"name": "PVE Post Install",
|
||||||
"slug": "post-pve-install",
|
"slug": "post-pve-install",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Backup Server",
|
"name": "Proxmox Backup Server (PBS)",
|
||||||
"slug": "proxmox-backup-server",
|
"slug": "proxmox-backup-server",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Datacenter Manager",
|
"name": "Proxmox Datacenter Manager (PDM)",
|
||||||
"slug": "proxmox-datacenter-manager",
|
"slug": "proxmox-datacenter-manager",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Mail Gateway",
|
"name": "Proxmox Mail Gateway (PMG)",
|
||||||
"slug": "proxmox-mail-gateway",
|
"slug": "proxmox-mail-gateway",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE CPU Scaling Governor",
|
"name": "PVE CPU Scaling Governor",
|
||||||
"slug": "scaling-governor",
|
"slug": "scaling-governor",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 3000,
|
"interface_port": 3000,
|
||||||
"documentation": "https://tracktor.bytedge.in/introduction.html",
|
"documentation": "https://tracktor.bytedge.in/introduction.html",
|
||||||
"config_path": "/opt/tracktor/app/server/.env",
|
"config_path": "/opt/tracktor.env",
|
||||||
"website": "https://tracktor.bytedge.in/",
|
"website": "https://tracktor.bytedge.in/",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/tracktor.webp",
|
||||||
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
|
"description": "Tracktor is an open-source web application for comprehensive vehicle management.\nEasily track fuel consumption, maintenance, insurance, and regulatory documents for all your vehicles in one place.",
|
||||||
@@ -23,17 +23,17 @@
|
|||||||
"ram": 1024,
|
"ram": 1024,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "Debian",
|
"os": "Debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": null,
|
||||||
"password": null
|
"password": "123456"
|
||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Please check and update the '/opt/tracktor/app/backend/.env' file if using behind reverse proxy.",
|
"text": "Please check and update the '/opt/tracktor.env' file if using behind reverse proxy.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
35
frontend/public/json/tunarr.json
Normal file
35
frontend/public/json/tunarr.json
Normal 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": []
|
||||||
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox VE LXC Updater",
|
"name": "PVE LXC Updater",
|
||||||
"slug": "update-lxcs",
|
"slug": "update-lxcs",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"name": "Proxmox Update Repositories",
|
"name": "PVE Update Repositories",
|
||||||
"slug": "update-repo",
|
"slug": "update-repo",
|
||||||
"categories": [
|
"categories": [
|
||||||
1
|
1
|
||||||
|
|||||||
40
frontend/public/json/upsnap.json
Normal file
40
frontend/public/json/upsnap.json
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"name": "UpSnap",
|
||||||
|
"slug": "upsnap",
|
||||||
|
"categories": [
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"date_created": "2025-09-23",
|
||||||
|
"type": "ct",
|
||||||
|
"updateable": true,
|
||||||
|
"privileged": false,
|
||||||
|
"interface_port": 8090,
|
||||||
|
"documentation": "https://github.com/seriousm4x/UpSnap/wiki",
|
||||||
|
"config_path": "",
|
||||||
|
"website": "https://github.com/seriousm4x/UpSnap",
|
||||||
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/upsnap.webp",
|
||||||
|
"description": "UpSnap is a self-hosted web app that lets you wake up, manage and monitor devices on your network with ease. Built with SvelteKit, Go and PocketBase, it offers a clean dashboard, scheduled wake-ups, device discovery and secure user management.",
|
||||||
|
"install_methods": [
|
||||||
|
{
|
||||||
|
"type": "default",
|
||||||
|
"script": "ct/upsnap.sh",
|
||||||
|
"resources": {
|
||||||
|
"cpu": 1,
|
||||||
|
"ram": 512,
|
||||||
|
"hdd": 2,
|
||||||
|
"os": "Debian",
|
||||||
|
"version": "13"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"default_credentials": {
|
||||||
|
"username": null,
|
||||||
|
"password": null
|
||||||
|
},
|
||||||
|
"notes": [
|
||||||
|
{
|
||||||
|
"text": "The first user you register will be the admin user.",
|
||||||
|
"type": "info"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -1,19 +1,379 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "henrygd/beszel",
|
||||||
|
"version": "v0.12.11",
|
||||||
|
"date": "2025-09-24T22:19:00Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "ollama/ollama",
|
"name": "ollama/ollama",
|
||||||
"version": "v0.11.11-rc3",
|
"version": "v0.12.1-rc2",
|
||||||
"date": "2025-09-12T23:40:14Z"
|
"date": "2025-09-23T06:20:20Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "home-assistant/core",
|
||||||
|
"version": "2025.9.4",
|
||||||
|
"date": "2025-09-19T21:09:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "mongodb/mongo",
|
||||||
|
"version": "r8.2.1-rc1",
|
||||||
|
"date": "2025-09-24T19:54:34Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "msgbyte/tianji",
|
||||||
|
"version": "v1.26.3",
|
||||||
|
"date": "2025-09-24T17:37:55Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TandoorRecipes/recipes",
|
||||||
|
"version": "2.2.4",
|
||||||
|
"date": "2025-09-24T17:11:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "go-gitea/gitea",
|
||||||
|
"version": "v1.26.0-dev",
|
||||||
|
"date": "2025-09-24T16:45:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rclone/rclone",
|
||||||
|
"version": "v1.71.1",
|
||||||
|
"date": "2025-09-24T16:32:16Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.112.5",
|
||||||
|
"date": "2025-09-24T14:44:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "alexta69/metube",
|
||||||
|
"version": "2025.09.24",
|
||||||
|
"date": "2025-09-24T13:51:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "AlexxIT/go2rtc",
|
||||||
|
"version": "v1.9.10",
|
||||||
|
"date": "2025-09-24T13:49:53Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "influxdata/influxdb",
|
||||||
|
"version": "v1.11.9",
|
||||||
|
"date": "2025-09-24T13:15:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "fumadocs-typescript@4.0.9",
|
||||||
|
"date": "2025-09-24T12:52:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "element-hq/synapse",
|
||||||
|
"version": "v1.138.2",
|
||||||
|
"date": "2025-09-24T12:45:13Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zwave-js/zwave-js-ui",
|
||||||
|
"version": "v11.3.1",
|
||||||
|
"date": "2025-09-24T11:58:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jupyter/notebook",
|
||||||
|
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.3",
|
||||||
|
"date": "2025-09-24T09:14:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "meilisearch/meilisearch",
|
||||||
|
"version": "latest",
|
||||||
|
"date": "2025-09-24T08:45:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wazuh/wazuh",
|
||||||
|
"version": "coverity-w39-4.14.0",
|
||||||
|
"date": "2025-09-24T08:44:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "syncthing/syncthing",
|
||||||
|
"version": "v2.0.10",
|
||||||
|
"date": "2025-09-24T08:33:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.23.59",
|
||||||
|
"date": "2025-09-24T06:04:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jeedom/core",
|
||||||
|
"version": "4.4.20",
|
||||||
|
"date": "2025-09-24T00:27:13Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.6.2",
|
||||||
|
"date": "2025-07-17T12:08:03Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "grafana/grafana",
|
||||||
|
"version": "v12.2.0",
|
||||||
|
"date": "2025-09-23T23:47:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "9001/copyparty",
|
||||||
|
"version": "v1.19.14",
|
||||||
|
"date": "2025-09-23T22:57:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "HabitRPG/habitica",
|
||||||
|
"version": "v5.41.3",
|
||||||
|
"date": "2025-09-23T22:21:04Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Part-DB/Part-DB-server",
|
||||||
|
"version": "v2.2.0",
|
||||||
|
"date": "2025-09-23T21:46:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "immich-app/immich",
|
||||||
|
"version": "v1.143.1",
|
||||||
|
"date": "2025-09-23T19:00:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "firefly-iii/firefly-iii",
|
||||||
|
"version": "v6.4.0",
|
||||||
|
"date": "2025-09-13T16:38:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Threadfin/Threadfin",
|
||||||
|
"version": "1.2.38",
|
||||||
|
"date": "2025-09-23T17:49:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "getumbrel/umbrel",
|
||||||
|
"version": "1.4.2",
|
||||||
|
"date": "2025-05-09T08:54:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "bunkerity/bunkerweb",
|
||||||
|
"version": "v1.6.4",
|
||||||
|
"date": "2025-08-18T20:22:07Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "jenkinsci/jenkins",
|
||||||
|
"version": "jenkins-2.529",
|
||||||
|
"date": "2025-09-23T14:40:20Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "zabbix/zabbix",
|
||||||
|
"version": "7.4.3rc1",
|
||||||
|
"date": "2025-09-23T13:54:56Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "duplicati/duplicati",
|
||||||
|
"version": "v2.1.1.102-2.1.1.102_canary_2025-09-23",
|
||||||
|
"date": "2025-09-23T13:32:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "documenso/documenso",
|
||||||
|
"version": "v1.12.5",
|
||||||
|
"date": "2025-09-23T11:00:48Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.2.9",
|
||||||
|
"date": "2025-09-17T15:11:25Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "chrisvel/tududi",
|
||||||
|
"version": "v0.82-rc5",
|
||||||
|
"date": "2025-09-23T07:31:12Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "morpheus65535/bazarr",
|
||||||
|
"version": "v1.5.3",
|
||||||
|
"date": "2025-09-20T12:12:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "booklore-app/booklore",
|
||||||
|
"version": "v1.3.3",
|
||||||
|
"date": "2025-09-23T00:41:08Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "postgres/postgres",
|
||||||
|
"version": "REL_18_0",
|
||||||
|
"date": "2025-09-22T20:11:33Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gtsteffaniak/filebrowser",
|
||||||
|
"version": "v0.8.7-beta",
|
||||||
|
"date": "2025-09-22T18:24:54Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gethomepage/homepage",
|
||||||
|
"version": "v1.5.0",
|
||||||
|
"date": "2025-09-22T15:28:49Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cloudflare/cloudflared",
|
||||||
|
"version": "2025.9.1",
|
||||||
|
"date": "2025-09-22T13:32:14Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "sabnzbd/sabnzbd",
|
||||||
|
"version": "4.5.3",
|
||||||
|
"date": "2025-08-25T13:59:56Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "nzbgetcom/nzbget",
|
||||||
|
"version": "v25.3",
|
||||||
|
"date": "2025-09-01T09:47:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Graylog2/graylog2-server",
|
||||||
|
"version": "7.0.0-beta.1",
|
||||||
|
"date": "2025-09-22T11:53:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "itsmng/itsm-ng",
|
||||||
|
"version": "v2.1.0",
|
||||||
|
"date": "2025-09-22T09:23:37Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "prometheus/prometheus",
|
||||||
|
"version": "v3.6.0",
|
||||||
|
"date": "2025-09-22T08:24:59Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
|
"version": "4.9.1.2",
|
||||||
|
"date": "2025-06-26T22:08:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Athou/commafeed",
|
||||||
|
"version": "5.11.1",
|
||||||
|
"date": "2025-09-22T02:21:27Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "TwiN/gatus",
|
||||||
|
"version": "v5.24.3",
|
||||||
|
"date": "2025-09-22T00:04:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Radarr/Radarr",
|
||||||
|
"version": "v5.27.5.10198",
|
||||||
|
"date": "2025-09-03T12:08:43Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Prowlarr/Prowlarr",
|
||||||
|
"version": "v2.0.5.5160",
|
||||||
|
"date": "2025-08-23T21:23:11Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Lidarr/Lidarr",
|
||||||
|
"version": "v2.13.3.4711",
|
||||||
|
"date": "2025-08-28T20:06:24Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "runtipi/runtipi",
|
||||||
|
"version": "nightly",
|
||||||
|
"date": "2025-09-21T18:15:06Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Ombi-app/Ombi",
|
||||||
|
"version": "v4.47.1",
|
||||||
|
"date": "2025-01-05T21:14:23Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "wizarrrr/wizarr",
|
||||||
|
"version": "v2025.9.5",
|
||||||
|
"date": "2025-09-21T13:26:53Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "openhab/openhab-core",
|
||||||
|
"version": "5.1.0.M1",
|
||||||
|
"date": "2025-09-21T13:17:32Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "gotify/server",
|
||||||
|
"version": "v2.7.3",
|
||||||
|
"date": "2025-09-21T12:07:19Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "thomiceli/opengist",
|
||||||
|
"version": "v1.11.0",
|
||||||
|
"date": "2025-09-21T02:53:18Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Luligu/matterbridge",
|
||||||
|
"version": "3.2.8",
|
||||||
|
"date": "2025-09-20T22:08:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fallenbagel/jellyseerr",
|
||||||
|
"version": "preview-fix-watchlist-error",
|
||||||
|
"date": "2025-09-20T21:07:50Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "pocket-id/pocket-id",
|
"name": "pocket-id/pocket-id",
|
||||||
"version": "v1.11.1",
|
"version": "v1.11.2",
|
||||||
"date": "2025-09-18T20:55:56Z"
|
"date": "2025-09-20T20:15:40Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cross-seed/cross-seed",
|
||||||
|
"version": "v6.13.4",
|
||||||
|
"date": "2025-09-20T20:03:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "traccar/traccar",
|
||||||
|
"version": "v6.10.0",
|
||||||
|
"date": "2025-09-20T15:40:36Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "forgejo/forgejo",
|
||||||
|
"version": "v12.0.4",
|
||||||
|
"date": "2025-09-20T07:16:15Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "theonedev/onedev",
|
||||||
|
"version": "v13.0.1",
|
||||||
|
"date": "2025-09-20T00:15:38Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "inventree/InvenTree",
|
||||||
|
"version": "1.0.1",
|
||||||
|
"date": "2025-09-19T22:28:31Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ipfs/kubo",
|
||||||
|
"version": "v0.37.0",
|
||||||
|
"date": "2025-08-27T20:03:52Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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": "hargata/lubelog",
|
||||||
|
"version": "v1.5.2",
|
||||||
|
"date": "2025-09-19T14:18:53Z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "mattermost/mattermost",
|
"name": "mattermost/mattermost",
|
||||||
"version": "mattermost-redux@10.12.0",
|
"version": "mattermost-redux@10.12.0",
|
||||||
"date": "2025-09-18T20:15:19Z"
|
"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": "saltstack/salt",
|
"name": "saltstack/salt",
|
||||||
"version": "v3007.8",
|
"version": "v3007.8",
|
||||||
@@ -34,11 +394,6 @@
|
|||||||
"version": "e5.10.1",
|
"version": "e5.10.1",
|
||||||
"date": "2025-09-18T16:43:47Z"
|
"date": "2025-09-18T16:43:47Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "TandoorRecipes/recipes",
|
|
||||||
"version": "2.2.1",
|
|
||||||
"date": "2025-09-18T16:18:17Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "YunoHost/yunohost",
|
"name": "YunoHost/yunohost",
|
||||||
"version": "debian/12.1.25",
|
"version": "debian/12.1.25",
|
||||||
@@ -49,81 +404,26 @@
|
|||||||
"version": "v8.3.2",
|
"version": "v8.3.2",
|
||||||
"date": "2025-09-18T13:55:58Z"
|
"date": "2025-09-18T13:55:58Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.109.2",
|
|
||||||
"date": "2025-09-03T07:50:21Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "zitadel/zitadel",
|
"name": "zitadel/zitadel",
|
||||||
"version": "v4.2.2",
|
"version": "v4.2.2",
|
||||||
"date": "2025-09-18T10:45:22Z"
|
"date": "2025-09-18T10:45:22Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cloudflare/cloudflared",
|
|
||||||
"version": "2025.9.0",
|
|
||||||
"date": "2025-09-18T10:23:49Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wazuh/wazuh",
|
|
||||||
"version": "coverity-w38-4.14.0",
|
|
||||||
"date": "2025-09-18T10:14:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "NLnetLabs/unbound",
|
"name": "NLnetLabs/unbound",
|
||||||
"version": "release-1.24.0",
|
"version": "release-1.24.0",
|
||||||
"date": "2025-09-18T08:36:55Z"
|
"date": "2025-09-18T08:36:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.23.38",
|
|
||||||
"date": "2025-09-18T05:55:28Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "outline/outline",
|
"name": "outline/outline",
|
||||||
"version": "v0.87.4",
|
"version": "v0.87.4",
|
||||||
"date": "2025-09-18T00:47:08Z"
|
"date": "2025-09-18T00:47:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jeedom/core",
|
|
||||||
"version": "4.4.20",
|
|
||||||
"date": "2025-09-18T00:27:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.6.2",
|
|
||||||
"date": "2025-07-17T12:08:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "MediaBrowser/Emby.Releases",
|
|
||||||
"version": "4.9.1.2",
|
|
||||||
"date": "2025-06-26T22:08:00Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "TwiN/gatus",
|
|
||||||
"version": "v5.24.0",
|
|
||||||
"date": "2025-09-17T23:46:05Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.2.9",
|
|
||||||
"date": "2025-09-17T15:11:25Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "henrygd/beszel",
|
|
||||||
"version": "v0.12.9",
|
|
||||||
"date": "2025-09-17T20:13:59Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "TasmoAdmin/TasmoAdmin",
|
"name": "TasmoAdmin/TasmoAdmin",
|
||||||
"version": "v4.3.1",
|
"version": "v4.3.1",
|
||||||
"date": "2025-07-22T20:10:08Z"
|
"date": "2025-07-22T20:10:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "msgbyte/tianji",
|
|
||||||
"version": "v1.25.14",
|
|
||||||
"date": "2025-09-17T19:00:05Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "eclipse-mosquitto/mosquitto",
|
"name": "eclipse-mosquitto/mosquitto",
|
||||||
"version": "2.1.0-test1",
|
"version": "2.1.0-test1",
|
||||||
@@ -154,11 +454,6 @@
|
|||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"date": "2025-08-29T13:38:35Z"
|
"date": "2025-08-29T13:38:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jenkinsci/jenkins",
|
|
||||||
"version": "jenkins-2.528",
|
|
||||||
"date": "2025-09-17T13:09:51Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "cockpit-project/cockpit",
|
"name": "cockpit-project/cockpit",
|
||||||
"version": "347",
|
"version": "347",
|
||||||
@@ -179,41 +474,11 @@
|
|||||||
"version": "v2.16.31",
|
"version": "v2.16.31",
|
||||||
"date": "2025-09-17T09:57:55Z"
|
"date": "2025-09-17T09:57:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "nzbgetcom/nzbget",
|
|
||||||
"version": "v25.3",
|
|
||||||
"date": "2025-09-01T09:47:06Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "WGDashboard/WGDashboard",
|
"name": "WGDashboard/WGDashboard",
|
||||||
"version": "v4.3.0.1",
|
"version": "v4.3.0.1",
|
||||||
"date": "2025-09-17T08:50:39Z"
|
"date": "2025-09-17T08:50:39Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "esphome/esphome",
|
|
||||||
"version": "2025.9.0",
|
|
||||||
"date": "2025-09-17T06:51:31Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "morpheus65535/bazarr",
|
|
||||||
"version": "v1.5.3-beta.10",
|
|
||||||
"date": "2025-07-15T06:07:03Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "HabitRPG/habitica",
|
|
||||||
"version": "v5.41.1",
|
|
||||||
"date": "2025-09-17T03:15:01Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gtsteffaniak/filebrowser",
|
|
||||||
"version": "v0.8.6-beta",
|
|
||||||
"date": "2025-09-17T00:57:54Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Ombi-app/Ombi",
|
|
||||||
"version": "v4.47.1",
|
|
||||||
"date": "2025-01-05T21:14:23Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Cleanuparr/Cleanuparr",
|
"name": "Cleanuparr/Cleanuparr",
|
||||||
"version": "v2.3.1",
|
"version": "v2.3.1",
|
||||||
@@ -224,26 +489,11 @@
|
|||||||
"version": "2.510",
|
"version": "2.510",
|
||||||
"date": "2025-09-16T20:28:37Z"
|
"date": "2025-09-16T20:28:37Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "firefly-iii/firefly-iii",
|
|
||||||
"version": "v6.4.0",
|
|
||||||
"date": "2025-09-13T16:38:21Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "bunkerity/bunkerweb",
|
|
||||||
"version": "v1.6.4",
|
|
||||||
"date": "2025-08-18T20:22:07Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "AdguardTeam/AdGuardHome",
|
"name": "AdguardTeam/AdGuardHome",
|
||||||
"version": "v0.107.66",
|
"version": "v0.107.66",
|
||||||
"date": "2025-09-15T13:39:52Z"
|
"date": "2025-09-15T13:39:52Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "booklore-app/booklore",
|
|
||||||
"version": "v1.3.2",
|
|
||||||
"date": "2025-09-16T16:04:50Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "netbox-community/netbox",
|
"name": "netbox-community/netbox",
|
||||||
"version": "v4.4.1",
|
"version": "v4.4.1",
|
||||||
@@ -254,21 +504,6 @@
|
|||||||
"version": "version/2025.8.3",
|
"version": "version/2025.8.3",
|
||||||
"date": "2025-09-16T15:19:06Z"
|
"date": "2025-09-16T15:19:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "immich-app/immich",
|
|
||||||
"version": "v1.142.1",
|
|
||||||
"date": "2025-09-16T14:51:53Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "wizarrrr/wizarr",
|
|
||||||
"version": "v2025.9.4",
|
|
||||||
"date": "2025-09-16T14:12:49Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zwave-js/zwave-js-ui",
|
|
||||||
"version": "v11.3.0",
|
|
||||||
"date": "2025-09-16T13:53:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "tobychui/zoraxy",
|
"name": "tobychui/zoraxy",
|
||||||
"version": "v3.2.5r2",
|
"version": "v3.2.5r2",
|
||||||
@@ -279,11 +514,6 @@
|
|||||||
"version": "v2.4.0p12",
|
"version": "v2.4.0p12",
|
||||||
"date": "2025-09-16T12:53:03Z"
|
"date": "2025-09-16T12:53:03Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fallenbagel/jellyseerr",
|
|
||||||
"version": "preview-debug-plex-watchlist",
|
|
||||||
"date": "2025-09-16T09:20:58Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "readeck/readeck",
|
"name": "readeck/readeck",
|
||||||
"version": "0.20.3",
|
"version": "0.20.3",
|
||||||
@@ -294,11 +524,6 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"date": "2025-09-16T06:21:32Z"
|
"date": "2025-09-16T06:21:32Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"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",
|
||||||
@@ -354,31 +579,16 @@
|
|||||||
"version": "v2.7.6",
|
"version": "v2.7.6",
|
||||||
"date": "2025-09-15T15:50:44Z"
|
"date": "2025-09-15T15:50:44Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "mongodb/mongo",
|
|
||||||
"version": "r8.0.14",
|
|
||||||
"date": "2025-09-15T15:39:18Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "usememos/memos",
|
"name": "usememos/memos",
|
||||||
"version": "v0.25.1",
|
"version": "v0.25.1",
|
||||||
"date": "2025-09-15T14:57:30Z"
|
"date": "2025-09-15T14:57:30Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "fumadocs-core@15.7.12",
|
|
||||||
"date": "2025-09-15T12:37:01Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "VictoriaMetrics/VictoriaMetrics",
|
"name": "VictoriaMetrics/VictoriaMetrics",
|
||||||
"version": "pmm-6401-v1.126.0",
|
"version": "pmm-6401-v1.126.0",
|
||||||
"date": "2025-09-15T11:32:31Z"
|
"date": "2025-09-15T11:32:31Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "meilisearch/meilisearch",
|
|
||||||
"version": "latest",
|
|
||||||
"date": "2025-09-15T11:12:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "authelia/authelia",
|
"name": "authelia/authelia",
|
||||||
"version": "v4.39.10",
|
"version": "v4.39.10",
|
||||||
@@ -389,31 +599,11 @@
|
|||||||
"version": "v3.2.1",
|
"version": "v3.2.1",
|
||||||
"date": "2025-09-15T03:45:31Z"
|
"date": "2025-09-15T03:45:31Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Prowlarr/Prowlarr",
|
|
||||||
"version": "v2.0.5.5160",
|
|
||||||
"date": "2025-08-23T21:23:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "cross-seed/cross-seed",
|
|
||||||
"version": "v6.13.3",
|
|
||||||
"date": "2025-09-08T21:45:15Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "9001/copyparty",
|
|
||||||
"version": "v1.19.9",
|
|
||||||
"date": "2025-09-15T00:54:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "crafty-controller/crafty-4",
|
"name": "crafty-controller/crafty-4",
|
||||||
"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",
|
||||||
@@ -424,11 +614,6 @@
|
|||||||
"version": "v25.6.0",
|
"version": "v25.6.0",
|
||||||
"date": "2025-09-14T17:55:21Z"
|
"date": "2025-09-14T17:55:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Lidarr/Lidarr",
|
|
||||||
"version": "v2.13.3.4711",
|
|
||||||
"date": "2025-08-28T20:06:24Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "karakeep-app/karakeep",
|
"name": "karakeep-app/karakeep",
|
||||||
"version": "cli/v0.27.1",
|
"version": "cli/v0.27.1",
|
||||||
@@ -439,41 +624,6 @@
|
|||||||
"version": "v0.8.1",
|
"version": "v0.8.1",
|
||||||
"date": "2025-09-14T06:45:23Z"
|
"date": "2025-09-14T06:45:23Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Luligu/matterbridge",
|
|
||||||
"version": "3.2.7",
|
|
||||||
"date": "2025-09-14T06:35:13Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "home-assistant/core",
|
|
||||||
"version": "2025.9.3",
|
|
||||||
"date": "2025-09-13T12:44:37Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gotify/server",
|
|
||||||
"version": "v2.7.2",
|
|
||||||
"date": "2025-09-13T12:11:38Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "syncthing/syncthing",
|
|
||||||
"version": "v2.0.9",
|
|
||||||
"date": "2025-09-13T09:37:24Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "documenso/documenso",
|
|
||||||
"version": "v1.12.4",
|
|
||||||
"date": "2025-09-13T08:08:55Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"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",
|
||||||
@@ -484,36 +634,16 @@
|
|||||||
"version": "v1.0.0-rc0",
|
"version": "v1.0.0-rc0",
|
||||||
"date": "2025-08-17T18:47:15Z"
|
"date": "2025-08-17T18:47:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "influxdata/influxdb",
|
|
||||||
"version": "v3.4.2",
|
|
||||||
"date": "2025-09-11T20:43:23Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "zerotier/ZeroTierOne",
|
"name": "zerotier/ZeroTierOne",
|
||||||
"version": "1.16.0",
|
"version": "1.16.0",
|
||||||
"date": "2025-09-11T18:01:57Z"
|
"date": "2025-09-11T18:01:57Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Threadfin/Threadfin",
|
|
||||||
"version": "1.2.37",
|
|
||||||
"date": "2025-09-11T16:13:41Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "prometheus/prometheus",
|
|
||||||
"version": "v0.306.0-rc.1",
|
|
||||||
"date": "2025-09-11T13:37:41Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rcourtman/Pulse",
|
"name": "rcourtman/Pulse",
|
||||||
"version": "v4.14.0",
|
"version": "v4.14.0",
|
||||||
"date": "2025-09-05T18:28:28Z"
|
"date": "2025-09-05T18:28:28Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "go-gitea/gitea",
|
|
||||||
"version": "v1.24.6",
|
|
||||||
"date": "2025-09-11T04:20:27Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "aceberg/WatchYourLAN",
|
"name": "aceberg/WatchYourLAN",
|
||||||
"version": "2.1.4",
|
"version": "2.1.4",
|
||||||
@@ -524,31 +654,11 @@
|
|||||||
"version": "v3.2.1-beta",
|
"version": "v3.2.1-beta",
|
||||||
"date": "2025-09-09T19:47:13Z"
|
"date": "2025-09-09T19:47:13Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Part-DB/Part-DB-server",
|
|
||||||
"version": "v2.1.2",
|
|
||||||
"date": "2025-09-09T19:34:11Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "hargata/lubelog",
|
|
||||||
"version": "v1.5.1",
|
|
||||||
"date": "2025-09-09T16:56:49Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "element-hq/synapse",
|
|
||||||
"version": "v1.138.0",
|
|
||||||
"date": "2025-09-09T11:25:50Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "traefik/traefik",
|
"name": "traefik/traefik",
|
||||||
"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",
|
||||||
@@ -579,11 +689,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",
|
||||||
@@ -604,26 +709,11 @@
|
|||||||
"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": "nightly",
|
|
||||||
"date": "2025-09-07T12:25:06Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Radarr/Radarr",
|
|
||||||
"version": "v5.27.5.10198",
|
|
||||||
"date": "2025-09-03T12:08:43Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "pocketbase/pocketbase",
|
"name": "pocketbase/pocketbase",
|
||||||
"version": "v0.30.0",
|
"version": "v0.30.0",
|
||||||
"date": "2025-09-07T05:25:44Z"
|
"date": "2025-09-07T05:25:44Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "forgejo/forgejo",
|
|
||||||
"version": "v12.0.3",
|
|
||||||
"date": "2025-09-06T07:01:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Stirling-Tools/Stirling-PDF",
|
"name": "Stirling-Tools/Stirling-PDF",
|
||||||
"version": "v1.3.2",
|
"version": "v1.3.2",
|
||||||
@@ -684,11 +774,6 @@
|
|||||||
"version": "2.1.1",
|
"version": "2.1.1",
|
||||||
"date": "2025-06-14T17:45:06Z"
|
"date": "2025-06-14T17:45:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Graylog2/graylog2-server",
|
|
||||||
"version": "6.1.15",
|
|
||||||
"date": "2025-09-03T14:51:37Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "neo4j/neo4j",
|
"name": "neo4j/neo4j",
|
||||||
"version": "5.26.12",
|
"version": "5.26.12",
|
||||||
@@ -699,11 +784,6 @@
|
|||||||
"version": "cassandra-4.1.10",
|
"version": "cassandra-4.1.10",
|
||||||
"date": "2025-09-03T08:46:02Z"
|
"date": "2025-09-03T08:46:02Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "postgres/postgres",
|
|
||||||
"version": "REL_18_RC1",
|
|
||||||
"date": "2025-09-01T20:03:08Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "project-zot/zot",
|
"name": "project-zot/zot",
|
||||||
"version": "v2.1.8",
|
"version": "v2.1.8",
|
||||||
@@ -719,11 +799,6 @@
|
|||||||
"version": "v0.11.0",
|
"version": "v0.11.0",
|
||||||
"date": "2025-09-01T16:19:38Z"
|
"date": "2025-09-01T16:19:38Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "grafana/grafana",
|
|
||||||
"version": "rrc_steady_12.2.0-17245430286.patch1",
|
|
||||||
"date": "2025-09-01T14:19:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "crowdsecurity/crowdsec",
|
"name": "crowdsecurity/crowdsec",
|
||||||
"version": "v1.7.0",
|
"version": "v1.7.0",
|
||||||
@@ -764,26 +839,11 @@
|
|||||||
"version": "v1.9.2",
|
"version": "v1.9.2",
|
||||||
"date": "2025-08-28T07:06:14Z"
|
"date": "2025-08-28T07:06:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"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",
|
||||||
"date": "2025-08-25T22:43:20Z"
|
"date": "2025-08-25T22:43:20Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "sabnzbd/sabnzbd",
|
|
||||||
"version": "4.5.3",
|
|
||||||
"date": "2025-08-25T13:59:56Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "zabbix/zabbix",
|
|
||||||
"version": "7.4.2",
|
|
||||||
"date": "2025-08-25T12:38:14Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "plexguide/Huntarr.io",
|
"name": "plexguide/Huntarr.io",
|
||||||
"version": "8.2.10",
|
"version": "8.2.10",
|
||||||
@@ -804,36 +864,11 @@
|
|||||||
"version": "v2.10.2",
|
"version": "v2.10.2",
|
||||||
"date": "2025-08-23T03:10:31Z"
|
"date": "2025-08-23T03:10:31Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rclone/rclone",
|
|
||||||
"version": "v1.71.0",
|
|
||||||
"date": "2025-08-22T16:41:23Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "lazy-media/Reactive-Resume",
|
"name": "lazy-media/Reactive-Resume",
|
||||||
"version": "v1.2.4",
|
"version": "v1.2.4",
|
||||||
"date": "2025-08-22T07:40:01Z"
|
"date": "2025-08-22T07:40:01Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "traccar/traccar",
|
|
||||||
"version": "v6.9.1",
|
|
||||||
"date": "2025-08-22T04:04:12Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "gethomepage/homepage",
|
|
||||||
"version": "v1.4.6",
|
|
||||||
"date": "2025-08-21T14:05:58Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "openhab/openhab-core",
|
|
||||||
"version": "4.3.7",
|
|
||||||
"date": "2025-08-20T10:26:21Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "duplicati/duplicati",
|
|
||||||
"version": "v2.1.2.0-2.1.2.0_beta_2025-08-20",
|
|
||||||
"date": "2025-08-20T08:15:46Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "karlomikus/bar-assistant",
|
"name": "karlomikus/bar-assistant",
|
||||||
"version": "v5.8.0",
|
"version": "v5.8.0",
|
||||||
@@ -859,11 +894,6 @@
|
|||||||
"version": "8.2.1",
|
"version": "8.2.1",
|
||||||
"date": "2025-08-18T15:42:48Z"
|
"date": "2025-08-18T15:42:48Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "jupyter/notebook",
|
|
||||||
"version": "@jupyter-notebook/ui-components@7.5.0-alpha.2",
|
|
||||||
"date": "2025-08-18T07:39:41Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "lldap/lldap",
|
"name": "lldap/lldap",
|
||||||
"version": "v0.6.2",
|
"version": "v0.6.2",
|
||||||
@@ -919,11 +949,6 @@
|
|||||||
"version": "mariadb-12.0.2",
|
"version": "mariadb-12.0.2",
|
||||||
"date": "2025-08-07T21:23:15Z"
|
"date": "2025-08-07T21:23:15Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Athou/commafeed",
|
|
||||||
"version": "5.11.0",
|
|
||||||
"date": "2025-08-06T21:14:18Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "bastienwirtz/homer",
|
"name": "bastienwirtz/homer",
|
||||||
"version": "v25.08.1",
|
"version": "v25.08.1",
|
||||||
@@ -954,11 +979,6 @@
|
|||||||
"version": "v4.8.0",
|
"version": "v4.8.0",
|
||||||
"date": "2025-08-02T09:12:10Z"
|
"date": "2025-08-02T09:12:10Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "alexta69/metube",
|
|
||||||
"version": "2025.07.31",
|
|
||||||
"date": "2025-08-01T14:44:48Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Suwayomi/Suwayomi-Server",
|
"name": "Suwayomi/Suwayomi-Server",
|
||||||
"version": "v2.1.1867",
|
"version": "v2.1.1867",
|
||||||
@@ -1089,11 +1109,6 @@
|
|||||||
"version": "v2.18.0",
|
"version": "v2.18.0",
|
||||||
"date": "2025-06-24T08:29:55Z"
|
"date": "2025-06-24T08:29:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "itsmng/itsm-ng",
|
|
||||||
"version": "v2.0.7",
|
|
||||||
"date": "2025-06-23T14:35:40Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "clusterzx/paperless-ai",
|
"name": "clusterzx/paperless-ai",
|
||||||
"version": "v3.0.7",
|
"version": "v3.0.7",
|
||||||
@@ -1194,11 +1209,6 @@
|
|||||||
"version": "v0.2.3",
|
"version": "v0.2.3",
|
||||||
"date": "2025-05-10T21:14:45Z"
|
"date": "2025-05-10T21:14:45Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "getumbrel/umbrel",
|
|
||||||
"version": "1.4.2",
|
|
||||||
"date": "2025-05-09T08:54:49Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "ZoeyVid/NPMplus",
|
"name": "ZoeyVid/NPMplus",
|
||||||
"version": "2025-05-07-r1",
|
"version": "2025-05-07-r1",
|
||||||
@@ -1239,11 +1249,6 @@
|
|||||||
"version": "v0.2.11",
|
"version": "v0.2.11",
|
||||||
"date": "2025-04-12T21:13:08Z"
|
"date": "2025-04-12T21:13:08Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "thomiceli/opengist",
|
|
||||||
"version": "v1.10.0",
|
|
||||||
"date": "2025-04-07T14:32:15Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "azukaar/Cosmos-Server",
|
"name": "azukaar/Cosmos-Server",
|
||||||
"version": "v0.18.4",
|
"version": "v0.18.4",
|
||||||
@@ -1294,11 +1299,6 @@
|
|||||||
"version": "v0.18.0",
|
"version": "v0.18.0",
|
||||||
"date": "2025-03-11T12:47:22Z"
|
"date": "2025-03-11T12:47:22Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "AlexxIT/go2rtc",
|
|
||||||
"version": "v1.9.9",
|
|
||||||
"date": "2025-03-10T03:22:11Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "awawa-dev/HyperHDR",
|
"name": "awawa-dev/HyperHDR",
|
||||||
"version": "v21.0.0.0",
|
"version": "v21.0.0.0",
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 4,
|
"cpu": 4,
|
||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 18,
|
"hdd": 25,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"ram": 4096,
|
"ram": 4096,
|
||||||
"hdd": 6,
|
"hdd": 6,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "13"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
@@ -33,11 +33,19 @@
|
|||||||
},
|
},
|
||||||
"notes": [
|
"notes": [
|
||||||
{
|
{
|
||||||
"text": "Database credentials: `cat zabbix.creds`",
|
"text": "Database credentials: `cat ~/zabbix.creds`",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"text": "Zabbix agent 2 is used by default",
|
"text": "You can choose between Zabbix agent (classic) and agent2 (modern) during installation",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "For agent2 the PostgreSQL plugin is installed by default; all plugins are optional",
|
||||||
|
"type": "info"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"text": "If agent2 with NVIDIA plugin is installed in an environment without GPU, the installer disables it automatically",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_linux_x86_64.tar.gz"
|
fetch_and_deploy_gh_release "blocky" "0xERR0R/blocky" "prebuild" "latest" "/opt/blocky" "blocky_*_Linux_x86_64.tar.gz"
|
||||||
|
|
||||||
msg_info "Configuring Blocky"
|
msg_info "Configuring Blocky"
|
||||||
if systemctl is-active systemd-resolved >/dev/null 2>&1; then
|
if systemctl is-active systemd-resolved >/dev/null 2>&1; then
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ curl -fsSL https://deb.globaleaks.org/globaleaks.asc | gpg --dearmor -o /etc/apt
|
|||||||
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 "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
|
echo 'APPARMOR_SANDBOXING=0' >/etc/default/globaleaks
|
||||||
$STD apt update
|
$STD apt update
|
||||||
$STD apt -y install globaleaks
|
$STD apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install globaleaks
|
||||||
msg_ok "Setup GlobaLeaks"
|
msg_ok "Setup GlobaLeaks"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -24,26 +24,24 @@ if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
|||||||
$STD caddy stop
|
$STD caddy stop
|
||||||
rm /etc/caddy/Caddyfile
|
rm /etc/caddy/Caddyfile
|
||||||
cat <<'EOF' >/etc/caddy/Caddyfile
|
cat <<'EOF' >/etc/caddy/Caddyfile
|
||||||
:{$PORT:80}
|
:80
|
||||||
|
|
||||||
|
redir /admin /admin/
|
||||||
|
|
||||||
handle_path /admin* {
|
handle_path /admin* {
|
||||||
root * /opt/headscale-admin
|
root * /opt/headscale-admin
|
||||||
encode gzip zstd
|
encode gzip zstd
|
||||||
|
|
||||||
# Correct MIME types for JS/WASM
|
header {
|
||||||
header {
|
X-Content-Type-Options nosniff
|
||||||
@js_files path *.js
|
}
|
||||||
@wasm_files path *.wasm
|
|
||||||
|
|
||||||
Content-Type @js_files application/javascript
|
try_files {path} {path}/ /opt/headscale-admin/index.html
|
||||||
Content-Type @wasm_files application/wasm
|
file_server
|
||||||
|
}
|
||||||
|
|
||||||
X-Content-Type-Options nosniff
|
handle /api/* {
|
||||||
}
|
reverse_proxy localhost:8080
|
||||||
|
|
||||||
# Fallback for SPA routing
|
|
||||||
try_files {path} {path}/ index.html
|
|
||||||
file_server
|
|
||||||
}
|
}
|
||||||
|
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -272,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.1" "$SRC_DIR"
|
fetch_and_deploy_gh_release "immich" "immich-app/immich" "tarball" "v1.143.1" "$SRC_DIR"
|
||||||
|
|
||||||
msg_info "Installing ${APPLICATION} (patience)"
|
msg_info "Installing ${APPLICATION} (patience)"
|
||||||
|
|
||||||
|
|||||||
98
install/joplin-server-install.sh
Normal file
98
install/joplin-server-install.sh
Normal file
@@ -0,0 +1,98 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://joplinapp.org/
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
git \
|
||||||
|
rsync
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
NODE_VERSION=22 NODE_MODULE="yarn@latest,npm@latest,pm2@latest" setup_nodejs
|
||||||
|
mkdir -p /opt/pm2
|
||||||
|
export PM2_HOME=/opt/pm2
|
||||||
|
$STD pm2 install pm2-logrotate
|
||||||
|
$STD pm2 set pm2-logrotate:max_size 100MB
|
||||||
|
$STD pm2 set pm2-logrotate:retain 5
|
||||||
|
$STD pm2 set pm2-logrotate:compress tr
|
||||||
|
|
||||||
|
msg_info "Setting up PostgreSQL Database"
|
||||||
|
DB_NAME=joplin
|
||||||
|
DB_USER=joplin
|
||||||
|
DB_PASS="$(openssl rand -base64 18 | cut -c1-13)"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE ROLE $DB_USER WITH LOGIN PASSWORD '$DB_PASS';"
|
||||||
|
$STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCODING 'UTF8' TEMPLATE template0;"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||||
|
{
|
||||||
|
echo "Joplin-Credentials"
|
||||||
|
echo "Joplin Database User: $DB_USER"
|
||||||
|
echo "Joplin Database Password: $DB_PASS"
|
||||||
|
echo "Joplin Database Name: $DB_NAME"
|
||||||
|
} >>~/joplin.creds
|
||||||
|
msg_ok "Set up PostgreSQL Database"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "joplin-server" "laurent22/joplin" "tarball" "latest"
|
||||||
|
|
||||||
|
msg_info "Setting up Joplin Server (Patience)"
|
||||||
|
LOCAL_IP=$(hostname -I | awk '{print $1}')
|
||||||
|
cd /opt/joplin-server
|
||||||
|
sed -i "/onenote-converter/d" packages/lib/package.json
|
||||||
|
$STD yarn config set --home enableTelemetry 0
|
||||||
|
export BUILD_SEQUENCIAL=1
|
||||||
|
$STD yarn install --inline-builds
|
||||||
|
|
||||||
|
cat <<EOF >/opt/joplin-server/.env
|
||||||
|
PM2_HOME=/opt/pm2
|
||||||
|
NODE_ENV=production
|
||||||
|
APP_BASE_URL=http://$LOCAL_IP:22300
|
||||||
|
APP_PORT=22300
|
||||||
|
DB_CLIENT=pg
|
||||||
|
POSTGRES_PASSWORD=$DB_PASS
|
||||||
|
POSTGRES_DATABASE=$DB_NAME
|
||||||
|
POSTGRES_USER=$DB_USER
|
||||||
|
POSTGRES_PORT=5432
|
||||||
|
POSTGRES_HOST=localhost
|
||||||
|
EOF
|
||||||
|
msg_ok "Setup Joplin Server"
|
||||||
|
|
||||||
|
msg_info "Setting up Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/joplin-server.service
|
||||||
|
[Unit]
|
||||||
|
Description=Joplin Server Service
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
WorkingDirectory=/opt/joplin-server/packages/server
|
||||||
|
EnvironmentFile=/opt/joplin-server/.env
|
||||||
|
ExecStart=/usr/bin/yarn start-prod
|
||||||
|
Restart=on-failure
|
||||||
|
RestartSec=5
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now joplin-server
|
||||||
|
msg_ok "Service Setup"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt-get -y autoremove
|
||||||
|
$STD apt-get -y autoclean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -13,6 +13,12 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
build-essential \
|
||||||
|
python3-dev
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
PG_VERSION="17" setup_postgresql
|
PG_VERSION="17" setup_postgresql
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
|
||||||
@@ -75,6 +81,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"
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ msg_info "Installing dependencies"
|
|||||||
$STD apt-get install --no-install-recommends -y build-essential
|
$STD apt-get install --no-install-recommends -y build-essential
|
||||||
msg_ok "Installed dependencies"
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
NODE_VERSION="20" setup_nodejs
|
NODE_VERSION="22" setup_nodejs
|
||||||
MYSQL_VERSION="8.0" setup_mysql
|
MYSQL_VERSION="8.0" setup_mysql
|
||||||
|
|
||||||
msg_info "Setting up Database"
|
msg_info "Setting up Database"
|
||||||
@@ -48,7 +48,7 @@ sed -i -e 's|db|localhost|' \
|
|||||||
-e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
|
-e "s|=PASSWORD|=$(openssl rand -base64 40 | tr -dc 'a-zA-Z0-9' | head -c40)|" \
|
||||||
/opt/mmdl/.env
|
/opt/mmdl/.env
|
||||||
cd /opt/mmdl
|
cd /opt/mmdl
|
||||||
export NEXT_TELEMETRY_DISABLE=1
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
export CI="true"
|
export CI="true"
|
||||||
$STD npm install
|
$STD npm install
|
||||||
$STD npm run migrate
|
$STD npm run migrate
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ update_os
|
|||||||
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
|
PHP_VERSION="8.2" PHP_APACHE="YES" PHP_MODULE="dom,gmp,iconv,mysqli,pdo-mysql,redis,tokenizer" setup_php
|
||||||
setup_composer
|
setup_composer
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
|
|
||||||
msg_info "Setting up MariaDB"
|
msg_info "Setting up MariaDB"
|
||||||
DB_NAME=monica
|
DB_NAME=monica
|
||||||
@@ -44,6 +44,7 @@ sed -i -e "s|^DB_USERNAME=.*|DB_USERNAME=${DB_USER}|" \
|
|||||||
-e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \
|
-e "s|^HASH_SALT=.*|HASH_SALT=${HASH_SALT}|" \
|
||||||
/opt/monica/.env
|
/opt/monica/.env
|
||||||
$STD composer install --no-dev -o --no-interaction
|
$STD composer install --no-dev -o --no-interaction
|
||||||
|
$STD yarn config set ignore-engines true
|
||||||
$STD yarn install
|
$STD yarn install
|
||||||
$STD yarn run production
|
$STD yarn run production
|
||||||
$STD php artisan key:generate
|
$STD php artisan key:generate
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ msg_ok "Installed Open WebUI"
|
|||||||
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
read -r -p "${TAB3}Would you like to add Ollama? <y/N> " prompt
|
||||||
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
if [[ ${prompt,,} =~ ^(y|yes)$ ]]; then
|
||||||
msg_info "Installing Ollama"
|
msg_info "Installing Ollama"
|
||||||
curl -fsSLO https://ollama.com/download/ollama-linux-amd64.tgz
|
curl -fsSLO -C - https://ollama.com/download/ollama-linux-amd64.tgz
|
||||||
tar -C /usr -xzf ollama-linux-amd64.tgz
|
tar -C /usr -xzf ollama-linux-amd64.tgz
|
||||||
rm -rf ollama-linux-amd64.tgz
|
rm -rf ollama-linux-amd64.tgz
|
||||||
cat <<EOF >/etc/systemd/system/ollama.service
|
cat <<EOF >/etc/systemd/system/ollama.service
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ $STD apt-get install -y \
|
|||||||
redis
|
redis
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="20" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
|
||||||
msg_info "Set up PostgreSQL Database"
|
msg_info "Set up PostgreSQL Database"
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_mariadb
|
setup_mariadb
|
||||||
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,fpm,redis" setup_php
|
PHP_VERSION="8.3" PHP_FPM="YES" PHP_MODULE="common,mysql,redis" setup_php
|
||||||
setup_composer
|
setup_composer
|
||||||
fetch_and_deploy_gh_release "paymenter" "paymenter/paymenter" "prebuild" "latest" "/opt/paymenter" "paymenter.tar.gz"
|
fetch_and_deploy_gh_release "paymenter" "paymenter/paymenter" "prebuild" "latest" "/opt/paymenter" "paymenter.tar.gz"
|
||||||
chmod -R 755 /opt/paymenter/storage/* /opt/paymenter/bootstrap/cache/
|
chmod -R 755 /opt/paymenter/storage/* /opt/paymenter/bootstrap/cache/
|
||||||
@@ -30,7 +30,7 @@ msg_info "Setting up database"
|
|||||||
DB_NAME=paymenter
|
DB_NAME=paymenter
|
||||||
DB_USER=paymenter
|
DB_USER=paymenter
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | head -c13)
|
||||||
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql mysql
|
mariadb-tzinfo-to-sql /usr/share/zoneinfo | mariadb mysql
|
||||||
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
$STD mariadb -u root -e "CREATE DATABASE $DB_NAME;"
|
||||||
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
$STD mariadb -u root -e "CREATE USER '$DB_USER'@'localhost' IDENTIFIED BY '$DB_PASS';"
|
||||||
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
|
$STD mariadb -u root -e "GRANT ALL PRIVILEGES ON $DB_NAME.* TO '$DB_USER'@'localhost' WITH GRANT OPTION;"
|
||||||
@@ -108,8 +108,8 @@ RestartSec=5s
|
|||||||
[Install]
|
[Install]
|
||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
systemctl enable --now paymenter
|
systemctl enable -q --now paymenter
|
||||||
systemctl enable --now redis-server
|
systemctl enable -q --now redis-server
|
||||||
msg_ok "Setup Service"
|
msg_ok "Setup Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
|
|||||||
@@ -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
|
||||||
@@ -104,8 +105,8 @@ fetch_and_deploy_gh_release "signoz-schema-migrator" "SigNoz/signoz-otel-collect
|
|||||||
|
|
||||||
msg_info "Running ClickHouse migrations"
|
msg_info "Running ClickHouse migrations"
|
||||||
cd /opt/signoz-schema-migrator/bin
|
cd /opt/signoz-schema-migrator/bin
|
||||||
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
|
$STD ./signoz-schema-migrator sync --dsn="tcp://localhost:9000?password=" --replication=true --up=
|
||||||
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
|
$STD ./signoz-schema-migrator async --dsn="tcp://localhost:9000?password=" --replication=true --up=
|
||||||
msg_ok "ClickHouse Migrations Completed"
|
msg_ok "ClickHouse Migrations Completed"
|
||||||
|
|
||||||
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
|
fetch_and_deploy_gh_release "signoz" "SigNoz/signoz" "prebuild" "latest" "/opt/signoz" "signoz-community_linux_amd64.tar.gz"
|
||||||
@@ -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"
|
||||||
|
|||||||
@@ -30,9 +30,9 @@ $STD apt-get install -y --no-install-recommends \
|
|||||||
libxmlsec1-openssl
|
libxmlsec1-openssl
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="20" NODE_MODULE="yarn" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn" setup_nodejs
|
||||||
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
fetch_and_deploy_gh_release "tandoor" "TandoorRecipes/recipes" "tarball" "latest" "/opt/tandoor"
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="17" PG_MODULES="contrib" setup_postgresql
|
||||||
PYTHON_VERSION="3.13" setup_uv
|
PYTHON_VERSION="3.13" setup_uv
|
||||||
|
|
||||||
msg_info "Set up PostgreSQL Database"
|
msg_info "Set up PostgreSQL Database"
|
||||||
@@ -45,6 +45,8 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
|
|||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||||
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS unaccent;"
|
||||||
|
$STD sudo -u postgres psql -d "$DB_NAME" -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
|
||||||
{
|
{
|
||||||
echo "Tandoor-Credentials"
|
echo "Tandoor-Credentials"
|
||||||
echo "Tandoor Database Name: $DB_NAME"
|
echo "Tandoor Database Name: $DB_NAME"
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ $STD npm install
|
|||||||
$STD npm run build
|
$STD npm run build
|
||||||
mkdir /opt/tracktor-data
|
mkdir /opt/tracktor-data
|
||||||
HOST_IP=$(hostname -I | awk '{print $1}')
|
HOST_IP=$(hostname -I | awk '{print $1}')
|
||||||
cat <<EOF >/opt/tracktor/app/backend/.env
|
cat <<EOF >/opt/tracktor.env
|
||||||
NODE_ENV=production
|
NODE_ENV=production
|
||||||
PUBLIC_DEMO_MODE=false
|
PUBLIC_DEMO_MODE=false
|
||||||
DB_PATH=/opt/tracktor-data/tracktor.db
|
DB_PATH=/opt/tracktor-data/tracktor.db
|
||||||
@@ -31,6 +31,7 @@ PUBLIC_API_BASE_URL=http://$HOST_IP:3000
|
|||||||
# Here add the reverse proxy url as well to avoid cross errors from the app.
|
# Here add the reverse proxy url as well to avoid cross errors from the app.
|
||||||
CORS_ORIGINS=http://$HOST_IP:3000
|
CORS_ORIGINS=http://$HOST_IP:3000
|
||||||
PORT=3000
|
PORT=3000
|
||||||
|
AUTH_PIN=123456
|
||||||
EOF
|
EOF
|
||||||
msg_ok "Configured Tracktor"
|
msg_ok "Configured Tracktor"
|
||||||
|
|
||||||
@@ -43,7 +44,7 @@ After=network.target
|
|||||||
[Service]
|
[Service]
|
||||||
Type=simple
|
Type=simple
|
||||||
WorkingDirectory=/opt/tracktor
|
WorkingDirectory=/opt/tracktor
|
||||||
EnvironmentFile=/opt/tracktor/app/backend/.env
|
EnvironmentFile=/opt/tracktor.env
|
||||||
ExecStart=/usr/bin/npm start
|
ExecStart=/usr/bin/npm start
|
||||||
|
|
||||||
[Install]
|
[Install]
|
||||||
@@ -56,6 +57,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"
|
||||||
|
|||||||
101
install/tunarr-install.sh
Normal file
101
install/tunarr-install.sh
Normal 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"
|
||||||
56
install/upsnap-install.sh
Normal file
56
install/upsnap-install.sh
Normal file
@@ -0,0 +1,56 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Copyright (c) 2021-2025 community-scripts ORG
|
||||||
|
# Author: Slaviša Arežina (tremor021)
|
||||||
|
# License: MIT | https://github.com/community-scripts/ProxmoxVE/raw/main/LICENSE
|
||||||
|
# Source: https://github.com/seriousm4x/UpSnap
|
||||||
|
|
||||||
|
source /dev/stdin <<<"$FUNCTIONS_FILE_PATH"
|
||||||
|
color
|
||||||
|
verb_ip6
|
||||||
|
catch_errors
|
||||||
|
setting_up_container
|
||||||
|
network_check
|
||||||
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing Dependencies"
|
||||||
|
$STD apt install -y \
|
||||||
|
nmap \
|
||||||
|
samba \
|
||||||
|
samba-common-bin \
|
||||||
|
openssh-client \
|
||||||
|
openssh-server \
|
||||||
|
sshpass
|
||||||
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
fetch_and_deploy_gh_release "upsnap" "seriousm4x/UpSnap" "prebuild" "latest" "/opt/upsnap" "UpSnap_*_linux_amd64.zip"
|
||||||
|
setcap 'cap_net_raw=+ep' /opt/upsnap/upsnap
|
||||||
|
|
||||||
|
msg_info "Creating Service"
|
||||||
|
cat <<EOF >/etc/systemd/system/upsnap.service
|
||||||
|
[Unit]
|
||||||
|
Description=UpSnap Service
|
||||||
|
Documentation=https://github.com/seriousm4x/UpSnap/wiki
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
User=root
|
||||||
|
Restart=on-failure
|
||||||
|
WorkingDirectory=/opt/upsnap
|
||||||
|
ExecStart=/opt/upsnap/upsnap serve --http=0.0.0.0:8090
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
systemctl enable -q --now upsnap
|
||||||
|
msg_ok "Service Created"
|
||||||
|
|
||||||
|
motd_ssh
|
||||||
|
customize
|
||||||
|
|
||||||
|
msg_info "Cleaning up"
|
||||||
|
$STD apt -y autoremove
|
||||||
|
$STD apt -y autoclean
|
||||||
|
$STD apt -y clean
|
||||||
|
msg_ok "Cleaned"
|
||||||
@@ -13,20 +13,61 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
PG_VERSION="17" setup_postgresql
|
||||||
|
|
||||||
msg_info "Installing Zabbix"
|
msg_info "Installing Zabbix"
|
||||||
cd /tmp
|
cd /tmp
|
||||||
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
curl -fsSL "$(curl -fsSL https://repo.zabbix.com/zabbix/ |
|
||||||
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
|
grep -oP '(?<=href=")[0-9]+\.[0-9]+(?=/")' | sort -V | tail -n1 |
|
||||||
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian12_all.deb")" \
|
xargs -I{} echo "https://repo.zabbix.com/zabbix/{}/release/debian/pool/main/z/zabbix-release/zabbix-release_latest+debian13_all.deb")" \
|
||||||
-o /tmp/zabbix-release_latest+debian12_all.deb
|
-o /tmp/zabbix-release_latest+debian13_all.deb
|
||||||
$STD dpkg -i /tmp/zabbix-release_latest+debian12_all.deb
|
$STD dpkg -i /tmp/zabbix-release_latest+debian13_all.deb
|
||||||
$STD apt-get update
|
$STD apt update
|
||||||
$STD apt-get install -y zabbix-server-pgsql zabbix-frontend-php php8.2-pgsql zabbix-apache-conf zabbix-sql-scripts
|
$STD apt install -y zabbix-server-pgsql zabbix-frontend-php php8.4-pgsql zabbix-apache-conf zabbix-sql-scripts
|
||||||
$STD apt-get install -y zabbix-agent2 zabbix-agent2-plugin-*
|
|
||||||
msg_ok "Installed Zabbix"
|
msg_ok "Installed Zabbix"
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
read -rp "Which agent do you want to install? [1=agent (classic), 2=agent2 (modern), default=1]: " AGENT_CHOICE
|
||||||
|
case "$AGENT_CHOICE" in
|
||||||
|
2)
|
||||||
|
AGENT_PKG="zabbix-agent2"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
"" | 1)
|
||||||
|
AGENT_PKG="zabbix-agent"
|
||||||
|
break
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "Invalid choice. Please enter 1 or 2."
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
msg_ok "Selected $AGENT_PKG"
|
||||||
|
|
||||||
|
if [ "$AGENT_PKG" = "zabbix-agent2" ]; then
|
||||||
|
echo "Choose plugins for Zabbix Agent2:"
|
||||||
|
echo "1) PostgreSQL only (default, recommended)"
|
||||||
|
echo "2) All plugins (may cause issues)"
|
||||||
|
read -rp "Choose option [1-2]: " PLUGIN_CHOICE
|
||||||
|
|
||||||
|
case "$PLUGIN_CHOICE" in
|
||||||
|
2)
|
||||||
|
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-*
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
$STD apt install -y zabbix-agent2 zabbix-agent2-plugin-postgresql
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
if [ -f /etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf ]; then
|
||||||
|
sed -i 's|^Plugins.NVIDIA.System.Path=.*|# Plugins.NVIDIA.System.Path=/usr/libexec/zabbix/zabbix-agent2-plugin-nvidia-gpu|' \
|
||||||
|
/etc/zabbix/zabbix_agent2.d/plugins.d/nvidia.conf
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
$STD apt install -y zabbix-agent
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
$STD apt-get install -y postgresql
|
|
||||||
DB_NAME=zabbixdb
|
DB_NAME=zabbixdb
|
||||||
DB_USER=zabbix
|
DB_USER=zabbix
|
||||||
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
DB_PASS=$(openssl rand -base64 18 | tr -dc 'a-zA-Z0-9' | cut -c1-13)
|
||||||
@@ -35,18 +76,31 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER ENCO
|
|||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET client_encoding TO 'utf8';"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET default_transaction_isolation TO 'read committed';"
|
||||||
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
$STD sudo -u postgres psql -c "ALTER ROLE $DB_USER SET timezone TO 'UTC'"
|
||||||
|
{
|
||||||
|
echo "Zabbix-Credentials"
|
||||||
|
echo "Zabbix Database User: $DB_USER"
|
||||||
|
echo "Zabbix Database Password: $DB_PASS"
|
||||||
|
echo "Zabbix Database Name: $DB_NAME"
|
||||||
|
} >>~/zabbix.creds
|
||||||
|
|
||||||
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
|
zcat /usr/share/zabbix/sql-scripts/postgresql/server.sql.gz | sudo -u $DB_USER psql $DB_NAME &>/dev/null
|
||||||
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^DBName=.*/DBName=$DB_NAME/" /etc/zabbix/zabbix_server.conf
|
||||||
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^DBUser=.*/DBUser=$DB_USER/" /etc/zabbix/zabbix_server.conf
|
||||||
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
|
sed -i "s/^# DBPassword=.*/DBPassword=$DB_PASS/" /etc/zabbix/zabbix_server.conf
|
||||||
echo "" >~/zabbix.creds
|
|
||||||
echo "zabbix Database Credentials" >>~/zabbix.creds
|
|
||||||
echo "" >>~/zabbix.creds
|
|
||||||
echo -e "zabbix Database User: \e[32m$DB_USER\e[0m" >>~/zabbix.creds
|
|
||||||
echo -e "zabbix Database Password: \e[32m$DB_PASS\e[0m" >>~/zabbix.creds
|
|
||||||
echo -e "zabbix Database Name: \e[32m$DB_NAME\e[0m" >>~/zabbix.creds
|
|
||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
|
msg_info "Configuring Fping"
|
||||||
|
if command -v fping >/dev/null 2>&1; then
|
||||||
|
FPING_PATH=$(command -v fping)
|
||||||
|
sed -i "s|^#\?FpingLocation=.*|FpingLocation=$FPING_PATH|" /etc/zabbix/zabbix_server.conf
|
||||||
|
fi
|
||||||
|
|
||||||
|
if command -v fping6 >/dev/null 2>&1; then
|
||||||
|
FPING6_PATH=$(command -v fping6)
|
||||||
|
sed -i "s|^#\?Fping6Location=.*|Fping6Location=$FPING6_PATH|" /etc/zabbix/zabbix_server.conf
|
||||||
|
fi
|
||||||
|
msg_ok "Configured Fping"
|
||||||
|
|
||||||
msg_info "Starting Services"
|
msg_info "Starting Services"
|
||||||
systemctl restart zabbix-server zabbix-agent2 apache2
|
systemctl restart zabbix-server zabbix-agent2 apache2
|
||||||
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
|
systemctl enable -q --now zabbix-server zabbix-agent2 apache2
|
||||||
@@ -56,7 +110,8 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf /tmp/zabbix-release_latest+debian12_all.deb
|
rm -rf /tmp/zabbix-release_latest+debian13_all.deb
|
||||||
$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"
|
||||||
|
|||||||
@@ -42,11 +42,11 @@ error_handler() {
|
|||||||
echo -e "\n$error_message\n"
|
echo -e "\n$error_message\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Check if the shell is using bash
|
# Check if the current shell is using bash
|
||||||
shell_check() {
|
shell_check() {
|
||||||
if [[ "$(basename "$SHELL")" != "bash" ]]; then
|
if [[ "$(ps -p $$ -o comm=)" != "bash" ]]; then
|
||||||
clear
|
clear
|
||||||
msg_error "Your default shell is currently not set to Bash. To use these scripts, please switch to the Bash shell."
|
msg_error "Your default shell is not bash. Please report this to our github issues or discord."
|
||||||
echo -e "\nExiting..."
|
echo -e "\nExiting..."
|
||||||
sleep 2
|
sleep 2
|
||||||
exit
|
exit
|
||||||
|
|||||||
@@ -306,6 +306,9 @@ function fetch_and_deploy_gh_release() {
|
|||||||
|
|
||||||
msg_info "Fetching GitHub release: $app ($version)"
|
msg_info "Fetching GitHub release: $app ($version)"
|
||||||
|
|
||||||
|
local clean_install=false
|
||||||
|
[[ -n "${CLEAN_INSTALL:-}" && "$CLEAN_INSTALL" == "1" ]] && clean_install=true
|
||||||
|
|
||||||
### Tarball Mode ###
|
### Tarball Mode ###
|
||||||
if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
|
if [[ "$mode" == "tarball" || "$mode" == "source" ]]; then
|
||||||
url=$(echo "$json" | jq -r '.tarball_url // empty')
|
url=$(echo "$json" | jq -r '.tarball_url // empty')
|
||||||
@@ -319,6 +322,10 @@ function fetch_and_deploy_gh_release() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
mkdir -p "$target"
|
mkdir -p "$target"
|
||||||
|
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
|
||||||
|
rm -rf "${target:?}/"*
|
||||||
|
fi
|
||||||
|
|
||||||
tar -xzf "$tmpdir/$filename" -C "$tmpdir"
|
tar -xzf "$tmpdir/$filename" -C "$tmpdir"
|
||||||
local unpack_dir
|
local unpack_dir
|
||||||
unpack_dir=$(find "$tmpdir" -mindepth 1 -maxdepth 1 -type d | head -n1)
|
unpack_dir=$(find "$tmpdir" -mindepth 1 -maxdepth 1 -type d | head -n1)
|
||||||
@@ -388,7 +395,7 @@ function fetch_and_deploy_gh_release() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
### Prebuild Mode ###
|
### Prebuild Mode ###
|
||||||
elif [[ "$mode" == "prebuild" ]]; then
|
elif [[ "$mode" == "prebuild" ]]; then
|
||||||
local pattern="${6%\"}"
|
local pattern="${6%\"}"
|
||||||
pattern="${pattern#\"}"
|
pattern="${pattern#\"}"
|
||||||
@@ -425,6 +432,9 @@ function fetch_and_deploy_gh_release() {
|
|||||||
local unpack_tmp
|
local unpack_tmp
|
||||||
unpack_tmp=$(mktemp -d)
|
unpack_tmp=$(mktemp -d)
|
||||||
mkdir -p "$target"
|
mkdir -p "$target"
|
||||||
|
if [[ "${CLEAN_INSTALL:-0}" == "1" ]]; then
|
||||||
|
rm -rf "${target:?}/"*
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ "$filename" == *.zip ]]; then
|
if [[ "$filename" == *.zip ]]; then
|
||||||
if ! command -v unzip &>/dev/null; then
|
if ! command -v unzip &>/dev/null; then
|
||||||
@@ -1322,7 +1332,7 @@ function setup_mysql() {
|
|||||||
CURRENT_OS="$(awk -F= '/^ID=/{print $2}' /etc/os-release)"
|
CURRENT_OS="$(awk -F= '/^ID=/{print $2}' /etc/os-release)"
|
||||||
|
|
||||||
if command -v mysql >/dev/null; then
|
if command -v mysql >/dev/null; then
|
||||||
CURRENT_VERSION="$(mysql --version | grep -oP 'Distrib\s+\K[0-9]+\.[0-9]+')"
|
CURRENT_VERSION="$(mysql --version | grep -oP '[0-9]+\.[0-9]+' | head -n1)"
|
||||||
if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
|
if [[ "$CURRENT_VERSION" != "$MYSQL_VERSION" ]]; then
|
||||||
$STD msg_info "MySQL $CURRENT_VERSION will be upgraded to $MYSQL_VERSION"
|
$STD msg_info "MySQL $CURRENT_VERSION will be upgraded to $MYSQL_VERSION"
|
||||||
NEED_INSTALL=true
|
NEED_INSTALL=true
|
||||||
@@ -1960,9 +1970,8 @@ function setup_uv() {
|
|||||||
export PATH="/usr/local/bin:$PATH"
|
export PATH="/usr/local/bin:$PATH"
|
||||||
fi
|
fi
|
||||||
ensure_usr_local_bin_persist
|
ensure_usr_local_bin_persist
|
||||||
if ! $STD uv python update-shell; then
|
|
||||||
msg_error "uv shell integration failed – continuing anyway"
|
$STD uv python update-shell >/dev/null 2>&1 || true
|
||||||
fi
|
|
||||||
msg_ok "Setup uv $LATEST_VERSION"
|
msg_ok "Setup uv $LATEST_VERSION"
|
||||||
|
|
||||||
# Optional: install specific Python version
|
# Optional: install specific Python version
|
||||||
@@ -2012,6 +2021,8 @@ function setup_yq() {
|
|||||||
}
|
}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
[[ ":$PATH:" != *":/usr/local/bin:"* ]] && echo 'export PATH="/usr/local/bin:$PATH"' >>~/.bashrc && source ~/.bashrc
|
||||||
|
|
||||||
if command -v yq &>/dev/null; then
|
if command -v yq &>/dev/null; then
|
||||||
if ! yq --version 2>&1 | grep -q 'mikefarah'; then
|
if ! yq --version 2>&1 | grep -q 'mikefarah'; then
|
||||||
rm -f "$(command -v yq)"
|
rm -f "$(command -v yq)"
|
||||||
|
|||||||
@@ -532,20 +532,28 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
|
|||||||
"$MARKER" \
|
"$MARKER" \
|
||||||
"<script>" \
|
"<script>" \
|
||||||
" function removeSubscriptionElements() {" \
|
" function removeSubscriptionElements() {" \
|
||||||
|
" // --- Remove subscription dialogs ---" \
|
||||||
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
|
" const dialogs = document.querySelectorAll('dialog.pwt-outer-dialog');" \
|
||||||
" dialogs.forEach(dialog => {" \
|
" dialogs.forEach(dialog => {" \
|
||||||
" const closeButton = dialog.querySelector('.fa-close');" \
|
" const text = (dialog.textContent || '').toLowerCase();" \
|
||||||
" const exclamationIcon = dialog.querySelector('.fa-exclamation-triangle');" \
|
" if (text.includes('subscription')) {" \
|
||||||
" const continueButton = dialog.querySelector('button');" \
|
" dialog.remove();" \
|
||||||
" if (closeButton && exclamationIcon && continueButton) { dialog.remove(); console.log('Removed subscription dialog'); }" \
|
" console.log('Removed subscription dialog');" \
|
||||||
|
" }" \
|
||||||
" });" \
|
" });" \
|
||||||
|
"" \
|
||||||
|
" // --- Remove subscription cards, but keep Reboot/Shutdown/Console ---" \
|
||||||
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
|
" const cards = document.querySelectorAll('.pwt-card.pwt-p-2.pwt-d-flex.pwt-interactive.pwt-justify-content-center');" \
|
||||||
" cards.forEach(card => {" \
|
" cards.forEach(card => {" \
|
||||||
" const hasInteractiveElements = card.querySelector('button, input, a');" \
|
" const text = (card.textContent || '').toLowerCase();" \
|
||||||
" const hasComplexStructure = card.querySelector('.pwt-grid, .pwt-flex, .pwt-button');" \
|
" const hasButton = card.querySelector('button');" \
|
||||||
" if (!hasInteractiveElements && !hasComplexStructure) { card.remove(); console.log('Removed subscription card'); }" \
|
" if (!hasButton && text.includes('subscription')) {" \
|
||||||
|
" card.remove();" \
|
||||||
|
" console.log('Removed subscription card');" \
|
||||||
|
" }" \
|
||||||
" });" \
|
" });" \
|
||||||
" }" \
|
" }" \
|
||||||
|
"" \
|
||||||
" const observer = new MutationObserver(removeSubscriptionElements);" \
|
" const observer = new MutationObserver(removeSubscriptionElements);" \
|
||||||
" observer.observe(document.body, { childList: true, subtree: true });" \
|
" observer.observe(document.body, { childList: true, subtree: true });" \
|
||||||
" removeSubscriptionElements();" \
|
" removeSubscriptionElements();" \
|
||||||
@@ -555,9 +563,8 @@ if [ -f "$MOBILE_TPL" ] && ! grep -q "$MARKER" "$MOBILE_TPL"; then
|
|||||||
"" >> "$MOBILE_TPL"
|
"" >> "$MOBILE_TPL"
|
||||||
fi
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
chmod 755 /usr/local/bin/pve-remove-nag.sh
|
chmod 755 /usr/local/bin/pve-remove-nag.sh
|
||||||
|
|
||||||
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
|
cat >/etc/apt/apt.conf.d/no-nag-script <<'EOF'
|
||||||
DPkg::Post-Invoke { "/usr/local/bin/pve-remove-nag.sh"; };
|
DPkg::Post-Invoke { "/usr/local/bin/pve-remove-nag.sh"; };
|
||||||
EOF
|
EOF
|
||||||
|
|||||||
@@ -205,15 +205,69 @@ function exit-script() {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ensure pv is installed or abort with instructions
|
||||||
function ensure_pv() {
|
function ensure_pv() {
|
||||||
if ! command -v pv &>/dev/null; then
|
if ! command -v pv &>/dev/null; then
|
||||||
msg_info "Installing required package: pv"
|
msg_info "Installing required package: pv"
|
||||||
apt-get update -qq &>/dev/null
|
if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
|
||||||
apt-get install -y pv &>/dev/null
|
msg_error "Failed to install pv automatically."
|
||||||
|
echo -e "\nPlease run manually on the Proxmox host:\n apt install pv\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
msg_ok "Installed pv"
|
msg_ok "Installed pv"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Download an .xz file and validate it
|
||||||
|
# Args: $1=url $2=cache_file
|
||||||
|
function download_and_validate_xz() {
|
||||||
|
local url="$1"
|
||||||
|
local file="$2"
|
||||||
|
|
||||||
|
# If file exists, check validity
|
||||||
|
if [[ -s "$file" ]]; then
|
||||||
|
if xz -t "$file" &>/dev/null; then
|
||||||
|
msg_ok "Using cached image $(basename "$file")"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
|
||||||
|
rm -f "$file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download fresh file
|
||||||
|
msg_info "Downloading image: $(basename "$file")"
|
||||||
|
if ! curl -fSL -o "$file" "$url"; then
|
||||||
|
msg_error "Download failed: $url"
|
||||||
|
rm -f "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate again
|
||||||
|
if ! xz -t "$file" &>/dev/null; then
|
||||||
|
msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
|
||||||
|
rm -f "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg_ok "Downloaded and validated $(basename "$file")"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract .xz with pv
|
||||||
|
# Args: $1=cache_file $2=target_img
|
||||||
|
function extract_xz_with_pv() {
|
||||||
|
set -o pipefail
|
||||||
|
local file="$1"
|
||||||
|
local target="$2"
|
||||||
|
|
||||||
|
msg_info "Decompressing $(basename "$file") to $target"
|
||||||
|
if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
|
||||||
|
msg_error "Failed to extract $file"
|
||||||
|
rm -f "$target"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg_ok "Decompressed to $target"
|
||||||
|
}
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
BRANCH="$stable"
|
BRANCH="$stable"
|
||||||
VMID=$(get_valid_nextid)
|
VMID=$(get_valid_nextid)
|
||||||
@@ -507,23 +561,15 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}" # .qcow2
|
|||||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
|
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
|
||||||
msg_ok "${CL}${BL}${URL}${CL}"
|
msg_ok "${CL}${BL}${URL}${CL}"
|
||||||
|
|
||||||
if [[ ! -s "$CACHE_FILE" ]]; then
|
download_and_validate_xz "$URL" "$CACHE_FILE"
|
||||||
curl -f#SL -o "$CACHE_FILE" "$URL"
|
|
||||||
msg_ok "Downloaded ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
|
|
||||||
else
|
|
||||||
msg_ok "Using cached image ${CL}${BL}$(basename "$CACHE_FILE")${CL}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -o pipefail
|
|
||||||
msg_info "Creating Home Assistant OS VM shell"
|
msg_info "Creating Home Assistant OS VM shell"
|
||||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
|
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
|
||||||
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
|
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
|
||||||
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
|
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
|
||||||
msg_ok "Created VM shell"
|
msg_ok "Created VM shell"
|
||||||
|
|
||||||
msg_info "Decompressing $(basename "$CACHE_FILE") to $FILE_IMG"
|
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
|
||||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
|
|
||||||
msg_ok "Decompressed to $FILE_IMG"
|
|
||||||
|
|
||||||
msg_info "Importing disk into storage ($STORAGE)"
|
msg_info "Importing disk into storage ($STORAGE)"
|
||||||
if qm disk import --help >/dev/null 2>&1; then
|
if qm disk import --help >/dev/null 2>&1; then
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ GN=$(echo "\033[1;92m")
|
|||||||
DGN=$(echo "\033[32m")
|
DGN=$(echo "\033[32m")
|
||||||
CL=$(echo "\033[m")
|
CL=$(echo "\033[m")
|
||||||
|
|
||||||
CL=$(echo "\033[m")
|
|
||||||
BOLD=$(echo "\033[1m")
|
BOLD=$(echo "\033[1m")
|
||||||
BFR="\\r\\033[K"
|
BFR="\\r\\033[K"
|
||||||
HOLD=" "
|
HOLD=" "
|
||||||
@@ -201,15 +200,69 @@ function exit-script() {
|
|||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Ensure pv is installed or abort with instructions
|
||||||
function ensure_pv() {
|
function ensure_pv() {
|
||||||
if ! command -v pv &>/dev/null; then
|
if ! command -v pv &>/dev/null; then
|
||||||
msg_info "Installing required package: pv"
|
msg_info "Installing required package: pv"
|
||||||
apt-get update -qq &>/dev/null
|
if ! apt-get update -qq &>/dev/null || ! apt-get install -y pv &>/dev/null; then
|
||||||
apt-get install -y pv &>/dev/null
|
msg_error "Failed to install pv automatically."
|
||||||
|
echo -e "\nPlease run manually on the Proxmox host:\n apt install pv\n"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
msg_ok "Installed pv"
|
msg_ok "Installed pv"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Download an .xz file and validate it
|
||||||
|
# Args: $1=url $2=cache_file
|
||||||
|
function download_and_validate_xz() {
|
||||||
|
local url="$1"
|
||||||
|
local file="$2"
|
||||||
|
|
||||||
|
# If file exists, check validity
|
||||||
|
if [[ -s "$file" ]]; then
|
||||||
|
if xz -t "$file" &>/dev/null; then
|
||||||
|
msg_ok "Using cached image $(basename "$file")"
|
||||||
|
return 0
|
||||||
|
else
|
||||||
|
msg_error "Cached file $(basename "$file") is corrupted. Deleting and retrying download..."
|
||||||
|
rm -f "$file"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Download fresh file
|
||||||
|
msg_info "Downloading image: $(basename "$file")"
|
||||||
|
if ! curl -fSL -o "$file" "$url"; then
|
||||||
|
msg_error "Download failed: $url"
|
||||||
|
rm -f "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Validate again
|
||||||
|
if ! xz -t "$file" &>/dev/null; then
|
||||||
|
msg_error "Downloaded file $(basename "$file") is corrupted. Please try again later."
|
||||||
|
rm -f "$file"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg_ok "Downloaded and validated $(basename "$file")"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Extract .xz with pv
|
||||||
|
# Args: $1=cache_file $2=target_img
|
||||||
|
function extract_xz_with_pv() {
|
||||||
|
set -o pipefail
|
||||||
|
local file="$1"
|
||||||
|
local target="$2"
|
||||||
|
|
||||||
|
msg_info "Decompressing $(basename "$file") to $target"
|
||||||
|
if ! xz -dc "$file" | pv -N "Extracting" >"$target"; then
|
||||||
|
msg_error "Failed to extract $file"
|
||||||
|
rm -f "$target"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
msg_ok "Decompressed to $target"
|
||||||
|
}
|
||||||
|
|
||||||
function default_settings() {
|
function default_settings() {
|
||||||
VMID=$(get_valid_nextid)
|
VMID=$(get_valid_nextid)
|
||||||
MACHINE="q35"
|
MACHINE="q35"
|
||||||
@@ -475,19 +528,13 @@ FILE_IMG="/var/lib/vz/template/tmp/${CACHE_FILE##*/%.xz}"
|
|||||||
|
|
||||||
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
|
mkdir -p "$CACHE_DIR" "$(dirname "$FILE_IMG")"
|
||||||
|
|
||||||
if [[ ! -s "$CACHE_FILE" ]]; then
|
download_and_validate_xz "$URL" "$CACHE_FILE"
|
||||||
msg_ok "Downloading Umbrel OS image"
|
|
||||||
curl -f#SL -o "$CACHE_FILE" "$URL"
|
|
||||||
else
|
|
||||||
msg_ok "Using cached Umbrel OS image"
|
|
||||||
fi
|
|
||||||
|
|
||||||
set -o pipefail
|
|
||||||
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
|
qm create "$VMID" -machine q35 -bios ovmf -agent 1 -tablet 0 -localtime 1 ${CPU_TYPE} \
|
||||||
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
|
-cores "$CORE_COUNT" -memory "$RAM_SIZE" -name "$HN" -tags community-script \
|
||||||
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
|
-net0 "virtio,bridge=$BRG,macaddr=$MAC$VLAN$MTU" -onboot 1 -ostype l26 -scsihw virtio-scsi-pci >/dev/null
|
||||||
|
|
||||||
xz -dc "$CACHE_FILE" | pv -N "Extracting" >"$FILE_IMG"
|
extract_xz_with_pv "$CACHE_FILE" "$FILE_IMG"
|
||||||
|
|
||||||
if qm disk import --help >/dev/null 2>&1; then
|
if qm disk import --help >/dev/null 2>&1; then
|
||||||
IMPORT_CMD=(qm disk import)
|
IMPORT_CMD=(qm disk import)
|
||||||
|
|||||||
Reference in New Issue
Block a user