mirror of
https://github.com/community-scripts/ProxmoxVE.git
synced 2025-07-10 07:57:37 +00:00
Compare commits
28 Commits
2025-07-08
...
ref_stirli
Author | SHA1 | Date | |
---|---|---|---|
a0462f4653 | |||
d3a4f4f80f | |||
5b446e60bb | |||
acc500fe9d | |||
0a37d1b004 | |||
8c09216691 | |||
54cd7dd669 | |||
2ff778db9a | |||
5d1f0ab13e | |||
b306a31235 | |||
c8797ba135 | |||
b9ec651a8b | |||
475c666eb0 | |||
8d419616a6 | |||
d087719571 | |||
df52a2d057 | |||
4886196cfa | |||
1f37fbb83e | |||
387f2c7bd1 | |||
0b949c8151 | |||
fd248e072c | |||
e58e50fc15 | |||
5b869b61fc | |||
0e2c793f92 | |||
96a8f9df89 | |||
4f569c67eb | |||
e856b36306 | |||
42e8623f39 |
43
.github/autolabeler-config.json
generated
vendored
43
.github/autolabeler-config.json
generated
vendored
@ -4,6 +4,7 @@
|
|||||||
"fileStatus": "added",
|
"fileStatus": "added",
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"ct/**",
|
"ct/**",
|
||||||
|
"tools/**",
|
||||||
"install/**",
|
"install/**",
|
||||||
"misc/**",
|
"misc/**",
|
||||||
"turnkey/**",
|
"turnkey/**",
|
||||||
@ -17,16 +18,13 @@
|
|||||||
"fileStatus": "modified",
|
"fileStatus": "modified",
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"ct/**",
|
"ct/**",
|
||||||
|
"tools/**",
|
||||||
"install/**",
|
"install/**",
|
||||||
"misc/**",
|
"misc/**",
|
||||||
"turnkey/**",
|
"turnkey/**",
|
||||||
"vm/**"
|
"vm/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": [
|
"excludeGlobs": []
|
||||||
"misc/build.func",
|
|
||||||
"misc/install.func",
|
|
||||||
"misc/api.func"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"delete script": [
|
"delete script": [
|
||||||
@ -34,6 +32,7 @@
|
|||||||
"fileStatus": "removed",
|
"fileStatus": "removed",
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"ct/**",
|
"ct/**",
|
||||||
|
"tools/**",
|
||||||
"install/**",
|
"install/**",
|
||||||
"misc/**",
|
"misc/**",
|
||||||
"turnkey/**",
|
"turnkey/**",
|
||||||
@ -46,11 +45,7 @@
|
|||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"*.md",
|
"*.md"
|
||||||
".github/**",
|
|
||||||
"misc/*.func",
|
|
||||||
"misc/create_lxc.sh",
|
|
||||||
"api/**"
|
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
@ -62,7 +57,9 @@
|
|||||||
"misc/*.func",
|
"misc/*.func",
|
||||||
"misc/create_lxc.sh"
|
"misc/create_lxc.sh"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": [
|
||||||
|
"misc/api.func"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"website": [
|
"website": [
|
||||||
@ -71,7 +68,9 @@
|
|||||||
"includeGlobs": [
|
"includeGlobs": [
|
||||||
"frontend/**"
|
"frontend/**"
|
||||||
],
|
],
|
||||||
"excludeGlobs": []
|
"excludeGlobs": [
|
||||||
|
"frontend/public/json/**"
|
||||||
|
]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"api": [
|
"api": [
|
||||||
@ -102,26 +101,6 @@
|
|||||||
"excludeGlobs": []
|
"excludeGlobs": []
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"high risk": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"misc/build.func",
|
|
||||||
"misc/install.func",
|
|
||||||
"misc/create_lxc.sh"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"documentation": [
|
|
||||||
{
|
|
||||||
"fileStatus": null,
|
|
||||||
"includeGlobs": [
|
|
||||||
"*.md"
|
|
||||||
],
|
|
||||||
"excludeGlobs": []
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"addon": [
|
"addon": [
|
||||||
{
|
{
|
||||||
"fileStatus": null,
|
"fileStatus": null,
|
||||||
|
120
.github/changelog-pr-config.json
generated
vendored
120
.github/changelog-pr-config.json
generated
vendored
@ -1,112 +1,148 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"title": "🆕 New Scripts",
|
"title": "🆕 New Scripts",
|
||||||
"labels": ["new script"]
|
"labels": [
|
||||||
|
"new script"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🚀 Updated Scripts",
|
"title": "🚀 Updated Scripts",
|
||||||
"labels": ["update script"],
|
"labels": [
|
||||||
|
"update script"
|
||||||
|
],
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": ["bugfix"],
|
"labels": [
|
||||||
"notes" : []
|
"bugfix"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": ["feature"],
|
"labels": [
|
||||||
"notes" : []
|
"feature"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": ["breaking change"],
|
"labels": [
|
||||||
"notes" : []
|
"breaking change"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🔧 Refactor",
|
"title": "🔧 Refactor",
|
||||||
"labels": ["refactor"],
|
"labels": [
|
||||||
"notes" : []
|
"refactor"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🧰 Maintenance",
|
"title": "🧰 Maintenance",
|
||||||
"labels": ["maintenance"],
|
"labels": [
|
||||||
|
"maintenance"
|
||||||
|
],
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": ["bugfix"],
|
"labels": [
|
||||||
"notes" : []
|
"bugfix"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": ["feature"],
|
"labels": [
|
||||||
"notes" : []
|
"feature"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": ["breaking change"],
|
"labels": [
|
||||||
"notes" : []
|
"breaking change"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📡 API",
|
"title": "📡 API",
|
||||||
"labels": ["api"],
|
"labels": [
|
||||||
"notes" : []
|
"api"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💾 Core",
|
"title": "💾 Core",
|
||||||
"labels": ["core"],
|
"labels": [
|
||||||
"notes" : []
|
"core"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📂 Github",
|
"title": "📂 Github",
|
||||||
"labels": ["github"],
|
"labels": [
|
||||||
"notes" : []
|
"github"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title" :"📝 Documentation",
|
"title": "📝 Documentation",
|
||||||
"labels": ["documentation"],
|
"labels": [
|
||||||
"notes" : []
|
"maintenance"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title" :"🔧 Refactor",
|
"title": "🔧 Refactor",
|
||||||
"labels": ["refactor"],
|
"labels": [
|
||||||
"notes" : []
|
"refactor"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "🌐 Website",
|
"title": "🌐 Website",
|
||||||
"labels": ["website"],
|
"labels": [
|
||||||
|
"website"
|
||||||
|
],
|
||||||
"subCategories": [
|
"subCategories": [
|
||||||
{
|
{
|
||||||
"title": "🐞 Bug Fixes",
|
"title": "🐞 Bug Fixes",
|
||||||
"labels": ["bugfix"],
|
"labels": [
|
||||||
"notes" : []
|
"bugfix"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "✨ New Features",
|
"title": "✨ New Features",
|
||||||
"labels": ["feature"],
|
"labels": [
|
||||||
"notes" : []
|
"feature"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "💥 Breaking Changes",
|
"title": "💥 Breaking Changes",
|
||||||
"labels": ["breaking change"],
|
"labels": [
|
||||||
"notes" : []
|
"breaking change"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "📝 Script Information",
|
"title": "📝 Script Information",
|
||||||
"labels": ["json"],
|
"labels": [
|
||||||
"notes" : []
|
"json"
|
||||||
|
],
|
||||||
|
"notes": []
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"title": "❔ Unlabelled",
|
"title": "❔ Unlabelled",
|
||||||
"labels": []
|
"labels": []
|
||||||
},
|
|
||||||
{
|
|
||||||
"title": "💥 Breaking Changes",
|
|
||||||
"labels": ["breaking change"]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
27
.github/workflows/autolabeler.yml
generated
vendored
27
.github/workflows/autolabeler.yml
generated
vendored
@ -1,6 +1,7 @@
|
|||||||
name: Auto Label Pull Requests
|
name: Auto Label Pull Requests
|
||||||
|
|
||||||
on:
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
pull_request_target:
|
pull_request_target:
|
||||||
branches: ["main"]
|
branches: ["main"]
|
||||||
types: [opened, synchronize, reopened, edited]
|
types: [opened, synchronize, reopened, edited]
|
||||||
@ -33,7 +34,7 @@ jobs:
|
|||||||
const autolabelerConfig = JSON.parse(fileContent);
|
const autolabelerConfig = JSON.parse(fileContent);
|
||||||
|
|
||||||
const prNumber = context.payload.pull_request.number;
|
const prNumber = context.payload.pull_request.number;
|
||||||
const prBody = context.payload.pull_request.body.toLowerCase();
|
const prBody = context.payload.pull_request.body || "";
|
||||||
|
|
||||||
let labelsToAdd = new Set();
|
let labelsToAdd = new Set();
|
||||||
|
|
||||||
@ -73,19 +74,35 @@ jobs:
|
|||||||
"✨ **New feature**": "feature",
|
"✨ **New feature**": "feature",
|
||||||
"💥 **Breaking change**": "breaking change",
|
"💥 **Breaking change**": "breaking change",
|
||||||
"🆕 **New script**": "new script",
|
"🆕 **New script**": "new script",
|
||||||
"🌍 **Website update**": "website",
|
"🌍 **Website update**": "website", // handled special
|
||||||
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
"🔧 **Refactoring / Code Cleanup**": "refactor",
|
||||||
"📝 **Documentation update**": "documentation"
|
"📝 **Documentation update**": "documentation" // mapped to maintenance
|
||||||
};
|
};
|
||||||
|
|
||||||
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
for (const [checkbox, label] of Object.entries(templateLabelMappings)) {
|
||||||
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
const escapedCheckbox = checkbox.replace(/([.*+?^=!:${}()|[\]\/\\])/g, "\\$1");
|
||||||
const regex = new RegExp(`- \[(x|X)\]\s*.*${escapedCheckbox}`, "i");
|
const regex = new RegExp(`- \\[(x|X)\\]\\s*${escapedCheckbox}`, "i");
|
||||||
|
|
||||||
if (regex.test(prBody)) {
|
if (regex.test(prBody)) {
|
||||||
labelsToAdd.add(label);
|
if (label === "website") {
|
||||||
|
const hasJson = prFiles.some((f) => f.filename.startsWith("frontend/public/json/"));
|
||||||
|
const hasUpdateScript = labelsToAdd.has("update script");
|
||||||
|
const hasContentLabel = ["bugfix", "feature", "refactor"].some((l) => labelsToAdd.has(l));
|
||||||
|
|
||||||
|
if (!(hasUpdateScript && hasContentLabel)) {
|
||||||
|
labelsToAdd.add(hasJson ? "json" : "website");
|
||||||
|
}
|
||||||
|
} else if (label === "documentation") {
|
||||||
|
labelsToAdd.add("maintenance");
|
||||||
|
} else {
|
||||||
|
labelsToAdd.add(label);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (labelsToAdd.size === 0) {
|
||||||
|
labelsToAdd.add("needs triage");
|
||||||
|
}
|
||||||
|
|
||||||
if (labelsToAdd.size > 0) {
|
if (labelsToAdd.size > 0) {
|
||||||
await github.rest.issues.addLabels({
|
await github.rest.issues.addLabels({
|
||||||
|
2
.github/workflows/changelog-pr.yml
generated
vendored
2
.github/workflows/changelog-pr.yml
generated
vendored
@ -80,7 +80,7 @@ jobs:
|
|||||||
{ title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] },
|
{ title: "💥 Breaking Changes", labels: ["breaking change"], notes: [] },
|
||||||
{ title: "📡 API", labels: ["api"], notes: [] },
|
{ title: "📡 API", labels: ["api"], notes: [] },
|
||||||
{ title: "Github", labels: ["github"], notes: [] },
|
{ title: "Github", labels: ["github"], notes: [] },
|
||||||
{ title: "📝 Documentation", labels: ["documentation"], notes: [] },
|
{ title: "📝 Documentation", labels: ["maintenance"], notes: [] },
|
||||||
{ title: "🔧 Refactor", labels: ["refactor"], notes: [] }
|
{ title: "🔧 Refactor", labels: ["refactor"], notes: [] }
|
||||||
] :
|
] :
|
||||||
obj.labels.includes("website") ? [
|
obj.labels.includes("website") ? [
|
||||||
|
26
CHANGELOG.md
26
CHANGELOG.md
@ -12,6 +12,32 @@ Exercise vigilance regarding copycat or coat-tailing sites that seek to exploit
|
|||||||
|
|
||||||
## 2025-07-09
|
## 2025-07-09
|
||||||
|
|
||||||
|
### 🚀 Updated Scripts
|
||||||
|
|
||||||
|
- #### 🐞 Bug Fixes
|
||||||
|
|
||||||
|
- BabyBuddy: fix path issues for update [@MickLesk](https://github.com/MickLesk) ([#5856](https://github.com/community-scripts/ProxmoxVE/pull/5856))
|
||||||
|
- tools.func: fix an bug while php libapache2-mod breaks [@MickLesk](https://github.com/MickLesk) ([#5857](https://github.com/community-scripts/ProxmoxVE/pull/5857))
|
||||||
|
|
||||||
|
- #### ✨ New Features
|
||||||
|
|
||||||
|
- Refactor: Commafeed [@tremor021](https://github.com/tremor021) ([#5802](https://github.com/community-scripts/ProxmoxVE/pull/5802))
|
||||||
|
- tools.func: strip leading folders for prebuild assets [@MickLesk](https://github.com/MickLesk) ([#5865](https://github.com/community-scripts/ProxmoxVE/pull/5865))
|
||||||
|
|
||||||
|
- #### 🔧 Refactor
|
||||||
|
|
||||||
|
- Refactor: FreshRSS [@tremor021](https://github.com/tremor021) ([#5847](https://github.com/community-scripts/ProxmoxVE/pull/5847))
|
||||||
|
- Refactor: Fluid-Calendar [@tremor021](https://github.com/tremor021) ([#5846](https://github.com/community-scripts/ProxmoxVE/pull/5846))
|
||||||
|
- Refactor: EMQX [@tremor021](https://github.com/tremor021) ([#5840](https://github.com/community-scripts/ProxmoxVE/pull/5840))
|
||||||
|
- Refactor: Excalidraw [@tremor021](https://github.com/tremor021) ([#5841](https://github.com/community-scripts/ProxmoxVE/pull/5841))
|
||||||
|
- Refactor: gatus [@tremor021](https://github.com/tremor021) ([#5849](https://github.com/community-scripts/ProxmoxVE/pull/5849))
|
||||||
|
|
||||||
|
### 🧰 Maintenance
|
||||||
|
|
||||||
|
- #### 📂 Github
|
||||||
|
|
||||||
|
- Github: AutoLabler | ChangeLog (Refactor) [@MickLesk](https://github.com/MickLesk) ([#5868](https://github.com/community-scripts/ProxmoxVE/pull/5868))
|
||||||
|
|
||||||
## 2025-07-08
|
## 2025-07-08
|
||||||
|
|
||||||
### 🚀 Updated Scripts
|
### 🚀 Updated Scripts
|
||||||
|
@ -38,7 +38,7 @@ function update_script() {
|
|||||||
msg_ok "Services Stopped"
|
msg_ok "Services Stopped"
|
||||||
|
|
||||||
msg_info "Cleaning old files"
|
msg_info "Cleaning old files"
|
||||||
cp babybuddy/settings/production.py /tmp/production.py.bak
|
cp /opt/babybuddy/babybuddy/settings/production.py /tmp/production.py.bak
|
||||||
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
find . -mindepth 1 -maxdepth 1 ! -name '.venv' -exec rm -rf {} +
|
||||||
msg_ok "Cleaned old files"
|
msg_ok "Cleaned old files"
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ function update_script() {
|
|||||||
|
|
||||||
msg_info "Updating ${APP} to v${RELEASE}"
|
msg_info "Updating ${APP} to v${RELEASE}"
|
||||||
cd /opt/babybuddy
|
cd /opt/babybuddy
|
||||||
mv /tmp/production.py.bak babybuddy/settings/production.py
|
mv /tmp/production.py.bak /opt/babybuddy/babybuddy/settings/production.py
|
||||||
source .venv/bin/activate
|
source .venv/bin/activate
|
||||||
$STD uv pip install -r requirements.txt
|
$STD uv pip install -r requirements.txt
|
||||||
$STD python manage.py migrate
|
$STD python manage.py migrate
|
||||||
|
@ -23,12 +23,13 @@ function update_script() {
|
|||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/commafeed ]]; then
|
if [[ ! -d /opt/commafeed ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
||||||
if [[ ! -f /opt/${APP}_version.txt ]] || [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.commafeed 2>/dev/null)" ]] || [[ ! -f ~/.commafeed ]]; then
|
||||||
msg_info "Stopping ${APP}"
|
msg_info "Stopping ${APP}"
|
||||||
systemctl stop commafeed
|
systemctl stop commafeed
|
||||||
msg_ok "Stopped ${APP}"
|
msg_ok "Stopped ${APP}"
|
||||||
@ -39,13 +40,15 @@ function update_script() {
|
|||||||
$STD apt-get install -y rsync
|
$STD apt-get install -y rsync
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
fi
|
fi
|
||||||
|
if [ -d /opt/commafeed/data ] && [ "$(ls -A /opt/commafeed/data)" ]; then
|
||||||
|
mv /opt/commafeed/data /opt/data.bak
|
||||||
|
fi
|
||||||
|
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
|
||||||
|
|
||||||
msg_info "Updating ${APP} to ${RELEASE}"
|
msg_info "Updating ${APP} to ${RELEASE}"
|
||||||
curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o $(basename "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip")
|
if [ -d /opt/commafeed/data.bak ] && [ "$(ls -A /opt/commafeed/data.bak)" ]; then
|
||||||
$STD unzip commafeed-"${RELEASE}"-h2-jvm.zip
|
mv /opt/commafeed/data.bak /opt/commafeed/data
|
||||||
rsync -a --exclude 'data/' commafeed-"${RELEASE}"-h2/ /opt/commafeed/
|
fi
|
||||||
rm -rf commafeed-"${RELEASE}"-h2 commafeed-"${RELEASE}"-h2-jvm.zip
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated ${APP} to ${RELEASE}"
|
msg_ok "Updated ${APP} to ${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting ${APP}"
|
msg_info "Starting ${APP}"
|
||||||
|
@ -28,20 +28,16 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/excalidraw_version.txt)" ]] || [[ ! -f /opt/excalidraw_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.excalidraw 2>/dev/null)" ]] || [[ ! -f ~/.excalidraw ]]; then
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop excalidraw
|
systemctl stop excalidraw
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
cd /tmp
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar xzf $temp_file
|
|
||||||
rm -rf /opt/excalidraw
|
rm -rf /opt/excalidraw
|
||||||
mv excalidraw-${RELEASE} /opt/excalidraw
|
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt/excalidraw
|
cd /opt/excalidraw
|
||||||
$STD yarn
|
$STD yarn
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
@ -50,11 +46,6 @@ function update_script() {
|
|||||||
systemctl start excalidraw
|
systemctl start excalidraw
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf $temp_file
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/excalidraw_version.txt
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
@ -20,51 +20,43 @@ color
|
|||||||
catch_errors
|
catch_errors
|
||||||
|
|
||||||
function update_script() {
|
function update_script() {
|
||||||
header_info
|
header_info
|
||||||
check_container_storage
|
check_container_storage
|
||||||
check_container_resources
|
check_container_resources
|
||||||
|
|
||||||
if [[ ! -d /opt/fluid-calendar ]]; then
|
if [[ ! -d /opt/fluid-calendar ]]; then
|
||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
|
||||||
fi
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
|
||||||
msg_info "Stopping $APP"
|
|
||||||
systemctl stop fluid-calendar.service
|
|
||||||
msg_ok "Stopped $APP"
|
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
cp /opt/fluid-calendar/.env /opt/fluid.env
|
|
||||||
rm -rf /opt/fluid-calendar
|
|
||||||
tmp_file=$(mktemp)
|
|
||||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
|
||||||
$STD unzip $tmp_file
|
|
||||||
mv ${APP}-${RELEASE}/ /opt/fluid-calendar
|
|
||||||
mv /opt/fluid.env /opt/fluid-calendar/.env
|
|
||||||
cd /opt/fluid-calendar
|
|
||||||
export NEXT_TELEMETRY_DISABLED=1
|
|
||||||
$STD npm install --legacy-peer-deps
|
|
||||||
$STD npm run prisma:generate
|
|
||||||
$STD npx prisma migrate deploy
|
|
||||||
$STD npm run build:os
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
|
||||||
systemctl start fluid-calendar.service
|
|
||||||
msg_ok "Started $APP"
|
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -rf $tmp_file
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Update Successful"
|
|
||||||
else
|
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
|
||||||
fi
|
|
||||||
exit
|
exit
|
||||||
|
fi
|
||||||
|
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
|
if [[ "${RELEASE}" != "$(cat ~/.fluid-calendar 2>/dev/null)" ]] || [[ ! -f ~/.fluid-calendar ]]; then
|
||||||
|
msg_info "Stopping $APP"
|
||||||
|
systemctl stop fluid-calendar
|
||||||
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
|
cp /opt/fluid-calendar/.env /opt/fluid.env
|
||||||
|
rm -rf /opt/fluid-calendar
|
||||||
|
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
||||||
|
|
||||||
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
|
mv /opt/fluid.env /opt/fluid-calendar/.env
|
||||||
|
cd /opt/fluid-calendar
|
||||||
|
export NEXT_TELEMETRY_DISABLED=1
|
||||||
|
$STD npm install --legacy-peer-deps
|
||||||
|
$STD npm run prisma:generate
|
||||||
|
$STD npx prisma migrate deploy
|
||||||
|
$STD npm run build:os
|
||||||
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
|
msg_info "Starting $APP"
|
||||||
|
systemctl start fluid-calendar
|
||||||
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
fi
|
||||||
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
|
16
ct/gatus.sh
16
ct/gatus.sh
@ -29,35 +29,29 @@ function update_script() {
|
|||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
||||||
if [[ "${RELEASE}" != "$(cat /opt/${APP}_version.txt)" ]] || [[ ! -f /opt/${APP}_version.txt ]]; then
|
if [[ "${RELEASE}" != "$(cat ~/.gatus 2>/dev/null)" ]] || [[ ! -f ~/.gatus ]]; then
|
||||||
msg_info "Updating $APP"
|
msg_info "Updating $APP"
|
||||||
|
|
||||||
msg_info "Stopping $APP"
|
msg_info "Stopping $APP"
|
||||||
systemctl stop gatus
|
systemctl stop gatus
|
||||||
msg_ok "Stopped $APP"
|
msg_ok "Stopped $APP"
|
||||||
|
|
||||||
msg_info "Updating $APP to v${RELEASE}"
|
|
||||||
mv /opt/gatus/config/config.yaml /opt
|
mv /opt/gatus/config/config.yaml /opt
|
||||||
rm -rf /opt/gatus/*
|
rm -rf /opt/gatus
|
||||||
temp_file=$(mktemp)
|
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
|
||||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
msg_info "Updating $APP to v${RELEASE}"
|
||||||
cd /opt/gatus
|
cd /opt/gatus
|
||||||
$STD go mod tidy
|
$STD go mod tidy
|
||||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||||
setcap CAP_NET_RAW+ep gatus
|
setcap CAP_NET_RAW+ep gatus
|
||||||
mv /opt/config.yaml config
|
mv /opt/config.yaml config
|
||||||
echo "${RELEASE}" >/opt/${APP}_version.txt
|
|
||||||
msg_ok "Updated $APP to v${RELEASE}"
|
msg_ok "Updated $APP to v${RELEASE}"
|
||||||
|
|
||||||
msg_info "Starting $APP"
|
msg_info "Starting $APP"
|
||||||
systemctl start gatus
|
systemctl start gatus
|
||||||
msg_ok "Started $APP"
|
msg_ok "Started $APP"
|
||||||
|
|
||||||
msg_info "Cleaning Up"
|
|
||||||
rm -f "$temp_file"
|
|
||||||
msg_ok "Cleanup Completed"
|
|
||||||
|
|
||||||
msg_ok "Update Successful"
|
msg_ok "Update Successful"
|
||||||
else
|
else
|
||||||
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
|
@ -27,31 +27,41 @@ function update_script() {
|
|||||||
msg_error "No ${APP} Installation Found!"
|
msg_error "No ${APP} Installation Found!"
|
||||||
exit
|
exit
|
||||||
fi
|
fi
|
||||||
msg_info "Updating ${APP}"
|
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
||||||
systemctl stop stirlingpdf
|
if [[ "${RELEASE}" != "$(cat ~/.stirling-pdf 2>/dev/null)" ]] || [[ ! -f ~/.stirling-pdf ]]; then
|
||||||
if [[ -n $(dpkg -l | grep -w ocrmypdf) ]] && [[ -z $(dpkg -l | grep -w qpdf) ]]; then
|
if [[ ! -f /etc/systemd/system/unoserver.service ]]; then
|
||||||
$STD apt-get remove -y ocrmypdf
|
msg_custom "⚠️ " "\e[33m" "Legacy installation detected – please recreate the container using the latest install script."
|
||||||
$STD apt-get install -y qpdf
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
|
msg_info "Stopping Services"
|
||||||
|
systemctl stop stirlingpdf libreoffice-listener unoserver
|
||||||
|
msg_ok "Stopped Services"
|
||||||
|
|
||||||
|
if [[ -f ~/.Stirling-PDF-login ]]; then
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
|
||||||
|
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
||||||
|
else
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
|
msg_info "Refreshing Font Cache"
|
||||||
|
$STD fc-cache -fv
|
||||||
|
msg_ok "Font Cache Updated"
|
||||||
|
|
||||||
|
msg_info "Starting Services"
|
||||||
|
systemctl start stirlingpdf libreoffice-listener unoserver
|
||||||
|
msg_ok "Started Services"
|
||||||
|
|
||||||
|
msg_ok "Update Successful"
|
||||||
|
else
|
||||||
|
msg_ok "No update required. ${APP} is already at v${RELEASE}"
|
||||||
fi
|
fi
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz" -o $(basename "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v$RELEASE.tar.gz")
|
|
||||||
tar -xzf v$RELEASE.tar.gz
|
|
||||||
cd Stirling-PDF-$RELEASE
|
|
||||||
chmod +x ./gradlew
|
|
||||||
$STD ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
|
||||||
rm -rf /opt/Stirling-PDF/Stirling-PDF-*.jar
|
|
||||||
cp -r ./stirling-pdf/build/libs/*.jar /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar
|
|
||||||
cp -r scripts /opt/Stirling-PDF/
|
|
||||||
cp -r pipeline /opt/Stirling-PDF/
|
|
||||||
cp -r stirling-pdf/src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
|
|
||||||
cd ~
|
|
||||||
rm -rf Stirling-PDF-$RELEASE v$RELEASE.tar.gz
|
|
||||||
ln -sf /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
|
||||||
systemctl start stirlingpdf
|
|
||||||
msg_ok "Updated ${APP} to v$RELEASE"
|
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
start
|
start
|
||||||
build_container
|
build_container
|
||||||
description
|
description
|
||||||
|
4
frontend/public/json/emqx.json
generated
4
frontend/public/json/emqx.json
generated
@ -35,10 +35,6 @@
|
|||||||
{
|
{
|
||||||
"text": "Setup-Steps: Access Control ➡ Authentication ➡ Create ➡ Next ➡ Next ➡ Create ➡ Users ➡ Add ➡ Username / Password (to authenicate with MQTT) ➡ Save. You're now ready to enjoy a high-performance MQTT Broker.",
|
"text": "Setup-Steps: Access Control ➡ Authentication ➡ Create ➡ Next ➡ Next ➡ Create ➡ Users ➡ Add ➡ Username / Password (to authenicate with MQTT) ➡ Save. You're now ready to enjoy a high-performance MQTT Broker.",
|
||||||
"type": "info"
|
"type": "info"
|
||||||
},
|
|
||||||
{
|
|
||||||
"text": "WARNING: Installation sources scripts outside of Community Scripts repo. Please check the source before installing.",
|
|
||||||
"type": "warning"
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
66
frontend/public/json/stirling-pdf.json
generated
66
frontend/public/json/stirling-pdf.json
generated
@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "Stirling-PDF",
|
"name": "Stirling-PDF",
|
||||||
"slug": "stirling-pdf",
|
"slug": "stirling-pdf",
|
||||||
"categories": [
|
"categories": [
|
||||||
12
|
12
|
||||||
],
|
],
|
||||||
"date_created": "2024-05-02",
|
"date_created": "2024-05-02",
|
||||||
"type": "ct",
|
"type": "ct",
|
||||||
"updateable": true,
|
"updateable": true,
|
||||||
"privileged": false,
|
"privileged": false,
|
||||||
"interface_port": 8080,
|
"interface_port": 8080,
|
||||||
"documentation": null,
|
"documentation": null,
|
||||||
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
|
"website": "https://github.com/Stirling-Tools/Stirling-PDF",
|
||||||
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
"logo": "https://cdn.jsdelivr.net/gh/selfhst/icons/webp/stirling-pdf.webp",
|
||||||
"config_path": "/opt/Stirling-PDF/.env",
|
"config_path": "/opt/Stirling-PDF/.env",
|
||||||
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
"description": "Stirling-PDF is a powerful locally hosted web based PDF manipulation tool that allows you to perform various operations on PDF files, such as splitting merging, converting, reorganizing, adding images, rotating, compressing, and more.",
|
||||||
"install_methods": [
|
"install_methods": [
|
||||||
{
|
{
|
||||||
"type": "default",
|
"type": "default",
|
||||||
"script": "ct/stirling-pdf.sh",
|
"script": "ct/stirling-pdf.sh",
|
||||||
"resources": {
|
"resources": {
|
||||||
"cpu": 2,
|
"cpu": 2,
|
||||||
"ram": 2048,
|
"ram": 2048,
|
||||||
"hdd": 8,
|
"hdd": 8,
|
||||||
"os": "debian",
|
"os": "debian",
|
||||||
"version": "12"
|
"version": "12"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"default_credentials": {
|
"default_credentials": {
|
||||||
"username": null,
|
"username": "admin",
|
||||||
"password": null
|
"password": "stirling"
|
||||||
},
|
},
|
||||||
"notes": []
|
"notes": []
|
||||||
}
|
}
|
||||||
|
110
frontend/public/json/versions.json
generated
110
frontend/public/json/versions.json
generated
@ -1,4 +1,54 @@
|
|||||||
[
|
[
|
||||||
|
{
|
||||||
|
"name": "n8n-io/n8n",
|
||||||
|
"version": "n8n@1.102.0",
|
||||||
|
"date": "2025-07-07T15:32:29Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "rclone/rclone",
|
||||||
|
"version": "v1.70.3",
|
||||||
|
"date": "2025-07-09T10:02:39Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "fuma-nama/fumadocs",
|
||||||
|
"version": "fumadocs-ui@15.6.3",
|
||||||
|
"date": "2025-07-09T09:28:42Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "cockpit-project/cockpit",
|
||||||
|
"version": "342",
|
||||||
|
"date": "2025-07-09T08:48:21Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "esphome/esphome",
|
||||||
|
"version": "2025.6.3",
|
||||||
|
"date": "2025-07-03T01:07:26Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Jackett/Jackett",
|
||||||
|
"version": "v0.22.2135",
|
||||||
|
"date": "2025-07-09T05:58:50Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MediaBrowser/Emby.Releases",
|
||||||
|
"version": "4.9.1.2",
|
||||||
|
"date": "2025-06-26T22:08:00Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "NginxProxyManager/nginx-proxy-manager",
|
||||||
|
"version": "v2.14.5",
|
||||||
|
"date": "2025-07-09T04:41:02Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "henrygd/beszel",
|
||||||
|
"version": "v0.11.1",
|
||||||
|
"date": "2025-04-29T01:14:35Z"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "steveiliop56/tinyauth",
|
||||||
|
"version": "v3.4.1",
|
||||||
|
"date": "2025-06-11T07:53:44Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "Prowlarr/Prowlarr",
|
"name": "Prowlarr/Prowlarr",
|
||||||
"version": "v1.37.0.5076",
|
"version": "v1.37.0.5076",
|
||||||
@ -14,11 +64,6 @@
|
|||||||
"version": "v0.35.0",
|
"version": "v0.35.0",
|
||||||
"date": "2025-05-21T18:00:32Z"
|
"date": "2025-05-21T18:00:32Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "steveiliop56/tinyauth",
|
|
||||||
"version": "v3.4.1",
|
|
||||||
"date": "2025-06-11T07:53:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "rcourtman/Pulse",
|
"name": "rcourtman/Pulse",
|
||||||
"version": "v3.40.1",
|
"version": "v3.40.1",
|
||||||
@ -34,16 +79,16 @@
|
|||||||
"version": "v1.0.2",
|
"version": "v1.0.2",
|
||||||
"date": "2025-07-08T19:14:31Z"
|
"date": "2025-07-08T19:14:31Z"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "keycloak/keycloak",
|
||||||
|
"version": "26.3.0",
|
||||||
|
"date": "2025-07-02T12:26:44Z"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "TwiN/gatus",
|
"name": "TwiN/gatus",
|
||||||
"version": "v5.20.0",
|
"version": "v5.20.0",
|
||||||
"date": "2025-07-08T16:27:11Z"
|
"date": "2025-07-08T16:27:11Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "fuma-nama/fumadocs",
|
|
||||||
"version": "create-fumadocs-app@15.6.2",
|
|
||||||
"date": "2025-07-08T14:26:05Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "jenkinsci/jenkins",
|
"name": "jenkinsci/jenkins",
|
||||||
"version": "jenkins-2.518",
|
"version": "jenkins-2.518",
|
||||||
@ -64,11 +109,6 @@
|
|||||||
"version": "v2.38.2",
|
"version": "v2.38.2",
|
||||||
"date": "2025-07-08T09:35:14Z"
|
"date": "2025-07-08T09:35:14Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "Jackett/Jackett",
|
|
||||||
"version": "v0.22.2132",
|
|
||||||
"date": "2025-07-08T05:52:22Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Checkmk/checkmk",
|
"name": "Checkmk/checkmk",
|
||||||
"version": "v2.4.0p7",
|
"version": "v2.4.0p7",
|
||||||
@ -84,11 +124,6 @@
|
|||||||
"version": "r8.0.12-rc0",
|
"version": "r8.0.12-rc0",
|
||||||
"date": "2025-07-07T23:35:35Z"
|
"date": "2025-07-07T23:35:35Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "keycloak/keycloak",
|
|
||||||
"version": "26.3.0",
|
|
||||||
"date": "2025-07-02T12:26:44Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "duplicati/duplicati",
|
"name": "duplicati/duplicati",
|
||||||
"version": "v2.1.0.122-2.1.0.122_canary_2025-07-07",
|
"version": "v2.1.0.122-2.1.0.122_canary_2025-07-07",
|
||||||
@ -109,11 +144,6 @@
|
|||||||
"version": "pmm-6401-v1.121.0",
|
"version": "pmm-6401-v1.121.0",
|
||||||
"date": "2025-07-07T16:16:13Z"
|
"date": "2025-07-07T16:16:13Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "n8n-io/n8n",
|
|
||||||
"version": "n8n@1.100.0",
|
|
||||||
"date": "2025-06-23T12:48:35Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "photoprism/photoprism",
|
"name": "photoprism/photoprism",
|
||||||
"version": "250707-d28b3101e",
|
"version": "250707-d28b3101e",
|
||||||
@ -154,11 +184,6 @@
|
|||||||
"version": "v1.5.2",
|
"version": "v1.5.2",
|
||||||
"date": "2025-05-11T16:40:55Z"
|
"date": "2025-05-11T16:40:55Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "MediaBrowser/Emby.Releases",
|
|
||||||
"version": "4.9.1.2",
|
|
||||||
"date": "2025-06-26T22:08:00Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "firefly-iii/firefly-iii",
|
"name": "firefly-iii/firefly-iii",
|
||||||
"version": "v6.2.20",
|
"version": "v6.2.20",
|
||||||
@ -304,21 +329,11 @@
|
|||||||
"version": "v3.2.1",
|
"version": "v3.2.1",
|
||||||
"date": "2025-07-03T16:09:19Z"
|
"date": "2025-07-03T16:09:19Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "cockpit-project/cockpit",
|
|
||||||
"version": "310.5",
|
|
||||||
"date": "2025-07-03T14:05:25Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "Dolibarr/dolibarr",
|
"name": "Dolibarr/dolibarr",
|
||||||
"version": "18.0.7",
|
"version": "18.0.7",
|
||||||
"date": "2025-07-03T08:57:21Z"
|
"date": "2025-07-03T08:57:21Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "esphome/esphome",
|
|
||||||
"version": "2025.6.3",
|
|
||||||
"date": "2025-07-03T01:07:26Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "actualbudget/actual",
|
"name": "actualbudget/actual",
|
||||||
"version": "v25.7.1",
|
"version": "v25.7.1",
|
||||||
@ -404,11 +419,6 @@
|
|||||||
"version": "v0.15.0-rc3",
|
"version": "v0.15.0-rc3",
|
||||||
"date": "2025-07-01T04:09:37Z"
|
"date": "2025-07-01T04:09:37Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "NginxProxyManager/nginx-proxy-manager",
|
|
||||||
"version": "v2.12.4",
|
|
||||||
"date": "2025-07-01T01:45:42Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "MagicMirrorOrg/MagicMirror",
|
"name": "MagicMirrorOrg/MagicMirror",
|
||||||
"version": "v2.32.0",
|
"version": "v2.32.0",
|
||||||
@ -459,11 +469,6 @@
|
|||||||
"version": "version/2025.6.3",
|
"version": "version/2025.6.3",
|
||||||
"date": "2025-06-27T14:01:06Z"
|
"date": "2025-06-27T14:01:06Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "rclone/rclone",
|
|
||||||
"version": "v1.70.2",
|
|
||||||
"date": "2025-06-27T13:21:17Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "sabnzbd/sabnzbd",
|
"name": "sabnzbd/sabnzbd",
|
||||||
"version": "4.5.1",
|
"version": "4.5.1",
|
||||||
@ -974,11 +979,6 @@
|
|||||||
"version": "6.8.1",
|
"version": "6.8.1",
|
||||||
"date": "2025-04-30T16:44:16Z"
|
"date": "2025-04-30T16:44:16Z"
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"name": "henrygd/beszel",
|
|
||||||
"version": "v0.11.1",
|
|
||||||
"date": "2025-04-29T01:14:35Z"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"name": "deluge-torrent/deluge",
|
"name": "deluge-torrent/deluge",
|
||||||
"version": "deluge-2.2.0",
|
"version": "deluge-2.2.0",
|
||||||
|
@ -17,22 +17,8 @@ msg_info "Installing Dependencies"
|
|||||||
$STD apt-get install -y rsync
|
$STD apt-get install -y rsync
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Azul Zulu"
|
JAVA_VERSION="17" setup_java
|
||||||
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc"
|
fetch_and_deploy_gh_release "commafeed" "Athou/commafeed" "prebuild" "latest" "/opt/commafeed" "commafeed-*-h2-jvm.zip"
|
||||||
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o "zulu-repo_1.0.0-3_all.deb"
|
|
||||||
$STD dpkg -i zulu-repo_1.0.0-3_all.deb
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y install zulu17-jdk
|
|
||||||
msg_ok "Installed Azul Zulu"
|
|
||||||
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Athou/commafeed/releases/latest | grep '"tag_name":' | cut -d'"' -f4)
|
|
||||||
msg_info "Installing CommaFeed ${RELEASE}"
|
|
||||||
mkdir /opt/commafeed
|
|
||||||
curl -fsSL "https://github.com/Athou/commafeed/releases/download/${RELEASE}/commafeed-${RELEASE}-h2-jvm.zip" -o "commafeed-${RELEASE}-h2-jvm.zip"
|
|
||||||
$STD unzip commafeed-${RELEASE}-h2-jvm.zip
|
|
||||||
mv commafeed-${RELEASE}-h2/* /opt/commafeed/
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
msg_ok "Installed CommaFeed ${RELEASE}"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/commafeed.service
|
cat <<EOF >/etc/systemd/system/commafeed.service
|
||||||
@ -55,7 +41,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf commafeed-${RELEASE}-h2 commafeed-${RELEASE}-h2-jvm.zip zulu-repo_1.0.0-3_all.deb
|
|
||||||
$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"
|
||||||
|
@ -13,16 +13,23 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
|
msg_info "Installing dependencies"
|
||||||
|
$STD apt-get install -y \
|
||||||
|
apt-transport-https \
|
||||||
|
ca-certificates \
|
||||||
|
lsb-release
|
||||||
|
msg_ok "Installed dependencies"
|
||||||
|
|
||||||
msg_info "Installing EMQX"
|
msg_info "Installing EMQX"
|
||||||
$STD bash <(curl -fsSL https://packagecloud.io/install/repositories/emqx/emqx/script.deb.sh)
|
curl -fsSL https://packagecloud.io/emqx/emqx/gpgkey | gpg --dearmor -o /usr/share/keyrings/emqx-archive-keyring.gpg
|
||||||
|
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/emqx-archive-keyring.gpg] https://packagecloud.io/emqx/emqx/debian/ bookworm main" >/etc/apt/sources.list.d/emqx.list
|
||||||
$STD apt-get install -y emqx
|
$STD apt-get install -y emqx
|
||||||
$STD systemctl enable --now emqx
|
|
||||||
msg_ok "Installed EMQX"
|
msg_ok "Installed EMQX"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
apt-get autoremove >/dev/null
|
$STD apt-get autoremove
|
||||||
apt-get autoclean >/dev/null
|
$STD apt-get autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
@ -14,21 +14,15 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y xdg-utils
|
||||||
xdg-utils
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
NODE_VERSION="22" NODE_MODULE="yarn@latest" setup_nodejs
|
||||||
|
fetch_and_deploy_gh_release "excalidraw" "excalidraw/excalidraw"
|
||||||
|
|
||||||
msg_info "Setup Excalidraw"
|
msg_info "Configuring Excalidraw"
|
||||||
temp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/excalidraw/excalidraw/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/excalidraw/excalidraw/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar xzf $temp_file
|
|
||||||
mv excalidraw-${RELEASE} /opt/excalidraw
|
|
||||||
cd /opt/excalidraw
|
cd /opt/excalidraw
|
||||||
$STD yarn
|
$STD yarn
|
||||||
echo "${RELEASE}" >/opt/excalidraw_version.txt
|
|
||||||
msg_ok "Setup Excalidraw"
|
msg_ok "Setup Excalidraw"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
@ -53,7 +47,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f $temp_file
|
|
||||||
$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"
|
||||||
|
@ -14,17 +14,11 @@ network_check
|
|||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
msg_info "Installing Dependencies"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y zip
|
||||||
zip \
|
|
||||||
postgresql-common
|
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Additional Dependencies"
|
PG_VERSION="17" setup_postgresql
|
||||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
NODE_VERSION="20" setup_nodejs
|
||||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" >/etc/apt/sources.list.d/nodesource.list
|
|
||||||
echo "YES" | /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh &>/dev/null
|
|
||||||
$STD apt-get install -y postgresql-17 nodejs
|
|
||||||
msg_ok "Installed Additional Dependencies"
|
|
||||||
|
|
||||||
msg_info "Setting up Postgresql Database"
|
msg_info "Setting up Postgresql Database"
|
||||||
DB_NAME="fluiddb"
|
DB_NAME="fluiddb"
|
||||||
@ -44,14 +38,9 @@ $STD sudo -u postgres psql -c "ALTER USER $DB_USER WITH SUPERUSER;"
|
|||||||
} >>~/$APPLICATION.creds
|
} >>~/$APPLICATION.creds
|
||||||
msg_ok "Set up Postgresql Database"
|
msg_ok "Set up Postgresql Database"
|
||||||
|
|
||||||
msg_info "Setup ${APPLICATION}"
|
fetch_and_deploy_gh_release "fluid-calendar" "dotnetfactory/fluid-calendar"
|
||||||
tmp_file=$(mktemp)
|
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/dotnetfactory/fluid-calendar/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
|
||||||
curl -fsSL "https://github.com/dotnetfactory/fluid-calendar/archive/refs/tags/v${RELEASE}.zip" -o "$tmp_file"
|
|
||||||
$STD unzip $tmp_file
|
|
||||||
mv ${APPLICATION}-${RELEASE}/ /opt/${APPLICATION}
|
|
||||||
echo "${RELEASE}" >/opt/${APPLICATION}_version.txt
|
|
||||||
|
|
||||||
|
msg_info "Configuring ${APPLICATION}"
|
||||||
cat <<EOF >/opt/fluid-calendar/.env
|
cat <<EOF >/opt/fluid-calendar/.env
|
||||||
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}"
|
DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@localhost:5432/${DB_NAME}"
|
||||||
|
|
||||||
@ -72,7 +61,7 @@ $STD npm install --legacy-peer-deps
|
|||||||
$STD npm run prisma:generate
|
$STD npm run prisma:generate
|
||||||
$STD npx prisma migrate deploy
|
$STD npx prisma migrate deploy
|
||||||
$STD npm run build:os
|
$STD npm run build:os
|
||||||
msg_ok "Setup ${APPLICATION}"
|
msg_ok "Configuring ${APPLICATION}"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/fluid-calendar.service
|
cat <<EOF >/etc/systemd/system/fluid-calendar.service
|
||||||
@ -95,7 +84,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f $tmp_file
|
|
||||||
$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"
|
||||||
|
@ -13,13 +13,7 @@ setting_up_container
|
|||||||
network_check
|
network_check
|
||||||
update_os
|
update_os
|
||||||
|
|
||||||
msg_info "Installing Dependencies"
|
PHP_VERSION="8.2" PHP_MODULE="dom,json,ctype,pgsql,gmp,iconv" PHP_APACHE="YES" setup_php
|
||||||
$STD apt-get install -y \
|
|
||||||
apache2 \
|
|
||||||
php-{curl,dom,json,ctype,pgsql,gmp,mbstring,iconv,zip} \
|
|
||||||
libapache2-mod-php
|
|
||||||
msg_ok "Installed Dependencies"
|
|
||||||
|
|
||||||
PG_VERSION="16" setup_postgresql
|
PG_VERSION="16" setup_postgresql
|
||||||
|
|
||||||
msg_info "Setting up PostgreSQL"
|
msg_info "Setting up PostgreSQL"
|
||||||
@ -36,17 +30,14 @@ $STD sudo -u postgres psql -c "CREATE DATABASE $DB_NAME WITH OWNER $DB_USER TEMP
|
|||||||
} >>~/freshrss.creds
|
} >>~/freshrss.creds
|
||||||
msg_ok "Set up PostgreSQL"
|
msg_ok "Set up PostgreSQL"
|
||||||
|
|
||||||
msg_info "Installing FreshRSS"
|
fetch_and_deploy_gh_release "freshrss" "FreshRSS/FreshRSS"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/FreshRSS/FreshRSS/releases/latest | grep "tag_name" | awk '{print substr($2, 2, length($2)-3) }')
|
|
||||||
cd /opt
|
msg_info "Configuring FreshRSS"
|
||||||
curl -fsSL "https://github.com/FreshRSS/FreshRSS/archive/refs/tags/${RELEASE}.zip" -o "${RELEASE}.zip"
|
|
||||||
$STD unzip "${RELEASE}.zip"
|
|
||||||
mv "/opt/FreshRSS-${RELEASE}" /opt/freshrss
|
|
||||||
cd /opt/freshrss
|
cd /opt/freshrss
|
||||||
chown -R www-data:www-data /opt/freshrss
|
chown -R www-data:www-data /opt/freshrss
|
||||||
chmod -R g+rX /opt/freshrss
|
chmod -R g+rX /opt/freshrss
|
||||||
chmod -R g+w /opt/freshrss/data/
|
chmod -R g+w /opt/freshrss/data/
|
||||||
msg_ok "Installed FreshRSS"
|
msg_ok "Configured FreshRSS"
|
||||||
|
|
||||||
msg_info "Setting up cron job for feed refresh"
|
msg_info "Setting up cron job for feed refresh"
|
||||||
cat <<EOF >/etc/cron.d/freshrss-actualize
|
cat <<EOF >/etc/cron.d/freshrss-actualize
|
||||||
@ -83,7 +74,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf "/opt/${RELEASE}.zip"
|
|
||||||
$STD apt-get -y autoremove
|
$STD apt-get -y autoremove
|
||||||
$STD apt-get -y autoclean
|
$STD apt-get -y autoclean
|
||||||
msg_ok "Cleaned"
|
msg_ok "Cleaned"
|
||||||
|
@ -20,20 +20,15 @@ $STD apt-get install -y \
|
|||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
setup_go
|
setup_go
|
||||||
|
fetch_and_deploy_gh_release "gatus" "TwiN/gatus"
|
||||||
|
|
||||||
RELEASE=$(curl -s https://api.github.com/repos/TwiN/gatus/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
msg_info "Configuring gatus"
|
||||||
msg_info "Setting up gatus v${RELEASE}"
|
|
||||||
temp_file=$(mktemp)
|
|
||||||
mkdir -p /opt/gatus
|
|
||||||
curl -fsSL "https://github.com/TwiN/gatus/archive/refs/tags/v${RELEASE}.tar.gz" -o "$temp_file"
|
|
||||||
tar zxf "$temp_file" --strip-components=1 -C /opt/gatus
|
|
||||||
cd /opt/gatus
|
cd /opt/gatus
|
||||||
$STD go mod tidy
|
$STD go mod tidy
|
||||||
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o gatus .
|
||||||
setcap CAP_NET_RAW+ep gatus
|
setcap CAP_NET_RAW+ep gatus
|
||||||
mv config.yaml config
|
mv config.yaml config
|
||||||
echo "${RELEASE}" >/opt/gatus_version.txt
|
msg_ok "Configured gatus"
|
||||||
msg_ok "Done setting up gatus"
|
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
cat <<EOF >/etc/systemd/system/gatus.service
|
cat <<EOF >/etc/systemd/system/gatus.service
|
||||||
@ -58,10 +53,6 @@ motd_ssh
|
|||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -f "$temp_file"
|
|
||||||
$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"
|
||||||
|
|
||||||
motd_ssh
|
|
||||||
customize
|
|
||||||
|
@ -15,7 +15,6 @@ update_os
|
|||||||
|
|
||||||
msg_info "Installing Dependencies (Patience)"
|
msg_info "Installing Dependencies (Patience)"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
git \
|
|
||||||
automake \
|
automake \
|
||||||
autoconf \
|
autoconf \
|
||||||
libtool \
|
libtool \
|
||||||
@ -25,10 +24,26 @@ $STD apt-get install -y \
|
|||||||
make \
|
make \
|
||||||
g++ \
|
g++ \
|
||||||
unpaper \
|
unpaper \
|
||||||
|
fonts-urw-base35 \
|
||||||
qpdf \
|
qpdf \
|
||||||
poppler-utils
|
poppler-utils
|
||||||
msg_ok "Installed Dependencies"
|
msg_ok "Installed Dependencies"
|
||||||
|
|
||||||
|
PYTHON_VERSION="3.12" setup_uv
|
||||||
|
JAVA_VERSION="21" setup_java
|
||||||
|
|
||||||
|
read -r -p "${TAB3}Do you want to Stirling-PDF with Login? (no/n = without Login) [Y/n] " response
|
||||||
|
response=${response,,} # Convert to lowercase
|
||||||
|
login_mode="false"
|
||||||
|
if [[ "$response" == "y" || "$response" == "yes" || -z "$response" ]]; then
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF-with-login.jar"
|
||||||
|
mv /opt/Stirling-PDF/Stirling-PDF-with-login.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
||||||
|
touch ~/.Stirling-PDF-login
|
||||||
|
login_mode="true"
|
||||||
|
else
|
||||||
|
USE_ORIGINAL_FILENAME=true fetch_and_deploy_gh_release "stirling-pdf" "Stirling-Tools/Stirling-PDF" "singlefile" "latest" "/opt/Stirling-PDF" "Stirling-PDF.jar"
|
||||||
|
fi
|
||||||
|
|
||||||
msg_info "Installing LibreOffice Components"
|
msg_info "Installing LibreOffice Components"
|
||||||
$STD apt-get install -y \
|
$STD apt-get install -y \
|
||||||
libreoffice-writer \
|
libreoffice-writer \
|
||||||
@ -37,32 +52,35 @@ $STD apt-get install -y \
|
|||||||
libreoffice-core \
|
libreoffice-core \
|
||||||
libreoffice-common \
|
libreoffice-common \
|
||||||
libreoffice-base-core \
|
libreoffice-base-core \
|
||||||
python3-uno
|
libreoffice-script-provider-python \
|
||||||
|
libreoffice-java-common \
|
||||||
|
unoconv \
|
||||||
|
pngquant \
|
||||||
|
weasyprint
|
||||||
msg_ok "Installed LibreOffice Components"
|
msg_ok "Installed LibreOffice Components"
|
||||||
|
|
||||||
msg_info "Installing Python Dependencies"
|
msg_info "Installing Python Dependencies"
|
||||||
$STD apt-get install -y \
|
mkdir -p /tmp/stirling-pdf
|
||||||
python3 \
|
$STD uv venv /opt/.venv
|
||||||
python3-pip
|
export PATH="/opt/.venv/bin:$PATH"
|
||||||
rm -rf /usr/lib/python3.*/EXTERNALLY-MANAGED
|
source /opt/.venv/bin/activate
|
||||||
$STD pip3 install \
|
$STD uv pip install --upgrade pip
|
||||||
uno \
|
$STD uv pip install \
|
||||||
opencv-python-headless \
|
opencv-python-headless \
|
||||||
unoconv \
|
ocrmypdf \
|
||||||
pngquant \
|
pillow \
|
||||||
WeasyPrint
|
pdf2image
|
||||||
|
|
||||||
|
$STD apt-get install -y python3-uno python3-pip
|
||||||
|
$STD pip3 install --break-system-packages unoserver
|
||||||
|
ln -sf /opt/.venv/bin/python3 /usr/local/bin/python3
|
||||||
|
ln -sf /opt/.venv/bin/pip /usr/local/bin/pip
|
||||||
msg_ok "Installed Python Dependencies"
|
msg_ok "Installed Python Dependencies"
|
||||||
|
|
||||||
msg_info "Installing Azul Zulu"
|
|
||||||
curl -fsSL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xB1998361219BD9C9" -o "/etc/apt/trusted.gpg.d/zulu-repo.asc"
|
|
||||||
curl -fsSL "https://cdn.azul.com/zulu/bin/zulu-repo_1.0.0-3_all.deb" -o "/zulu-repo_1.0.0-3_all.deb"
|
|
||||||
$STD dpkg -i zulu-repo_1.0.0-3_all.deb
|
|
||||||
$STD apt-get update
|
|
||||||
$STD apt-get -y install zulu17-jdk
|
|
||||||
msg_ok "Installed Azul Zulu"
|
|
||||||
|
|
||||||
msg_info "Installing JBIG2"
|
msg_info "Installing JBIG2"
|
||||||
$STD git clone https://github.com/agl/jbig2enc /opt/jbig2enc
|
$STD curl -fsSL -o /tmp/jbig2enc.tar.gz https://github.com/agl/jbig2enc/archive/refs/tags/0.30.tar.gz
|
||||||
|
mkdir -p /opt/jbig2enc
|
||||||
|
tar -xzf /tmp/jbig2enc.tar.gz -C /opt/jbig2enc --strip-components=1
|
||||||
cd /opt/jbig2enc
|
cd /opt/jbig2enc
|
||||||
$STD bash ./autogen.sh
|
$STD bash ./autogen.sh
|
||||||
$STD bash ./configure
|
$STD bash ./configure
|
||||||
@ -74,25 +92,46 @@ msg_info "Installing Language Packs (Patience)"
|
|||||||
$STD apt-get install -y 'tesseract-ocr-*'
|
$STD apt-get install -y 'tesseract-ocr-*'
|
||||||
msg_ok "Installed Language Packs"
|
msg_ok "Installed Language Packs"
|
||||||
|
|
||||||
msg_info "Installing Stirling-PDF (Additional Patience)"
|
msg_info "Creating Environment Variables"
|
||||||
RELEASE=$(curl -fsSL https://api.github.com/repos/Stirling-Tools/Stirling-PDF/releases/latest | grep "tag_name" | awk '{print substr($2, 3, length($2)-4) }')
|
cat <<EOF >/opt/Stirling-PDF/.env
|
||||||
curl -fsSL "https://github.com/Stirling-Tools/Stirling-PDF/archive/refs/tags/v${RELEASE}.tar.gz" -o "v${RELEASE}.tar.gz"
|
# Java tuning
|
||||||
tar -xzf v${RELEASE}.tar.gz
|
JAVA_BASE_OPTS="-XX:+UnlockExperimentalVMOptions -XX:MaxRAMPercentage=75 -XX:InitiatingHeapOccupancyPercent=20 -XX:+G1PeriodicGCInvokesConcurrent -XX:G1PeriodicGCInterval=10000 -XX:+UseStringDeduplication -XX:G1PeriodicGCSystemLoadThreshold=70"
|
||||||
cd Stirling-PDF-$RELEASE
|
JAVA_CUSTOM_OPTS=""
|
||||||
chmod +x ./gradlew
|
|
||||||
$STD ./gradlew build -x spotlessApply -x spotlessCheck -x test -x sonarqube
|
# LibreOffice
|
||||||
mkdir -p /opt/Stirling-PDF
|
PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
touch /opt/Stirling-PDF/.env
|
UNO_PATH=/usr/lib/libreoffice/program
|
||||||
mv ./stirling-pdf/build/libs/*.jar /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar
|
URE_BOOTSTRAP=file:///usr/lib/libreoffice/program/fundamentalrc
|
||||||
mv scripts /opt/Stirling-PDF/
|
PYTHONPATH=/usr/lib/libreoffice/program:/opt/.venv/lib/python3.12/site-packages
|
||||||
mv pipeline /opt/Stirling-PDF/
|
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
|
||||||
mv stirling-pdf/src/main/resources/static/fonts/*.ttf /usr/share/fonts/opentype/noto/
|
|
||||||
ln -s /opt/Stirling-PDF/Stirling-PDF-$RELEASE.jar /opt/Stirling-PDF/Stirling-PDF.jar
|
STIRLING_TEMPFILES_DIRECTORY=/tmp/stirling-pdf
|
||||||
ln -s /usr/share/tesseract-ocr/5/tessdata/ /usr/share/tessdata
|
TMPDIR=/tmp/stirling-pdf
|
||||||
msg_ok "Installed Stirling-PDF"
|
TEMP=/tmp/stirling-pdf
|
||||||
|
TMP=/tmp/stirling-pdf
|
||||||
|
|
||||||
|
# Paths
|
||||||
|
PATH=/opt/.venv/bin:/usr/lib/libreoffice/program:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
|
||||||
|
EOF
|
||||||
|
|
||||||
|
if [[ "$login_mode" == "true" ]]; then
|
||||||
|
cat <<EOF >>/opt/Stirling-PDF/.env
|
||||||
|
# activate Login
|
||||||
|
DISABLE_ADDITIONAL_FEATURES=false
|
||||||
|
SECURITY_ENABLELOGIN=true
|
||||||
|
|
||||||
|
# login credentials
|
||||||
|
SECURITY_INITIALLOGIN_USERNAME=admin
|
||||||
|
SECURITY_INITIALLOGIN_PASSWORD=stirling
|
||||||
|
EOF
|
||||||
|
fi
|
||||||
|
msg_ok "Created Environment Variables"
|
||||||
|
|
||||||
|
msg_info "Refreshing Font Cache"
|
||||||
|
$STD fc-cache -fv
|
||||||
|
msg_ok "Font Cache Updated"
|
||||||
|
|
||||||
msg_info "Creating Service"
|
msg_info "Creating Service"
|
||||||
# Create LibreOffice listener service
|
|
||||||
cat <<EOF >/etc/systemd/system/libreoffice-listener.service
|
cat <<EOF >/etc/systemd/system/libreoffice-listener.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=LibreOffice Headless Listener Service
|
Description=LibreOffice Headless Listener Service
|
||||||
@ -109,14 +148,6 @@ Restart=always
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Set up environment variables
|
|
||||||
cat <<EOF >/opt/Stirling-PDF/.env
|
|
||||||
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/lib/libreoffice/program
|
|
||||||
UNO_PATH=/usr/lib/libreoffice/program
|
|
||||||
PYTHONPATH=/usr/lib/python3/dist-packages:/usr/lib/libreoffice/program
|
|
||||||
LD_LIBRARY_PATH=/usr/lib/libreoffice/program
|
|
||||||
EOF
|
|
||||||
|
|
||||||
cat <<EOF >/etc/systemd/system/stirlingpdf.service
|
cat <<EOF >/etc/systemd/system/stirlingpdf.service
|
||||||
[Unit]
|
[Unit]
|
||||||
Description=Stirling-PDF service
|
Description=Stirling-PDF service
|
||||||
@ -139,16 +170,32 @@ RestartSec=10
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Enable and start services
|
cat <<EOF >/etc/systemd/system/unoserver.service
|
||||||
|
[Unit]
|
||||||
|
Description=UnoServer RPC Interface
|
||||||
|
After=libreoffice-listener.service
|
||||||
|
Requires=libreoffice-listener.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/local/bin/unoserver --port 2003 --interface 127.0.0.1
|
||||||
|
Restart=always
|
||||||
|
EnvironmentFile=/opt/Stirling-PDF/.env
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
||||||
|
EOF
|
||||||
|
|
||||||
systemctl enable -q --now libreoffice-listener
|
systemctl enable -q --now libreoffice-listener
|
||||||
systemctl enable -q --now stirlingpdf
|
systemctl enable -q --now stirlingpdf
|
||||||
|
systemctl enable -q --now unoserver
|
||||||
msg_ok "Created Service"
|
msg_ok "Created Service"
|
||||||
|
|
||||||
motd_ssh
|
motd_ssh
|
||||||
customize
|
customize
|
||||||
|
|
||||||
msg_info "Cleaning up"
|
msg_info "Cleaning up"
|
||||||
rm -rf v${RELEASE}.tar.gz /zulu-repo_1.0.0-3_all.deb
|
rm -f /tmp/jbig2enc.tar.gz
|
||||||
$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"
|
||||||
|
@ -368,25 +368,6 @@ function setup_mysql() {
|
|||||||
# PHP_MAX_EXECUTION_TIME - (default: 300)
|
# PHP_MAX_EXECUTION_TIME - (default: 300)
|
||||||
# ------------------------------------------------------------------------------
|
# ------------------------------------------------------------------------------
|
||||||
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
# Installs PHP with selected modules and configures Apache/FPM support.
|
|
||||||
#
|
|
||||||
# Description:
|
|
||||||
# - Adds Sury PHP repo if needed
|
|
||||||
# - Installs default and user-defined modules
|
|
||||||
# - Patches php.ini for CLI, Apache, and FPM as needed
|
|
||||||
#
|
|
||||||
# Variables:
|
|
||||||
# PHP_VERSION - PHP version to install (default: 8.4)
|
|
||||||
# PHP_MODULE - Additional comma-separated modules
|
|
||||||
# PHP_APACHE - Set YES to enable PHP with Apache
|
|
||||||
# PHP_FPM - Set YES to enable PHP-FPM
|
|
||||||
# PHP_MEMORY_LIMIT - (default: 512M)
|
|
||||||
# PHP_UPLOAD_MAX_FILESIZE - (default: 128M)
|
|
||||||
# PHP_POST_MAX_SIZE - (default: 128M)
|
|
||||||
# PHP_MAX_EXECUTION_TIME - (default: 300)
|
|
||||||
# ------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
function setup_php() {
|
function setup_php() {
|
||||||
local PHP_VERSION="${PHP_VERSION:-8.4}"
|
local PHP_VERSION="${PHP_VERSION:-8.4}"
|
||||||
local PHP_MODULE="${PHP_MODULE:-}"
|
local PHP_MODULE="${PHP_MODULE:-}"
|
||||||
@ -451,7 +432,7 @@ function setup_php() {
|
|||||||
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
MODULE_LIST+=" php${PHP_VERSION}-fpm"
|
||||||
fi
|
fi
|
||||||
if [[ "$PHP_APACHE" == "YES" ]]; then
|
if [[ "$PHP_APACHE" == "YES" ]]; then
|
||||||
$STD apt-get install -y apache2
|
$STD apt-get install -y apache2 libapache2-mod-php${PHP_VERSION}
|
||||||
$STD systemctl restart apache2 || true
|
$STD systemctl restart apache2 || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -459,6 +440,8 @@ function setup_php() {
|
|||||||
if [[ -f /etc/apache2/mods-enabled/php${CURRENT_PHP}.load ]]; then
|
if [[ -f /etc/apache2/mods-enabled/php${CURRENT_PHP}.load ]]; then
|
||||||
$STD a2dismod php${CURRENT_PHP} || true
|
$STD a2dismod php${CURRENT_PHP} || true
|
||||||
fi
|
fi
|
||||||
|
$STD a2enmod php${PHP_VERSION}
|
||||||
|
$STD systemctl restart apache2 || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$PHP_FPM" == "YES" ]] && [[ -n "$CURRENT_PHP" ]]; then
|
if [[ "$PHP_FPM" == "YES" ]] && [[ -n "$CURRENT_PHP" ]]; then
|
||||||
@ -915,7 +898,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#\"}"
|
||||||
@ -934,7 +917,6 @@ function fetch_and_deploy_gh_release() {
|
|||||||
break
|
break
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
done
|
done
|
||||||
|
|
||||||
[[ -z "$asset_url" ]] && {
|
[[ -z "$asset_url" ]] && {
|
||||||
@ -950,39 +932,42 @@ function fetch_and_deploy_gh_release() {
|
|||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
|
local unpack_tmp
|
||||||
|
unpack_tmp=$(mktemp -d)
|
||||||
mkdir -p "$target"
|
mkdir -p "$target"
|
||||||
|
|
||||||
if [[ "$filename" == *.zip ]]; then
|
if [[ "$filename" == *.zip ]]; then
|
||||||
if ! command -v unzip &>/dev/null; then
|
if ! command -v unzip &>/dev/null; then
|
||||||
$STD apt-get install -y unzip
|
$STD apt-get install -y unzip
|
||||||
fi
|
fi
|
||||||
|
unzip -q "$tmpdir/$filename" -d "$unpack_tmp"
|
||||||
local top_level_entries
|
|
||||||
top_level_entries=$(unzip -l "$tmpdir/$filename" | awk '{print $4}' | grep -v '^$' | cut -d/ -f1 | sort -u)
|
|
||||||
|
|
||||||
if [[ $(wc -l <<<"$top_level_entries") -eq 1 ]]; then
|
|
||||||
unzip -q "$tmpdir/$filename" -d "$tmpdir/unzip"
|
|
||||||
shopt -s dotglob nullglob
|
|
||||||
cp -r "$tmpdir/unzip/"* "$target/"
|
|
||||||
shopt -u dotglob nullglob
|
|
||||||
else
|
|
||||||
unzip -q "$tmpdir/$filename" -d "$target"
|
|
||||||
fi
|
|
||||||
|
|
||||||
elif [[ "$filename" == *.tar.* ]]; then
|
elif [[ "$filename" == *.tar.* ]]; then
|
||||||
local top_level_entries
|
tar -xf "$tmpdir/$filename" -C "$unpack_tmp"
|
||||||
top_level_entries=$(tar -tf "$tmpdir/$filename" | cut -d/ -f1 | sort -u)
|
|
||||||
|
|
||||||
if [[ $(wc -l <<<"$top_level_entries") -eq 1 ]]; then
|
|
||||||
tar --strip-components=1 -xf "$tmpdir/$filename" -C "$target"
|
|
||||||
else
|
|
||||||
tar -xf "$tmpdir/$filename" -C "$target"
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
msg_error "Unsupported archive format: $filename"
|
msg_error "Unsupported archive format: $filename"
|
||||||
rm -rf "$tmpdir"
|
rm -rf "$tmpdir" "$unpack_tmp"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
local top_dirs
|
||||||
|
top_dirs=$(find "$unpack_tmp" -mindepth 1 -maxdepth 1 -type d | wc -l)
|
||||||
|
|
||||||
|
if [[ "$top_dirs" -eq 1 ]]; then
|
||||||
|
# Strip leading folder
|
||||||
|
local inner_dir
|
||||||
|
inner_dir=$(find "$unpack_tmp" -mindepth 1 -maxdepth 1 -type d)
|
||||||
|
shopt -s dotglob nullglob
|
||||||
|
cp -r "$inner_dir"/* "$target/"
|
||||||
|
shopt -u dotglob nullglob
|
||||||
|
else
|
||||||
|
# Copy all contents
|
||||||
|
shopt -s dotglob nullglob
|
||||||
|
cp -r "$unpack_tmp"/* "$target/"
|
||||||
|
shopt -u dotglob nullglob
|
||||||
|
fi
|
||||||
|
|
||||||
|
rm -rf "$unpack_tmp"
|
||||||
|
|
||||||
### Singlefile Mode ###
|
### Singlefile Mode ###
|
||||||
elif [[ "$mode" == "singlefile" ]]; then
|
elif [[ "$mode" == "singlefile" ]]; then
|
||||||
local pattern="${6%\"}"
|
local pattern="${6%\"}"
|
||||||
|
Reference in New Issue
Block a user